国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Halcon邊緣檢測Sobel、Laplace和Canny算子

這篇具有很好參考價值的文章主要介紹了Halcon邊緣檢測Sobel、Laplace和Canny算子。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

提示:文章參考了網(wǎng)絡(luò)上其他作者的文章,以及相關(guān)書籍,如有侵權(quán),請聯(lián)系作者。


前言

???????除了閾值分割外,也可以通過檢測區(qū)域的邊緣得到目標(biāo)區(qū)域。區(qū)域的邊緣像素的灰度值往往會發(fā)生灰度上的突變,針對這些跳躍性的突變進(jìn)行檢測和計算,可以得到區(qū)域的邊緣輪廓,并作為分割圖像的依據(jù)。Halcon 中有許多邊緣濾波器能計算出邊緣的幅值和方向,用以實現(xiàn)邊緣的提取。本文就以常用的Sobel算子、Laplace 算子和Canny 算子為例,介紹邊緣檢測的常用方法。
???????本文涉及的知識點如下:
???????1)、像素級邊緣提?。簩W(xué)會如何使用邊緣濾波器尋找圖像中梯度變化明顯的部分。
???????2)、亞像素級邊緣提?。簩W(xué)會完成亞像素邊緣提取、輪廓合并以及XLD輪廓輸出。
???????3)、輪廓處理:學(xué)會輪廓的生成、分割、篩選、連接以及擬合操作。


一、像素級邊緣提取

???????像素級邊緣提取,直觀地說,也就是顏色的邊緣提取。傳統(tǒng)的顏色邊緣檢測方法是使用邊緣濾波器,這些濾波器通過尋找較亮和較暗的區(qū)域邊界像素點的方式提取邊緣,即使用這些濾波器尋找圖像中梯度變化明顯的部分。這些梯度一般描述為邊緣的振幅和方向。將邊緣振幅高的所有像素選擇出來,就完成了區(qū)域的邊緣輪廓提取。
???????Halcon也提供了許多標(biāo)準(zhǔn)的邊緣濾波器,如Sobel、Roberts、Robinson和Frei濾波器。此外,還提供了非極大值抑制算子,用于進(jìn)行提取邊緣后的處理。

1.經(jīng)典的邊緣檢測算子

???????關(guān)于邊緣檢測,有許多經(jīng)典的算子,各大圖形處理庫都有各自的邊緣檢測算子,這里簡要介紹幾種。
???????1)、1.Sobel 算子
???????Sobel算子結(jié)合了高斯平滑和微分求導(dǎo)。它是一階導(dǎo)數(shù)的邊緣檢測算子,使用卷積核對圖像中的每個像素點做卷積和運算,然后采用合適的閾值提取邊緣。Soble算子有兩個卷積核,分別對應(yīng)x與y兩個方向。其計算過程如下。
???????a)、分別在x和y兩個方向求導(dǎo)。
???????b)、在圖像的每一個像素點上,結(jié)合以上兩個結(jié)果求出近似梯度。
???????2)、Laplace 算子
???????Laplace算子是一種二階導(dǎo)數(shù)算子。在圖像的邊緣區(qū)域,像素值會發(fā)生比較大的變化,對這些像素求導(dǎo)會出現(xiàn)極值。在這些極值位置,其二階導(dǎo)數(shù)為0,所以也可以用二階導(dǎo)數(shù)來檢測圖像邊緣。
???????3)、Canny 算子
???????Canny算子的基本思想是尋找梯度的局部最大值。首先使用高斯平滑濾波器卷積降噪,再用一對卷積陣列計算邊緣梯度和方向,然后使用非極大值抑制移除非邊緣線條,最后使用滯后閾值(高閾值和低閾值)檢測并連接邊緣。
???????對比上述3種算子,有如下總結(jié)。
???????a)、Sobel算子在邊緣檢測的同時盡量減少了噪聲的影響,比較容易實現(xiàn)。它對像素位置的影響進(jìn)行了加權(quán),因此效果比較好,是很常用的邊緣檢測方法。
???????b)、Laplace算子是一種各向同性算子,比較適用于只關(guān)心邊緣的位置而不考慮其周圍像素的灰度差值的情況。Laplace算子對孤立像素的響應(yīng)要比對邊緣或線的響應(yīng)更強烈,因此只適用于無噪聲圖像。存在噪聲的情況下,使用Laplace算子進(jìn)行邊緣檢測之前需要先進(jìn)行低通濾波處理。
???????c)、Canny 算子是目前理論上相對最完善的一種邊緣檢測算法,但其也存在不足之處:為了得到較好的邊緣檢測結(jié)果,它通常需要使用較大的濾波尺度,這樣容易丟失一些細(xì)節(jié)。

2.邊緣檢測的一般流程

???????邊緣檢測的一般流程如下。
???????a)、獲取圖像。
???????b)、選擇感興趣區(qū)域。這是為了減少計算量,加快處理速度。
???????c)、圖像濾波。對輸入圖像使用邊緣濾波器是采集后的一個關(guān)鍵步驟,為了獲取圖像的邊緣部分,在讀取了輸入圖像之后,可以使用邊緣濾波器獲取邊緣的梯度和方向。對于像素級邊緣,Halcon中提供了常用算子,如 sobel_amp、sobel_dir、edges_image、derivate_gauss、edges_color等。
???????d)、提取邊緣。將符合條件的邊緣提取出來,應(yīng)用濾波器之后,可以使用閾值處理將圖像中的高亮邊緣提取出來。這里可以使用前文介紹的threshold算子,也可以使用hysteresis_threshold 算子減少非關(guān)鍵的邊緣,將符合條件的邊緣提取出來。還可以進(jìn)一步對結(jié)果進(jìn)行非極大值抑制,然后使用skeleton 算子將邊緣繪制出來。
???????e)、邊緣處理。根據(jù)檢測的需要對提取出的邊緣進(jìn)行處理,有時得到的邊緣可能會比較粗略,往往大于1個像素,需要進(jìn)行一些細(xì)化;有時得到的邊緣并不連續(xù),因此還需要對邊緣做一些處理,如生成輪廓、合并非連續(xù)的邊緣、分離背景等。
???????f)、顯示結(jié)果。將結(jié)果繪制在窗口中,以表現(xiàn)直觀的邊緣提取效果。

3.sobel_amp 算子

???????Halcon提供了大量的邊緣濾波器,最常用的是Sobel濾波器。它是一種經(jīng)典的邊緣檢測算子,速度和效率都非常令人滿意。其在Halcon中對應(yīng)的算子為sobel_amp算子和sobel_dir算子,二者都是使用Sobel算子進(jìn)行邊緣檢測。前者用于計算邊緣的梯度,后者除了能表示梯度外,還能表示邊緣的方向,本小節(jié)主要介紹sobel_amp算子。
???????下面以一個簡單的例子說明sobel_amp算子的用法。該例子輸入的是一幅灰度值圖像,讀取圖像后,使用sobel_amp 算子進(jìn)行邊緣濾波。濾波類型參數(shù)選擇sum_abs,以獲得細(xì)節(jié)比較多的邊緣;然后通過閾值處理選擇符合梯度閾值的區(qū)域,提取出的區(qū)域?qū)挾却笥?個像素;最后使用skeleton算子將邊緣框架顯示出來,如下圖所示。
Halcon邊緣檢測Sobel、Laplace和Canny算子
???????上述過程的實現(xiàn)代碼如下:

read_image (Image,' data/flower')
rgb1_to_gray (Image,,GrayImage)
sobel_amp (GrayImage,Amp, ' sum_abs',3)
threshold (Amp,Edg,100,255)
skeleton (Edg, Skeleton)
dev clear window ()
dev_display (Skeleton)

???????該例子使用sobel_amp 算子對灰度圖像進(jìn)行了邊緣檢測,選擇了sum_abs類型的濾波器,并將帶有邊緣梯度的圖像Amp輸出。第4行通過閾值處理去除一些非關(guān)鍵的輪廓點和線,第5行使用skeleton提取區(qū)域的框架。由上圖可知,前景目標(biāo)的輪廓基本都被提取出來了。
???????sobel_amp 算子是一種常用的邊緣濾波器,該算子是一階導(dǎo)數(shù)的邊緣檢測算子,使用一個卷積核對圖像中的每個像素點做卷積運算,然后采用合適的閾值提取邊緣。根據(jù)濾波器的不同,卷積核的運算方式也不同。該算子的原型如下:

   sobel_amp(Image : EdgeAmplitude : FilterType, Size : )

???????其各參數(shù)含義如下。
???????參數(shù)1:Image為輸入的圖像,這里是單通道圖像。
???????參數(shù)2:EdgeAmplitude 為輸出參數(shù),是帶有邊緣梯度的圖像。
???????參數(shù)3:FilterType為輸入?yún)?shù),表示卷積核或濾波器的類型。
???????參數(shù)4:Size為輸入?yún)?shù),表示濾波器的尺寸。該參數(shù)值越大,得到的邊緣線條會越粗,細(xì)節(jié)越少。這個值一般為單數(shù),默認(rèn)為3,也可以根據(jù)圖像的檢測需要選擇合適的奇數(shù)。
???????這里的FilterType是基于兩種濾波器掩膜的,它決定了卷積的計算方式。假設(shè)兩個卷積的濾波掩膜矩陣是A和B,其中
A = [ 0 2 1 0 0 0 ? 1 ? 2 ? 1 ] , B = [ 1 0 ? 1 ? 2 0 ? 2 1 0 ? 1 ] \begin{gathered} A=\begin{bmatrix} 0&2&1\\ 0&0&0\\-1&-2&-1\end{bmatrix},B=\begin{bmatrix} 1&0&-1\\\ 2&0&-2\\1&0&-1\end{bmatrix} \quad \end{gathered} A=???00?1?20?2?10?1????,B=???1?21?000??1?2?1????????????掩模矩陣可以理解為內(nèi)核或者結(jié)構(gòu)元素,A和B分別表示圖像與兩種波濾器掩膜進(jìn)行卷積操作的結(jié)果。
???????FilterType有幾種可供選擇的值,如 sum_abs、sum_sqrt、sum_sqrt_binomial、thin_max_abs、thin_sum_abs、x、y等。下面在代碼中分別測試了幾種不同類型的濾波器對同一圖像進(jìn)行邊緣檢測的結(jié)果,如下圖所示。輸入圖像仍為上面左圖所示的灰度圖像。下圖(a)~(f)分別為sobel_amp 算子中的 FilterType參數(shù)值為sum_abs、thin_sum_abs、thin_max_abs、sum_sqrt、x、y時的計算結(jié)果。
Halcon邊緣檢測Sobel、Laplace和Canny算子
???????上面這幾種計算結(jié)果是在掩膜尺寸為3的情況下得到的。對于較大尺寸的濾波器,需要使用二項式濾波器對輸入圖像進(jìn)行平滑處理。如果size為5、7、9、11等尺寸,則要在上述filter后面加上_binomial來選擇二項式濾波器,如 sum_abs_binomial、sum_sqrt_binomial、thin_max_abs_binomial、thin_sum_abs_binomial、x_binomial、y_binomial 等。
???????注意:在邊緣檢測中可以通過創(chuàng)建感興趣區(qū)域來縮小處理區(qū)域的范圍,以加快檢測速度。

參考文獻(xiàn)

1、Halcon機器視覺算法原理與編程實戰(zhàn)/楊青編著.北京大學(xué)出版社文章來源地址http://www.zghlxwxcb.cn/news/detail-401945.html

到了這里,關(guān)于Halcon邊緣檢測Sobel、Laplace和Canny算子的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包