周光宇, 程 萍
(宁波大红鹰学院,浙江 宁波 315175)
随着计算机计算能力的提高以及成本的降低,数字图像处理的应用范围从工业检测到医疗成像等呈爆炸式增长[1].质心定位目的是提取图像中目标的几何形状的中心,是图像处理中一种重要的处理技术.质心定位在机器视觉测量系统中应用比较多,尤其是在一些测角装置中,可通过测量多个合作目标在图像中的位置关系和机械位置关系测出某些装置的绝对角度.基于计算机的图像处理方法存在着局限性,尤其是计算速度和使用环境方面的局限性[2].因此,本文提出使用FPGA+DSP作为图像处理的实现平台,考虑许多图像处理本身是并行的, FPGA也是并行的,利用DSP强大的计算能力,快速地实现各种复杂图像FPGA和DSP都是可编程的处理算法,具有小型、低功耗和算法灵活等特点.
当一幅图像中只有一个目标时,质心定位算法比较简单,可根据阈值分出图像的前景及目标,然后再根据式(1)进行计算.
(1)
计算结果就是目标的质心坐标[3].当一幅图像中存在多个目标时,上述方式并不能满足,此时需要分割出各个目标,然后在目标窗口中再按式(1)分别求出各个目标的质心坐标.本文利用多种算法实现质心定位:(1) 进行直方图统计;(2) 进行自适应阈值选择,根据自适应阈值进行图像二值化,分出图像的目标和背景;(3) 连通域标记,分别标记出各个目标点所在区域;(4) 质心求解,在各个连通域中根据式(1)求解各个目标点的质心坐标.其中算法(2)在DSP中实现,其他算法在FPGA中实现.
系统的硬件电路原理如图1所示,采用Base模式CameraLink接口黑白相机,FPGA接收相机的图像数据.完成直方图统计并将结果存储在片内双端口RAM中,同时将该帧图像数据存储到SRAM中,DSP读取双端口RAM中的直方图统计结果并完成自适应阈值选择,将阈值传输给FPGA,FPGA将根据阈值进行图像二值化,然后完成连通域标记,计算目标点的质心坐标.
图像直方图由于其计算代价较小,且具有图像平移、旋转、缩放不变性等优点,广泛应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索,以及图像分类[4-5].在FPGA中建立直方图,需要对每个像素值累计计算,可以利用双端口RAM来实现.将每个像素点的灰度值作为双端口RAM的地址线,统计当前像素点的灰度时,首先读出地址为该灰度值的存储单元,然后加1,再把总和写回存储单元.在读写RAM时使用4倍像素时钟的读写时钟频率,双端口RAM的一个端口用来读存储器,一个端口用来写结果.流程图如图2所示,统计完一帧图像的直方图,通知DSP读取直方图统计结果,当DSP读取完成后,双端口RAM清零,开始统计下一帧.DSP在场消隐时读取直方图统计结果,并不会存在时序上的混乱.
自适应阈值算法的目的是根据像素值把图像分割成两种类型.当从背景中分离对象时,直方图通常是双峰值的,峰值表示对象和背景像素值的分布.如果峰值被明显地分开,而且没有重叠,选择峰值之间的合适阈值.但是大部分情况是峰值之间有重叠,而且峰谷也不是平滑的,有噪声的,因此一般情况下是为直方图拟合一条曲线.本文选择OTSU提出的著名的最大类间方差法:背景和目标之间的类间方差越大,说明构成图像的两部分的差别越大,当部分目标错分为背景,或部分背景错分为目标,都会导致两部分差别变小.因此,使类间方差最大的分割意味着错分概率最小.最大类间方差的基本思想是使用一个阈值将整个图像数据分成两类,假如两类的类间方差最大,那么这个阈值就是最佳阈值[6-9].
假设使用一个阈值T,将灰度级[1L]分为两类[1T-1]和[TL],则有
根据自适应阈值算法求出的阈值二值化图像,将其分为目标和背景.通过给每一组连通域内的像素赋予一个唯一的标号,将一个区域内的像素分离出来,从而提取该区域的特征[8-10].连通域标注有若干不同的方法,比较成熟的是采取基于区域增长的思想,流程图如图3所示.预先将整帧图像存储在帧缓存中,然后进行逐行扫描,找到未标记区域的第一点,标记“1”后检查该点的八邻域点并标记满足连通性要求且尚未标记的点,同时将新增的标记点记录下来作为“区域增长”的种子点.在后续的标记过程中,不断从记录种子点的队列中取出一个种子,重复操作直到记录种子点的队列为空,此时一个连通域标记结束.接着标记下个区域,标号加“1”,直到图像中所有连通域都被标记.本文根据合作目标的特点,提出一种单次扫描算法.从图像的左上角开始扫描,随着光栅扫描的进行,将已标注像素的标号传播给与该像素连通的像素,如图4所示.
光栅每遇到一个目标像素时,都对其左边和上边的像素进行检查,如果它们都是背景像素,则将该目标像素标注为一个新的标号;如果它们中只有一个或者两个都是已标注A,则将该目标像素标注为A;如果其上方的像素标注号为B,其左方的像素标注为C,则将该目标点标记为B,同时将其左方的像素重新标记为B.当一帧图像扫描完成时,目标点也就标记完成了.给予区域增长的方法的局限性在于需要对图像进行随机访问,要求将整幅图像存储在片内帧缓存中.而本文提出的方法只需缓存两行图像,光栅扫描的时候标注缓存里的像素,大大减小了片内帧缓存所占用的资源.
质心求解算法利用式(1)分别计算各连通域内目标点的质心,其中N代表各连通域内的目标点个数.
本文FPGA为Xilinx公司XC4VSX55-12FF1148芯片,DSP为TI公司TMS320C6416T芯片,主频为800 MHz.相机为SENTECHSTC-CMB2MCL相机,图像分辨率为2 048×1 024,采用Camera Link接口,像素时钟为85 MHz,帧频最大为73.8 fps.帧缓存图像时横向坐标为高11位地址,纵向坐标为低10位地址缓存图像,因此,在计算时取地址值即为像素点的横纵坐标.以黑色背景上有4个白色小圆为合作目标点,在合作目标静止状态用本文方案多次检测,其中一个目标点的检测结果如图5所示.在MATLAB读取真实图像数据寻找其质心坐标为(345,456),与检测结果一致.经过进一步实验测试,DSP读取直方图和自动阈值算法共需524 075个时钟,即0.656 ms,小于相机的场消隐时间1 ms.将相机的帧频设为73 fps,观察输出数据,发现系统可稳定运行.
将本方案算法全部在DSP中实现,经测试,统计出DSP读取数据及直方图统计需206 706 128个时钟,自动阈值需436 665个时钟,连通域标记和质心计算需52 954 265个时钟,共需321 097 058个时钟,即0.41 s,处理速度可达2 fps.将本算法在主频为2.2 GHz的计算机中实现,其处理速度可达到1 fps.
本文研究了适用于多目标的质心定位算法,算法包括直方图统计、自适应阈值、连通域标记和质心求解算法.详细分析了各算法的原理,并提出一种新的连通域标记算法单次扫描算法,新的算法可大幅减小图像处理中帧缓存占用的空间.最后在FPGA+DSP的硬件中实现了多目标质心定位算法,经过多目标质心定位算法处理,检测出目标点的质心坐标,与真实的质心坐标一致,体现了本文算法的正确性.同时,可满足最高70 fps的检测速度,远远高于使用单个DSP处理器或者计算机的检测系统.本算法适用于多目标的质心定位检测,可在机器视觉测量系统中应用.
参考文献
[1] 陈汗青,万艳玲,王国刚. 数字图像处理技术研究进展[J]. 工业控制计算机,2013(01):72-74.
[2] DONALD G B.基于FPGA的嵌入式图像处理系统设计[M].北京:电子工业出版社,2013.
[3] 王冰,职秦川,张仲选,等. 灰度图像质心快速算法[J]. 计算机辅助设计与图形学学报,2004,10:1360-1365.
[4] 卢来,王军民,范锐. 基于自适应增强的图像二值描述子[J]. 计算机工程, 2016, 42(6): 230-234,240.
[5] 汪启伟. 图像直方图特征及其应用研究[D].合肥:中国科学技术大学,2014.
[6] SEZGIN M. Survey over image thresholding techniquesquantitative performance evaluation[J]. J Electr Imaging,2004,13(1), 146-165.
[7] 庄玉林. 基于直方图优化的遥感图像对比度增强算法[J]. 计算机工程, 2016, 42(5): 235-238.
[8] OHTSU N. A threshold selection method from gray-level histograms[J]. Systems Man & Cybernetics IEEE Transactions on, 1979, 9(1):62-66.
[9] YANG X L,SHEN X J,LONG J W. An improved median-based Otsu image thresholding algorithm[C]//Proceedings of 2012 Conference on Modelling, Identification and Control(MIC),American Applied Sciences Research Institute,2012.
[10] HEDBERG H, KRISTENSEN F, OWALL V. Implementation of a labeling algorithm based on contour tracing with feature extraction[C]//IEEE International Symposium on Circuits and Systems,2007:1101-1104.
[11] 路敬祎,薛征,邵克勇,等. 基于改进的连通域算法与垂直投影相结合的车牌字符分割[J]. 自动化技术与应用,2015,12:93-97.
[12] 徐诗惠,张霞. 连通域在复杂背景肤色检测中的应用[J]. 计算机应用与软件,2016(05):181-184.