天天看點

matlab邊界傅立葉比對,[轉載]matlab圖像處理——傅立葉變換&邊緣提取

第一部分 圖像的傅立葉變換

一、 實驗目的

1.了解圖像變換的意義和手段;

2. 熟悉傅裡葉變換的基本性質;

3. 熟練掌握FFT的方法及應用;

4. 通過實驗了解二維頻譜的分布特點;

5. 通過本實驗掌握利用MATLAB程式設計實作數字圖像的傅立葉變換。

二、 實驗原理

1.應用傅立葉變換進行圖像處理

傅裡葉變換是線性系統分析的一個有力工具,它能夠定量地分析諸如數字化系統、采樣點、電子放大器、卷積濾波器、噪音和顯示點等的作用。通過實驗培養這項技能,将有助于解決大多數圖像處理問題。對任何想在工作中有效應用數字圖像處理技術的人來說,把時間用在學習和掌握博裡葉變換上是很有必要的。

2.傅立葉(Fourier)變換的定義

對于二維信号,二維Fourier變換定義為:

二維離散傅立葉變換為:

三、 實驗步驟

1.打開計算機,安裝和啟動MATLAB程式;程式組中“work”檔案夾中應有待處理的圖像檔案;

2.利用MatLab工具箱中的函數編制FFT頻譜顯示的函數;

3. a)調入、顯示三張不同的圖像;

b)對這三幅圖像做FFT并利用自編的函數顯示其頻譜;

c)讨論不同的圖像内容與FFT頻譜之間的對應關系。

4.記錄和整理實驗報告。

四、 實驗儀器

1計算機, MATLAB軟體;

3移動式存儲器(軟碟、U盤等)。

4記錄用的筆、紙。

五、 實驗結果及程式

1.程式

I1=imread('F:MATLAB學習實驗pictureLENA.TIF'); %讀入原圖像檔案

I2=imread('F:MATLAB學習實驗picturecell.tif'); %讀入原圖像檔案

I3=imread('cameraman.tif'); %讀入原圖像檔案

subplot(3,2,1);imshow(I1); %顯示原圖像

fftI1=fft2(I1); %二維離散傅立葉變換

sfftI1=fftshift(fftI1); %直流分量移到頻譜中心

RR1=real(sfftI1); %取傅立葉變換的實部

II1=imag(sfftI1); %取傅立葉變換的虛部

A1=sqrt(RR1.^2+II1.^2); %計算頻譜幅值

A1=(A1-min(min(A1)))/(max(max(A1))-min(min(A1)))*225;%歸一化

subplot(3,2,2);imshow(A1); %顯示原圖像的頻譜

subplot(3,2,3);imshow(I2); %顯示原圖像

fftI2=fft2(I2); %二維離散傅立葉變換

sfftI2=fftshift(fftI2); %直流分量移到頻譜中心

RR2=real(sfftI2); %取傅立葉變換的實部

II2=imag(sfftI2); %取傅立葉變換的虛部

A2=sqrt(RR2.^2+II2.^2); %計算頻譜幅值

A2=(A2-min(min(A2)))/(max(max(A2))-min(min(A2)))*225;%歸一化

subplot(3,2,4);imshow(A2); %顯示原圖像的頻譜

subplot(3,2,5);imshow(I3); %顯示原圖像

fftI3=fft2(I3); %二維離散傅立葉變換

sfftI3=fftshift(fftI3); %直流分量移到頻譜中心

RR3=real(sfftI3); %取傅立葉變換的實部

II3=imag(sfftI3); %取傅立葉變換的虛部

A3=sqrt(RR3.^2+II3.^2); %計算頻譜幅值

A3=(A3-min(min(A3)))/(max(max(A3))-min(min(A3)))*225;%歸一化

subplot(3,2,6);imshow(A3); %顯示原圖像的頻譜

2.結果

六、 思考題

1.傅裡葉變換有哪些重要的性質?

線性、時頻對偶性、展縮性、時移性、時域和頻域的微分性等。

第二部分 圖像邊緣提取

一。 實驗目的:

掌握圖像邊緣提取的常用算子的特點和程式實作。

二。實驗原理:

邊緣就是圖像中包含的對象的邊界所對應的位置。物體的邊緣以圖像局部特性的不連續性的形式出現的,例如,灰階值的突變,顔色的突變,紋理結構的突變等。從本質上說,邊緣就意味着一個區域的終結和另外一個區域的開始。圖像邊緣資訊在圖像分析和人的視覺中十分重要,是圖像識别中提取圖像特征的一個重要屬性。

邊緣檢測(edge

detection)在圖像處理和對象識别領域中都是一個重要的基本問題。由于邊緣的灰階不連續性,可以使用求導數的方法檢測到。最早的邊緣檢測方法都是基于像素的數值導數的運算。現在使用的邊緣檢測算法大緻可以歸納為兩類:梯度(gradient)算子和拉普拉斯(Laplacian)算子。

三。實驗内容:

編制一個通用的邊緣提取函數。通過輸入不同的參數,能夠實作Sobel算子、Prewitt算子、Roberts算子、Laplace算子和Canny邊緣檢測,并比較不同算子處理後的邊緣圖像的特點。(實驗圖像任選)

MATLAB圖像處理工具箱提供的edge函數可以實作檢測邊緣的功能,詳細的使用文法可以在MATLAB指令視窗鍵入”help

edge.m”獲得幫助。該函數隻能應用于灰階圖像,其基本原理就是識别圖像中灰階值變化較大的像素點。

四。 實驗步驟:

a、 讀入圖像

b、對圖像依次進行Sobel算子,Prewitt算子,Roberts算子,Laplace算子和Canny算子運算,比較處理結果。

五。 實驗儀器

1計算機;

2 MATLAB軟體;

3移動式存儲器(軟碟、U盤等)。

4記錄用的筆、紙。

六、 實驗結果及程式

1.程式

I=imread('cameraman.tif');

subplot(2,3,1);

imshow(I);title('(a)原始圖像');

subplot(2,3,2);

I1=edge(I,'sobel'); %Sobel算子邊緣檢測

imshow(I1);title('(b)Sobel算子');

subplot(2,3,3);

I2=edge(I,'prewitt'); %Prewitt算子邊緣檢測

imshow(I2);title('(c)Prewitt算子');

subplot(2,3,4);

I3=edge(I,'robert'); %Robert算子邊緣檢測

imshow(I3);title('(d)Robert算子');

subplot(2,3,5);

I4=edge(I,'log'); %Laplace算子邊緣檢測

imshow(I4);title('(e)Laplace算子');

subplot(2,3,6);

I5=edge(I,'canny'); �nny算子邊緣檢測

imshow(I5);title('(f)Canny算子');

2.實驗結果

3.實驗結果分析

由于Robert s

算子是利用圖像的兩個對角線的相鄰像素之差進行梯度幅值的檢測,是以求得的是在差分點處梯度幅值的近似值,并且檢測水準和垂直方向邊緣的性能好于斜線方向的邊緣,

檢測精度比較高, 但容易丢失一部分邊緣, 同時由于沒經過圖像平滑計算,是以不能抑制噪聲,該算子對具有陡峭的低噪聲圖像響應最好。

Prewit t 算子和Sobel 算子都是對圖像進行差分和濾波運算,僅在平滑部分的權值選擇上有些差異,

是以兩者均對噪聲具有一定的抑制能力, 但這種抗噪能力是通過像素平均來實作的, 是以圖像産生了一定的模糊, 而且還會檢測出一些僞邊緣,

是以檢測精度比較低, 該類算子比較适用于圖像邊緣灰階值比較尖銳,且圖像噪聲比較小的情況。

Laplace算子首先通過高斯函數對圖像進行平滑處理, 是以對噪聲的抑制作用比較明顯, 但同時也可能将原有的邊緣也平滑了,

造成某些邊緣無法檢測到,。此外高斯分布因子σ的選擇對圖像邊緣檢測效果有較大的影響。σ越大, 檢測到的圖像細節越豐富, 但抗噪能力下降,

進而出現僞邊緣, 反之則抗噪能力提高, 但邊緣檢測精度下降, 易丢失許多真邊緣, 是以, 對于不同圖像應選擇不同參數。

Canny 算子也采用高斯函數對圖像進行平滑處理, 是以具有較強的去噪能力, 但同樣存在容易平滑掉一些邊緣資訊,

其後所采用的一階微分算子的方向性較Laplace算子要好,是以邊緣定位精度較高。該算子與其它邊緣檢測算子的不同之處在于, 它使用2

種不同的門檻值分别檢測強邊緣和弱邊緣, 并且僅當弱邊緣與強邊緣相連時才将弱邊緣包含在輸出圖像中,

是以這種方法較其它方法而言不容易被噪聲“填充”,更容易檢查出真正的弱邊緣。通過實驗結果可以看出,該算子在上述幾種邊緣檢測算子當中效果最好。