这个例子展示了如何为硬件设计建模像素流伽马校正。该模型将视觉HDL工具箱™伽马校正器块的结果与计算机视觉工具箱™全帧伽马块生成的结果进行比较。
这个例子模型提供了一个硬件兼容的算法。您可以使用Xilinx™Zynq™参考设计在板上实现该算法。看到基于zynq的硬件伽马校正基于Xilinx zynq硬件的Visi金宝appon HDL工具箱支持包.
计算机视觉工具箱产品模型的抽象层次很高。这些块和对象执行全帧处理,每次只对一帧图像进行操作。然而,FPGA或ASIC系统执行像素流处理,一次操作一个图像像素。这个例子模拟了同一模型中的全帧和像素流算法。
的GammaCorrectionHDL.slx系统如下图所示。
喂料线的颜色差异全画幅γ补偿和Pixel-Streamγ补偿子系统表示模型流分支上图像速率的变化。这种速率转换是因为像素流的发送时间与整个视频帧相同,因此它以更高的速率传输。
在这个例子中,伽马校正被用来校正暗图像。较暗的图像是通过输入视频源到腐败块。的视频源输出240p灰度视频,和腐败block应用了一个反伽马操作使源视频感知上更暗。然后,下游全画幅γ补偿块或Pixel-Streamγ补偿子系统从损坏的视频中删除以前的反伽马操作,以恢复源视频。
源视频的一帧,其损坏的版本和恢复的版本,从左到右显示在下面的图表中。
使用处理完整图像帧的块开发行为系统是一个很好的实践全画幅γ补偿块,然后再进行fpga目标设计。这样的行为模型有助于验证视频处理设计。可以作为后续针对FPGA验证算法实现的参考。具体来说,低PSNR值(峰值信噪比)块中的结果验证模型顶层的部分比较了全帧处理和像素流处理的结果。
的任务帧像素是将全帧图像转换为像素流。为了模拟在真实的硬件视频系统中发现的水平和垂直消隐周期的影响,主动图像被添加了非图像数据。有关流像素协议的详细信息,请参见流像素接口.的帧像素Block配置如下:
的数量的组件字段设置为1,用于灰度图像的输入,且视频格式视场为240p,与视频源匹配。
在这个例子中,Active Video区域对应的是来自上游的暗图像的240x320矩阵腐败块。另外六个参数,即,每行总像素,总视频线,开始积极行,结束积极行,门廊,后门廊指定将在活动视频的四周扩展多少非图像数据。有关更多信息,请参见帧像素块引用页面。
注意样本时间的视频源是由乘积决定的吗每行总像素和总视频线.
如下图所示Pixel-Streamγ补偿子系统仅包含一个伽马校正器块。
的伽马校正器块接受像素流,以及包含五个同步信号的总线帧像素块。它将同样的一组信号传递给下游像素帧块。这样的信号束和维护对于像素流处理是必要的。
作为一个同伴帧像素将完整的图像帧转换为像素流像素帧通过使用同步信号,将像素流反向转换为全帧。的输出像素帧块是一个完整图像的二维矩阵,就不需要在包含5个同步信号的总线上进一步进行。
的数量的组件场和视频格式Frame To Pixels和Pixels To Frame的字段分别设置为1和240p,以匹配视频源的格式。
当你运行模拟时,将会显示三张图片(参考“示例结构”一节中显示的图片):
的源图像图片来源子系统
黑影由腐败块
的HDL输出Pixel-Streamγ补偿子系统
四人的存在单位延迟在模型的顶层块是时间对齐的二维矩阵,以进行公平的比较。
在构建设计的流部分时PSNR值块连续地验证HDLOut结果与原来的全帧设计不符BehavioralOut.在模拟过程中,这个PSNR值块应该给正输出,表示输出图像来自全画幅γ补偿匹配从流处理中生成的图像Pixel-Streamγ补偿模型。
该示例允许您使用不同的伽玛值进行实验,以检查它们对伽玛和反伽玛操作的影响。具体来说,是一个工作区变量在打开模型时创建一个初始值2.2。可以使用MATLAB命令行修改其值,如下所示:
gammaValue = 4
更新后的将传播到γ场的腐败块,全画幅γ补偿块,伽马校正器块内Pixel-Streamγ补偿子系统。关闭模型将清除从您的工作空间。
虽然Gamma操作在概念上与De-gamma相反,但将图像输入Gamma后再输入De-gamma(或先输入De-gamma再输入Gamma)并不一定能完美地恢复原始图像。预计扭曲。为了测量这个,在我们的例子中,是另一个PSNR值块放置在SourceImage和BehavioralOut.PSNR越高,引入的失真越小。理想情况下,如果HDL输出和源图像相同,则输出PSNR正.在我们的例子中,这只发生在= 1(即Gamma和De-gamma块都通过源图像)。
我们也可以使用伽玛来破坏源图像,使其更亮,然后进行反伽玛校正以恢复图像。
要检查和生成本例中引用的HDL代码,您必须拥有HDL Coder™许可。
要生成HDL代码,使用以下命令:
makehdl (“GammaCorrectionHDL / Pixel-Streamγ补偿”)
函数中使用的查找表的实现伽马校正器, LUTRegisterResetType属性被设置为none。要访问此属性,请右击伽马校正器块内Pixel-Streamγ补偿,并导航到HDL Coder -> HDL块属性…
使用以下命令生成测试工作台:
makehdltb (“GammaCorrectionHDL / Pixel-Streamγ补偿”)