图像分析。衡量一个弯曲的半径丝的弧长

14日视图(30天)
我需要帮助测量波形的半径丝的形象。
到目前为止,我的方法是binarize形象,填补漏洞,导致下一个图像 BW
我下一步要做的是寻找中心线和测量半径正常,中线。然而这是我失败的地方。发现我第一次尝试使用的中心线 bwskel ,但结果不令人满意。
我跟着̌图像分析师的建议的方法找到的中心线丝对他的答案很相关的问题 https://nl.mathworks.com/matlabcentral/answers/508300-how-to-find-the-centreline-of-two-curves?s_tid=mwa_osa_a 。半径变化的Howerve对我来说,所以最小距离方法不是伟大的工作。
%找到2边和标签
防波堤入口=边缘(BW);
防波堤入口= bwlabel(防波堤入口);
%获得每个边缘点
(行,坳)=找到(防波堤入口= = 1);
edge1 =(行、列);
(行,坳)=找到(防波堤入口= = 2);
edge2 =(行、列);
x1 = edge1 (: 1);
日元= edge1 (:, 2);
x2 = edge2 (: 1);
y2 = edge2 (:, 2);
%边缘上找到最接近的点1为每个边缘点2
[D, idx] = pdist2 (edge1 edge2,“欧几里得”,“最小”1);
edge1_closest = edge1 (idx:);
%绘制边缘和它们之间的最小距离原始图像
imshow(我)
持有
情节(edge1 (: 1) edge1 (:, 2),‘* b”)
情节(edge2 (: 1) edge2 (:, 2),“* r”)
c = 1:尺寸(edge1, 1)
情节([edge1_closest (c, 1); edge2 (c, 1)]、[edge1_closest (c, 2); edge2 (c, 2)),‘g’)
结束
持有
结果是
如果我闭于可以看到绿线的中心不代表中心线:(
这就是我的立场。任何消息灵通的获得一个更好的中心线或找到一种方法来测量半径的函数非常apreaciated弧长
谢谢你们所有人的帮助,
贝尔纳多

答案(1)

darova
darova 2021年9月6日
看到这个例子。红线从第一边缘/曲线法线。我使用 polyxpoly 计算法线之间的十字路口和(二)优势
BW = imread (“image.jpeg”);
BW1 = im2bw (BW 0.65);
[col1, col2] =交易(0(大小(BW1, 1), 1));
i = 1:尺寸(BW1, 1)%读取每一行的形象
col1 (i) =找到(~ BW1(我:),1,“第一”);%找到第一位黑人像素(左边缘)
col2 (i) =找到(~ BW1(我:),1,“最后一次”);%找到最后一个黑色像素(右边缘
结束
%只需要n元素和插入曲线(光滑)
x1 = col1;
日元= 1:元素个数(col1);
2 = 1:20:元素个数(col1);
x1 =花键(y1 (ii), x1 (ii), y1);%插值(把每个20元素)
x2 = col2;
y2 = 1:元素个数(col2);
2 = 1:20:元素个数(col2);
x2 =花键(y2 (ii), x2 (ii), y2);
%找到切
dx1 = diff (x1);
₁= diff (y1);
dx2 =差异(x2);
dy2 = diff (y2);
2 = 1:50:元素个数(x1);
imshow (BW1)
线(x1, y1)
线([x1 (ii);x1 (ii) +₁(ii) * 100], [y1 (ii);日元(ii) dx1 (ii) * 100),“颜色”,“r”)
线(x2, y2)

s manbetx 845


释放

R2020a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!