如何使用MATLAB找到两个斑点之间的最短路径(轮廓/闭合曲线)?

时间:2010-04-16 14:08:26

标签: algorithm matlab image-processing

bwlabel可用于获取图像中的断开连接的对象:

[L Ne] = bwlabel(image);   

如何计算两条断开的闭合曲线之间的最短路径?

是否有实用(非理论)的解决方案?

1 个答案:

答案 0 :(得分:1)

建议1

尝试提取要连接的对象的周边像素的坐标,并将它们用作图形中的节点。然后使用A* algorithm查找集合之间每对之间的最短路径。这有效地解决了使用A *的全对问题,但将其限制在感兴趣的节点(从一个对象中的节点到另一个对象的路径)。

建议2(更简单)

另一个想法(未经测试)是计算每个blob的质心之间的最短路径(regionprops可用于计算质心)并查看哪个周边像素与路径相交。当然,如果你的质心在blob内,这可能会有效,但是非凸起的blob会让事情变得混乱。这会将算法的复杂性降低到blob的数量,而不是周边像素的数量(可能很大)。

此外,如果建议2 适合您,您可以使用Floyd-Warshall来计算图像中所有斑点之间的最短路径。