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