第6章 圖像銳化處理及邊緣_第1頁(yè)
第6章 圖像銳化處理及邊緣_第2頁(yè)
第6章 圖像銳化處理及邊緣_第3頁(yè)
第6章 圖像銳化處理及邊緣_第4頁(yè)
第6章 圖像銳化處理及邊緣_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第第6章圖像銳化處理章圖像銳化處理及邊緣檢測(cè)及邊緣檢測(cè) 本章要點(diǎn): 圖像邊緣銳化的基本方法 微分運(yùn)算 梯度銳化 邊緣檢測(cè)6.1 圖像邊緣銳化的基本方法圖像邊緣銳化的基本方法 利用計(jì)算機(jī)進(jìn)行圖像銳化處理有兩個(gè)目的,一是與柔化處理相反,增強(qiáng)圖像邊緣,使模糊的圖像變得更加清晰起來(lái),顏色變得鮮明突出,圖像的質(zhì)量有所改善,產(chǎn)生更適合人觀察和識(shí)別的圖像,本章的梯度銳化就是介紹這方面的內(nèi)容。二是希望經(jīng)過(guò)銳化處理后,目標(biāo)物體的邊緣鮮明,以便于計(jì)算機(jī)提取目標(biāo)物體的邊界、對(duì)圖像進(jìn)行分割、目標(biāo)區(qū)域識(shí)別、區(qū)域形狀提取等,為圖像理解和分析打下基礎(chǔ),目前它已成為機(jī)器視覺(jué)研究領(lǐng)域最活躍的課題之一,在工程應(yīng)用中占有十分重要的

2、地位,本章的邊緣檢測(cè)算子就是介紹這方面的內(nèi)容。 6.2 微分運(yùn)算微分運(yùn)算微分運(yùn)算應(yīng)用在圖像上,可使圖像的輪廓清晰。本節(jié)介紹的微分運(yùn)算有: 縱向微分運(yùn)算; 橫向微分運(yùn)算; 雙方向一次微分運(yùn)算。6.2.1 縱向微分運(yùn)算縱向微分運(yùn)算對(duì)灰度圖像在縱方向進(jìn)行微分實(shí)現(xiàn)了將圖像向左平移一個(gè)像素,再用原圖像減去平移后圖像。相減的結(jié)果反映了原圖像亮度變化率的大小。原圖像中像素值保持不變的區(qū)域,相減的結(jié)果為零,即像素為黑;原圖像中像素灰度值變化劇烈的區(qū)域,相減后得到較大的變化率,對(duì)應(yīng)的像素很亮,而且像素灰度值差別越大,則得到的像素就越亮,所以圖像的垂直邊緣得到增強(qiáng)。本程序?qū)叶葓D像f在縱方向或橫方向進(jìn)行微分,在數(shù)

3、字處理中,微分用差分表近似,并按下式求得:G(i,j)=f(i,j)-f(i-1,j-1) (6-6)該算法用如下卷積核:0000110002實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟 (1)取得原圖的數(shù)據(jù)區(qū)指針。 (2)開(kāi)辟一塊內(nèi)存緩沖區(qū),并初始化為255。 (3)每個(gè)像素依次循環(huán),新圖像緩沖區(qū)中的當(dāng)前像素的灰度值等于原圖中當(dāng)前像素的灰度值與其左方的像素的灰度值之差的絕對(duì)值。(4)將緩沖區(qū)中的圖像復(fù)制回原圖數(shù)據(jù)區(qū)。3程序代碼程序代碼 LPBYTE temp=new BYTE wide*height; /開(kāi)辟圖像一緩沖區(qū)memset(temp,255,wide*height);for(int j=1;jheight-1

4、;j+)for(int i=1;iwide-1;i+)/當(dāng)前像素的灰度值等于其和左方像素灰度值之差的絕對(duì)值tempwide*j+i=abs(p_datawide*j+i-p_datawide*j+(i-1);/將緩沖區(qū)中的圖像復(fù)制回原圖數(shù)據(jù)區(qū)memcpy(p_data, temp,wide*height);/刪除緩沖區(qū)delete temp;4效果對(duì)比圖效果對(duì)比圖 (a)原圖原圖 (b)縱向微分運(yùn)算縱向微分運(yùn)算 圖圖6-2縱向微分運(yùn)算縱向微分運(yùn)算6.2.2 橫向微分運(yùn)算橫向微分運(yùn)算 1理論基礎(chǔ)理論基礎(chǔ)該算法的數(shù)學(xué)表達(dá)式為:G ( i, j ) = f ( i ,j ) - f ( i , j-

5、1 ) (6-7)該算法用如下卷積核:0000100102. . 實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟(1)取得原圖的數(shù)據(jù)區(qū)指針。 (2)開(kāi)辟一塊內(nèi)存緩沖區(qū),并初始化為255。(3)每個(gè)像素依次循環(huán),新圖像緩沖區(qū)中的當(dāng)前像素的灰度值等于原圖中當(dāng)前像素的灰度值與其上方的像素的灰度值之差的絕對(duì)值。(4)將緩沖區(qū)中的圖像復(fù)制回原圖數(shù)據(jù)區(qū)。3程序代碼程序代碼 LPBYTE temp=new BYTE wide*height; /開(kāi)辟圖像一緩沖區(qū)memset(temp,255,wide*height);for(int j=1;jheight-1;j+)for(int i=1;iwide-1;i+)/當(dāng)前像素的灰度值等于其和

6、上方像素灰度值之差的絕對(duì)值tempwide*j+i=abs(p_datawide*j+i-p_datawide*(j-1)+i);/將緩沖區(qū)中的圖像復(fù)制回原圖數(shù)據(jù)區(qū)memcpy(p_data, temp,wide*height);/刪除緩沖區(qū)delete temp;4效果對(duì)比圖效果對(duì)比圖圖6-3 橫向微分運(yùn)算6.2.3 雙方向一次微分運(yùn)算雙方向一次微分運(yùn)算1理論基礎(chǔ)理論基礎(chǔ)對(duì)灰度圖像f在縱方向和橫方向兩個(gè)方向進(jìn)行微分。該算法是同時(shí)增強(qiáng)水平和垂直方向的邊緣。該算法的數(shù)學(xué)表達(dá)式為:G(i,j)=sqrtf(i,j)-f(i,j-1)*f(i,j)-f(i,j-1)+f(i,j)-f(i-1,j)*

7、 f(i,j)-f(i-1,j) (6-8)對(duì)于含小數(shù)的G ( i , j )可四舍五入。該算法用如下卷積核: 水平(i方向) 垂直(j方向) 使用水平方向卷積核得出像素值為m,使用垂直方向卷積核得出像素值為n,該像素邊界強(qiáng)度為:sqrt(mm)+(nn)。該算法是同時(shí)增強(qiáng)水平和垂直方向的邊緣。 0000100100000110002實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟 (1)取得原圖的數(shù)據(jù)區(qū)指針。 (2)開(kāi)辟一塊內(nèi)存緩沖區(qū),并初始化為255。(3)每個(gè)像素依次循環(huán),原圖中當(dāng)前像素的灰度值與其左方的像素的灰度值之差的絕對(duì)值的平方,再加上當(dāng)前像素的灰度值與其上方的像素的灰度值之差的絕對(duì)值的平方,所得的平方根即為新圖

8、像當(dāng)前像素的灰度值。(4)緩沖區(qū)中的圖像復(fù)制回原圖數(shù)據(jù)區(qū)。3程序代碼LPBYTE temp=new BYTE wide*height; /開(kāi)辟圖像一緩沖區(qū)memset(temp,255,wide*height);for(int j=1;jheight-1;j+)for(int i=1;iT則(i,j)點(diǎn)為階躍狀邊緣點(diǎn),G(i,j)稱為梯度算子的邊緣圖像。2.實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟 (1)獲得原圖像的首地址,及圖像的高和寬;(2)開(kāi)辟一塊內(nèi)存緩沖區(qū),并初始化為255;(3)計(jì)算圖像的像素的梯度;(4)將結(jié)果保存在內(nèi)存緩沖區(qū)比較像素的梯度是否大于30,是則將灰度值置為255,否則將該像素的灰度值置位0;

9、 (5)將內(nèi)存中的數(shù)據(jù)復(fù)制到原圖像的數(shù)據(jù)區(qū)。 3. 編程代碼編程代碼 void TiDuRuiHuaDib:Erzhirihua()見(jiàn)光盤(pán)代碼4處理效果圖處理效果圖 (a) 原圖 (b)根據(jù)梯度二值化效果圖圖6-7根據(jù)梯度二值化6.4邊緣檢測(cè)邊緣檢測(cè) 邊緣提取首先檢出圖像局部特性的不連續(xù)性,然后在將這些不連續(xù)的邊緣像素連成完備的邊界。邊緣的特性是沿邊緣走向的像素變化平緩,而垂直與邊緣方向的像素變化劇烈。所以,從這個(gè)意義上說(shuō),提取邊緣的算法就是檢出符合邊緣特性的邊緣像素的數(shù)學(xué)算子。 邊緣檢測(cè)算子檢查每個(gè)像素的鄰域并對(duì)灰度變化率進(jìn)行量化,通常也包括方向的確定。有若干種方法可以使用,其中大多數(shù)是基于

10、方向?qū)?shù)模板求卷積的方法。 本節(jié)介紹的算子有: Roberts邊緣檢測(cè)算子; Sobel邊緣檢測(cè)算子; Prewitt邊緣檢測(cè)算子; Krisch邊緣檢測(cè); LoG_Laplacian高斯-拉普拉斯算子。 6.4.1 Roberts邊緣檢測(cè)算子邊緣檢測(cè)算子 1. 理論基礎(chǔ)理論基礎(chǔ) Roberts算子:算子: Gi,j=|fi,j-fi+1,j+1|+|fi+1,j-fi,j+1|; Gi,j=(fi,j-fi+1,j+1)2+(fi+1,j-fi,j+1) 2 1/2; 其中其中Gi,j表示處理后表示處理后(i,j)點(diǎn)的灰度值,點(diǎn)的灰度值,fi,j表示表示處理前該點(diǎn)的灰度值。處理前該點(diǎn)的灰度值

11、。該算法的算子如下:該算法的算子如下: 011010012 實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟(1)取得原圖的數(shù)據(jù)區(qū)指針。(2)開(kāi)辟一個(gè)和原圖相同大小的圖像緩沖區(qū),并設(shè)定新圖像初值為全白(255)。(3)每個(gè)像素依次循環(huán),用Roberts邊緣檢測(cè)算子分別計(jì)算圖像中各點(diǎn)灰度值,對(duì)它們平方之和,再開(kāi)方。(4)將緩沖區(qū)中的數(shù)據(jù)復(fù)制到原圖數(shù)據(jù)區(qū)。 3 編程實(shí)現(xiàn)編程實(shí)現(xiàn)for(j=0;jheight-1;j+)for(i=0;iwide-1;i+) /生成Robert算子pixel0=p_dataj*wide+i; pixel1=p_dataj*wide+i+1; pixel2=p_data(j+1)*wide+i;pi

12、xel3=p_data(j+1)*wide+i+1;/處理當(dāng)前像素tempj*wide+i=(int)sqrt(pixel0-pixel3)*(pixel0-pixel3)+(pixel1-pixel2)*(pixel1-pixel2);4效果對(duì)比圖效果對(duì)比圖圖6-8 Roberts邊緣檢測(cè)效果圖 6.4.2 Sobel邊緣檢測(cè)算子邊緣檢測(cè)算子 1理論基礎(chǔ)理論基礎(chǔ) (1)卷積 (2)Sobel邊緣檢測(cè)算子 2 實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟(1)取得原圖的數(shù)據(jù)區(qū)指針。(2)開(kāi)辟兩個(gè)和原圖相同大小的圖像緩沖區(qū),將原圖復(fù)制到兩個(gè)緩沖區(qū)。(3)分別設(shè)置Sobel算子的兩個(gè)模板,調(diào)用Templat()模板函數(shù)分別對(duì)

13、兩個(gè)緩沖區(qū)中的圖像進(jìn)行卷積計(jì)算。(4)兩個(gè)緩存圖像每個(gè)像素依次循環(huán),取兩個(gè)緩存中各個(gè)像素灰度值較大者。 (5)將緩沖區(qū)中的圖像復(fù)制到原圖數(shù)據(jù)區(qū)。 3 編程實(shí)現(xiàn)(1)卷積卷積 for(j=tempMY;jheight-tempH+tempMY+1;j+)for(i=tempMX;iwide-tempW+tempMX+1;i+)fResult=0;for(k=0;ktempH;k+)for(l=0;l255)tempj*wide+i=255;else tempj*wide+i=(int)(fResult+0.5);(2)Sobel水平與垂直邊緣檢測(cè)邊緣檢測(cè)水平與垂直邊緣檢測(cè)邊緣檢測(cè)見(jiàn)光盤(pán)程序voi

14、d BianYuanJianCeDib:Sobel() 4 處理效果處理效果 圖6-9 Sobel邊緣檢測(cè) 6.4.3 Prewitt邊緣檢測(cè)算邊緣檢測(cè)算子子1 理論基礎(chǔ)理論基礎(chǔ)以下兩個(gè)卷積核形成了Prewitt邊緣檢測(cè)算子。同使用Sobel算子的方法一樣,圖像中的每個(gè)點(diǎn)都用這兩個(gè)核進(jìn)行卷積,取最大值作為輸出。Prewitt邊緣檢測(cè)算子也產(chǎn)生一幅邊緣強(qiáng)度圖像。Prewitt邊緣檢測(cè)算子為:111000111 -1011011012 實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟(1)取得原圖的數(shù)據(jù)區(qū)指針。(2)開(kāi)辟兩個(gè)和原圖相同大小的圖像緩沖區(qū),將原圖復(fù)制到兩個(gè)緩沖區(qū)。(3)分別設(shè)置Prewitt算子的兩個(gè)模板,調(diào)用Tem

15、plat()模板函數(shù)分別對(duì)兩個(gè)緩沖區(qū)中的圖像進(jìn)行卷積計(jì)算。(4)兩個(gè)緩存圖像每個(gè)像素依次循環(huán),取兩個(gè)緩存中各個(gè)像素灰度值較大者。(5)將緩沖區(qū)中的圖像復(fù)制到原圖數(shù)據(jù)區(qū)。3 程序代碼程序代碼見(jiàn)光盤(pán)程序代碼:void BianYuanJianCeDib:PreWitt() 4 處理效果處理效果圖6-10 Prewitt邊緣檢測(cè) 6.4.4 Krisch邊緣檢測(cè)邊緣檢測(cè) 1 理論基礎(chǔ)理論基礎(chǔ)以下8個(gè)卷積核組成了Kirsch邊緣檢測(cè)算子。圖像中的每個(gè)點(diǎn)都用8個(gè)掩模進(jìn)行卷積,每個(gè)掩模都對(duì)某個(gè)特定邊緣方向作出最大響應(yīng),所有8個(gè)方向中的最大值作為邊緣幅度圖像輸出。最大響應(yīng)掩模的序號(hào)構(gòu)成了邊緣方向的編碼。 K

16、irsch邊緣檢測(cè)算子為: 333303555333503553-533503533-555303333-355305333-335305335333305355553503333-2 實(shí)現(xiàn)步驟實(shí)現(xiàn)步驟1) 取得原圖的數(shù)據(jù)區(qū)指針。2) 開(kāi)辟兩個(gè)和原圖相同大小的圖像緩沖區(qū),將原圖復(fù)制到兩個(gè)緩沖區(qū)。3) 分別設(shè)置Kirsch算子的模板1和模板2,調(diào)用Templat()模板函數(shù)分別對(duì)兩個(gè)緩沖區(qū)中的圖像進(jìn)行卷積計(jì)算。求出兩幅緩存圖像中每個(gè)像素的較大灰度值存放在緩存圖像1中,并將緩存圖像1拷貝到緩存圖像2中。4) 同第三步,以此類推,分別設(shè)置Kirsch算子的模板3、模板4、模板5、模板6、模板7和模板8,每次計(jì)算后,求出兩幅緩存圖像中灰度值較大者存放在緩存圖像1中。5) 最后將得到的結(jié)果緩存圖像1復(fù)制到原圖。3 編程實(shí)現(xiàn)編程實(shí)現(xiàn)見(jiàn)光盤(pán)程序代碼:void BianYuanJianCeDib:Krisch() 4 處理效果處理效果 圖6-11 Krisch邊緣檢測(cè) 6.5 高斯高斯-拉普拉斯算子拉普拉斯算子 離散情況下,拉普拉斯算子有幾種不同的模板計(jì)算形式:或或0101410102111181111121242121通常的高斯拉普拉斯算子是一個(gè)55的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論