主要内容

基于zynq硬件的直方图均衡化

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

所需产品:下载188bet金宝搏

  • 金宝app仿真软件®

  • 视觉HDL工具箱

  • 计算机视觉工具箱

  • 高密度脂蛋白编码器™

  • Xilinx Zyn金宝appq平台的HDL编码器支持包

可选地,生成,编译和目标的Zynq ARM®软件生成模型:

  • 嵌入式编码器®

  • Xilinx Zynq平台嵌入金宝app式编码器支持包

简介

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

该算法对应于Vision HDL工具箱示例,直方图均衡化.通过zynq视觉硬金宝app件支持包,您可以获得一个硬件参考设计,允许在视觉系统上下文中轻松集成您的目标算法。

设置

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

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

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

有关更多信息,请参见步骤1。安装检查表

Pixel-Stream模型

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

本例中的算法执行直方图均衡来增强视频流的对比度。计算并累积整个视频帧的直方图。该设计将均衡应用于计算直方图的同一帧。在计算直方图时,帧缓冲区存储输入帧。当累积的直方图计算完成后,触发信号从帧缓冲区中释放存储的帧。

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

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

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

算法配置该算法除了对图像进行直方图均衡化处理外,还具有一定的控制功能。

  • pbBypass连接到板上的按钮以显示原始图像,不应用直方图均衡。

pbBypass在目标设计中,控制端口是一个纯硬件连接。该端口可以以任何所需的速率运行,包括像素时钟速率。

  • 领导连接到板上的LED,并被配置为定期切换以指示位流已正确加载。

  • errorLED连接到板上的LED,如果直方图均衡化算法的输入端提供了不支持的视频分辨率,则会打开。金宝app控件的“帧大小”参数,以获取金宝app所支持的视频分辨率金宝搏官方网站视频采集(软件界面)

该模型具有视频帧缓冲器块,它提供了在外部存储器中实现的帧缓冲区的简化仿真模型。的视频帧缓冲器块为像素格式配置YCbCr 4:2:2,视频分辨率为320年x240p.在目标设计中,帧缓冲连接将与所选Zynq平台上的外部存储器连接。

视频帧缓冲器块输入接口具有视频像素端口{Y, CbCr},对应像素控制总线端口{pixelCtrl}和帧缓冲触发器{pop}端口。在像素和控制总线端口上提供将存储在帧缓冲区中的视频流和相应的视频定时信号。帧缓冲器流行端口用于调度从帧缓冲区释放存储的视频帧。从帧缓冲区中释放帧是在直方图均衡算法子系统,并且对于单个时钟周期应该被断言为高。帧缓冲区一旦触发,将视频像素输出端口{Y, CbCr}上存储的帧与像素控制总线端口{pixelCtrl}上对应的视频定时信号释放。

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

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

瞄准算法

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

在为目标定位做准备时,通过调用设置Xilinx工具链hdlsetuptoolpath.例如:

> > hdlsetuptoolpath (“ToolName”“Xilinx Vivado”“路径”“C: \ Xilinx \ Vivado \ 2020.2 \ bin \ vivado.bat ');

执行hdlsetuptoolpath(高密度脂蛋白编码器)获取更多信息。

控件启动目标工作流直方图均衡算法子系统与选择HDL代码> HDL工作流顾问

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

  • 在步骤1.2中,选择YCbCr 4:2:2的像素格式的参考设计直方图均衡算法子系统。“源视频分辨率”设置为1080 p的高清电视

注意:如果以ZedBoard或ZC702为目标,该模型可能无法满足分辨率的应用时间限制1080 p的高清电视.如果使用ZedBoard或ZC702,将源视频分辨率设置为720 p的高清电视

  • 在步骤1.3中,将目标平台接口映射到设计的输入和输出端口。由于本例中使用的是帧缓冲接口,相应的端口直方图均衡算法子系统必须相应映射。

从算法子系统到帧缓冲区的视频流映射到帧缓冲控制器接口,并将视频流从帧缓冲区映射到算法子系统帧缓冲从机接口。帧缓冲区弹出信号也被映射为帧缓冲控制器接口。

关于目标平台接口表,映射YFromFrameBuf端口到帧缓冲从机接口,并选择Y的下拉菜单中Bit Range / Address / FPGA Pin列。同样,选择帧缓冲从机的接口CbCrFromFrameBuf而且ctrlFromFrameBuf港口,CbCr而且像素控制总线Bit Range / Address / FPGA Pin分别列。

映射YToFrameBufCbCrToFrameBufctrlToFrameBuf,popFrame端口到帧缓冲控制器接口,并选择YCbCr像素控制总线,框架触发的下拉菜单中Bit Range / Address / FPGA Pin分别列。

此外,映射pbBypass端口到按钮0,和犯错而且领导端口到led 0和1。

  • 步骤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上的预生成的位流来绕过此步骤。

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

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

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

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

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

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

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

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

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

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