先讀為快,以結果為導向,本期介紹Canny圖像算法仿真驗證,后續將介紹canny算法原理與實現,歡迎持續關注,公眾號設置星標,不錯過每一次推送~
一、簡要說明
1.1 算法流程
Canny邊緣檢測是一種非常流行的邊緣檢測算法,是John Canny在1986年提出的。它是一個多階段的算法,即由多個步驟構成:圖像降噪、計算圖像梯度、非極大值抑制。
第一步,圖像降噪。我們知道梯度算子可以用于增強圖像,本質上是通過增強邊緣輪廓來實現的,也就是說是可以檢測到邊緣的。但是,它們受噪聲的影響都很大。那么,我們第一步就是想到要先去除噪聲,因為噪聲就是灰度變化很大的地方,所以容易被識別為偽邊緣。
第二步,計算圖像梯度,得到可能邊緣。我們在前面的關于《圖像梯度》文章中有所介紹,計算圖像梯度能夠得到圖像的邊緣,因為梯度是灰度變化明顯的地方,而邊緣也是灰度變化明顯的地方。當然這一步只能得到可能的邊緣。因為灰度變化的地方可能是邊緣,也可能不是邊緣。這一步就有了所有可能是邊緣的集合。
第三步,非極大值抑制。通常灰度變化的地方都比較集中,將局部范圍內的梯度方向上,灰度變化最大的保留下來,其它的不保留,這樣可以剔除掉一大部分的點。將有多個像素寬的邊緣變成一個單像素寬的邊緣。即“胖邊緣”變成“瘦邊緣”。
第四步,雙閾值篩選。通過非極大值抑制后,仍然有很多的可能邊緣點,進一步的設置一個雙閾值,即低閾值(low),高閾值(high)。灰度變化大于high的,設置為強邊緣像素,低于low的,剔除。在low和high之間的設置為弱邊緣。進一步判斷,如果其領域內有強邊緣像素,保留,如果沒有,剔除。
這樣做的目的是只保留強邊緣輪廓的話,有些邊緣可能不閉合,需要從滿足low和high之間的點進行補充,使得邊緣盡可能的閉合。
參考文章:https://blog.csdn.net/likezhaobin/article/details/6892176
1.2 驗證流程:
搭建一個視頻流Modelsim仿真,在基于FPGA視頻圖像算法開發過程中,最終目的是為了把攝像頭實時視頻數據經過一系列的圖像算法,通過顯示設備顯示出來;在開發過程中,我們不能總是在FPGA板子上在線調試,一個是耗時時間長;另一個是不容易找出錯誤,因此,有必要模擬一個視頻時序,用來驗證算法,并有效的利用Matlab工具把靜態圖片“打散”保存到txt文本里,供Modesim讀取,然后通過Matalb“復現”處理后的文本。
二、操作步驟
第一步:獲取圖像
截取len圖片,格式為bmp
這里使用上張len圖設置了一種分辨率 640X480,如果不是,這里可用畫圖軟件打開圖片可以修改分辨率。
第二步:Matlab產成圖像
my_image_gen.m 讀取的len.bmp的彩色圖像,matlab運行后,將使用matlab函數灰度化的灰度圖像數據寫進,image_data.txt。
第三步:Modelsim仿真路徑設置
仿真工程打開的正確方式:
方法1:保證仿真工程正常打開,解壓后文件需要 放在新建和原路徑一樣的路徑。
方法2:不需要新建相同路徑,需要文本打開并修改仿真工程里的 *.mpf 絕對路徑。
方法3:使用自動仿真腳本。
第四步:開始仿真
1) 打開modelsim 仿真工程,找到work
2)然后找到tb_image_canny功程名,右鍵 simmulate 到仿真頁面
3)最后點擊黃色按鍵,全速仿真,結束會自動停止。
第五步:matlab 查看圖像
上一步仿真結果會出現三個txt文件:canny_data.txt 、Gs_data_out.txt、sobel_data_out.txt
直接運行my_image_show.m 即可
責任編輯:haq
-
仿真
+關注
關注
51文章
4241瀏覽量
135324 -
圖像
+關注
關注
2文章
1092瀏覽量
41035 -
Verilog
+關注
關注
29文章
1366瀏覽量
111854
原文標題:基于Verilog的Canny圖像算法仿真
文章出處:【微信號:FPGA_Study,微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
自動駕駛規控算法驗證到底需要什么樣的場景仿真軟件?

利用VLIB在TMS320C64x/64x+上實現Canny邊緣檢測

評論