在Matlab或Python中重新绘制图像的轮廓

2024-05-12 20:55:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个图像。我想把坐标按顺序排列,这样图像就可以重画了。图像可能很复杂。我想得到采样的角坐标来重新绘制图像的轮廓。

尝试1:corner函数

我试图在matlab中使用corner()来检测角点,但它没有给出确切的点。角落在外面。原始图像附在下面。在

asd

我的拐角检测代码是:

It=rgb2gray(I);
Itt=im2bw(It);
Itt1=corner(Itt);
imshow(Itt);
hold on
plot(Itt1(:,1), Itt2(:,2), 'r*');


问题corner如果你缩放图像,你会发现一些角点不在边界上。所以,请提出一些有效的好的工作方法。在

尝试2:bwtraceboundaries

我还尝试使用bwtraceboundaries和corners根据bwtraceboundaries输出对角点进行排序,但是没有准确地检测到角点。在

问题:您能否建议我如何检测角点,或者是否有其他方法从图像中提取采样角点,以便重新绘制轮廓?在


Tags: 方法函数图像绘制ititt轮廓matlab
1条回答
网友
1楼 · 发布于 2024-05-12 20:55:53

您可以使用^{}来实现您想要的。它以单元数组的形式返回所有已排序的边界位置:

B = bwboundaries(Itt);
imshow(Itt);
hold on
B = B{2}; % select the desired boundary (the second in this case)
plot(B(:,2), B(:,1), 'b-'); % draw a connected line

enter image description here

如果只想获取角点,可以通过检查点是否位于下一个点和上一个点的中间来手动过滤掉这些角点,如下所示:

^{pr2}$

enter image description here

相关问题 更多 >