數字圖像處理期末大作業_第1頁
數字圖像處理期末大作業_第2頁
數字圖像處理期末大作業_第3頁
數字圖像處理期末大作業_第4頁
數字圖像處理期末大作業_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、word數字圖像處理期末大作業一、問題描述實現第十章中采用Hough變換來檢測圖像中圓的過程。,通過包括平滑把細節去除,邊緣檢測得到輪廓以及Hough變換得到的圓,并把結果疊加到原來的灰度圖像上。給出具體的過程,中間結果,最后結果,實現的代碼,并寫出報告。二、圖片的獲取以及預處理針對老師提供的一副硬幣圖片,要求檢測出其中的hough圓,并疊加到原圖像上以便增強圖像。在檢測hough圓之前,首先要對圖像進行平滑處理,進行拉普拉斯變換,然后檢測垂直方向,水平方向,+45度和-45度方向的邊緣,將四個方向的邊緣疊加起來,得到總的邊緣,對該圖像進行二值化,然后對得到的圖像檢測其hough圓,得到圓形邊

2、緣,將該圖像疊加到原圖像上,就實現了圖像邊緣增強的目的。3、 圖像處理算法的根本原理以及處理結果本實驗流程圖如下: 開始 讀取圖像圖像預處理 邊緣檢測 二值化 Hough變換Hough變換結果與原圖像相加 結束1.讀取圖像圖像處理的第一步就是對所采集的圖像進行讀入,本次實驗的輸入圖像是一幅灰度圖像,不需要將圖像轉換成為灰度圖像,直接利用函數imread完成。原圖像如下所示: 2. 圖像預處理在圖像預處理中,我們完成了兩步工作,首先使用方差為1的高斯噪聲對圖像進行平滑,然后進行拉普拉斯變換,即,為方差為的高斯噪聲,本實驗中。又,其中,將和分別進行傅里葉別換,將其逐點相乘,再進行傅里葉反變換,就得

3、到了預處理后的圖像。3. 邊緣檢測對水平,垂直,+45度,-45度方向進行邊緣檢測,本實驗中我們采用了Prewitt梯度算子,它用于檢測水平方向,垂直方向,+45度方向和-45度方向的掩膜分別如下: 水平掩膜 垂直掩膜 +45度掩膜 -45度掩膜 使用這四個掩膜分別對上一步得到的圖像逐點進行處理,就可以得到四個方向的邊緣了本實驗中邊緣的一個像素都不處理,再將它們加起來,就得到了總的邊緣,實驗結果如下: 總的邊緣如下列圖所示:4. 二值化 對上圖得到的圖像進行二值化,這里我采用的是循環方式確定圖像全局閾值,即首先以圖像的平均值作為閾值,將圖像分成兩局部,分別求兩局部的平均值,新的閾值為這兩個平均

4、值的均值,重復上述過程,直到兩次閾值之差小于特定的值時停止,并以最后一次得到的閾值對圖像進行二值化,本實驗中我要求兩次閾值之差小于0.5時停止,最后得到的全局閾值為 -102.1332,二值化后的圖像如下所示:5. Hough變換檢測圓形邊界 Hough 變換的原理就是利用圖像全局特征將邊緣像素連接起來組成區域封閉邊界,它將圖像空間轉換到參數空間,在參數空間對點進行描述,到達檢測圖像邊緣的目的。該方法把所有可能落在邊緣上的點進行統計計算,根據對數據的統計結果確定屬于邊緣的程度。其實質就是對圖像進行坐標變換,把平面坐標變換為參數坐標,使變換的結果更易識別和檢測。 Hough變換的根本原理在于,利

5、用點與線的對偶性,將圖像空間的線條變為參數空間的聚集點,從而檢測給定圖像是否存在給定性質的曲線。圓的方程為:(x-a)2+(y-b)2=r2,通過Hough變換,將圖像空間對應到參數空間。 把X-Y平面上的圓轉換到a-b-r參數空間,那么圖像空間中過(x, y)點圓對應參數空間中,高度r變化下的一個三維錐面,如下 同理,過圖像空間中任意一點的圓對應于參數空間中的一個三維錐面。因此,過圖像空間上同一圓上的點,對應的參數空間中的三維錐面,在r高度必然相交于一點(a, b, r)。這樣通過檢測這一點可以得到圓的參數,相應的圓也可求得了。圖像平面的方程轉化為參數平面上的示意圖如下圖: Hough變換是

6、基于通過提取分布于目標圓周上的參數及點的特征值的來檢測圓或圓弧的。為了檢測目標外形,對圖像上的每點定義一個參數空間的映射。Hough變換通過在參數空間找尋特征(峰值或最大值點)得到位于圖像空間中的特征(目標形狀)來轉換問題。對于半徑的圓Hough變換可以檢測任意表達形式的曲線,關鍵在于選擇適宜的參數空間。我們可以根據曲線的表達形式決定其參數空間。當檢測某一半徑的圓時,可以使用與原圖像空間相同的空間作為其參數空間。那么原圖像空間中的一個圓對應參數空間中的一個點,參數空間的一個點對應圖像空間中一個圓,原圖像空間中在同一圓上的點,它們的參數相同即a,b相同,它們在參數空間對應的圓就會過同一點a,b,

7、因此,將原圖像中的所有點變換到參數空間之后,依據參數空間中點的聚集度就可判斷出原圖像空間中有無近似于圓的圖形。對于未知半徑的圓,在一個xy平面圖像中確定一個圓至少需要三個元素,即圓心的x軸和y軸坐標,圓的半徑,因此Hough變換檢測圓的目的就是檢測出圖像中各個圓的圓心坐標以及圓的半徑。其根本思想是將原圖像空間中邊緣點映射至參數空間中,再將參數空間中得到的全部坐標點元素所對應的累加值進行統計,并根據此累加值來判斷圓的大小和圓心的位置。例如,在xy平面上的方程為(x-a)2+(y-b)2=r2 其中點a,b為圓心坐標,r為圓半徑,點x,y為圓周上的一點,將其轉換為參數坐標系a,b,r,方程為(a-

8、x)2+(b-y)2=r2,可看出次方程為圓錐面,對于原圖像中任意確定的一個點在參數空間都有一個三維錐面與其對應。在Hough變換檢測圓時,可以利用梯度信息在很大程度上加快圓檢測的速度。對圓周而言,其梯度方向只有背離圓心或者指向圓心,當梯度指向圓心,圓心就在梯度的延長線上,而當梯度背離圓心,圓心那么在梯度的反向延長線上。所以,邊緣梯度信息的參加可以預估圓心的位置,這樣可以使算法的運算量明顯減少,并且可以有效抑制虛假局部最大值。圓心位置可以用極坐標方程形式表達: a= x - rco s ( (x , y ) ), a=y - rsin ( (x , y ) )或者a= x+ rco s ( (

9、x , y ) ), a=y+rsin ( (x , y ) ),邊緣像素x,y處的梯度方向為 (x , y )。前一組公式是梯度方向背離圓心,后一組為梯度方向指向圓心。以前一種情況為例,邊緣圖像中每個邊緣像素點x,y都可以算出其相應的梯度方向 (x , y )。通過前一個公式可算出圓心坐標a0,b0,對于參數空間可能的半徑r0,其相應的參數空間累加器單元加一,最后找到累加器的局部最大值,就得到一個圓。 本實驗中,我們檢測的圓半徑范圍為10-100,半徑步長為1,角度步長為/18,p=0.7。得到的結果如下: 6. Hough變換結果與原圖像相加上一步得到的圖像是一副邏輯圖像,這一步我們首先判

10、斷上一步得到的圖像每一個像素是否為1,如果是那么相加后該點的像素值為255,否那么該點的像素值為原圖像在該點的像素值,這樣就得到了hough變換后圖像與原圖像相加的圖像,結果如下所示:4、 源程序本實驗采用matlab來實現,原程序如下所示:clear all;%1.讀入圖像并顯示S=imread(E:Sweden-coins.bmp);figure;imshow(S);title(原圖像); %2.引入均值為零,方差為a的高斯噪聲對圖像進行平滑,然后進行拉普拉斯變換m,n=size(S);a=1;h=zeros(m,n);h=double(h);for i=1:m for j=1:n t=i

11、2+j2; h(i,j)=(t-2*a)*exp(-(t/(2*a)/a2; endendH=fftshift(fft2(h);G=fftshift(fft2(S);W=H.*G;w=ifft2(ifftshift(W);figure;imshow(w);title(平滑后進行拉普拉斯變換后的圖像); %3.對水平,垂直,+45度,-45度方向進行邊緣檢測,采用Prewitt梯度算子IMG=double(w);H1=zeros(m,n);H2=zeros(m,n);G1=zeros(m,n);G2=zeros(m,n);for i=2:m-1 for j=2:n-1 H1(i,j)=-IMG(

12、i-1,j-1)-IMG(i-1,j)-IMG(i-1,j+1)+IMG(i+1,j-1)+IMG(i+1,j)+IMG(i+1,j+1); H2(i,j)=-IMG(i-1,j-1)-IMG(i,j-1)-IMG(i+1,j-1)+IMG(i-1,j+1)+IMG(i,j+1)+IMG(i+1,j+1); G1(i,j)=IMG(i-1,j)+IMG(i-1,j+1)+IMG(i,j+1)-IMG(i,j-1)-IMG(i+1,j-1)-IMG(i+1,j); G2(i,j)=-IMG(i-1,j-1)-IMG(i-1,j)-IMG(i,j-1)+IMG(i+1,j)+IMG(i,j+1)+

13、IMG(i+1,j+1); endendfigure;imshow(H1);title(水平邊緣);figure;imshow(H2);title(垂直邊緣);figure;imshow(G1);title(-45度邊緣);figure;imshow(G2);title(+45度邊緣);Z=zeros(m,n);for i=1:m for j=1:n Z(i,j)=H1(i,j)+H2(i,j)+G1(i,j)+G2(i,j); endendfigure;imshow(Z);title(提取的邊緣);%4.對提取的邊緣進行二值化T=sum(Z(:)/(m*n);T2=20;while T20.

14、5Y1=0;Y2=0;N1=0;N2=0;N1=double(N1);N2=double(N2);Y1=double(Y1);Y2=double(Y2);for i=1:m for j=1:n if(Z(i,j)T) Y1=Y1+double(Z(i,j); N1=N1+1; else Y2=Y2+double(Z(i,j); N2=N2+1; end endendt1=Y1/N1;t2=Y2/N2;T1=(t1+t2)/2;T2=abs(T-T1);T=T1endGS=zeros(m,n);for i=1:m for j=1:n if Z(i,j)T GS(i,j)=0; else GS(i

15、,j)=255; end endendfigure;imshow(GS);title(二值化后的圖像); %5.進行hough變換,檢測圓形邊界BW=double(GS);r_max=100;r_min=10;step_r=1;step_angle=pi/18;p=0.7;size_r = round(r_max-r_min)/step_r)+1;size_angle = round(2*pi/step_angle);hough_space = zeros(m,n,size_r);rows,cols = find(BW);ecount = size(rows);for i=1:ecount f

16、or r=1:size_r for k=1:size_angle a = round(rows(i)-(r_min+(r-1)*step_r)*cos(k*step_angle); b = round(cols(i)-(r_min+(r-1)*step_r)*sin(k*step_angle); if(a0&a0&b=max_para*p);length = size(index);hough_circle = false(m,n);for i=1:ecount for k=1:length par3 = floor(index(k)/(m*n)+1; par2 = floor(index(k

17、)-(par3-1)*(m*n)/m)+1; par1 = index(k)-(par3-1)*(m*n)-(par2-1)*m; if(rows(i)-par1)2+(cols(i)-par2)2(r_min+(par3-1)*step_r)2-5) hough_circle(rows(i),cols(i) = true; end endendfor k=1:length par3 = floor(index(k)/(m*n)+1; par2 = floor(index(k)-(par3-1)*(m*n)/m)+1; par1 = index(k)-(par3-1)*(m*n)-(par2-

18、1)*m; par3 = r_min+(par3-1)*step_r; fprintf(1,Center %d %d radius %dn,par1,par2,par3); para(:,k) = par1,par2,par3;endfigure;imshow(hough_circle);title(hough變化后的圖像); %6.將hough變化后提取的圖像與原圖像相加,增強其邊緣LST=zeros(m,n);for i=1:m for j=1:n if hough_circle(i,j)=1; LST(i,j)=255; else LST(i,j)=S(i,j); end endendfigure;imshow(LST,);title(最終的結果);5、 心得體會我們選擇用MATLAB來編寫,因為感覺自己對C等其他語言掌握的不是最熟練的。剛拿到題目的時候我們三個感覺還挺簡單的,平滑、邊緣檢測以及霍夫變換都是上課時候講過的,可是到真正著手做的時候感覺理論與實踐搭不上,很多在理論想清楚,可是一旦到編程實踐,有些地方就會無從下手,我們又仔細研究了一下算法,首先使用高斯函數對圖像進行平滑,然后進行拉普拉斯變換,對于得到的圖像,為了進行邊緣檢測,經過討論之后我們選擇了Prewi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論