这是二值图像
这是染色后的图像
我想知道如何测量它的长宽,另外下部有一块阴影,有没有什么好的办法处理呢
按照楼主说明,需要的应该是测量出每一条裂缝的宽和高。具体操作如下:
1,利用连通域操作,获取二值图中的连通域个数,以及各个连通域点集;
2,针对各个连通域进行统计,统计每个连通域点集的x、y坐标,计算宽度与高度,这里又分为两种做法:
a)利用点集中所有点的x、y坐标,直接计算出最大的x坐标差和y坐标差,即可作为裂缝的最大宽度和最大高度;
b)统计各点集的所有点在x和y方向投影,计算x、y方向直方图,根据直方图分布,计算图像的统计宽度和高度。
各种图像处理工具中都有对应的连通域操作方法,像opencv和matlab,在网上搜索一下就能知道,根据楼主使用的工具自行调整,如果精通图像处理,也可以直接编写算法
对于单幅图像,计算出来的值只能是像素距离,除非得到一些相机相关的参数。那么如何你算这个像素距离呢?
对于线状裂缝来说,单纯两点的计算距离是不准确的,你可以考虑下面的思路,首先将裂缝进行图像细化(骨架提取),得到裂缝骨架的形状,然后在骨架上选取
若干个点,每一个计算一个宽度,最后求取平均值。
关键的地方在于,怎么知道一采样点的处宽度?
用垂线法,选择骨架上左右两点,拟合出一条二次抛物线,这个抛物线的法线,就是你的线状裂缝要计算宽度的那个方向,在这个方向上,去计算轮廓左右两边
的交点,然后求取距离,这个距离要更精准一些。
不考虑摄像头本身的枕形误差(也就是假设每个横截面的x y都等距),那么就是集合问题。不知道你怎么定义的长宽,是平均值还是最大值,总之这就是一个像素计算的问题。
就这个图来说,你用了二值化之后的图像做了膨胀腐蚀,那么提取出来的轮廓都是很大一块的,你把轮廓面积小于一个阈值的去掉,那么就剩下两个轮廓,计算
这两个轮廓外包框(带旋转)然后就得到外包框的宽高,最后是用标定板标定平面得到一个像素相当于多少个mm,一乘就得到裂缝宽高了,由于这个图像有
两条裂缝,所以这个图要设置一个ROI,范围是只包含上边裂缝,不包含右边的
你好呀,2021年的我来请教了