scipy.ndimage.zoom 结果取决于图像大小

2024-06-22

我注意到 scipy.ndimage.zoom 的结果取决于原始图像的大小。在以下代码示例中,生成棋盘图像,然后使用 ndimage.zoom 进行缩放。如果一个棋盘图块只有 2x2 像素,则缩放系数似乎太大,并且生成的图像会被裁剪。相反,如果图块的尺寸为 10x10,则结果看起来不错。

from __future__ import division

import numpy as np
from scipy import ndimage, misc
import wx

y,x = 2,2   # change tile size here
imgdata = np.zeros((y,x),dtype='uint8')
imgdata[y/2:,x/2:] = 255
imgdata[:y/2,:x/2] = 255
imgdata = np.tile(imgdata,(4,4))
imgdata = np.array((imgdata,imgdata,imgdata))
d,y,x = imgdata.shape

zoom = 200.0/y

w, h = int(x*zoom), int(y*zoom)

app = wx.App(None)

zoomed = np.ascontiguousarray(ndimage.interpolation.zoom(imgdata,[1,zoom, zoom],order=0).transpose((1,2,0)), dtype='uint8')
image = wx.ImageFromBuffer(w, h, zoomed)
image.SaveFile('zoomed.png',wx.BITMAP_TYPE_PNG)

02x02 tile: 2x2 tile

10x10 tile: 10x10 tile

据了解,我一直在使用 scipy.misc.imresize,它没有显示此行为,但我想避免对 PIL 的额外依赖。

我做错了什么还是这是变焦中的错误?


自从您发布问题以来已经有一段时间了...如果您仍然感兴趣,我遇到了类似的问题并使用了以下内容:

import skimage
data_new = skimage.transform.resize(data_old, [new_shape_x, new_shape_z], order = 0)

确保设置 order = 0,因为默认值为 order = 1,这将导致值之间进行一阶样条插值(这会导致图块在其边界处模糊)。

无论如何,我不知道这是否是一个好方法,但它对我有用。我无法回答这是否是一个错误,因为我真的对编程了解不够,无法回答这个问题。此外,我还尝试使用 scipy.ndimage.interpolation.zoom 函数,但是图块的边界不在应有的位置,就像您的情况一样。因此我使用了skimage。

如果您对上下文感兴趣:我研究断裂力学,需要创建平滑变化的随机强度分布。因此,我创建了一个结合了正弦函数和余弦函数的曲面,该曲面在 x 和 z 方向上具有一定数量的周期。然后我取该表面的绝对值并将其与不规则的棋盘状表面相乘。棋盘状表面上每个方向上的瓷砖数量必须与相应强度变化表面上的周期数/2 相匹配。最终表面计算如下(分段加法和乘法):

strength_surface[i,j] = strength_mean[i,j] + random_grid[i,j] * strength_variation[i,j]

其中 random_grid 必须调整大小以匹配其他表面的形状。

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

scipy.ndimage.zoom 结果取决于图像大小 的相关文章

随机推荐

  • DOT/graphviz 边缘标签中的下标

    如何使用 Graphviz DOT 的 HTML 功能向边缘标签添加下标字符 像这样 digraph g 1 gt 2 label
  • “iOS 17.0.simruntime”无法打开,因为无法验证开发者

    我刚刚下载了 iOS 17 运行时 但将其复制到目标位置后 会打开此弹出窗口 并且 Xcode 无法按预期使用模拟器 Downloaded from the Apple Developer site 我怎样才能解决这个问题 可以打电话sim
  • 生成唯一的机器 ID

    我需要编写一个函数来生成一个对于运行 Windows 操作系统的给定机器来说唯一的 id 目前 我正在使用 WMI 查询各种硬件参数 并将它们连接在一起并对它们进行哈希处理以得出唯一的 id 我的问题是 我应该使用哪些建议参数 目前 我使用
  • 如何保存Chrome的Coverage工具分析的结果?

    乍一看 它看起来像是非常有用的工具 但是我找不到任何类似的操作Save或类似的选项 有谁知道是否可以保存Chrome的Coverage工具分析的结果 谢谢 正如上面的评论中提到的 以及标记重复 https stackoverflow com
  • 具有不同时间步长的卡尔曼滤波器

    我有一些数据代表从两个不同传感器测量的物体的位置 所以 我需要进行传感器融合 更困难的问题是来自每个传感器的数据基本上是在随机时间到达的 我想使用 pykalman 来融合和平滑数据 pykalman如何处理可变时间戳数据 数据的简化示例如
  • 如何仅列出 Bash 目录中的文件而不列出目录?

    如何列出一个文件夹的所有文件 但不列出其文件夹或子文件 换句话说 我怎样才能只列出文件 Using find find maxdepth 1 type f 使用 maxdepth 1选项确保您只在当前目录中查找 或者 如果您替换 与某个路径
  • 如何限制 celery 中运行的任务数量

    我有一个在 Heroku 上运行的应用程序 我使用 celery 和工作测功机来处理后台工作 我正在运行使用大量内存的任务 这些任务大致在同一时间启动 但我只想同时运行一两个任务 其他任务必须在队列中等待 我怎样才能做到这一点 如果它们同时
  • 有没有可能通过 Android Studio 在 Android 的 Windows 子系统上运行 Android 应用程序?

    如果我们能够在 Android 的 Windows 子系统上调试 Android 应用程序 那就太好了 当然这是可能的 它的工作原理与任何外部设备类似 首先在 Windows 子系统中启用 Android 设置应用程序的开发人员模式 And
  • rand()/srand()函数是如何在C中实现的[重复]

    这个问题在这里已经有答案了 可能的重复 rand 是如何工作的 它有一定的倾向吗 有没有更好用的东西 https stackoverflow com questions 3539398 how does rand work does it
  • 凸包中最大的三角形

    这个问题已经得到解答 但我面临的主要问题是理解答案之一 From https stackoverflow com a 1621913 2673063 https stackoverflow com a 1621913 2673063 下面的
  • Redux Reselect 记忆是如何工作的?

    我正在尝试整合reselect进入我当前的应用程序 一如既往 首先我开始阅读文档 然后如果需要 再阅读另一个资源 我无法理解文档的一个特殊部分 也找不到可以更清晰地解释的资源 现在我来这里是为了得到一些明确的解释 所以它在文档中说 impo
  • .NET Core 3.1 的 Azure DevOps 代码覆盖率

    我正在为 ASP NET Core 3 1 应用程序设置 Azure DevOps 管道 并且我有以下 YAML 定义测试段 用于构建 测试和代码覆盖率 task DotNetCoreCLI 2 displayName dotnet glo
  • Java SMPP 库比较

    我们即将开始一个需要使用 SMPP 作为主要集成交换渠道的项目 现在 由于 SMS 不一定是我们业务的核心 因此我想使用 Java 的 SMPP 库 这样麻烦最少 除了遵循实际的协议之外 我们不太可能需要更高级的功能或在幕后进行调整 为此
  • 从外部库中排除单元测试

    我在 Android 项目中新将 spongyCastle 替换为 bouncyCastle implementation org bouncycastle bcpkix jdk15on project bouncyCastleVersio
  • 预留实例和预热请求不起作用

    我从来没能让它正常工作 这太令人不安了 我已经配置了预热请求 但我从未看到它们通过 所以大约 10 的请求会导致新实例启动 并且请求需要 30 秒或更差 由于持续的减速 有时这些旋转需要比平常更长的时间并超时 这真是太糟糕了 这是一个 Sp
  • 如何使用 magento api 创建可配置产品?

    如何使用 Magento api 创建可配置产品 您关于使用 API 创建可配置产品的问题 答案是 您不能 它不支持它 至少目前还不支持
  • 在 sbt 中定义自定义测试配置

    我需要在 sbt 中定义一个运行测试的自定义测试配置 但需要一些额外的设置 我一直在环顾四周 试图弄清楚如何做到这一点 但我似乎无法做到这一点 我想做的是这样的 gt test这将运行正常的测试任务并且 gt pipelinetest这与测
  • 使用 VBA 和 Selenium 驱动网站,pt2

    In 这个问题 https stackoverflow com questions 43808508 driving a website using vba and selenium在推动我的 VBA Selenium 项目前进方面 我收到
  • JetBrains/IntelliJ IDEA 中的流程

    看起来像 JetBrainssupports https www jetbrains com help webstorm 2016 1 using the flow type checker html 流量类型检查器 http flowty
  • scipy.ndimage.zoom 结果取决于图像大小

    我注意到 scipy ndimage zoom 的结果取决于原始图像的大小 在以下代码示例中 生成棋盘图像 然后使用 ndimage zoom 进行缩放 如果一个棋盘图块只有 2x2 像素 则缩放系数似乎太大 并且生成的图像会被裁剪 相反