法律状态公告日
法律状态信息
法律状态
2020-08-18
授权
授权
2020-02-04
实质审查的生效 IPC(主分类):G06T7/00 申请日:20191010
实质审查的生效
2020-01-07
公开
公开
技术领域
本发明涉及建筑施工质量领域,具体涉及一种基于图像处理的建筑裂缝宽度测量算法及方法。
背景技术
我国是一个建筑大国,建筑保有量巨大,其中不乏带裂缝工作的建筑。裂缝对建筑物的安全性、耐久性有着至关重要的影响。建筑裂缝主要存在于混凝土上,混凝土裂缝可分为微观裂缝及宏观裂缝,微观裂缝对结构本身基本无影响,大多数混凝土都是带微小裂缝工作的。混凝土宏观裂缝即混凝土裂缝,其宽度若超出规范对裂缝控制的计算范围,则可被视为有害裂缝,会给结构物带来安全隐患,可能导致安全事故的发生,故裂缝检测一直受到国内学者的广泛关注。
目前混凝土裂缝宽度检测主要采用以下几种方法:第一,塞尺或裂缝宽度比对卡测量;第二,使用裂缝显微镜并配光源进行测量;第三,使用裂缝宽度测试仪,将裂缝图像显示在显示屏上并采用人工读取宽度的方法测量。
现有裂缝宽度检测方法,其缺点主要表现在:其一,相关仪器费用高昂,不经济,同时仪器装置操作复杂,需要专业人员进行操作;其二,上述检测方法均需要人工操作,人工观测混凝土结构裂缝有一定主观性,包括仪器精度问题,造成裂缝检测数据准确性不高;其三,上述方法不能对混凝土结构裂缝随时间变化进行系统检测。
因此,如何减小人力资源投入,增加裂缝检测精度,并对裂缝开展变化进行长期监测是一个亟待解决的重要问题。
发明内容
本发明要解决的技术问题是提供一种基于图像处理的建筑裂缝宽度测量算法及方法,利用图像处理技术,结合算法对裂缝宽度进行测量,大大提高了测量精度。
为了解决上述技术问题,本发明提供了一种基于图像处理的建筑裂缝宽度测量算法及方法,包括以下步骤:
步骤1)在待测量的裂缝旁的墙体表面安装尺寸固定的色块作为标尺;
步骤2)采集图像数据:拍摄时保证光线充足,使用相机将色块与待测裂缝拍摄入同一画面,并储存;
步骤3)处理图像:使用python语言对前级得到的图像进行处理,得到方形色块宽度对应像素个数,及裂缝最大宽度处的宽度像素个数;
步骤4)计算结果:根据色块已知的实际尺寸、色块在图像中宽度所占的像素个数以及裂缝宽度像素个数,换算得到裂缝最大宽度实际数值。
进一步的,所述色块的颜色为黑色,所述色块的形状为方形。
进一步的,所述色块与混凝土表面保持水平。
进一步的,处理图像和计算的具体步骤如下:
(1)将相机拍摄得到的图像用python-OpenCV进行处理,依次对三通道rgb图像进行灰度化、二值化得到双通道的二值图像,此时二值图像中的裂缝、色块为黑色,背景为白色;
使用opencv中轮廓提取函数找出色块轮廓角点坐标,可以得到色块边长像素个数a,色块的边长通过测量得到并记录为A;
(2)将二值图进行黑白反转得到新二值图,使用matplotlib方法中的skeletonize骨架提取函数对新二值图进行处理,得到裂缝骨架即裂缝中轴线图像,骨架为白色,背景为黑色;在新二值图中:像素为黑色,则像素值为0,像素为白色,则像素值为1;
(3)对裂缝中轴线图像使用python语言进行处理,找出颜色为白色的像素点坐标,并存入python列表中gujia_list=[(x1,y1),(x2,y2),(x3,y3),……,(xn,yn)],得到骨架列表;
(4)用python语言创建一个尺寸与二值图像大小一致的黑色画布,此画布中每个像素的像素值均为0;
(5)从骨架列表中随机抽取一骨架坐标(xi,yi);
(6)以抽取的坐标(xi,yi)为圆心在黑色画布中绘制白色实心圆,初始直径D1=1;
(7)将二值图像以及绘制有白色实心圆的黑色画布的图像转换为图像矩阵,白色为1,黑色为0,并将两矩阵对应元素加和;
加和结果:白色与白色加和仍为白色(1+1=2),将和矩阵中为2的元素改为1;
白色与黑色加和为白色(1+0=1);黑色与黑色加和仍为黑色(0+0=0);
得到加和矩阵,得到的加和矩阵中元素只有0和1;
(8)将得到的加和矩阵与二值图像的图像矩阵相减,得到差矩阵;
若差矩阵中的元素全为0,则说明黑色画布中绘制的白色实心圆未接触到裂缝边缘,将直径膨胀1,返回(7),重复上述步骤;
若第n+1次膨胀后差矩阵中元素首次出现1,则说明(7)中绘制的直径为Dn+1=n+1的白色实心圆超出裂缝边缘,则结束膨胀,最终膨胀圆直径取Dn=n,将膨胀圆的圆心坐标及直径(xi,yi,Dn)记录;
(9)将膨胀过的坐标(xi,yi)从裂缝骨架列表guajia_list中删除,即从骨架列表中删除该坐标处膨胀圆范围以内的骨架坐标点,返回(7),当裂缝骨架坐标列表gujia_list中无像素点坐标时结束循环;
(10)将每次循环得到的膨胀圆直径进行比较,可以得出最大的膨胀圆直径Dmax,Dmax则为所拍摄图像中裂缝最宽处的宽度像素值;
(11)根据比例可以得到裂缝最大宽度实际值Wmax,其中Wmax
进一步的,图像处理所用到的编程环境为python,调用到的函数库有OpenCV、numpy、PIL、matplotlib。
进一步的,步骤2)中通过灯光实现光线充足。
本发明的有益效果:
通过图像处理以解决现有裂缝检测技术人工参与过多、主观性大、误差大等问题,通过固定标尺、拍摄图片,使用图像处理的方法测量出裂缝最大宽度,可以有效避免人工读数的误差,且能够较准确找出裂缝最大宽度的位置。
附图说明
图1是本发明将图像进行二值化处理后二值图像;
图2是本发明将二值图进行黑白反转后得到的新二值图;
图3是本发明的裂缝中轴线图像;
图4是本发明直径小于裂缝宽度的膨胀圆绘制在黑色画布效果图;
图5是本发明直径大于裂缝宽度的膨胀圆绘制在黑色画布效果图;
图6是本发明直径大于裂缝宽度的膨胀圆在矩阵加和之后的结果;
图7是本发明在图6情况下图像矩阵相减之后的结果视图;
图8是本发明直径大于裂缝宽度的膨胀圆情况下图像矩阵相减之后的结果视图;
图9是本发明的膨胀圆循环流程示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明,以使本领域的技术人员可以更好地理解本发明并能予以实施,但所举实施例不作为对本发明的限定。
本发明的基于图像处理的建筑裂缝宽度测量算法及方法的一实施例,包括以下步骤:
先在待测量的裂缝旁的墙体表面安装尺寸固定的色块作为标尺,色块的颜色优选为黑色,便于后期处理,并且色块的形状为方形、色块与混凝土表面保持水平,保证边长在后续图像中与实际一致,也便于计算;上述的墙体应该广义的理解,可以是外墙、可以是内墙、也可以是楼板等建筑表面。
然后采集图像数据:拍摄时保证光线充足,使用相机将色块与待测裂缝拍摄入同一画面,并储存;
接着处理图像,处理后即可得到结果;
上述过程中,只需要一个人,粘贴安装色块,然后再充足光线的情况下拍照即可,拍照后的处理均通过软件,因此参与的技术人员不会过多,并且不依靠个人经验判断舍取,能够较准确找出裂缝最大宽度的位置,结果准确性也大大提高。
在处理图像时使用python语言对前级得到的图像进行处理,得到方形色块宽度对应像素个数,及裂缝最大宽度处的宽度像素个数,流程可参照图9所示;
具体的,将相机拍摄得到的图像用python-OpenCV进行处理,依次对三通道rgb图像进行灰度化、二值化得到双通道的二值图像,此时二值图像中的裂缝、色块为黑色,背景为白色,参照图1所示;
使用opencv中轮廓提取函数找出色块轮廓角点坐标,可以得到色块边长像素个数a,色块的边长通过测量得到并记录为A;
将二值图进行黑白反转得到新二值图,参照图2所示,使用matplotlib方法中的skeletonize骨架提取函数对新二值图进行处理,得到裂缝骨架即裂缝中轴线图像,参照图3所示,骨架为白色,背景为黑色;在新二值图中:像素为黑色,则像素值为0,像素为白色,则像素值为1;
对裂缝中轴线图像使用python语言进行处理,找出颜色为白色的像素点坐标,并存入python列表中gujia_list=[(x1,y1),(x2,y2),(x3,y3),……,(xn,yn)],得到骨架列表;
用python语言创建一个尺寸与二值图像大小一致的黑色画布,此画布中每个像素的像素值均为0;
从骨架列表中随机抽取一骨架坐标(xi,yi);
以抽取的坐标(xi,yi)为圆心在黑色画布中绘制白色实心圆,初始直径D1=1;参照图4和图5所示,图4为初始直径示意图,图5为膨胀后的示意图;
将二值图像以及绘制有白色实心圆的黑色画布的图像转换为图像矩阵,白色为1,黑色为0,并将两矩阵对应元素加和;
加和结果:白色与白色加和仍为白色(1+1=2),将和矩阵中为2的元素改为1;
白色与黑色加和为白色(1+0=1);黑色与黑色加和仍为黑色(0+0=0);
得到加和矩阵,得到的加和矩阵中元素只有0和1;
将得到的加和矩阵与二值图像的图像矩阵相减,得到差矩阵;
若差矩阵中的元素全为0,则说明黑色画布中绘制的白色实心圆未接触到裂缝边缘,相减后为图8所示,将直径膨胀1,返回(7),重复上述步骤;
若第n+1次膨胀后差矩阵中元素首次出现1,则说明(7)中绘制的直径为Dn+1=n+1的白色实心圆超出裂缝边缘,参照图6所示,则结束膨胀,相减后为图7所示,最终膨胀圆直径取Dn=n,将膨胀圆的圆心坐标及直径(xi,yi,Dn)记录;
将膨胀过的坐标(xi,yi)从裂缝骨架列表guajia_list中删除,即从骨架列表中删除该坐标处膨胀圆范围以内的骨架坐标点,返回(7),当裂缝骨架坐标列表gujia_list中无像素点坐标时结束循环;
将每次循环得到的膨胀圆直径进行比较,可以得出最大的膨胀圆直径Dmax,Dmax则为所拍摄图像中裂缝最宽处的宽度像素值;
根据比例可以得到裂缝最大宽度实际值Wmax,其中Wmax
即根据色块已知的实际尺寸、色块在图像中宽度所占的像素个数以及裂缝宽度像素个数,换算得到裂缝最大宽度实际数值。
具体的,上述的图像处理所用到的编程环境为python,调用到的函数库有OpenCV、numpy、PIL、matplotlib。
以上所述实施例仅是为充分说明本发明而所举的较佳的实施例,本发明的保护范围不限于此。本技术领域的技术人员在本发明基础上所作的等同替代或变换,均在本发明的保护范围之内。本发明的保护范围以权利要求书为准。
机译: “财产识别方法”(“ PIM”)是一种新颖的算法,通过该算法,可以通过对文件(如市议会/房屋价格通知)进行图像处理来创建房地产管理局和/或产权转让数据。本发明建立了一种独特的算法,该算法结合了诸如深度学习分段和计算机视觉之类的技术来解码属性信息。该应用程序利用以某种方式配置的计算机实现的技术,以使运输商和房地产经纪人能够自动创建客户端文件。
机译: 一种用于测量拉应力分布的方法,其宽度小于带状能原阱的宽度以及相关的测量装置
机译: 用于操作机动车辆的照相机的方法,包括通过照相机的图像传感器检测机动车辆周围区域的图像,其中由图像处理单元基于图像执行图像处理算法。