监控与检查系统中的视频解码器基本原理介绍
视频检查系统已被广泛应用于商业和工业领域。摄像头——从黑白闭路电视(CCTV)系统中的廉价和低分辨率产品到数字视频系统中的先进和高分辨率产品——被用于从产品检验、交通监管到实时人脸识别等各种应用场合。
本文引用地址:http://www.amcfsurvey.com/article/154256.htm视频本身承载有大量数据,这些数据使得信号处理和数据存储任务变得相当复杂。通过丢弃无用的信息、只传递图片的重要部分可以简化视频检查系统,节省存储器和运算周期。图1给出了一个典型系统的组成单元。
图1:简化的视频检查数据流程。
本文将通过几个例子来阐述提取有用数据如何能够使处理要求、存储器容量和DSP使用率达到最小,并介绍ADI公司视频解码器的特殊性能如何能够简化视频算法、加快视频检查系统的开发速度。
实例1:计数和检验物体
试想一下,一条宽传送带正在快速传送许多产品,而大量的产品使得人工计数非常困难。摄像头除了能使计数任务自动化外,还能用来监视产品质量。这可以通过修改简单的计数算法以让它关注特定细节和瑕疵来加以实现。
存储所有视频数据需要大量存储器,而处理大量数据也需要耗费大量硬件资源和处理能力。因此在检验传送带上的产品时,系统不会将整个图片数据采集进存储器,而是要从大量数据中找到感兴趣的细节,并尽可能多地丢弃无用数据。
在大多数情况下,灰度级图片就携带有足够的信息,因此可以将RGB信号转换成(只有亮度的)Y信号,丢弃掉色度信息。然后使用边缘检测方法检查单色图片中的内容以发现传送带上的产品,然后将它们的形状与样板进行比较,判断产品是否正常。
边缘检测算法——只需要活动视频的几条线和少量存储器——能够通过计算活动图片的一阶和二阶导数发现相邻像素亮度的不连续性,详见Bernd Jähne所著的 “Digital Image Processing”一书。在实际应用中,边缘检测可以通过使用矩阵计算方法提取信息来实现,如Sobel矩阵算子。在FPGA(现场可编程门阵列)实现中,以像素为单位进行这样的边缘检测可以提供令人满意的结果。Tanvir A. Abbasi和Mohm Usaid Abbasi合作撰写的“A proposed FPGA Based Architecture for Sobel Edge Detection Operator”一文介绍了一种简单的FPGA实现方案。还可以通过增加高斯二维滤波器消除噪声,详见Mathukumar Venkatesan和Daggu Venkateshwar Rao合著的“ Hardware Acceleration of Edge Detection Algorithm on FPGAs”。这篇文章介绍了一个类似于Canny边缘检测器的检测器成功实现案例。
还有其它几种优化算法可以用来提高图片质量,但这些算法都要占用FPGA设计中的宝贵资源。然而,一些集成电路(IC)视频解码器已经集成了实用的预处理算法或滤波器,因此选择这样的IC可以节省FPGA资源。例如, ADV7802 视频解码器就包含了亮度瞬态改进(LTI)和色度瞬态改进(CTI)模块。这些模块通过改善亮度和色度变化的锐度来提高图片质量,并使用自适应峰值和非线性方法——不会增加噪声或引入瑕疵——在边缘检测过程中非常有用。另外,亮度整形和其它内置输入滤波器可以消除源自信号源的高频噪声——专注于信号,忽略偶然出现的噪声。
图2:LTI/CTI运算图解。
边缘检测提供的是物体边缘变化的信息,而不是物体的整个图片,数据量能从3×8位/像素(bpp)减少到1bpp,从而节省大量存储器空间:
640 像素 × 480像素= 307,200位(1bpp时)
800像素× 600像素= 480,000位(1bpp时)
1024像素× 768像素= 786,432位(1bpp时)
1280像素× 720像素= 921,600位(1bpp时)
通过将RGB转换为Y,在存储器中只存储活动视频的几条线,并使用FPGA算法,我们就可以检测物体,观察它们的形状。一旦知道这些物体在移动中的传送带上的位置,我们就能估计它们的运动,并从下一帧中采集颜色或其它信息,确保使用最少的存储器空间。这个过程涉及:
边缘检测
存储信息
预测下个位置 xn+1
从预设的产品位置区域提取信息
评论