一、背景介紹
基于二值圖像的濾波算法即形態學濾波,在圖像目標采集的預處理中經常被使用到,針對不同的使用場景涉及到腐蝕、膨脹、開閉運算等處理。實際使用中對于不同的分辨率大小以及模板窗口大小,都要進行代碼的修改去適應不同的場景,特別是模板窗口比較大時,代碼改寫工作量就很大。因此,為了減少開發時間,本文實現了一個通用的算法IP,只需要修改模板窗口大小和工作模式(腐蝕or膨脹)參數即可,達到“自適應”目的,避免重復低效的工作。
二、形態學濾波原理
形態學濾波由腐蝕和膨脹兩種操作組成。首先,腐蝕(Erosion)的核心思想是圖像像素之間進行邏輯與運算,簡單來說,當一個包含當前像素的結構單元的像素值都為“1”時輸出待處理的的目標像素。
若采用窗口實現腐蝕操作,如圖2.1所示:
圖2.1腐蝕效果示意圖
腐蝕的作用:在形態學中的腐蝕可以去除圖像中的物體邊界點,清除圖像中比結構元素小的毛刺或者小突起,此外,結構元素越大,腐蝕的面積就越大。所以,可以使用腐蝕運算操作小區域的非目標區域區分。
膨脹的核心思想是像素之間進行邏輯或運算,也就是說每個輸入像素在輸出圖像中被替換成結構單元的形狀。當結構單元中任何一個像素的灰度值為“1”時,那么輸出窗口內的像素都為“1”,此時輸出待處理的目標像素。公式可以表示為:
若采用窗口實現膨脹操作,如圖2.2所示:
圖2.2膨脹效果示意圖
膨脹的作用:膨脹運算可以填充圖像中小于結構元素的孔洞以及圖像邊緣部分的一些小凹陷。對于目標區域腐蝕后再膨脹操作就是所謂的開運算。對所選定的目標區域先進行膨脹操作然后再進行腐蝕操作就是所謂的閉運算。
形態學濾波算法的FPGA硬件實現原理圖,如下圖所示。算法的輸入輸出接口信號采用標準的 VGA時序接口,即行場信號、數據和數據使能信號。算法模板輸入參數主要有兩個,Win_SIZE 表示窗口大小,WORK_MODE 表示工作在腐蝕還是膨脹模式,根據需要配置自己想要的模板大小和工作模式。
由于行緩存是基于RAM的實現的,本文設計的ram的規格大小是為2048x15,
深度2048 表示支持的最大分辨率,數據位寬為15bit表示支持的最大的模板窗口大小為15x15,也可以根據需要修改ram規格,其他邏輯不需要改動。
最后,需要開運算或者閉運算時,只需要把兩個算法IP串聯起來,配置不同的參數即可。
四、仿真驗證
本節主要搭建一個視頻流Modelsim仿真平臺,在基于FPGA視頻圖像算法開發過程中,有必要模擬一個視頻時序,用來驗證算法,并有效的利用Matlab工具把靜態圖片“打散”保存到txt文本里,供Modesim讀取,然后通過Matalb“復現”處理后的文本。
3x3腐蝕仿真結果:
9x9腐蝕仿真結果:
5x5膨脹仿真結果:
15x15膨脹仿真結果:
原文標題:基于Verilog的“自適應”形態學濾波算法實現
文章出處:【微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
FPGA
+關注
關注
1626文章
21677瀏覽量
601998 -
Verilog
+關注
關注
28文章
1345瀏覽量
109995 -
濾波算法
+關注
關注
2文章
88瀏覽量
13710
原文標題:基于Verilog的“自適應”形態學濾波算法實現
文章出處:【微信號:FPGA_Study,微信公眾號:FPGA自習室】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論