新疆褐牛背线边缘检测自动分级算法①
2018-03-02谢云鹏李艳梅
谢云鹏,李艳梅,杜 洁
(甘肃农业大学 信息科学技术学院,兰州 730000)
1 引言
目前,新疆褐牛体型鉴定及分级主要采用人工鉴定分级的方法.该方法依据新疆褐牛的体型结构、肌肉度、细致度和乳房形状等特点,由工作人员根据自身工作经验得到褐牛体型鉴定结果.该方法工作量繁重,工作效率低,主观性强,已不能满足生产实践需求,因此研究客观,高效的牛体型鉴定及自动分级方法对提高新疆褐牛选优育种水平具有重要的实用价值.
随着计算机视觉技术与图像处理技术的飞速发展,机器视觉技术和数字图像处理技术的研究与应用已扩展到农业工程领域,并在许多方面取得了重大成果.为提高新疆褐牛体型鉴定的工作效率,解决传统鉴定方法存在的问题,研究开发基于机器视觉的新疆褐牛体型智能鉴定及自动分级系统势在必行.
牛背线是指牛体胸后到十字步的之间的边缘,它是新疆褐牛体型鉴定及分级的重要指标之一,背线的水平程度反应了牛的生长状况,是选优育种的重要指标.在实际生产过程中,工作人员根据自身经验给出背线的五种生长情况:弓背程度较大、一般、平整、下塌、严重下塌.如图1至图5所示.在对牛体背线分级的过程中把弓背程度较大的确定为分值最高,也就是牛生长状态最好的,一般为较好,几乎平整的为中等,下塌的为较差,严重下塌的为最差,相应的分值最低.
图1 弓背较大
图2 弓背一般
图3 弓背平整
图4 下塌
图5 严重下塌
本文依据新疆褐牛体型线性鉴定标准[1],以牛侧面图像为研究对象,结合计算机视觉和数字图像处理的技术对牛背线的五种生长情况进行量化,根据分析采集到的数据实现对牛背线的自动分级判定.
2 研究对象与实验工具
采用型号为MV-VEM200SC的小型GigE工业网络数字摄像机,型号为AFT-0814MP的高精度百万像素8mm镜头,进行肉牛活体侧面图像数据的采集.利用Visual Basic 2010作为实验数据分析软件,利用数字图像处理中的灰度图像生成算法、二值化算法、边缘检测算法等对采集到的牛侧面图像进行处理和分析,提取出牛体背线的变化情况,实现对牛体背线的智能自动分级.
3 背线边缘自动提取算法
由于用型号为MV-VEM200SC的摄像机采集到的为彩色图像,所以要先对其采集到的图片进行图像预处理,使其彩色图像转化为灰度图像,为了得到更好的边缘,再对其灰度图进行图像二值化处理,最后采用经典的Roberts算子进行边缘检测,提取褐牛背线边缘数据.
3.1 图像灰化
图像灰化是将获得的彩色数码图像转化为由“黑”到“白”(从0-255共256个整数灰度级)的黑白图像,便于进行图像二值化处理[2].
本文采用为灰度图像生成方法为加权平均法:
式中R,G,B分别表示的是像素颜色的分量.在把图像灰度处理之后,图像中的每一个像素点就有一个值,即决定像素明暗程度的灰度值.
3.2 利用Roberts算子自动提取牛背线边缘点
首先将牛侧面灰度图进行二值化处理,减少信息量,在利用Roberts算子进行边缘检测提取背线边缘点,得到背线边缘点的数据.
3.2.1 二值化处理
只有两个灰度值的灰度图像称为二值化的灰度图像,其两个灰度值分别为0和255[3].
对牛体侧面灰度图像的背线提取时,需要对图像进行二值化处理,将生成的牛体侧面灰度图像处理成只包括黑色像素点和白色像素点的二值化图像,便于背线的准确提取.
二值化处理过程中,阈值的选取是二值化处理的关键,如何选取合适的阈值T,是本算法的一个关键技术.Otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响[4].由于褐牛的侧面图像颜色比较单一,主要以黄褐色为主,为了得到更好的阀值,阈值的选取采用经典的Otsu算法.Otsu算法能够依据图片信息自动计算出合适的、比较准确的阈值T.
褐牛五种生长状态的实体图如图1至图5中的(a)所示,对应的二值化效果图如图1至图5中的(b)所示.
从图像上可以看出二值化后的图像信息量大大减少,减少了噪声的影响,使背线边缘更加明显,边缘处的像素变化差距提升,侧重了对背线的分级.
3.2.2 边缘提取
物体图像的边缘信息特征因为颜色、纹理结构和灰度值的变化是以不连续性的形式出现,是图像最基本、也是最重要的特征之一[5].
图像的边缘即图像中部分灰度值变化大的地方,主要存在于图像的目标和背景之间、不同的区域之间,是进行模式识别、目标检测和图像分割等的重要基础[6].
边缘检测法提取图像特征是图像识别中的一个重要过程,图像边缘检测结果对后续图像处理和理解有着直接的影响[7].本试验中采用经典的Roberts算法进行边缘检测.
任意一对互相垂直方向上的差分可以看成求梯度的近似方法,Roberts算子是利用这种原理,采用的对角方向相邻两像素值之差代替该梯度值[8].表示为:
式中,f(i,j)是具有整数像素坐标的输入图像,g(i,j)是输出图像,如图6和图7所示为Roberts的边缘算子模板[9,10].在该研究中用的是图7所示的模板.
图6 模板一
图7 模板二
Roberts边缘提取的效果图如图8所示.
与原图(图1至图5)相比,从图8中可以清晰的显示出背线(白色曲线)及变化情况.便于分析出背线的分级方法.
图8 边缘检测效果图
3.3 数据提取
创建一个保存像素点的横坐标x和纵坐标y的自定义数组,命名为Coors,它包含x、y两个属性.定义一个Coors类型的数组ECoors(i)(i=1,2,3,…,n)用来保存牛背线边缘点的坐标.将经过边缘检测后的图像由左向右并且由上向下进行遍历,将每一次垂直方向上最先出现的白色像素点坐标保存ECoors中.
4 牛体背线智能分级算法
(1)遍历边缘坐标数组ECoors(i)中的数据,找出ECoors(i).y,(i=1,2,3,···,n)中的最值,即ECoors(i).ymax和ECoors(i).ymin以 及相对应的ECoors(i).x.
(2)将提取出来的背线边缘点绘制到坐标图中,如图9所示.分析背线坐标点的数据,从坐标图中得出背线生长情况的特征都体现在背线的中间部位的y值的大小.因此可将提取出的背线分成三个数据段,起始段,中间段,结尾段.
(3)仔细观察发现:① 当最大值和最小值同时出现在同一段时,弓背几乎水平;② 当只有最大值出现在中间段时,则可确定背线的情况为下榻;③ 当只有最小值出现在中间段时,则可确定背线的情况为弓背.
图9 背线坐标图
(4)为了能对背线进行准确分级,对(3)中确定好是弓背或下榻的数据进行细化,因此还需根据牛体背线生长标准确定一个阀值a,为了与背线为水平状态区别,还需定义一个阀值b,且b小于a.
(5)对(4)的具体分析:
① 如果是弓背,则用:
若c1>a,则是弓背程度较大,若a>c1>b,则为弓背程一般.若c1
② 如果是下塌,则用: