最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python進(jìn)行圖像邊緣檢測(cè)的詳細(xì)教程

 更新時(shí)間:2023年04月01日 09:39:46   作者:Love?_YourSelf_CS  
相信大家對(duì)于邊緣檢測(cè)這幾個(gè)詞并不陌生,但是相對(duì)于如何處理,如何進(jìn)行圖像的邊緣檢測(cè)卻無(wú)能為力、束手無(wú)策了,下面這篇文章主要給大家介紹了關(guān)于python進(jìn)行圖像邊緣檢測(cè)的詳細(xì)教程,需要的朋友可以參考下

邊緣檢測(cè)

圖像邊緣是指圖像中表達(dá)物體的周?chē)袼鼗叶劝l(fā)生階躍變化的那些像素集合。

圖像中兩個(gè)灰度不同的相鄰區(qū)域的交界處,必然存在灰度的快速過(guò)渡或稱為跳變,它們與圖像中各區(qū)域邊緣的位置相對(duì)應(yīng),邊緣蘊(yùn)含了豐富的內(nèi)在信息,如方向、階躍性質(zhì)、形狀等,沿邊緣走向的像素變化平緩,而垂直于邊緣方向的像素變化劇烈。

圖像的大部分信息都集中在邊緣部分,邊緣確定后實(shí)際上就實(shí)現(xiàn)了不同區(qū)域的分割。

邊緣檢測(cè)算子

求取邊緣往往要借助一些邊緣檢測(cè)算子,這些算子有的是基于一階導(dǎo)數(shù)的算子,有的是二階微分算子

Roberts算子、Prewitt算子、Sobel算子它們包含x、y兩個(gè)方向的模板,每種模板只對(duì)相應(yīng)的方向敏感,對(duì)該方向上的方向有明顯的輸出,而對(duì)其他方向的變化響應(yīng)不大。以下是一些常見(jiàn)的一階微分算子及其特點(diǎn):

算子名稱特點(diǎn)
簡(jiǎn)單微分算子對(duì)噪聲敏感,對(duì)噪聲具有一定放大作用
Roberts算子去噪聲作用小,邊緣檢測(cè)能力優(yōu)于簡(jiǎn)單微分算子
Prewitt算子能夠有效抑制噪聲的影響,同時(shí)能夠檢測(cè)邊緣點(diǎn)
Sobel算子得到的邊緣較寬,噪聲抑制效果更強(qiáng)
Canny算子檢測(cè)的邊緣位置準(zhǔn)確且邊緣較窄

1、Roberts算子

2、Prewitt算子

3、Sobel算子

Sobel算子檢測(cè)到的邊緣相比于Roberts算子的檢測(cè)結(jié)果要連續(xù)一些,并且對(duì)于圖像的細(xì)節(jié)檢測(cè)能力更好,且Sobel邊緣檢測(cè)器引入了局部平均,對(duì)噪聲的影響比較小,效果較好。

4、Canny算子

Canny得到的檢測(cè)結(jié)果優(yōu)于Roberts、Sobel算子的檢測(cè)結(jié)果,邊緣細(xì)節(jié)更豐富,邊緣定位準(zhǔn)確連續(xù)性較好,虛假邊緣少且邊緣均具有單像素寬度。
其算法實(shí)現(xiàn)具體分為以下4步:

  • 用高斯濾波器平滑圖像
  • 用一階偏導(dǎo)的有限差分來(lái)計(jì)算梯度的幅度和方向
  • 對(duì)梯度幅值進(jìn)行非極大值抑制
  • 用雙閾值算法檢測(cè)和連接邊緣

5、拉普拉斯算子

常見(jiàn)的二階微分算子包括拉普拉斯算子,它是一種二階導(dǎo)師算子,對(duì)圖像中的噪聲相當(dāng)敏感,而且檢測(cè)出的邊緣常常是雙像素寬,沒(méi)有方向信息,所以拉普拉斯算子很少直接用于檢測(cè)邊緣,而主要用于已知邊緣像素后,確定該像素是在圖像的暗區(qū)還是明區(qū)。另外,一階差分算子會(huì)在較寬范圍內(nèi)形成較大的梯度值,因此不能準(zhǔn)確定位,而利用二階差分算子的過(guò)零點(diǎn)可以精確定位邊緣。
Laplace算子的噪聲明顯比Sobel算子的噪聲大,但其邊緣比Sobel要細(xì)很多,且Laplace變換作為二階微分算子對(duì)噪聲特別敏感,并且會(huì)產(chǎn)生雙邊沿,不能檢測(cè)邊緣方向。

效果實(shí)驗(yàn)

1、 Roberts邊緣檢測(cè)

Prewitt 算子代碼:

Roberts_kernel_x = np.array([[-1, 0], [0, 1]], dtype=int)
Roberts_kernel_y = np.array([[0, -1], [1, 0]], dtype=int)

2、Prewitt 邊緣檢測(cè)

Prewitt 算子代碼:

Roberts_kernel_x = np.array([[-1, 0], [0, 1]], dtype=int)
Roberts_kernel_y = np.array([[0, -1], [1, 0]], dtype=int)

3、Sobel邊緣檢測(cè)

Sobel函數(shù):

edges = cv2.Sobel(img, -1, 1, 1)

4、Canny邊緣檢測(cè)

Canny函數(shù):

edges = cv2.Canny(img, 5, 100)

5、Laplacian 邊緣檢測(cè)

Laplacian 函數(shù):

edges = cv2.Laplacian(img, -1)

總結(jié) 

到此這篇關(guān)于python進(jìn)行圖像邊緣檢測(cè)的文章就介紹到這了,更多相關(guān)python圖像邊緣檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

佛坪县| 闸北区| 黄陵县| 桐乡市| 安义县| 丹阳市| 仪征市| 安平县| 西藏| 金昌市| 尼木县| 四川省| 池州市| 鄯善县| 扎囊县| 绥中县| 乐陵市| 九龙县| 临朐县| 凤山市| 烟台市| 祥云县| 海门市| 惠东县| 绵阳市| 会宁县| 弋阳县| 天峻县| 天全县| 英吉沙县| 章丘市| 寿宁县| 兰考县| 临桂县| 淮滨县| 汕尾市| 东莞市| 翁牛特旗| 夏津县| 营口市| 蒙山县|