FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持

目录

  • 1、前言
  • 2、目前我这里已有的图像处理方案
  • 3、暗通道先验算法介绍
  • 4、本图像去雾模块的优缺点
  • 5、vivado工程详解
    • vivado工程1详解
    • vivado工程2详解
  • 6、上板调试验证
  • 7、福利:工程源码获取

1、前言

本文详细描述了FPGA实现图像去雾的实现设计方案,采用暗通道先验算法实现,并利用verilog并行执行的特点对算法进行了加速;
本设计以HDMI或者ov5640摄像头作为输入,经过图像去雾算法去雾,再经过图像缓存后输出显示器,以验证图像去雾算法在FPGA中加速的正确性;
工程代码编译通过后上板调试验证,文章末尾有演示视频,可直接项目移植,适用于在校学生、研究生,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后。

2、目前我这里已有的图像处理方案

目前我这里已有的图像处理方案有很多,包括图像缩放、图像拼接、图像旋转、图像识别跟踪、图像去雾等等,所有工程均在自己的板子上跑通验证过,保证代码的可靠性,对图像处理感兴趣或有项目需求的兄弟可以参考我的图像处理专栏,里面包含了上述工程源码的详细设计方案和验证视频演示:直接点击前往

3、暗通道先验算法介绍

暗通道先验算法介绍可以百度一下或者csdn或者知乎搜一下看看,专业的讲解我不擅长,我只擅长用fpga实现算法,专业讲原理的大佬比我讲得好,这里可以推荐一篇阅读量很大的文章:直接点击前往

4、本图像去雾模块的优缺点

优点1:纯verilog代码实现,无任何IP,可在xilinx、altera、国产FPGA等平台间自由移植;
优点2:算法加速,利用了FPGA并行计算的特点;
优点3:提供了2套工程源码,对接不同的视频输入接口;
缺点1:算法还不够完美,去雾效果也不完美,个人觉得;待我优化;
缺点2:用于验证、学习、课题等可以,做实际产品还不理想;
缺点3:对输入的图像要求稍微有点高,那种色差太过严重的去雾效果不好,我测试的这个视频作为输入源去雾效果是可以的的,兄弟们可以把这个视频作为输入源:点击查看来源

5、vivado工程详解

工程代码设计架构如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第1张图片
输入:
提供2套工程源码,一套以HDMI作为视频输入源,另一套以ov5640摄像头视频输入源;HDMI输入分辨率为1920x1080@60Hz;ov5640摄像头输入分辨率为1280x720@30Hz;
HDMI接收和发送采用silicon9011和silicon9134芯片驱动,silicon9011和silicon9134芯片需要i2c配置才能使用,请参考我之前关于silicon9011和silicon9134芯片驱动的详细讲解:直接点击前往
暗通道先验-图像去雾:
由3个模块顺序执行,3个模块内部并行执行,实现了FPGA加速算法的目的,分别由求RGB最小值和求折射率以及图像去雾组成;
求RGB最小值的目的是实时的比较求出每个像素点RGB分量的最小值,也就是暗通道,该模块顶层接口如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第2张图片
求折射率的目的是输出暗通道最大值和折射率,该模块顶层接口如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第3张图片
图像去雾的目的是输出暗通道最大值和折射率,该模块顶层接口如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第4张图片
三个模块整合封装后的图像去雾模块接口如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第5张图片
FDMA图像缓存:
我经常使用的图像缓存架构,请参考我之前关于FDMA的详细讲解:直接点击前往
串口解析:
我常用的板间通信控制方案,请参考我之前关于串口解析的详细讲解:直接点击前往
串口解析模块的作用是用电脑发送命令控制图像去雾模块的输入阈值,这个阈值的初始值为十进制26,如果你在使用过程中觉得图像去雾效果不好,可以将这个阈值调大或者调小,我这里通过串口调试助手设置了多种阈值进行调整,如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第6张图片
比如要发送阈值为26,则发送控制命令如下:
aa bb 00 00 00 1a 1a cc dd;
要发送阈值为251,则发送控制命令如下:
aa bb 00 00 00 fb fb cc dd;

vivado工程1详解

开发板FPGA:Xilinx xc7a35tfgg484-2
开发环境:vivado2019.1;
输入:HDMI-1920x1080@60Hz;
输出:HDMI-1920x1080@60Hz;
工程Block Design如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第7张图片
工程代码架构如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第8张图片
FPGA资源消耗和功耗预估如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第9张图片

vivado工程2详解

开发板FPGA:Xilinx xc7a35tfgg484-2
开发环境:vivado2019.1;
输入:ov5640摄像头-1280x720@30Hz;
输出:HDMI-1920x1080@60Hz;
工程Block Design如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第10张图片
工程代码架构如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第11张图片
FPGA资源消耗和功耗预估如下:
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第12张图片

6、上板调试验证

这里仅就HDMI输入的例程做输出演示:
静态展示:

动态视频演示:

图像去雾


测试视频中的原始带雾视频来源: 点击查看来源

7、福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送;
资料如下:获取方式:私,或者文章结尾的V名片;
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第13张图片
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第14张图片
FPGA实现图像去雾 基于暗通道先验算法 纯verilog代码加速 提供2套工程源码和技术支持_第15张图片

你可能感兴趣的:(菜鸟FPGA图像处理专题,fpga开发,图像去雾,暗通道,HDMI,ov5640)