FPGA视频图像去雾,基于暗通道先验算法实现,纯verilog代码编写,提供23套工程源码和技术支持

目录


FPGA视频图像去雾,基于暗通道先验算法实现,纯verilog代码编写,提供23套工程源码和技术支持

1、前言

没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。
本文详细描述了FPGA实现图像去雾的实现设计方案,视频输入源有多种,一种是板载的HDMI输入接口,另一种是廉价的OV系列摄像头;FPGA采集到输入视频后先进行图像缓存操作,然后读出稳定连续的视频;然后再将视频送入图像去雾模块进行处理,图像去雾模块采用暗通道先验算法实现,利用verilog并行执行的特点对算法进行了加速;最后输出显示器以验证图像去雾算法在FPGA中加速的正确性;提供23套vivado2019.1版本的工程源码,详情如下:
在这里插入图片描述
这里说明一下提供的11套工程源码的作用和价值,如下:

工程源码1
使用开发板的FPGA型号为Xilinx–Artix7–35T;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Artix7系列FPGA开发板使用;

工程源码2
使用开发板的FPGA型号为Xilinx–Artix7–35T;输入源为HDMI视频,用笔记本电脑模拟视频源输入,HDMI解码方案为纯verilog代码方案,输入分辨率为1280x720@60Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Artix7系列FPGA开发板使用;

工程源码3
使用开发板的FPGA型号为Xilinx–Artix7–35T;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯Silcom9134芯片方案;适用于Xilinx–Artix7系列FPGA开发板使用;

工程源码4
使用开发板的FPGA型号为Xilinx–Artix7–35T;输入源为HDMI视频,用笔记本电脑模拟视频源输入,HDMI解码方案为Silcom9013芯片方案,输入分辨率为1920x1080@60Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1920x1080@60Hz;HDMI编码方式为纯Silcom9134芯片方案;适用于Xilinx–Artix7系列FPGA开发板使用;

工程源码5
使用开发板的FPGA型号为Xilinx–Artix7–100T;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Artix7系列FPGA开发板使用;

工程源码6
使用开发板的FPGA型号为Xilinx–Artix7–100T;输入源为HDMI视频,用笔记本电脑模拟视频源输入,HDMI解码方案为纯verilog代码+芯片驱动方案,所以输入分辨率可以支持到1920x1080@60Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1920x1080@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Artix7系列FPGA开发板使用;

工程源码7
使用开发板的FPGA型号为Xilinx–Kintex7–35T;输入源为ov7725摄像头,输入分辨率为640x480@60Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为640x480@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Kintex7系列FPGA开发板使用;

工程源码8
使用开发板的FPGA型号为Xilinx–Kintex7–35T;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Kintex7系列FPGA开发板使用;

工程源码9
使用开发板的FPGA型号为Xilinx–Kintex7–35T;输入源为HDMI视频,用笔记本电脑模拟视频源输入,HDMI解码方案为IT6802芯片方案,输入分辨率为1920x1080@60Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1920x1080@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Kintex7系列FPGA开发板使用;

工程源码10
使用开发板的FPGA型号为Xilinx–Zynq7010;输入源为ov7725摄像头,输入分辨率为640x480@60Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为640x480@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码11
使用开发板的FPGA型号为Xilinx–Zynq7010;输入源为ov7725摄像头,输入分辨率为640x480@60Hz;经过VDMA图像缓存后,视频送入图像去雾模块处理,最后以LCD接口输出,输出分辨率为800x480@60Hz;LCD编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码12
使用开发板的FPGA型号为Xilinx–Zynq7010;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码13
使用开发板的FPGA型号为Xilinx–Zynq7010;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过VDMA图像缓存后,视频送入图像去雾模块处理,最后以LCD接口输出,输出分辨率为800x480@60Hz;LCD编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码14
使用开发板的FPGA型号为Xilinx–Zynq7020;输入源为ov7725摄像头,输入分辨率为640x480@60Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为640x480@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码15
使用开发板的FPGA型号为Xilinx–Zynq7020;输入源为ov7725摄像头,输入分辨率为640x480@60Hz;经过VDMA图像缓存后,视频送入图像去雾模块处理,最后以LCD接口输出,输出分辨率为800x480@60Hz;LCD编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码16
使用开发板的FPGA型号为Xilinx–Zynq7020;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码17
使用开发板的FPGA型号为Xilinx–Zynq7020;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过VDMA图像缓存后,视频送入图像去雾模块处理,最后以LCD接口输出,输出分辨率为800x480@60Hz;LCD编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码18
使用开发板的FPGA型号为Xilinx–Zynq7100;输入源为ov7725摄像头,输入分辨率为640x480@60Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为640x480@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码19
使用开发板的FPGA型号为Xilinx–Zynq7100;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过FDMA图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯verilog代码方案;适用于Xilinx–Zynq7000系列FPGA开发板使用;

工程源码20
使用开发板的FPGA型号为Altera–Cyclone IV;输入源为ov7725摄像头,输入分辨率为640x480@60Hz;经过手写SDRAM图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为640x480@60Hz;HDMI编码方式为纯verilog代码方案;适用于Altera–Cyclone IV系列FPGA开发板使用;

工程源码21
使用开发板的FPGA型号为Altera–Cyclone IV;输入源为ov7725摄像头,输入分辨率为640x480@60Hz;经过手写SDRAM图像缓存后,视频送入图像去雾模块处理,最后以LCD接口输出,输出分辨率为800x480@60Hz;LCD编码方式为纯verilog代码方案;适用于Altera–Cyclone IV系列FPGA开发板使用;

工程源码22
使用开发板的FPGA型号为Altera–Cyclone IV;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过手写SDRAM图像缓存后,视频送入图像去雾模块处理,最后以HDMI接口输出,输出分辨率为1280x720@60Hz;HDMI编码方式为纯verilog代码方案;适用于Altera–Cyclone IV系列FPGA开发板使用;

工程源码23
使用开发板的FPGA型号为Altera–Cyclone IV;输入源为ov5640摄像头,输入分辨率为1280x720@30Hz;经过手写SDRAM图像缓存后,视频送入图像去雾模块处理,最后以LCD接口输出,输出分辨率为800x480@60Hz;LCD编码方式为纯verilog代码方案;适用于Altera–Cyclone IV系列FPGA开发板使用;

本文详细描述了FPGA基于暗通道先验算法实现图像去雾的设计方案,工程代码编译通过后上板调试验证,可直接项目移植,适用于在校学生做毕业设计、研究生项目开发,也适用于在职工程师做项目开发,可应用于医疗、军工等行业的数字成像和图像传输领域;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末尾,请耐心看到最后;

免责声明

本工程及其源码即有自己写的一部分,也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等),若大佬们觉得有所冒犯,请私信批评教育;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请谨慎使用。。。

2、相关方案推荐

已有的图像处理方案

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

紫光同创FPGA图像去雾方案

之前针对紫光同创FPGA出过一套图像去雾方案工程,感兴趣的可以去看看,链接如下:
直接点击前往

3、暗通道先验算法介绍

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

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

优点1:纯verilog代码实现,无任何IP,可在xilinx、altera、国产紫光同创、国产高云、国产易灵思、国产安路等FPGA平台间自由移植;
优点2:算法加速,利用了FPGA并行计算的特点,采用纯verilog代码实现;
优点3:提供了多达23套工程源码,针对不同型号FPGA和输入设备、输入接口做到了广泛的适应性;
优点4:设计精简,消耗FPGA逻辑资源很小,以工程源码1为例,图像去雾模块所占逻辑资源如下:
在这里插入图片描述
缺点1:算法还不够完美,去雾效果也不完美,还需持续优化;
缺点2:用于验证、学习、课题研究等可以,做实际产品还不理想;
缺点3:对输入的图像要求稍微有点高,那种色差太过严重的去雾效果不好,我测试的这个视频作为输入源去雾效果是可以的的,兄弟们可以把这个视频作为输入源:
直接点击前往

5、详细设计方案

设计原理框图

在这里插入图片描述

OV7725摄像头i2c配置和数据采集

不同的工程对应不同的视频输入类型,但输入视频的摄像头或者解码芯片都需要i2c配置何和数据采集,下面介绍OV7725摄像头的i2c配置和数据采集,OV7725的i2c配置及采集代码如下:
在这里插入图片描述

OV5640摄像头i2c配置和数据采集

不同的工程对应不同的视频输入类型,但输入视频的摄像头或者解码芯片都需要i2c配置何和数据采集,下面介绍OV5640摄像头的i2c配置和数据采集,ov5640i的2c配置及采集代码如下:
在这里插入图片描述

Silcom9011的i2c配置

不同的工程对应不同的视频输入类型,但输入视频的摄像头或者解码芯片都需要i2c配置何和数据采集,下面介绍输入HDMI解码芯片Silcom9011摄像头的i2c配置,经过解码后的HDMI不需要数据采集,直接输出RGB888视频,silcom9011的i2c配置代码如下:
在这里插入图片描述

IT6802的i2c配置

不同的工程对应不同的视频输入类型,但输入视频的摄像头或者解码芯片都需要i2c配置何和数据采集,下面介绍输入HDMI解码芯片IT6802摄像头的i2c配置,经过解码后的HDMI不需要数据采集,直接输出RGB888视频,IT6802的i2c配置代码如下:
在这里插入图片描述

纯verilog代码的HDMI解码模块

输入HDMI解码方式可以是芯片方案,也可以是FPGA内部逻辑搭建的verilog代码方案,目前Xilinx系列FPGA逻辑搭建的verilog代码方案最高只能解码1280x720@60Hz的输入视频,要想做高1920x1080@60Hz,还需要外加驱动增强芯片,
纯verilog代码的HDMI解码模块代码如下:
在这里插入图片描述

图像缓存

图像缓存的作用是使输入视频做跨时钟域处理,使得输入给图像去雾模块的视频时序是完美的;
有的工程采用FDMA图像缓存架构实现图像缓存,即将图像写入DDR3种缓存三帧后再读出来,FDMA图像缓存架构详情,请参考我之前关于FDMA的详细讲解:
直接点击前往
有的工程采用Xilinx官方的VDMA图像缓存方案;
Altera的工程因为使用的是SDRAM,所以缓存方案是手写的封装了FIFO接口的SDRAM控制器;

图像去雾模块详解

图像去雾模块顶层接口如下:

module defogging_top (
	input		  pixelclk     ,	//像素时钟
	input         reset_n      ,	//低电平复位
	input  [23:0] i_rgb        ,	//原始图像像素数据
	input		  i_hsync      ,	//原始图像行同步
	input		  i_vsync      ,	//原始图像场同步
	input		  i_de         ,	//原始图像数据有效
	input [7:0]   i_thre       ,	//大气光阈值,初始值为8'd26,数值越小,去雾效果越好
	output [23:0] o_defog_rgb  ,	//去雾图像像素数据
	output		  o_defog_hsync,	//去雾图像行同步
	output		  o_defog_vsync,	//去雾图像场同步    
	output		  o_defog_de    	//去雾图像数据有效          
);

图像去雾模块由纯verilog代码实现,采用暗通道先验算法理论,由3个模块顺序执行,3个模块内部并行执行,实现了FPGA加速算法的目的,分别由求RGB最小值模块、求折射率模块、图像去雾组成;
求RGB最小值的目的是实时的比较求出每个像素点RGB分量的最小值,也就是暗通道,该模块顶层接口如下:
在这里插入图片描述
求折射率的目的是输出暗通道最大值和折射率,该模块顶层接口如下:
该模块有个i_thre输入接口,该接口为阈值,初始值为26,数值越小,去雾效果越好,vivado工程中通过VIO动态控制;
在这里插入图片描述
图像去雾的目的是输出暗通道最大值和折射率,该模块顶层接口如下:
在这里插入图片描述

视频输出

视频输出方案有两种,一是HDMI输出,二是LCD输出;
HDMI输出方案可以采用纯verilog编码方案,也可采用芯片编码方案;
LCD输出采用纯verilog编码方案;
纯verilog的HDMI编码方案代码架构如下,最高支持1920x1080@60Hz;
在这里插入图片描述
芯片HDMI编码方案采用了Silcom9134;即silicon9134将输入的RGB视频编码为HDMI视频输出,silicon9134芯片需要i2c配置才能使用,请参考我之前关于silicon9011和silicon9134芯片驱动的详细讲解:
直接点击前往

Xilinx系列FPGA工程源码架构

Xilinx系列FPGA有两种,一种是纯FPGA,一种是Zynq,Zynq需要Block Design搭建的PL端逻辑+SDK搭建的软件代码;纯FPGA则不需要SDK工程;另外,Zynq系列的工程中,使用FDMA图像缓存架构的工程不需要驱动代码,使用VDMA图像缓存架构的工程需要驱动代码;

纯FPGA系列工程Block Design搭建基于FDMA的图像缓存架构如下:
以下截图以工程源码1为例,其他工程与之类似:
在这里插入图片描述
综合后的代码架构如下:
在这里插入图片描述

Zynq系列工程Block Design搭建基于FDMA或VDMA的图像缓存架构如下:
以下截图以工程源码10为例,其他工程与之类似:
在这里插入图片描述
综合后的代码架构如下:
在这里插入图片描述
使用FDMA图像缓存方案的工程,虽然不需要SDK配置,但FDMA的AXI4接口时钟由Zynq提供,所以需要运行SDK程序才能启动Zynq,从而为PL端逻辑提供时钟;由于不需要SDK配置,所以SDK软件代码就变得极度简单,只需运行一个“Hello World”即可,如下:
在这里插入图片描述
使用VDMA图像缓存方案的工程,则需要配置VDMA、动态时钟模块等,如下:

在这里插入图片描述

Altera系列FPGA工程源码架构

Altera系列FPGA工程源码架构如下,以下截图以工程源码20为例,其他工程与之类似:
在这里插入图片描述

6、工程源码1详解:Xilinx–Artix7-35T–OV5640输入版本

开发板FPGA型号:Xilinx–Artix7–xc7a35tfgg484-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:HDMI,纯verilog代码编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

7、工程源码2详解:Xilinx–Artix7-35T-HDMI输入版本

开发板FPGA型号:Xilinx–Artix7–xc7a35tfgg484-2;
开发环境:Vivado2019.1;
输入:HDMI,纯verilog代码解码方案,分辨率1280x720@60Hz,笔记本电脑模拟输入源;
输出:HDMI,纯verilog代码编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

8、工程源码3详解:Xilinx–Artix7-35T–OV5640输入–HDMI芯片驱动输出版本

开发板FPGA型号:Xilinx–Artix7–xc7a35tfgg484-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:HDMI,Silcom9134芯片编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

9、工程源码4详解:Xilinx–Artix7-35T-HDMI输入—HDMI芯片驱动输出版本

开发板FPGA型号:Xilinx–Artix7–xc7a35tfgg484-2;
开发环境:Vivado2019.1;
输入:HDMI,Silcom9011芯片解码方案,分辨率1920x1080@60Hz,笔记本电脑模拟输入源;
输出:HDMI,Silcom9134芯片编码方案,分辨率1920x1080@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

10、工程源码5详解:Xilinx–Artix7-100T–OV5640输入版本

开发板FPGA型号:Xilinx–Artix7–xc7a100tfgg484-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:HDMI,纯verilog代码编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

11、工程源码6详解:Xilinx–Artix7-100T–HDMI输入版本

开发板FPGA型号:Xilinx–Artix7–xc7a100tfgg484-2;
开发环境:Vivado2019.1;
输入:HDMI,纯verilog代码解码+芯片驱动增强方案,分辨率1920x1080@60Hz,笔记本电脑模拟输入源;
输出:HDMI,纯verilog代码编码方案,分辨率1920x1080@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

12、工程源码7详解:Xilinx–Kintex7–35T–OV7725输入版本

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:OV7725摄像头,分辨率640x480@60Hz;
输出:HDMI,纯verilog代码编码方案,分辨率640x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

13、工程源码8详解:Xilinx–Kintex7–35T–OV5640输入版本

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:HDMI,纯verilog代码编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

14、工程源码9详解:Xilinx–Kintex7–35T–HDMI输入版本

开发板FPGA型号:Xilinx–Kintex7–xc7k325tffg676-2;
开发环境:Vivado2019.1;
输入:HDMI,IT6802芯片解码方案,分辨率1920x1080@60Hz,笔记本电脑模拟输入源;
输出:HDMI,纯verilog代码编码方案,分辨率1920x1080@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

15、工程源码10详解:Xilinx–Zynq7010–OV7725输入–HDMI输出版本

开发板FPGA型号:Xilinx–Zynq7010–xc7z010clg400-2;
开发环境:Vivado2019.1;
输入:OV7725摄像头,分辨率640x480@60Hz;
输出:HDMI,纯verilog代码编码方案,分辨率640x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

16、工程源码11详解:Xilinx–Zynq7010–OV7725输入–LCD输出版本

开发板FPGA型号:Xilinx–Zynq7010–xc7z010clg400-2;
开发环境:Vivado2019.1;
输入:OV7725摄像头,分辨率640x480@60Hz;
输出:LCD,纯verilog代码编码方案,分辨率800x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

17、工程源码12详解:Xilinx–Zynq7010–OV5640输入–HDMI输出版本

开发板FPGA型号:Xilinx–Zynq7010–xc7z010clg400-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:HDMI,纯verilog代码编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

18、工程源码13详解:Xilinx–Zynq7010–OV5640输入–LCD输出版本

开发板FPGA型号:Xilinx–Zynq7010–xc7z010clg400-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:LCD,纯verilog代码编码方案,分辨率800x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

19、工程源码14详解:Xilinx–Zynq7020–OV7725输入–HDMI输出版本

开发板FPGA型号:Xilinx–Zynq7020–xc7z020clg400-2;
开发环境:Vivado2019.1;
输入:OV7725摄像头,分辨率640x480@60Hz;
输出:HDMI,纯verilog代码编码方案,分辨率640x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

20、工程源码15详解:Xilinx–Zynq7020–OV7725输入–LCD输出版本

开发板FPGA型号:Xilinx–Zynq7020–xc7z010clg400-2;
开发环境:Vivado2019.1;
输入:OV7725摄像头,分辨率640x480@60Hz;
输出:LCD,纯verilog代码编码方案,分辨率800x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

21、工程源码16详解:Xilinx–Zynq7020–OV5640输入–HDMI输出版本

开发板FPGA型号:Xilinx–Zynq7020–xc7z020clg400-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:HDMI,纯verilog代码编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

22、工程源码17详解:Xilinx–Zynq7020–OV5640输入–LCD输出版本

开发板FPGA型号:Xilinx–Zynq7010–xc7z020clg400-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:LCD,纯verilog代码编码方案,分辨率800x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

23、工程源码18详解:Xilinx–Zynq7100–OV7725输入版本

开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
开发环境:Vivado2019.1;
输入:OV7725摄像头,分辨率640x480@60Hz;
输出:HDMI,纯verilog代码编码方案,分辨率640x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

24、工程源码19详解:Xilinx–Zynq7100–OV5640输入–HDMI输出版本

开发板FPGA型号:Xilinx–Zynq7100–xc7z100ffg900-2;
开发环境:Vivado2019.1;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:HDMI,纯verilog代码编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Xilinx系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

25、工程源码20详解:Altera–Cyclone IV–OV7725输入–HDMI输出版本

开发板FPGA型号:Altera–Cyclone IV–EP4CE6F17C8;
开发环境:Quartus (Quartus Prime 18.1) ;
输入:OV7725摄像头,分辨率640x480@60Hz;
输出:HDMI,纯verilog代码编码方案,分辨率640x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Altera系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

26、工程源码21详解:Altera–Cyclone IV–OV7725输入–LCD输出版本

开发板FPGA型号:Altera–Cyclone IV–EP4CE6F17C8;
开发环境:Quartus (Quartus Prime 18.1) ;
输入:OV7725摄像头,分辨率640x480@60Hz;
输出:LCD,纯verilog代码编码方案,分辨率800x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Altera系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

27、工程源码22详解:Altera–Cyclone IV–OV5640输入–HDMI输出版本

开发板FPGA型号:Altera–Cyclone IV–EP4CE6F17C8;
开发环境:Quartus (Quartus Prime 18.1) ;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:HDMI,纯verilog代码编码方案,分辨率1280x720@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Altera系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

28、工程源码23详解:Altera–Cyclone IV–OV5640输入–LCD输出版本

开发板FPGA型号:Altera–Cyclone IV–EP4CE6F17C8;
开发环境:Quartus (Quartus Prime 18.1) ;
输入:OV5640摄像头,分辨率1280x720@30Hz;
输出:LCD,纯verilog代码编码方案,分辨率800x480@60Hz;
图像处理:暗通道先验算法的实现图像去雾
工程作用:掌握FPGA基于暗通道先验算法的实现图像去雾设计方法;
工程Block Design和工程代码架构请参考第5章节《Altera系列FPGA工程源码架构》小节内容;
工程的资源消耗和功耗如下:
在这里插入图片描述

29、工程移植说明

vivado版本不一致处理

1:如果你的vivado版本与本工程vivado版本一致,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则需要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
在这里插入图片描述
3:如果你的vivado版本高于本工程vivado版本,解决如下:
在这里插入图片描述
打开工程后会发现IP都被锁住了,如下:
在这里插入图片描述
此时需要升级IP,操作如下:
在这里插入图片描述
在这里插入图片描述

FPGA型号不一致处理

如果你的FPGA型号与我的不一致,则需要更改FPGA型号,操作如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改FPGA型号后还需要升级IP,升级IP的方法前面已经讲述了;

其他注意事项

1:由于每个板子的DDR不一定完全一样,所以MIG IP需要根据你自己的原理图进行配置,甚至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚约束,在xdc文件中修改即可;
3:纯FPGA移植到Zynq需要在工程中添加zynq软核;

30、上板调试验证

准备工作

需要如下器材设备:
1、FPGA开发板:可以自备,也可以订购本博主同款开发板;
2、输入源:OV5640或OV7725摄像头或笔记本电脑;
2、显示设备:HDMI连接线和显示器;

图像去雾视频演示

这里仅以工程源码9做输出演示如下,其他工程与之类似:

HDMI输入-图像去雾

31、福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送;
资料如下:获取方式:私,或者文章结尾的V名片;
在这里插入图片描述
此外,有很多朋友给本博主提了很多意见和建议,希望能丰富服务内容和选项,因为不同朋友的需求不一样,所以本博主还提供以下服务:
在这里插入图片描述

  • 14
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

9527华安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值