APP下载

基于连通域的复杂背景下粘连单元分割算法

2021-04-23姚梦洁

软件导刊 2021年4期
关键词:亮度波段边缘

姚梦洁

(山东科技大学测绘与空间信息学院,山东青岛 266590)

0 引言

20 世纪70 年代计算机性能提升,可处理图像等大规模数据,研究者可利用计算机代替人类视觉器官认识世界,计算机视觉逐渐受到关注。通过计算机实现自动读取、识别客观世界,代替人脑进行处理,实现人工智能是该学科探索方向[1]。近年来计算机视觉技术飞速发展,在医学、工业等方面应用广泛,如何实现生活生产过程自动化成为研究焦点[2]。计算机具有机械性特点,一方面可快速批量进行大数据处理,另一方面根据机械命令运转。因此需将人脑机能通过冗长、复杂的程序转化为计算机机械性语言[3]。

在工业生产中,产品质检必不可少,利用计算机实现生产过程自动化是目前工业生产研究热点[4]。在工业质检中,需要检查产品组成成分数量是否达标,但这些组成成分往往粘连严重且背景复杂,因此粘连单元数量检测成为工业生产中计算机视觉应用难点[5-6]。现有处理粘连单元的主要方法是通过分割算法将粘连单元分离开来。叶明等[7]对粘连颗粒图像中心点进行识别,利用先验图像前景轮廓对图像进行检测确定中心点;芦念加等[8]先进行粘连物体中心核提取,根据中心核进行极限腐蚀并分割图像;何磊等[9]利用自适应极大值方法对分水岭过分割问题进行改进;李永锋等[10]通过距离变换改进分水岭算法,对粘连大米进行分割;高扬等[11]基于模糊距离变换改进了颗粒分割算法;魏瑾等[12]将模糊距离与分水岭算法相结合。上述方法研究对象只有小部分粘连,粘连单元粘连程度较低,且粘连单元之间有空隙,部分算法只适用于特定形状,因此在实际生产中实用性不强,并不适用于粘连严重背景复杂的分割,所以研究粘连单元分割算法具有重要意义。

一般通过检验纤维产品组成单元数量判断其是否符合生产标准。目前通过计算机进行自动数量检测主要借助连通域计数。该方法先对待检测的图像进行二值化,然后利用种子算法形成多个连通域,通过检测连通域数量得到纤维粘连单元数量。但是在实际生产中,高清纤维单元照片往往背景复杂且存在粘连现象,复杂的背景难以去除且多个单元粘连容易被错认为是1 个连通域,所以数量检测难度较大。针对纤维粘连单元数量检测难点,本文采用波段运算解决背景复杂问题,采用边缘检测与连通域标记的方法解决纤维单元粘连问题。

1 数据预处理

工业生产图像背景复杂,后续操作容易造成很大误差,因此需将前景从复杂背景中提取出来,进行前景、背景分离,所检测的前景往往与背景在颜色或亮度等方面存在较大差异。针对粘连单元和背景差异,本文利用波段运算方法去除背景,通过观察各波段图像之间的关系进行波段间加减运算,最终去除背景。

本文实验图像是从工厂直接拍摄得到的样本图,由于相机相位及各项校正参数等可控,所以在进行粘连物体数量检测时可忽略位置、相机拍摄等客观条件的影响。

原始实验图像如图1(彩图扫描OSID 码可见)所示。图1(a)、图1(b)分别为同一相机位拍摄的不同纤维图像。中间颗粒状物体为纤维单元,周围蓝色和白色部分均为杂乱背景。连通域进行数量检测是根据像元亮度值进行判断,将像元在一定亮度范围之内的纤维单元二值化后进行数量检测。图1 中纤维单元和复杂背景像元范围没有明确界限,甚至是相互交叉的关系,因而利用连通域进行数量检测时需先将纤维单元与杂乱的背景分离。

Fig.1 Fiber adhesion unit samples图1 纤维粘连单元样品

为了找到纤维单元与背景的分离方法,本文利用ENVI软件统计R、G、B 3 个波段图像元亮度值,其分布如图2 所示。图3 是红光波段图像,亮度值高的区域是需检测的纤维单元;图4 是绿光波段图像,亮度值较高的区域是纤维单元及其周围背景;图5 为蓝光波段,图中亮度值相对较高的地方主要是背景部分。本文利用波段运算的方法去除背景,从图2 可以看出,利用红光波段或绿光波段与蓝光波段作差可得到纤维单元,但对3 个波段亮度值分布进行分析可知,红光波段亮度值较高的像元非常多,作差以后容易产生纤维单元,导致整个区域高亮、看不出边缘,而采用绿光波段与蓝光波段做差则能取得较好的检测结果。

Fig.2 Distribution of brightness valus图2 像元亮度值分布

Fig.3 R-band image图3 R 波段图像

Fig.4 G-band image图4 G 波段图像

Fig.5 B-band image图5 B 波段图像

在进行波段运算时,在部分背景区域出现像元值相减之后小于0,本文将这些小于零的值均赋为零。但由于波段运算得到的纤维单元图存在亮度较暗的杂质,所以将去除背景后的图像进行高斯滤波,以提高纤维单元提取纯度。本文运用该波段运算方法对40 多个纤维样本图进行背景提取,其中4 个样本图背景去除后的结果如图6 所示。

2 原理与方法

经过数据预处理得到的纤维单元仍存在粘连,本文通过边缘检测得到纤维粘连单元边界,然后将去除背景纤维单元图与边缘检测图做差得到独立纤维单元,从而利用连通域与种子算法进行检测即可得到纤维单元数量。

Fig.6 Results after background removal图6 背景去除后的结果

2.1 边缘检测

计算机视觉应用中最常用的两种边缘检测技术是阈值法与边缘连接法。在阈值法中,利用邻域算子对图像灰度进行不连续性增强[13]。边缘检测是一种基于物体与背景间灰度或纹理特性中某种不连续性或突变性的检测技术。目前在计算机视觉中,常用边缘检测算法主要有拉普拉斯边缘检测、基于模板的边缘检测和基于方向梯度法进行的边缘检测[14]。本文将3 种算法运行结果进行对比分析,发现利用方向梯度法对纤维单元进行边缘检测获得的边缘更为流畅清晰。

方向梯度法的思想是若边缘处于梯度方向最大值处,并且预计在沿着边缘梯度垂直方向出现下一个梯度点,即将图片看作二维函数,每个x、y 对应1 个函数值,每个像素点均有梯度方向,这样使边缘检测加入方向性,每个像素点均有梯度方向,检测效果更好[15]。

如式(1)所示,gx表示x 方向梯度变化,gy表示y 方向梯度变化,g 表示梯度变化值,θ表示梯度方向。利用方向梯度法对去掉背景后的粘连单元进行边缘检测得到边缘,为了增加边缘连贯性,对得到的边缘图进行膨胀,膨胀后的边缘检测结果如图7(a)所示,放大后结果如图7(b)所示。

Fig.7 Edge detection results图7 边缘检测结果

2.2 基于连通域的数量检测

连通域是基于图像二值化进行的。在图像分割中,图像投影释放出潜在和有用信息。图像分割方法应用包括背景分离、故障识别、疾病预测、基于内容的图像检索、目标识别等。数字图像分割是检测和识别给定图像中目标的关键环节[16],大多将图像进行二值化,即图像中像素只有两种可能,一般默认为非黑即白。利用种子算法将二值化后的图像进行连通域检测,最终对连通域进行计数得到连通域数量,即待测纤维粘连单元个数[17]。

二值图像指图像中的每个像素只有两种可能的取值或灰度等级状态,通常用黑白、B&W表示。图像二值化是对图像进行数据处理和压缩的过程,通过设置阈值,将像素值划分为两部分,分别赋予两个固定的像素值,一般设置成非黑即白,即二值化后的图像像素值只有0 和255两种,二值化后的图像可反映图像整体和局部特征,有利于在对图像进一步处理时,不再涉及像素多级值,简化处理过程。本文进行图像二值化时将纤维单元点亮度值标记为255,非纤维单元点亮度值标记为0[18-19]。

二值化后的图像需进行连通域标记,连通域标记采用区域增长算法[20]。首先,从图像的第1 个像素点开始遍历,找到第1 个像素值为0 作为种子点;然后遍历种子点周围的点,看像素值是否为0,如果为0,则将其合并到种子像素集合中;最后将集合所有像素作为新的种子像素,如此反复,直到再没有像素可被合并。在遍历过程中所有遍历过的像素均被标记,此时种子像素所在整体构成1 个连通域,然后继续遍历其他没有标记过的像素,找到新的种子点,最终找到所有连通域。

将边缘检测得到的边缘图和去除背景后的图像进行做差,可以得到分离的纤维单元,为了获取更高精度的结果,对做差图进行腐蚀,防止某些区域有细微连通,得到分离的纤维单元如图8(a)所示,图8(b)为左图中的局部区域的放大显示。

Fig.8 Separated fiber units图8 分离的纤维单元

对做差得到的纤维单元图进行数量检测,数量检测结果如图9(彩图扫描OSID 码可见)所示,每个红色框标识检测出的1 个连通域,对该图像进行计数得到的纤维单元个数为36,检测结果为33,除个别单元粘连严重以外,大多数纤维单元均可检测,即使亮度较暗的纤维单元也可被全部检测出来。

Fig.9 Quantity test result of fiber units图9 纤维单元数量检测结果

3 实验结果与对比分析

3.1 实验结果

采集尺寸为5 472×3 648 的纤维图像作为实验数据。通过对纤维单元进行人工计数作为检验数据。实验过程中,一共选取10 幅图像进行检测,10 幅图像相机位、相机参数固定,其纤维单元大小形状等有微小差异,但并不会影响检测效果。

在实验过程中,为了获取纯净的纤维单元,采用波段运算的方法去除背景,通过分析多幅图像RGB 波段图像,最终确定通过绿光波段和蓝光波段做差,然后过滤较低亮度的暗像元以去除纤维单元背景。为了将粘连单元分离开来,本文采用方向梯度法进行边缘检测,将去除背景的纤维图像与检测到的边缘做差,以达到去除粘连单元边缘的目的,从而将粘连单元分离,然后利用连通域标记算法进行纤维单元数量检测。从检测结果可以看出,所有纤维单元均可被提取出来,包括亮度值较暗的纤维单元,整体检测结果检测误差较小,仅极个别纤维单元在做差后存在粘连现象。

目前进行粘连单元分离的方法主要有两种:①对图像进行锐化,通过调节对比度等方法使单元边缘弱化,中心较亮的部分突出,但是该方法只适用于边缘和粘连单元亮度值有明显差异的图像,且不适用于粘连单元本身亮度值分布不均匀的情况;②对图像进行分割,主要方法是分水岭算法,目前对分水岭算法的研究较多,但是分割不完全和过分割问题始终没有得到解决,而且大多数算法研究对象仅为部分粘连单元,对于粘连严重的单元始终没有很好的分割方法。

进行粘连单元数量检测的关键是将粘连单元分成独立的连通域,然后对所有连通域进行计数,最终得到的数量即为粘连单元个数。为把粘连单元变为独立单元可将粘连的模糊边缘变清晰,从而使粘连单元分离开来。本文基于该思想直接进行边缘检测,将边缘提取后去除,从而分离粘连单元。本文利用已发展较成熟的边缘检测算法,针对被检测物体粘连程度较高的特点,采用方向梯度法进行边缘检测,同时沿x、y 方向边缘进行检测,最后对检测结果进行合成。方向梯度法是基于物体与背景间灰度或纹理特性上某种不连续性或突变型的一种检测技术,通过对亮度值发生突变的区域检测得到边缘,可有效获取边缘信息,对于不发生突变的暗像元区域不会发生误判,还可完整检测出粘连程度严重的整个区域边缘,实验中检测多幅图像均获得了完整的边缘。通过将粘连单元前景图减去其边缘检测结果可得到独立的检测单元,最后基于连通域标记的算法对纤维单元进行数量检测。

3.2 对比分析

本文提出的粘连单元数量检测方法在对粘连单元分割研究的基础上,针对传统分水岭图像分割缺点,对图像分割进行有效优化。

传统图像分割方法基于分水岭算法。该算法将图像中的边缘转化成“山脉”,将均匀地区转化为“山谷”,其基本思想是把图像看作是测地学上的拓扑地貌,图像中每一点像素灰度值表示该点海拔高度,每一个局部极小值及其影响区域称为集水盆,而集水盆边界则形成分水岭。分水岭算法根据找到两个局部极小值区域的交界线求得边界,所得边缘是一条由极大值点组成的连贯曲线。但是在实际生产生活中,物体之间的粘连并不是简单的一条线,往往是由很多最大值点组成的带状结构,此时利用分水岭算法进行边缘检测无法找到可连成线的极大值点,因此无法得到准确的边界检测结果。

本文提出基于方向梯度法的边缘检测算法,图像像素值变化情况可由像素值分布梯度反映,给定连续的图像f(x,y),其方向倒数在边缘方向上取得局部最大值。图像中1 点边缘被定义为1 个矢量,模为当前点最大的方向导数,方向为该角度代表的方向。通常只考虑模大小而忽略其方向,但实际情况中边缘一般是连续变化的点。分水岭算法可求取两个局部最小值中间的极大值点(标记为边界点),但实际生产中边界往往不是由点连成的线,而是细长的条带状结构,所以该方法在实际生产中并不适用。利用方向梯度法相对于分水岭算法进行的边缘提取既可兼顾像素点变化大小又能考虑像素点方向变化,从而提高边缘检测准确度。

4 结语

本文采用方向梯度法进行边缘检测,该方法是目前公认的可较好获取图像边缘的检测算法。但目前进行粘连单元数量检测时大都采用将粘连单元分割开来再计数的方法,分割算法仅针对粘连程度较轻且边界清晰明显的图像有较好的分割效果,运用现有算法处理粘连程度较严重的图像时存在严重的过分割或分割不足等问题,往往产生较大的影像。实验证明,本文方法可有效解决过分割或者分割不足的问题,精确分离后的计数误差在10%以内,效果有明显改进,在工业生产质检中具有较强的实用性。

为了将粘连单元分离,本文采用边缘检测法,但是该方法仅适用于单元不太小的情况,如果粘连单元太小,则去掉边缘后单元在滤波过程中可能被过滤掉,因此在尽可能保证边缘检测效果好的情况下,如何保证较小粘连单元不被过滤掉,是下一步研究内容。

猜你喜欢

亮度波段边缘
亮度调色多面手
亮度一样吗?
一张图看懂边缘计算
M87的多波段辐射过程及其能谱拟合
基于斩波调制的LED亮度控制
人生的亮度
日常维护对L 波段雷达的重要性
基于SPOT影像的最佳波段组合选取研究
L波段雷达磁控管的使用与维护
在边缘寻找自我