0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于邊緣檢測算子的實(shí)現(xiàn)原理

新機(jī)器視覺 ? 來源:新機(jī)器視覺 ? 2023-01-05 11:41 ? 次閱讀

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

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

邊緣檢測有什么作用?

簡單通俗講,邊緣檢測主要應(yīng)用于一些數(shù)據(jù)信息的處理,提取想要的目標(biāo),剔除一些不相關(guān)的干擾及無用信息,通過更少的數(shù)據(jù)信息量獲取更多關(guān)注的信息。

Canny算子簡介

Canny 邊緣檢測算法 是 John F. Canny 于 1986年開發(fā)出來的一個多級邊緣檢測算法,此算法被很多人認(rèn)為是邊緣檢測的最優(yōu)算法,相對其他邊緣檢測算法來說其識別圖像邊緣的準(zhǔn)確度要高很多。

最優(yōu)邊緣檢測的特征:

低錯誤率: 標(biāo)識出盡可能多的實(shí)際邊緣,同時盡可能的減少噪聲產(chǎn)生的誤報

高定位性: 標(biāo)識出的邊緣要與圖像中的實(shí)際邊緣盡可能接近

最小響應(yīng): 圖像中的邊緣只能標(biāo)識一次

Canny算子邊緣檢測流程

1223f54a-852f-11ed-bfe3-dac502259ad0.png

01 轉(zhuǎn)換灰度

鑒于Canny算子只能對單通道灰度圖像進(jìn)行處理,因此在進(jìn)行邊緣檢測之前需要將原圖像進(jìn)行灰度轉(zhuǎn)換,以O(shè)penCV為例,使用其封裝的函數(shù)實(shí)現(xiàn)彩色到灰度的轉(zhuǎn)換。

12483aa4-852f-11ed-bfe3-dac502259ad0.png

02 濾波降噪處理

完美的圖像信息是無噪聲的,圖像質(zhì)量很好,但是現(xiàn)實(shí)中由于采集設(shè)備、環(huán)境干擾等多方面的原因?qū)е虏杉降膱D像信息都是含有大量噪聲信息的,這些噪聲最常見的就是椒鹽噪聲和高斯噪聲。

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

127177ca-852f-11ed-bfe3-dac502259ad0.png

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

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

03 差分計(jì)算幅值和方向

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

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

【Y方向】

12848efa-852f-11ed-bfe3-dac502259ad0.png

【X方向】

129d4ba2-852f-11ed-bfe3-dac502259ad0.png

預(yù)設(shè)H(i , j)為計(jì)算的圖像

12be0932-852f-11ed-bfe3-dac502259ad0.png

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

【Y方向梯度】

12d1ee0c-852f-11ed-bfe3-dac502259ad0.png

【X方向梯度】

12f1275e-852f-11ed-bfe3-dac502259ad0.png

【此處C點(diǎn)的梯度幅值】

13094ef6-852f-11ed-bfe3-dac502259ad0.png

【此處C點(diǎn)的梯度方向】

1323f418-852f-11ed-bfe3-dac502259ad0.png

04 非極大值抑制

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

非極大值抑制兩個特點(diǎn):

當(dāng)前位置的梯度值與梯度方向上兩側(cè)的梯度值比較

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

舉例如下圖所示

1338625e-852f-11ed-bfe3-dac502259ad0.png

每個點(diǎn)的X方向和Y方向梯度方向矩陣

1350cf60-852f-11ed-bfe3-dac502259ad0.png

每個點(diǎn)的梯度方向的梯度角矩陣

1370efb6-852f-11ed-bfe3-dac502259ad0.png

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

138c8e6a-852f-11ed-bfe3-dac502259ad0.png

每個點(diǎn)的梯度矩陣

13ab1ace-852f-11ed-bfe3-dac502259ad0.png

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

13c7bb52-852f-11ed-bfe3-dac502259ad0.png

梯度方向是同時包含多個梯度值的,因此需要將梯度方向兩邊的梯度值進(jìn)行線性插值,插值系數(shù)β有如下要求:越靠近梯度方向的梯度值,其所占比例越大。

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

05 滯后閾值

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

具體實(shí)現(xiàn)方法為:根據(jù)高閾值得到一個邊緣圖像,這樣一個圖像含有很少的假邊緣,但是由于閾值較高,產(chǎn)生的圖像邊緣可能不閉合,解決該問題就采用了另外一個低閾值。

在高閾值圖像中把邊緣鏈接成輪廓,當(dāng)?shù)竭_(dá)輪廓的端點(diǎn)時,該算法會在斷點(diǎn)的8鄰域點(diǎn)中尋找滿足低閾值的點(diǎn),再根據(jù)此點(diǎn)收集新的邊緣,直到整個圖像邊緣閉合。

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 高斯濾波
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    8053
  • 邊緣檢測
    +關(guān)注

    關(guān)注

    0

    文章

    91

    瀏覽量

    18160
  • Canny
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    9692

原文標(biāo)題:邊緣檢測(Canny算子)實(shí)現(xiàn)原理

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于Canny邊緣檢測算子的圖像檢索算法

    【摘要】:針對依賴傳統(tǒng)Canny算子的基于邊緣的圖像檢索系統(tǒng)所存在的不足,提出一種基于Canny邊緣檢測的圖像檢索算法。使用改進(jìn)的Canny算子
    發(fā)表于 04-24 10:03

    關(guān)于canny算子邊緣檢測的問題

    本帖最后由 豆吖豆 于 2017-4-4 23:14 編輯 grd=edge(Egray,'canny',0.09,'both');大神門 問一下這個后面的0.09和both什么意思是指的是Egray圖像的上下大小還是,另外可以的話能大概說說這個canny邊緣檢測算
    發(fā)表于 04-04 22:27

    基于Qualcomm FastCv的邊緣檢測算法詳解

    ,而沒有必要指出邊緣的精確位置。2.微分邊緣檢測算子2.1.一階微分算子2.1.1Roberts 算子 Roberts
    發(fā)表于 09-21 11:45

    基于視覺圖像的微小零件邊緣檢測算法研究

    因子。Sobel算子邊緣檢測算子,故其處理模板中各因子之和為零。另一方面,由于正因子和負(fù)因子之和分別為4和一4,在極端情況下處理結(jié)果可能溢出。因此,在實(shí)際使用時,Sobel算子通常采
    發(fā)表于 11-15 16:23

    邊緣檢測算法分為哪幾種?它們有何不同?

    邊緣檢測是什么?邊緣檢測算子有哪些?邊緣檢測算法分為哪幾種?它們有何不同?
    發(fā)表于 05-31 06:57

    邊緣檢測的幾種微分算子

    一、邊緣檢測邊緣檢測的幾種微分算子:一階微分算子:Roberts、Sobel、Prewitt二階
    發(fā)表于 07-26 08:29

    基于形態(tài)灰度邊緣檢測算法的一種改進(jìn)

    使用形態(tài)學(xué)的思想進(jìn)行圖像的邊緣檢測,提出了在一次形態(tài)處理中使用雙結(jié)構(gòu)元的一系列一般性形態(tài)邊緣檢測算子和抗噪型形態(tài)邊緣
    發(fā)表于 04-19 19:26 ?32次下載

    基于Canny邊緣檢測算子的圖像檢索算法

      針對依賴傳統(tǒng)Canny算子的基于邊緣的圖像檢索系統(tǒng)所存在的不足,提出一種基于Canny邊緣檢測的圖像檢索算法。使用改進(jìn)的Canny算子
    發(fā)表于 02-11 11:22 ?28次下載

    基于高斯濾波與矢量微分算子的小波多尺度邊緣檢測算

    基于高斯濾波與矢量微分算子的小波多尺度邊緣檢測算法 摘 要: 采用一種基于高斯濾波與矢量微分算子相結(jié)合的近似小波多尺度邊緣算法. 該算法分
    發(fā)表于 04-23 14:58 ?17次下載

    基于改進(jìn)的Laplacian算子圖像邊緣檢測

    分析了圖像邊緣特性以及Laplacian算子檢測圖像邊緣的基本原理!并對經(jīng)典Laplacian算子進(jìn)行改進(jìn)! 提出了一種新的
    發(fā)表于 05-17 10:46 ?29次下載
    基于改進(jìn)的Laplacian<b class='flag-5'>算子</b>圖像<b class='flag-5'>邊緣</b><b class='flag-5'>檢測</b>

    內(nèi)積能量與邊緣檢測

    本文提出了一種新型的邊緣檢測算子--基于內(nèi)積能量與邊緣檢測算子。在基于內(nèi)積能量的邊緣檢測算自重,
    發(fā)表于 05-19 15:47 ?27次下載

    邊緣檢測算子在汽車牌照區(qū)域檢測中的應(yīng)用

    文中介紹了常用的幾種 邊緣檢測 算子,不同的微分算子對不同邊緣檢測的敏感程度是不同的,因此對不同
    發(fā)表于 07-25 16:13 ?22次下載
    <b class='flag-5'>邊緣</b><b class='flag-5'>檢測算子</b>在汽車牌照區(qū)域<b class='flag-5'>檢測</b>中的應(yīng)用

    Robinson邊緣檢測算

    傳統(tǒng)的Canny邊緣檢測算子是一種含有最優(yōu)化思想的算子,它具有較高的檢測精度,可以達(dá)到單像素級,但是因?yàn)樗旧韺υ肼暠容^敏感,所以需要先利用Gauss濾波、均值濾波、中值濾波等濾波器進(jìn)
    發(fā)表于 12-01 14:13 ?0次下載

    圖像處理邊緣檢測算子分類

    邊緣檢測類似微分處理,它檢測的變化的部分,必然對噪聲和圖像的亮度變化都有相應(yīng)處理。因此,把均值處理加入到邊緣檢測過程中一定要非常謹(jǐn)慎。我們可
    的頭像 發(fā)表于 08-17 15:54 ?7757次閱讀

    OpenCV邊緣檢測算子Laplace、LoG詳解

    一階導(dǎo)數(shù)算子(例如 Sobel 算子)通過對圖像求導(dǎo)來確定圖像的邊緣,數(shù)值絕對值較高的點(diǎn)對應(yīng)了圖像的邊緣。如果繼續(xù)求二階導(dǎo),原先數(shù)值絕對值較高的點(diǎn)對應(yīng)了過零點(diǎn)。因此,也可以通過找到二階
    的頭像 發(fā)表于 12-21 16:34 ?1599次閱讀
    OpenCV<b class='flag-5'>邊緣</b><b class='flag-5'>檢測算子</b>Laplace、LoG詳解