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

評論