1、前言
本文詳細(xì)描述了FPGA實(shí)現(xiàn)圖像去霧的實(shí)現(xiàn)設(shè)計(jì)方案,采用暗通道先驗(yàn)算法實(shí)現(xiàn),并利用verilog并行執(zhí)行的特點(diǎn)對算法進(jìn)行了加速;
本設(shè)計(jì)以HDMI或者ov5640攝像頭作為輸入,經(jīng)過圖像去霧算法去霧,再經(jīng)過圖像緩存后輸出顯示器,以驗(yàn)證圖像去霧算法在FPGA中加速的正確性;
工程代碼編譯通過后上板調(diào)試驗(yàn)證,文章末尾有演示視頻,可直接項(xiàng)目移植,適用于在校學(xué)生、研究生,也適用于在職工程師做項(xiàng)目開發(fā),可應(yīng)用于醫(yī)療、軍工等行業(yè)的數(shù)字成像和圖像傳輸領(lǐng)域;
提供完整的、跑通的工程源碼和技術(shù)支持;
工程源碼和技術(shù)支持的獲取方式放在了文章末尾,請耐心看到最后。
2、目前我這里已有的圖像處理方案
目前我這里已有的圖像處理方案有很多,包括圖像縮放、圖像拼接、圖像旋轉(zhuǎn)、圖像識別跟蹤、圖像去霧等等
3、暗通道先驗(yàn)算法介紹
4、本圖像去霧模塊的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)1:純verilog代碼實(shí)現(xiàn),無任何IP,可在xilinx、altera、國產(chǎn)FPGA等平臺間自由移植;
優(yōu)點(diǎn)2:算法加速,利用了FPGA并行計(jì)算的特點(diǎn);
優(yōu)點(diǎn)3:提供了2套工程源碼,對接不同的視頻輸入接口;
缺點(diǎn)1:算法還不夠完美,去霧效果也不完美,個(gè)人覺得;待我優(yōu)化;
缺點(diǎn)2:用于驗(yàn)證、學(xué)習(xí)、課題等可以,做實(shí)際產(chǎn)品還不理想;
缺點(diǎn)3:對輸入的圖像要求稍微有點(diǎn)高,那種色差太過嚴(yán)重的去霧效果不好。
5、vivado工程詳解
工程代碼設(shè)計(jì)架構(gòu)如下:
輸入:
提供2套工程源碼,一套以HDMI作為視頻輸入源,另一套以ov5640攝像頭視頻輸入源;HDMI輸入分辨率為1920x1080@60Hz;ov5640攝像頭輸入分辨率為1280x720@30Hz;
HDMI接收和發(fā)送采用silicon9011和silicon9134芯片驅(qū)動,silicon9011和silicon9134芯片需要i2c配置才能使用
暗通道先驗(yàn)-圖像去霧:
由3個(gè)模塊順序執(zhí)行,3個(gè)模塊內(nèi)部并行執(zhí)行,實(shí)現(xiàn)了FPGA加速算法的目的,分別由求RGB最小值和求折射率以及圖像去霧組成;
求RGB最小值的目的是實(shí)時(shí)的比較求出每個(gè)像素點(diǎn)RGB分量的最小值,也就是暗通道,該模塊頂層接口如下:
求折射率的目的是輸出暗通道最大值和折射率,該模塊頂層接口如下:
圖像去霧的目的是輸出暗通道最大值和折射率,該模塊頂層接口如下:
三個(gè)模塊整合封裝后的圖像去霧模塊接口如下:
FDMA圖像緩存:
串口解析:
串口解析模塊的作用是用電腦發(fā)送命令控制圖像去霧模塊的輸入閾值,這個(gè)閾值的初始值為十進(jìn)制26,如果你在使用過程中覺得圖像去霧效果不好,可以將這個(gè)閾值調(diào)大或者調(diào)小,我這里通過串口調(diào)試助手設(shè)置了多種閾值進(jìn)行調(diào)整,如下:
比如要發(fā)送閾值為26,則發(fā)送控制命令如下:
aa bb 00 00 00 1a 1a cc dd;
要發(fā)送閾值為251,則發(fā)送控制命令如下:
aa bb 00 00 00 fb fb cc dd;
vivado工程1詳解
開發(fā)板FPGA:Xilinx xc7a35tfgg484-2
開發(fā)環(huán)境:vivado2019.1;
輸入:HDMI-1920x1080@60Hz;
輸出:HDMI-1920x1080@60Hz;
工程Block Design如下:
工程代碼架構(gòu)如下:
FPGA資源消耗和功耗預(yù)估如下:
vivado工程2詳解
開發(fā)板FPGA:Xilinx xc7a35tfgg484-2
開發(fā)環(huán)境:vivado2019.1;
輸入:ov5640攝像頭-1280x720@30Hz;
輸出:HDMI-1920x1080@60Hz;
工程Block Design如下:
工程代碼架構(gòu)如下:
FPGA資源消耗和功耗預(yù)估如下:
評論
查看更多