scipy.ndimage.zoom

2023-05-16

最近邻:选择离它所映射到的位置最近的输入像素的灰度值为插值结果。

最临近插值

3X3 的256级灰度图,也就是高为3个象素,宽也是3个象素的图像,每个象素的取值可以是 0-255,代表该像素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色 。假如图像的象素矩阵如下图所示(这个原始图把它叫做源图,Source):

234 38 22
67 44 12
89 65 63

如果想把这副图放大为 4X4大小的图像,那么该怎么做呢?那么第一步肯定想到的是先把4X4的矩阵先画出来,然后要往这个空的矩阵里面填值了,要填的值从哪里来来呢?是从源图中来,好,先填写目标图最左上角的象素,坐标为(0,0),那么该坐标对应源图中的坐标可以由如下公式得出:
srcX=dstX* (srcWidth/dstWidth) , srcY = dstY * (srcHeight/dstHeight)

套用公式,就可以找到对应的原图的坐标了(0*(3/4),0*(3/4))=>(0*0.75,0*0.75)=>(0,0),找到了源图的对应坐标,就可以把源图中坐标为(0,0)处的234象素值填进去目标图的(0,0)这个位置了。

寻找目标图中坐标为(1,0)的象素对应源图中的坐标,套用公式:(1*0.75,0*0.75)=>(0.75,0)
那么按照四舍五入的方法就得到坐标(1,0),完整的 运算过程就是这样的:(1*0.75,0*0.75)=>(0.75,0)=>(1,0)那么就可以再填一个象素到目标矩阵中了,同样是把源图中坐标为(1,0)处的像素值38填入目标图中的坐标。

234 38 22 22
67 44 12 12
89 65 63 63
89 65 63 63

这种放大图像的方法叫做最临近插值算法,这是一种最基本、最简单的图像缩放算法,效果也是最不好的,放大后的图像有很严重的马赛克,缩小后的图像有很严重的 失真;效果不好的根源就是其简单的最临近插值方法引入了严重的图像失真,比如,当由目标图的坐标反推得到的源图的的坐标是一个浮点数的时候,采用了四舍五 入的方法,直接采用了和这个浮点数最接近的象素的值,这种方法是很不科学的,当推得坐标值为 0.75的时候,不应该就简单的取为1,既然是0.75,比1要小0.25 ,比0要大0.75 ,那么目标象素值其实应该根据这个源图中虚拟的点四周的四个真实的点来按照一定的规律计算出来的,这样才能达到更好的缩放效果。双线型内插值算法就是一种 比较好的图像缩放算法,它充分的利用了源图中虚拟点四周的四个真实存在的像素值来共同决定目标图中的一个像素值,因此缩放效果比简单的最邻近插值要好很多。

scipy.ndimage.zoom上采样与下采样

双线性插值将是order = 1,
最临近插值的是order = 0,
立方体是默认值(顺序= 3)。

Examples:

import numpy as np
import scipy.ndimage

x = np.arange(64).reshape(8,8)

print 'Original array:'
print x

print 'Resampled by a factor of 2 with nearest interpolation:'
print scipy.ndimage.zoom(x, 2, order=0)


print 'Resampled by a factor of 2 with bilinear interpolation:'
print scipy.ndimage.zoom(x, 2, order=1)


print 'Resampled by a factor of 2 with cubic interpolation:'
print scipy.ndimage.zoom(x, 2, order=3)

print 'Downsampled by a factor of 0.5 with default interpolation:'
print(scipy.ndimage.zoom(x, 0.5))

Results:

Original array:
array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 8,  9, 10, 11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20, 21, 22, 23],
       [24, 25, 26, 27, 28, 29, 30, 31],
       [32, 33, 34, 35, 36, 37, 38, 39],
       [40, 41, 42, 43, 44, 45, 46, 47],
       [48, 49, 50, 51, 52, 53, 54, 55],
       [56, 57, 58, 59, 60, 61, 62, 63]])
Resampled by a factor of 2 with nearest interpolation:
[[ 0  0  1  1  2  2  3  3  4  4  5  5  6  6  7  7]
 [ 0  0  1  1  2  2  3  3  4  4  5  5  6  6  7  7]
 [ 8  8  9  9 10 10 11 11 12 12 13 13 14 14 15 15]
 [ 8  8  9  9 10 10 11 11 12 12 13 13 14 14 15 15]
 [16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23]
 [16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23]
 [24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31]
 [24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31]
 [32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39]
 [32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39]
 [40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47]
 [40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47]
 [48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55]
 [48 48 49 49 50 50 51 51 52 52 53 53 54 54 55 55]
 [56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63]
 [56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63]]

Resampled by a factor of 2 with bilinear interpolation:
[[ 0  0  1  1  2  2  3  3  4  4  5  5  6  6  7  7]
 [ 4  4  5  5  6  6  7  7  7  8  8  9  9 10 10 11]
 [ 7  8  8  9  9 10 10 11 11 12 12 13 13 14 14 14]
 [11 12 12 13 13 14 14 14 15 15 16 16 17 17 18 18]
 [15 15 16 16 17 17 18 18 19 19 20 20 21 21 21 22]
 [19 19 20 20 21 21 21 22 22 23 23 24 24 25 25 26]
 [22 23 23 24 24 25 25 26 26 27 27 28 28 28 29 29]
 [26 27 27 28 28 28 29 29 30 30 31 31 32 32 33 33]
 [30 30 31 31 32 32 33 33 34 34 35 35 35 36 36 37]
 [34 34 35 35 35 36 36 37 37 38 38 39 39 40 40 41]
 [37 38 38 39 39 40 40 41 41 42 42 42 43 43 44 44]
 [41 42 42 42 43 43 44 44 45 45 46 46 47 47 48 48]
 [45 45 46 46 47 47 48 48 49 49 49 50 50 51 51 52]
 [49 49 49 50 50 51 51 52 52 53 53 54 54 55 55 56]
 [52 53 53 54 54 55 55 56 56 56 57 57 58 58 59 59]
 [56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63]]

Resampled by a factor of 2 with cubic interpolation:
[[ 0  0  1  1  2  2  3  3  4  4  5  5  6  6  7  7]
 [ 2  3  3  4  4  5  5  6  6  7  7  8  8  9  9  9]
 [ 7  8  8  9  9 10 10 11 11 12 12 12 13 13 14 14]
 [12 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19]
 [15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22]
 [19 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26]
 [22 23 23 24 24 25 25 26 26 27 27 27 28 28 29 29]
 [26 26 27 28 28 28 29 29 30 30 31 31 32 32 33 33]
 [30 30 31 31 32 32 33 33 34 34 35 35 35 36 37 37]
 [34 34 35 35 36 36 36 37 37 38 38 39 39 40 40 41]
 [37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 44]
 [41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48]
 [44 45 45 46 46 47 47 48 48 49 49 50 50 51 51 51]
 [49 49 50 50 51 51 51 52 52 53 53 54 54 55 55 56]
 [54 54 54 55 55 56 56 57 57 58 58 59 59 60 60 61]
 [56 56 57 57 58 58 59 59 60 60 61 61 62 62 63 63]]


Downsampled by a factor of 0.5 with default interpolation:
[[ 0  2  5  7]
 [19 21 23 26]
 [37 40 42 44]
 [56 58 61 63]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scipy.ndimage.zoom 的相关文章

  • 在 Python 中插入缺失值

    所有 我希望你能够提供帮助 因为这是我知道我几乎从这里和网上的各种帖子中破解的任务之一 但还没有完全发挥作用 本质上 我在数据库中有以下数据 通过 psql read sql sql cnxn 返回到 Pandas 对象 StartTime
  • 检查一个点是否在 ConvexHull 中?

    我无法理解如何计算 n 维点是否在 n 维凸包内 这里提出了一个非常相似的问题 相同 查找点是否位于点云的凸包中的有效方法是什么 https stackoverflow com questions 16750618 whats an eff
  • 如何使用 python 将威布尔分布拟合到数据?

    我正在寻找使用 Python 3 4 找到最适合一组数据的威布尔参数 import scipy stats as ss list1 list2 for x in range 0 10 list1 append ss exponweib pd
  • 如何用 numpy 在 Cython 中表示 inf 或 -inf ?

    我正在用 cython 逐个元素构建一个数组 我想存储常量np inf or 1 np inf 在某些条目中 然而 这将需要返回 Python 进行查找的开销inf 有没有libc math相当于这个常数 或者其他一些可以轻松使用的值 相当
  • “scipy.misc”没有属性“imsave”

    当我尝试使用 Scipy misc imsave path image 保存图像时 我收到此错误 模块 scipy misc 没有属性 我正在使用 Ubuntu 17 10 并且安装了 Pillow 和 scipy 你能帮我吗 scipy
  • 三次样条内存错误

    在具有 4GB 内存的计算机上 这种简单的插值会导致内存错误 基于 http docs scipy org doc scipy reference tutorial interpolate html http docs scipy org
  • Python 中 scipy/numpy 中的 exp 溢出?

    出现以下错误是什么意思 Warning overflow encountered in exp 在 scipy numpy 中使用 Python 一般意味着什么 我正在计算对数形式的比率 即 log a log b 然后使用 exp 取结果
  • scipy-optimize-minimize 不执行优化 - CONVERGENCE: NORM_OF_PROJECTED_GRADIENT_<=_PGTOL

    我试图最小化定义如下的函数 utility decision decision risk cost 其中变量采用以下形式 决策 二进制数组 风险 浮点数数组 成本 常数 我知道解决方案将采取以下形式 决定 1如果 风险 gt 阈值 决定 0
  • scipy.stats....rvs 和 numpy.random 随机抽取之间的区别

    看起来是否是相同的分布 从中抽取随机样本numpy random比这样做更快scipy stats rvs 我想知道是什么原因导致两者之间的速度差异 scipy stats uniform实际上使用了numpy 这里是stats中对应的函数
  • 如何用Python实现FIR高通滤波器?

    首先 我在 Stack Exchange 中问了这个问题 我只得到与概念相关的答案 而不是面向实现的答案 所以 我的问题是我正在尝试创建高通滤波器并使用 Python 实现 from numpy import cos sin pi abso
  • 解释 scipy.stats.entropy 值

    我正在尝试使用scipy stats 熵来估计库尔巴克 莱布勒 KL 两个分布之间的散度 更具体地说 我想使用 KL 作为衡量标准来确定两个分布的一致性 但是 我无法解释 KL 值 例如 t1 numpy random normal 2 5
  • 在 scipy 中创建新的发行版

    我试图根据我拥有的一些数据创建一个分布 然后从该分布中随机抽取 这是我所拥有的 from scipy import stats import numpy def getDistribution data kernel stats gauss
  • 在 HDF5 (PyTables) 中存储 numpy 稀疏矩阵

    我在使用 PyTables 存储 numpy csr matrix 时遇到问题 我收到此错误 TypeError objects of type csr matrix are not supported in this context so
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • 如何在Python的SciPy中更改稀疏矩阵中的元素?

    我构建了一个小代码 我想用它来解决涉及大型稀疏矩阵的特征值问题 它工作正常 我现在要做的就是将稀疏矩阵中的一些元素设置为零 即最顶行中的元素 对应于实现边界条件 我可以调整下面的列向量 C0 C1 和 C2 来实现这一点 不过我想知道是否有
  • 使用 scipy 的solve_bvp 求解 BVP

    我有一个由 3 个微分方程组成的系统 我相信从代码中可以明显看出 具有 3 个边界条件 我设法在 MATLAB 中用一个循环来解决这个问题 一点一点地改变最初的猜测 而不会在程序即将返回错误时终止程序 然而 关于scipy s solve
  • 如何使用 scipy.odr 估计拟合优度?

    我使用 scipy odr 将数据与权重拟合 但我不知道如何获得拟合优度或 R 平方的度量 有人对如何使用函数存储的输出来获取此度量有建议吗 The res var的属性Output http docs scipy org doc scip
  • 从 scipy Delaunay 三角剖分中删除单纯形

    我有一组点 使用 scipy spatial Delaunay 函数计算 Delaunay 三角剖分 例如以下内容 import numpy as np from scipy spatial import Delaunay tri Dela
  • pandas 时间序列的 interp1d

    我想在 pandas 时间序列中的时间之间进行插值 我想使用 scipy interpolate interp1d 或类似的 这pandas interpolate函数是不可取的 因为它需要插入nan值 然后使用插值替换它们 从而修改数据集
  • 有没有办法降低 scipy/numpy 精度以减少内存消耗?

    在我的 64 位 Debian Lenny 系统 4GByte RAM 4GByte 交换分区 上 我可以成功执行以下操作 v array 10000 random 512 512 512 dtype np int16 f fftn v 但

随机推荐

  • for update秒杀

    Mysql InnoDB 排他锁 用法 xff1a select for update 例如 xff1a select from goods where id 61 1 for update 排他锁的申请前提 xff1a 没有线程对该结果集
  • UNION 和 UNION ALL

    UNION用的比较多union all是直接连接 xff0c 取到得是所有值 xff0c 记录可能有重复 union 是取唯一值 xff0c 记录没有重复 UNION 和 UNION ALL 的语法都是 xff1a SQL 语句 1 UNI
  • php网站压测(ab)

    一般来说核心页面都需要进行压测 xff0c 特别是秒杀页面 xff0c 从而知道网站的承受能力 xff0c 方便暴露一些问题 xff0c 更好的把控网站 压测工具有很多种 xff0c 最简单 方便的可以使用ApacheBench xff0c
  • CSV文件读取 C++版本

    代码 span class token comment 创建结构体 xff0c 把读取数据可以放入结构体成员中 span span class token keyword struct span span class token class
  • 四种常见的 POST 提交数据方式

    HTTP 1 1 协议规定的 HTTP 请求方法有 OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT 这几种 其中 POST 一般用来向服务端提交数据 xff0c 本文主要讨论 POST 提交数据
  • json_decode

    json 61 34 34 errorno 34 0 34 errormsg 34 34 可以 34 34 data 34 34 guid 34 34 5762340 34 34 username 34 34 wiu370468 34 34
  • csv乱码处理

    handle 61 fopen 34 war csv 34 34 r 34 row 61 1 while data 61 fgetcsv handle 1000 34 34 data 61 eval 39 return 39 iconv 3
  • OR和AND关键字一起使用的情况

    OR和AND关键字一起使用的情况 OR关键字和AND关键字 xff0c 可以一起使用 xff0c 需要注意 xff0c AND的优先级高于OR 因此 xff0c 当两者一起使用时 xff0c 应该先运算AND两边的条件表达式 xff0c 再
  • Ubuntu cron 定时执行任务

    cron xff0c 是一个Linux定时执行工具 xff0c 可以在无需人工干预的情况下运行作业 1 关于crontab 在Ubuntu server 下 xff0c cron是被默认安装并启动的 通过 etc crontab文件 xff
  • Linux服务器上监控网络带宽的18个常用命令

    本文介绍了一些可以用来监控网络使用情况的Linux命令行工具 这些工具可以监控通过网络接口传输的数据 xff0c 并测量目前哪些数据所传输的速度 入站流量和出站流量分开来显示 一些命令可以显示单个进程所使用的带宽 这样一来 xff0c 用户
  • Linux系统使用iftop查看带宽占用情况

    Linux系统下如果服务器带宽跑满了 xff0c 查看跟哪个ip通信占用带宽比较多 xff0c 可以通过iftop命令进行查询 xff0c 使用方法如下 xff1a 1 安装方法 软件官网地址 xff1a http www ex parro
  • linux基础命令

    1 curl amp wget 使用curl或wget命令 xff0c 不用离开终端就可以下载文件 如你用curl xff0c 键入curl O后面跟一个文件路径 wget则不需要任何选项 下载的文件在当前目录 代码如下 curl O we
  • find_in_set

    1 in查询相当于多个or条件的叠加 xff0c 例如 xff1a select from user where user id in 1 2 3 等效于 select from user where user id 61 1 or use
  • 集成Cortex-M0内核-- Integration and Implementation Manual手册学习

    根据使用场景 xff0c 配置并集成一个Cortex M0的内核 xff0c 暂时不涉及的实现的部分 目录 阅读手册 Chapter1 Introduction 1 1 About the processor 1 2 About integ
  • 在NVIDIA NX 配置OpenCV多版本冲突和解决的总结

    Nvidia Jetson NX 环境 直接刷JetPack5 1的镜像 xff0c 会得到如下环境 Ubuntu20 04cuda11 4TensorRT8 4cudnn8 4opencv4 5 4 而且这些源一般是从nv xxxx等源下
  • 一款入门级的飞控CC3D(一)

    很多在校的朋友想自己动手做一款旋翼无人机 xff0c 但是零件采购下来要花费不少大洋 xff0c 装配完成后又需要进行软件硬件调试 所以很多想做极客的梦就扼杀在摇篮里 本期我将开始更新一款入门级的飞控CC3D 首先 xff0c 放上CC3D
  • 朱刘算法(Directed Minimum Spanning Tree/Directed MST/Minimum Arborescence/Optimum Branchings)

    概念 最小树形图 xff1a 有向图所分离出的有向生成树 亦称为最小树形图 xff0c 其应满足以下条件 xff1a 1 恰好有一个入度为0的点 xff0c 称为根结点 2 其他结点的入度均为1 3 可以从根结点到达其他结点 既然要找最小生
  • 仿真复现文章推荐

    以下学长推荐的文章 xff1a 人脸识别 xff1a SphereFace Deep Hypersphere Embedding for Face Recognition 手势姿态 xff1a OpenPose 3D人脸建模 xff1a L
  • 查看GPU显存 使用率

    watch n 0 2 nvidia smi 主要关注GPU Util Memory Usage 0 2表示每隔0 2秒刷新一次终端的显示结果 上面的表格中 xff1a 第一栏的Fan xff1a N A是风扇转速 xff0c 从0到100
  • scipy.ndimage.zoom

    最近邻 选择离它所映射到的位置最近的输入像素的灰度值为插值结果 最临近插值 3X3 的256级灰度图 xff0c 也就是高为3个象素 xff0c 宽也是3个象素的图像 xff0c 每个象素的取值可以是 0 xff0d 255 xff0c 代