Canny運算元的理解

2021-08-22 12:14:06 字數 1007 閱讀 9785

主要解決倆個問題:

canny運算元是什麼?是一種經典的影象邊緣檢測運算元

canny運算元怎麼用?下面會提及具體的實施步驟

從影象的邊緣檢測說起:在數字影象中,物體的邊緣是以數字影象的區域性特徵的不連續形式出現即灰度或者結構等資訊的突變出成為邊緣。邊緣能夠勾勒出物體的形狀、能被區域性定義,以及能傳遞大部分的影象資訊等優點。因此邊緣檢測是處理很多複雜問題的關鍵。

在影象中的邊緣有方向和幅度倆個特性。沿著邊緣走向的灰度變化平緩,而垂直於邊緣走向的灰度變化劇烈。根據灰度變化的規律,可以把邊緣分為三類:階越型,房頂型和凸緣型。如下圖

在邊緣上灰度的一階導數幅度較大,而二階導數在邊緣上的值為零,其左右分別為一正一負兩個峰,也就是說邊緣點對應於一階幅度大的點,也對應二階微分的「過零點」。因此,利用梯度最大值或者二階導數「過零點」提取邊界點成為一種有利的手段。傳統的邊緣檢測的方法大都依據這種特徵提取邊緣資訊。比如梯度運算元等。

canny運算元是canny在綜合考慮了傳統的邊緣檢測運算元後提出的,他發現這些邊緣檢測運算元都有一些共同的要求:

好的檢測效果,也就是說對邊緣的錯誤檢測要盡可能的低:在影象的邊緣出現的地方檢測結果中必須有,而且不能出現虛假邊緣。在所有使用邊緣檢測做更深入的研究工作的系統中,它的效能都依賴於邊緣檢測的誤差。

對邊緣的定位要準確:標記出來的邊緣位置要和影象的真正邊緣的中心位置充分的接近。

對同乙個邊緣要有低的響應次數。即單個邊緣產生多個響應的概率要盡可能的低,而且對虛假邊緣的響應要盡可能的抑制。

canny在明確了這三個要求後提出了經典的canny演算法。並提出canny運算元實現邊緣檢測的步驟如下:

用高斯濾波器平滑影象。

計算平滑後的影象的梯度幅值和方向。

對梯度幅值採用非極大值抑制,其過程為找出影象梯度中的區域性極大值點,把其他非極大值點置零而得到細化的邊緣。

用雙閾值演算法檢測和連線邊緣。

具體的數學過程可見這篇部落格。

canny運算元的灰度化

灰度化 注釋寫的很清楚。這裡就不一一詳細介紹 但是灰度化這裡要注意一下就是 data1 uchar colorimage imagedata i colorimage widthstep j 3 0 blue 這行 裡頭,一開始不太理解為什麼有widthstep 找了一些大家寫的 發現,只要是灰度化...

Canny運算元檢測輪廓

1.概念及原理 1 之前我們是對梯度大小進行閾值化以得到二值的邊緣影象。但是這樣做有兩個缺點。其一是檢測到的邊緣過粗,難以實現物體的準確定位。其二是很難找到合適的閾值既能足夠低於檢測到所有重要邊緣,又能不至於包含過多次要邊緣,這就是 canny 演算法嘗試解決的問題。2 canny 運算元通常是基於...

邊緣檢測 Canny運算元

1 使用高斯濾波器,以平滑影象,濾除雜訊。2 計算影象中每個畫素點的梯度大小和方向。3 應用非極大值 non maximum suppression 抑制,以消除邊緣檢測帶來的雜散響應。4 應用雙閾值 double threshold 檢測來確定真實的和潛在的邊緣。5 通過抑制孤立的弱邊緣最終完成邊...