主要内容

基于zynq硬件的双边滤波

这个例子展示了如何使用Vision HDL工具箱™支持包针对基于Xilinx®Zynq硬件的双边过滤算法。金宝app

设置先决条件

方法中详细介绍的算法开发工作流基于zynq硬件的视觉算法开发的例子。如果您还没有这样做,请通过该示例来更好地理解所需的工作流。

这个算法是基于视觉HDL工具箱的例子,使用双边滤波生成卡通图像使用zynq视觉硬件金宝app支持包,您可以获得一个硬件参考设计,允许在视觉系统上下文中轻松集成您的目标算法。

如果你还没有这样做,运行引导安装向导部分的Zynq支持包安装。金宝app在安装此支持包时,您可能已经完成了此步骤。金宝app

关于MATLAB首页选项卡,在环境部份将来发布,点击外接程序>管理外接程序.定位基于Xilinx zynq硬件的Vis金宝appion HDL工具箱支持包,并单击设置

引导的设置向导执行许多初始设置步骤,并确认目标可以引导,主机和目标可以通信。

有关更多信息,请参见视觉硬件设置

Pixel-Stream模型

该模型提供了针对HDL的算法的像素流实现。而不是工作在完整的图像上,HDL-ready算法工作在像素流接口上。此模型使用图像大小块,允许源视频帧调整大小,以获得更好的模拟性能。或者,您可能希望对视频帧进行裁剪。阴影区域中的块转换为像素流信号,为目标定位做准备。

open_system (“vzBilateral_PixelStream”)

视频源本例的源视频来自来自多媒体文件块,它从多媒体文件或视频捕捉块,从连接到zynq硬件的HDMI源捕获实时视频帧。的左下角的变体选择图标上单击鼠标右键来配置源图片来源块,选择标签模式主动选择,并选择文件HW

对于这个算法,模型的配置如下所示:

  • RGB的像素格式。这个算法是写在RGB像素格式上工作,和来自多媒体文件而且视频捕捉块被配置为以这种格式传送视频帧。其他支持的像金宝app素格式为YCbCr 4:2:2和Y。

算法配置该算法除了对图像进行双边滤波处理外,还具有一定的控制功能。

  • cGradientThresh是用于调整梯度阈值的配置选项。

  • cOverlayColor是用于调整边缘颜色的配置选项。

  • pbEdgeOnly连接到板上的按钮以显示边缘结果而不显示原始图像。

目标后,cGradientThresh而且cOverlayColor参数是可控的,从Simulink模型通过金宝app外部模式目标硬件执行。pbEdgeOnly在目标设计中,控制端口是一个纯硬件连接。该端口可以以任何所需的速率运行,包括像素时钟速率。

然而,cGradientThresh而且cOverlayColor值由嵌入式处理器(或中主机)控制外部模式目标硬件模式)。因为主机和嵌入式CPU都不能以像素时钟速率更新这些控件,所以需要一个与帧速率相同的速率。附加到这些控件的常量块的采样时间设置为在frameSampleTime

关于模拟输出有两点需要注意:

1.在模拟输出的第一帧期间,视频显示范围显示一个黑色图像。此条件表示没有可用的图像数据。这种行为是因为像素流算法的输出在显示之前必须进行缓冲以形成一个完整的帧。

2.在模拟的第二帧期间,对于像素流输出的视频显示范围是不正确的cGradientThresh参数值为您配置的Simulink模型。金宝app这种差异是因为算法使用初始值cGradientThresh0的值。当你使用率转换中配置的块单位延迟模式下,输入值仅在输入速率的完整采样周期后登记在输出。在这种情况下,输入速率对应于一个视频帧。在这个初始转换期间,块将输出初始条件(值为0)。这些块被要求确保子系统内所有块的单速率,这对于HDL代码生成是必需的。有关更多信息,请参见率转换(金宝app模型)(金宝app模型)。

您可以选择在没有硬件的情况下运行此模拟。若要修改模拟性能的帧大小,请更改帧大小的价值图像调整大小,图像帧到像素,图像像素到帧块。帧大小越小,模拟运行的速度就越快。最小帧尺寸为240p。

瞄准算法

对像素流算法仿真满意后,可以将像素流算法定位到Zynq板上的FPGA上。

控件启动目标工作流双边滤波算法子系统与选择HDL代码> HDL工作流顾问

  • 在步骤1.1中选择IP核生成工作流并从列表中选择您的目标平台。

  • 在步骤1.2中,选择RGB的像素格式的参考设计双边滤波算法子系统。将HW用户逻辑的其他端口映射到可用的硬件接口。在本例中,使用mappbEdgeOnly按0按钮。同样,地图cGradientThresh而且cOverlayColor到AXI4-Lite软件控制。

  • 步骤2通过做一些设计检查来为生成设计做准备。

  • 步骤3生成IP核的HDL代码。

  • 步骤4将新生成的IP核集成到更大的Vision Zynq参考设计中。

按顺序执行每个步骤以体验完整的工作流程,或者,如果您已经熟悉准备和HDL代码生成阶段,则右键单击左侧目录中的步骤4.1并选择运行到选定的任务

  • 在步骤4.2中,工作流生成一个目标硬件接口模型,如果已经安装了Embedded Coder Zynq支持包,则生成一个Zynq软件接口模型。金宝app点击运行此任务按钮,使用默认设置。

步骤4.3和4.4

工作流的其余部分为FPGA生成位流,将其下载到目标,并重新启动电路板。

因为这个过程可能需要20-40分钟,所以您可以选择通过使用本例中随产品一起发布并在设置期间放置在SDCard上的预生成的位流来绕过此步骤。

注意:此位流是在HDMI像素时钟限制为148.5 MHz的情况下生成的,以实现每秒60帧的1080p HDTV的最大分辨率。要在更高分辨率的Zynq硬件上运行本例,请从步骤1.2中的下拉列表中选择Source Video resolution值。

要使用这个预生成的位流,执行以下命令:

>> vz = visionzynq();> > changeFPGAImage (vz“visionzynq-zedboard-hdmicam-bilateral_filter.bit”);

要在另一个平台上使用比特流,请将“zedboard”替换为平台名称。

或者,您可以继续执行步骤4.3和4.4。

使用从HDL工作流顾问生成的模型

步骤4.2生成了两个或四个模型,取决于是否安装了Embedded Coder:一个“目标硬件接口”模型和相关的库模型,一个“软件接口”模型和相关的库模型。“目标硬件接口”模型可用于控制来自Simulink模型的参考设计,无需嵌入式Coder。金宝app当Embedded Coder和Zynq (Embedded 金宝appCoder)支持包被安装时,“软件接口”模型支持针对Zynq的完整软件,支持外部模式模拟、处理器在环和完全部署。

创建库模型是为了将对硬件生成模型的任何更改传播到现有的任何自定义目标硬件仿真或软件接口模型。

目标硬件接口模型:在此模型中,您可以调整参考设计的配置以及读取或驱动硬件用户逻辑的控制端口。当设计在目标上运行时,这些配置更改会影响设计。您还可以显示从目标设备捕获的视频。

软件接口模型:在此模型中,您可以在外部模式下运行以控制参考设计的配置,并读取或驱动连接到axis - lite寄存器的硬件用户逻辑的任何控制端口。当设计在目标上运行时,这些配置更改会影响设计。您可以使用这个模型来全面部署软件设计。(此模型仅在安装Embedded Coder和Embedded Coder Zynq支持包时生成。)金宝app