与曼哈顿距离的距离变换 - Python / NumPy / SciPy

2024-02-13

我想使用 Python 和 Numpy 生成这样的二维数组:

[
  [0, 1, 2, 3, 4, 4, 3, 4],
  [1, 2, 3, 4, 4, 3, 2, 3],
  [2, 3, 4, 4, 3, 2, 1, 2],
  [3, 4, 4, 3, 2, 1, 0, 1],
  [4, 5, 5, 4, 3, 2, 1, 2]
]

几乎数字从零开始左右分布。该矩阵允许查看任意点到最接近的零的距离。我认为这个矩阵很常见,但我在网上找不到任何内容,甚至连它的名字也找不到。如果您有有效生成此类矩阵的代码或至少知道它是如何调用的,请告诉我。

谢谢


这是一个Scipy cdist https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.cdist.html#scipy.spatial.distance.cdist -

from scipy.spatial.distance import cdist

def bwdist_manhattan(a, seedval=1):
    seed_mask = a==seedval
    z = np.argwhere(seed_mask)
    nz = np.argwhere(~seed_mask)

    out = np.zeros(a.shape, dtype=int)
    out[tuple(nz.T)] = cdist(z, nz, 'cityblock').min(0).astype(int)
    return out

在 MATLAB 中,它被称为Distance transform of binary image https://in.mathworks.com/help/images/ref/bwdist.html,因此这里给出了一个派生名称。

样本运行 -

In [60]: a # input binary image with 1s at "seed" positions
Out[60]: 
array([[1, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 0, 0],
       [0, 0, 0, 0, 0, 0, 1, 0],
       [0, 0, 0, 0, 0, 0, 0, 0]])

In [61]: bwdist_manhattan(a)
Out[61]: 
array([[0, 1, 2, 3, 4, 4, 3, 4],
       [1, 2, 3, 4, 4, 3, 2, 3],
       [2, 3, 4, 4, 3, 2, 1, 2],
       [3, 4, 4, 3, 2, 1, 0, 1],
       [4, 5, 5, 4, 3, 2, 1, 2]])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与曼哈顿距离的距离变换 - Python / NumPy / SciPy 的相关文章

随机推荐

  • 对 PowerPC 寄存器值感到困惑)?

    所以 我一直在学习 PowerPC 来完成 Xbox 的简单逆向项目 但我总是对这样的事情感到困惑 lwz r11 0 r29 Loads 0x34 from 0x10710 and stores in r11 lwz r10 4 r29
  • android:如何使用属性集构造函数实例化我的自定义视图

    我的自定义视图具有动态自定义属性 例如背景图像属性 通过当前星期分配 我不想使用构造函数 CalendarView Context context AttributeSet attrs 来传递多个属性 并且我尝试使用 Xml asAttri
  • Tomcat 7 作为 Windows 服务无法从其他系统访问

    我已经下载了适用于 32 位 Windows 7 机器的 Tomcat 7 zip 我已经解压了该包并使用 bin service bat 创建了 Windows 服务 但是当我从 windows services msc 启动服务时 我无
  • 在远程 ssh 命令中传递变量

    我希望能够使用 ssh 从我的机器运行命令并传递环境变量 BUILD NUMBER 这就是我正在尝试的 ssh email protected cdn cgi l email protection tools myScript pl BUI
  • 为树状图中的刻度标签着色以匹配簇颜色

    如何为树状图的标签单独着色 使其与 MATLAB 中簇的颜色相匹配 这是使用下面我的答案中的代码生成的所需输出示例 请注意 标签只是 50 个字符系列 A r 如果有更直接的方法来做到这一点 请发布答案 因为我无法通过谷歌搜索找到解决方案
  • 两个节点之间的设备树依赖关系

    我有两个设备树节点 一个设置 GPIO 引脚 另一个配置一个 i2c 总线 例如 gpio2 en gpio gpio hog gpios lt 5 0 gt output high i2c1 gpiom1 gpio 27 compatib
  • SQL Server:搜索所有表中的特定 GUID

    我发现需要清理一些数据 并且我需要找到一些特定的指南 即唯一标识符 在 SQL Server 我想出了一个存储过程SELECT从当前数据库中每个表的每个 uniqueidentifier 列中查找 如果找到 guid 则返回一个结果集 它使
  • 为什么 fs.createReadStream ... pipeline(res) 锁定读取文件?

    我正在使用 Express 传输音频和视频文件根据这个答案 https stackoverflow com a 24977085 304832 相关代码如下 function streamMedia filePath req res cod
  • 是否可以使用 ASP.NET MVC 创建登录系统但不使用会员提供程序?

    我有一个包含用户表的现有数据库 我们计划使用该数据库并将其用于在 ASP NET MVC 中构建的新系统 然而 我不确定的是我是否能够创建一个不使用内置帐户控制器或常规会员资格提供程序的登录系统 以便我们仍然可以使用现有的表结构 所以我的问
  • Javascript 发光/脉动效果在点击时停止

    我有以下 Javascript 来使文本链接连续发光 脉动 此链接显示同一页面的另一个部分 因此我希望它在用户单击它后停止 所以基本
  • NSDictionary 按浮点数形式对键进行排序

    基本上我有一个带有键和值的 NSDictionary 键都是数字 但目前它们是字符串 我希望能够将它们作为数字进行比较以便对它们进行排序 例如 如果我有这样的字典 100 gt id object 20 gt id object 10 gt
  • 在 ASP.NET MVC 应用程序中使用 HandleErrorAttribute

    我对在 MVC 5 应用程序中使用 HandleErrorAttribute 的最佳方式有疑问 众所周知 我们可以将此属性添加到全局过滤器中 如下所示 filters Add new HandleErrorAttribute View Er
  • 如何使用 jQuery 动态调用 javascript 对象的属性

    大家好 我有一个带有一些属性的 javascript 对象 比如说 function Animal this id this name 我需要以动态方式调用 id 函数来获取和设置它的值 像这样 Animal animal new Anim
  • 手工SHA-256,计算SHA-256初始单词

    我正在阅读出版物FIPS 180 4 https csrc nist gov csrc media publications fips 180 4 final documents fips180 4 draft aug2014 pdf并尝试
  • C# Databound ComboBox 自动更新

    我有一个绑定到数据库表的组合框 当用户将新数据插入表中时 我希望组合框自动更新以显示该数据 但是我不确定如何执行此操作 帮助将不胜感激 我的一个程序中有类似的东西 每当我的 datagridview 更新时 我都会清空组合框并重新填充它 大
  • 如何在另一个查询的 while 循环内运行 SQL 查询

    当 photoId 直接位于语句上而不是变量时 以下操作完全没有问题 img query mysqli query con SELECT FROM imgs WHERE photoid 103 or die mysqli error con
  • 模拟器打开时读取私人有效用户设置警告

    当我点击 textField 在 Xcode 中打开模拟器键盘时 会出现以下错误 2017 01 01 17 19 38 668544 FirebaseChat 12334 2921090 MC System group container
  • 信号处理程序返回到哪里?

    假设当接收并处理信号时 进程正在 main 方法中运行 当信号处理程序完成时 进程是否返回到 main 中接收信号的行 或者返回到信号调用 附 我知道我自己可以快速测试这一点 但当我无法访问我的电脑时 我就想到了这个想法 Thanks 当信
  • 在 Windows 7 上安装 Apache Solr 4.1 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我怎么能够安装apache solr
  • 与曼哈顿距离的距离变换 - Python / NumPy / SciPy

    我想使用 Python 和 Numpy 生成这样的二维数组 0 1 2 3 4 4 3 4 1 2 3 4 4 3 2 3 2 3 4 4 3 2 1 2 3 4 4 3 2 1 0 1 4 5 5 4 3 2 1 2 几乎数字从零开始左右