答案 0 :(得分:0)
如果您的最终二进制图像中只有裂缝,您可以尝试一些技巧来近似计算面积,这是非常简单的技术,但可能适用于您的问题。
1)找出所有白色像素的x和y索引(在MATLAB find()命令中会这样做),然后找出x和y坐标的平均值,即图像中所有白色像素的质心,现在你可以找到所有白色像素距质心的距离 为:
d = sqrt((x-xc).^2+(y-yc).^2)
将给出一个与白色质心相对应的所有白色的距离数组,找出最大距离并选择该距离作为假想圆的半径。现在只需找出这个圈子的区域。
2)如果您将结构作为不同的blob,请提取每个blob的边界框并计算每个边界框的区域并添加所有区域。
3)另一种方法是计算斑点的椭圆面积。您可以从主轴和次轴获得,添加所有椭圆的区域。
4)还有一些复杂的技术可以解决这个问题,例如Convex Hull。你可以从regionprops
找到凸包,这将为你提供每个blob的凸包区域。
答案 1 :(得分:0)
我不是100%清楚你如何定义'受裂缝影响的区域',但根据你的草图,它可能是裂缝图像的凸包。所以,从边缘的二进制图像开始:
[X,Y] = find(edges);
[~,area] = convhull(X,Y)
当然,除非图像顶部附近的那些直线也被视为裂缝,否则它们首先需要以某种方式从edges
移除。