matlab distance transform,python – scipy distance_transform_edt函数如何工作?

从文档字符串不清楚,但

distance_transform_edt计算从非零(即非背景)点到最近的零(即背景)点的距离.

例如:

In [42]: x

Out[42]:

array([[0, 0, 0, 0, 0, 1, 1, 1],

[0, 1, 1, 1, 0, 1, 1, 1],

[0, 1, 1, 1, 0, 1, 1, 1],

[0, 0, 1, 1, 0, 0, 0, 1]])

In [43]: np.set_printoptions(precision=3) # Easier to read the result with fewer digits.

In [44]: distance_transform_edt(x)

Out[44]:

array([[ 0. , 0. , 0. , 0. , 0. , 1. , 2. , 3. ],

[ 0. , 1. , 1. , 1. , 0. , 1. , 2. , 2.236],

[ 0. , 1. , 1.414, 1. , 0. , 1. , 1. , 1.414],

[ 0. , 0. , 1. , 1. , 0. , 0. , 0. , 1. ]])

您可以通过将distance_transform_edt()应用于np.logical_not(a)(即反转前景和背景)来获得Matlab的bwdist(a)的等价物:

In [71]: a

Out[71]:

array([[ 0., 0., 0., 0., 0.],

[ 0., 1., 0., 0., 0.],

[ 0., 0., 0., 0., 0.],

[ 0., 0., 0., 1., 0.],

[ 0., 0., 0., 0., 0.]])

In [72]: distance_transform_edt(np.logical_not(a))

Out[72]:

array([[ 1.414, 1. , 1.414, 2.236, 3.162],

[ 1. , 0. , 1. , 2. , 2.236],

[ 1.414, 1. , 1.414, 1. , 1.414],

[ 2.236, 2. , 1. , 0. , 1. ],

[ 3.162, 2.236, 1.414, 1. , 1.414]])

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值