基于FPGA的RGB2YUV、圖像增強、YUV2RGBIP仿真實例 騰訊鏈接:https://share.weiyun.com/5GQyKKc 百度網盤鏈接:https://pan.baidu.com/s/1M7PLzRs-yMJv7NFJE8GVAw 提取碼:qr0t ![]() Xilinx的Vivado中集成的圖像增強(Image Enhancement)IP可以有效降低圖像噪聲并增強圖像邊緣。該IP使用了2D濾波方式,可以在達到更好的圖像噪聲抑制同時,保留并增強圖像邊緣。 如圖所示,對于一個比較經典的圖像前端處理,圖像增強常常也是一個必不可少的步驟。在我們這個實例中,我們需要設計一個右側圖示紅圈內的圖像流處理。即RGB toYCbCr模塊、圖像增強模塊、YCbCrto RGB模塊,這3個模塊都有可用的IP核。
![]() 圖像增強IP的功能框圖如下所示。該IP輸入和輸出的圖像數據必須為YUV444或YUV422模式;待處理圖像進入IP后,首先需要多行緩存,然后分別通過降噪(Noise Reduction)模塊和邊緣檢測與增強(Edge Map Morphology和Edge Enhance)模塊。完成處理后的圖像再擬合在一塊,最后會通過可選的光環抑制(Anti-halo)和鋸齒消除(Anti-alias)模塊,完成最終圖像輸出。邊緣增強和噪聲抑制實際上是兩個完全相反的圖像處理方式,為了保證兩個模塊能夠更好的實現增強圖像的效果,在這個IP中,第一步做的是圖像的形態檢測(Edge Map Morphology),然后再根據這個結果,對圖像中需要降噪的部分和邊緣增強的部分分別處理。
![]() 圖像形態學檢測是整個圖像增強的第一步,它用于指示后續需要對圖像進行降噪或邊緣增強操作。圖像形態學檢測主要包括下面兩步: ①經過二維的FIR濾波器,從水平、垂直以及兩個對角共4個維度提取邊緣信息。 ②使用拉長、正交的結構單元和形態學處理,用于提供清晰的各個方向邊緣信息。 降噪處理是基于中心像素點以及特定的臨近像素點的濾波實現的。算法實現類似高斯的定向低通濾波。噪聲門限由IP核的設置決定。圖像形態檢測信息標定出的邊緣不會做任何的降噪處理。
![]() IP核設定的邊緣增強參數決定了邊緣增強的幅度。根據邊緣檢測形態信息,邊緣增強模塊對標記處的邊緣做拉普拉斯濾波,實現邊緣增強效果。
![]() 光環抑制(Anti-halo)和鋸齒消除(Anti-alias)模塊是可選的功能塊。前面進行噪聲抑制和邊緣增強后的圖像,可能存在圖像邊緣被放大或抑制的情況。光環抑制和鋸齒消除,是通過判斷每個新的像素值與原圖像的像素值以及鄰近8個像素值的比較,以判斷其是否需要進行相應的處理并實現圖像的優化。 如圖所示,原圖(左側)在圖像增強后可能出現光環現象(中間),那么經過光環抑制后圖像(右側)就能夠實現最優化。
![]() 使用at7_img_ex08\matlab文件夾下的Matlab源碼image_txt_generation.m產生作為FPGA仿真輸入的測試圖像數據,存儲在image_in_hex.txt中。FPGA仿真測試后,產生圖像增強數據存儲在FPGA_Enhenchment_Image.txt中,使用Matlab的draw_image_from_FPGA_result.m腳本則可以比對圖像增強前后的效果。
![]() Vivado的IP Catalog中,Video & Image Processing分類下,可以看到有很多可用的圖像處理IP核。我們需要用到的RGB toYCbCr、Image Enhancement和YCbCrto RGB這3個IP核,都在該分類下可以找到。
3.1 RGB toYCbCr IP配置![]() Feature配置頁面中,設置圖像位寬8bit,分辨率為640*480,YUV格式,輸出圖像取值范圍0~255即可。
![]() Custom配置頁面中,可以看到RGB toYCbCr轉換的基本公式參數。
![]() 配置頁面很簡單,設定好圖像位寬8bit,圖像分辨率640*480,圖像噪聲抑制(Image Noise Reduction)水平(取值0~255),圖像邊緣增強(Image Edge Enhancement)水平(取值0~1.0),以及可選的光環抑制(Halo Suppression)和鋸齒消除(Anti-Alias Filtering)。
![]() Feature配置頁面中,設置圖像位寬8bit,分辨率為640*480,YUV格式,輸出圖像取值范圍0~255即可。
![]() Custom配置頁面中,可以看到YCbCr to RGB轉換的基本公式參數。
4FPGA仿真![]() Vivado打開zstar_ex70工程,在Sources面板中,展開Simulation Sources à sim_1,將at7_image_enhance_sim.v文件設置為top module。點擊Flow Navigator面板的Simulation à Run Simulation打開仿真頁面,matlab產生的原始圖像數據image_in_hex.txt需要放置在at7.sim文件夾下,仿真測試結果位于at7_img_ex08\at7.sim\sim_1\behav文件夾下。 在設定Noise Threshold = 192,Enhancement Strength = 0.0,Halo Suppression = 0.125時,比對圖像如下。
![]() 在設定Noise Threshold = 192,Enhancement Strength = 0.125,Halo Suppression = 0.75時,比對圖像如下。
![]() 在設定Noise Threshold = 192,Enhancement Strength = 1.0,Halo Suppression = 0.75時,比對圖像如下。
![]() AT7_Xilinx開發板(USB3.0+LVDS)資料共享 騰訊鏈接:https://share.weiyun.com/5GQyKKc 百度網盤鏈接:https://pan.baidu.com/s/1M7PLzRs-yMJv7NFJE8GVAw 提取碼:qr0t |