特权同学玩转Zynq连载47——[ex66] MT9V034摄像头的图像直方图均衡处理
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之前,会对当前图像做直方图统计(以帧为单位做统计),统计后的直方图结果进行均衡运算,获得新的图像映射数据,然后用于紧随着的下一帧图像,这样,后续的每一帧图像都会基于前一帧图像的直方图均衡运算结果计算出新的图像流,这个图像流通过AXI HP1总线写入到DDR3中。AXI HP1总线也会根据LCD显示模块的请求,读取处理后的图像进行显示。最终在VGA液晶显示器上,可以看到左侧图像是原始的图像,右侧图像是经过直方图均衡运算处理后的图像。
2 图像直方图均衡处理
2.1 基本概念、原理与方法
直方图增强是调整图像直方图到一个预定的形状。例如,一些图像由于其灰度分布集中在较窄的取件,对比度很弱,图像细节看不清楚。此时,可采用图像灰度直方图均衡化处理,使得图像的对比度增大。加大图像动态范围,扩展图像对比度,使图像清晰,特征明显。
2.1.1 直方图的基本概念
图像直方图是用来表达一幅图像灰度级分布情况的统计表。它反映图像整体灰度值的分布情况,即图像的明暗情况和图像灰度级动态范围。
(1)直方图
直方图的全称为灰度统计直方图,是对图像每一灰度间隔内像素个数的统计,一般的间隔取为1。通常可用一个一维的离散函数来表示:
h