主要内容

加速Pixel-Streaming使用MATLAB编码器的设计

这个例子显示了如何加速pixel-stream视频处理算法在MATLAB®通过使用MATLAB编码器™。

你必须有一个MATLAB编码器运行这个例子的许可证。

加速度与MATLAB编码器可以模拟大型帧大小,如1080 p的视频,在实际的速度。使用这种加速工作流后调试算法使用一个小框架的大小。测试设计与一个小图像中显示在MATLAB Pixel-Streaming设计的例子。

MATLAB编码器的工作原理

从MATLAB代码MATLAB编码器生成C代码。代码生成加速模拟锁定大小和数据类型的变量。这个过程移除解释语言检查大小的开销和数据输入的每一行代码。这个例子同时编译试验台文件DesignAccelerationHDLTestBench.m和设计文件DesignAccelerationHDLDesign.m墨西哥人的功能,并使用生成的墨西哥人文件加快仿真速度。

该指令(或编译指示)% # codegen下面的函数签名表明你打算为MATLAB算法生成代码。添加这个指令指示MATLAB代码分析器来帮助您诊断和解决违规,将导致错误在代码生成。该指令% # codegen不影响解释模拟。

最佳实践

调试模拟大帧大小是不切实际的解释模式由于长时间模拟。然而,调试一个墨西哥人模拟挑战由于缺乏进入调试代码。

为了避免这些情况,开发和验证一个最佳实践是使用缩略图帧尺寸算法和试验台。在大多数情况下,HDL-targeted设计可以实现无帧大小的依赖。一旦你相信设计和试验台工作正确,然后增加试验台的外框尺寸,并使用MATLAB编码器加速模拟。增加帧大小,试验台只需要一些小的变化,可以看到通过比较DesignAccelerationHDLTestBench.mPixelStreamingDesignHDLTestBench.m在MATLAB Pixel-Streaming设计

试验台

在试验台DesignAccelerationHDLTestBench.m,videoIn对象从一个视频源读取每一帧灰度从RGB转换,和imresize函数插入这个框架从240便士至每股1080便士。这1080 p的图像是传递到frm2pix对象,该对象将完整图像帧的像素和控制结构。这个函数DesignAccelerationHDLDesign然后叫来处理一个像素(及其相关的控制结构)。在我们处理整个pixel-stream并收集输出流,pix2frm对象输出流转换为帧视频。的DesignAccelerationHDLViewer显示输出和原始图像的功能。

上面的工作流实现下面的行DesignAccelerationHDLTestBench.m

f = 1: numFrm frmFull = rgb2gray (readFrame (videoIn));%得到一个新的框架frmIn = imresize (frmFull [actLine actPixPerLine]);%扩大框架
[pixInVec, ctrlInVec] = frm2pix (frmIn);p = 1: numPixPerFrm pixOutVec (p), ctrlOutVec (p)] = DesignAccelerationHDLDesign (pixInVec (p), ctrlInVec (p));结束frmOut = pix2frm (pixOutVec ctrlOutVec);
DesignAccelerationHDLViewer (actPixPerLine actLine [frmIn uint8 (255 * frmOut)]);结束

的数据类型frmIn uint8而frmOut,边缘检测的输出,是合乎逻辑的。不同数据类型的矩阵不能连接,所以uint8 (255 * frmOut)地图逻辑错误和真实uint8(0)和uint8(255),分别。

这两个frm2pixpix2frm用于帧和pixel-stream域之间的转换。内循环执行pixel-stream处理。其余的试验台进行帧处理(例如,videoIn,定标器,查看器DesignAccelerationHDLViewer功能)。

在试验台终止之前,显示帧率来说明仿真速度。

不是所有的函数用于试验台支持C代码生成。金宝app对于那些不这样做,等抽搐,toc,,使用coder.extrinsic要申报的外在功能。外在功能被排除在墨西哥人一代。模拟执行他们的常规解释模式。

Pixel-Stream设计

中定义的函数DesignAccelerationHDLDesign.m接受一个像素流和五个控制信号,并返回一个修改后的像素流和控制信号。更多信息的流媒体系统对象像素协议使用的视觉HDL工具箱™,明白了流像素接口

在这个例子中,函数包含边缘检测器的系统对象。

这个例子是工作流的焦点,而不是算法设计本身。因此,设计代码非常简单。一旦你熟悉了工作流程,直接实现先进的视频算法利用系统提供的功能对象从视觉HDL工具箱。

创建墨西哥人文件和模拟设计

生成和墨西哥人文件执行。

codegen (“DesignAccelerationHDLTestBench”);DesignAccelerationHDLTestBench_mex;
代码生成成功。10帧已经在9.14秒内处理。平均帧速率为1.09帧/秒。

查看器显示原始视频左边,右边的输出。

HDL代码生成

输入以下命令,以创建一个新的高密度脂蛋白编码器™项目在临时文件夹中

编码器-hdlcoder不管是新DesignAccelerationProject

然后,添加文件DesignAccelerationHDLDesign.m项目的MATLAB函数DesignAccelerationHDLTestBench.mMATLAB试验台。

开始使用MATLAB对高密度脂蛋白的工作流(高密度脂蛋白编码器)在创建并填充MATLAB教程HDL编码项目。

启动工作流顾问。在工作流顾问,右键单击“代码生成”的一步。选择“运行选中的任务”从一开始就运行的所有步骤通过HDL代码生成。

检查生成的HDL代码在日志窗口中通过单击链接。