视频检查系统已被广泛应用于商业和工业领域。摄像头——从黑白闭路电视(CCTV)系统中的廉价和低分辨率产品到数字视频系统中的先进和高分辨率产品——被用于从产品检验、交通监管到实时人脸识别等各种应用场合。
视频本身承载有大量数据,这些数据使得信号处理和数据存储任务变得相当复杂。通过丢弃无用的信息、只传递图片的重要部分可以简化视频检查系统,节省存储器和运算周期。图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
从预设的产品位置区域提取信息
例子2:检测运动和质量
机器人可以寻找特定距离和有限范围内的目标。在一些应用中可以使用超声波;但如果物体表面会吸收超声波或目标在玻璃后面,可以使用视频。摄像头焦距设定在邻近物体上。在近距离范围内的物体会有清晰的边缘,而范围之外的背景物只有模糊的边缘(图3)。
图3:焦距——窄的景深。
边缘检测可以用来分辨目标距离范围内的物体,因为它们是唯一具有清晰边缘的物体。背景中的物体将足够模糊,不能通过边缘检测测试。这种边缘检测处理将产生一个二元位图,其中1表示检测到一个边缘,0表示没有检测到边缘。每个检测到的边缘像素的位置(x,y)可以代入公式1近似算出被隔离物体的中点:
(1)
其中 xn是边缘像素n的x轴位置,yn 是边缘像素n的y轴位置,N是检测到的边缘像素的数量。
一旦物体位置及其边缘已知,我们就可以试着进行跟踪。关键是从图片中正确提取物体,将它的边缘转换成轮廓,然后用来判断物体是否在朝摄像头移动,方法是检查像素距物体中心的平均距离以便判断物体尺寸是否在改变,如公式2所示:
(2)
N是FRAME帧中的边缘像素数量,M是FRAME-1帧中的边缘像素数量。聚焦横轴可以得到公式3:
(3)
当物体朝摄像头移动时(像素从物体中心向外扩展),这个公式的值是正的。负值意味着物体正在远离摄像头,如图4所示。
图4:移动中物体的帧变化。
请注意,物体必须在摄像头焦距范围内。通过修改算法我们可以主动改变焦距以扫描更大的面积。一旦检测到物体就可以进行分段、处理和跟踪。
随着视频复杂度的增加,跟踪物体将变得更加困难,特别是有纹理的物体以及由于移动速度过快而失去锐度的物体。Jianbo Shi所著的“Good Features to Track”一文介绍了一些跟踪算法。当物体失去锐度时,边缘检测将会失败。在这种情况下使用复数相关技术(如模块匹配)——用来估算运动——或采用Yao Wang、Jörn Ostermann和Ya-Qin Zhang三人合著的“Video Processing and Communications”一书中详细介绍的其它方法仍可以完成跟踪。
由于摄像头提供的是连续的数据流,因此可以通过跟踪物体判断它的加速度和其它参数。然而,必须使用高质量的视频序列才能获得良好的视频分析结果。当通过分析相邻像素检测边缘时,逐行扫描视频要比低质量的隔行PAL或NTSC信号具有更好的分辨率。ADV7401 和ADV7403 视频解码器可以接受各种视频标准,包括逐行模式。这两款器件能够数字化处理高达140MHz的视频信号,并且能够处理标清、增强清晰度和高清分量信号、CVBS和图形。另外,它们还支持非标准视频模式,允许使用不太流行的标准,比如STANAG。灵活的像素输出总线允许处理4:2:2、4:4:4 YcbCr或4:4:4 RGB格式的数据。非标准视频格式可以通过过采样或欠采样达到特定的水平宽度,详见应用笔记 AN-0978, “Component Processor Nonstandard Video Formats”。
图5所示的内置色彩空间转换器(CSC)可以转换彩色空间以满足用户要求(公式4,其中A1… A4,B1… B4,C1… C4都是可调整的CSC参数)。YPrPb或RGB输入信号可以用可配置矩阵转换功能转换成其它格式。例如,将RGB转换成YCbCr允许丢弃色度信息(Cb,Cr),通过使用单色图片可简化边缘检测。
(4)
图5:单个CSC通道(ADV7403)。
CSC非常有用。当输入为RGB或YCbCr时,色彩信息可以用色彩空间矩阵进行简单的转换。图6给出了类似于YCbCr的YUV色彩空间。
图6:产品质量评估中使用的YUV色彩空间可以用来检测(例如)产品是否烧焦或变质了。Y(亮度)是常数。
如图6所示,色彩(或YPrPb值)有助于检测产品质量,例如是否烧焦或变质。色彩空间转换在视频处理中以及与使用其它标准的IC连接时都很有必要。ADV7401/ADV7403内置输入多路复用器,可以方便地切换视频源,这个特性在从一条停止的传送带切换到另一条运转中的传送带时非常有用。
例子3:调整视频检查中的白平衡和色彩平衡
开发一个从图片中提取物体的视频系统需要付出艰苦的努力,因为光线角度或强度的些许变化都会影响检验结果。视频工程师可以使用ADV7401/ADV7403的增益和偏移调整功能来调整亮度与对比度,只需在传送带上增加两条很短的参考条纹(一条暗的,一条亮的)。ADV7401/ADV7403的偏移和增益经调整后得到可比较的值,从而使系统可对光线颜色、角度和强度方面的变化进行补偿。
图7:在可视区域增加小段参考条纹。
用于调整正确白平衡的算法非常简单。首先,取得参考条纹的RGB(或YCbCr)值。然后,为了补偿光线变化,可以通过简单地改变器件的偏移和增益达到与参考值相同的值。这种算法可以用来:
取得暗条纹的RGB(或YCbCr)值
调整偏移以匹配暗条纹的理想RGB(或YCbCr)值
取得亮条纹的RGB(或YCbCr)值
调整增益以匹配亮条纹的理想RGB(或YCbCr)值
为了提高精度,可重复步骤2和步骤4
这个过程在系统开发期间尤其重要,因为它能提供正确的偏移(亮度)和增益(对比度)——即使在光线太强或太弱的时候,如图8所示。偏移和增益寄存器可以通过I2C总线访问,从而能够实现快速自适应。
图8:通过调整偏移和增益来补偿环境光线的变化。
色彩也可以用于参考条纹。这种补偿与白平衡类似,并得到广泛使用。不过虽然白平衡比较符合人类的感知,色彩校正却可补偿由于不同照明引起的变化。虽然算法类似,但额外的偏移将导致暗色看起来不自然。ADV7401/ADV7403色彩空间转换、灵活的输出像素端口以及偏移与增益调整寄存器允许工程师使用已经准备好的数据快速开发算法。如前所述,很重要的一点是减少视频处理所需的数据量、尽量避免将高级算法用于简单视频。具备易访问像素端口的ADV7401/ADV7403评估板已可供货,它能加快新设计的启动。只需简单地将视频捕获板插进这块评估板的像素端口即能实现视频数据的捕获(图9)。
图9:ADV7401/ADV7403评估板上的像素总线。
视频编码器、视频DAC和AD9889B HDMI发送器被连接到同一像素总线,允许在第二个输出端口检查当前图片。ADI公司的视频解码器包含了视频处理所需的模块,可提供鲁棒性能和稳定图片。
结束语
视频摄像头可以在工业应用中带来许多好处。当移动物体必须被分类、跟踪或记录时,这是特别重要的。带高集成度视频解码器的视频技术和实时处理功能可以用来高效地分析移动中的传送带上面的物体或分类传送带上面的混合产品。