图像处理之-----插值算法

2023-11-17

插值算法是图像处理中最基本的算法,首先我们先了解一下什么是插值算法,以及插值算法在图像处理过程中的应用。

1、什么是插值

Interpolation is a method of constructing new data points within the range of a discrete set of known data points. Image interpolation refers to the “guess” of intensity values at missing locations.

在日常对图像进行操作的过程中会涉及到图像的放大与缩小,这一系列的操作都是通过插值法来实现的;opencv中resize()函数的实现原理0就是通过插值算法,如果不对应用某种算法进行设置,则默认采用双线性插值算法。
简单来说,插值指利用已知的点来“猜”未知的点,图像领域插值常用在修改图像尺寸的过程,由旧的图像矩阵中的点计算新图像矩阵中的点并插入,不同的计算过程就是不同的插值算法。
在这里插入图片描述

2、常用的插值算法

最近邻法(Nearest Interpolation):计算速度最快,但是效果最差。
双线性插值(Bilinear Interpolation):双线性插值是用原图像中4(22)个点计算新图像中1个点,效果略逊于双三次插值,速度比双三次插值快,属于一种平衡美,在很多框架中属于默认算法。
双三次插值(Bicubic interpolation):双三次插值是用原图像中16(4
4)个点计算新图像中1个点,效果比较好,但是计算代价过大。

3、最近邻插值(Nearest Interpolation)

“近邻”,顾名思义就是从原图像矩阵中找到与它(目标图像的像素点)距离最近的点,然后将最近点的像素值,赋给它就行了。
那么如何找最近点?
假设目标图像与原图像的坐标点的对应关系如下:
在这里插入图片描述
其中
[src_x] : 原图像中像素点 [x] 坐标
[src_y] : 原图像中像素点 [y] 坐标
[des_x] : 目标图像中像素点 [x] 坐标
[des_y] : 目标图像中像素点 [y] 坐标
[src_w] : 原图像宽度(width)
[src_w] : 原图像高度(high)
[des_w] : 目标图像宽度(width)
[des_w] : 目标图像高度(high)
在这里插入图片描述
下面简述一下如何计算:
目标像素坐标 → 原图像像素坐标
注:如果坐标为小数,四舍五入即可。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上面已计算出目标图像的第一行像素点坐标对应于原图像的坐标. 其余的坐标对应关系也可上述方法依次计算.
最近邻插值缺点:最邻近算法计算量较小,但可能会造成插值生成的灰度上的不连续,在灰度变化的位置处,可能会产生明显的锯齿现象.

4、双线性插值

双线性插值的对应公式和前面的最近邻法一样,不一样的是根据对应关系不再是找最近的1个点,而是找最近的4个点,如下图所示
在这里插入图片描述
这里可能还会有点小疑问,如果根据对应关系找到原图中的点不是在不同的点之间,而是跟原图像中的点重合,那该如何找4个点?关于这个问题要看一下双线性插值的计算公式,双线性插值实际上是从2个方向一共进行了3次单线性插值,咱们先了解单线性插值的计算方式。

4.1 单线性插值

已知中P1点和P2点,坐标分别为(x1, y1)、(x2, y2),要计算 [x1, x2] 区间内某一位置 x 在直线上的y值
在这里插入图片描述
根据初中的知识,2点求一条直线公式(这是双线性插值所需要的唯一的基础公式)
在这里插入图片描述
整理后:
在这里插入图片描述
这里没有写成经典的AX+B的形式,因为这种形式从权重的角度更好理解。

首先看分子,分子可以看成x与x1和x2的距离作为权重,这也是很好理解的,P点与P1、P2点符合线性变化关系,所以P离P1近就更接近P1,反之则更接近P2。

现在再把公式中的分式看成一个整体,原式可以理解成y1与y2是加权系数,如何理解这个加权,要返回来思考一下,咱们先要明确一下根本的目的:咱们现在不是在求一个公式,而是在图像中根据2个点的像素值求未知点的像素值。这样一个公式是不满足咱们写代码的要求的。
现在根据实际的目的理解,就很好理解这个加权了,y1与y2分别代表原图像中的像素值,上面的公式可以写成如下形式:

在这里插入图片描述

4.2 双线性插值

已知Q11(x1,y1)、Q12(x1,y2)、Q21(x2,y1)、Q22(x2,y2),求其中点P(x,y)的值。
在这里插入图片描述
前面介绍过双线性插值是分别在两个方向计算了共3次单线性插值,如图所示,先在x方向求2次单线性插值,获得R1(x, y1)、R2(x, y2)两个临时点,再在y方向计算1次单线性插值得出P(x, y)(实际上调换2次轴的方向先y后x也是一样的结果)。
1.x方向单线性插值 直接带入前一步单线性插值最后的公式
在这里插入图片描述
2. y方向单线性插值
在这里插入图片描述
将第一步结果带入第二步
在这里插入图片描述
回顾一下上面双线性插值对应关系的图,不难发现,在计算中有这样的关系:
在这里插入图片描述
那么上面的公式中的分母全都为0,如下:
在这里插入图片描述
在有些资料中,会写成权重的形式,上面的展开式是下面的权重表达式的正确求法
在这里插入图片描述
f(x,y)代表目标图像上坐标为(x,y)的值。

参考博客链接:
https://zhuanlan.zhihu.com/p/110754637
https://zhuanlan.zhihu.com/p/266951945

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

图像处理之-----插值算法 的相关文章

  • Python必备基本技能——命令行参数args详解

    Python必备基本技能 命令行参数args详解 1 效果图 2 源码 2 1 简单命令行参数 2 1 轮廓检测源代码 参考 这篇博客将介绍一项开发人员 工程师和计算机科学家必备的技能 命令行参数 原理及使用 依赖 pip install
  • gstreamer中tee如何实现动态增减支路(预览+截图+录像)

    系列文章目录 Gstreamer中获取帧数据的方式 gstreamer中如何使用probe 探针 获取帧数据 gstreamer拉流rtsp使用appsink获取帧数据 预览 截图 gstreamer中如何使用fakesink获取帧数据 预
  • Qt创建一个自定义按钮

    1 概述 案例 编写一个自定义按钮 要求 1 给按钮添加自定义背景 2 监听按钮点击事件 2 代码案例 1 创建一个类让其继承QWidget 点击下一步下一步最后完成 2 打开MyPushButton 让其继承QPushButton 如下所
  • Image Processing图像处理(对比俩张图像的差异并且在图上标注出来)

    图像处理是构建所有计算机视觉的基础 按照我的图像处理指南使用OpenCV库学习计算机视觉的基础知识 SSIM进阶 利用python openCV将图片的差异性画框展示出来 诀窍是学习如何准确地确定在 x y 坐标位置上 图像的差异在哪里 使
  • 通过matlab实现数字图像处理中的抠图换背景功能

    适合背景为蓝色的图片 效果最好 如果背景色为别的颜色 可对代码进行调整修改后使用 其实这里的代码最开始由于报错已经经过我的修改了 可能出现的异常情况 1 待抠图片以及需要替换的背景图片放置在代码文件所在的目录 不然会无法读取 不出结果 2
  • Matlab导入Excel数据快速绘图

    现在使用Matalb绘图越来越多 不会这个绘图技能感觉都要被时代抛弃了 所以 本文主要是介绍怎么用Matlab导入Excel数据快速绘图 目录 一 基本使用 二 细致调节 1 颜色选项 2 形状选项 3 网格线选项 一 基本使用 事先 建议
  • 保姆级使用PyTorch训练与评估自己的ConvNeXt网络教程

    文章目录 前言 0 环境搭建 快速开始 1 数据集制作 1 1 标签文件制作 1 2 数据集划分 1 3 数据集信息文件制作 2 修改参数文件 3 训练 4 评估 5 其他教程 前言 项目地址 https github com Fafa D
  • 深度特征融合---高低层(多尺度)特征融合

    目录 概述 基本概念 典型方法概述 相关工作 多尺度模型设计 Deep Feature Fusion for VHR 高分辨率图像 Remote Sensing Scene Classification DCA特征融合方法 基于神经网络的目
  • 【Matlab图片剪裁】

    标题Matlab剪裁图片 提取感兴趣部分 问题描述 当需要从一幅图片中提取一些感兴趣的内容时 比如一些细小的文字 图案等 如果从整个图片中直接提取 必然会大大增加计算量 导致处理时间很长 而且多数计算都是无效计算 进而非常消耗资源 解决办法
  • 扩散模型:Diffusion models as plug-and-play priors作为即插即用先验的扩散模型

    扩散模型 Diffusion models as plug and play priors作为即插即用先验的扩散模型 0 摘要 1 概述 2 方法 2 1 问题设置 2 2 将去噪扩散概率模型作为先验 3 实验 图像生成 3 1 MNIST
  • 【python-opencv】硬币检测

    使用 python3 8 x opencv 硬币检测 问题描述 设计思路1 使用简单特征识别 具体操作 部分代码 设计思路2 模板匹配 源码 模板制作 完整代码 问题描述 使用图像处理技术 从照片中识别硬币的个数 并判断总价值 设计思路1
  • 【图像处理】非线性滤波

    非线性滤波 图像处理中滤波分线性滤波和非线性滤波两种 其中常见的线性滤波有 方框滤波 中值滤波 高斯滤波等 其主要原理就是每个像素的输出值是输入像素的加权和 所以像素的输入与输出成线性关系 线性滤波器易于构造 并且易于从频域响应角度进行分析
  • 《Pyramid Scene Parsing Network》

    Pytorch代码 1 研究问题 目前基于FCN的语义分割网络缺乏利用不同尺度全局上下文信息的能力 对于复杂图像的语义分割 如ADE20K数据集 存在问题 注 感受野的大小可以粗略表示为使用上下文信息的程度 2 研究方法 提出了金字塔场景理
  • cv2.minAreaRect()

    功能 求出在点集下的最小面积矩形 输入 格式 points array shape n 1 2 解释 其中points是点集 数据类型为ndarray array x1 y1 x2 y2 xn yn 输出 格式 rect tuple x y
  • Halcon直线检测

    1 Halcon最常用的直线检测算子 add metrology object line measure 利用Halcon封装好的模型不仅可以检测直线 还可以检测圆 椭圆 矩形等 下面介绍下其余的直线检测的算子 需要配合 skeleton
  • Python的PIL库

    Python图像库PIL Python Image Library 是python的第三方图像处理库 图像类Image class Image类是PIL中的核心类 比如从文件中加载一张图像 处理其他形式的图像 或者是从头创造一张图像等 Im
  • Python图像处理:批量添加水印的优雅实现与进阶技巧

    1 简介 在日常图像处理中 为图片添加水印是一项常见任务 有多种方法和工具可供选择 而今天我们将专注于使用Python语言结合PIL库批量添加水印 需要注意的是 所选用的图片格式不应为JPG或JPEG 因为这两种格式的图片不支持透明度设置
  • 友思特分享 | CamSim相机模拟器:极大加速图像处理开发与验证过程

    来源 友思特 机器视觉与光电 友思特分享 CamSim相机模拟器 极大加速图像处理开发与验证过程 原文链接 https mp weixin qq com s IED7Y6R8WE4HmnTiRY8lvg 欢迎关注虹科 为您提供最新资讯 随着
  • 图像分割-Grabcut法(C#)

    版权声明 本文为博主原创文章 转载请在显著位置标明本文出处以及作者网名 未经作者允许不得用于商业目的 本文的VB版本请访问 图像分割 Grabcut法 CSDN博客 GrabCut是一种基于图像分割的技术 它可以用于将图像中的前景和背景分离
  • 图像分割-Grabcut法

    版权声明 本文为博主原创文章 转载请在显著位置标明本文出处以及作者网名 未经作者允许不得用于商业目的 本文的C 版本请访问 图像分割 Grabcut法 C CSDN博客 GrabCut是一种基于图像分割的技术 它可以用于将图像中的前景和背景

随机推荐

  • DBeaver连接MySQL提示“Public Key Retrieval is not allowed”的解决办法

    一 问题描述 一段时间没使用DBeaver 再次打开DBeaver连接MySQL提示 Public Key Retrieval is not allowed Public Key Retrieval is not allowed 不允许进行
  • HIVE简单介绍和了解

    用于解决海量日志数据的分析 hive是基于Hadoop的一个数据仓库工具 可以将结构化的数据文件映射为一张数据库表 并提供完整的sql查询功能 可以将sql语句转换为MapReduce任务进行运行 其优点是学习成本低 可以通过类SQL语句快
  • Linux开发工程师是吃青春饭的吗?

    Linux开发工程师怎么样 都说程序员是吃青春饭 Linux开发工作35岁之后还能做吗 坦白说 如果程序员在35岁的时候 工作经验 与刚毕业的时候差别不大 则其不可替代性就不高 很难在大龄时具备足够竞争力 大龄程序员 跟应该以专业洞识 理解
  • InterBase 6.5的新特性 (转)

    InterBase 6 5的新特性 转 more InterBase 6 5的新特性XML namespace prefix o ns urn schemas microsoft com Office office gt 作者 Bill T
  • Luat 功能开发教程(十四) 延时和定时器

    目录 延时和定时器 简介 API说明 实现流程 创建 消亡 自动消亡 手动消亡 判断定时器状态 知识拓展 示例 常见问题 相关资料以及购买链接 延时和定时器 简介 在luat脚本程序中 往往需要用到延时和等待等逻辑功能 例如 你想得到每隔3
  • 【el-time-picker设置默认值】Cannot read properties of undefined (reading ‘hour‘)

    需求 设置默认时间为2 0 0的时间选择器 产生报错的写法
  • 必填校验设置‘change‘, ‘blur‘同时起作用

    必填校验设置 change blur 同时起作用 rules seaAreaName required true message 请输入海区 trigger change blur
  • 华为机试-第二题

    查找知识图谱中的实例知识 知识图谱是一种结构化的语义网络 用于描述物理世界中的概念及其实例的相关关系 可以把知识图谱看成是一种有向图 图中的点是概念或实例 图中的边是概念及其实例的相关关系 现定义一种简单的知识图谱 概念 包括父概念及其子概
  • bootstrap jquery dataTable 异步ajax刷新表格数据

    异步请求 var postData env name new env name env url new env url env desc new env desc ajax type POST url test env add data p
  • Interactive Natural Language Processing

    本文是对 Interactive Natural Language Processing 的翻译 交互式自然语言处理 摘要 1 引言 2 交互式对象 2 1 人在环 2 2 KB在环 2 3 模型或工具在环 2 4 环境在环 3 交互界面
  • Oracle数据块概念及与行之间的关系测试

    数据块 Oracle Data Blocks 是Oracle最小的存储单位 Oracle数据存放在 块 中 一个块占用一定的磁盘空间 这里的 块 是Oracle的 数据块 不是操作系统的 块 操作系统的块通常为512k Oracle每次请求
  • openwrt 应用程序 开机自启动

    这几介绍一下openwrt 应用程序包开机自启动的两种方法 使用的平台是MTK7688开发板 首先写一个以及可以跑起来的工程 这里对工程就不做展开 以helloworld工程为例 helloworld工程写在 openwrt package
  • Python bs4怎么安装?

    bs4是BeautifulSoup4的简称 它是一个可以从HTML中提取数据的Python第三方库 具体来讲 bs4可以从茫茫的HTML代码中准确查找出你想要的内容 甚至一个小小的字符串 听起来是不是感觉bs4很厉害的样子 那么 Pytho
  • 预测模型的评价指标Matlab

    一般情况下 所要预测的数据分为连续型数据和离散性数据 连续型数据比如成绩分数 时间序列等 离散性数据通常为划分的分类标签 针对不同的数据类型 衡量模型的准确程度采用不同指标 如比较一些算法的准确率 若预测的数据为离散型 则算法的准确性自然容
  • 【综合转贴】CSS “点 ”“井号”的含义and ID class区别.

    body font family Arial sans serif color 333333 line height 1 166 margin 0px padding 0px masthead margin 0 padding 10px 0
  • 【3月比赛合集】45场可报名的数据挖掘奖金赛,任君挑选!

    CompHub 实时聚合多平台的数据类 Kaggle 天池 和OJ类 Leetcode 牛客 比赛 本账号同时会推送最新的比赛消息 欢迎关注 更多比赛信息见 CompHub主页 或 点击文末阅读原文 以下信息仅供参考 以比赛官网为准 目录
  • k8s部署之ETCD集群

    k8s部署之ETCD集群 1 etcd下载 etcd下载地址 https github com coreos etcd releases 从github etcd的发布页面选取相应的版本用 wget url 来下载 如 wget https
  • 【易售小程序项目】小程序首页(展示商品、商品搜索、商品分类搜索)【后端基于若依管理系统开发】

    文章目录 界面效果 界面实现 工具js 页面 首页 让文字只显示两行 路由跳转传递对象 将商品分为两列显示 使用中划线划掉原价 后端 商品 controller service mapper sql 同项目其他文章 界面效果 说明 界面中商
  • Docker容器中如何运行一个带GUI的app?

    问 How can you run GUI apps in a docker container Are there any images that set up vncserver or something so that you can
  • 图像处理之-----插值算法

    插值算法是图像处理中最基本的算法 首先我们先了解一下什么是插值算法 以及插值算法在图像处理过程中的应用 1 什么是插值 Interpolation is a method of constructing new data points wi