赵建敏 赵忠鑫 李琦
摘要:在基于机器视觉的羊体体尺测量中,当受到光线、背景等干扰时,彩色图像无法精确提取羊体轮廓。此外,羊体站姿的变化也会造成测量误差。为解决彩色镜头受背景干扰的问题,采用Kinect传感器采集羊体彩色、深度图像,利用深度信息不受光干扰的特点,提出彩色与深度图像相结合的方法提取羊体轮廓;在特征点提取中,采用U弦长曲率得到臀部点,位置关系扫描得到前蹄点、后蹄点、耆点;为解决站姿干扰问题,利用传感器深度信息建立羊体空间轮廓线拟合平面,并计算其与像平面夹角,进行体位站姿纠偏,计算出羊体体尺数据。最后,基于VS2010软件搭建测量系统,经过实地测试,准确测量得到羊体体尺数据,且相对误差小于4.3%。
关键词:机器视觉;轮廓提取;特征点;体尺测量;Kinect
中图分类号: S818文献标志码: A文章编号:1002-1302(2015)11-0495-04
收稿日期:2014-11-19
基金项目:内蒙古科技大学大学生科技创新基金(编号:2012NCL027)。
作者简介:赵建敏(1982—),男,内蒙古包头人,硕士,讲师,主要从事人机交互、模式识别研究。E-mail:zhao479059413@163.com。
通信作者:赵忠鑫,硕士研究生,主要从事机器视觉、图像处理研究。E-mail:zhao479059413@163.com。基于机器视觉的家畜体尺测量是非接触式测量手段。刘同海等利用背景减法、去除噪声算法去除背景干扰,寻找猪体体尺测点[1]。刘波等将自动阈值分割与形态学处理相结合,进行轮廓分割[2]。江杰等利用基于灰度的背景差分法提取羊体轮廓[3]。以上基于机器视觉的家畜体尺测量研究均在无干扰环境下利用背景差法或阈值分割法提取家畜轮廓。实际应用中,当背景与家畜颜色相近时,彩色图像差分结果残缺,阈值难以确定,导致无法单纯分割出目标家畜。此外,以往研究往往忽略了家畜与像平面夹角,对体尺计算造成很大误差。为解决这些问题,本研究采用Kinect传感器,将彩色、深度图像多元信息相融合,提取羊体轮廓线,保证羊体轮廓完整的同时,利用传感器深度信息建立轮廓点三维坐标,通过拟合平面对羊体与像平面夹角进行计算,进行体尺纠偏后得到更加准确的体尺数据,旨在为精确测量家畜体尺提供依据。
1轮廓提取
为克服单一镜头抗干扰能力差的问题,本研究利用Kinect传感器,采用彩色与深度图像相结合的方法提取羊体轮廓。Kinect传感器可同时采集彩色、深度图像,利用连续光(近红外光)对测量空间进行照射编码,再通过CMOS感应器得到编码后的光线,将数据传给ps1080系统级芯片SoC进行解码运算,最终得到具有深度的图像[4]。本研究利用NuiInitialize(NUI_INITIALIZE_FLAG_USES_COLOR )、NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH)函数对彩色、深度视频流进行初始化,采用逐帧读取视频流的方法,通过CvCapture结构体保存图像捕获的信息。CvCapture自动获取下一帧的位置,每获取一帧,这些信息立即更新,获取下一帧回复,通过截取深度、彩色数据流获得现场图像(图1)。
Kinect传感器获取的羊体彩色与深度图像如图2所示,标记羊A为目标羊,其所处环境背景复杂,提取轮廓时,单一彩色图像中背部存在颜色干扰,单一深度图像中腿部深度差不明显。为准确提取目标羊A轮廓,将彩色图像单独阈值分割后,与深度图像同时进行轮廓提取,经过去除噪声干扰,采用膨胀法得到羊体闭合轮廓线。
1.1预处理
本研究采用8邻域窗口对图像进行平滑处理[5]。滤波时,遍历原始彩色图像像素点,把其灰度值设置成8邻域中灰度值的中值。根据局部自适应阈值算法将图2-a二值化,成功地将羊A腿部色差较大部分完整分割出来。采用Canny边缘检测算子对彩色图像阈值分割后的结果及深度图像进行边缘检测,结果如图3所示。
为去除干扰,规定8邻域连通区域面积(像素点个数)小于20时为干扰。首先标记8连通区域,分别计算每个连通区域面积,若小于阈值则将其颜色更改为背景色。图4-a、图4-b 分别为彩色、深度图像轮廓提取去除干扰后的结果。
图2、图4表明:彩色图像中,羊A背部轮廓由于位于其身后羊体干扰导致缺失,彩色图像无法进行恢复,深度图像同一位置处不受干扰;深度图像中,由于蹄部与地面之间深度差距小,导致前蹄、后蹄区域轮廓损失严重,但彩色图像中此处轮廓完好。因此,借助彩色、深度图像结合的方法可以克服上述问题,准确提取目标羊体A的轮廓线。
1.2闭合轮廓线提取
图4中轮廓线处像素点灰度为255,其余部分灰度为0。在目标羊A处生成1个灰度值为200的标记点。规定与像素点a有公共边的像素为其邻位,如b1、b2、b3、b4为a邻位(图5)。
若灰度值为200的像素点a邻位存在灰度值为0的像素点,则称a为奇异点。定义奇异点的膨胀操作为将邻位中灰度值为0的位置灰度改变为200。闭合轮廓提取算法流程如图6。算法以标记点开始膨胀,在判断无奇异点的情况下,羊体A区域被灰度值为200的像素点填充,轮廓提取算法中取阈值T=200,此处阈值分割公式如下:
分割后图像被二值化(图7),再经Canny算子提取轮廓,最终得到羊体闭合轮廓。闭合轮廓线利用彩色、深度图像的各自优势,提取过程克服了单一镜头信息不足的缺点,得到了
目标羊体闭合轮廓线。
2羊体特征点提取
根据传统羊体测量方法,得知羊体体尺特征点包括臀部特征点、前后蹄点、耆点[6]。本研究采用羊体侧面轮廓线提取各特征点(图8)。
2.1臀部特征点检测
由于羊体臀部骨骼突起,造成其轮廓在一定范围内曲率最大,且臀部位置与羊的移动关系较小,曲率不会发生较大变化。背部轮廓线属于离散曲线[7],故本研究采用U弦长曲率[8]寻找臀部特征点。
由约束条件:
确定。其中U>0,需初始设定,为任意两像素点间欧式距离,即:
数字化曲线具有离散性,故上述结果只可近似满足约束条件公式(3),根据参考文献[9]中的隐式精化数字曲线策略提高其准确性,使公式(2) 能被精确地满足,令
根据条件,‖pipif‖=U,求出待定系数u的值,从而确定领域前端点pif,同理可得领域后端点pib,此时领域被调整。
计算曲线曲率时,利用与支持领域前、后臂矢量夹角相关的某一余弦值作为离散曲率。本研究取角∠pifpipib的余弦值为离散曲率(图9)。以轮廓上Pi点为中心,以U为半径的支持领域,逐步迭代计算曲率。
Pi点离散曲率:
cosθ=‖pipib‖2+‖pipif‖2-‖pibpif‖22×‖pipib‖×‖pipif‖。(6)
臀部特征点位于羊体上轮廓线后半部分,因此分解出羊体上轮廓线,保留后半部分。在有可能出现臀部特征点的一定区域内逐点计算轮廓线曲率。经过筛选,得到曲率最大值所对应的点为臀部特征点。研究结果表明,U在6~20范围内结果较好。
2.2前蹄、后蹄点检测
前蹄、后蹄点处于所得的图像中最下方位置,根据此关系,采用逐点扫描的方法,由最底行向上,由最左列向右遍历各点,第1个像素值非零点即为一蹄点。图像空间分辨率为640×480,在可疑区域内搜索另一蹄点,可疑区域为:
式中:x为行数,y为列数,px(top)为轮廓最上端像素点对应的行数,py(d)为检测到的第1个蹄点像素点列数。
2.3耆点检测
根据前蹄点像素点位置,沿着行数减小的方向寻找,耆点与前足点列坐标相同。设fy为前足点所在列,因此耆点也在第fy列。找出轮廓线上所有列数为fy的点,所在行数分别为T1、T2、T3,…,Tn。最终根据限定条件:
坐标(x,y)即为耆点坐标。
2.4特征点检测结果
图10为获取的部分羊体上轮廓线,共186个轮廓点。
根据公式(6)依次计算获取上轮廓线上各个点所对应的曲率角余弦值,选定支撑领域半径U=9,结果如图11所示。
横坐标为轮廓像素点的点数,纵坐标为对应的余弦值。横坐标x=43所对应的轮廓点余弦值最大,即此点处曲率最大,经计算其值为-0.791。轮廓线左起半径U=9范围内的9个点不参与计算余弦值,所以轮廓线左起第52个点,即图10中K点为臀部特征点,其对应的坐标为(264,262)。按上述前蹄点、后蹄点、耆点寻找方法对样本羊体轮廓进行检测,得其特征点的坐标值(表1)。
3站姿纠偏
实际测量中,由于羊体站姿存在一定随机性,导致羊体中心线与测量平台中心线并不平行,存在一定的角度θ(图12)。
二维图像中测量得到的体尺数据L′ 为真实体尺L在二维图像平面上的投影长度。若不考虑特征点深度值则测量结果会产生一定误差,因此结合深度信息进行测量。
3.1建立空间直角坐标系
由羊体二值化轮廓线坐标结合深度图像中获得的深度值可以构成羊体空间轮廓线。本研究以x、y轴表征轮廓点位置,z轴表征深度信息,建立三维直角坐标系。
3.2空间分辨率
体尺测量中,需要确定空间分辨率,即确定图像上2个像素点的距离所代表的实际尺寸。每个像素(u,v)在x轴与y轴方向上的物理尺寸为dx、dy,则图像中任一像素的坐标为:
实际操作时,摄像头与羊体监控位置保持不变,根据墙面标记点A、B标定摄像头,已知AB距离为2 m,A、B处于同一行,相隔469个像素,故可确定dx=dy=0.427 cm(图13)。
羊体深度图像由Kinect获取,本研究选用的深度图像灰度值为0~255,根据Kinect相关信息,深度值分辨率为1.6 cm。
3.3剔除不可信点
考虑到计算量等因素,将随机采样空间轮廓线上部分点表示到三维直角坐标系中。获取深度信息时,由于深度传感器Kinect自身的因素,对羊体边缘部分的深度测量存在许多随机误差与不确定的结果,而且往往由于深度干扰,会出现虚假边缘的判定,这些点的深度信息不可靠,应将其剔除。求出采样轮廓点深度值的均值:
di为第i个采样点的深度值,设定阈值:
dmax为采样点中的最大深度值。利用阈值对采样点进行限制,满足条件:|di-d| 3.4拟合平面 得到较为可信的羊体空间轮廓点之后,根据各个点的坐标位置可基本确定羊体在空间中的站位姿态,为了更加精确表征羊体站姿状态,采用最小二乘法,对可信的空间轮廓线采样点进行拟合运算得到拟合平面。空间平面的一般表达式为: 对于空间中分布的n(n≥3)个点,坐标为(xi,yi,zi),根据最小二乘法则,用这n个点拟合上述平面方程。部分轮廓采样点坐标见表2。 利用最小二乘法对轮廓采样点进行平面拟合,得到采样点拟合平面的一般表达式的各个参数A=-0.000 797 2,B=0.000 265 7,C=-0.005 4。因此拟合平面的一般方程为:-0.000 797 若M′、N′为2特征点坐标,将特征点坐标沿z轴映射到拟合平面上,得点M(x1,y1)、N(x2,y2)。在不考虑深度坐标时,测量得到的羊体体尺长度L′为真实体尺长度L在xoy坐标平面的投影长度。所以线段L(MN)的长度为体尺数据的真实值(图16)。 将体尺计算由二维平面转入三维空间,对克服羊体站姿问题有一定帮助。 4试验结果 本研究基于VS2010软件,结合微软公司提供的SDK,搭建羊体尺测量系统,主界面如图17所示。 5结论 本研究采用Kinect传感器采集羊体彩色、深度图像,采用彩色、深度图像融合的方法分割得到羊体轮廓线,有效克服了现场背景复杂、光线及羊体站姿变化的干扰,在实地测量中,所得体尺数据相对误差在4.3%之内,对机器视觉技术在家畜体尺测量方面的应用具有积极意义。 参考文献: [1]刘同海,滕光辉,付为森,等. 基于机器视觉的猪体体尺测点提取算法与应用[J]. 农业工程学报,2013,29(2):161-168. [2]刘波,朱伟兴,霍冠英. 生猪轮廓红外与光学图像的融合算法[J]. 农业工程学报,2013,29(17):113-120. [3]江杰,周丽娜,李刚. 基于机器视觉的羊体体尺测量[J]. 计算机应用,2014,34(3):846-850,887. [4]赵建敏,许晓伟,贾慧媛. 基于Kinect体感传感器的心理宣泄系统的实现[J]. 传感器与微系统,2014,33(8):119-122. [5]王琰滨,蒋龙泉,冯瑞. 一种低图像质量车辆牌照的字符分割方法[J]. 计算机应用与软件,2013,30(3):108-110,117. [6]田亚磊,高腾云,白继武,等. 河南小尾寒羊体尺与体重的相关性分析[J]. 中国畜牧兽医,2009,36(11):200-202. [7]王德超,涂亚庆,张铁楠. 一种多尺度Harris角点检测方法[J]. 计算机应用与软件,2008,25(12):242-243,262. [8]郭娟娟,钟宝江. U弦长曲率:一种离散曲率计算方法[J]. 模式识别与人工智能,2014,27(8):683-691. [9]钟宝江,廖文和. 基于精化曲线累加弦长的角点检测技术[J]. 计算机辅助设计与图形学学报,2004,16(7):939-943.许健才. 一种非下采样轮廓波变换域水果图像预处理方法[J]. 江苏农业科学,2015,43(11:499-501.