过滤器的多像素视频流

这个例子显示了如何设计一个多像素输入视频流进行操作的过滤器。使用多像素流进行处理高分辨率或高帧速率视频用相同的合成的时钟频率作为单像素流接口。多像素流也提高仿真速度和吞吐量,因为更少的迭代都需要处理每个帧,同时保持流接口的硬件的好处。

示例模型具有三个子系统,其中每个执行相同的算法:

  • SinglePixelGaussianEdge:使用图像过滤器和边缘检测块上的单个像素流进行操作。该子系统显示了如何单像素的速率和接口流式比较多像素设计。

  • MultiPixelGaussianEdge:使用图像过滤器和边缘检测块上的多像素流进行操作。该子系统展示了如何使用与库块的多像素接口。

  • MultiPixelCustomGaussianEdge:使用行缓冲器块来构建一个高斯滤波器和Sobel边缘检测为多像素流。该子系统展示了如何使用多像素设计在线缓冲器输出。

处理的多像素的视频流允许在不相应地增加时钟频率来实现更高的帧速率。每个子系统可以实现在Xilinx ZC706板200MHz的时钟频率。在480p的视频流具有每行总像素X总视频线=每帧800×525个周期。与单个像素流可以处理200M /(800 * 525)=每秒475帧。在多像素子系统,4个像素在每个周期,从而降低了每行周期的数目为200。此装置处理的是与在时间上4个像素的多像素流进行操作,在200MHz,在480P流,1900帧可以每秒进行处理。如果分辨率是从480P增加至1080,每秒80帧可以在单个像素的情况下与每秒323帧用于在时间4个像素或每秒646帧用于一次8个像素来实现。

多像素流媒体使用库块

从通过设置框为像素块中的多像素流像素数48。默认值1返回标象素流与采样率每行总像素*总视频线比帧速率更快。这个比率显示红色的例子模型。两个多像素子系统使用具有多像素流像素数调成4。这种配置将返回在每个时钟周期的4个像素,并且具有的采样速率(每行总像素/ 4)*总视频线。低输出率,这是绿色在模型中,显示了可以通过一个因子4增加任一输入帧速率或分辨率,因此使用相同的时钟频率作为单个处理4次在同一帧周期内的许多像素像素的情况下。

SinglePixelGaussianEdgeMultiPixelGaussianEdge子系统计算使用图像过滤器和边缘检测块相同的结果。

MultiPixelGaussianEdge,块接受,并在每个时钟周期返回四个像素。您不必配置多像素流块,他们检测端口输入的内容。该pixelcontrol总线表示各组的四个像素的帧的有效性和位置。块缓冲[4X1]流以形成四个[KernelHeightXKernelWidth]仁,并且在并行计算4个卷积,得到[4X1]输出。

自定义的多像素算法

MultiPixelCustomGaussianEdge子系统使用行缓冲块,以实现自定义过滤算法。该子系统类似于如何库块内部实行多像素的内核操作。上述图像滤波和边缘检测模块采用了比这里显示更详细的优化。此实现显示了构建基于行缓冲块的输出定制的多像素算法的起点。

自定义过滤器和自定义边缘检测器使用行缓冲区块返回连续的[KernelHeightXNumberofPixels]地区。每个区域被传递到其使用缓冲和索引逻辑以形成像素×数量[该KernelIndexer子系统KernelHeightXKernelWidth]的滤波器内核。然后,每个内核被传递给一个单独的子系统FilterKernel以并行地执行卷积。

从行缓冲区输出格式仁

所述KernelIndexer子系统形式4 [5x5的]滤波器从行缓冲器块的2-d输出的内核。

该图显示了如何滤波器内核从[5×4]输出流中提取,对于在[4X1]输出所述第一像素为中心的内核。该第一内核包括从2个相邻的[5×4]行缓冲区的输出像素。

内核上在[4X1]输出的最后一个像素为中心还包括第三相邻[5x4的]输出。所以,以形成四个[5×5]粒,从三个子系统必须访问列[5x4的]矩阵。

所述KernelIndexer子系统使用电流[5×4]输入,并且存储两个[5×4]基质中使用寄存器能够通过shiftEnable。这种设计是类似与使用行缓冲区单个像素流上使用的抽头延迟线。该子系统然后访问跨各列的像素数据,以形成四个[5×5]内核。图像滤波器块使用此相同的逻辑内部时,块具有多像素的输入。块自动设计在编译时间,以任何支持的内核大小此逻辑。万博1manbetx

实现过滤器

由于输入多像素流是[4X1]载体,该过滤器必须在每个周期执行四项卷积,以保持与输入数据速度。有四个平行FilterKernel子系统各自执行相同的操作。所述[5×5]矩阵乘法被乘以平坦化输入矩阵,并且使用对于包含流水线乘法器每个子系统实现为[25×]载体。输出传递到加法器树。加法树又流水线和流水线延时被应用到pixelcontrol信号相匹配。四个FilterKernel子系统的结果随后被连接成[4X1]输出向量。

实施边缘探测器

为了匹配边缘检测器块的算法,此自定义边缘检测器使用[3×3]内核的大小。比较这KernelIndexer子系统为[3×3]边缘检测用[5×5]内核如上所述。该算法仍然必须从行缓冲器块的输出(包括内核的任一侧填充)访问三个相继矩阵。然而,该算法可以节省少列,以形成一个较小的滤波器内核。

延伸到大内核大小

对于[4X1]多像素流,所述KernelIndexer逻辑将类似于高达[11×11]的核尺寸。以该尺寸,填充像素的数目,(地板(11/2))= 5将在两个[11x4]重叠从行缓冲器返回矩阵。这个重叠意味着该算法将需要存放5 [5x4的]矩阵从行缓冲器,以形成在每个周期4 [11×11]的内核。

提高仿真时间

在默认的示例配置中,单个像素、多像素和自定义多像素子系统都并行运行。仿真速度受到单像素路径处理时间的限制,因为处理相同大小的帧需要更多的迭代。为了观察多像素流的模拟速度提高,可以注释掉单像素数据路径。

HDL实现结果

HDL是从两者所产生的MultiPixelGaussianEdge子系统和MultiPixelCustomGaussianEdge子系统,并通过布局和布线换上了赛灵思™ZC706板。该MultiPixelCustomGaussianEdge子系统,它不试图优化系数,得到以下结果 -

T = 4×2表资源使用_________ _____ DSP48 108触发器4195 LUT 4655 BRAM 12

MultiPixelGaussianEdge子系统,其使用优化的图像过滤器和边缘检测块使用较少的资源,如表中所示的下方。该比较示出了资源节省实现,因为块分析滤波器结构和预加重复系数。

T = 4 x2表资源使用_____ _____ DSP48 16触发器3959附近地区1797 BRAM 10

也可以看看

|||

相关的话题