在上一篇FPGA圖像處理--Canny邊緣檢測(一)里介紹了Canny邊緣檢測的NMS計(jì)算,這里就介紹一下雙閾值邊緣檢測和弱邊緣連接。
雙閾值檢測顧名思義就是要有兩個閾值,在Sobel中只有一個閾值,這樣就可能帶來一些潛在的問題,比如閾值設(shè)置過低導(dǎo)致檢測出來的邊緣很多,或者設(shè)定的過高導(dǎo)致檢測出來的邊緣比較少。
在Canny中引入了雙閾值檢測,也就是定義一個高閾值和一個低閾值。當(dāng)邊緣的幅值大于高閾值的時候就認(rèn)為這個邊緣是一個強(qiáng)邊緣,低于低閾值的時候就認(rèn)為他不是邊緣,而在高閾值和低閾值之間的值被認(rèn)為是弱邊緣。通過后面的弱邊緣連接就可以讓弱邊緣有可能被識別為邊緣,也有可能被忽視掉。從而帶來更好的檢測效果。
我們來看一下Python的參考模型:
這里定義了一個函數(shù)來處理雙閾值的問題,當(dāng)像素的值大于等于高閾值的時候就設(shè)置當(dāng)前像素為255,介于低閾值和高閾值之間的值設(shè)置為127,小于低閾值的值設(shè)置為0,這個就很簡單了。
我們來看一下效果吧。
可以看到邊緣信息都被很好的檢測出來了,但是有的邊緣是斷斷續(xù)續(xù)的,這個時候就需要使用弱邊緣連接了。
最理想的弱邊緣連接肯定是做一遍深搜,但是這個對于資源消耗太大了,那么我們就退而求其次,如果一個點(diǎn)是弱邊緣的話,只要他周圍八個點(diǎn)里面有一個是強(qiáng)邊緣,那么我們就把這個點(diǎn)變?yōu)閺?qiáng)邊緣。是不是很簡單。
來看看Python的參考模型:
只要當(dāng)前值是127也就是我們在第一步中分離出來的弱邊緣,然后做一個判斷,判斷他周邊有沒有強(qiáng)邊緣,來決定是否將其變?yōu)閺?qiáng)邊緣點(diǎn)。
我們來看一下做了一次弱邊緣連接的效果:
大家注意看紅色框里面的這部分,可以看到一部分邊緣相對于之前已經(jīng)連接了起來。
如果我們多做幾次弱邊緣連接效果肯定會更好,不過與之帶來的就是計(jì)算成本的增加。
這里通過一個循環(huán)來控制做弱邊緣連接的次數(shù)。
來看一下弱邊緣連接改為五次的效果,可以看到效果比之前更好一點(diǎn)。
再來看一下不做高斯模糊的效果,可以看到有很多的噪點(diǎn):
最后來展示下所有的效果圖,分別是原圖,sobel,nms,canny后的結(jié)果:
參考模型到這里就介紹完畢了,之后就是用Verilog來實(shí)現(xiàn)它。
審核編輯:湯梓紅
-
圖像處理
+關(guān)注
關(guān)注
27文章
1329瀏覽量
58049 -
邊緣檢測
+關(guān)注
關(guān)注
0文章
94瀏覽量
18418 -
Canny
+關(guān)注
關(guān)注
0文章
14瀏覽量
9826 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86734
原文標(biāo)題:FPGA圖像處理--Canny邊緣檢測(二)
文章出處:【微信號:FPGA開源工坊,微信公眾號:FPGA開源工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
DSP國產(chǎn)教學(xué)實(shí)驗(yàn)箱_實(shí)驗(yàn)案例_操作教程:5-11 邊緣檢測
基于Canny邊緣檢測算子的圖像檢索算法
canny算法的具體程序
【DragonBoard 410c試用體驗(yàn)】之OpenCV中canny算子邊緣檢測
關(guān)于canny算子邊緣檢測的問題
Canny邊緣檢測器的詳細(xì)介紹以及Pytorch實(shí)現(xiàn)
國產(chǎn)嵌入式實(shí)驗(yàn)箱操作教程_創(chuàng)龍教儀:5-12 邊緣檢測(LCD顯示)
基于Canny 法的紅外小目標(biāo)邊緣檢測方法
基于Canny邊緣檢測算子的圖像檢索算法
使用iVeia視覺套件進(jìn)行Canny邊緣檢測HLS IP
python中用Canny邊緣檢測和霍夫變實(shí)現(xiàn)車道線檢測方法

PCB 邊緣連接器:高速性能

評論