插值算法

article/2025/9/30 7:56:41

  插值,通俗来说当在一个离散的事件中,想知道某一个位置确定的值时,就可以利用插值方式计算得到,即利用已知数据估计未知位置数值。插值的方式有很多,下面介绍几种常用的插值方式。
在这里插入图片描述

一、最近邻插值(Nearest Neighbour Interpolation)

  最近邻插值法也成为零阶插值法,下图是一个一维的最近邻插值原理图,坐标轴上各点 xi-1,xi,xi+1 … 两两对半等分间隔 (红色虚线划分),以每个坐标点划分出各自的区域,最近邻插值的原理就是,各插值坐标点的值等于所在邻域坐标点的值。
  例如,插值点 x 位于坐标点 xi 的邻域,那么其值 f(x) 就等于 f(xi)。
在这里插入图片描述
                  图1 一维最近邻插值原理图
  对于二维情况来说,同理,只是插值位置的值由一维中的某个坐标点变为二维平面中的某点决定。如下图2所示,插值点P的值由与他位置最相近的Q11决定:
在这里插入图片描述
                  图2 二维最近邻插值示意图
这也是线性插值的基本原理之一。

二、单线性插值

  下图3是一个一维的线性插值示意图,不同于最近邻插值,线性插值是将坐标轴上各点 xi-1,xi,xi+1 … 的值两两直接相连为线段,得到一条连续的约束函数。在这种插值中,例如插值坐标点x,根据约束函数可以求出其值应为 f(x)。相当于两点确定一条直线,从而线段上所有点的坐标就都可以确定了。若想插值的点在确定的线段外,也可以用这种方式求得,只是这种插值方式被称为线性外插
  因为每两个坐标点之间的约束函数曲线是一次线性的线段,对插值结果而言是“线性” 的,所以该方法称为线性插值。
在这里插入图片描述
                  图3 单线性插值示意图

三、双线性插值(bilinear Interpolation)

  一维中的插值推广到二维就被称为双线性插值,也就是在一个平面中求某个点的值,也就是在两个方向上各进行一次单线性插值,假如灰度值未知的插值点为P (x, y),就是我们要求的插值点,计算方式为:
在这里插入图片描述
在这里插入图片描述

                 图4 双线性插值原理

四、三线性插值

  三线性插值就是双线性插值的三维扩展,根据周围八个点计算插值点C:
在这里插入图片描述
                  图5 三线性插值原理图
(1)首先在x轴上进行插值(横向),分别求出4个边界上的蓝色的点C00,C01,C10,C11;
(2)再在y轴上进行插值(纵向),得到绿色的C0和C1两点;
(3)最后在z轴上进行插值得到插值点C。

五、双三次插值(BiCubic Interpolation)

  双三次插值又叫立方卷积插值/ 双立方插值,它是利用了待求像素点在源图像中相邻的16个像素点的值,即这16个像素点的加权平均。在数值分析中,双三次插值是算是双线性插值的一种,与三线性插值不同。这种插值方法需要使用两个多项式插值三次函数,每个方向使用一个。
在这里插入图片描述
                 图6 双三次插值俯视原理图
  设待求插值点为图中 (i+u, j+v),已知其周围的 16 个像素坐标点 (网格) 的灰度值,所以需要计算 16 个点各自的权重。以像素坐标点 (i, j) 为例,因为该点在 y 轴和 x 轴方向上与待求插值点 (i+u, j+v) 的距离分别为 u 和 v,权重一般利用权重核计算,权重核有很多种,包括Bicubic、Mitchell和Lanczos等,

(1)常用的Bicubic核函数:
在这里插入图片描述
其中a一般取-0.5,函数波形图为:
在这里插入图片描述
利用该核函数可以计算出周围16个像素点的权重W;
再利用插值点像素值求解公式有:
在这里插入图片描述
其中A、C的S(***)表示权重,代入上面的A、C,再代入f(x,y)即得到所求点的插值结果。
(2)Lanczos核函数
不同位置的权重L(x)为:
在这里插入图片描述
函数波形图:(不同的α值分别代表缩小和放大图像)
在这里插入图片描述
计算出所有16个点的权重后,对16个值取加权平均,公式如下:
在这里插入图片描述
x为待插值位置,i为现有采样位置,S i为现有位置的像素值,则S(x)即为插值得到的i处的插值结果。
以上过程扩展到二维情况为:

在这里插入图片描述
  双三次插值不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响。因此克服了前两种方法的不足之处,能够产生比双线性插值更为平滑的边缘,计算精度很高,处理后的图像像质损失最少,效果是最佳的。

参考资料:
https://blog.csdn.net/weixin_41311617/article/details/88943092
https://blog.csdn.net/weixin_42546737/article/details/110850247
https://blog.csdn.net/weixin_42463482/article/details/82830628
https://blog.csdn.net/qq_39478403/article/details/105796249
https://blog.csdn.net/wgx571859177/article/details/78963267


http://chatgpt.dhexx.cn/article/lOal8GDY.shtml

相关文章

几种插值算法对比研究

[研究内容] 目前比较常用的几种插值算法 [正文] 目前比较常用的插值算法有这么几种:最邻近插值,双线性二次插值,三次插值, Lanczos插值等等,今天我们来对比一下这几种插值效果的优劣。 1,最邻近插值 最…

【3.0】 常见的插值算法

插值算法的概念一维插值问题一般插值多项式的原理拉格朗日插值法牛顿插值法埃尔米特插值法分段 三次埃尔米特插值和分段三次样条插值(常用,附代码) 一、插值算法的概念 数学建模比赛中,常常需要根据已知的函数点进行数据、模型的…

常用的三种插值算法

在做数字图像处理时,经常会碰到小数象素坐标的取值问题,这时就需要依据邻近象素的值来对该坐标进行插值。比如做图像的几何校正,也会碰到同样的问题。 1、最近邻插值法(Nearest Neighbour Interpolation) 这是最简单的…

数学建模常见算法:插值算法

目录 一、插值的定义 二、拉格朗日多项式插值(Lagrange插值) 三、龙格现象(Runge phenomenon) 四、牛顿插值(Newton) 五、分段线性插值 六、埃尔米特插值(Hermite 插值) 七、三次样条插值 八、插值…

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

插值算法是图像处理中最基本的算法,首先我们先了解一下什么是插值算法,以及插值算法在图像处理过程中的应用。 1、什么是插值 Interpolation is a method of constructing new data points within the range of a discrete set of known data points. …

操作系统 读者写者问题的实现(C++ 读者优先、写者优先)

通过信号量机制和相应的系统调用,用于线程的互斥和同步,实现读者写者问题。利用信号量机制,实现读者写者问题。 在windows 10环境下,创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程…

信号量机制实现读者写者问题(思路剖析+Java代码实现+验证)

写在前面: Java中: 我们用这样的代码新建一个信号量:Semaphore mutex new Semaphore(1);P操作(wait)的代码为:mutex.acquire();V操作(signal)的代码为:mutex.release(); 本文章的内容: 读者写者问题&#…

Java实现读者写者问题--读者优先

作者:凌杰林 简介 临界资源:同一时间只能由一个进程访问的资源 临界区:访问临界资源的代码段 读者写者问题:存在一个多个进程共享的数据区(临界资源),该数据区可以是一个文件或者一块内存空间…

操作系统实验:读者写者问题

一.实验目的: 通过实现读者写者问题理解进程及信号量的概念 二.实验要求: 创建一个控制台进程,此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件的要求进行读写操作。用信号量机制分…

信号量机制——读者-写者问题

信号量机制——读者-写者问题 问题描述 一个共享数据区,有若干个进程负责对其进行读入工作,若干个进程负责对其进行写入工作。 允许多个进程同时读数据互斥读数据若有进程写数据,不允许读者读数据 对照生活中的购票系统: 一个…

操作系统:读者写者问题

操作系统:读者写者问题 问题:一、读者-写者问题: 读者优先二、读者-写者问题:写进程优先 三、读者写者问题的应用---独木桥问题类型1.一次只能过一辆车类型2.一次能过多辆车 四、总结附代码://读者优先//写者优先//公平竞争 教材原…

四、操作系统——读者写者问题(详解)

一、问题描述: 二、需要满足的条件: 写进程与写进程之间必须互斥的写入数据(因为如果两个写进程同时对共享数据中的区域A中的数据进行写操作的话,会导致数据错误覆盖的问题)写进程与读进程之间必须互斥的访问共享数据…

锁机制:读者写者问题 Linux C

最近碰到一些锁机制的问题,想起大三的时候做过的一个小课设,记录复习一下。 问题描述: 一个数据文件可以被多个进程共享,其中,有些进程要求读(reader进程),而另一些进程要求对数据…

写优先的读者写者问题(Java实现)

该题系吉林大学19级软件学院操作系统课设题之一 先输入初始时的写者读者情况,优先级顺序做了随机处理 代码如下 GUI: import javax.swing.*; import javax.swing.border.Border; import javax.swing.text.BadLocationException; import javax.swing.tex…

操作系统读者写者问题代码实现

问题分析: 读者优先: 读者进程执行: 无其他读者写者, 直接执行有写者等, 但其他读者在读, 直接读有写者写, 等待写者进程执行: 无其他读写者, 直接执行有其他读写者, 等待 写者优先: 读者进程执行: 如果此时没有写者等待, 直接执行如果有写者等待, 那么等待写者…

读者写者问题详解 操作系统

2.16 读者写者问题 抽象解释 多个进程访问一个共享的数据区读者(读进程)只能读数据,写者(写进程)只能写数据适用于数据库、文件、内存、寄存器等数据区的访问模型如12306购票系统,由于用户量庞大和数据量…

同步机制—读者写者问题

【实验目的】 理解临界区和进程互斥的概念,掌握用信号量和PV操作实现进程互斥的方法。 【实验内容】 在windows或者linux环境下编写一个控制台应用程序,该程序运行时能创建N个线程,其中既有读者线程又有写者线程,它们按照事先设计…

操作系统——读者写者问题

一、问题描述 要求: 1、允许多个读者可以同时对文件执行读操作。 2、只允许一个写者往文件中写信息。 3、任一写者在完成写操作之前不允许其他读者或写者工作。 4、写者执行写操作前,应让已有的读者和写者全部退出。 二、问题分析 读者写者问题最核心的问题是如何处理…

【操作系统-进程】PV操作——读者写者问题

文章目录 读者写者问题万能模板万能模板 1——读进程优先万能模板 2——读写公平法万能模板 3——写进程优先 题目 1:南北过桥问题题目 2:录像厅问题题目 3:更衣问题 读者写者问题万能模板 读者写者问题,其本质就是连续多个同类进…

经典进程同步问题(三)——读者写者问题

目录 一、问题描述 二、解题思路 2.1 读者优先算法 2.2 写者优先算法 2.3 读写公平 三、源码实现 3.1 读者优先 3.2 写者优先 3.3 读写平等 一、问题描述 一个数据问价或记录可以被多个进程共享,我们把只读该文件的进程称为“读者进程”,其他进…