邊緣檢測(cè)常用算子:
基于一階微分的邊緣檢測(cè)方法:
Roberts 算子考慮圖像的2*2鄰域,是最簡(jiǎn)單的邊緣檢測(cè)算子,算法過(guò)程簡(jiǎn)述: 【1】,遍歷圖像(除去上邊緣和左邊緣),對(duì)每個(gè)像素做Roberts模板運(yùn)算。 【2】,將結(jié)果保存到目標(biāo)圖像,結(jié)束。
Sobel算子考察的是3*3鄰域,由兩個(gè)卷積核組成,見(jiàn)上圖,算法過(guò)程簡(jiǎn)述: 【1】,遍歷圖像(除去邊緣,防止越界),對(duì)每個(gè)像素做Sobel模板卷積運(yùn)算。 【2】,比較兩個(gè)計(jì)算結(jié)果的大小,取較大者復(fù)制到目標(biāo)圖像,結(jié)束。
Prewitt算子和Sobel算子類似,所不同的是選用不同的模板而已,算法過(guò)程相同。
Krisch算子同樣考究3*3鄰域,所不同的是選用了八個(gè)卷積核,見(jiàn)上圖,算法過(guò)程簡(jiǎn)述: 【1】,遍歷圖像(除去邊緣,防止越界),對(duì)每個(gè)像素做Krisch模板卷積運(yùn)算。 【2】,比較八個(gè)計(jì)算結(jié)果的大小,取較大者復(fù)制到目標(biāo)圖像,結(jié)束。
基于二階微分的邊緣檢測(cè)方法:
Laplacian 算子是二階導(dǎo)數(shù)邊緣算子,考察的是3*3鄰域,上圖是兩種比較常用的模板,算法簡(jiǎn)述如下: 【1】,遍歷圖像(除去邊緣,防止越界),對(duì)每個(gè)像素做Laplancian模板卷積運(yùn)算,注意是只做其中的一種模板運(yùn)算,并不是兩個(gè)。 【2】,復(fù)制到目標(biāo)圖像,結(jié)束。
Gauss-Laplacian考察的是5*5的鄰域,檢測(cè)的同時(shí),引入了濾波,是噪聲得以平滑,上圖是一種常用的算子,算法簡(jiǎn)述。 【1】,遍歷圖像(除去邊緣,防止越界),對(duì)每個(gè)像素做Gauss -Laplancian模板卷積運(yùn)算。 【2】,復(fù)制到目標(biāo)圖像,結(jié)束。
Canny邊緣檢測(cè)是非常重要的一種邊緣檢測(cè)算法,主要過(guò)程如下: 【1】,用高斯濾波器平滑圖像。 已經(jīng)學(xué)習(xí)過(guò),根據(jù)高斯函數(shù),構(gòu)造高斯模板,進(jìn)行濾波,不在贅述。 【2】,用一階偏導(dǎo)的有限差分來(lái)計(jì)算梯度的幅值和方向; 計(jì)算梯度作用模板,遍歷像素,進(jìn)行模板運(yùn)算即可。
幅值和方向:
其中,Phi 表示是幅值,Theta 是方向,用圖像副本進(jìn)行保存。 【3】,對(duì)梯度幅值進(jìn)行非極大值抑制;
為確定邊緣,必須保留局部梯度最大的點(diǎn),而抑制非極大值(NMS)。
已經(jīng)求出Theta 的值,梯度的方向用于非極大值的抑制,將梯度角離散化到0,1,2,3中的一個(gè)(通過(guò)線性映射),采用近似的算法。知道了梯度角,也就知道了梯度線方向。 鄰域的中心像素M與沿著梯度線的兩個(gè)像素相比。如果M的梯度值不比沿梯度線的兩個(gè)相鄰像素梯度值大,則令M=0。
【4】,用雙閾值算法檢測(cè)和連接邊緣。 減少假邊緣段數(shù)量的典型方法是對(duì)N[i,j]使用一個(gè)閾值。將低于閾值的所有值賦零值。但問(wèn)題是如何選取閾值? 解決方法: 雙閾值算法。雙閾值算法對(duì)非極大值抑制圖象作用兩個(gè)閾值τ1和τ2,且2τ1≈τ2,從而可以得到兩個(gè)閾值邊緣圖象N1[i,j]和N2[i,j]。由于N2[i,j]使用高閾值得到,因而含有很少的假邊緣,但有間斷(不閉合)。雙閾值法要在N2[i,j]中把邊緣連接成輪廓,當(dāng)?shù)竭_(dá)輪廓的端點(diǎn)時(shí),該算法就在N1[i,j]的8鄰點(diǎn)位置尋找可以連接到輪廓上的邊緣,這樣,算法不斷地在N1[i,j]中收集邊緣,直到將N2[i,j]連接起來(lái)為止。
|
|
來(lái)自: 昵稱27886033 > 《待分類1》