基于Kinect相机的猪弯曲体尺测量算法研究

2021-11-11 12:22徐金阳徐爱俊周素茵叶俊华
东北农业大学学报 2021年9期
关键词:猪体体尺体长

徐金阳,徐爱俊*,周素茵,叶俊华,夏 芳

(1.浙江农林大学信息工程学院,杭州311300;2.浙江省林业智能监测与信息技术研究重点实验室,杭州311300;3.浙江农林大学环境与资源学院,杭州311300;4.浙江农林大学经济管理学院,杭州311300)

生长和发育监测对生猪养殖至关重要。体尺是衡量生猪生长状况重要指标[1-2],也是育种、质量预估、肉质评价重要参考依据[3]。传统体尺测量需人工接触,难度大、成本高,同时对猪只产生应激,影响其生长发育。随着机器视觉技术发展日趋成熟,基于该技术的猪体体尺非接触式测量可大幅减小猪只应激反应,提高生产效率[4]。

传统相机采集的RGB猪体图像,易受光照和猪体颜色等因素影响,猪体轮廓提取不准确,导致体尺测量误差较大[5-6],深度图像对光照和猪体颜色不敏感,基于深度图像的猪体体尺测量误差相对较小。猪只体尺测量包括体尺测点(用于计算猪只体长、体宽和体高的测量点)提取和体尺还原两个步骤,现有猪只体体尺测点提取算法主要针对猪体背部呈现无弯曲和无歪头情况,如司永胜等利用深度图像,通过最小外接矩调整猪体到水平方向,使用影差法和差分法找到猪体体尺测点[7]。Pezzuolo等利用Kinect相机采集猪体点云数据,通过猪体形态特征确定体尺测点[8]。Guo等利用LSSA_CAU软件合成猪体世界点云数据进而完成体尺测量[9]。刘同海等利用轮廓和凸包络线交点获取头尾部和肩臀部体尺测点[10]。李卓等结合凸包分析和形态特征确定体尺测点[11]。猪只脖颈或背部通常呈弯曲状态[12-14],导致实际采集图像与理想图像存在差异。此外,现有生猪体尺测量算法在还原生猪真实体尺时,通常需利用标定尺辅助得到真实世界与图像比例关系[15-16],这种体尺还原方式增加图像采集复杂程度,降低工作效率。现有猪体体尺测量算法存在一定局限性。

针对现有生猪体尺测量算法中存在问题,本文基于Kinect相机采集生猪深度图像,利用凸包络和最大外接轮廓提取猪体自然状态下体尺测点,通过像素坐标系与世界坐标系变换,得到体尺点真实坐标,实现自然状态下猪体体尺高精度测量。

1 材料与方法

1.1 数据采集

2020年12月,在绍兴市新昌县大市聚新丰规模养殖场使用Azure Kinect DK深度像机采集长白猪图像,日龄为120~150 d。图像大小为640像素×576像素,利用Visual Studio 2020作为编辑软件处理图像数据。上方相机与地面垂直距离约180 cm,侧方相机与猪体侧面水平距离约110 cm,采集俯视和侧视图共800张。采集方法如图1所示。

图1 数据采集方法Fig.1 Data acquisition method

1.2 测量方法

首先对采集目标的深度图像通过影差法剔除背景信息,增强目标信息;利用动态阈值分割处理猪体图像,采用中值模糊滤波多次迭代作去噪处理,最大程度消除噪声;其次基于形态学运算和canny算法完成猪体图像边界修饰和猪体轮廓提取;最后采用最大外接轮廓和凸包络、提取体尺测点像素坐标,还原体尺测点三维信息,算法流程如图2所示。

图2 猪体轮廓及体尺测点提取算法流程Fig.2 Pig contour and measurement point extraction algorithm flow

2 体尺算法设计

2.1 头尾部测点提取

猪体头尾部体尺测点为轮廓头尾部最大凹陷处,图3为部分猪体轮廓线,C为头部体尺测点。首先求得轮廓和凸包络线交点A、B坐标和直线AB线性方程,计算轮廓线AB上的点到直线AB距离d,当d取最大值时对应轮廓点即为头部测点C,尾部体尺测点识别算法类同。

图3 头部体尺测点提取Fig.3 Head measurement point extraction

由图3中几何关系可知,线段AB长度计算公式为:

式中,A点坐标为(xA,yA),B点坐标为(xB,yB)。

直线AB在二维坐标系下方程一般式为:

式中,a、b、c为常数,-a/b表示直线斜率。点(x,y)表示直线AB上任意一点的坐标。通过A点和B点坐标求得a、b和c的值。

轮廓线上点到直线AB的距离d计算公式为:

式中,(x',y')为轮廓线AB上任意一点坐标,通过在规定区间内,求出最大值的距离dmax和对应体尺测点C坐标。

2.2 肩臀宽和体高测点提取

确定头尾部测点后,利用最大外接轮廓,获取猪体弯曲状态下肩臀部和体高体尺测点。以提取肩部体尺测点W为例说明,图4a为猪体背部最大外接轮廓,采用差值法和曲率法识别体尺测点,具体如下。

图4 肩部体尺测点提取Fig.4 Shoulder measurement point extraction

首先把靠近体尺测点W的最大外接轮廓边界作为基准值,对基准值和其水平对应轮廓点做差值计算,差值Di计算公式为:

式中,(xi,yi)为轮廓点坐标,(xbase,ybase)为基准值坐标,i和base取值为1,2,3,…,n。

以头尾部体尺测点为边界,通过式(4)计算,得到4b差值函数曲线y(Di)。由猪形态学知识可知,其臀部和肩部相对凸起,因此通过轮廓差值曲线曲率可求得体尺测点。差值函数曲率计算公式为:

式中,y'(Di)为差值函数上点的斜率,y''(Di)为差值函数y'(Di)的导数。

综上可知,差值函数曲线上两处曲率最小值分别是一侧肩部和臀部的体尺测点,点W即为肩部对应体尺测点,臀部和体高测点算法类同。

2.3 弯曲状体尺测量

在提取体尺测点坐标基础上,通过体尺还原算法得到猪只真实体尺,算法流程如图5所示。

图5 体尺还原算法流程Fig.5 Flow of body size restore algorithm

猪只体尺测点从像素坐标系转换到世界坐标系的原理如图6所示,转换公式如式(7)所示。

图6 体尺还原算法原理Fig.6 Schematic diagram of body size restore algorithm

式中,(u,v)为像素平面中点的坐标,dx和dy为感光芯片上像素的实际大小,ZC为相机坐标系下点的深度距离,f是相机的焦距,R为3×3矩阵,t为3×1,0为1×3矩阵。

完成体尺测点从像素坐标系到世界坐标系的转换后,使用欧式距离公式计算猪只真实体尺,计算示意图如7所示。体长是从耳根中点沿背部脊梁经肩部中点、臀部中点到尾根中点距离,体高为肩胛骨顶点到水平底面的垂直距离,肩宽为两侧肩部顶点距离,臀宽为两侧臀部顶点距离。

3 结果与分析

3.1 体尺点提取结果

在动态阈值分割和形态学修饰基础上,利用canny算法、凸包络和最大外接轮廓算法分别提取猪只轮廓、凸包络和最大外接轮廓,结果如图8所示。

图7 猪弯曲体尺测量Fig.7 Pig bending size measurement

图8 体尺测点提取Fig.8 Body size measurement point extraction

实验场地猪只各测点提取的坐标值如表1所示。在提取测点坐标值基础上,可进一步通过欧式距离公式计算猪只体尺。

表1 提取体尺测点坐标值Table 1 Extract the coordinate value of the measuring point of the body size

3.2 体尺测量算法验证

分析计算现场采集的800张生猪图片可知猪体弯曲弧度范围一般为0°~40°。为研究本文弯曲体尺测点算法提取的鲁棒性和精度,随机采集养殖场中品种相同、生长状况类似的20头长白猪的图像,每头猪在不同弯曲弧度(0°~10°、10°~20°、20°~30°、30°~40°)范围内共800张图片。

3.2.1 鲁棒性验证

图9 为随机选取不同位置和不同角度的6幅生猪深度图像及体尺测点提取结果,试验结果表明,该算法能准确提取猪体不同弯曲弧度下体尺测点,测点提取成功率为100%。

图9 不同方位和弯曲状态体尺测点提取效果Fig.9 Extraction effect of measurement points in different azimuths and bending states

3.2.2精度验证

首先通过皮尺和米尺测量猪体体尺数据,测量点位置和体尺算法提取的测点位置相同,实际测量其体长、肩宽、臀宽和体高各3次,取平均值作为实测值。利用本文测量方法得到测量值与实测值相对误差见图10。由图10可知,本文方法测得的体尺中,肩宽测量精确度较高,其最大、最小相对误差分别为5.03%和0.43%,平均相对误差为1.92%;臀宽最大、最小相对误差分别为5.45%和0.71%,平均相对误差为2.00%;体高最大、最小相对误差分别为6.10%和0.69%,平均相对误差为2.64%;体长测量误差较大,其最大、最小相对误差分别为5.12%和0.77%,平均相对误差为2.93%。猪只不同弯曲弧度下体尺测量相对误差见表2。

图10 猪不同弯曲状态体尺实测值和测量值相对误差Fig.10 Relative error between field measured and measured body size of pigs in different bending states

表2 猪不同弯曲状体尺测量相对误差Table 2 Relative error of measuring different curved body size of pigs

随机选取20头长白猪各10张不同角度的笔直状图片共200张,分别计算本文方法和国内外其他方法猪体体尺测量方法的精确度,取平均值作为测量值,结果见图11。

由图11中试验数据可知,本方法测量精确度较高,体长、肩臀宽和体高相对误差分别为2.33%、1.29%、1.26%和1.92%;方法3测量精确度次之,体长、肩臀宽和体高相对误差分别为2.15%、2.95%、2.36%和1.53%;方法5体长、肩臀宽和体高相对误差分别为2.60%、3.09%、2.99%和3.17%;方法2体长、肩臀宽和体高的相对误差分别为2.87%、3.86%、4.15%和3.72%;方法1体长、肩臀宽的相对误差分别为2.76%、3.64%和4.20%;方法4测量精确度较低,体长、肩臀宽和体高相对误差分别为3.21%、5.95%、5.97%和6.00%。

4 讨论与结论

采用凸包络和最大外接轮廓提取猪弯曲状态下的体尺测点,提取成功率为100%。根据提取的体尺测点提出一种基于深度信息和坐标系变换的猪体尺还原算法,无需标定尺,即可较为准确地还原猪体尺。猪体非弯曲状态下体尺测量结果表明,本文方法精确度总体较高,在4个体尺指标中,肩宽和臀宽测量精确度明显优于现有测量方法;体长和体高测量精度与现有测量方法相差较小。猪体不同弯曲弧度(0°~40°)下测量结果表明,肩宽测量误差较小,平均相对误差不高于1.92%;臀宽和体高平均相对误差分别不高于2.00%和2.64%;体长测量误差较大,平均相对误差不高于2.93%。综上,该方法适用于猪自然状态下体尺测量,尤其是对弯曲体尺测量效果较好,满足生猪实际生长监测需要。

本文对猪体肩臀部测量相对误差较低,可能是获取体尺测点深度信息时肩臀部测点离相机中心相较近;弯曲体尺测量需将把猪体按骨架分成若干段,测量误差随猪体弯曲弧度(0°~40°)的增加而增大,但在可接受范围内。

猜你喜欢
猪体体尺体长
家畜体尺自动测量技术研究进展
脖子占体长一半的巨龙——新疆巨龙
夏季养猪要做好防暑降温
外泌体长链非编码RNA在膀胱癌中的研究进展
肉羊体尺测量 用上“智慧眼”
高原型藏系羊初生体重与体尺指标的相关性研究
基于单视角点云镜像的猪只体尺测量方法
学会8招夏季养猪增膘等4则
大白、长白达100 kg体重时体长校正公式的研究
夏季养猪增膘九招