本发明属于图像识别技术领域,具体涉及一种裂缝图像识别与建模方法。
背景技术:
图像识别与建模是通过计算机对既有裂缝图像学习、处理等一系列的加工过程,实现对图像目标的提取与三维重构。基于神经网络的图像识别技术是人工智能的一个重要领域。该技术能够为用户提供很多方便,例如对于植物病害图片进行识别可快速找到病害植株;再如对场地遥感图片识别可快速识别场地类型,更可以精确识别人脸图片并与已有数据库中人脸相匹配准确获取身份信息。但是由于裂缝特有的宽度较窄与细小裂缝难以标记的特点,现有的神经网络识别方法对于裂缝识别效果较差,识别的准确率较低。目前,神经网络更适合为图片目标定性,难以提取准确坐标。对边界区域的识别难以满足之后三维建模的需求。
技术实现要素:
本发明目的在于提供一种裂缝图像识别与建模方法以解决以上问题。
为了实现上述目的,本发明采用的技术方案如下:
一种裂缝图像识别与建模方法,包括以下步骤:
步骤1、基于深度学习mask-rcnn网络进行裂缝图片的粗识别并得到粗提取裂缝图,包括:
步骤1.1:准备用于训练网络的训练用裂缝图片和待检测的裂缝图片;
步骤1.2:利用labelme对训练用裂缝图片进行标注:
首先将训练用裂缝图片导入labelme,将裂缝及其周围分割为多个矩形小块并进行标注,将所述多个矩形小块标注为三类:水平裂缝、竖直裂缝、斜裂缝,分别用hc、vc、oc三种标签表示,保存后每张训练用裂缝图片会得到一个对应的json标注文件;
步骤1.3:对所述json标注文件进行转换,过程如下:
使用labelme中自带的labelmejsontodataset脚本函数将步骤1.2所得的json标注文件转换为三个文件:标注的掩模图、掩模图加原图的示意图和标签名的集合;
步骤1.4:将训练用裂缝图片放入mask-rcnn中进行训练:将步骤1.3中生成的掩模图、标签名的集合及训练用裂缝图片放入mask-rcnn网络中进行训练,网络训练完成后将待检测的裂缝图片输入到训练好的网络中进行识别,网络将待检测的裂缝图片中的潜在裂缝区域划分为多段并给出每一段的置信度,所述置信度表示网络认为该段区域中存在裂缝的概率,设置一个概率阈值,将置信度高于该概率阈值的区域段标记出,将标记有置信度的区域段提取出来即为粗提取裂缝图;
步骤2、将粗提取裂缝图经过opencv图像处理后获得裂缝在二维图片上的拐点和突变点的像素坐标,具体过程为:利用opencv对粗提取裂缝图进行高斯滤波以及去噪的操作,获得一去噪的较为纯净的粗提取裂缝图,且进一步将粗提取裂缝图二值化以及边缘提取,得出一张仅有裂缝边缘的粗提取裂缝图,将裂缝提取n个拐点和突变点,所述拐点为裂缝的拐点,所述突变点为裂缝宽度的粗细突变点,并将对应的拐点和突变点像素坐标格式化输出到txt文件,将同一裂缝不同角度的每一张图片的拐点和突变点像素坐标格式化并输出到txt,所述n≥3;
步骤3、利用sift算法进行图像特征匹配,获得同名点坐标,过程如下:
利用sift算法匹配同一裂缝不同角度的图片,通过对每一张图片上的拐点和突变点进行匹配,当一些区域中的拐点和突变点达到预定密度时,求解裂缝同名点坐标,所述裂缝同名点坐标即为同一裂缝位置在不同角度图片中的点的坐标,在得到所有裂缝同名点坐标后,将所有裂缝同名点坐标信息格式化输出到txt文件;
步骤4、构建裂缝的三维模型;
利用photoscan软件获取裂缝同名点的三维空间坐标,从而构建出裂缝的三维模型。
进一步地,将掩模图、标签名的集合及训练用裂缝图片放入mask-rcnn网络中进行训练的具体过程为:分别读取这三个文件,并将掩模图覆盖于训练用裂缝图片之上添加标签送入mask-rcnn网络,其中学习率设置为0.001,学习动量为0.9,前景阈值设置为0.3,利用coco训练集训练完毕的权重进行初始化,训练网络负责分类定位目标物的headlayer80次,再训练全部网络80次。
进一步地,所述步骤2中的n为8。
相比于现有技术,本发明的优点为:
本发明提供了一种较为可靠的裂缝图像识别与建模方法,该方法将深度学习图像识别与opencv图像处理技术的优点相结合,形成一种“由粗识别到精确识别”的图像识别方法,有效提高了识别准确率,并最终依靠同一裂缝位置不同角度的图片坐标提取生成裂缝三维建模,解决了裂缝因为尺寸细小较难识别与建模的问题,可行性强、鲁棒性较高,而且可以有效节省人力成本。
附图说明
图1是本发明的经过labelme标注的裂缝图。
图2是本发明的经过mask-rcnn网络粗提取后的裂缝图。
图3是本发明的粗提取裂缝图。
图4是本发明的经过opencv边缘提取后的裂缝图。
具体实施方式
以下结合具体实施例对本发明的实现进行详细的描述。
一种裂缝图像识别与建模方法,包括以下步骤:
步骤1、基于深度学习mask-rcnn网络进行裂缝图片的粗识别并得到粗提取裂缝图
步骤1.1:准备用于训练网络的训练用裂缝图片和待检测的裂缝图片,过程如下。
准备同样像素大小的裂缝图片若干,其中每个裂缝准备多种角度的图片,将这些裂缝图片分为两部分,一部分作为训练用裂缝图片,另一部分作为待检测的裂缝图片,可以有效提高识别准确率。
步骤1.2:利用labelme对训练用裂缝图片进行标注,过程如下:
首先将训练用裂缝图片导入labelme,将裂缝及其周围分割为多个矩形小块进行标注,从而杜绝了人工误差。同时增加识别准确率,我们将所述多个矩形小块标注为三类:水平裂缝、竖直裂缝、斜裂缝,分别用hc、vc、oc三种标签表示。保存后每张图片会出现一个对应的json标注文件。标注过程如图1。
步骤1.3:对json标注文件进行转换,过程如下:
使用labelme中自带的labelmejsontodataset脚本函数将前一步所得的json标注文件转换为三个文件,一个为标注的掩模图,一个为掩模图加原图的示意图,一个为标签名的集合。
步骤1.4:将训练用裂缝图片放入mask-rcnn中进行训练:将步骤1.3中生成的掩模图、标签名的集合及训练用裂缝图片放入mask-rcnn网络中进行训练,具体过程为:分别读取这三个文件,并将掩模图覆盖于训练用裂缝图片之上添加标签送入mask-rcnn网络。其中学习率设置为0.001,学习动量为0.9,前景阈值设置为0.3,利用官方coco训练集训练完毕的权重进行初始化,训练网络负责分类定位目标物的headlayer80次,接下来再训练全部网络80次,网络训练完成后将待检测的裂缝图片输入到训练好的网络中进行识别,网络会将待检测的裂缝图片中的潜在裂缝区域划分为多段并给出每一段的置信度,所述置信度表示网络认为该段区域中存在裂缝的概率,设置一个概率阈值,将置信度高于该概率阈值的区域段标记出,结果如图2所示,图2中的多组数据即为每一段的置信度。将图2中标记有置信度的区域段提取出来,提取后的裂缝图如图3所示,其即为粗提取裂缝图。
步骤2、将粗提取裂缝图经过opencv图像处理后获得裂缝在二维图片上的像素坐标,其方法为:利用python第三方库中的opencv来对粗提取裂缝图进行高斯滤波以及去噪的操作,获得一去噪的较为纯净的图片,且进一步将图片二值化以及边缘提取,得出一张仅有裂缝边缘的图片如图4所示,将裂缝提取3-15个拐点和突变点,所述拐点为裂缝拐点,所述突变点为裂缝宽度的粗细突变点,并将对应的拐点和突变点像素坐标格式化输出到txt文件以供使用。将同一裂缝不同角度的每一张图片的拐点和突变点像素坐标格式化并输出到txt。
步骤3、利用sift算法进行图像特征匹配,获得同名点坐标,过程如下:
利用sift算法匹配同一裂缝不同角度的图片,通过对每一张图片上的拐点和突变点进行匹配,当一些区域中的拐点和突变点达到预定密度时,利用空间透视变换原理求解裂缝同名点坐标(例如以其中一个角度的裂缝图片作为出发点,利用空间透视变换原理将该图片的角度变换为其它角度的裂缝图片的角度,将变换角度后的该图片与该其它角度的裂缝图片相匹配从而在其它角度的裂缝图片中找到与该图片中某一拐点或突变点对应的点,该点坐标即为其中一个同名点的坐标),所述裂缝同名点坐标即为同一裂缝位置在不同角度图片中的点的坐标(例如一个裂缝有10张不同角度的图片,那么其中一个裂缝位置在每张图片中对应的位置都有一个坐标点,共有10个,这10个坐标点即为该裂缝位置的同名点的坐标)。在得到所有裂缝同名点坐标后,将所有裂缝同名点坐标信息格式化输出到txt文件。
步骤4、构建裂缝的三维模型。
目前已经获取了裂缝同名点在不同角度图片上的坐标,利用photoscan软件获取裂缝同名点的三维空间坐标,从而可以构建出裂缝的三维模型。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。