如果两个像素相连,检查二值图像的最简单方法是什么? (在 Matlab 中)
What is the easiest way on a binary image to check, if two pixels are connected? (In Matlab)
考虑这个二值图像:
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
我正在寻找一个以两个坐标作为参数和一个布尔值 return 的函数,该值表示如果两个像素相连(通过 4 或 8 连通性),如下所示:
f([1,2],[3,3]) -> 真;
f([1,2],[5,4]) -> 假;
我知道,一定有一个简单的算法,而且 Matlab 中有一些函数可以做更多的事情(bwdist、bwconncomp),但我正在寻找一种更简单的方法。
感谢您的帮助!
您的备选方案是从一个像素开始填充,然后检查另一个像素,标记所有连接的组件并检查标签,或者进行 A* 寻路。如果大多数对靠在一起但形状很大,A* 可能会产生最快的结果,它也是三种方法中最复杂的。
Matlab内置了labelconnected组件,不是特别复杂的算法。如果您查看我的二进制图像处理库,您可以找到所有这三种方法的 C 实现。
考虑这个二值图像:
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
我正在寻找一个以两个坐标作为参数和一个布尔值 return 的函数,该值表示如果两个像素相连(通过 4 或 8 连通性),如下所示:
f([1,2],[3,3]) -> 真;
f([1,2],[5,4]) -> 假;
我知道,一定有一个简单的算法,而且 Matlab 中有一些函数可以做更多的事情(bwdist、bwconncomp),但我正在寻找一种更简单的方法。
感谢您的帮助!
您的备选方案是从一个像素开始填充,然后检查另一个像素,标记所有连接的组件并检查标签,或者进行 A* 寻路。如果大多数对靠在一起但形状很大,A* 可能会产生最快的结果,它也是三种方法中最复杂的。
Matlab内置了labelconnected组件,不是特别复杂的算法。如果您查看我的二进制图像处理库,您可以找到所有这三种方法的 C 实现。