欢迎您访问《智慧农业(中英文)》官方网站! English
信息处理与决策

基于深度图像的多姿态肉牛体尺自动测量方法

  • 叶文帅 , 1, 2 ,
  • 康熙 2, 3 ,
  • 贺志将 1, 2 ,
  • 李孟飞 1, 2 ,
  • 刘刚 , 1, 2
展开
  • 1. 中国农业大学智慧农业系统集成研究教育部重点实验室,北京 100083
  • 2. 中国农业大学农业农村部农业信息获取技术重点实验室,北京 100083
  • 3. 浙大宁波理工学院 计算机与数据工程学院,浙江 宁波 315000
刘 刚(1966-),男,博士,教授,研究方向为电子信息技术农业应用。E-mail:

叶文帅(1997-),男,硕士研究生,研究方向为农业关键信息技术。E-mail:

收稿日期: 2022-10-06

  网络出版日期: 2022-12-14

基金资助

国家重点研发计划项目(2021YFD1300502)

Automatic Measurement of Multi-Posture Beef Cattle Body Size Based on Depth Image

  • YE Wenshuai , 1, 2 ,
  • KANG Xi 2, 3 ,
  • HE Zhijiang 1, 2 ,
  • LI Mengfei 1, 2 ,
  • LIU Gang , 1, 2
Expand
  • 1. Key Lab of Smart Agriculture Systems, Ministry of Education, China Agricultural University, Beijing 100083, China
  • 2. Key Laboratory of Agricultural Information Acquisition Technology, Ministry of Agriculture and Rural Affairs, China Agricultural University, Beijing 100083, China
  • 3. School of Computing and Data Engineering, NingboTech University, Ningbo 315200, China

Received date: 2022-10-06

  Online published: 2022-12-14

本文亮点

养殖场中肉牛较为活跃,采集得到的图像数据中肉牛姿态多变,肉牛姿态端正帧较少,导致自动测量肉牛体尺困难。针对以上问题,本研究通过分析肉牛骨架特征和肉牛图像边缘轮廓特征,提出一种多姿态肉牛体尺自动测量方法。首先,利用深度相机Azure Kinect DK从正上方采集肉牛俯视深度视频数据,对视频数据进行分帧处理;其次,对原始深度图像进行预处理,将肉牛从复杂的背景中提取出来;再次,利用Zhang-Suen算法提取目标图像肉牛骨架,检测骨架交点和端点,分析肉牛头部特征,并确定头部去除点,去除图像中肉牛头部信息;最后,利用改进的U弦长曲率算法提取肉牛轮廓曲率曲线,根据曲率值确定体尺测点,将体尺测点转换到三维空间中,计算体尺参数。本研究通过分析大量深度图像数据,将图像中肉牛姿态分为左歪、右歪、姿态端正、低头和抬头五类。试验结果表明,本研究提出的基于骨架的多姿态肉牛头部去除方法在5种姿态下的头部去除成功率均高于92%;在23头肉牛不同姿态共46帧深度图像中,利用基于改进U弦长曲率的体尺测点提取方法,测得体直长测量的平均绝对误差为2.73 cm,体高测量的平均绝对误差为2.07 cm,腹宽测量的平均绝对误差为1.47 cm。研究结果可为精确测量多姿态下肉牛体尺提供支撑。

本文引用格式

叶文帅 , 康熙 , 贺志将 , 李孟飞 , 刘刚 . 基于深度图像的多姿态肉牛体尺自动测量方法[J]. 智慧农业, 2022 , 4(4) : 144 -155 . DOI: 10.12133/j.smartag.SA202210001

Highlights

Beef cattle in the farm are active, which leads the collection of posture of the beef cattle changeable, so it is difficult to automatically measure the body size of the beef cattle. Aiming at the above problems, an automatic measurement method for beef cattle's body size under multi-pose was proposed by analyzing the skeleton features of beef cattle head and the edge contour features of beef cattle images. Firstly, the consumer-grade depth camera Azure Kinect DK was used to collect the top-view depth video data directly above the beef cattle and the video data were divided into frames to obtain the original depth image. Secondly, the original depth image was processed by shadow interpolation, normalization, image segmentation and connected domain to remove the complex background and obtain the target image containing only beef cattle. Thirdly, the Zhang-Suen algorithm was used to extract the beef cattle skeleton of the target image, and calculated the intersection points and endpoints of the skeleton, so as to analyze the characteristics of the beef cattle head to determine the head removal point, and to remove the beef cattle head information from the image. Finally, the curvature curve of the beef cattle profile was obtained by the improved U-chord curvature method. The body measurement points were determined according to the curvature value and converted into three-dimensional spaces to calculate the body size parameters. In this paper, the postures of beef cattle, which were analyzed by a large amount of depth image data, were divided into left crooked, right crooked, correct posture, head down and head up, respectively. The test results showed that the head removal method proposed based on the skeleton in multiple postures hads head removel success rate higher than 92% in the five postures. Using the body measurement point extraction method based on the improved U-chord curvature proposed, the average absolute error of body length measurement was 2.73 cm, the average absolute error of body height measurement was 2.07 cm, and the average absolute error of belly width measurement was 1.47 cm. The method provides a better way to achieve the automatic measurement of beef cattle body size in multiple poses.

1 引 言

随着中国人民膳食结构的改善,人们对牛肉的数量和品质要求愈来愈高,联合国粮食及农业组织最新数据显示,1990年至2020年中国人均牛肉的消费量上涨5.25倍1。肉牛体尺参数是肉牛生长发育状况以及选种育种的重要判断依据,而在现阶段,大多数养殖场仍采用传统人工方法测量肉牛体尺数据2,这种测量方法工作量大、效率和准确性低、容易造成肉牛应激,还会影响动物福利,因此开展肉牛体尺的自动化测量研究具有重要意义3
国内外已有较多基于计算机视觉的牲畜体尺测量技术的研究,且取得了较好的研究进展。Spoliansky等4使用Kinect相机自动提取牧场中每头奶牛的个体特征,并设计回归模型对奶牛的身体状况评分,结果表明机器学习方法可自动评测奶牛体况。Nir等5使用单个Kinect V2传感器获取奶牛深度图像,采用机器学习方法、椭圆拟合方法和分位数回归方法提取奶牛肩高、臀高等体尺参数,结果表明利用深度相机采集到的深度信息可自动测量奶牛体尺参数,且测量精度较高。Salau等6使用六个Kinect相机采集奶牛深度图像,结合手动标记的前乳头和坐骨结节点,通过标记点成功计算出静止和行进状态下奶牛坐骨长度和坐骨结节的高度。赵建敏等7提出一种基于Kinect v4传感器的肉牛体测量方法,采集彩色和深度图像,结合目标检测和边缘检测等方法,测量牛体鬐甲高、体斜长和体直长等参数,体尺测量误差仅为0.76%、1.68%和2.14%。李嘉位等8使用Kinect DK深度相机、红外对射光栅触发器和射频识别搭建三维点云采集系统,实现了肉牛点云的三维重建与分析,采集成功率为91.89%,体尺重建误差为0.6%。赵新强9通过凸包算法去除牛头和牛尾获取奶牛身体区域,通过角点分析方法获取奶牛体高、体宽、体长数据,体尺平均误差均在3.2%以内。常海天10将牛体姿态分为抬头和低头,在不同姿态下设计不同的体尺测量算法,实现了牛只体高的测量,体高测量的平均误差为1.9%,胸围和腹围的预估误差分别为2.865%和3.463%。以上研究中,牲畜体尺测量多是基于姿态端正图像数据,但在实际自动化测量应用中,这些被测牲畜多是处于运动状态,采集图像中的牲畜姿态也多是不端正的,导致牲畜体尺测量效率较低。
针对上述问题,为提高牲畜体尺测量效率,本研究利用肉牛骨架特征和肉牛轮廓边缘特征,开展图像中多姿态下肉牛头部去除方法和体尺测点提取方法研究,实现自动测量多姿态下肉牛体尺参数。

2 材料与方法

2.1 数据获取

试验数据采集于河北省保定市定兴县某肉牛养殖场,采集对象为10月龄左右的西门塔尔肉牛共34头,采集时间为2021年9月30日。数据采集区域长2.37 m,宽1.53 m,采集装置如图1所示。当肉牛进入数据采集区域后,关闭前后门,利用深度相机采集肉牛俯视深度视频数据,采集完毕后打开前门,肉牛进入休息区域。深度相机支架架设在墙体外侧,以降低牛的应激反应。调整相机高度和角度使其能拍摄到完整的肉牛图像,相机距离体重秤所在平面2.92 m,调整相机为NFOV2×2装箱模式,帧率为15 f/s。利用ffmpeg工具对采集到的肉牛俯视深度视频数据进行分帧,得到肉牛俯视深度图像。
图1 肉牛数据采集装置

Fig. 1 Data acquisition device of beef cattle

2.2 图像预处理

深度相机采集得到的图像数据存在一定畸变,为检测相机在数据采集时的误差,并对图像进行畸变矫正,将相机架设在距离尺寸为8 cm ×15 cm×29 cm的长方体物体前方1.5 m处,利用Matlab软件标注实际采集到物体大小,数据采集误差为2.49 cm,如图2(a)所示。为减小数据采集误差,本研究利用8×9标定板对相机的内部参数和畸变系数进行标定,标定后数据采集误差为0.35 cm,如图2(b)所示,满足数据采集需求。
图2 相机矫正前后肉牛数据采集效果

Fig. 2 Data collection effect of beef cattle before and after depth camera correction

由于养殖场环境复杂,采集到的原始深度图像中除包含肉牛外,还有栏杆、地面和地磅秤等复杂的背景信息,这些背景信息影响体尺测点的提取精度,因此本研究去除了图像中的背景信息,处理效果如图3所示,具体步骤如下。
图 3 肉牛深度图像预处理结果

Fig.3 Deep image preprocessing results of beef cattle

(1)利用影差法11获取深度图像 f i ( x , y )与背景深度图像 f b ( x , y )的深度差值图像 D ( x , y ),计算如公式(1)所示,结果见图3(a)
D ( x , y ) = f i ( x , y ) - f b ( x , y )
本研究中青绿色图像均是经处理后的可视化图像,原始图像为16位深度图像,可视化效果不佳。
(2)对16位深度图像进行归一化12处理,得到图3(b)所示图像。图3(a)中像素最高值为 D ( x m a x , y m a x ),像素最低值为 D ( x m i n , y m i n ),则归一化后 ( x , y )点的像素值 D ( x , y )变为 D n o r m,如公式(2)
D n o r m = D ( x , y ) - D ( x m i n , y m i n ) D ( x m a x , y m a x ) - D ( x m i n , y m i n ) × 255
(3)利用基于分水岭的图像分割13方法获取含有牛的二值图像,但由于牛与栏杆相距较近且深度值差异不大,导致分割后的图像带有少量栏杆像素点,如图3(c)所示。
(4)利用提取图像连通域方法得到只含有肉牛的目标图像,如图3(d)所示。

2.3 基于骨架的多姿态下肉牛头部去除

针对牛头摆动造成体尺测量误差较大的问题,赵新强9采用凸包分析方法去除牛头信息,将牛只身体区域作为体尺测量对象。但凸包分析方法只适用于牛姿态端正图像,鲁棒性较差。
为去除多姿态下的肉牛头部信息,本研究提取了肉牛背部主骨架,效果如图4所示。首先,利用Zhang-Suen算法14不断迭代细化处理肉牛目标图像 C ( x , y ),得到肉牛原始骨架;其次,利用单像素细化算法将肉牛骨架宽度细化为1像素;再次,利用3×3卷积核遍历图像中的前景点,提取骨架交点和端点,并设置骨架交点处8邻域内像素值为0,通过最大连通域方法将肉牛整体骨架分为若干个骨架,如图4(a)所示;最后,计算图4(a)中各骨架最小外接矩形所占面积,得到矩形面积最大的骨架即为肉牛主骨架,如图4(b)所示。
图4 利用Zhang-Suen算法获取肉牛主骨架

Fig. 4 Getting the main skeleton of beef cattle by using Zhang-Suen algorithm

交点约束条件为公式(3)
N P = 3 S P = 255
端点约束条件为公式(4)
N P = 1 S P = 255
其中, N P是与P相邻的8个像素中的前景点个数,个; S P P点处的像素值。
扫描图4(b)中主骨架像素点,存在两个8邻域内 N ( P ) = 1的点。比较两点间坐标位置关系,位置偏左靠上的点为主骨架前端点 P s t,另一点为主骨架后端点 P e n
由于图像中肉牛骨架为离散点,利用后向差分方法求 P s t点处的斜率。设骨架前端点为 G 1 ( x l , y l ),以 G 1为起始点依次计算主骨架序列 G i ( x i , y i )中相邻两点间的距离d,用N记录 d = 2 出现的次数,若N = 3则记录最后一次参与计算距离的点 G l ( x l , y l ),结束计算。主骨架前端点处的斜率计算如公式(5)
k =   y l - y 1 x l - x 1
分割线的直线方程为公式(6)
y = 1 k ( x - x 1 ) + y 1
利用Canny算子提取 C ( x , y )图像边缘轮廓,利用公式(6)计算得到直线,将肉牛轮廓分为两部分,比较两部分面积,保留面积较大区域 A ( x , y )
利用凸包分析的方法,结合公式(6)计算得到直线,将肉牛轮廓分为上下轮廓,分析肉牛头部特征确定头部去除点,如图5所示。首先,通过凸包分析方法获取 A ( x , y )图像边缘轮廓上的凸包点,如图5(a)所示;其次,对主骨架像素点进行抽样,并将其拟合成直线,直线与轮廓尾部交于点P,尾部凸点距离P点的最近点即为尾根点 P t a,如图5(b)所示;最后,根据尾根点和公式(6)计算得到直线,将肉牛整体轮廓分为上下轮廓,如图5(c)图5(d)所示。
图5 凸包分析方法获取肉牛图像上下轮廓边缘

Fig. 5 Getting the upper and lower contour edges by convex hull analysis method

为确定肉牛头部去除点,首先计算图6(a)中各骨架端点到主骨架前端点 P s t的距离,最短距离为 D m i n;其次在主骨架上检索距离 P s t D m i n长度的像素点 T s k,如图6(b)所示;最后,分别遍历肉牛上下轮廓边缘,检索提取得到上下轮廓距离点 T s k最近的点 O u O d,即为肉牛头部去除点,如图6(c)图6(d)所示。
图6 欧氏距离确定肉牛头部去除点

Fig. 6 Determining the head removal point by Euclidean distance

确定肉牛头部去除点后,连接肉牛头部去除点,得到不含头部的肉牛二值图像,将二值图像与原深度图像进行逻辑“与”操作,得到不含肉牛头部的深度图像,如图7所示。
图7 多姿态下肉牛头部去除图像效果

Fig. 7 Head removal effect of beef cattle in multiple poses

图7中看出,本研究方法能够去除图像中多姿态下肉牛头部信息,头部去除后的躯干均可用于提取体尺测点。

2.4 肉牛体尺测量

2.4.1 基于改进U弦长曲率的体尺测点提取

通过分析图像中肉牛轮廓特征,发现轮廓曲线中肩部曲率最大点和腹部曲率最大点是体尺测点。相比于k余弦曲率、带曲线平滑的差分曲率和L弦长曲率,U弦长曲率有更强的抗旋转性和抗噪性,并且U弦长所对应的曲率与离散曲线真实曲率之间存在着一种线性关系15
计算离散曲线的U弦长曲率时首先要确定其支持邻域15。为防止支持邻域端点落在肉牛轮廓曲线的毛刺点上,影响体尺测量精度,本研究提出了一种基于改进U弦长曲率的肉牛体尺测点提取方法。
l = P i : ( x i , y i , i = 1,2 , , n )为去除头部后肉牛躯干上轮廓曲线, p i为轮廓曲线一像素点,如图8所示。
图8 P i点U弦长曲率的支持邻域

Fig. 8 Support neighborhood of U chord curvature at point P i

P i   支持邻域见公式(7)
Ω P i =   P i f , P i b
支持邻域的约束条件见公式(8)
P i P i f = P i P i b = U
本研究通过分析大量数据,发现肉牛轮廓存在毛刺点,主要分为四类类型,如图9所示,以及分别将它们顺时针方向旋转90°、180°和270°的结果。
图9 肉牛图像毛刺点类型

Fig. 9 Burr point types of beef cattle image

若前景点 P i  和其支持邻域前后端点 P i f P i b落在图9所示的P点,则会影响U弦长曲率计算的准确性,降低体尺测点提取精度。通过分析肉牛轮廓边缘毛刺点的特点,本研究设计一个5×5的卷积核,将卷积核分为正负区域,如图10所示,划分红色区域为正区域,蓝色区域为负区域。利用卷积核遍历肉牛轮廓边缘前景点和支持邻域前后端点,若满足公式(9),则认为该点落在毛刺点上,删除该点,并利用公式(10)重新确定该前景点的坐标。
图10 划分5×5的卷积核正负区域

Fig. 10 Divide the positive and negative areas of the convolution kernel of 5×5

N P = 4 S P = 255 N + P   0 N - P   0  
其中, N P为以P为中心的5×5区域内除P点外像素值为255点的个数,个; S PP点处的像素值; N + P为以P为中心5×5的卷积核正区域内像素值为255点的个数,个。 N - P P为中心5×5的卷积核负区域内像素值为255点的个数,个。
x i f = x i - 2 f + x i - 1 f + x i + 1 f + x i + 2 f 4 y i f = y i - 2 f + y i - 1 f + y i + 1 f + y i + 2 f 4
由于肉牛轮廓曲线为离散曲线,可能在肉牛轮廓曲线上不存在满足 P i点的支持邻域约束条件的前后端点,因此利用线性插值方法来预估满足 P i点支持邻域约束条件的前后端点坐标,差值计算如公式(11)
P i f = u P i +   U f - 1 + 1 - u P i +   U f   , 0 u < 1
根据 P i P i f = U,求出系数u,从而确定邻域前端点 P i f,同理可得邻域后端点 P i b
U弦长曲率的计算公式如式(12)和(13)。
c i =   s i 1 - D i 2 U 2
s i = sign x i - x i b y i f - y i b - ( x i f - x i b ) ( y i - y i b )
其中,( x i b y i b)、( x i f , y i f)分别为点 P i b P i f 坐标; D i =   P i b P i f
本研究提出的改进U弦长曲率算法,首先判断前景点是否为毛刺点;若是毛刺点,则删除该点,再利用前景点周围像素点坐标均值重新定位前景点的位置坐标,来提高U弦长曲率计算的准确性。
利用改进U弦长曲率算法提取肉牛轮廓各像素点曲率值,依次连接肉牛轮廓各像素点的曲率值,得到曲率曲线,利用五点去差值法和线性五点平滑法,对该曲率曲线进行平滑处理,提取曲线肩部曲率值极值点和腹部曲率值极值点,即为体尺测点。

2.4.2 肉牛体尺计算

在传统人工测量肉牛体尺时,体高通常指鬐甲最高点到地面的垂直距离,体直长指肉牛肩端点到坐骨节点的水平距离,腹宽指肉牛腹部的最大宽度16,如图11所示。
图11 肉牛体尺计算示意图

Fig. 11 Schematic diagram of beef cattle body size calculation

首先在背景深度图像地面位置筛选n个像素点,根据相机的内参将像素点转换到三维坐标系下,通过n个点拟合出地平面,获取平面方程,如公式(14);其次,筛选奶牛前1/2区域内所有坐标点的Z值数据9,获取Z最小值点 H i x , y最后,将最小值点转换到三维坐标系下为 H i ' ( x ' , y ' , z ' ),计算 H i '到平面的距离即为奶牛体高H
A x + B y + C z + D = 0
获取腹部区域中曲率极值点为腹宽测点 f 1 ( x 1 , y 1 , z 1 ) f 2 ( x 2 , y 2 , z 2 ),计算两个腹宽测点之间的欧式距离即为腹宽参数 A b,如公式(15)
A b = ( x 1 - x 2 ) 2 ( y 1 - y 2 ) 2 ( z 1 - z 2 ) 2
当肉牛身体歪斜严重时,肩部区域会出现两个曲率极值点。为获取体直长前端点,先判断肩部曲率极值点个数,若存在两个极值点,则取两个极值点的均值点作为体直长前端点 P l e ( x l e , y l e , z l e ),尾根点 P t a ( x t a , y t a , z t a )为体直长后端点,计算体直长前端点到腹宽中点 f 3 ( x 1 + x 2 2 , y 1 + y 2 2 , z 1 + z 2 2 )的欧式距离为d 1,腹宽中点到尾根点的欧式距离为d 2,则体直长L计算公式如(16)。
L = d 1+d 2

3 结果与分析

3.1 头部去除结果分析

随机选取23头肉牛的深度图像数据,由于相邻帧之间的肉牛姿态差异较小,利用抽帧的方法,每间隔10帧抽取1帧作为测试数据,共得到674帧图像数据。首先,通过人眼观察的方法对674帧深度图像进行姿态的初步分类,分别为姿态端正、左歪(本研究中左歪指牛头部和躯干不在一条直线上,且头颈部歪向通道左侧)、右歪(本研究中右歪指牛头部和躯干不在一条直线上,且头颈部歪向通道右侧)、低头和抬头5类;然后,再计算图像中肉牛姿态歪斜角度值和低头抬头幅度值,来进一步确定肉牛姿态。
肉牛姿态不端正程度可以用 θ角度来衡量。首先,提取主骨架最小外接矩形,计算矩形Y轴方向的中点所在X轴方向直线与主骨架交点M,确定主骨架前端点H;然后,确定肩部对应骨架点S;最后,连接MS和HS,求直线 l 1 l 2之间的夹角 θ,如图12所示。通过该方法将674帧深度图像分为3类,若 θ < 15 ° 17,则标记该深度图为姿态端正帧;若 θ > 15 °并且人眼观察认为该图像左歪,则标记该帧为左歪图像;若 θ > 15 °并且人眼观察认为该图像右歪,则标记该帧为右歪图像。
图12 肉牛姿态不端正度评价 θ角度计算方法

Fig. 12 Evaluation method of beef cattle posture skew degree θ

为计算肉牛低头和抬头的幅度值,将深度图像转换为三维点云,利用CloudCompare软件标注牛只头部和肩部的高度,并计算高度差值 H u,用 H u值表示低头和抬头幅度值大小。
以往研究多采用凸包分析的方法来去除图像中牛只头部9。为验证本研究肉牛头部去除方法的高效性,分别用凸包分析方法和本研究所提方法对图像中不同姿态下的肉牛头部进行去除试验分析,结果如表1所示。可知,本研究所提方法在不同姿态下,肉牛头部去除成功率均高于92%,且均高于凸包分析方法的头部去除成功率。
表1 五种姿态下肉牛头部去除结果

Table 1 Head removal results of five postures

肉牛姿态图像 姿态端正图像 左歪图像 右歪图像 低头图像 抬头图像
总帧数/帧 298 194 182 252 30
凸包分析方法成功帧数/帧 126 90 36 90 18
本文方法成功帧数/帧 282 186 168 235 30
凸包分析方法成功率/% 42.28 46.39 19.78 35.71 60
本文方法成功率/% 94.63 98.88 92.31 93.25 100
为进一步验证本研究肉牛头部去除方法在不同歪斜角度下头部去除效果,计算得376帧左歪图像和右歪图像中 θ均值为33.67°,针对姿态歪斜程度,将 θ值小于均值的图像标记为轻度歪斜图像, θ值大于等于均值的图像标记为重度歪斜图像,并按照此方法对左歪图像、右歪图像进行了细分,细分后图像中肉牛头部去除结果如表2表3所示。
表 2 左歪姿态细分后肉牛头部去除结果

Table 2 Head removal results after the left-slanted posture was subdivided

肉牛姿态 总帧 数/帧 凸包分析方法成功帧数/帧 本研究方法成功帧数/帧 θ均值/(°)
轻度左歪图像 100 62 98 21.75
重度左歪图像 94 28 88 47.46
表 3 右歪姿态细分后肉牛头部去除结果

Table 3 Head removal result after the right-slanted posture was subdivided

肉牛姿态 总帧 数/帧 凸包分析方法成功帧数/帧 本研究方法成功帧数/帧 θ均值/(°)
轻度右歪图像 84 24 82 22.09
重度右歪图像 98 10 86 42.56
表2表3可知,肉牛轻度左歪图像 θ均值为21.75°,轻度右歪图像 θ均值为22.09°。对于轻度左歪图像和轻度右歪图像中的头部,凸包分析方法去除成功率分别为62.00%和28.57%,本研究提出的方法去除成功率分别为98.00%和97.62%。对于重度左歪图像和重度右歪图像中的头部,凸包分析方法去除成功率分别为29.79%和10.20%,本研究提出的方法去除成功率分别为93.62%和87.76%。上述分析表明,图像中姿态歪斜角度 θ越大,头部去除越困难,两种方法的头部去除成功率均降低,本研究方法在5种姿态下的头部去除成功率均高于凸包分析方法。
综合考虑图像中肉牛低头和抬头幅度以及姿态歪斜程度对本研究提出的头部去除方法去除结果的影响,对244帧深度图像的姿态歪斜角度 θ 低头幅度 H u以及头部去除结果进行统计分析,如图13所示。其中,蓝色点和绿色点为肉牛头部去除失败帧,蓝色点主要集中在 H u值较大区域,绿色点主要集中在 θ值较大区域,因此当图像中肉牛低头和抬头幅度较大或姿态歪斜程度较高时,存在头部去除失败的情况。224帧深度图像中仅13帧头部去除失败,证明了本研究所提方法的有效性。
图 13 在不同低头幅度 H u和姿态歪斜程度 θ下肉牛头部去除结果

Fig.13 Head removal results of beef cattle under different head-down posture H u and posture skew degree θ

3.2 体尺测量结果分析

为自动提取肉牛体尺测点,对肉牛轮廓进行一系列处理。首先,通过尾根点和主骨架前端点对牛体进行姿态矫正;其次,利用U弦长曲率算法和改进U弦长曲率算法分别计算得到肉牛上下轮廓的曲率曲线,结果如图14所示。对图14分析可知,改进后的U弦长曲率算法计算得到的U弦长曲率曲线更加平滑,能更加准确地计算出肉牛轮廓边缘像素点的曲率值。
图14 U弦长曲率算法改进前后计算得到肉牛轮廓曲率曲线

Fig. 14 Curvature curve of beef cattle contour calculated by U-chord length curvature algorithm before and after improvement

利用人工标注方法和本研究体尺测点提取方法,在3.1节获取测试数据的基础上,针对每头肉牛随机选取2帧深度图像,共获取到23头不同姿态下肉牛46帧深度图像,进行体高、体直长和腹宽的测量。选用点云处理软件CloudCompare对俯视点云进行体尺参数的标注,对于每个体尺参数人工标注三次,求其平均值作为真实值,肉牛体尺参数测量值与真实值的结果见表4,肉牛标号方法为:将第1头肉牛的两帧图像分别标记为1号和2号,第2头肉牛的两帧图像分别标记为3号和4号……第23头肉牛的两帧图像分别标记为45号和46号。
表 4 改进U弦长曲率算法测量肉牛体尺参数结果

Table 4 Measuring the body size parameters of beef cattle by improved U-chord length curvature algorithm

肉牛编号 本文方法测量值 人工测量值 姿态
体高 腹宽 体直长 体高 腹宽 体直长/m
1 1.2803 0.5991 1.2922 1.2651 0.5806 1.3146 低头
2 1.2784 0.5968 1.2577 1.2651 0.5806 1.3146 右歪
3 1.2528 0.5661 1.2546 1.2678 0.5790 1.2615 低头
4 1.2984 0.5968 1.2577 1.2678 0.5790 1.2615 右歪
5 1.2941 0.5852 1.2547 1.3121 0.5521 1.2520 右歪
6 1.3226 0.5761 1.2472 1.3121 0.5521 1.2520 姿态端正
7 1.3161 0.5531 1.2726 1.2946 0.5440 1.2260 姿态端正
8 1.3283 0.5595 1.2613 1.2946 0.5440 1.2260 左歪
9 1.2455 0.6524 1.3217 1.2259 0.6522 1.3523 低头
10 1.2392 0.6706 1.3115 1.2259 0.6522 1.3523 左歪
11 1.1279 0.6435 1.3749 1.2258 0.6486 1.3192 姿态端正
12 1.2420 0.6542 1.3389 1.2258 0.6486 1.3192 左歪
13 1.2813 0.5836 1.2308 1.2793 0.5575 1.3111 低头
14 1.3032 0.5765 1.2477 1.2893 0.5575 1.3111 左歪
15 1.2773 0.5829 1.1892 1.2348 0.6002 1.1899 右歪
16 1.2645 0.5904 1.1791 1.2348 0.6002 1.1899 姿态端正
17 1.2872 0.5736 1.1327 1.2606 0.5909 1.1365 右歪
18 1.2767 0.6093 1.1140 1.2606 0.5909 1.1365 低头
19 1.2565 0.6164 1.1514 1.2348 0.6002 1.1899 右歪
20 1.2422 0.6187 1.1553 1.2348 0.6002 1.1899 右歪
21 1.3331 0.5295 1.2316 1.3187 0.5189 1.2039 姿态端正
22 1.3414 0.5291 1.2271 1.3187 0.5189 1.2039 右歪
23 1.2987 0.5972 1.2444 1.2554 0.6207 1.2914 右歪
24 1.2768 0.6066 1.2731 1.2554 0.6207 1.2914 低头
25 1.2527 0.6408 1.2174 1.2635 0.6209 1.2267 低头
26 1.2793 0.6392 1.1921 1.2635 0.6209 1.2267 右歪
27 1.2690 0.6048 1.2176 1.2506 0.6144 1.2206 左歪
28 1.2631 0.5996 1.2079 1.2506 0.6144 1.2206 姿态端正
29 1.3248 0.5848 1.2481 1.3444 0.5956 1.2821 端正
30 1.3271 0.6140 1.3003 1.3444 0.5956 1.2821 低头
31 1.2858 0.6969 1.1688 1.2549 0.6986 1.2005 右歪
32 1.2360 0.6890 1.1303 1.2549 0.6986 1.2005 右歪
33 1.2803 0.6457 1.2163 1.2631 0.6465 1.2443 姿态端正
34 1.2509 0.6486 1.2287 1.2631 0.6465 1.2443 左歪
35 1.3167 0.5935 1.3026 1.3263 0.5825 1.3017 低头
36 1.3260 0.5947 1.3298 1.3263 0.5825 1.3017 端正
37 1.2250 0.6359 1.2869 1.2403 0.6508 1.2896 低头
38 1.1959 0.6546 1.2919 1.2403 0.6508 1.2896 端正
39 1.2190 0.5985 1.2307 1.2321 0.6069 1.2356 右歪
40 1.1941 0.5960 1.2789 1.2321 0.6069 1.2356 端正
41 1.3209 0.6147 1.1853 1.3187 0.6285 1.2179 右歪
42 1.3093 0.6183 1.1557 1.3187 0.6285 1.2179 右歪
43 1.2517 0.6017 1.1886 1.2674 0.6176 1.2035 姿态端正
44 1.2472 0.5744 1.1662 1.2674 0.6176 1.2035 右歪
45 1.4028 0.5970 1.2225 1.3737 0.6276 1.2762 右歪
46 1.3898 0.6091 1.2561 1.3737 0.6276 1.2762 右歪
表4可知,体直长测量的平均绝对误差为2.73 cm;体高测量的平均绝对误差为2.07 cm;腹宽测量的平均绝对误差为1.47 cm。11号肉牛体高测量误差较大,误差为9.79 cm,主要原因是深度相机分辨率较高,数据采集时存在少量因加工食料而产生的粉尘在牛体上空漂浮,体高测点提取方法误将粉尘到深度相机平面的距离看作是牛体背部到相机平面的距离,体高测点选取错误。44号肉牛的腹宽测量误差较大,误差为4.32 cm,主要原因是该深度图像肉牛轮廓边缘信息缺失严重,本研究虽重新确定了为毛刺点的前景点的位置,但仍使腹宽测点的提取出现较大误差,该因素也导致体直长的测量误差高于均值。
为验证体尺测点提取方法针对非端正姿态下肉牛的体尺测量精度,将46帧深度图像分为姿态端正图像和非端正姿态图像,分别计算两类图像的体高平均误差、体直长平均误差和腹宽平均误差,结果如表5所示。可知,本研究体尺测点提取方法在端正姿态和非端正姿态下肉牛体尺测量误差均较低。与端正姿态下的肉牛体尺测量误差相比较,非端正姿态下的肉牛体高测量误差小于0.81 cm、体直长测量误差高于0.264 cm、腹宽测量误差高于0.418 cm。充分表明改进U弦长曲率的体尺测点提取方法在肉牛的体尺测量效果也较好。
表 5 不同姿态下肉牛体尺测量平均误差

Table 5 Average errors of body measure measurement under different postures

肉牛姿态

体高平均

误差/cm

体直长平均

误差/cm

腹宽平均

误差/cm

端正姿态 2.742 2.515 1.126
非端正姿态 1.932 2.779 1.544
为验证体尺测点提取方法在多姿态下肉牛的体尺测量效果,将体尺测点提取方法测得的肉牛体尺结果与文献[18] 3D特征提取方法、文献[19]基于Mask RCNN的体尺测量方法和文献[7]基于YOLOv5的体尺测量方法体尺测量结果进行对比分析,且后者均是针对端正姿态下牛只进行的体尺测量,如表6所示。可知,本研究方法测得肉牛体直长误差与文献[7]测得体直长误差相差较小,且小于文献[19]测得体直长误差;本研究测得肉牛体高误差高于文献[7]测得体高误差0.86%,且小于文献[18]和文献[19]测得体高误差。充分表明本研究提出的体尺测点提取方法可以在实现多姿态下肉牛体尺测量的同时,还能较大提高体尺测量精度。
表 6 不同方法肉牛体尺测量平均相对误差

Table 6 Average relative errors of body measurement under different methods

方法

体高测量

误差/%

体直长/%
3D特征提取方法18 <3.00 ——
基于Mask RCNN的体尺测量方法19 5.78 6.09
基于YOLOv5的体尺测量方法 7 0.76 2.14
改进U弦长曲率方法 1.62 2.18

4 结 论

肉牛体尺参数可以作为肉牛生长发育状况及选种育种重要判断依据。而养殖场的肉牛较为活跃,采集到的图像中姿态端正帧较少,且姿态各异,传统方法难以测量其体尺。本研究通过分析肉牛骨架特征和肉牛轮廓边缘特征,提出基于深度图像的多姿态肉牛体尺自动测量方法:
(1)提出了一种基于骨架的多姿态下肉牛头部去除方法。随机选取肉牛在不同姿态下的深度图像674帧,并将其划分为五种姿态:姿态端正图像298帧、左歪图像194帧、右歪图像182帧、低头图像252帧和抬头图像30帧。本研究所提肉牛头部去除方法在五种姿态下的头部去除成功率分别为94.63%、98.88%、92.31%、93.25%和100%,均优于基于凸包的头部去除方法。
(2)提出了一种基于改进U弦长曲率的体尺测点提取方法。随机选取23头肉牛在不同姿态下的深度图像共46帧,利用改进U弦长曲率算法提取体尺测点,并计算体尺参数,测得肉牛体直长平均绝对误差为2.73 cm,体高平均绝对误差为2.07 cm,腹宽平均绝对误差为1.47 cm,且本研究所提方法测得非端正姿态下肉牛图像的体直长平均绝对误差为2.779 cm,体高平均绝对误差为1.932 cm,腹宽平均绝对误差为1.544 cm。充分表明,改进U弦长曲率的体尺测点提取方法可以提取不同姿态下肉牛体尺测点,且在不同姿态下体尺测量误差均较小。
1
Food and Agriculture Organization of the United Nations, FAOSTAT[EB/OL].[2022-02-17].

2
李孟飞, 康熙, 王彦超, 等. 基于阈值分析的曲线拟合和边缘检测生猪侧视点云补全[J]. 农业机械学报, 2021, 52(S1): 81-88.

LI M, KANG X, WANG Y, et al. Side-view point cloud completion method combining cubic b-spline curve fitting and edge delection based on threshold analysis[J]. Transactions of the CSAM, 2021, 52(S1): 81-88.

3
FREITAG G P, LIMA L G F, JACOMINI J A, et al. An accurate image analysis method for estimating body measurements in horses[J]. Journal of Equine Veterinary Science, 2021, 101: ID 103418.

4
SPOLIANSKY R, EDAN Y, PARMET Y, et al. Development of automatic body condition scoring using a low-cost 3-dimensional Kinect camera[J]. Journal of Dairy Science, 2016, 99(9): 7714-7725.

5
NIR O, PARMET Y, WERNER D, et al. 3D Computer-vision system for automatically estimating heifer height and body mass[J]. Biosystems Engineering, 2018, 173: 4-10.

6
SALAU J, HAAS J H, JUNGE W, et al. A multi-Kinect cow scanning system: Calculating linear traits from manually marked recordings of Holstein-Friesian dairy cows[J]. Biosystems Engineering, 2017, 157: 92-98.

7
赵建敏, 赵成, 夏海光. 基于Kinect v4的牛体尺测量方法[J]. 计算机应用, 2022, 42(5): 1598-1606.

ZHAO J, ZHAO C, XIA H. Cattle body size measurement method based on Kinect v4[J]. Journal of Computer Application, 2022, 42(5): 1598-1606.

8
李嘉位, 马为红, 李奇峰, 等. 复杂环境下肉牛三维点云重建与目标提取方法[J]. 智慧农业(中英文), 2022, 4(2): 64-76.

LI J, MA W, LI Q, et al. Automatic Acquisition and target extraction of beef cattle 3D point cloud from complex environment[J]. Smart Agriculture, 2022, 4(2): 64-76.

9
赵新强. 基于Kinect的奶牛体尺检测与试验研究[D]. 泰安: 山东农业大学, 2018.

ZHAO X. Measurement and test of dairy cattle body size based on Kinect[D]. Taian: Shandong Agricultural University, 2018.

10
常海天. 种牛体尺非接触测量系统研究[D]. 长春:长春工业大学, 2018.

CHANG H. The study on the non-cantact measurement system of cattle body[D]. Changchun: Changchun University of Technology, 2018.

11
司永胜, 安露露, 刘刚, 等. 基于Kinect相机的猪体理想姿态检测与体尺测量[J]. 农业机械学报, 2019, 50(1): 58-65.

SI Y, AN L, LIU G, et al.Ideal posture detection and body size measurement of pig based on Kinect[J]. Transactions of the CSAM, 2019, 50(1): 58-65.

12
ZHANG L, ZHOU W, LI J, et al. Histogram of oriented gradients feature extraction without normalization[C]// 2020 IEEE Asia Pacific Conference on Circuits and Systems (APCCAS). Piscataway, New York, USA: IEEE, 2020: 252-255.

13
张文飞, 韩建海, 郭冰菁, 等. 改进的分水岭算法在粘连图像分割中的应用[J]. 计算机应用与软件, 2021, 38(6): 243-248.

ZHANG W, HAN J, GUO B, et al. Application of improved watershed algorithm in adhesion image segmentation[J]. Computer Applications and Software, 2021, 38(6): 243-248.

14
ZHANG T, SUEN C. A fast parallel algorithm for thinning digital patterns[J]. Communications of the ACM, 1984, 27(3): 236-239.

15
郭娟娟. 基于U弦长曲率的碎片拼接算法[D]. 苏州: 苏州大学, 2014.

GUO J. An algorithm for fragments re-assembly based on U-chord curvature[D]. Suzhou: Soochow University, 2014.

16
牛金玉. 基于三维点云的奶牛体尺测量与体重预测方法研究[D]. 杨凌 :西北农林科技大学, 2018.

NIU J. Body size measurement and weight prediction for dairy cows based on 3D point cloud[D]. Yangling: Northwest A&F University, 2018.

17
张馨月. 基于深度相机的生猪体尺自动测量技术研究[D]. 北京: 中国农业大学, 2021

ZHANG X. Research on automatic measurement technology of pig body size based on depth camera[D]. Beijing: China Agricultural University, 2021.

18
RUCHAY A, KOBER V, DOROFEEV K, et al. Accurate body measurement of live cattle using three depth cameras and non-rigid 3-D shape recovery[J]. Computers and Electronics in Agriculture, 2020, 179: ID 105821.

19
李琦, 刘伟, 赵建敏. 基于双目视觉及Mask RCNN的牛体尺无接触测量[J]. 黑龙江畜牧兽医, 2020(6): 46-50, 159-160.

LI Q, LIU W, ZHAO J. Non-contact measurement of bovine body size based on bincular vision and Mask RCNN[J]. Heilongjiang Animal Science and Veterinary Medicine, 2020(6): 46-50, 159-160.

文章导航

/