FPGA实现图像对比度自动调整,提供2套工程源码和技术支持
创始人
2024-02-28 16:43:08

目录

  • 1.算法原理介绍
  • 2.HLS算法实现
  • 3.工程1介绍:zynq7100实现
  • 4.工程2介绍:Kintex7实现
  • 5.上板调试验证
  • 6.福利:工程源码获取

1.算法原理介绍

使用直方图均衡技术实现
使用直方图均衡技术将原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布,是一种常用的图像增强方法。
处理过程如下:
在这里插入图片描述
首先,我们需要将RGB888图像转化为YCrCb,统计当前Y分量直方图分布(应用于下一帧),并通过上一帧的统计数据均衡化当前 Y 分量,再转换回RGB888并输出。

2.HLS算法实现

算法采用HLS实现,处理流程部分代码如下:

#pragma HLS dataflowhls::AXIvideo2Mat(src_axi, img1);Cvt_RGB_to_YCrCb(img1, img2);dualAryEqualize(img2, img3, adj);Cvt_YCrCb_to_RGB(img3, img5);hls::Mat2AXIvideo(img5, dst_axi);

需要完整HLS代码的兄弟可以看完文章后再最后的福利章节得到源码的获取渠道;
HLS综合后的延时和逻辑资源占用统计如下:
在这里插入图片描述
HLS综合编译后,即可到处RTL得到HLS的IP核,可在vivado中直接调用;

3.工程1介绍:zynq7100实现

开发板:zynq7100开发板;
开发环境:vivado2019.1;
输入:OV5640摄像头,输入分辨率1280X720;
输出:HDMI,输出分辨率1280X720;
工程BD如下:
在这里插入图片描述
代码架构如下:
在这里插入图片描述
SDK主函数代码如下:

#include "I2C_16bit.h"
#include "xiicps.h"
#include "xil_io.h"
#include "xparameters.h"
#include "helai_vdma.h"
#include "xcontrastadj.h"
#include "xil_cache.h"XIicPs	Iic;
XContrastadj contrastadjadjInstance;void main(){I2C_config_init();XContrastadj_Initialize(&contrastadjadjInstance, XPAR_CONTRASTADJ_0_DEVICE_ID);XContrastadj_EnableAutoRestart(&contrastadjadjInstance);//XContrastadj_Set_adj(&contrastadjadjInstance, 50);XContrastadj_Start(&contrastadjadjInstance);helai_vdma();while(1);while(1){for(int adj=0; adj<=100; adj++){XContrastadj_Set_adj(&contrastadjadjInstance, adj);usleep(100000);}}}

可以在while(1)死循环里自动调整对比度;
也可以使用XContrastadj_Set_adj(&contrastadjadjInstance, 50)单独调整对比度,这里的入口参数 50即为自定义设置的对比度;

4.工程2介绍:Kintex7实现

开发板:Kintex7开发板;
开发环境:vivado2019.1;
输入:OV5640摄像头,输入分辨率1280X720;
输出:HDMI,输出分辨率1280X720;
工程BD如下:
在这里插入图片描述
代码架构如下:
在这里插入图片描述
SDK主函数代码如下:

#include 
#include "xgpio.h"
#include "oak_iic.h"
#include "unistd.h"
#include "helai_vdma.h"
#include "helai_color_back.h"
#include "xcontrastadj.h"XGpio_Config *XGpioCfg;
XGpio led_gpio;
XContrastadj contrastadjadjInstance;#define	AXI_GPIO_DEVICE_ID	XPAR_GPIO_0_DEVICE_IDint main(){XGpioCfg = XGpio_LookupConfig(AXI_GPIO_DEVICE_ID);XGpio_CfgInitialize(&led_gpio, XGpioCfg, XGpioCfg->BaseAddress);XGpio_SetDataDirection(&led_gpio, 1, 0);	//outputXGpio_DiscreteWrite(&led_gpio, 1, 0);oak_i2c_init(OV5640_IIC_BASEADDR, 1000000, 0x78>>1, IIC_REG_LEN16, IIC_DATA_LEN8);OV5640_Init(OV5640_IIC_BASEADDR,1280,720);XContrastadj_Initialize(&contrastadjadjInstance, XPAR_CONTRASTADJ_0_DEVICE_ID);XContrastadj_EnableAutoRestart(&contrastadjadjInstance);XContrastadj_Set_adj(&contrastadjadjInstance, 100);XContrastadj_Start(&contrastadjadjInstance);helai_vdma();while(1){usleep(500000);XGpio_DiscreteWrite(&led_gpio, 1, 1);usleep(500000);XGpio_DiscreteWrite(&led_gpio, 1, 0);}
}

5.上板调试验证

工程1开发板连接如下:
在这里插入图片描述
工程2开发板连接如下:
在这里插入图片描述

下面给出不同对比度的输出效果:
设置对比度为0时的输出效果如下:
在这里插入图片描述
可以看到画面除白色衣区域外其他部分较暗;
设置对比度为50时的输出效果如下:
在这里插入图片描述
可以看到画面整体变得更亮,白色衣服更白,左边的书籍堆放区也亮了很多;
设置对比度为100时的输出效果如下:
在这里插入图片描述
可以看到图像更加敞亮,甚至有点刺眼了。。。

6.福利:工程源码获取

福利:工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料如下:获取方式:私。
在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...