基于凹点分析法的粘连鸡体分割方法研究*
2021-03-30张宝全陆辉山王福杰李明明王馨宇
张宝全,陆辉山,王福杰,李明明,王馨宇
(1. 中北大学机械工程学院,太原市,030051; 2. 中北大学仪器与电子学院,太原市,030051)
0 引言
随着现代化技术的不断提高,蛋鸡福利化养殖的呼声日益高涨,而散养模式给蛋鸡提供较大的活动空间,蛋鸡可以自由觅食、奔跑、展翅等,是未来福利化养殖的一种趋势[1-3]。近年来,机器视觉技术在家禽智能化养殖中得到了广泛应用[4-7],由于养殖环境的多样性以及多只鸡聚集粘连的情况,如何从复杂背景中将粘连个体准确分割,仍然是目前个体识别与计数的难点。
针对粘连个体的分割方法,国内外学者进行了相关研究,柳冠伊等[8]对粘连二值图使用欧氏距离变化,在距离图的基础上进行分水岭分割,实现了玉米果穗粘连籽粒的分割。张建华等[9]在分水岭分割方法的基础上,结合最小二乘圆误差理论,根据不同极小值阈值实现棉花叶部粘连病斑的分水岭分割,但对大小不一的粘连病斑会造成欠分割。韩书庆等[10]先使用决策树模型(Decision Tree Based Segmentation Model, DTSM)分割方法得到群养猪的二值图,利用标记符控制的分水岭算法分割粘连猪体,该方法仅限于浅色猪只的分割。Farhan等[11]针对二值图像凸块分割问题,提出了利用变尺度矩形窗口求凹点对的一种方法,结果表明该方法具有较高的准确性,对细胞团块的分割效果较好。Wang等[12]针对圆形颗粒粘连,提出了一种基于形态学和人眼视觉认知机制的附着粒子分析系统,该系统对非圆形颗粒的分割有待考验。Ulle等[13]提出了一种基于曲率和凸壳相结合的组织病理学图像凹点检测方法,该方法可以同时识别深凹点和浅凹点,但该方法仅识别凹点,对凹点的匹配没有继续研究。孙卫红等[14]针对粘连蚕茧难以分割定位的问题,提出了一种基于凹点定向腐蚀的图像分割方法,该方法对图像边界的粘连蚕茧也能实现较好的分割。Baek等[15]利用凹点和边缘信息对群养猪进行分割,在真实的养殖环境下测试,该方法可以较好的将粘连猪只分割。Miso等[16]针对粘连猪体分割问题,提出了基于卷积神经网络(Convolutional Neural Network,CNN)与图像处理技术相结合的方法,该方法可以实现两只粘连个体的分割,对多只猪体的粘连分割仍需要检验。高云等[17]提出了基于实例分割框架的粘连猪体图像分割算法,为粘连猪体分割提供了新的方法,但该方法未在真实养殖环境下测试。在家禽的图像分割上,国内外学者着重研究了目标与背景的分割[18-19],而在粘连个体的分割方面研究较少。劳凤丹等[20]针对粘连鸡只利用改进的极限腐蚀及凹点搜寻处理方法进行分割,该方法仅对两只鸡粘连进行试验,未对多只鸡的粘连进行试验。Nakarmi等[21]使用分水岭方法分割粘连鸡只,该方法对复杂的粘连鸡体分割还需进一步试验。
以上方法大致可分为基于改进的分水岭方法、基于凹点分析的方法以及基于深度学习的方法,由于家禽的形态多变,很容易造成多个极小值的出现,所以不适合用分水岭方法。考虑到鸡体呈椭圆形并且粘连鸡体轮廓存在凹特性,所以本文提出了一种基于凹点分析法的粘连鸡体分割新方法,该方法可为后续监控鸡群个体健康状况提供技术支持。
1 试验材料与方法
1.1 试验材料
试验在山西省大同市某公司进行,绿壳蛋鸡采取散养模式,并且每个鸡舍搭配一个舍外活动区,供蛋鸡自由活动。试验个体选用20周龄的绿壳蛋鸡。在闲置鸡舍内搭建8个1 m×1.3 m×1.5 m的鸡笼,每个鸡笼饲养1~5只蛋鸡,通过鸡笼外侧固定的料槽和水槽提供鸡的喂料与饮水。在每个鸡笼中心距地面2 m高处安装相机,8路相机与硬盘录像机相连,硬盘录像机连接一台显示器,可以实时观察鸡舍内的状况。图像获取系统如图1所示。
(a) 试验现场
(b) 图像获取系统示意图
1.2 试验方法
本文首先在不同颜色空间下使用OTSU算法结合形态学运算得到粘连鸡体的二值图,然后对粘连鸡体的凸缺陷进行分析,针对不同的凸缺陷,使用不同凹点检测算法得到粘连区域的凹点,最后对凹点进行随机匹配找到正确的匹配方式,算法流程图如图2所示。
图2 分割流程图Fig. 2 Flow chart of segmentation
2 图像预处理
OTSU算法是依据图像中像素值的分布自动计算背景与前景的分割阈值的自适应全局阈值分割方法,该方法的关键是如何确定出最佳的分割阈值[22-23]。
对于本文试验对象绿壳蛋鸡来说,蛋鸡颈部与尾部的羽毛颜色通常比其他部位的羽毛颜色较深,如果在单一的颜色空间下使用OTSU算法处理,很容易造成蛋鸡某些部位的缺失,所以本文通过在RGB、HSV颜色空间下分别使用OTSU算法进行图像分割。
如图3所示,上面四幅图为基于RGB颜色空间的处理,下面四幅图为基于HSV颜色空间的处理。图3(a) 为原图,使用OTSU算法分割后(图3(b)),RGB原图中蛋鸡的头部、脖子以及鸡身颜色较深的地方被当成背景处理了。而反观HSV原图可以看出,蛋鸡的头部、脖子以及鸡身颜色较深的地方与其他部分有明显的对比,经过OTSU算法分割后,正好保留了鸡只颜色较深的地方。
在两种颜色空间下分别使用OTSU算法进行自适应阈值分割后,还残留漏粪网、饲料以及漏粪网支架等干扰物,使用形态学开运算可以滤除大部分的背景,采用圆形结构元素,大小为5像素,结果如图3(c)所示。形态学开运算后图中还保留部分伪目标,并且鸡体存在细小的孔洞,使用小面积去除与孔洞填充(小面积阈值为100像素),这样不仅滤除了小面积伪目标同时也消除了鸡体孔洞,如图3(d)所示。
最后利用图像与运算将在两种颜色空间下得到的目标提取图像叠加,经过形态学处理后即可得到完整的目标提取图像。对图3(d)进行叠加,叠加后如图4(b) 所示,可以看出,鸡体之间还存在细小的孔洞,对其进行孔洞填充后如图4(c)所示。对图4(c)边缘检测后与原图叠加(图4(d)),可以看出,图像预处理后鸡只保留较完整,并且很好地去除了漏粪网、饲料以及料槽等干扰物。
(a) 原图
(b) OTSU算法分割
(c) 形态学滤波
(d) 小面积去除及孔洞填充
(a) 原图
(b) 叠加后
(c) 孔洞填充
(d) 轮廓拟合
3 粘连分割
通过分析粘连鸡只二值图,鸡体呈椭圆形并且粘连鸡体轮廓存在凹特性,所以本文选用凹点分析法分割粘连鸡体,首先通过粘连判别提取粘连区域,然后通过对凸缺陷分析检测出正确凹点,最后利用凹点随机匹配法实现粘连区域的分割,具体粘连分割步骤如下。
3.1 粘连的判别
由于蛋鸡形态多变,并且头部与翅膀的变化较大,选用连通区域的轮廓复杂度形状因子与最大面积阈值作为粘连判别的参数,形状因子
(1)
式中:A——连通区域面积像素;
C——连通区域周长像素。
SF取值范围为[0,1],当连通区域形状越接近圆形,形状因子越趋向1,相反,连通区域形状越复杂,形状因子越趋向0。如图5(b)所示,三个连通区域的形状因子分别为0.312 98、0.613 96、0.661 77,可以看出,通过形状因子能区分粘连与非粘连区域,通过试验分析,确定形状因子阈值SF0为0.45,结合最大面积阈值Amax作为判断粘连依据,即某个连通区域满足SF
(2)
(a) 原图
(b) 连通区域形状因子
(c) 提取粘连区域
3.2 基于凸缺陷分析的凹点检测
凸包即为粘连区域的最小凸多边形,凸包面积与粘连区域面积的差集即为凸缺陷,经统计分析,凸缺陷面积大于1 000像素时,说明该凸缺陷内存在凹点,所以选择面积大于1 000像素的凸缺陷为待处理凸缺陷,这一步的目的是避免多余凹点的出现。对图5(c)计算凸包、凸缺陷、待处理凸缺陷,结果如图6所示。图6(a)中灰色轮廓线即为粘连区域凸包,对凸包区域填充(图6(b)),凸包面积减去粘连区域面积即为该粘连区域的凸缺陷(图6(c)),计算每个凸缺陷的面积像素,提取面积像素大于1 000的凸缺陷作为待处理凸缺陷(图6(d))。
(a) 粘连区域凸包
(b) 凸包填充
(c) 凸缺陷
(d) 待处理凸缺陷
3.2.1 凸缺陷分类
对每个待处理凸缺陷计算凸包,并提取凹区域(为避免混淆,使用凹区域命名),如图7所示,图7(a)为一个待处理凸缺陷,图7(b)为对该凸缺陷提取凹区域。计算凹区域的面积。通过分析100个待处理凸缺陷的凹区域,发现待处理凸缺陷内凹点的个数与凹区域面积大于500像素的个数相关,即
(3)
其中,a=1;b=N2-1。
式中:N2——凹区域面积大于500像素的个数。
本文将待检测凸缺陷分为两类,一类是凹点个数为1的凸缺陷,一类是凹点个数为N2-1的凸缺陷。
(a) 待处理凸缺陷(b) 凹区域
3.2.2 凹点检测
方法原理:首先提取待处理凸缺陷轮廓,以轮廓像素为中心,计算该像素周围25像素×25像素内像素值为1的数量,数量最多的像素点即为凹点。具体执行如下。
Step1:对每个待处理凸缺陷提取边缘,然后与粘连区域轮廓叠加,提取重叠部分像素坐标,即为粘连区域待处理轮廓像素坐标。
Step2:以待处理轮廓像素为中心,使用25像素×25像素的正方形模板移动,每移动一次计算正方形模板内像素值为1的数量(这一步是在图5(c)中处理)。
Step3:提取凹点。对凹点个数为1的粘连区域凸缺陷,每个待处理轮廓上都对应一个数量最多的像素点,该点即为此凸缺陷内的凹点,图8为图6(d)中四个凸缺陷待处理轮廓像素对应模板下像素值为1的数量,图中使用黑色小方块标记的点即为该凸缺陷内的凹点。对于凹点个数为N2-1的粘连区域凸缺陷,执行Step1、Step2后,统计出该凸缺陷轮廓像素对应模板内像素值为1的数量,提取前N2-1个峰值,即为该凸缺陷内的凹点。对图7(a)中的凸缺陷进行凹点检测,该凸缺陷内N2为4,所以该凸缺陷轮廓存在3个凹点,如图9所示,提取前3个峰值对应的像素点即为该凸缺陷内的凹点。
(a) 凸缺陷一(b) 凸缺陷二
(c) 凸缺陷三(d) 凸缺陷四
图9 对图7(a)中的凸缺陷提取凹点Fig. 9 Extract the concave point of the convex defect in Fig. 7(a)
文献[14]中利用正方形模板在粘连区域轮廓的所有像素点上滑动,本文先确定凹点存在的区域,然后只对该区域轮廓进行计算,减少了计算量并且避免多个凹点的出现。
3.3 凹点匹配
对于两只鸡粘连,直接绘制经过两个凹点的直线分割粘连鸡体;对于多只个体的粘连,将检测到的凹点随机连线,连接的原则是每个凹点只能连一次,每次连接后计算连通区域的个数和每个连通区域的面积,判断条件如式(4)。
Nnum=N&&∀Ai≤Amax
(4)
式中:Nnum——随机连线后连通区域个数;
Ai——连线后某个连通区域面积像素;
i——随机连线后某个连通区域的序号。
如果式(4)成立,判定凹点匹配正确。图10为图5(c)中粘连区域的三种匹配方式,该粘连区域有三只鸡粘连。图10(a)中连通区域有三个,并且每个连通区域的面积都小于最大面积,所以为正确的匹配方式;图10(b)不满足每个连通区域的面积都小于最大面积,匹配不正确;图10(c)中连通区域有4个,不满足连通区域的个数等于粘连鸡只数量,匹配不正确。
(a) 凹点匹配一
(b) 凹点匹配二
(c) 凹点匹配三
4 试验结果与讨论
4.1 试验设计
文献[9]中,分别开展了不同数量粘连病斑分割试验、粘连病斑分割方法对比及真实环境下病斑分割试验共3个试验,本文借鉴该试验设计,对不同数量的粘连鸡只进行分割试验、与前人文献中鸡只粘连分割方法进行对比、对真实养殖环境下粘连鸡体分割试验。试验的软件平台为Matlab r2017b,Windows 10版本64位操作系统;硬件平台为DELL品牌计算机,Intel(R) Core(TM)i5/3.2 GHz 处理器,内存8.0 GB。
试验选取2~4个粘连鸡只图像200幅,其中2个粘连鸡只100幅,3个粘连鸡只60幅,4个粘连鸡只40幅。使用本文方法与基于极限腐蚀结合凹点搜寻方法[21]、基于分水岭方法进行对比[22],统计平均分割准确率与平均运行时间,用以对比分析本文方法在粘连鸡只分割中的性能。
4.2 结果与分析
不同数量的粘连分割试验结果如图11所示,从图11中可以看出,基于凹点分析法的粘连鸡体分割算法能较好的分割2~4个粘连鸡只。
使用不同分割方法对提取的200幅样本图像进行处理,结果如表1所示,从本文方法的分割结果可以看出,对于2只个体的粘连,100幅图像全部正确分割,分割准确率为100%;对于3只粘连鸡体,60幅图像中有6幅图像分割错误,分割准确率为93.3%。其中2幅图像存在一只蛋鸡正好从另一只蛋鸡身下穿过,导致粘连区域的面积过小,被判断为2只个体粘连,造成欠分割,4幅图像中蛋鸡正在展开翅膀,造成分割错误;对于4只个体的粘连,40幅图像中有6幅图像分割错误,分割准确率为85%。其中3幅图像存在一只蛋鸡正好从另一只蛋鸡身下穿过,被判断为3只个体粘连,导致欠分割,另外3幅图像由于粘连特别紧密,存在凹点的凸缺陷面积过小,没有被识别为待处理凸缺陷,造成错误分割。本文方法对于不同数量粘连鸡体的平均分割准确率为92.8%,平均运行时间为2.817 s。基于极限腐蚀结合凹点搜寻方法的平均分割准确率为63.4%,平均运行时间为1.693 s,基于分水岭方法的平均分割准确率为71.6%,平均运行时间为2.349 s。可以看出,本文方法在运行时间上与其他两种方法存在些许劣势,但分割准确率远高于其他两种方法。尤其是随着粘连数量的增加,本文方法依然能较好的实现分割,但基于极限腐蚀结合凹点搜寻方法对于4只粘连鸡体的分割准确率仅为32.5%,基于分水岭方法分割准确率为55%,分割效果欠佳。
(a) 原图
(b) 目标提取
(c) 待处理凸缺陷
(d) 分割结果
另外,文献[21]对检测到的凹点使用最小距离点对连线的方法进行凹点匹配,对于粘连复杂的鸡只容易造成错误匹配。本文方法囊括了所有的凹点匹配方式,并根据判别条件确定正确匹配方式,匹配准确率更高。
为了进一步验证该文方法对粘连鸡体分割的效果,从真实养殖环境下采集的图像中选取3幅图像进行试验,如图12(a)所示,从图中可以看出蛋鸡粘连数量较多,使得粘连分割难度增加。首先,使用OTSU算法结合形态学处理提取目标,分割效果如图12(b),然后使用本文粘连分割方法对图像中粘连区域进行分割。从图12(c)分割结果可以看出,本文方法对图中存在粘连的鸡只实现了较好的分割,说明本文方法有较好的鲁棒性,能够适用于真实养殖环境下。
表1 不同方法对不同数量粘连鸡只分割结果Tab. 1 Segmentation results of different numbers of adherent chickens by different methods
(a) 原图
(b) 目标提取
(c) 分割结果
5 结论
本文针对真实鸡舍环境下采集到的视频图像粘连个体难于分割问题,提出了一种基于凹点分析法的粘连鸡体分割方法,首先通过OTSU算法结合形态学运算获得粘连区域二值图,通过对粘连区域凸缺陷上的轮廓使用正方形模板确定凹点位置,最后通过凹点随机匹配法正确分割粘连鸡体。通过不同数量的粘连鸡体分割试验、不同方法与本文方法的对比试验以及真实养殖环境下粘连鸡体分割试验,得出以下结论。
1) 对2~4只不同数量的粘连鸡体进行试验,平均分割准确率为92.8%,平均运行时间为2.817 s。
2) 本文方法与基于极限腐蚀结合凹点搜寻方法、基于分水岭方法相比,运行时间略高,但本文方法的分割准确率比其他两种方法高了至少21.2个百分点,本文方法的分割效果更好。
3) 对真实养殖环境下粘连鸡体分割试验表明,本文方法对图像中粘连鸡群能实现较好的分割。
本文算法也存在不足之处,随着粘连数量的增加,凹点匹配种类也逐渐增加,导致算法运行耗时相对较长,目前深度学习方法已经在猪、牛等大型牲畜个体识别方面取得了一定进展,在今后的研究中,将结合深度学习方法提高鸡体分割的准确率,降低本文方法的运行时间。