首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从给定的值计算空间距离矩阵

如何从给定的值计算空间距离矩阵
EN

Stack Overflow用户
提问于 2018-10-09 11:30:19
回答 1查看 361关注 0票数 1

我一直在寻找一种从目标值和输入矩阵(有效地)计算距离矩阵的方法。

如果您认为输入数组为:

代码语言:javascript
复制
[0 0 1 2 5 2 1]  
[0 0 2 3 5 2 1]  
[0 1 1 2 5 4 1]  
[1 1 1 2 5 4 0]

计算与目标值0相关联的空间距离矩阵吗?

也就是说,从每个像素到最近的0值的距离是多少?

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-09 11:47:17

你在找scipy.ndimage.morphology.distance_transform_edt。它在二进制数组上工作,并计算每个TRUE位置到最近的背景FALSE位置的欧几里德距离。在我们的例子中,因为我们想找出距离最近的0的距离,所以背景是0。现在,在引擎盖下面,它将输入转换为以0作为背景的二进制数组,因此我们只需将其与默认参数一起使用。因此,它就像-

代码语言:javascript
复制
In [179]: a
Out[179]: 
array([[0, 0, 1, 2, 5, 2, 1],
       [0, 0, 2, 3, 5, 2, 1],
       [0, 1, 1, 2, 5, 4, 1],
       [1, 1, 1, 2, 5, 4, 0]])

In [180]: from scipy import ndimage

In [181]: ndimage.distance_transform_edt(a)
Out[181]: 
array([[0.  , 0.  , 1.  , 2.  , 3.  , 3.16, 3.  ],
       [0.  , 0.  , 1.  , 2.  , 2.83, 2.24, 2.  ],
       [0.  , 1.  , 1.41, 2.24, 2.24, 1.41, 1.  ],
       [1.  , 1.41, 2.24, 2.83, 2.  , 1.  , 0.  ]])

一般情况下的求解

现在,假设我们想找出距离最近的1s的距离,那就是-

代码语言:javascript
复制
In [183]: background = 1 # element from which distances are to be computed

# compare this with original array, a to verify
In [184]: ndimage.distance_transform_edt(a!=background)
Out[184]: 
array([[2.  , 1.  , 0.  , 1.  , 2.  , 1.  , 0.  ],
       [1.41, 1.  , 1.  , 1.41, 2.  , 1.  , 0.  ],
       [1.  , 0.  , 0.  , 1.  , 2.  , 1.  , 0.  ],
       [0.  , 0.  , 0.  , 1.  , 2.  , 1.41, 1.  ]])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52720016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档