主要内容

仿真软件MATLAB视觉算法Hardware-Targ金宝appeted工作流模型

这个例子展示了如何创建一个hardware-targeted设计仿真软件MATLAB®®,它实现了相同的行为作为一个参考设计。金宝app

工作流

计算机视觉图像处理工具箱™和工具箱™函数操作框架,浮点数,整数数据并提供优秀的行为引用。硬件设计必须使用布尔或定点数据流。

这个例子展示了如何执行框架在MATLAB图像处理操作,然后执行相同的操作使用流数据在仿真软件模型。金宝app仿真软件金宝app模型转换的输入视频像素流hardware-friendly设计。相同的数据应用于硬件算法在MATLAB仿真软件和行为算法。金宝app仿真软件金宝app模型转换输出像素流帧和出口这些帧MATLAB对行为结果的比较。

这个例子的MATLAB部分加载输入视频中,行为的代码运行,运行仿真软件模型导入视频帧和导出修改视频帧,并比较行为结果与MATLAB仿真软件的输出帧。金宝app

视频源

创建一个视频文件读者对象视频文件导入MATLAB工作区。240 p视频源文件格式。创建一个视频播放器对象显示输入框,MATLAB仿真软件过滤坐标系,坐标系。金宝app

videoIn = vision.VideoFileReader (“文件名”,“rhinos.avi”,“ImageColorSpace”,“强度”,“VideoOutputDataType”,“uint8”);numFrm = 10;%活动框架尺寸actPixelsPerLine = 320;actLines = 240;%维度包括冲裁totalPixelsPerLine = 402;totalLines = 324;%为结果查看器观众= vision.DeployableVideoPlayer (“大小”,“自定义”,“CustomSize”,(3 * actPixelsPerLine actLines]);

边缘检测和覆盖

边缘检测在视频帧,然后覆盖这些边缘到原来的框架。叠加计算使用α值混合两个像素值。还使用的金宝app仿真软件模型edgeThresholdα这里指定的参数。

MATLAB边缘函数解释阈值作为双精度值从0到1。因此,表达了阈值的范围的一小部分uint8数据类型,从0到255。返回的像素值边缘函数逻辑数据类型。将这些像素值uint8类型叠加,乘以255。这个扩展操作转换逻辑1 - 255和逻辑0 0。

edgeThreshold = 8;α= 0.75;frmFull = uint8 (0 (actLines, actPixelsPerLine numFrm));frmRef = frmFull;f = 1: numFrm frmFull (:: f) = videoIn ();=边缘(边缘frmFull (:: f),“索贝尔”edgeThreshold / 255,“称号”);edges8 = 255 * uint8(边缘)*(1α);frmRef (:: f) =α* frmFull (:,:, f) + edges8;查看器([边缘edges8 frmRef (:,:, f)));结束

仿真软件仿真的设置金宝app

仿真软件金宝app模型加载视频输入到模型使用一个视频源块。配置模型的样本时间使用totPixPerFrame变量。这个值包括周围的不活跃的像素区域240 - 320帧。视频源样品时间是1每帧时间步,和流率是1 /像素的模型totPixPerFrame。设置长度的模拟simTime变量。

totPixPerFrame = totalPixelsPerLine * totalLines;simTime = (numFrm + 1) * totPixPerFrame;modelname =“VerifySLDesignAgainstMLReference”;open_system (modelname);set_param (modelname“SampleTimeColors”,“上”);set_param (modelname“SimulationCommand”,“更新”);set_param (modelname“开放”,“上”);

Hardware-Targeted算法

高密度脂蛋白算法子系统的目的是支持HDL代码生成。金宝app

子系统使用边缘检测器块找到边缘。块的输出流布尔像素值。这些值模型尺度uint8数据类型值叠加。

块返回检测到的边缘的像素流几行延迟后,由于内部线缓冲区和过滤逻辑。在执行覆盖之前,模型必须延迟输入流匹配边缘流。像素流对准器块执行校准使用的控制信号输出边缘流作为参考。这个块存储输入流在一个FIFO,直到检测到的边缘是可用的。

图像叠加子系统流的尺度α比和添加在一起。考虑到硬件实现,图像叠加子系统包括管道阶段后每一个乘法器和加法器。

这种边缘探测器设计的更多细节,请参阅边缘检测和图像叠加的例子。

open_system ([modelname“/ HDL算法”]);

运行仿真金宝app软件模型

运行仿真软件模型金宝app返回十帧与检测到的边缘覆盖。

sim卡(“VerifySLDesignAgainstMLReference”);

比较模型结果与M金宝appATLAB的结果

比较每个视频帧返回从仿真软件MATLAB行为代码返回的结果。金宝app图片看起来很相似但较小的像素值差异由于叠加混合。MATLAB叠加混合使用浮点值,和模型叠加混合使用定点值。金宝app这种比较计数在每一帧的像素值相差超过2和计算peak-signal-to-noise比率(PSNR)之间的帧。查看详细的差异在每一帧,取消最后两行循环。

f = 1: numFrm frmResult = frmOut.signals.values (:: f);查看器([frmFull (:: f) frmResult frmRef (:,:, f)));diff = frmRef (:: f) - frmResult;errcnt = (diff(:) > 2)总和;noisecheck = psnr (frmRef (:: f), frmResult);流([' \ nFrame # % d % d像素不同于行为结果(超过2)。PSNR = % 2.2 f \ n '),f, errcnt noisecheck);% bar3 (diff);% viewer ([frmResult frmRef (:: f) diff]);结束
帧# 1有2个像素不同于行为结果(超过2)。PSNR值= 48.33帧# 2 1像素,不同于行为结果(超过2)。PSNR值= 48.72帧# 3 1像素,不同于行为结果(超过2)。PSNR值= 48.80帧# 4 2像素,不同于行为结果(超过2)。PSNR值= 48.66帧# 5 2像素,不同于行为结果(超过2)。PSNR值= 48.70帧# 6 4像素,不同于行为结果(超过2)。PSNR值= 48.27帧# 7 2像素,不同于行为结果(超过2)。PSNR值= 48.88帧# 8 3像素,不同于行为结果(超过2)。PSNR值= 48.58帧# 9有3个像素不同于行为结果(超过2)。PSNR值= 48.55帧# 10 3像素不同于行为结果(超过2)。PSNR值= 48.53

生成HDL代码并验证其行为

一旦你的设计是在仿真工作,您可以使用HDL编码器™生成HDL代码和高密度脂蛋白的试验台算法子系统。

makehdl ([modelname“/ HDL算法”])%生成HDL代码makehdltb ([modelname“/ HDL算法”])%产生高密度脂蛋白试验台

另请参阅

|

相关的话题