在Matlab中找到行的x,y坐标(来自二进制图像)

时间:2014-06-17 12:48:47

标签: image matlab binary coordinates pixel

!我正在使用Matlab和图像处理工具箱,目的是提取图像中最长线的坐标(我需要重复使用这些坐标来传输到扫描设备)。

我设法使用bwmorph获得最长的行,并且我将该行作为二进制2d数组获得。 现在我尝试使用以下方法获取其坐标: [X,Y] =找到([Longestline]) 其中Longestline是上面提到的2d数组。![这是我获得的二进制行的图像]和1 [这是一个图像,当我叠加原始图片和图(x,y)] {{ 3}}

问题是我需要重新排序这些坐标以跟踪相邻点的直线。 有没有一个函数/方法可以直接从图像中做到这一点?

感谢,

1 个答案:

答案 0 :(得分:2)

这是一个简单的测试图像,它是否会处理更复杂的东西还有待观察,但我不明白为什么它不会。这里假设im是您的原始图片,BW是包含您想要的行的二进制图片:

1)使用bwmorph

查找您的行的端点
[xend, yend] = find(bwmorph(BW,'endpoints');

你可以采取任何一种方式,但这并不重要。

2)使用bwtraceboundaries跟踪其中一个端点的线。 ' NW'是最初的搜索方向。它在我的简单测试数据中没有太大的区别,这只是一个曲折的。

contour = bwtraceboundaries(BW, [xend(1), yend(1)],'NW');

3)叠加

imshow(im)
plot(contour(:,2),contour(:,1),'r')