APP下载

基于边缘的图像分割在牛体尺测量中的应用

2020-05-11石炜张帅奇

数字技术与应用 2020年2期

石炜 张帅奇

摘要:图像分割是图像处理、分析和理解的基础,目前它已经成为机器视觉研究领域最活跃的课题之一。边缘检测能勾画出目标物体,蕴含丰富的信息,是图像分割、识别和分析中抽取图像特征的重要方法。本文通过常用算子如Sobel、Roberts、Prewitt、Gauss-Laplace和Canny算法对牛体图像分割的效果进行实验对比,证明Canny算子总体上优于其他算子。针对Canny算子分割可能产生的断裂和不完整,运用OR运算结合模糊和边缘信息去除断边,利用数字形态学重新填充图像中的空洞,增强边缘轮廓显示的效果。在此基础上进行的牛体测量结果与实际结果相比误差较小,测量精度较高,其通用性较好,能够满足日常对于牛体体高和体长的测量要求。

关键词:边缘检测;图像分割;Canny算子;OR运算;牛体尺测量

中图分类号:TP391.9 文献标识码:A 文章编号:1007-9416(2020)02-0048-04

0 引言

边缘蕴含着丰富的信息,在图像处理中有着重要的作用。边缘检测的目的是获取目标轮廓。图像的边缘检测是利用图像的一阶导数的极值(梯度算子模板)或二阶导数过零点(拉普拉斯算子模板)信息来实现的[1]。对于一些经典的边缘检测算子,目前的研究主要集中在两方面:一是结合经典算子和新思想,寻找新的性能更好的算子;二是将已经成熟的边缘检测算子更高效地运用在实际的场景[2]。因此将其运用到不同的领域将会是今后发展的大方向。如彭嘉涵[3]通过图像处理的方法对近视诊断进行了研究,通过图像预处理、运用Canny算子进行边缘检测、特征提取等步骤对眼睛进行检测,发现Canny算子能够较清晰反映出瞳孔的边缘部分,能够保证信息的完整度,清晰和连贯。该方法快捷有效,能够方便地进行近视眼病筛查。刘远仲等[4]利用二维高斯函数计算梯度幅值,通过四阈值边缘检测进行边缘定位,并用数学形态学对边缘进行融合的方法,将Canny算子和数学形态学相结合对白酒显微图像进行边缘检测,检测出的酒分子结构边缘较准确,边缘连续性较好。刘同海等[5]通过对猪体背景去除;经中值滤波后动态确定图像二值化的阈值,生成猪体二值图像;并通过Canny算法,准确快速实现了猪体轮廓边缘提取,经过对猪体的体长、体宽进行了测量,其平均相对误差分别为0.92%、1.39%,测量精度较高,对猪体体尺的检测效果较好。将Canny算法运用在牛体征的检测中,将会促进畜牧业向智能化水平发展,这对现代畜牧中智慧牧场的建设是很有帮助的。

1 常用的边缘检测算子

1.1 Sobel算子

Sobel算子提出了一种将差分运算局部平均的方法。它不是简单求平均再差分,而是加强了中心像素上下左右四个方向像素的权重,运算结果是一幅边缘图像。它通过对行、列的变化检测来检测边缘,通过核来完成检测。Sobel算子所得边缘较粗,图像边缘不止一个像素[6]。Sobel算子通过增加中心点的重要性而实现某种程度的平滑效果。常用在检测中对精度要求不高的场合。

1.2 Roberts算子

Roberts算子是一种利用局部差分算子寻找边缘的算子。其对于陡峭的低噪声图像效果较好,它可以由两个2×2的模板共同实现。

1.3 Prewitt算子

Prewitt算子是一种边缘样板算子,利用像素点上下左右邻点灰度差,在边缘处达到极值检测边缘,对噪声具有平滑作用。在实际应用中通常采用微分算子和模板匹配方法检测图像的边缘。它可以由两个3×3的模板共同实现。

1.4 LOG算子

拉普拉斯算子雖然性能不错,由于要进行二阶微分的运算,会把图像中的噪声扩大。实际应用中,用到的多是LOG算子。即通常先用高斯函数对图像滤波,然后对滤波后的图像进行拉普拉斯运算,将算得的值等于零的点作为边界点,通过拉普拉斯算子找出图像中的陡峭边缘。在LOG算子中对边缘判断采用的技术是零交叉检测,该算子能有效检测边界,但可能会产生虚假边界,其定位精度也不高。实际应用中常用的模板大小是5×5。不同微分算子常用模板如表1。

1.5 Canny算法

Canny算子是Canny在1986年提出了一种最优化的梯度边缘检测算子[7]。它采用高斯函数对图像进行平滑处理,同时采用双阈值算法检测和连接边缘,因此具有较强的噪声抑制能力,不容易受噪声的干扰,能够检测到真正的弱边缘,边缘的连续性较好。和Sobel等算子相比,其边缘线性较细、定位精度比较高、边缘提取较完整且边缘连接程度最佳[8]。Canny边缘检测算法非常复杂,但也很有趣:它有5个步骤,即使用高斯滤波器对图像进行去噪、计算梯度、在边缘上使用非最大抑制(NMS)、在检测到的边缘上使用双阈值去除假阳性(fasle positive),最后还会分析所有的边缘及其之间的连接,以保留真正的边缘并消除不明显的边缘。

2 实验结果与分析

本文选取了两幅在内蒙古某草原牧场用相机拍摄的牛的图像,原始图像大小为4320×3240,照相机型号为CASIO EX-H15,在MATLAB R2018b平台上测试上述常用算子的边缘检测效果。

由于拍摄过程或多或少都会给图像带来一些噪声,在这种情况下,为了能准确得到物体的边缘信息,要先进行去噪后提取物体的边缘,常使用平滑模板和中值滤波的方式消除噪声;使用Laplace、Sobel等边缘提取模板突出物体的边缘,然后进行二值化处理,得到物体的边缘信息。这里首先将采集到的图像运用加权法转换为灰度图像,接着对图像进行中值滤波后,选择合适的阈值用不同的边缘检测算子分别对两幅图像进行边缘检测,通过仿真效果比较上述算子的适用性好坏,图1和图2是两幅图像边缘检测后的效果图。

从图中可以看出,在阈值选择相同时,Sobel算子提取的边缘较其他两种算子完整,Sobel算子得到的边缘会比Prewitt算子得到的边缘显得粗而亮, Sobel和Prewitt算子两者边缘检测效果基本一致,产生的边缘较宽,间断比较多。Roberts较Sobel和Prewitt边缘较粗、信息丢失多,其噪声也比前两者多。三种一阶微分算子检测边缘时,易出现“削顶”现象,对图像顶部检测困难[9]。一阶微分算子普遍对噪声敏感。二阶微分算子中,LoG算子边缘检测边缘保留较为完整,定位准确,LoG算子是这几种算子里是最容易受噪声影响的算子,其边缘连续性较上述三种一阶微分算子好,检测精度高,但会产生伪边缘[10]。其抑制噪声的能力相比Canny边缘算子较差,因此选择一个既能有好的边缘又包含噪声很少的阈值很不容易。Canny算子能够检测出一些尖锐和细小的边缘,并能够保持所有边缘的宽度都是一个像素。其检测出的边缘线都是单像素宽,边缘线上仅会存在少量被破坏的边缘点。Canny算子检测出的边缘完整程度是这几种算子中最好的,线形连接程度好,其边缘检测中含有的噪声也是最少的。其边缘间断也最少。Canny算子是将滤波、增强与检测集一身的基于一阶导数的优化算子[11],因此呈现出的边缘检测效果好。

尽管经过Canny边缘检测能够完整检测出牛体边缘处的轮廓,然而由于噪声及光照不均等情况的存在,其结果经常不能完整地勾画出物体的边缘,因此边缘检测后得到的边缘像素点集合需要进行连接处理来将其连接成有意义的边。通过OR运算结合模糊分割和边缘信息,去除断边;利用形态学重新填充图像中的空洞,从而使其边缘结果得到了大的改善。

对于Canny边缘检测后产生的断边,经OR运算后断裂的边可以得到很好的连接,其整体轮廓边缘较Canny边缘检测后有了很大的改善,经过对比后可以看出OR运算后得到的轮廓与原始牛体轮廓相似度很高,因此可以将其运用到牛体体征测量的计算中。

3 牛体体征的测量

本文仅对两个牛体指标体高和体直长进行测量。

体高:由髻甲最高点到地面的垂直距离。

体直长:由肩端到坐骨端之间的水平直线距离。

牛体特征体高、体直长的测量如图3所示:

在边缘检测后的图像中进行牛体体尺的测量,通过计算得到牛体的实际尺寸。利用欧式公式以像素为单位计算二维两个测点之间的长度,选用一定的参考物建立像素与实际长度的比例关系,通过与参照物的实际距离比较来计算牛体的实际体高和体直长尺寸,这里选用牛耳标作为标定物,如图4和图5所示,已知二维平面上两点A(x1,y1)与B(x2,y2)之间的欧氏距离公式为:

(1)

由式(1)经计算得牛耳标在图4中两平行线间像素距离为122个像素,已知牛耳标实物两平行线间的距离为74mm,由此,可以确定像素距离与实际距离之间的关系,即1像素=0.6066mm。

3.1 牛体高测量

这里用垂直于X轴的光标直线在牛体边缘检测图像牛体特征位置由左向右开始扫描,光标直线与牛体相交成一条线段,髻甲的位置,我们可以通过牛自然站立时其前肢的最高点来确定,测点位置如图6所示。这样牛体体高距离即可转化为求髻甲最高点到地面这一线段的歐式距离的最大值。

由图6测点信息,计算出图中红色体高标记线段共有2192个像素单位,根据像素距离与实际距离的比例,可以计算出牛体体高为2192×0.6066=1329.6672mm,保留两位小数得其体高为132.97cm。

3.2 体直长测量

即测量牛肩部到其坐骨端后缘垂直线的水平距离。根据牛体体直长的测量定义,在二值图像中寻找其最大边缘突变点确定坐骨端后缘的测点位置,这里将边缘检测后边缘的最大突变点定位为测点起始位置,终点位置是过起点位置的垂线与肩端线的交点,其测点位置如图7所示,通过起始测点的位置,计算出点到直线的距离,确定出线段的欧式距离,即为牛体的体直长的测量尺寸。

通过图7测点信息,经过像素距离计算,该线段共有2636个像素单位,由像素距离与实际距离的换算关系,可计算出牛体体直长为2636×0.6066=1598.9976mm,保留两位小数得其体长为159.90cm。

3.3 与实际尺寸的对比

为了检测该方法所得结果的准确程度,事先通过卷尺等测量工具经人工测量了其牛体的体高和体直长数据,测点位置与上述方法中的位置一致,通过实际测量其体高和体直长各五次后,取其平均值将数据记录下来作为实际测量值。然后对比分析两组数据,其结果如表2所示。

由表2中数据的相对误差可知,利用牛体图像测量牛体体高和体直长的方法,其测量的相对误差在±5%的活体动物体尺检测误差标准允许范围内,其测量误差小于规定的误差标准,说明该测量方法可用。

4 结论

经过上述的数据对比分析可以得出,牛体图像经过Canny边缘检测后,在其基础上进行OR分割运算所获得的轮廓与实际的轮廓已经非常接近,完全能够满足后续对牛体体高和体长的测量要求,利用提取到的轮廓进行牛体特征的测量,其测量误差较小,测量精度较高,能够避免人工测量中带来的诸多不便,为现代畜牧中对于牛体体征的测量,提供了一种高效可行的方法。

参考文献

[1] 谢凤英.数字图像处理及应用[M].北京:电子工业出版社,2016:207.

[2] 王润.图像边缘检测算子的适用场景研究[J].电脑知识与技术,2019,15(13):211-214.

[3] 彭嘉涵.图像处理技术在近视眼诊断上的应用[J].电脑编程技巧与维护,2019(01):129-131.

[4] 刘远仲,曾黄麟,樊玉梅.基于Canny算子的白酒显微图像边缘提取[J].四川理工学院学报(自然科学版),2011,24(03):341-344.

[5] 刘同海,滕光辉,付为森,李卓.基于机器视觉的猪体体尺测点提取算法与应用[J].农业工程学报,2013,29(02):161-168.

[6] 李佳奇,赵文忠.几种边缘检测算子在铁路图像中的应用[J].河西学院学报,2012,28(02):68-72.

[7] Canny.John.A Computational Approach to Edge Detection. IEEE Transactions on Patten Analysis and Machine Intel-ligence,1986,PAMI-8(6):679-698.

[8] 董云峰.基于MATLAB的图像边缘检测方法的研究[J].大庆师范学院学报,2018,38(03):30-32.

[9] 王智文.几种边缘检测算子的性能比较研究[J].制造业自动化,2012,34(11):14-16.

[10] 谭毓银,陈绮.几种图像边缘检测算子的比较分析[J].电脑知识与技术,2010,6(29):8326-8327.

[11] 高美歡,刘玉梅,王刚.基于MATLAB的图像边缘检测算法的比较与分析[J].北京测绘,2018,32(01):48-51.

Application of  Edge-based Image Segmentation in Cow Body Measurement

SHI Wei,ZHANG Shuai-qi

(School of  Mechanical Engineering, Inner Mongolia University of  Science and Technology, Baotou Inner Mongolia  014010)

Abstract:Image segmentation is the basis of image processing, analysis and understanding, and it has become one of the most active topics in the field of machine vision. Edge detection can outline the target object and contain rich information. It is an important method to extract image features in image segmentation, recognition and analysis. In this paper, the common operators such as Sobel、Roberts、Prewitt、Gauss-Laplace and Canny algorithms are compared to compare the effects of bovine image segmentation, and it is proved that Canny operator is superior to other operators in general. In view of the possible fracture and incompleteness of Canny operator segmentation, OR operation combined with blur and edge information is used to remove broken edges, and digital morphology is used to refill holes in the image to enhance the effect of edge outline display. On this basis, compared with the actual results, the measurement results of cattle body have smaller error, higher measurement accuracy and better generality, which can meet the daily measurement requirements of body height and body length.

Key words:edge detection; image segmentation; Canny operator; OR operation; cow body measurement