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

标签 algorithm matlab image-processing

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/

相关文章:

windows - 使用标准 io 流 :stdin and stdout in a matlab exe

algorithm - 在类位图数据中查找凸形状

c++ - 扫描图像像素

java - 生成字符串所有分区的递归方法

algorithm - 生成一个不太全局唯一的标识符

算法找到最近的 3 个点,当三角测量覆盖另一个点

matlab - 绘图叠加 MATLAB

c - 使用 C : how to read cell-structure properly 读取 .mat 文件

python - 形状检测

c++ - 在图的隐式表示中查找连通分量