1.一种基于深度学习和OpenCV的隧道裂缝识别方法,其特征在于,包括:步骤1:利用深度学习技术找出裂缝的大体位置与形状:基于Mask-RCNN,利用标注的隧道裂缝图片数据集训练出能够识别裂缝大体位置与形状的模型,给出一张裂缝图片的mask,接下来只需在mask范围内进行裂缝提取;步骤2:利用图像处理技术对识别出的裂缝进行细化:首先对mask进行腐蚀操作,在腐蚀后的mask区域内进行骨架提取;然后利用提取的裂缝骨架结合原图,采用邻域内区域生长算法对裂缝进行填充;步骤3:统计裂缝长度与宽度信息;步骤2中骨架提取过程为:2.1、图像灰度化:采用加权平均法,按照R:0.299,G:0.587,B:0.114的权值对R、G、B的值加权平均;2.2、对比度增强:图片的特征参数包括整体灰度均值和整体灰度方差,采用OTSU算法将直方图划分为两部分,前一部分定义为前景灰度值,为可能是裂缝的灰度值,特征少且灰度值小,后一部分定义为背景灰度值,可能是背景的灰度值,特征多且灰度值大,将这两部分分别求灰度均值,两部分的灰度均值差即为此图片裂缝的明显程度,该值越大,则裂缝区别于背景越明显;A、整体灰度值处于0~165之间的图片定义为整体偏暗,裂缝明显区别于背景是指一张图片中前景灰度值均值与背景灰度值均值之差大于50,裂缝不明显区别于背景,是指该差值介于0~50之间,为了防止非裂缝像素的影响,该步骤的计算在提取mask后的图片上进行,对于整体偏暗且裂缝明显区别于背景的图片,由于裂缝较明显,本发明再次加强其明显程度,使用如下方法进行优化:首先进行第一次局部对比度增强,然后进行整体亮度提升,再通过OTSU算法对全图进行第三次对比度增强;第一次局部对比度增强是对于图像中的每一个点,分别计算其局部均值与局部标准差,均值用来判断某个像素点是属于低频还是高频,让低频变暗高频变亮;整体亮度提升是把图片中所有点的灰度值放大1.1的五次方倍,让图像整体变白;第三次对比度增强是对前两步处理后的图片使用OTSU进行阈值划分,对大于阈值的点的灰度值乘以1.7,对小于阈值的点的灰度值乘以0.5;B、对于整体偏暗且裂缝不明显区别于背景的图片,同步骤A;C、对于整体偏亮的图片,仅采用整体亮度提升;2.3、边缘检测;2.4、对图像进行核为3*3的膨胀操作以及四次闭操作;2.5、利用步骤2.4得到的结果图检测连通域,完成连通域的第一次查询;2.6、更新图片,对图片进行核为7*7的闭运算;更新图片具体为用上一步查询出的连通域对图片进行填充,连通域部分为白,背景为黑;2.7、清空连通域的第一次查询结果,并完成连通域的第二次查询;2.8、更新图片,对图片进行核为3*3的开运算与核为3*3的腐蚀运算;2.9、清空连通域的第二次查询结果,并完成连通域的第三次查询;2.10、遍历每个连通域,对每个连通域进行骨架提取,最后将所有从连通域中提取的骨架绘制成一张图片,形成骨架图片;步骤2中对裂缝进行填充的过程为:2.11、将骨架上的所有点放入容器中,对其进行遍历,即通过从左至右从上至下的扫描方式,图片中的所有骨架点放入一个类型为Point的Vector中,然后遍历这个Vector;2.12、取出Vector中的骨架点,对其邻域进行灰度统计,采用最大类间方差法确定阈值,若该点的灰度值小于等于阈值,则将其作为种子点,在该邻域内进行区域生长;若该点的灰度值大于阈值,则不做处理,继续查询,直到找到一个灰度值小于等于阈值的点停止查询;2.13、遍历完成后生成精细的裂缝图片。
2.根据权利要求1所述的基于深度学习和OpenCV的隧道裂缝识别方法,其特征在于,步骤1具体包括以下步骤:1.1、将整张图像输入网络;1.2、将图像输入CNN,进行特征提取,在该层中将不同scale获得的mask最后叠加起来作为原图的mask;1.3、用FPN生成建议窗口,每张图片生成N个建议窗口;1.4、将FPN生成的多个建议窗口映射到CNN的最后一层卷积feature map上;1.5、通过RoI Align层使每个RoI生成固定尺寸的feature map;1.6、最后利用全连接分类,边框,mask进行回归。
3.根据权利要求1所述的基于深度学习和OpenCV的隧道裂缝识别方法,其特征在于,步骤3进一步为:3.1、利用步骤2.10得到的骨架图片和提取后的图片进行判断,即对骨架图片进行连通域查询,每个连通域都代表着一条裂缝,对每个连通域分别进行裂缝长宽信息的查询;3.2、采用邻域查询法在每个连通域内进行长宽信息查询,在每个点的邻域内统计黑色像素的个数,即裂缝的像素个数;提取后的裂缝图片中,裂缝为黑色,背景为白色,黑色像素代表裂缝,黑色像素的个数代表这一邻域内裂缝所占面积;3.3、对于骨架图片,每个连通域内的像素个数即为该段裂缝的长度;对于提取后的裂缝图片,分别记录步骤3.2的遍历中得到的裂缝所占面积最大值以及该面积所在区域中心点的坐标,在步骤3.2遍历完成后,用裂缝最大面积/邻域边长n,来估算裂缝的最大宽度。