主要内容

直方图均衡化

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

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

介绍

该模型展示了如何利用直方图库块应用直方图均衡化来增强图像的对比度。要了解更多,请参阅柱状图块引用页面。在这个直方图均衡化例子中有三个组成部分。

  • 视频分区将一幅大图像分割成四幅不重叠的小图像进行并行直方图计算。

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

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

视频分区

有些用例是在整个图像上计算直方图,或者在表示图像部分的感兴趣的小区域上计算直方图。计算大图像的直方图非常耗时。本例中的视频分割组件将一幅大图像分割成四幅互不重叠的小图像。同时对四幅小图像进行直方图计算。每个输入帧被分割成4张120 × 160的小图像。每个小图像连接到一个帧到像素块来生成像素流和相应的控制信号。

HDLHistogram

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

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

均衡

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

HDL代码生成

利用Xilinx ISE在Virtex6 (XC6VLX240T-1FFG1156) FPGA上合成了由直方图生成的HDL代码,电路运行在190 MHz左右,足以实现数据的实时处理。

要检查和生成本示例的HDL代码,您必须具有HDL Coder™许可证。

您可以使用这些命令

makehdl (“HistogramEqualizationHDL / HDLHistogram”

makehdltb (“HistogramEqualizationHDL / HDLHistogram”

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