使用FPGA开发视频算法进行图像和实时视频处理

使用FPGA开发视频算法进行图像和实时视频处理,第1张

  人脑是我们所知道的最先进的紧凑型处理单元;但是,由于有了新的处理器、工具、架构和软件图像处理方面的改进可能会让机器很快超越我们。新技术及其快速采用的速度为工业制造和检查以及医药、消费电子/游戏,当然还有机器人技术带来了巨大的潜力。

  现在,我们在执行简单的任务(例如装满一罐水)时会执行比例、积分和微分 (PID) 等高级功能。事实上,我们进行如此复杂的运动控制和平衡,机器人可能很快就会嫉妒我们。然而,我们杰出的能力之一是我们能够在我们的视野中挑选出模式、执行物体识别、深度感知、跟踪运动和测量相对速度甚至加速度,这使我们与大多数机器不同。

  早期的图像处理专注于澄清静止图像,许多用于边缘增强和呈现细微细节的算法并未在快速帧速率和高分辨率图像上执行。处理器更简单、更慢,而且执行 DSP 功能的能力更差,因此结果很粗略,获得速度很慢,而且远不及有眼光的人眼和大脑那么可靠。

  然而,随着我们对机器的进化,我们开始赋予它们我们无法比拟的卓越能力,而图像和实时视频处理是我们未来机器(霸主?)将拥有的这些能力之一。这要归功于我们现在正在制定的处理器、工具、算法和启发式方法,我们能够赋予机器这些能力,这些能力可能很快就会远远超过我们自己的能力。

  内存和架构很重要

  视频信息在数字域中处理,因此无论图像来自 NTSC、PAL、RGB、YUB、分量还是隔行或非隔行的 HD 源都无关紧要。前端同步和解码器芯片和硬件阶段可以很好地捕获图像像素并将它们填充到存储器阵列中,通常作为光栅化扫描线。

  然而,内存架构和拓扑确实很重要,因为它们会影响处理器访问和 *** 作数据的方式。例如,您可以以线性方式将图像数据压缩到内存中,但这可能意味着相邻帧不会在可位寻址的内存边界处对齐。例如,让帧扫​​描线的第一行与二进制计数器的零点对齐会更快更容易。如果不需要复杂的寻址方案来索引并逐帧查看视野的相同部分,则比较连续的帧数据变得更容易访问和获得。

  另一个可以简化视频处理和信息提取的与内存相关的因素与位平面分离有关,尤其是随着像素分辨率和调色板深度的增加。发生这种情况时,以最高有效位 (MSB) 到最低有效位 (LSB) 的方式查看单色图像的能力可以突出边界和边缘(图 1)。仅查看 MSB 渲染的图像时会出现最大的对比。可以通过查看连续不太重要的位渲染图像来提取一些深度和渐变信息。

使用FPGA开发视频算法进行图像和实时视频处理,poYBAGMHGaiAUbmfAABCmkKavhU966.png,第2张

  图 1:由于最高有效位 (MSB) 比最低有效位 (LSB) 显示出更多的对比度,因此位平面分离使边缘更加清晰。这意味着需要抽取并行视频数据并将位大小分离到单独的单色存储平面中。(来源:Digi-Key

  这意味着必须将图像数据实时分离为面向位的高效内存块,处理器可以对其进行索引并快速检查。这就是硬件架构发挥作用的地方。

  并行与流水线

  可以使用两种主要的架构方法来完成实时视频处理任务。第一种是使用多个处理器,并为每个处理器分配问题的一部分,或者并行、串行或两者兼而有之。例如,一个由 24 个处理器组成的阵列,每个处理器检查一个位平面分隔的内存块,其识别边缘和边界的速度比必须一次检查每个块的单个处理器快 24 倍。任务执行处理器将任务委托给每个单独的处理器,并以部分“消化”的形式检查浓缩的结果。这允许下一阶段的决策处理器以响应更快的方式对数据采取行动。

  这对于立体视觉处理尤其重要,因为在立体视觉处理中深度感知更容易实现。位平面分离的图像可能会显示边缘,但是,每个相机内存块的不同部分中相同边缘的位置将用于通过数字三角算法确定深度。当这些边缘在两个相机的内存块之间逐帧移动时,处理器可以比尝试逐帧使用并行彩色像素来更快地提取距离、速度和方向数据(图 2)。

  监控各个位平面的各个处理器可以适应阴影、光源,甚至可以在被跟踪对象在视野中其他移动或静止对象的前后移动时识别被跟踪对象的部分模糊边缘。

使用FPGA开发视频算法进行图像和实时视频处理,poYBAGMHGbKAZ1NoAABFzkIaAjU328.png,第3张

  图 2:立体成像可以通过检查检测到的内存阵列中的位置以及每个相关图像的失真来利用位平面分离带来的对比度。这些可用于确定物体在连续帧中移动时的深度和相对运动。(来源:Digi-Key)

  同样重要的是要注意可以使用抽取的像素和调色板分辨率。并非需要 24 位或 36 位 A/D 转换的彩色像素的每一位来提取所需的信息。环境光水平和颜色可用作算法的一部分,以确定分辨率的最佳抽取。

  简单与复杂架构

  术语处理器在此处可能有所不同。它可以是相当高功率、快速时钟的 CISC DSP 类型的功能,或者是基于硬件的功能 RISC 块,或者介于两者之间的任何地方。这是设计工程师可以做出另一种架构选择的地方。

  我们是使用具有复杂架构和信号处理特性的多处理器或多核处理器,还是使用在离散硬件(如 FPGA 结构)中实现的专用逻辑块?两者都是有效的方法,并且都具有它们的特性和优点。此外,它们不是相互排斥的:它们可以一起用于为手头的任务创建最佳解决方案。

  例如,用于质量控制检测应用等应用的视觉系统可以使用类似快照的检测算法来查看特定事物,如焊接连续性、焊盘完整性、电路板迹线一致性和结构缺陷。这可能发生在电路板移动经过静止的视野时,或者当相机通过机器人机构四处移动时。

  NXP i.MX 6DualPlus 和 i.MX 6QuadPlus应用处理器等多核处理器系列专为图形密集型应用而设计。该系列采用 1.2GHz ARM Cortex-A9 处理器,具有先进的内存管理和接口,用于 64 位 DDR3 或双通道 32 位 LPDDR2 内存与内部 L2 高速缓存 RAM 集成。

  这种情况下的一个关键特性是 3D 图形加速,带有四倍 720-MHz 着色器,可以使用专用硬件提供高性能图形。特定部件,如四核 32 位MCIMX6QP5EYM1AA支持 - 在硬件中 - 高达 1920 x 1200 (HD) 分辨率的双显示器,这意味着帧存储器和刷新在本质上支持图像采集和显示(对于调试和测试非常有用出算法),以及图像处理。

  硬件调整大小和去隔行简化了视频数据的格式化和索引,以允许更多的编码资源用于图像数据处理和覆盖到显示数据上。这种叠加的示例包括调整大小的图像,这些图像可以查看数据帧的特定部分以减少处理时间。另一个例子是使用着色器,它不仅可以使图像在人眼中更加突出,而且还可以带出要处理的图像中的细节。

  使用 NXP MCIMX6QP-SDB 开发平台的示例代码和硬件设计也是一个优势,该平台包括完整的硬件设计文件和对 AndroidLinuxFreeRTOS *** 作环境的直接支持。为了简化接口,板载 HDMI 连接和 LVDS 连接并支持两个 1 GHz MIPI DSI 数据通道,相机 MIPI CSI 端口也是如此(图 3)。

  就其本身而言,这些处理器能够被编码以在单个高分辨率立体快照帧中查看许多焊点的锥形形状,例如,根据 PC 板质量检测视频处理等应用的需要。

  此外,可以级联多个处理器以扩展功能。但是,当软件仍然太慢时,单独使用专用硬件或与这些高端类型的处理器结合使用可以将性能提升到最高水平。

  基于硬件的算法

  流水线硬件逻辑定序器总是比基于软件的处理器执行得更快。管道可能需要几个周期才能填充,但是一旦填充,每个时钟周期都在传递处理和消化的信息,而不是编码方法可能需要多个时钟周期来实现相同的传递水平。

  虽然检测机器可能不需要基于硬件加速的超快速度,但许多应用程序需要。与敌方野战炮兵机器人作战的野战炮兵机器人只有在其目标获取、运动控制和准确性都优越的情况下才能获胜。最快、最精简的硬件将继续存在。

  现代逻辑阵列具有密度、速度和深度,以及存储器和外围接口,以适应非常复杂的任务,包括实时视频。大规模逻辑阵列的多门级架构大部分已被查找表 (LUT) 逻辑元件取代,这些逻辑元件能够在单个同步时钟周期内输出每个逻辑块的结果。请记住,现代逻辑阵列可以在 GHz 范围内提供时钟。

  要使用 FPGA 开发视频处理算法,您将需要使用一个平台来实现目标部分、处理逻辑代码模式的上传、提供对 I/O 的访问、具有干净的时钟源,并包含良好的 on-用于满足特定需求的芯片硬宏,例如锁相环 (PLL) 和高速存储器接口。一旦您确定了制造商和零件系列,开发平台就会到位。

  以 NaTIonal Instruments 的Digilent Nexys 视频 FPGA 板为例,该板采用Xilinx高密度、高性能ArTIx 系列FPGA(图 4)。这些范围从 1300 到 16,825 个逻辑单元和从 45 到 740 个 DSP 切片功能块。一个关键特性也是高达 509 MHz 的双端口 RAM 速度,允许通过独立的逻辑阶段进行并发访问和修改。

  NaTIonal Instruments 板使用低功耗 1 V 内核并具有四通道 SPI 闪存以及 DDR3 存储器接口,可分别直接访问外部非易失性和易失性存储器池。HDMI 和 DVI 接口也使用最小化传输差分信号 (TMDS) 标准。

  虽然开发平台是在相对较快的时间框架内以相对较低的风险进行评估和设计的好方法,但最终,您将希望开发自己的电路板并使用自己的测试和开发平台。幸运的是,Xilinx Vivado 工具套件在免费的 Webpack 许可下得到支持,其中包括创建 Microblaze 软核处理器的能力,该处理器可在 FPGA 内部用作处理引擎,以指导和管理基于逻辑的流水线架构的可编程性。可以在Nexys 网站上下载设计资源、示例项目、数据表和教程

  结论

  凭借低功耗、高性能的半导体以及正确的工具、架构和算法,机器将在我们曾经认为自己远超人类的领域迅速超越人类,例如模式识别、物体识别、深度感知、运动跟踪和能力测量相对速度甚至加速度。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2998531.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存