基于机器视觉的矿井岩石裂缝识别算法

时间:2023-07-03 20:25:02 来源:网友投稿

隋鹏飞,滕 腾,樊春玲

(青岛科技大学 自动化与电子工程学院,山东 青岛 266061)

因矿山爆破不充分存在大量残留岩石,为防止残留岩石掉落,现阶段多为人工识别岩石裂缝进行清除。为了降低识别的经济成本,解决人工识别费时费力、保障排险工作人身安全等问题。采用机器视觉技术进行图像处理识别裂缝区域。近年来,基于机器视觉的检测技术迅速发展并取得了显著的成就[1]。国内外学者在裂缝识别方面做了大量研究。FUJITA等[2]提出了使用中值滤波与原图差值移除图像阴影,汉森矩阵的线性滤波进行裂缝识别。王耀东等[3]提出分块图像局部算法进行网格化提高隧道裂缝的检测精度,但是该检测算法对矿井岩石裂缝图像的纹理噪声适用性不足。宋蓓蓓等[4]利用模糊C均值聚类分割沥青路面图像提高路面裂缝的识别率,但在实验过程中用多次用到了经验阈值,不具有良好的自适应性。李清泉等[5]基于最小代价路径搜索检测路面裂缝,并通过种子点法提取裂缝。YAMAGUCHI等[6]通过渗滤处理算法快速识别大尺寸图像裂缝,但易丢失裂缝细节。黎蔚等[7]改进分水岭算法对于沥青路面的裂缝识别取得了不错的效果,但是分水岭算法对噪声的敏感局部的变化导致对分割结果有影响,从而造成提取后的裂缝图像有少量失真。王平让等[8]通过种子连接算法将网格中灰度值最小的裂缝像素点进行连接,获得较完整的隧道裂缝,但当裂缝像素与背景像素之间的亮度差异和对比度差异不明显时,识别效果不佳。上述学者在岩石、路面等不同领域对裂缝识别提出了不同的优化算法,但是由于采集设备型号不同、曝光度不同导致采集图像噪声,以及采集图像背景不同导致算法不适用于本工作的工程需要。

本工作针对矿井岩石裂缝表面复杂,裂缝周围有大量噪点,传统阈值分割难以区分目标背景问题,通过粒子群优化算法寻找图像最佳阈值对图像进行分割,在识别过程中裂缝会出现不同程度的断点,首先通过模板匹配和迭代法对Zhang算法进行改进实现单一光滑像素骨架的提取并对裂缝骨架进行断点查找。然后结合膨胀算法对裂缝断点处进行区域生长,获得较为完整的裂缝区域,为后续矿井残留岩石的清除提供了便利。

1.1 基于粒子群优化的阈值分割

目标和背景区分出来的过程叫做阈值分割。由于本文针对矿井岩石裂缝表面复杂,裂缝周围有大量噪点的特点并兼顾经济成本的实际工程需求,目前OTSU算法是最简单标准的自动阈值分割算法,其基本思想是通过类间方差最大,类内方差最小寻找阈值[9]。OTSU算法能够根据图像的灰度特征计算出阈值,由于岩石裂缝图像有大量噪声以及目标与背景大小比例悬殊(如图2所示),类间方差准则函数可能出现双峰或多峰,进行图像分割效果不佳。粒子群算法(PSO)内存需求小,易实现,能够在不同工程问题中找出最优方案[10]。本工作考虑将粒子群优化算法和OTSU算法相结合对图像阈值进行分割。采用基于粒子群优化的阈值分割步骤:

1)初始化参数,设定最大迭代次数为80次,自变量为分割阈值T,搜索空间和粒子速度分别为[0,255]、[0,255]。设定粒子群规模为20,学习因子为2,运行次数20。初始化每一个粒子飞行速度。

2)寻找个体极值和全局阈值。适应度函数为OTSU函数,个体极值为每个粒子寻找的最优解,从个体最优解中找到最佳解为全局最优解。与历史全局最优作比较,进行更新。

3)粒子状态更新,通过公式(1)和(2)进行每个粒子的位置速度更新。

4)当达到设定迭代次数80次,或最终结果小于设定的收敛要求则迭代结束,输出最佳结果,否则继续寻找最佳阈值。

5)采取最佳阈值对图像进行图像分割。

基于粒子群阈值分割算法流程图如图1所示。

图1 基于粒子群优化算法的阈值分割流程图Fig.1 Threshold segmentation flowchart based on particle swarm optimization algorithm

为了验证基于粒子群优化的阈值分割算法的有效性,首先于矿井现场采集了大量具有代表性的岩石裂缝图片样本,然后将其应用到矿井岩石的裂缝分割中,并与OTSU阈值分割算法进行分析。

矿井岩石的裂缝如图2所示。通过图2(a)可以看出裂缝表面有大量磨损且磨损处有大量噪点,图2(b)背景与目标对比度较低使用传统阈值分割算法较难实现图像分割。

经粒子群算法进行图像分割阈值迭代曲线如图3所示,通过图3可以看出采用粒子群优化算法对图像进行阈值分割时,图像分割阈值不断迭代更新,可以自适应找出每幅图像的最佳阈值。当迭代次数达到20次时,阈值平稳,图3(a)阈值为66.5左右,图3(b)阈值在73左右。

图3 粒子群分割阈值迭代曲线Fig.3 Iterative curve of particle swarm segmentation threshold

采用粒子群优化计算出最佳阈值66.5和73,然后对图像进行阈值分割,并与OTSU算法的阈值分割结果进行对比,如图4所示。图4(a)、(b)是采用OTSU算法对图2中裂缝进行分割的结果,由于采集原图曝光度以及表面磨损使得OTSU阈值分割结果中裂缝背景有大面积性不均匀。图4(c)、(d)是采用粒子群阈值分割对图2中裂缝进行分割的结果,可以看出目标与背景能更好地分离,杂质区域减少,基于粒子群优化的阈值分割效果相比OTSU算法有很大改善。

图2 裂缝原图Fig.2 Original image of the crack

图4 OTSU和粒子群优化后的阈值分割结果对比Fig.4 Comparison of threshold segmentation results between OTSU and particle swarm optimization

1.2 图像孤立点的消除

对图像进行阈值分割之后,图像中仍然不可避免存在噪点,这些噪点离散分布,而且连通域较小。本文首先进行连通域标记(通过Opencv函数库中find Contours进行连通域标记),然后对连通域进行面积计算(使用contour Area计算每个轮廓的面积),计算面积为Di(i=1,2,3,…),结合噪点较裂缝连通域较小的特点,设定阈值T(本工作设定阈值T为200,通过对连通域面积进行计算并分析连通域面积的占比情况来确定阈值),若Di<T视为噪点,并将其改为背景色。

孤立点消除结果如图5所示。从图5中可以看出,噪点已经被完整去除。因每张图片噪点复杂度和光照度不同,以及固定的阈值,在进行处理时会将一些裂缝视为噪点消除,导致处理后的裂缝会出现断裂,为保持裂缝的连续性需进行裂缝生长拼接。

图5 孤立点的消除Fig.5 Elimination of outliers

1.3 裂缝断点生长

进行裂缝生长过程中需要寻找断点坐标,因裂缝断点处有多组坐标,在生长时会出现错连。裂缝骨架是由单一像素构成,这为裂缝断点坐标提取提供了方便。首先需要进行单一光滑骨架的提取,然后对单一光滑骨架进行遍历寻找断点并对断点进行单一像素的连接,为还原裂缝的真实性,最后通过结构元素进行裂缝断点处的宽度生长。

1.3.1裂缝骨架提取

对于骨架提取,Zhang算法是一种经典算法,Zhang并行细化算法保证骨架在目标图像中心线上但存在非单一像素且有毛刺[11]。针对骨架非单一像素及毛刺问题,本工作通过模板匹配法和迭代法对zhang算法进行优化改进,首先实现骨架单一化,以便更好地提取断点。

采用Zhang并行细化算法对裂缝进行骨架提取结果局部图如图6所示。从图6中可以看出该算法得到的图像能保留裂缝的完整性,但是细化结果存在非单一像素宽度90°夹角的突起点。

图6 Zhang并行细化算法骨架提取局部图Fig.6 Partial diagram of Zhang algorithm skeleton extraction

突起点可以分为左上、左下、右上、右下4个方向(突起点8邻域示意图如图7所示)。因此,针对骨架非单一像素,本工作首先结合模板匹配思想对Zhang并行细化算法进行改进对突起点进行消除。对图7突起点8邻域进行分析,以右下突起点为例。若P1为右下突起点则P1,P2,P8像素值必为255且P4、P5、P6像素值必为0,即P1=P2=P8=255&P4=P5=P6=0为P1为突起点的充分必要条件。其余三个方向的判定同理。

图7 突起点8邻域示意图Fig.7 Sketch map of 8 neighborhood of outburst point

经过8邻域模板匹配处理结果如图8所示,可以看出通过8邻域模板匹配方法可以有效消除非单一像素宽度目标点,实现裂缝骨架单一化。

图8 骨架像素单一化处理对比结果图Fig.8 Comparison results of skeleton pixel simplification processing

改进的Zhang并行细化算法实现了骨架的单一像素,但是骨架中存在着少许毛刺(如图9(a)、(c)所示)。为了得到光滑骨架,需要进行骨架毛刺清除。可以根据毛刺连通域较小的特点进行毛刺处理。根据8邻域范围特征对单一化骨架进行分析,当目标点8邻域内有且只有2个不相邻的像素点视为骨架点,有大于等于3个相连点视为为毛刺结点。本工作在保留裂缝骨架主体信息的基础上,对图像进行拓扑分析迭代消除毛刺。毛刺清除算法流程步骤:

1)遍历图像上每一个像素点,分析目标点8邻域像素值为255点的个数,若该点8邻域像素值为255的点大于等于3个,该点即为结点,将该点与8邻域像素点的像素值置为背景色。

2)目标点8邻域置为背景色后出现多个连通域,从顶点出发计算多个连通区域的面积,记为A。

3)设置阈值的大小T,若A≤T,则删去该小区域;否则,不作处理。

4)目标点8邻域置为背景色后多处出现断点,判断两断点之间距离L,若L相差小于等于2个像素点即可用单一像素连接。

由图9(b)、(d)可以看出毛刺被清除,提取的裂缝骨架较为光滑,未有图像的丢失,提高了识别的正确率,为裂缝生长断点查找提供了方便。

图9 骨架毛刺局部清除图Fig.9 Partial view of skeleton burr

Zhang算法骨架提取结果如图10(a)(c),经过模板匹配法和迭代法优化后的Zhang骨架提取结果如图10(b)(d),经过图10对比结果可以看出优化后的Zhang算法骨架提取结果实现了单一光滑像素骨架。

图10 优化后的Zhang算法骨架提取结果和未经优化的Zhang算法骨架提取图Fig.10 Skeleton extraction results of optimized Zhang algorithm and skeleton extraction images of unoptimized Zhang algorithm

1.3.2 裂缝断点生长

经模板匹配法和迭代法对Zhang算法进行优化形成单一像素光滑骨架,然后需要寻找断点并对断点处进行生长。传统的图像断点连接算法可进行断处连接但会导致边界失真,不能将断处还原。在这问题上,很多学者也都提出自己想法。徐毅等[12]考虑等照度线曲率、梯度值、边缘断点进行方向等构建形态学算子,对边缘进行路径闭运算完成断裂连接。胡慧等[13]考虑图像边缘点的灰度以及梯度信息,提出了基于模糊判决和蚁群机制的断点连接方法。丁宾等[14]通过边缘检测和哈夫变换相结合进行边缘切线方向的连接。本工作前期对采集的矿井岩石裂缝图像进行预处理,会对裂缝区域产生一定的影响,考虑算法的有效性以及裂缝断点连接的准确性,本工作结合形态学操作实现断处生长。连接算法步骤:

1)遍历图像像素点X,从单一光滑骨架左上角开始自左向右自上向下搜索,分析图像断点8邻域特征(目标像素点8邻域内仅有一个像素值为255的像素点即为裂缝断点)。

2)结合裂缝断接处长度较小的特点,判断两端点之间距离,若两个断裂点之间小于25个像素点时,即可连接。单一像素连接分三种情况如图11所示(两端点之间横坐标之差用X表示,纵坐标之差用Y表示),当X=Y时沿x轴和y轴夹角45°方向连接。当X>Y时沿x轴方向连接。X<Y当时沿y轴方向连接。连接均为单一像素。

图11 连接方向示意图Fig.11 Schematic diagram of the connection direction

3)继续扫描,若X点为空时,即扫描结束,输出得到新的连接后的裂缝图像。

图像进行单一像素连接后,为得到完整目标图像,需要对断点单像素连接处进行宽度生长。形态学膨胀腐蚀运算可以对裂缝断点连接产生影响,但是形态学运算是沿图像多方向进行操作,会导致裂缝目标图像产生失真现象,因此本工作根据形态学运算算法对结构元素进行修改,实现裂缝宽度生长。宽度生长算法步骤如下:

1)判断单一像素生长方向,假设断点处坐标分别为(xo,yo)和(xk,yk),分别对两点的横坐标纵坐标取差y′=|yk-yo|x′=|xk-xo|,若y′>x′则沿x轴方向生长,反之,则沿y轴方向生长。

2)遍历(xo,yo)和(xk,yk)坐标之间的所有点,若像素值为255则为目标点P,即用生长元素对目标点进行单一像素宽度生长(图12(a)图对目标点进行纵向宽度生长,(b)图对目标点进行横向宽度生长)。

图12 生长结构元素Fig.12 Growth structure element

3)计算两断点处的平均宽度为A,因为每次生长2个像素点,所以生长迭代次数为A/2次。

裂缝生长结果如图13(c)、(f)和(i)所示,从图13中可以看出通过裂缝生长将裂缝完整提取,保留了裂缝的完整性,处理结果较为理想。

图13 裂缝断点生长图Fig.13 Fracture breakpoint growth diagram

对本工作提出的裂缝识别算法进行验证,裂缝特征提取示意图如图13所示,岩石裂缝可分为两类,一类为线条型规则裂缝,如图14(a)和图14(d);另一类为网状型不规则裂缝,如图14(b)和图14(c),为了更加形象的描述出算法的有效性,本工作将裂缝识别结果与原图作比较。通过图14(e)~(h)可以看出本工作所提出的算法可以较好的将目标与背景区分出来,但是在网状型不规则裂缝中的细小裂缝难以识别。本工作采集200张裂缝进行实验,裂缝识别率如表1所示。从表1可以看出,本工作算法对线条型规则线状裂缝识别率较高,为93%,但是网状型不规则裂缝由于存在较为细小裂缝,因目标背景对比度较低导致裂缝识别率较低,识别率为79%。结合工程实际应用与现场实际情况,细小裂缝延伸度较小,危险等级较低可不需要进行敲击。

图14 裂缝识别结果示意图Fig.14 Schematic diagram of crack recognition results

表1 裂缝识别率Table 1 Fracture identification rate

面向矿井实际工程需要,提出一种基于机器视觉的矿井岩石裂缝识别算法,在阈值分割方面,采用粒子群算法优化OTSU算法的阈值解决了矿井岩石裂缝背景复杂目标裂缝和背景难以分割的问题;在骨架提取方面,通过模板匹配和迭代法对Zhang算法进行优化提取光滑单一像素裂缝骨架,并实现裂缝毛刺的消除;最后结合膨胀算法对生长元素进行重新定义实现裂缝断处连接。通过实验结果分析验证此算法对矿井岩石裂缝识别具有更好适应性和有效性,虽然在不规则细小裂缝(裂缝宽度小于1mm)上的识别率较低,但是由于现场细小裂缝的危险性小,实际工程对这一类细小裂缝无要求,并且本系统具有快速、适用性强和成本低等特点,完全可以满足此工程应用需求。

猜你喜欢断点邻域骨架基于混合变邻域的自动化滴灌轮灌分组算法农业工程学报(2022年7期)2022-07-09断点辽河(2022年4期)2022-06-09浅谈管状骨架喷涂方法电子乐园·上旬刊(2022年5期)2022-04-09含例邻域逻辑的萨奎斯特对应理论逻辑学研究(2021年3期)2021-09-29骨架密度对炭/炭多孔骨架压力浸渗铜的影响中国新技术新产品(2020年5期)2020-05-06用Eclipse调试Python电脑报(2019年20期)2019-09-10火力发电机组自启停(APS)系统架构设计方案电子技术与软件工程(2019年12期)2019-08-22一类无限可能问题的解法初中生世界·九年级(2019年6期)2019-08-15尖锐特征曲面点云模型各向异性邻域搜索计算机应用与软件(2018年12期)2018-12-13周博士考察拾零(六十六)日光温室前屋面开机具作业门处骨架的处理方法农业工程技术·温室园艺(2017年3期)2017-07-13

推荐访问:矿井 裂缝 岩石