本教程展示了如何使用Vision HDL Toolbox™块设计面向硬件的图像过滤器。它还使用计算机视觉工具箱™块。
Simulink®硬件视频处理模型的主要特点是:金宝app
流像素接口:块在视觉HDL工具箱中使用一个流式像素接口。串行处理对于硬件设计是有效的,因为存储像素数据以进行计算所需的内存更少。串行接口允许块独立操作的图像大小和格式,并使设计更弹性的视频定时错误。有关更多信息,请参见流像素接口.
用于生成HDL代码的子系统:从Vision HDL工具箱库中选择块,设计一个硬件友好的像素流视频处理模型。HDL代码生成的设计部分必须在单独的子系统中。
转换为基于帧的视频:为了验证,您可以显示基于框架的视频,或者将硬件兼容设计的结果与Simulink行为模型的输出进行比较。金宝appVision HDL Toolbox提供了一个块,允许您对设计的输出进行反序列化。
本教程使用Simulink模型模板开始。金宝app
单击Simulink金宝app按钮,或键入金宝app
在MATLAB®命令提示下。在Simulink起始页上,找到Vision H金宝appDL工具箱部分,然后单击基本模型模板。
模板将创建一个新模型,您可以自定义该模型。用新名称保存模型。
该模板包括包含240p视频样本的视频源块。每个像素都是标量单位8
表示强度的值。最佳实践是在放大到更大的图像大小之前,使用较小的帧大小来设计和调试您的设计,以便快速调试周期。您可以使用此240p源调试针对1080p视频的设计。
帧到像素块将帧视频转换为像素流和控制结构。此块提供针对HDL代码生成的子系统的输入,但它本身不支持HDL代码生成。金宝app
模板包含此块的一个实例。要使用标准视频格式进行模拟,请选择与输入源匹配的预定义视频填充格式。要使用自定义大小的图像进行模拟,请选择要用图像包围的非活动区域的大小。本教程使用标准的视频格式。
打开“帧到像素块”对话框以查看设置。源视频采用240p灰度格式。标量整数表示每个像素的强度值。要匹配输入视频,请设置部件数量到1,和视频格式240 p。
注意:视频源的采样时间必须与您在“帧到像素”块中选择的帧大小中的像素总数相匹配。将采样时间设置为每行像素总数×总行数. 在InitFcn
回调,模板创建一个工作区变量,totalPixels
,对于240p帧的采样时间。
设计一个针对HDL代码生成的子系统,修改HDL算法子系统。子系统的输入和输出端口使用前一节中描述的流式像素格式。打开HDL算法子系统来编辑它。
在Simuli金宝appnk库浏览器中,单击Vision HDL工具箱。您也可以通过键入visionhdllib公司
在MATLAB命令提示下。
选择一个图像处理块。本例使用图像滤波器来自筛选子库的块。您也可以通过键入视觉过滤器
在MATLAB命令提示下。将图像滤波块添加到HDL算法子系统并连接端口。
打开图像过滤块,做如下修改:
套滤波器系数到一(4,4)/16
实现4×4模糊操作。
套填充法到对称的
.
套行缓冲区大小2的幂次,可容纳所需的最大帧格式的活动行大小。该参数不影响仿真速度,所以在小测试图像仿真时不需要降低该参数。默认的2048支持1080p视频格式。
上数据类型选项卡,在数据类型,设置系数到固定值(0,1,4)
.
您可以在视觉上或数学上将您的hdl目标设计与行为模型进行比较,以验证硬件设计并监视量化错误。该模板包含一个行为模型子系统,具有基于框架的输入和输出端口。双击行为模型来编辑它。
对于本教程,添加二维FIR滤波器来自计算机视觉系统工具箱的块。此块一次过滤整个帧。
打开二维FIR滤波器块,并进行以下更改以匹配Vision HDL工具箱中图像滤波器块的配置:
套系数到一(4,4)/16
实现4×4模糊操作。
套填充选项到对称的
.
上数据类型选项卡,在数据类型,设置系数到fixdt (0、2、4)
.
使用模板中包含的像素到帧块反序列化要显示的数据。
打开像素到帧块。设置图像尺寸属性以匹配输入视频和在“帧到像素”块中指定的设置。在本教程中部件数量设置为1并且视频格式设置为240p。块将输出像素流和控制信号转换回表示帧的矩阵。
使用模板中包含的视频查看器块来直观地比较输出帧。的瓦利杜特
将像素信号连接到帧块上启用
查看器的端口。运行模型以显示结果。
一旦你的设计在模拟中运行,你可以使用HDL编码器™ 为HDL算法子系统生成HDL代码。见从Simulink生成HDL代码金宝app.