數(shù)字圖像處理期末大作業(yè)_第1頁
數(shù)字圖像處理期末大作業(yè)_第2頁
數(shù)字圖像處理期末大作業(yè)_第3頁
數(shù)字圖像處理期末大作業(yè)_第4頁
數(shù)字圖像處理期末大作業(yè)_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

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

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

6、基于通過提取分布于目標(biāo)圓周上的參數(shù)及點(diǎn)的特征值的來檢測(cè)圓或圓弧的。為了檢測(cè)目標(biāo)外形,對(duì)圖像上的每點(diǎn)定義一個(gè)參數(shù)空間的映射。Hough變換通過在參數(shù)空間找尋特征(峰值或最大值點(diǎn))得到位于圖像空間中的特征(目標(biāo)形狀)來轉(zhuǎn)換問題。對(duì)于半徑的圓Hough變換可以檢測(cè)任意表達(dá)形式的曲線,關(guān)鍵在于選擇適宜的參數(shù)空間。我們可以根據(jù)曲線的表達(dá)形式?jīng)Q定其參數(shù)空間。當(dāng)檢測(cè)某一半徑的圓時(shí),可以使用與原圖像空間相同的空間作為其參數(shù)空間。那么原圖像空間中的一個(gè)圓對(duì)應(yīng)參數(shù)空間中的一個(gè)點(diǎn),參數(shù)空間的一個(gè)點(diǎn)對(duì)應(yīng)圖像空間中一個(gè)圓,原圖像空間中在同一圓上的點(diǎn),它們的參數(shù)相同即a,b相同,它們?cè)趨?shù)空間對(duì)應(yīng)的圓就會(huì)過同一點(diǎn)a,b,

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

8、x)2+(b-y)2=r2,可看出次方程為圓錐面,對(duì)于原圖像中任意確定的一個(gè)點(diǎn)在參數(shù)空間都有一個(gè)三維錐面與其對(duì)應(yīng)。在Hough變換檢測(cè)圓時(shí),可以利用梯度信息在很大程度上加快圓檢測(cè)的速度。對(duì)圓周而言,其梯度方向只有背離圓心或者指向圓心,當(dāng)梯度指向圓心,圓心就在梯度的延長線上,而當(dāng)梯度背離圓心,圓心那么在梯度的反向延長線上。所以,邊緣梯度信息的參加可以預(yù)估圓心的位置,這樣可以使算法的運(yùn)算量明顯減少,并且可以有效抑制虛假局部最大值。圓心位置可以用極坐標(biāo)方程形式表達(dá): 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處的梯度方向?yàn)?(x , y )。前一組公式是梯度方向背離圓心,后一組為梯度方向指向圓心。以前一種情況為例,邊緣圖像中每個(gè)邊緣像素點(diǎn)x,y都可以算出其相應(yīng)的梯度方向 (x , y )。通過前一個(gè)公式可算出圓心坐標(biāo)a0,b0,對(duì)于參數(shù)空間可能的半徑r0,其相應(yīng)的參數(shù)空間累加器單元加一,最后找到累加器的局部最大值,就得到一個(gè)圓。 本實(shí)驗(yàn)中,我們檢測(cè)的圓半徑范圍為10-100,半徑步長為1,角度步長為/18,p=0.7。得到的結(jié)果如下: 6. Hough變換結(jié)果與原圖像相加上一步得到的圖像是一副邏輯圖像,這一步我們首先判

10、斷上一步得到的圖像每一個(gè)像素是否為1,如果是那么相加后該點(diǎn)的像素值為255,否那么該點(diǎn)的像素值為原圖像在該點(diǎn)的像素值,這樣就得到了hough變換后圖像與原圖像相加的圖像,結(jié)果如下所示:4、 源程序本實(shí)驗(yàn)采用matlab來實(shí)現(xiàn),原程序如下所示:clear all;%1.讀入圖像并顯示S=imread(E:Sweden-coins.bmp);figure;imshow(S);title(原圖像); %2.引入均值為零,方差為a的高斯噪聲對(duì)圖像進(jìn)行平滑,然后進(jìn)行拉普拉斯變換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(平滑后進(jìn)行拉普拉斯變換后的圖像); %3.對(duì)水平,垂直,+45度,-45度方向進(jìn)行邊緣檢測(cè),采用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.對(duì)提取的邊緣進(jìn)行二值化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.進(jìn)行hough變換,檢測(cè)圓形邊界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變化后提取的圖像與原圖像相加,增強(qiáng)其邊緣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(最終的結(jié)果);5、 心得體會(huì)我們選擇用MATLAB來編寫,因?yàn)楦杏X自己對(duì)C等其他語言掌握的不是最熟練的。剛拿到題目的時(shí)候我們?nèi)齻€(gè)感覺還挺簡(jiǎn)單的,平滑、邊緣檢測(cè)以及霍夫變換都是上課時(shí)候講過的,可是到真正著手做的時(shí)候感覺理論與實(shí)踐搭不上,很多在理論想清楚,可是一旦到編程實(shí)踐,有些地方就會(huì)無從下手,我們又仔細(xì)研究了一下算法,首先使用高斯函數(shù)對(duì)圖像進(jìn)行平滑,然后進(jìn)行拉普拉斯變換,對(duì)于得到的圖像,為了進(jìn)行邊緣檢測(cè),經(jīng)過討論之后我們選擇了Prewi

溫馨提示

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

評(píng)論

0/150

提交評(píng)論