基于OpenCV的母猪体重评估的研究
2020-04-22武尧刘振宇张宏娇
武尧,刘振宇,张宏娇
(山西农业大学 信息科学与工程学院,山西 太谷 030801)
猪的体重是评价其饲养过程生产水平多项指标的依据。传统的测量方法为人工接触测量,如采用体重箱和电子称等不仅费时费力而且会给猪造成应激反应导致其生产性能下降、发病甚至死亡。因此在生产实践中,猪的生长期大多只能测量1次体重。利用计算机和视频技术通过实时拍摄,计算机获取和分析处理视频图像来评估种猪的体尺,估算其体重,可以监测种猪生长,也有助于研究猪生长情况。与传统方法相比,种猪不会受到惊扰,减少了应激和物理伤害,这对于母猪尤其妊娠母猪格为重要。
基于机器视觉的猪个体的研究在诸多方面已取得较多成绩。国内学者杨艳等人通过图像提取用图像投影面积与猪体重相关性来估算体重。英国学者Schofield等人利用图像处理技术分析了3种猪的投影面积和体重的关系,研究得出随日龄的增加体重和相关形态参数的变化趋势。日本学者H.Minggawa利用投影在猪身上的网格线的视差与猪体高的非线性关系近似估计其体高,并利用经验公式计算猪的体重。国内对于同类无应激的猪个体识别还处于研究阶段,仅是在利用计算机视觉技术识对图像投影进行分析估算体重。尚未见利用图像处理方法结合算法估算模型对猪个体体长、体重、腱围等要素全方面评估。为此,本文设计利用OpenCV计算机视觉技术结合猪畜体积评估算法建立评估模型,通过2台网络摄像机获取猪畜活动图像流经过图像分析得到母猪体尺参数。结合评估模型最终估算母猪其体重。
1 材料与方法
1.1 试验材料
选用运城某猪场60头处于生长不同阶段的母猪作为试验对象,利用2台高清广角摄像机对母猪进行实时图像采集,通过局域网在电脑上显示采集图像并进行相应处理。试验基本装置见图1。
1.2 图像获取
将待测猪畜置于检测范围内,并在其背部,侧面黏贴20cm×40cm的红色标签卡作为标定参考,在猪畜处于站立姿势的情况下从其上方、侧脸两个方位进行拍摄。
1.3 体长计算
在猪畜沿着身长的背部和侧方向上粘贴矩形的红色标签,通过OpenCV库中的函数colorMarkDet检测颜色标记块,若检测出的颜色标记块在RGB颜色空间中的值近似于红色,且颜色标记块的四个角近似与90°,则认为找到了预设的贴有标签的目标,通过在函数中预设的标签大小,对图像中红色标签面积投影进行比例换算,根据比例值计算猪畜外接框大小,并在图像中绘画外接框。垂直画面的外接框长、宽数值反映猪畜体长、体宽。侧面画面的外接框反映猪畜体长、体高。通过两幅画面的体长数据进行校验。当两个体长数据误差大于±5cm时,则进行重新采集图像。
1.4 腱围计算
在空间上,猪畜腱围可以近似的看作是求一个以猪畜背宽最大值为短半径的椭圆周长,考虑到没有精确的求椭圆周长的初等数学公式,我们假设使用一个以短边长(猪背宽最大值)为半径的圆周长乘以腱围拟合系数等于近似椭圆的周长,通过数学推导得出腱围拟合系数L,这样,就可以只通过背宽最大值来计算猪的近似腱围了。经计算腱围拟合系数L=0.727腱围计算公式为
腱围=2×π×体宽×L
1.5 体重计算
根据国内学者肖丑的牲畜体重评估测法,建立猪畜体重评估模型,计算公式如下:
体重=腱围×体长/X
注:X肥胖猪为142,精瘦猪为162,体脂均匀为156。
2 算法2.1 猪畜图像区域提取
2.1.1 前景学习
针对猪场特殊环境,前景检测部分主要使用PBAS检测算法,PBAS算法具有建立背景模型更简便、自适应判断阈值和学习率、适应光照变化等优点,在判定阈值和背景更新率等方面可根据背景复杂度而控制充分针对猪舍阴暗、潮湿等特点进行背景检测。PBAS算法针对单个像素进行的统计背景建模,在此基础上进行前景检测。但当目标面积大或者运动缓慢是会得到一个不完整的前景,降低了算法的检测率。根据实际情况分析,猪舍窄小并且同一猪舍饲养多只猪畜,猪畜活动较为缓慢。因此针对这种情况,我们提出改进的背景复杂度通过前景计数机制来防止目标物因静止而被更新为背景。
(1)背景复杂度
结合区域复杂度信息,通过水平方向和垂直方向的Sobel算子对图像进行边缘检测。
用fv和fh分别与图像进行卷积,得到图像Ev和Eh。取梯度值G(xi)来衡量区域结构背景复杂度。
梯度计算公式:
取以像素点xi为中心的5×5窗口Z(xi),定义该点与窗口内其他点的颜色差值的平均和为区域颜色背景复杂度C(xi):
其中,Ic为该点各通道的像素值,如在RGB图像中Ic表示Ir,Ig和Ib。结合区域信息的背景复杂度COM(xi)为:
背景复杂度控制判断阈值和学习率更新公式为:
因学习率T(xi)与背景更新的概率成反比,所以背景越复杂时,就应该以越小的概率去更新背景,即背景的复杂度增大,T(xi)也增大。这样,就在原像素级背景复杂度的基础上以加权的形式融入了区域信息。
(2)前景计数机制
在PBAS算法中,一个运动的前景目标如果停下来,就会迅速被更新为背景。
在实情况中,猪畜的活动较为安静。PBAS算法会将待测猪畜更新为背景,通过前景计数器TOM(xi)来检测静止的前景,只有当一个点被判定为前景若干次以后,才会将其逐渐跟新为背景。TOM(xi)计数规则为:
TOMmax为对静止前景的最长生命周期,根据经验可以设置为帧率的5倍。
(3)鬼影消除方法
采用原始PBAS算法进行的背景模型初始化过程时,如果有前景目标,会出现鬼影现象。针对鬼影现象,提出鬼影消除方法。取以像素点xi为中心的l*l大小的串口W(xi),对被判定为前景的像素点xi,取W(xi)窗口内被判定为背景的点xn(n=1,2,…),将xi与xn的背景模型按照前景分割判定公式测试,如果xi能与某个背景点的模型匹配,则xi被认为是一个鬼影点。区域层的判定公式为:
PF(xi,xn)表示在像素层用xi取匹配xn的背景模型。若一个像素点在像素层被检测为前景点,而RF(xi)的值为0,则说明这个像素点为鬼影点,具体规则如下:
F(xi)=0,RF(xi)=0,该点为背景点;
F(xi)=1,RF(xi)=1,该点为前景点;
F(xi)=1,RF(xi)=0,该点为鬼影点;
(4)评估系统PBAS算法改进流程图
应用在猪畜体积评估系统的改进算法核心图如下所示:
采用梯度信息和颜色信息衡量区域背景复杂度,以加权的形式融合像素背景的复杂度,从而得到最终的背景复杂度,然后使用改进的背景复杂度控制判断阈值和学习率的更新,在像素层分割完毕后,使用区域窗口进行鬼影消除,得到最终的分割结果,最终将检测结果送入前景计数器,保证静止前景检测,如图为算法改进前后静止猪模型检测效果图。
当在摄像头后置入静止猪畜模型后,待测猪畜在背景更新后将被视为背景因而不能被检测出。通过前景计算器等机制,改进后的PBAS算法背景模型更新慢,检测的准确率大幅提高,改进后的算法消除了大部分噪声点。这种改进后的算法更符合猪舍真实背景复杂等情况。
2.1.2 边缘值检测
猪畜体积评估系统采用求导算子技术来实现边缘值检测,基于最优化算法的Canny算子具有信噪比大和检测精度高等优点。通过对传统的Canny算子进行适应性优化来满足对猪舍实际复杂的环境进行检测。
(1)平滑图像优化
采用非线性带权中值滤波来进行平滑图像,首先按灰度值大小将领域内的像素进行排序,将排序好的序列中间像素作为中间值输出。其次,将中间输出值和周围像素灰度值作比较,将差值较大的像素值改为与周围像素接近的值,来实现消除噪声点。通过为滤波区域每个位置分配的权值来实现每个像素对结果的合理影响。
(2)梯度幅值计算
将传统的Canny算子采用的2×2的模板改为3×3来防止检测出假边缘值因而丢失真实边缘。通过8个领域像素计算x、y、45°、135°方向的梯度后,即可进行像素灰度梯度G(i,j)的计算,计算公式如下:
其中Gx(i,j)为x方向的梯度,Gy(i,j)为y方向的梯度,G45(i,j)为45°方向的梯度,G135(i,j)为135°方向的梯度。
(3)优化阈值
根据梯度幅值反映出的周围像素灰度变化情况,通过梯度幅值矩阵计算其平均梯度幅值。根据区域平均梯度幅值判断周围边缘信息强弱,由于Canny算子中高阈值对最终边缘的影响因素最大,因此主要对高阈值进行优化。将整幅影像划分为若干个3*3模板,并分别计算各模板当前像素平均梯度幅值,用平均幅度值代替原有梯度幅度值。找到平均梯度幅度值得最大值Gmax(i,j),获取某个像素平均梯度幅度值GE(i,j),计算两值的比值,与Canny方法中的高阈值THH相乘得到该像素新阈值。通过以上方法计算出所有像素新阈值。采用新的高阈值和低阈值进行边缘提取,流程如下图所示。
3 试验与分析
选定60头成年母猪试验验证,去除一些非标准样本,从中选取了21头母猪作为实验对象,测定数据如下表所示。
评估体重(KG) 实际体重(KG) 误差(%)178.42 172.31 3.55 189.61 185.15 2.41 170.92 178.27 -4.12 181.29 179.11 1.22 192.34 186.15 3.33 159.53 163.14 -2.21 169.21 171.32 -1.23 204.34 200.14 2.1 206.13 205.11 0.5 211.20 211.25 -0.02 216.57 214.20 1.11 190.17 187.46 1.45 202.01 199.56 1.23 186.00 192.17 -3.21 204.16 201.94 1.10 192.59 197.15 -2.31 212.45 212.14 0.15 204.03 205.00 -0.47 198.27 195.33 1.51 196.50 199.40 -1.45 194.54 189.80 2.50
可以看出,改进后的算法提取的边缘定位更加准确,轮廓更加清晰,连续性更好。测试结果与实际结果误差保持在10%以内。
4 结论
本文依据待测猪畜活动量以及猪舍环境的复杂度,基于传统的前景学习PBAS算法和Canny边缘值检测算法进行优化,通过计算背景复杂度、增加前景计算机制、鬼影消除法来提高检测率降低噪点。通过对图像进行平滑优化、改进梯度幅值、优化阈值等方法,降低待测物体边缘误检率,使边缘图像轮廓更加清楚,连续性更好。试验结果表明,猪体积评估系统检测准确率达95.7%,能较好的对猪畜进行体积、重量、腱围等相关生长数据进行评估。