1

考虑这个二进制图像:

0 1 0 0 0
0 1 0 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 1 0

我正在寻找一个具有两个坐标作为参数和一个布尔返回值的函数,它表明两个像素是否连接(通过 4 或 8 连接),如下所示:

f([1,2],[3,3]) -> 真;
f([1,2],[5,4]) -> 假;

我知道,必须有一个简单的算法,并且在 Matlab 中有一些函数可以做得更多(bwdist、bwconncomp),但我正在寻找一种更简单的方法。

谢谢您的帮助!

4

1 回答 1

1

您的替代方法是从一个像素填充填充,然后检查另一个像素,标记所有连接的组件并检查标签,或者进行 A* 寻路。如果大多数配对靠近但形状较大,A* 可能会产生最快的结果,它也是三种方法中最复杂的。

Matlab内置了labelconnected组件。它不是一个特别复杂的算法。如果您查看我的二进制图像处理库,您可以在 C 中找到所有三种方法的实现。

https://github.com/MalcolmMcLean/binaryimagelibrary

于 2017-03-30T10:45:25.657 回答