基于深度图像的奶牛表型特征获取系统设计与试验
2020-06-27鞠喜鹏田富洋李法德王中华
鞠喜鹏,田富洋,李法德,王中华,朱 宏
(1.山东农业大学机械与电子工程学院,山东 泰安271018;2.山东园艺机械与装备重点实验室,山东农业装备智能化工程实验室,山东 泰安271018;3.山东农业大学动物科技学院,山东 泰安271018; 4.山东泰开箱变有限公司,山东 泰安271018)
0 引言
在奶牛的养殖过程中,奶牛的表型特征是评价奶牛成长状况的一项重要参数,包含奶牛的体尺、体重和体况等参数,体尺包括体高、体长、胸宽和腰角宽等,不仅能够表达奶牛的生长发育状况,反映奶牛的体态特征,还与奶牛的繁殖能力、产奶能力等性能有一定的相关性[1]。近年来,国内大规模的养殖场越来越重视牧场的机械化水平,但对于体尺测量仍采用人工测量方法[2]。人工测量不仅费时费力,还易受主观影响,这种接触式测量还会对奶牛产生应激性[3]。采用机器视觉的技术,可以实现无接触测量,避免应激行为,提高工作效率。
运用机器视觉技术测量家畜体尺,国内外已有较多的研究,并取得了一定成果。王可等[4]和郭浩等[5]对生猪进行点云采集,实现了交互式体尺的测量。BEWLEY J M等[6]选择奶牛在经过体重秤时采集牛体图像,并对图像进行人工手动添加测量点分析奶牛体况,进行奶牛的体况评分。可以发现,现阶段机器视觉测量技术仍在试验阶段,测量的参数相对较少。为此,本文利用2台Kinect获取顶面和侧面的深度图像和点云数据,利用深度图像识别奶牛表型特征,并结合点云数据读取尺寸参数,搭建系统软硬件平台,利用该系统平台对奶牛表型进行测量试验,试验结果表明该系统能够较准确地测量出奶牛的体重、体高、体长和体宽等表型参数。
1 表型特征获取系统设计
1.1系统硬件
硬件系统主要由拦截装置、体重采集装置、图像采集装置和围栏4大部分组成,如图1所示。
其中拦截装置包括前拦截装置和后拦截装置两部分,由一台电机带动拦杆的起落实现对奶牛的拦截作用。该系统安装在奶牛挤奶厅后的回栏通道中,奶牛在挤奶完成后回栏的过程中经过该系统,行走至前拦截装置,安装在一侧拦杆上的RFID无线射频读卡器读取到奶牛耳标信息数据,记录奶牛编号。等到奶牛完全进入采集区域后,前拦截装置拦杆降下,同时计算机管理控制中心完成对奶牛的信息采集,采集完成后,后拦截装置拦杆升起,奶牛自行离去,待奶牛完全离开后拦截装置后,后拦截装置拦截降下,前拦截装置拦杆升起,开始对下一头奶牛的采集过程。奶牛在采集区域时计算机管理控制中心记录保存该只牛的图像、点云和体重等数据,以供体尺获取、数据查询和打印报表等使用。
1.2几何表型特征获取系统算法设计
系统算法分为信息采集过程和信息处理过程两部分。信息采集过程是计算机管理控制中心通过串口接收无线射频读卡器读到的奶牛编号和XK3190-A9称量显示控制器的体重数据,控制Kinect摄像头拍摄深度图像和点云数据,并完成3者的匹配。待采集完成后进入信息处理过程,通过数字提取算法对串口接收的数据提取有效数据,获取奶牛体重。图像处理算法对获得的深度图像先进行降噪预处理,利用背景减去法去除地面和围栏等影响,然后对其阈值分割二值化图像,并进行滤波、去除小块区域、开闭运算和空洞填充等获取完整的奶牛目标区域,对目标采用边缘检测、角点检测及凸包运算等检测特征点获得奶牛特征点,获取特征尺寸[7]。
1.2.1信息采集过程
无线射频读卡器、称量显示控制器及Kinect摄像头通过USB串口连接到计算机,通过MATLAB中的serial函数创建串口并实现与无线射频读卡器跟称量显示控制器的通信。利用Kin2工具箱控制Kinect摄像头,2台Kinect分别连接到2台计算机,通过TCPIP协议完成2台计算机之间的通讯,通讯过程如图2所示。
1.2.2信息处理过程
奶牛的体重在采集过程中容易受到奶牛的动态干扰,出现体重数值的跳动,造成数据读取困难,对奶牛采集到的多组数据进行回归分析及平滑处理,去除离散较大的数值,留下稳定时刻的平滑数据,并计算平均值,作为奶牛的体重。
Kinect v2.0输出的深度图像中每个点的像素值均代表此点位置物体到摄像头的距离,距离越远像素值越大。在实际的测量中,Kinect v2.0摄像头发射的红外光线的高度相干性,不可避免地会出现“散斑噪声”,这样就会造成物体的边缘信息在深度图像中出现严重的缺失。所以在处理深度图像提取奶牛目标时,首先运用背景减去法消除来自地面及围栏设备的干扰,其次利用阈值分割、滤波等算法去除细小噪声的影响,最后对特征点提取与匹配获得奶牛体尺[8]。
(1)背景减去法。背景减去法基本思想是将事先采集的背景图像序列对每个像素进行统计,作为背景模型,把包含有目标的图像与背景模型相减;其次将计算结果在一定阈值限制下进行二值化,判断出当前图像中出现的偏离背景模型值较大的那些像素,就是目标物体的像素。由于目标物体和背景在灰度或色彩上存在差别相减,阈值操作后得到的结果直接给出了目标的位置、大小和形状等,从而得到较完整的信息。
采用MATLAB中abs()函数对图像像素进行统计,比较无牛背景图像跟有牛图像中每个像素点的差值。由于在采集过程中摄像头位置固定,所以无牛背景图像和有牛图像中的地面跟围栏在两幅图像中的位置是大体不变的,故两幅图像中像素值变化最大的就是奶牛所在的位置。该方法得到的目标完整明显,背景也被很好地去除,只留下了一部分细小噪声。背景减去前后变化如图3所示。
(2)阈值分割图像。阈值分割方法有很多种,最常见的全局阈值分割有迭代阈值分割、基于灰度直方图的阈值分割和最大类间方差阈值分割。该系统在反复调试和比较后选定迭代阈值分割法为奶牛图像处理的阈值分割方法。
在迭代阈值分割中,假设有一副图像f(x,y),Z(x,y)是图像上(i,j)点灰度的概率。迭代法采用趋于逼近的思想,则通过迭代求图像最佳分割阈值的方法如下,阈值分割的效果如图4所示。
步骤一:求出图像中的最小和最大灰度值Z0和Zk的阈值初值T0=(Z0+Zk)2。
步骤二:根据阈值Tk将图像分割成目标和背景两个部分,求两个部分的平均灰度Z0和ZB。
(1)
(2)
步骤三:求出新阈值Tk+1。
(3)
步骤四:若Tk=Tk+1,则结束,否则,k+1趋向于k,转到步骤二。
步骤五:步骤四结束后,Tk即为最佳阈值。
阈值分割后图像含有大量的细小噪声,去除细小噪声将图像二值化处理后对其通过滤波、开闭运算、空洞填充和连通区域面积检测等算法删除目标区域后的噪声区域,使图像只显示目标区域[9]。该方法属于比较有针对性的除噪方法之一。
(3)特征点提取与匹配。对只含有目标的图像进行边缘检测、角点检测和凸包检测等。
图像的边缘是指其周围像素灰度急剧变化的那些像素的集合,是像素最基本的特征[10]。边缘存在于目标、背景和区域之间,它是图像分割最重要的依据。边缘是位置的标志,对灰度变化不敏感,因此,边缘也是图像匹配对的重要特征。
角点是二维图像上邻近图像亮度变化剧烈或者图像边缘上面的极值点,没有明显的数学定义。为了提高处理实时性降低计算复杂性,需要减小数据量,但是需要保留这些图像中信息丰富、具有描述图像信息重要特征的点[11]。
根据角点利用凸包Convex hull运算,如图5所示,经过大量试验后,发现凸包检测后凸包线的转折点为奶牛的坐骨、腰角和胸宽等特征位置。
对图像处理后得到奶牛的特征点,记录特征点的位置,读取该头奶牛采集到的点云数据,通过特征点在图像中的位置坐标提取到该点在点云数据中的坐标,该坐标即为该点在空间中相对于摄像头的位置,读取的点云之间的距离就是奶牛的体尺数据。
2 试验结果与分析
设计了一种奶牛几何表型特征获取系统,首先在奶牛场挤奶厅回栏通道中选取合适位置安装系统硬件,进而可以获取一个稳定可靠的背景。当有奶牛移动通过设备采集区域时,Kinect摄像头捕捉奶牛的图像并上传至计算机进行程序处理。经过图像预处理、特征点提取与匹配和奶牛轮廓匹配算法等步骤的处理,实现奶牛表型数据的获取工作。表1为奶牛体高数据对比。
表1 奶牛体高数据对比
试验图像采集于山东省泰安市金兰乳业,采集对象为现阶段具有高效产奶量的荷斯坦奶牛,样机现场试验情况如图6所示。
3 结束语
奶牛几何表型特征获取系统安装在奶牛挤奶完成后的回栏通道中,充分利用了场地,每头牛的采集时间较短,不会造成堵塞。利用角点检测和凸包检测结合的图像处理方法,能够有效获取奶牛的特征位置,减少处理的复杂性。利用2台Kinect摄像头分别对侧面和顶面进行采集,获取到的数据更加全面。将该奶牛几何表型特征获取系统获取的奶牛体尺数据与人工测量的数据进行比较,其准确率高达96.1%,能较准确地获取奶牛体尺数据。系统工作稳定、测量精度高,为实现数字化养殖打下了基础,具有很好的应用前景。