【发布时间】:2020-10-29 19:30:55
【问题描述】:
考虑下图,存储为 numpy 数组:
a = [[0,0,0,0,0,1,1,0,0,0],
[0,0,0,0,1,1,1,1,0,0],
[0,0,0,0,0,1,1,0,0,0],
[0,0,0,0,0,0,0,0,0,0],
[0,0,0,0,0,2,0,0,0,0],
[0,0,0,0,0,2,2,0,0,0],
[0,0,0,0,0,2,0,0,0,0],
[0,0,0,0,3,3,3,0,0,0],
[4,0,0,0,0,0,0,0,0,0],
[4,4,0,0,0,0,0,0,0,0],
[4,4,4,0,0,0,0,0,0,0]]
a = np.array(a)
0 代表背景像素,1,2,3 和 4 代表属于对象的像素。您可以看到对象总是在图像中形成连续的岛屿或区域。我想知道每对物体之间的距离。作为距离测量,我希望在对象的那些像素之间具有最短的直线距离,这些像素彼此最接近。示例:Distance(2,3) = 1,因为它们正在接触。 Distance(1,2) = 2,因为只有一个背景像素将两个区域隔开,或者换句话说,物体最近的像素相隔两个像素。
谁能告诉我如何在 Python 中解决这个问题?或者给我链接一些资源?
【问题讨论】:
-
这能回答你的问题吗? Fastest pairwise distance metric in python
-
不,很遗憾没有。您发布的链接处理 1D 案例,完全是一个稍微不同的问题。
-
我认为你的问题的解决方案基本上是一样的。我会开始尝试调整其中的内容,看看你是否卡在某个地方。
-
我认为如果这些岛屿已经被“标记”了,那么下面的方法应该可以正常工作。如果不一定要标记,则 connectec 组件会更多
-
@r0f1 3 号岛和 4 号岛之间的直线是多少?我不确定在这种情况下距离定义是否清晰。请详细说明。谢谢。
标签: python arrays numpy scipy image-segmentation