主要内容

边缘检测和图像叠加

这个例子展示了如何检测和高亮视频流中的对象边缘。将像素流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值来测试它们对覆盖图像质量的影响。具体来说,是两个工作空间变量thresholdValue美元α美元初始值分别为7和0.8,在打开模型时创建。你可以使用MATLAB命令行修改它们的值,如下所示:

thresholdValue = 8α= 0.5

更新后的thresholdValue美元将被传播到阈值场的边缘检测块内全画幅行为模型边缘检测器块内象素流HDL模型/边缘检测.的α美元值将被传播到Gain1块的全画幅行为模型像素流HDL模型/图像叠加的价值1α美元Gain2块。关闭模型将从工作区中清除这两个变量。

在本例中,的有效范围thresholdValue美元在0到256之间,包括。设置thresholdValue美元等于或大于257将触发一条消息“threshold”发生参数溢出.你设置的越高thresholdValue美元,则该示例在视频中找到的边的数量就越小。

的有效范围α美元在0和1之间,包括在内。将边缘检测输出图像与原始源图像的权值相加。根据下面的公式,叠加操作是一个线性插值。

覆盖图像= alpha*源图像+ (1-alpha)*边缘图像。

因此,当α= 0美元,叠加后的图像为边缘检测输出,当α= 1美元它变成了源图像。

生成HDL代码并验证其行为

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

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

makehdl (“EdgeDetectionAndOverlayHDL / Pixel-Stream HDL模型”);

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

makehdltb (“EdgeDetectionAndOverlayHDL / Pixel-Stream HDL模型”);