基于FPGA的图像直方图实时显示

2019-07-16 05:47:00 来源:EEChina
标签:

 

 
 
1系统概述
如图所示,这是整个视频采集系统的原理框图。 
 
 
上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。在初始化配置完成后,CMOS Sensor就能够持续输出标准RGB的视频数据流,FPGA通过对其同步信号,如时钟、行频和场频进行检测,从而从数据总线上实时的采集图像数据。MT9V034摄像头默认初始化数据就能输出正常的视频流,因此FPGA中实际上未作任何IIC初始化配置。
 
在FPGA内部,采集到的视频数据先通过一个FIFO,将原本25MHz频率下同步的数据流转换到50MHz的频率下。接着将这个数据再送入写DDR3缓存的异步FIFO中,这个FIFO中的数据一旦达到一定数量,就会通过AXI HP0总线写入DDR3中。与此同时,AXI HP0总线也会读取DDR3中缓存的图像数据,缓存到FIFO中,并最终送往LCD驱动模块进行显示。LCD驱动模块不断的发出读图像数据的请求,并驱动液晶显示器显示视频图像。
 
本实例除了前面提到对原始图像做DDR3缓存和显示,还会在原始图像缓存到DDR3之前,会对当前图像做直方图统计(以帧为单位做统计),统计后的直方图结果做归一化处理,便于后续液晶屏显示的直方图绘制,归一化的直方图结果取值范围是0~448,用256个10bit数据表示,存入双口RAM中。根据LCD显示模块的请求,从双口RAM读取实时图像的归一化直方图统计结果进行显示。最终在VGA液晶显示器上,可以看到左侧图像是原始的图像,右侧图像是经过归一化处理的直方图图像。
 
2直方图统计与归一化处理
工程文件夹at7_img_ex09\at7.srcs\sources_1\new下的histogram_calculation.v模块实现了图像的直方图统计与归一化处理。该模块有一个包含6个状态的状态机,以这个状态机为主轴的设计思路如下:
 
1上电初始状态STATE_IDLE,复位结束后即进入下一状态STATE_HIST。
 
2STATE_HIST状态下,进行实时图像的256级直方图统计,统计结果存放在寄存器histogram_cnt[255:0][19:0]中;图像接收信号i_image_ddr3_frame_end拉高时,切换到下一个状态STATE_FMAX。
 
3STATE_FMAX状态下,遍历一遍直方图统计结果寄存器histogram_cnt[255:0][19:0],找出最大值存放在寄存器max_histogramcnt[19:0]中;找到最大值后,切换到下一状态STATE_CNTC。
 
4STATE_CNTC状态下,直接转换到下一个状态STATE_OUTP;该状态主要为了清零计数器dlycnt。
 
5STATE_OUTP状态下,依次将256个直方图统计结果乘以448(=256+128+64),作为被除数,实际乘以448是通过3个移位结果进行累加实现。而max_histogramcnt[19:0]则作为除数,依次输出256个进行除法归一化后的直方图统计结果(o_image_hc_wren拉高时o_image_hc_wrdb[9:0]有效)。完成后进入下一状态STATE_WAIT。
 
6STATE_WAIT状态下,直接切换到STATE_IDLE。
 
在第5步进行的归一化处理,其基本思想是找到256个直方图统计结果的最大值,作为归一化的1(其他值都小于1);而其他结果都会以此为标准获取对应的归一化值;例如最大值若为40000,那么归一化后为1,某个统计结果是1000,那么归一化后是0.025;而实际我们需要将这个归一化后的直方图结果显示到液晶屏上,液晶屏上我们可以希望最高的直方图可以取448pix来显示,那么我们用448乘以归一化后的结果即可。
 
实际液晶屏是720p的驱动分辨率,最大可以给到720pix的高度,但是因为左侧的原始采集图像显示是640*480,为了显示美观,我们最好给出一个不超过480pix的最高直方图高度显示,而取448其实是考虑到它等于256+128+64,可以不消耗FPGA的乘法器资源,用移位累加来实现。
 
3 FPGA与Matlab协同仿真验证3.1 直方图统计与归一化结果仿真
在at7_img_ex09\at7.srcs\sources_1\new\testbench文件夹下,测试脚本sim_histogram_calculation.v用于对模块histogram_calculation.v进行仿真。
 
Vivado打开at7_img_ex09工程,在Sources面板中,展开Simulation Sources à sim_1,将sim_histogram_calculation.v文件设置为top module。在Flow Navigator面板中,展开Simulation,点击Run Simulation,弹出菜单中点击Run Behavioral Simulation进行仿真。
 
测试脚本中,读取at7_img_ex09\at7.sim文件夹下的640*480图像数据image_in_hex.txt(该文件由at7_img_ex09\matlab文件夹下的image_txt_generation.m产生,原始图像为test.bmp)。一组完整的图像数据经过histogram_calculation.v模块处理后,产生256个归一化直方图结果,写入到histogram_result.txt文本中(仿真测试结果位于project\at7_img_ex09\at7.sim\sim_1\behav文件夹下)。
 
使用at7_img_ex09\matlab文件夹下的draw_histogram_from_FPGA_result.m脚本,可以同时比对Matlab和FPGA统计的直方图输出结果。由于FPGA统计结果是一个归一化结果,所有和Matlab实际统计结果的数值可能不一样,但是从比对图上看,他们的趋势和分布完全一致。 
 
 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
FPGA近期频频刷“存在感”,它究竟有什么特别之处?

日前赛灵思推出最大容量FPGA芯片,阿里达摩院也发布了关于AI语音的FPGA芯片技术。FPGA芯片有何特别之处?它和当下最热的5G、AI领域又有何关系呢?据媒体报道,全球最大的可编程芯片(FPGA)厂

将Power指令集开源,IBM 是如何咸鱼翻身的?

这是一个漫长的过程,如果在十年前就这样做,情况可能会更好。但是,随着收购Red Hat后大量注入开源精神,IBM终于迈出了下一步,将其Power系列处理器的指令集体系结构开源。

快速掌握MIPI开发攻略,对接百度人工智能计算卡EdgeBoard

MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写,是MIPI联盟发起的为移动应⽤处理器制定的开放标准。

基于Verilog的UART接口电路设计
基于Verilog的UART接口电路设计

UART(UniversalAnynchrONousReceiverTransmitter,通用异步接收发送器)是广泛应用的串行数据传输协议之一,其应用范围遍及计算机外设、工控自动化等场合。

使用FPGA加速广告推荐算法的教程

在这篇文章里你可以了解到广告推荐算法 Wide and deep 模型的相关知识和搭建方法,还能了解到模型优化和评估的方式。我还为你准备了将模型部署到 FPGA 上做硬件加速的方法,希望对你有帮助。阅读这篇文章你可能需要 20 分钟的时间。

更多资讯
IBM宣布开源Power架构,国产处理器的另一个机会?
IBM宣布开源Power架构,国产处理器的另一个机会?

在正在进行的北美 OpenPOWER 峰会上,IBM 宣布开源 Power 芯片指令集架构(ISA,Instruction Set Architecture)。

继世界最大AI芯片诞生后,赛灵思发布最大FPGA芯片
继世界最大AI芯片诞生后,赛灵思发布最大FPGA芯片

赛灵思(Xilinx)今天宣布推出世界最大的FPGA芯片“Virtex UltraScale+ VU19P”,拥有多达350亿个晶体管,密度在同类产品中也是最大的,相比上代Virtex UltraScale VU440增大了1.6倍,而功耗降低了60%。

Xilinx推出拥有900万个系统逻辑单元的全球最大 FPGA

自适应和智能计算的全球领先企业赛灵思公司(Xilinx, Inc.,(NASDAQ:XLNX))今天宣布推出全球最大容量的 FPGA – Virtex UltraScale+ VU19P,从而进一步扩展了旗下 16 纳米 (nm) Virtex® UltraScale+™ 产品系列。

用FPGA如何实现小波变换?
用FPGA如何实现小波变换?

基于提升框架的小波变换方法,利用FPGA 可编程特性可实现多种小波变换。提升框架(LS :Lifting Scheme) 是由Sweldens 等人在近几年提出的一种小波变换方法,用它的框架结构能有效地计算DWT。

BittWare对Eideticom进行战略投资并拓宽基于FPGA的 NVMe加速器产品组合以将EDSFF纳入其中

Molex旗下的 BittWare 公司是一家采用FPGG技术的企业级 NVMe 存储平台领域领先供应商,宣布将对 Eideticom 进行战略投资并开展协作 – 后者在高增长的新兴计算存储市场上是广受认可的领导者。