頭條資訊 - 為您提供最新最全的新聞資訊,每日實時更新

邊緣檢測(Canny算子)實現原理

科技數碼 成都億佰特

當前,邊緣檢測算法在實際應用中越加廣泛,技術趨勢也是快速發展,熱火朝天。很多朋友或多或少了解,需要實現各類功能,尤其是一些複雜的需求,實現更好的濾波、滿足更佳的提取效果,一時半會兒無從下手。

下面小編就帶大家瞭解關於邊緣檢測算子的實現原理。由於邊緣檢測算子常用方法較多(Sobel算子,Kirsch算子,Laplacian算子,Canny算子等),在此以Canny算子為例,帶大家瞭解簡單的實現原理。

邊緣檢測有什麼作用?

簡單通俗講,邊緣檢測主要應用於一些數據信息的處理,提取想要的目標,剔除一些不相關的幹擾及無用信息,通過更少的數據信息量獲取更多關注的信息。

Canny算子簡介

Canny 邊緣檢測算法 是 John F. Canny 於 1986年開發出來的一個多級邊緣檢測算法,此算法被很多人認為是邊緣檢測的最優算法,相對其他邊緣檢測算法來說其識別圖像邊緣的準確度要高很多。

最優邊緣檢測的特徵:

低錯誤率: 標識出儘可能多的實際邊緣,同時儘可能的減少噪聲產生的誤報

高定位性: 標識出的邊緣要與圖像中的實際邊緣儘可能接近

最小響應: 圖像中的邊緣只能標識一次

Canny算子邊緣檢測流程

邊緣檢測(Canny算子)實現原理

01 轉換灰度

鑑於Canny算子只能對單通道灰度圖像進行處理,因此在進行邊緣檢測之前需要將原圖像進行灰度轉換,以OpenCV為例,使用其封裝的函數實現彩色到灰度的轉換。

02濾波降噪處理

完美的圖像信息是無噪聲的,圖像質量很好,但是現實中由於採集設備、環境幹擾等多方面的原因導致採集到的圖像信息都是含有大量噪聲信息的,這些噪聲最常見的就是椒鹽噪聲和高斯噪聲。

Canny算子是一種綜合在抗噪聲幹擾和精確定位之間尋求最佳折中方案的邊緣檢測方法,一般使用高斯濾波來去除噪聲,下面是常見的3X3的卷積核模板:

邊緣檢測(Canny算子)實現原理

高斯濾波可以將圖像中的噪聲部分過濾出來,避免後面進行邊緣檢測時將錯誤的噪聲信息也誤識別為邊緣了。

濾波核的維數不應選的過大,否則可能會將邊緣信息給平滑掉,使得邊緣檢測算子無法正確識別邊緣信息。

03 差分計算幅值和方向

使用一階有限差分計算梯度可以得到圖像在x和y方向上偏導數的兩個矩陣,Canny算子中使用的是 Sobel 算子作為梯度算子,當然還可以自己構造其它的如:Roberts算子、Prewitt算子等一階邊緣檢測算子來作為梯度算子。

下面以Sobel算子為例來計算梯度的幅值和方向:

【Y方向】

邊緣檢測(Canny算子)實現原理

【X方向】

預設H(i , j)為計算的圖像

邊緣檢測(Canny算子)實現原理

其中點C ( i , j ) 是要計算的梯度

【Y方向梯度】

【X方向梯度】

【此處C點的梯度幅值】

邊緣檢測(Canny算子)實現原理

【此處C點的梯度方向】

04 非極大值抑制

對非極大值的數據進行抑制,也可以理解成對非極大值數據排除其是邊緣的可能性。8鄰域內圖像梯度幅值矩陣中的元素值越大,說明圖像中該點的梯度值越大,再結合檢測點的梯度方向,就可以定位出大概的邊緣信息。

非極大值抑制兩個特點:

當前位置的梯度值與梯度方向上兩側的梯度值比較

梯度方向是垂直於邊緣方向

舉例如下圖所示

邊緣檢測(Canny算子)實現原理

每個點的X方向和Y方向梯度方向矩陣

邊緣檢測(Canny算子)實現原理

每個點的梯度方向的梯度角矩陣

邊緣檢測(Canny算子)實現原理

Canny算子將Gy/Gx的值求絕對值,OpenCV中的梯度角矩陣

邊緣檢測(Canny算子)實現原理

每個點的梯度矩陣

邊緣檢測(Canny算子)實現原理

綜上所示,計算出來的梯度值、梯度方向可以大致判斷出此 8 鄰域內的值的邊緣信息如下圖

邊緣檢測(Canny算子)實現原理

梯度方向是同時包含多個梯度值的,因此需要將梯度方向兩邊的梯度值進行線性插值,插值係數β有如下要求:越靠近梯度方向的梯度值,其所佔比例越大。

完成非極大值抑制後,會得到一個二值圖像,非邊緣的點灰度值均為0,可能為邊緣的點灰度值為255。這樣的一個檢測結果還是包含了很多由噪聲及其他原因造成的假邊緣,還需要雙閾值篩選處理。

05 滯後閾值

使用雙閾值來對二值化圖像進行篩選,通過選取合適的大閾值與小閾值可以得出最為接近圖像真實邊緣的邊緣圖像。

具體實現方法為:根據高閾值得到一個邊緣圖像,這樣一個圖像含有很少的假邊緣,但是由於閾值較高,產生的圖像邊緣可能不閉合,解決該問題就採用了另外一個低閾值。

在高閾值圖像中把邊緣鏈接成輪廓,當到達輪廓的端點時,該算法會在斷點的8鄰域點中尋找滿足低閾值的點,再根據此點收集新的邊緣,直到整個圖像邊緣閉合。

轉載請超鏈接註明:頭條資訊 » 邊緣檢測(Canny算子)實現原理
免責聲明
    :非本網註明原創的信息,皆為程序自動獲取互聯網,目的在於傳遞更多信息,並不代表本網贊同其觀點和對其真實性負責;如此頁面有侵犯到您的權益,請給站長發送郵件,並提供相關證明(版權證明、身份證正反面、侵權鏈接),站長將在收到郵件24小時內刪除。
加載中...