一往衷、Canny邊緣檢測(cè)流程
Canny是一個(gè)科學(xué)家在1986年寫了一篇論文象对,所以用自己的名字來(lái)命名這個(gè)檢測(cè)算法榴鼎。主要流程有5步:
- 使用高斯濾波器伯诬,以平滑圖像,濾除噪聲巫财。
- 計(jì)算圖像中每個(gè)像素點(diǎn)的梯度強(qiáng)度和方向盗似。
- 應(yīng)用非極大值(Non-Maximum Suppression)抑制,以消除邊緣檢測(cè)帶來(lái)的雜散響應(yīng)平项。
- 應(yīng)用雙閾值(Double-Threshold)檢測(cè)來(lái)確定真實(shí)的和潛在的邊緣赫舒。
- 通過抑制孤立的弱邊緣最終完成邊緣檢測(cè)。
二闽瓢、邊緣檢測(cè)指標(biāo)
濾波:
Canny檢測(cè)算法使用的濾波器是高斯濾波器接癌,通過濾波器可以對(duì)圖像進(jìn)行平滑處理。所以第一步需要過濾噪聲扣讼,當(dāng)進(jìn)行檢測(cè)的時(shí)候缺猛,肯定需要計(jì)算梯度,當(dāng)遇到噪音點(diǎn)也會(huì)發(fā)生梯度的變化椭符,所以為了更好的做到邊緣檢測(cè)荔燎,第一步需要去噪。梯度:
之前我們計(jì)算梯度的時(shí)候销钝,只需要計(jì)算大小就行了有咨,但是現(xiàn)在需要計(jì)算一下方向,所以梯度計(jì)算包括強(qiáng)度和方向蒸健。非極大值抑制:
計(jì)算的梯度大小有不同座享,比如在一個(gè)3*3的卷積核中婉商,有些梯度比較小,相對(duì)大的就會(huì)保留下來(lái)渣叛,小的梯度就不會(huì)保留丈秩,只留下最明顯的。
比如在人臉檢測(cè)中淳衙,需要把人臉部分打出一個(gè)框的標(biāo)識(shí)癣籽,計(jì)算的時(shí)候會(huì)計(jì)算出多個(gè)框,每個(gè)框都有一個(gè)概率值滤祖,最后只保留概率最大的那個(gè)框,而其他的框就會(huì)被抑制掉瓶籽。雙閾值:
計(jì)算邊界的時(shí)候匠童,會(huì)計(jì)算出多個(gè)候選值,在候選值中會(huì)再進(jìn)行計(jì)算塑顺,只保留最接近真實(shí)的那個(gè)候選值邊界汤求。完成邊緣檢測(cè):
將前面的結(jié)果都組合起來(lái),完成邊緣檢測(cè)严拒。
三扬绪、高斯濾波器
- 中間點(diǎn)比較大,越邊緣的點(diǎn)越小裤唠,圖中的H對(duì)高斯濾波器的濾波核進(jìn)行歸一化處理挤牛,然后再將濾波核H框住的區(qū)域A對(duì)應(yīng)位置相乘再求和得到一個(gè)結(jié)果e。
四种蘸、梯度方向
- Canny計(jì)算梯度使用的是Sobel算子墓赴, Sobel算子中需要分別計(jì)算水平和豎直兩個(gè)方向的Gx和Gy(Gx和Gy的計(jì)算如上圖),將這個(gè)結(jié)果融合到一起G計(jì)算方法如上圖
梯度方向就是θ值航瞭,通過Gx和Gy計(jì)算得到诫硕,計(jì)算方法如上圖。
五刊侯、非極大值抑制
1章办、方法A
-
如圖所示,C點(diǎn)是目標(biāo)像素點(diǎn)滨彻,需要判斷C是不是一個(gè)極大值點(diǎn)藕届,然后紅色方框是它的周圍的8個(gè)像素,藍(lán)色線是C點(diǎn)的梯度方向疮绷,梯度方向和邊界方向應(yīng)該是垂直的關(guān)系翰舌。
- 如圖所示,g1冬骚、g2椅贱、g3懂算、g4、c都是一個(gè)像素點(diǎn)庇麦,而Q计技、Z是梯度方向與方框的交點(diǎn),Q和Z不是一個(gè)像素是一個(gè)亞像素山橄,使用線性插值法計(jì)算這個(gè)亞像素垮媒。
首先g1、g2航棱、g3睡雇、g4的梯度(梯度幅值,上一節(jié)講到的梯度計(jì)算)都能夠計(jì)算出來(lái)饮醇, Q就是g1和g2之間的它抱,用M(dtmp1)表示Q點(diǎn)梯度(梯度幅值),它的計(jì)算方法在上圖的公式已經(jīng)給出朴艰,w和(1-w)都是代表的是一個(gè)權(quán)重观蓄,是Q點(diǎn)到g1、g2點(diǎn)的距離比上g1到g2的距離祠墅。得到權(quán)重乘上g1和g2的梯度就得到了Q點(diǎn)的梯度侮穿。
通過比較C、Q毁嗦、Z的梯度值亲茅,如果C比Q、Z都要大金矛,則說(shuō)明C點(diǎn)是一個(gè)極大值芯急,就可以將C點(diǎn)保留下來(lái)。
2驶俊、 方法B
- 由于方法A太復(fù)雜了娶耍,將它簡(jiǎn)化成方法B,將一個(gè)像素周圍的8個(gè)像素分解成8個(gè)方向饼酿。在方法1中如果過了g1和g4就不需要做插值了榕酒。方法B就是判斷當(dāng)前的方向和這8個(gè)方向那個(gè)最近就是哪個(gè)方向。然后這個(gè)方向上除了目標(biāo)像素值之外還有兩個(gè)點(diǎn)故俐,如圖所示假如分別是A想鹰、B、C药版,如果目標(biāo)點(diǎn)A比B辑舷、C的梯度都要小那么A點(diǎn)就是極大值點(diǎn)。
六槽片、雙閾值檢測(cè)
- maxVal即max value何缓,意思是如果算出來(lái)的梯度值比maxVal(假如是100)大肢础,那就是邊界。
所以A點(diǎn)是邊界碌廓,如果紅色線下方還有一個(gè)D點(diǎn)传轰,那么就舍棄這個(gè)點(diǎn),這個(gè)點(diǎn)的梯度值比minVal小谷婆。
如果是在minval和maxval之間慨蛙,就要分開討論了,比如C點(diǎn)和邊界點(diǎn)A連接在了一起纪挎,那么C點(diǎn)就可以判斷為一個(gè)邊界點(diǎn)期贫,否則比如B點(diǎn)就不是了
七、邊緣檢測(cè)中minVal和maxVal
- minVal和maxVal的設(shè)定是比較重要的异袄,
如果對(duì)minval進(jìn)行調(diào)整唯灵,就有可能更多點(diǎn)判定為邊界點(diǎn),因此會(huì)提取出更多的細(xì)節(jié)隙轻。
八、資料
機(jī)器學(xué)習(xí)楊卓越的博客
https://blog.csdn.net/weixin_50592077/article/details/132463251