视频检查系统已被广泛应用于商业和工业领域。本文将通过几个例子来阐述提取有用数据如何能够使处理要求和存储器容量达到最小、使DSP使用率达到最低,并介绍ADI公司视频解码器的特殊性能如何能够简化视频算法、加快视频检查系统的开发速度。图1给出了一个典型系统的组成单元。
实例1:计数和检验物体
试想一下,一条宽传送带正在快速传送许多产品,而大量的产品使得人工计数非常困难。摄像头除了能使计数任务自动化外,还能用来监视产品质量。这可以通过修改简单的计数算法以让它关注特定细节和瑕疵来加以实现。
存储所有视频数据需要大量存储器,而处理大量数据也需要耗费大量硬件资源和处理能力。因此在检验传送带上的产品时,系统不会将整个图片数据采集进存储器,而是要从大量数据中找到感兴趣的细节,并尽可能多地丢弃无用数据。
在大多数情况下,灰度级图片就携带有足够的信息,因此可以将RGB信号转换成(只有亮度的)Y信号,丢弃色度信息。然后使用边缘检测方法检查单色图片中的内容以发现传送带上的产品,然后将它们的形状与样板进行比较,判断产品是否正常。
边缘检测算法—直需要活动视频的几条线和少量存储器—能够通过计算活动图片的一阶和二阶导数发现相邻像素亮度的不连续性,详见Bernd Jhne所著的“Digital Image Processing”一书。在实际应用中,边缘检测可以通过使用矩阵计算方法提取信息来实现,如Sobel矩阵算子。在FPGA(现场可编程门阵列)实现中,以像素为单位进行这样的边缘检测可以提供令人满意的结果。Tanvir A. Abbasi和Mohm Usaid Abbasi合作撰写的“A proposed FPGA Based Architecture for Sobel Edge Detection Operator”一文介绍了一种简单的FPGA实现方案。还可以通过增加高斯二维滤波器消除噪声,详见Mathu kumar Venkatesan和Daggu Venkateshwar Rao合著的“Hardware Acceleration of Edge Detection Algorithmon FPGAs”,这篇文章介绍了一个类似于Canny边缘检测器的检测器成功实现案例。
还有其它几种优化算法可以用来提高图片质量,但这些算法都要占用FPGA设计中的宝贵资源。然而,一些集成电路(IC)视频解码器已经集成了实用的预处理算法或滤波器,因此选择这样的IC可以节省FPGA资源。例如,ADV7802视频解码器就包含了亮度瞬态改进(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
●从预设的产品位置区域提取信息
实例2:检测运动和质量
机器人可以寻找特定距离和有限范围内的目标。在一些应用中可以使用超声波,但如果物体表面会吸收超声波或目标在玻璃后面,可以使用视频。摄像头焦距设定在邻近物体上。在近距离范围内的物体会有清晰的边缘,而范围之外的背景物只有模糊的边缘。
边缘检测可以用来分辨目标距离范围内的物体,因为它们是唯一具有清晰边缘的物体。背景中的物体将足够模糊,不能通过边缘检测测试。这种边缘检测处理将产生一个二元位图,其中1表示检测到一个边缘,0表示没有检测到边缘。每个检测到的边缘像素的位置(x,y)可以代入公式1近似算出被隔离物体的中点:
其中xn是边缘像素n的x轴位置,yn是边缘像素n的y轴位置,N是检测到的边缘像素的数量。
一旦物体位置及其边缘已知,我们就可以试着进行跟踪。关键是从图片中正确提取物体,将它的边缘转换成轮廓,然后用来判断物体是否在朝摄像头移动,方法是检查像素距物体中心的平均距离,以便判断物体尺寸是否在改变,如公式2所示:
N是FRAME帧中的边缘像素数量,M是FRAME-1帧中的边缘像素数量。
聚焦横轴可以得到公式3:
当物体朝摄像头移动时(像素从物体中心向外扩展),这个公式的值是正的。负值意味着物体正在远离摄像头。
请注意,物体必须在摄像头焦距范围内。通过修改算法我们可以主动改变焦距以扫描更大的面积。一旦检测到物体就可以进行分段、处理和跟踪。
随着视频复杂度的增加,跟踪物体将变得更加困难,特别是有纹理的物体以及由于移动速度过快而失去锐度的物体。Jianbo Shi所著的“Good Featuresto Track”一文介绍了一些跟踪算法。当物体失去锐度时,边缘检测将会失败。在这种情况下使用复数相关技术(如模块匹配)—用来估算运动—或采用Yao Wang、Jrn Ostermann和Ya-Qin Zhang三人合著的“Video Processing and Communications”一书中详细介绍的其它方法仍可以完成跟踪。
由于摄像头提供的是连续的数据流,因此可以通过跟踪物体判断它的加速度和其它参数。然而,必须使用高质量的视频序列才能获得良好的视频分析结果。当通过分析相邻像素检测边缘时,逐行扫描视频要比低质量的隔行PAL或NTSC信号具有更好的分辨率。ADV7401和ADV7403视频解码器可以接受各种视频标准,包括逐行模式。这两款器件能够数字化处理高达140MHz的视频信号,并且能够处理标清、增强清晰度和高清分量信号、CVBS和图形。另外,它们还支持非标准视频模式,允许使用不太流行的标准,比如STANAG。灵活的像素输出总线允许处理4:2:2、4:4:4YcbCr或4:4:4RGB格式的数据。非标准视频格式可以通过过采样或欠采样达到特定的水平宽度,详见应用笔记AN-0978,“Component Processor Nonstandard Video Formats”。
图2所示的内置色彩空间转换器(CSC)可以转换彩色空间以满足用户要求。YPrPb或RGB输入信号可以用可配置矩阵转换功能转换成其它格式。例如,将RGB转换成YCbCr允许丢弃色度信息(Cb,Cr),通过使用单色图片可简化边缘检测。
公式4中A1…A4,B1…B4,C1…C4都是可调整的CSC参数。
CSC非常有用。当输入为RGB或YCbCr时,色彩信息可以用色彩空间矩阵进行简单的转换。图3给出了类似于YCbCr的YUV色彩空间。
如图3所示,色彩(或YPrPb值)有助于检测产品质量,例如是否烧焦或变质。色彩空间转换在视频处理中以及与使用其它标准的IC连接时都很有必要。ADV7401/ADV7403内置输入多路复用器,可以方便地切换视频源,这个特性在从一条停止的传送带切换到另一条运转中的传送带时非常有用。
结束语
视频摄像头可以在工业应用中带来许多好处。当移动物体必须被分类、跟踪或记录时,这是特别重要的。具备高集成度视频解码器的视频技术和实时处理功能可以用来高效地分析移动中的传送带上面的物体或分类传送带上的混合产品。