主要内容

直方图均衡化

这个例子展示了如何使用Vision HDL Toolbox™直方图库块来实现直方图均衡。

此示例模型提供了一种硬件兼容的算法。您可以从此算法生成HDL代码,并使用Xilinx™Zynq™参考设计在电路板上实现它。看到基于zynq硬件的直方图均衡化(基于Xilinx zynq硬件的Vis金宝appion HDL工具箱支持包)

简介

该模型展示了如何使用直方图库块通过应用直方图均衡化来增强图像的对比度。要了解更多信息,请参阅柱状图块引用页。在这个直方图均衡化示例中有三个组件。

  • 视频分区将一张大图像划分为4张不重叠的小图像,用于并行直方图计算。

  • HDLHistogram计算图像的累积直方图。

  • 均衡将均衡后的直方图应用于原始图像,生成对比度增强图像。

视频分区

有些情况下,直方图是在整个图像上计算的,或者是在代表图像部分的小兴趣区域上计算的。计算大图像的直方图非常耗时。本例中的视频分区组件将一个大图像划分为四个不重叠的小图像。直方图是同时计算四个小图像。每个输入帧被分割成4个120 * 160的小图像。每个小图像连接到一个“帧到像素”块,以生成像素流和相应的控制信号。

HDLHistogram

HDLHistogram子系统为HDL代码生成进行了优化。像素流的直方图是使用直方图块计算的。由于输入图像是灰度的,数据类型为uint8,因此输入像素被分组到256个箱子中。模型读取计算的直方图容器,一旦块断言readRdy信号。bin值被发送用于累积直方图计算。在读取所有256个bin值之后,模型断言binReset将所有箱子重置为零。然后将收集到的每个小图像的直方图相加,计算大图像的累积直方图。

直方图容器读取和重置的时序图如下图所示。

均衡

直方图均衡化可以应用于计算累积直方图的当前帧,也可以应用于之后的帧。如果应用于当前帧,则需要存储输入视频。本例将输入视频延迟一帧,并对原始视频执行统一均衡。然后将均衡后的视频与原始视频进行比较。

HDL代码生成

直方图生成的HDL代码使用Xilinx ISE在Virtex6 (XC6VLX240T-1FFG1156) FPGA上合成,电路运行频率约为190 MHz,足以实时处理数据。

要检查并生成此示例的HDL代码,您必须拥有HDL Coder™许可证。

您可以使用命令

makehdl (“HistogramEqualizationHDL / HDLHistogram”

makehdltb (“HistogramEqualizationHDL / HDLHistogram”

为HDL直方图子系统生成HDL代码和测试平台。注意:由于数据量大,生成测试台的时间较长。考虑在生成测试台之前减少模拟时间。