※ 引述《Habowbow (yo soy guapo)》之銘言:
: Canny運算有四個步驟
: 1. 高斯平滑化 用個高斯濾波器就行了
: 2. 邊緣偵測 我是用Sobel
這裡應該都是應用局部梯度運算
取最大值作為初步邊緣線吧??
沒有很熟
不過我看matlab的書
似乎把sobel跟canny,prewitt之類偵測法歸類為同一層級
所以整個下來等於偵測了兩次邊緣線??
: 3. Nonmaximum Suppression 此步驟是為了消除邊緣線的厚度
: 就是你要的雙線變單線 我不確定MATLAB這一步怎麼做
: 不過他應該是自己就會處理 因為這個跟數值沒關係 就是一個作法而已
: 我的作法如下
: A.對每一點C(x, y)選定垂直於梯度方向兩個側邊的鄰近點,記作
: A和B,A的梯度記為M(A),B的梯度記為M(B),C的梯度記為M(C)。
: B.如果M(A)>M(C)或M(B)>M(C),則C(x,y)不為邊緣像元,設定
: M(C(x, y))=0。
這個部分看了一些文獻稱為非最大值壓抑
主要以梯度運算來判定是否為邊緣像元
不過跟上一個步驟不就重複了??
感覺好像跟雙線單線沒什麼相關
因為canny本身就是把梯度大的地方偵測出來
所以等高線線體兩側一定都會被判定為邊緣像元而標記
: 4. hysteresis thresholding ,一般採用一個門檻值來界定影像中
: 某像元是否為邊緣像元,但是並非每個梯度不為零的像元都是邊緣像
: 元,Canny 建議使用hysteresis thresholding,採用兩個門檻判斷,
: 這應該是MATLAB裡可以設定的 不過我不會用
這裡主要是設定兩個門檻值T1,T2
是對於上面步驟偵測出來的邊緣進行二次判斷
matlab的設定我已經知道在哪裡了
總結以上所有觀點
canny是個很好的邊緣偵測
不過對於我真正需要的線體偵測反而並不理想??
你有什麼關於等高線線體偵測部分的想法嗎??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.120.26.72