这个例子展示了如何检测和高亮视频流中的对象边缘。将像素流Sobel边缘检测器块的行为、视频流对齐和叠加的结果与计算机视觉工具箱™中全帧块计算的相同算法进行比较,以验证其行为。
这个示例模型提供了一个硬件兼容的算法。您可以使用Xilinx™Zynq™参考设计在板上实现此算法。看到基于zynq硬件的视觉算法开发(基于Xilinx zynq硬件的Vis金宝appion HDL工具箱支持包).
的EdgeDetectionAndOverlayHDL.slx系统如下所示。
线条颜色的差异全画幅行为模型和Pixel-Stream HDL模型子系统表示模型流分支上图像速率的变化。这种速率转换是因为像素流与完整视频帧发送的时间相同,因此它以更高的速率传输。
下面的图表显示了全画幅行为模型子系统,采用基于框架的边缘检测块。
基于框架的边缘检测块不引入延迟,图像叠加是通过加权源图像和边缘检测输出图像,并以直接的方式将它们添加在一起。
下图从左到右分别显示源视频的一帧、边缘检测结果和叠加后的图像。
这是一个很好的实践,开发一个行为系统,使用块处理完整的图像帧全画幅行为模型在继续进行fpga目标设计之前。这样的行为模型有助于验证视频处理设计。为后续验证算法在FPGA上的实现提供参考。具体来说,PSNR值(峰值信噪比)块在模型的顶层比较全帧处理的结果和像素流处理的结果。
任务帧像素是将全帧图像转换为像素流。为了模拟实际硬件视频系统中水平和垂直消隐周期的影响,采用非图像数据对主动图像进行增强。有关流像素协议的更多信息,请参见流像素接口.的帧像素Block的配置如下所示:
的数量的组件字段设置为1表示灰度图像输入视频格式视场为240p,以匹配视频源。
在这个例子中,活动视频区域对应于来自上游的黑色图像的240x320矩阵腐败块。其他六个参数,即,每行总像素,总视频线,开始积极行,结束积极行,门廊,后门廊指定活动视频的四面将增加多少非图像数据。有关更多信息,请参见帧像素块引用页面。
需要注意的是视频源是由的乘积决定的每行总像素和总视频线.
的Pixel-Stream HDL模型子系统如下图所示。您可以从这个子系统生成HDL代码。
由于像素流处理的性质,不同于边缘检测块的全画幅行为模型,边缘检测器阻塞将引入延迟。延迟阻止我们直接加权和添加两个图像来获得重叠的图像。为了解决这个问题像素流对准器块用于在求和之前同步两个像素流。
要正确使用此块,refPixel和refCtrl必须连接到与延迟像素流相关联的像素和控制总线。在我们的示例中,由于边缘检测器,像素流从边缘检测器就会被延迟。因此,refPixel和refCtrl的上游来源是控件的Edge和ctrl输出边缘检测器.
作为…的伴侣帧像素将一个完整的图像帧转换为像素流像素帧块,相反地,通过使用同步信号将像素流转换回完整的帧。的输出像素帧块是一个二维矩阵的全图像,不需要进一步进行总线上包含5个同步信号。
的数量的组件场和视频格式帧到像素和像素到帧的字段分别设置为1和240p,以匹配视频源的格式。
在构建设计的流媒体部分时,PSNR值块连续验证结果与原来的全框架设计。的延迟块在模型的顶层对二维矩阵进行时间对齐,以便进行公平比较。在模拟的过程中PSNR值块应该给正的输出,表示从全画幅行为模型匹配由流处理生成的图像Pixel-Stream HDL模型.
这个示例允许您使用不同的阈值和alpha值来测试它们对覆盖图像质量的影响。具体来说,是两个工作空间变量和初始值分别为7和0.8,在打开模型时创建。你可以使用MATLAB命令行修改它们的值,如下所示:
thresholdValue = 8α= 0.5
更新后的将被传播到阈值场的边缘检测块内全画幅行为模型和边缘检测器块内象素流HDL模型/边缘检测.的值将被传播到Gain1块的全画幅行为模型和像素流HDL模型/图像叠加的价值去Gain2块。关闭模型将从工作区中清除这两个变量。
在本例中,的有效范围在0到256之间,包括。设置等于或大于257将触发一条消息“threshold”发生参数溢出.你设置的越高,则该示例在视频中找到的边的数量就越小。
的有效范围在0和1之间,包括在内。将边缘检测输出图像与原始源图像的权值相加。根据下面的公式,叠加操作是一个线性插值。
覆盖图像= alpha*源图像+ (1-alpha)*边缘图像。
因此,当,叠加后的图像为边缘检测输出,当它变成了源图像。
要检查和生成本例中引用的HDL代码,您必须具有HDL Coder™许可证。
要生成HDL代码,使用以下命令:
makehdl (“EdgeDetectionAndOverlayHDL / Pixel-Stream HDL模型”);
要生成测试台,使用以下命令:
makehdltb (“EdgeDetectionAndOverlayHDL / Pixel-Stream HDL模型”);