bwlabel
可用于获取图像中断开连接的对象:
[L Ne] = bwlabel(image);
如何计算两条不相连的闭合曲线之间的最短路径?
是否有实用的(不是理论上的)解决方案?
最佳答案
建议1
尝试提取要连接的对象的周边像素坐标,并将它们用作图形中的节点。然后使用 A* algorithm找到你的集合之间每对之间的最短路径。这有效地解决了使用 A* 的全对问题,但将其限制在感兴趣的节点(从一个对象中的节点到另一个对象的路径)。
建议2(更简单)
另一个想法(未经测试)是计算每个 Blob 的质心之间的最短路径(regionprops 可用于计算质心)并查看路径与哪个周边像素相交。当然,如果您的质心在 Blob 内,这可能会起作用,但是对于非凸 Blob ,事情会变得一团糟。这将算法的复杂性降低到 Blob 的数量,而不是周边像素的数量(可能很大)。
此外,如果建议 2 适合您,您可以使用 Floyd-Warshall计算图像中所有 Blob 之间的最短路径。
关于algorithm - 如何使用 MATLAB 找到两个 Blob (轮廓/闭合曲线)之间的最短路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2653511/