主要内容

伽马校正

这个例子展示了如何为硬件设计建模像素流伽马校正。该模型将来自Vision HDL Toolbox™Gamma校正块的结果与来自Computer Vision Toolbox™的全帧Gamma块生成的结果进行比较。

此示例模型提供了一种硬件兼容的算法。您可以使用Xilinx™Zynq™参考设计在电路板上实现此算法。看到Gamma校正与zynq硬件(基于Xilinx zynq硬件的Vis金宝appion HDL工具箱支持包)

实例结构

计算机视觉工具箱产品在一个高度抽象的层次上建模。块和对象执行全帧处理,每次操作一帧图像。然而,FPGA或ASIC系统执行像素流处理,每次操作一个图像像素。这个例子在同一个模型中模拟了全帧和像素流算法。

GammaCorrectionHDL.slx系统如下所示。

不同颜色的线条馈送全帧伽马补偿而且像素流伽马补偿子系统表示模型流分支上图像速率的变化。这种速率转换是因为像素流在与完整视频帧相同的时间内发送出去,因此它以更高的速率传输。

在本例中,Gamma校正用于校正暗图像。较暗的图像是通过输入视频源腐败块。的视频源输出一个240p灰度视频,和腐败block应用De-gamma操作使源视频感觉更暗。然后是下游全帧伽马补偿块或像素流伽马补偿子系统将先前的De-gamma操作从损坏的视频中移除以恢复源视频。

源视频的一帧,其损坏版本和恢复版本,从左到右显示在下面的图表中。

使用处理完整图像帧的块来开发行为系统是一个很好的实践全帧伽马补偿在继续进行fpga目标设计之前,请在本例中使用block。这样的行为模型有助于验证视频处理设计。后续可作为验证算法在FPGA上实现的参考。具体来说,是较低的PSNR值(峰值信噪比)块结果验证模型顶层的部分比较了全帧处理和像素流处理的结果。

帧到像素:生成像素流

的任务帧到像素是将全帧图像转换为像素流。为了模拟实际硬件视频系统中水平和垂直消隐周期的影响,使用非图像数据对活动图像进行增强。有关流像素协议的详细信息,请参见流媒体像素接口.的帧到像素Block的配置如下所示:

组件数量字段设置为1用于灰度图像输入,并且视频格式字段为240p,以匹配视频源。

在本例中,活动视频区域对应于来自上游的暗图像的240x320矩阵腐败块。另外六个参数,即,每行像素总数视频线路总数启动活动线路结束活动线路门廊,后门廊指定在活动视频的四个侧面增加多少非图像数据。有关更多信息,请参见帧到像素块引用页。

注意,采样时间的视频源是由乘积决定的每行像素总数而且视频线路总数

伽马校正

如下图所示像素流伽马补偿子系统只包含伽马校正器块。

伽马校正器块接收像素流,以及包含五个同步信号的总线帧到像素块。它将相同的一组信号传递给下游像素到帧块。这样的信号束和维护是像素流处理所必需的。

像素到帧:将像素流转换回全帧

作为一个伴侣帧到像素用于将完整图像帧转换为像素流的像素到帧Block则相反,利用同步信号将像素流转换回全帧。的输出像素到帧块是一个二维矩阵的完整图像,不需要在总线上进一步进行包含五个同步信号的处理。

组件数量场和视频格式Frame To Pixels和Pixels To Frame的字段分别设置为1和240p,以匹配视频源的格式。

图像查看器和结果验证

当您运行模拟时,将显示三张图像(参考“示例结构”一节中显示的图像):

  • 函数给出的源图像图片来源子系统

  • 产生的暗图像腐败

  • 的HDL输出所产生的像素流伽马补偿子系统

四个人的存在单位延迟块在模型的顶层是时间对齐的2-D矩阵,以进行公平的比较。

在构建设计的流部分时,PSNR值块连续验证HDLOut结果与原来的全框架设计相违背BehavioralOut.在模拟过程中,这PSNR值块应给予输出,表示输出图像来自全帧伽马补偿匹配流处理生成的图像像素流伽马补偿模型。

案例探究

该示例允许您对不同的Gamma值进行实验,以检查它们对Gamma和de Gamma操作的影响。具体来说,是一个工作区变量gammaValue美元在打开模型时创建初始值2.2。可以使用MATLAB命令行修改其值,如下所示:

gammaValue = 4

更新后的gammaValue美元将被传播到γ字段腐败块,全帧伽马补偿Block和伽马校正器块内像素流伽马补偿子系统。关闭模型可以清除gammaValue美元从你的工作空间。

尽管Gamma运算在概念上与De-gamma运算相反,但将图像提供给Gamma运算后再提供De-gamma运算(或者先提供De-gamma运算再提供Gamma运算)并不一定能完美地恢复原始图像。预计会出现扭曲。为了测量这个,在我们的例子中,另一个PSNR值块之间放置SourceImage而且BehavioralOut.PSNR越高,引入的失真就越少。理想情况下,如果HDL输出和源图像相同,PSNR输出.在我们的例子中,这种情况只发生在gammaValue美元等于1(即Gamma和de Gamma块都通过源图像)。

我们也可以使用Gamma来破坏源图像,使其更亮,然后使用De-gamma校正来恢复图像。

生成HDL代码并验证其行为

要检查和生成本例中引用的HDL代码,您必须拥有HDL Coder™许可证。

要生成HDL代码,使用以下命令:

makehdl ('GammaCorrectionHDL/像素流伽马补偿'

方法中使用的查找表,以推断RAM以实现查找表伽马校正器, LUTRegisterResetType属性设置为none。要访问此属性,请右键单击伽马校正器块内像素流伽马补偿,并导航到HDL编码器-> HDL块属性…

要生成测试平台,使用以下命令:

makehdltb ('GammaCorrectionHDL/像素流伽马补偿'