邊緣檢測(cè)有哪些步驟?canny邊緣檢測(cè)算法如何獲取邊緣?
邊緣檢測(cè)在圖像處理中是非常重要的,通過邊緣檢測(cè),我們能夠區(qū)分一張圖像的邊緣部分。為增進(jìn)大家對(duì)邊緣檢測(cè)的認(rèn)識(shí),本文將對(duì)邊緣檢測(cè)的步驟以及canny邊緣檢測(cè)算法獲取邊緣與輪廓提取的方法予以介紹。如果你對(duì)邊緣檢測(cè)具有興趣,不妨繼續(xù)往下閱讀哦。
一、邊緣檢測(cè)步驟
①濾波:邊緣檢測(cè)算法主要是基于圖像強(qiáng)度的一階和二階導(dǎo)數(shù),但導(dǎo)數(shù)的計(jì)算對(duì)噪聲很敏感,因此必須使用濾波器來(lái)改善與噪聲有關(guān)的邊緣檢測(cè)器的性能。需要指出,大多數(shù)濾波器在降低噪聲的同時(shí)也導(dǎo)致了邊緣強(qiáng)度的損失,因此,增強(qiáng)邊緣和降低噪聲之間需要折中。
②增強(qiáng):增強(qiáng)邊緣的基礎(chǔ)是確定圖像各點(diǎn)鄰域強(qiáng)度的變化值。增強(qiáng)算法可以將鄰域(或局部)強(qiáng)度值有顯著變化的點(diǎn)突顯出來(lái)。邊緣增強(qiáng)一般是通過計(jì)算梯度幅值來(lái)完成的。
③檢測(cè):在圖像中有許多點(diǎn)的梯度幅值比較大,而這些點(diǎn)在特定的應(yīng)用領(lǐng)域中并不都是邊緣,所以應(yīng)該用某種方法來(lái)確定哪些點(diǎn)是邊緣點(diǎn)。最簡(jiǎn)單的邊緣檢測(cè)判據(jù)是梯度幅值閾值判據(jù)。
④定位:如果某一應(yīng)用場(chǎng)合要求確定邊緣位置,則邊緣的位置可在子像素分辨率上來(lái)估計(jì),邊緣的方位也可以被估計(jì)出來(lái)。在邊緣檢測(cè)算法中,前三個(gè)步驟用得十分普遍。這是因?yàn)榇蠖鄶?shù)場(chǎng)合下,僅僅需要邊緣檢測(cè)器指出邊緣出現(xiàn)在圖像某一像素點(diǎn)的附近,而沒有必要指出邊緣的精確位置或方向。
邊緣檢測(cè)的實(shí)質(zhì)是采用某種算法來(lái)提取出圖像中對(duì)象與背景間的交界線。我們將邊緣定義為圖像中灰度發(fā)生急劇變化的區(qū)域邊界。圖像灰度的變化情況可以用圖像灰度分布的梯度來(lái)反映,因此我們可以用局部圖像微分技術(shù)來(lái)獲得邊緣檢測(cè)算子。經(jīng)典的邊緣檢測(cè)方法,是通過對(duì)原始圖像中像素的某小鄰域構(gòu)造邊緣檢測(cè)算子來(lái)達(dá)到檢測(cè)邊緣這一目的的。
二、canny邊緣檢測(cè)算法獲取邊緣與輪廓提取
1.獲取邊緣
為了提取單像素寬邊緣,必須細(xì)化梯度幅值圖。在梯度幅值圖像中,M[i,j]的極大值所在位置附近會(huì)產(chǎn)生屋脊帶,只有細(xì)化這些屋脊帶才能精確地確定邊緣的位置,僅保留幅值局部變化最大的點(diǎn),這一過程叫做非極大值抑制。在非極大值抑制過程中,Canny算子使用3×3大小,包含8個(gè)方向的鄰域?qū)μ荻确店嚵蠱[i,j]的所有像素沿梯度方向進(jìn)行梯度幅值的插值,在每一個(gè)點(diǎn)上,鄰域的中心像素M[i,j]與沿梯度方向的2個(gè)梯度幅值的插值結(jié)果進(jìn)行比較,如果鄰域中心點(diǎn)的幅值M[i,j]不比梯度方向上的2個(gè)插值結(jié)果大,則將M[i,j]對(duì)應(yīng)的邊緣標(biāo)志位賦值為0,這一過程把M[i.j]寬屋脊帶細(xì)化為一個(gè)像素寬,并且保留了屋脊的梯度幅值。
對(duì)經(jīng)過非極大值抑制和梯度直方圖分類的子圖像N[i,j]分別使用高、低2個(gè)閾值thrA和thrl,將梯度小于閾值的像素灰度置為0,分割得到2個(gè)閾值邊緣圖像TH[i,j]和TL[i,j]。由于圖像TH[i,j]是由高閾值得到,因此偽邊緣很少,但TL[i,j]保留邊緣信息較為全面,但也含有一些偽邊緣。因此以圖像TH[i,j]為基礎(chǔ),圖像TL[i,j]為補(bǔ)充獲得相對(duì)較為全面的邊緣。
2.輪廓跟蹤或輪廓提取
在對(duì)圖像進(jìn)行canny邊緣檢測(cè)后,可能會(huì)出現(xiàn)某些檢測(cè)邊緣斷裂、不連續(xù)的現(xiàn)象,為了解決這個(gè)問題,使獲得的目標(biāo)檢測(cè)物體的邊緣能夠連續(xù)并且去除多余的偽邊緣,在邊緣檢測(cè)后,再對(duì)圖像進(jìn)行邊界跟蹤,便可使這一問題得以很好地改善。
對(duì)于二值圖像,輪廓提取的基本方法是掏空內(nèi)部點(diǎn),即如果原圖像中有一點(diǎn)為黑,且其他相鄰的8個(gè)點(diǎn)都為黑,則將該點(diǎn)刪除。
本文借鑒二值圖像輪廓跟蹤方法,即將每一點(diǎn)與其相鄰的8個(gè)點(diǎn)作比較。具體方法為:(1)先找到第一個(gè)邊界像素。按從左到右、從下到上的順序搜索,找到的第一個(gè)白點(diǎn)一定是最左下方的邊界點(diǎn),記為A0,它的右、右上、上、左上四個(gè)相鄰點(diǎn)中至少有一個(gè)是邊界點(diǎn),記為B0,從B0開始找起,按右、右上、上、左上、左、左下、下、右下的順序找8個(gè)相鄰點(diǎn)中的邊界點(diǎn)C0,如果C0就是A0點(diǎn),則表明已經(jīng)轉(zhuǎn)了一圈,結(jié)束;否則從C0點(diǎn)繼續(xù)找,直到找到A0為止;(2)判斷是否邊界點(diǎn):如果它的8個(gè)相鄰點(diǎn)都不是白點(diǎn),則它即為邊界點(diǎn)。對(duì)于邊界跟蹤來(lái)說(shuō),跟蹤后產(chǎn)生的輪廓邊緣寬度只有一個(gè)像素,實(shí)現(xiàn)了邊緣像素點(diǎn)單一、清晰,并很好地去除了偽邊緣點(diǎn)。
以上便是此次小編帶來(lái)的檢測(cè)相關(guān)內(nèi)容,通過本文,希望大家對(duì)邊緣檢測(cè)具備一定的認(rèn)知。如果你喜歡本文,不妨持續(xù)關(guān)注我們網(wǎng)站哦,小編將于后期帶來(lái)更多精彩內(nèi)容。最后,十分感謝大家的閱讀,have a nice day!