主要内容

在Simulink中设计HDL视频处理算法金宝app

这个例子展示了如何使用Vision HDL Toolbox™模块设计一个硬件为目标的图像过滤器。它还使用计算机视觉工具箱™块。

Simulink®中面向硬件的视频处理模型的主要特性是:金宝app

  • 流媒体像素接口:在视觉HDL工具箱块使用流像素接口。串行处理对于硬件设计是有效的,因为存储用于计算的像素数据所需的内存较少。串行接口允许块操作独立于图像大小和格式,并使设计更有弹性的视频定时错误。有关详细信息,请参见流媒体像素接口

  • 针对HDL代码生成的子系统:通过从Vision HDL工具箱库中选择块来设计一个硬件友好的像素流视频处理模型。设计中针对HDL代码生成的部分必须在一个单独的子系统中。

  • 转换为基于帧的视频:为了验证,您可以显示基于帧的视频,或者将硬件兼容设计的结果与Simulink行为模型的输出进行比较。金宝appVision HDL工具箱提供了一个块,允许您反序列化设计的输出。

开放模型模板

本教程使用Simulink模型模板来入门。金宝app

单击Simulink金宝app按钮,或者键入金宝app在MATLAB®命令提示符。在Simuli金宝appnk开始页面上,找到Vision HDL工具箱部分,并单击基本模型模板。

该模板创建一个您可以自定义的新模型。使用新名称保存模型。

导入数据

该模板包含一个视频源块,其中包含一个240p视频样本。每个像素都是一个标量uint8表示强度的值。最佳实践是使用小帧尺寸设计和调试设计,以便快速调试周期,然后再扩展到更大的图像尺寸。您可以使用这个240p源来调试针对1080p视频的设计。

序列化数据

“帧到像素”块将有帧的视频转换为像素流和控制结构。此块为针对HDL代码生成的子系统提供输入,但它本身不支持HDL代码生成。金宝app

该模板包含该块的一个实例。若要使用标准视频格式进行模拟,请选择与输入源匹配的预定义视频填充格式。若要使用自定义大小的图像进行模拟,请选择希望围绕图像的非活动区域的尺寸。本教程使用标准的视频格式。

打开“帧到像素”块对话框以查看设置。源视频为240p灰度格式。标量整数表示每个像素的强度值。若要匹配输入的视频,请设置组件数量到1,和视频格式240 p。

注意:视频源的采样时间必须与您在“帧到像素”块中选择的帧大小中的像素总数相匹配。设置采样时间为每行像素总数×共线.在InitFcn回调时,模板创建一个工作区变量,totalPixels,为240p帧的采样时间。

设计兼容hdl的模型

通过修改HDL算法子系统,设计一个针对HDL代码生成的子系统。子系统的输入和输出端口使用上一节中描述的流像素格式。打开HDL算法子系统来编辑它。

在Simuli金宝appnk Library浏览器中,单击Vision HDL工具箱。您也可以通过键入打开这个库visionhdllib在MATLAB命令提示符。

选择一个图像处理块。本例使用图像滤波块从过滤子库。您也可以通过键入来访问这个库visionhdlfilter在MATLAB命令提示符。将Image Filter块添加到HDL算法子系统并连接端口。

打开图像过滤器块,并进行以下更改:

  • 滤波器系数(4, 4) / 16实现4×4模糊操作。

  • 填充方法对称的

  • 行缓冲区大小到2的幂,以容纳所需最大帧格式的活动行大小。该参数不影响模拟速度,因此在用较小的测试图像进行模拟时不需要降低。默认值为2048,可容纳1080p视频格式。

  • 数据类型选项卡,在数据类型,设置系数fixdt(0、1、4)

设计行为模型

您可以在视觉上或数学上比较以hdl为目标的设计与行为模型,以验证硬件设计并监控量化错误。该模板包括一个行为模型子系统,该子系统具有基于帧的输入和输出端口。双击行为模型来编辑它。

对于本教程,添加二维FIR滤波器(计算机视觉工具箱)块从计算机视觉系统工具箱。这个块一次过滤整个帧。

打开2-D FIR Filter块,并进行以下更改,以匹配Vision HDL工具箱中的Image Filter块的配置:

  • 系数(4, 4) / 16实现4×4模糊操作。

  • 填充选项对称的

  • 数据类型选项卡,在数据类型,设置系数fixdt(0、2、4)

反序列化过滤的像素流

使用模板中包含的“像素到帧”块反序列化显示的数据。

打开像素到帧块。设置图像尺寸属性以匹配输入视频和在“帧到像素”块中指定的设置。对于本教程,使用组件数量设置为1,视频格式设置为240p。该块将输出像素流和控制信号转换回表示帧的矩阵。

显示结果并与行为模型进行比较

使用模板中包含的视频查看器块来直观地比较输出帧。的validOut像素到帧块的信号连接到启用查看器端口。运行模型以显示结果。

生成HDL代码

一旦您的设计在模拟中工作,您就可以使用HDL Coder™为HDL算法子系统生成HDL代码。看到从Simulink生成HDL代码金宝app

相关的例子

更多关于