赵建敏, 赵忠鑫, 李 琦
(内蒙古科技大学 信息工程学院,内蒙古 包头 014010)
基于Kinect传感器的羊体体尺测量系统*
赵建敏, 赵忠鑫, 李 琦
(内蒙古科技大学 信息工程学院,内蒙古 包头 014010)
在基于机器视觉的羊体体尺测量中,当光线、背景等产生干扰时,彩色图像无法准确提取出羊体轮廓,且羊体站姿的变化也会造成测量误差。基于VS2010,Windows SDK搭建羊体测量系统,为解决背景干扰的问题,采用Kinect传感器获取现场羊体彩色和深度图像,将彩色与深度图像相结合提取羊体轮廓;结合深度信息建立羊体空间轮廓线拟合平面,并计算其与像平面夹角,进行体位站姿纠偏后得到羊体体尺数据。经过实验测试,相对误差在4.3 %以内。
机器视觉;轮廓提取; 特征点; 体尺测量; Kinect传感器
基于机器视觉的家畜体尺测量改变了接触式的测量方法,国内相关研究有:刘同海、滕光辉等人利用背景减法和去除噪声算法得到猪体体尺测点[1];江杰、周丽娜等人利用背景差分法提取羊体轮廓[2];刘波、朱兴伟等人运用自动阈值分割与形态学处理进行轮廓分割[3]。
但上述方法在实测中,当家畜与背景颜色相近时,彩色图像差分结果残缺,阈值难以确定,无法单纯分割出目标家畜。另外,羊体与像平面的夹角无法得知,对测量造成较大误差。本文在VS2010环境下基于Kinect传感器搭建的羊体体尺测量系统。利用彩色、深度图像的多元信息提取羊体轮廓线;结合传感器深度值建立轮廓点三维坐标,计算出羊体与像平面夹角,得到更加准确的体尺数据。
本文参照人工羊体体尺测量设计出基于机器视觉中的测量步骤。通过Kinect传感器捕捉羊体彩色、深度图像,分别得到各自的轮廓提取结果,将二者信息结合最终得到闭合羊体侧面轮廓线。羊体特征点如图1,臀部特征点A,耆点B,前后足点C,D。AB长为羊体体长,BD长为体斜长,BC长为体高。
图1 羊体轮廓与特征点
通过对得到的羊体轮廓线数字图像进行分析,得到各特征点,计算出羊体体尺。总体方案如图2所示。
图2 体尺测量系统总体结构图
软件结构分驱动层和应用层,如图3所示。
图3 软件结构图
驱动层包括KinectSDK,MySQL数据库,应用层包括羊体特征点提取、体尺计算、站姿纠偏、羊体体尺档案等。本系统采用多线程方法设计应用程序,线程1进行摄像头读取,视频流的采集,线程2进行轮廓提取,特征点寻找,体尺计算等子程序。操作系统为线程1、线程2提供不同的时间片,设置线程2的优先级高于线程1。
Kinect传感器是微软公司在2009年发布的一种体感传感器[4],它可同时采集彩色、深度图像,流程如4所示。
首先,进行初始化:1)检查Kinect设备是否连接到电脑上,以及Kinect设备的驱动程序是否安装成功;2)若设备状态正常,NuiCreateSensorByIndex函数创建设备ID。
图4 彩色与深度流获取流程图
其次,分配相应缓存空间,设定图像的分辨率。通过NuiInitialize(NUI_INITIALIZE_FLAG_USES_COLOR )和NuiInitialize(NUI_INITIALIZE_FLAG_USES_DEPTH)函数对深度彩色视频流进行初始化。本系统采用逐帧读取视频流的方法,通过CvCapture()结构体来保存图像捕获的信息,CvCapture()自动获取下一帧的位置,每获取一帧后,利用MapColorCoordinatesToDepth()或MapDepthCoordinatesToColor()对深度与彩色图像进行配准,之后这些信息立即更新,自动获取下一帧,周而复始。在主界面创建静态框,利用DrawToHDC()将图像逐帧画到静态框中,形成彩色、深度流。为实现数据保存,采用CvCreateVideoWriter()视频文件写入器函数将数据流以一定格式写入,完成保存。退出时,调用函数NuiShutdown(),释放对Kinect设备的控制权。
羊体轮廓提取利用彩色和深度图像信息相互结合的办法。流程图如图5所示。
图5 轮廓提取流程图
利用CvSaveImage()函数对现场羊体彩色、深度图形进行采集,系统自动对采集图像编号,并存入后台数据库。通过鼠标事件回调函数CvSetMouseCallback(),返回单击事件onClick选取目标羊体。此时目标羊体处生成一个标记点K,彩色图像以K点为基准,采用局部自适应阈值分割法[5]进行阈二值化处理,以某一阈值将像素点灰度一分为二,再用Canny算法对二值化后的图像进行轮廓提取,深度图像在去噪后直接进行轮廓提取。
图6(a),(b)分别为利用彩色、深度提取到的羊体轮廓线。图6中轮廓线处像素点灰度为255,其余部分灰度为0。在目标羊A处标记点灰度值初始化为200。定义与一像素点a有公共边的像素为其邻位,如b1,b2,b3,b4为a邻位,如图7。
图6 轮廓提取结果
图7 a点及其邻位
若灰度值为200的像素点a邻位存在灰度值为0的像素点,则称a为奇异点。定义奇异点的膨胀操作为将邻位中灰度值为0的位置灰度改变为200。程序以标记点开始作膨胀运算,直至无奇异点时,羊体A区域已被灰度值为200的像素点填充,此时取阈值T=200进行二值化,如图8(a),再经提取轮廓,得到闭合轮廓,如图8(b)。
图8 目标羊体轮廓图
根据U弦长曲率[6]法得到背部轮廓线臀部相应位置曲率最大点[2]即为臀部特征点。
通过逐行扫描的双腿识别算法的到前后蹄点的坐标[7]。根据前蹄点像素点位置,设fy为前足点所在列,因此,耆点也在第fy列。找出轮廓线上所有列数为fy的点,所在行数分别为T1,T2,T3,…,Tn。最终根据限定条件
(1)
坐标(x,y)即为耆点坐标。
在实测中,羊体中心平面与测量平台中心平面可能存在一定的角度θ,如图9。此时,在二维图像中测得的体尺数据L′为真实体尺L在二维图像平面上投影长度,因此,需结合深度信息进行测量。
图9 羊体站位俯视图
6.1 建立空间直角坐标系
深度图像帧中,每一个像素点都包含了特定的距离信息,即该特定的(x,y)点坐标处离摄像头平面最近的物体到该平面的距离。
本文深度图像分辨率为640×480,由羊体二值化轮廓线坐标结合深度图像中获得的深度值构成羊体空间轮廓线。空间轮廓线上的点类型为DepthImagePoint(X,Y,Z),其中,(X,Y)为深度图像像素坐标,即轮廓点位置,Z为深度值。本文选用的深度图像的灰度值为0~255,根据Kinect相关信息,深度值分辨率为1.6 cm。
如图10,在实际测量时,摄像头与羊体监控区域位置保持相对不变,根据墙面标记点A,B进行摄像头标定,已知A,B相距200 cm,水平相隔469个像素,故可确定dx=dy=0.427 cm。
图10 Kinect安装示意图
6.2 剔除不可信点
考虑到计算量等因素,将空间轮廓线上的随机采样点表示到三维直角坐标系中。由于Kinect在对羊体边缘部分的深度测量存在着许多随机误差,产生的虚假边缘的深度信息并不可靠,故将其剔除。求出采样轮廓点深度值的均值
(2)
图11 部分空间轮廓点
6.3 拟合平面
在得到较为可信的羊体空间轮廓点之后,采用最小二乘法,对这些点坐标进行拟合运算得到其的拟合平面。部分轮廓采样点坐标见表1。
表1 部分轮廓采样点的坐标(cm)
Tab 1 Coordinates of partial contour sampling point (unit: cm)
轴向123456X108.6113.3130.4165.4171.4188.9Y104.190.482.898.6112.2177.1Z164.8171.2171.2169.6164.8160.0
羊体轮廓点拟合平面的一般方程为
-0.000 797 2x+0.000 265 7y-0.005 4z+1=0.
(3)
拟合平面和轮廓点如图12。得到了羊体站位拟合平面,可将特征点坐标映射到拟合平面上,计算得到体尺数据。
图12 空间轮廓点与拟合平面
系统主界面如图13,随机选6只羊为样本,以体长为例,人工与本系统各测5次取均值,以人工方法测量结果为真值,给出本系统相对误差,见表2。
图13 主界面 Fig 13 Main interface
表2 体长测量实验结果
本文在VS2010环境下,结合Windows SDK设计并实现了羊体体尺测量系统,基于Kinect传感器,采用彩色、深度图像融合的方法分割得到羊体轮廓线,克服了背景差分、阈值分割在提取家畜轮廓时出现的差分结果残缺、阈值选取困难及羊只站姿变化干扰等问题,实测中,相对误差在4.3 %之内,对机器视觉技术在家畜体尺测量方面的应用具有积极意义。
[1] 刘同海,滕光辉,付为森,等.基于机器视觉的猪体体尺测点提取算法与应用[J].农业工程学报,2013,29(2):161-168.
[2] 江 杰,周丽娜,李 刚.基于机器视觉的羊体体尺测量[J].计算机应用,2014,34(3):846-850,887.
[3] 刘 波,朱伟兴,霍冠英.生猪轮廓红外与光学图像的融合算法[J].农业工程学报,2013,29(17):113-120.
[4] 赵建敏,许晓伟,贾慧媛.基于Kinect体感传感器的心理宣泄系统的实现[J].传感器与微系统,2014,33(8):119-122.
[5] 王琰滨,蒋龙泉,冯 瑞.一种低图像质量车辆牌照的字符分割方法[J].计算机应用与软件,2013,30(3):108-110,117.
[6] 郭娟娟,钟宝江.U弦长曲率:一种离散曲率计算方法[J].模式识别与人工智能,2014,27(8):683-691.
[7] 罗瑞琨,魏有毅,尹华彬,等.基于Kinect的主动式伴舞机器人的研究与设计[J].机械设计与制造,2013(6):1-3,7.
赵忠鑫,通讯作者,E—mail:zhao479059413@163.com。
Sheep body size measurement system based on Kinect sensor*
ZHAO Jian-min, ZHAO Zhong-xin, LI Qi
(School of Information Engineering,Inner Mongolia University of Science and Technology,Baotou 014010,China)
In sheep body measurement based on machine vision,the color image can not extract sheep contour precisely because of light and background interference.Sheep’s uncertain standing posture can also cause measurement error.In order to solve the problem of background interference,measurement system is built based on VS2010, Windows SDK,and Kinect sensor as the image acquisition device is used to acquire the sheep body color image and depth image.Sheep body contour is gained by the way of color and depth fusion.Sheep body space contour fitting plane is established based on depth information, and angle between image plane and fitting plane is calculated to solve the problem of standing posture effect.The test results show the relative error is within 4.3 %.
machine vision; contour extraction; feature points; body measurement; Kinect sensor
2015—01—04
内蒙古科技大学创新基金资助项目(2012NCL027)
10.13873/J.1000—9787(2015)09—0100—04
TP 391.4
A
1000—9787(2015)09—0100—04
赵建敏(1982-),男,内蒙古包头人,硕士,讲师,主要从事人机交互、模式识别方向的研究。