图像常用的插值算法:最近邻插值、双线性插值和双三次插值算法

article/2025/9/30 5:47:30

图像常用的插值算法

  • 最近邻插值算法
  • 双线性插值算法
  • 双三次插值(bicubic)算法
  • 三种插值算法的优缺点

插值算法是图像缩放中的一项基本且重要的算法;在图像缩放中,输出图像像素点坐标可能对应输入图像上几个像素点之间的位置,这个时候就需要通过灰度插值处理来计算出该输出点的灰度值。图像插值是图像超分辨率的重要环节,不同的插值算法有不同的进度,插值算法的好坏也直接影像着图像的失真程度。常用的插值算法有以下三种:最近邻插值算法、双线性插值算法以及双三次插值算法。

最近邻插值算法

最近邻插值算法是最简单的插值算法,同时也叫零阶插值法。即选择里它所映射位置最近的输入像素的灰度值为结果。对二维图像,是去待采样点周围4个相邻像素点中距离最近的1个点的灰度值作为待采样点的像素值。
在这里插入图片描述

最近邻插值算法
如上图所示,当需要求的A的坐标落在蓝色框内,会对其坐标(x,y)采用四舍五入的方式,将A点坐标映射到P1~P4上的某一个点,并以该点的灰度值作为采样点A的灰度值。

双线性插值算法

双线性插值素算法又叫一阶插值法,它对经过三次插值才能得到最终结果,是对最邻插值算法的一种改进,先对水平x方向进行一阶线性插值(需要两次一阶线性插值),然后在在垂直y方向进行一阶线性插值(只需要一次一阶线性插值)。
在这里插入图片描述

双线性插值算法

假设上图中, Q 11 , Q 12 , Q 21 , Q 22 Q_{11},Q_{12},Q_{21},Q_{22} Q11,Q12,Q21,Q22四个红色点的坐标点信息及灰度值是已知,分别为 Q 11 = ( x 1 , y 1 ) , Q 12 = ( x 1 , y 2 ) , Q 21 = ( x 2 , y 1 ) , Q 22 = ( x 2 , y 2 ) Q_{11}=(x_1,y_1),Q_{12}=(x_1,y_2),Q_{21}=(x_2,y_1),Q_{22}=(x_2,y_2) Q11=(x1,y1),Q12=(x1,y2),Q21=(x2,y1),Q22=(x2,y2),通过双线性插值计算出P点的灰度值。
首先进行x方向的线性插值,得去 R 1 , R 2 R_1,R_2 R1,R2两点的灰度值,然后再进行y方向的线性插值,最终获取 P P P点的灰度值。计算过程如下所示:
1. 计算x方向的线性插值
     f ( R 1 ) = x 2 − x x 2 − x 1 f ( Q 11 ) + x − x 1 x 2 − x 1 f ( Q 21 ) W h e r e R 1 = ( x , y 1 ) f(R1) = \frac{x_2 - x}{x_2-x_1}f(Q_{11}) + \frac{x - x_1}{x_2-x_1}f(Q_{21}) \quad Where \quad R_1 =(x,y_1) f(R1)=x2x1x2xf(Q11)+x2x1xx1f(Q21)WhereR1=(x,y1)

     f ( R 2 ) = x 2 − x x 2 − x 1 f ( Q 12 ) + x − x 1 x 2 − x 1 f ( Q 22 ) W h e r e R 1 = ( x , y 2 ) f(R2) = \frac{x_2 - x}{x_2-x_1}f(Q_{12}) + \frac{x - x_1}{x_2-x_1}f(Q_{22}) \quad Where \quad R_1 =(x,y_2) f(R2)=x2x1x2xf(Q12)+x2x1xx1f(Q22)WhereR1=(x,y2)

2.计算y方向的线性插值

     f ( P ) = y 2 − y y 2 − y 1 f ( R 1 ) + y − y 1 y 2 − y 1 f ( R 2 ) f(P)= \frac {y_2 - y}{y_2 - y_1}f(R1) + \frac{y - y_1}{y_2 - y_1}f(R2) f(P)=y2y1y2yf(R1)+y2y1yy1f(R2)

3.合并1和2两步计算过程

     f ( P ) = ( x 2 − x ) ( y 2 − y ) ( x 2 − x 1 ) ( y 2 − y 1 ) f ( Q 11 ) + ( x − x 1 ) ( y 2 − y ) ( x 2 − x 1 ) ( ( y 2 − y 1 ) ) ( f ( Q 21 ) ) + ( x 2 − x ) ( y − y 1 ) ( x 2 − x 1 ) ( y 2 − y 1 ) f ( Q 12 ) + ( x − x 1 ) ( y − y 1 ) ( x 2 − x 1 ) ( y 2 − y 1 ) f ( Q 22 ) f(P)=\frac{(x_2 - x)(y_2 - y)}{(x_2-x_1)(y_2 - y_1)}f(Q_{11}) + \frac{(x - x_1)(y_2 - y)}{(x_2-x_1)((y_2 - y_1))}(f(Q_{21})) + \frac{(x_2 - x)(y - y_1)}{(x_2-x_1)(y_2 - y_1)}f(Q_{12}) + \frac{(x - x_1)(y - y_1)}{(x_2-x_1)(y_2 - y_1)}f(Q_{22}) f(P)=(x2x1)(y2y1)(x2x)(y2y)f(Q11)+(x2x1)((y2y1))(xx1)(y2y)(f(Q21))+(x2x1)(y2y1)(x2x)(yy1)f(Q12)+(x2x1)(y2y1)(xx1)(yy1)f(Q22)

双三次插值(bicubic)算法

双三次插值算法(Bicubic interpolation)又称立方卷积插值算法,是对双线性插值的改进,是一种比较复杂的插值方式,它不仅考虑到周围4个像素点灰度值的影像,还考虑到它们灰度值变化率的影像。该算法需要利用待采样附近16个像素点的灰度值作三次插值进行计算。
在这里插入图片描述

双三次插值(bicubic)算法

  如上图所示,函数 f f f在点 ( x , y ) (x,y) (x,y)的值可以通过矩形网络中最近的十六个采样点的甲醛平均得到的,在这里需要使用两个多项式三次插值函数,每个方向使用一个,其函数形式如下:
f ( x , y ) = { ( a + 2 ) ∣ x ∣ 3 − ( a + 3 ) ∣ x ∣ 2 + 1 f o r ∣ x ∣ < = 1 a ∣ x ∣ 3 − 5 a ∣ x ∣ 2 + 8 a ∣ x ∣ − 4 a f o r 1 < ∣ x ∣ < = 2 0 f(x,y) = \begin{cases} (a+2)|x|^3 - (a+3)|x|^2 + 1 \quad for \quad |x| <= 1 \\ a|x|^3 - 5a|x|^2 + 8a|x| -4a \quad for \quad 1 < |x| <= 2 \\ 0 \end{cases} f(x,y)=(a+2)x3(a+3)x2+1forx<=1ax35ax2+8ax4afor1<x<=20
说明

  • f(0)=1
  • f(x)=0(当x>2)
  • 当x超出范围的时候,f(x)为0
  • 当a取不同值时,可以用来逼近不同的采样条函数(常用值为-0.5,0.75)

a = − 1 a = -1 a=1时,如下:
f ( x , y ) = { ∣ x ∣ 3 − 2 ∣ x ∣ 2 + 1 f o r ∣ x ∣ < = 1 − ∣ x ∣ 3 + 5 ∣ x ∣ 2 − 8 ∣ x ∣ + 4 f o r 1 < ∣ x ∣ < = 2 0 f(x,y) = \begin{cases} |x|^3 - 2|x|^2 + 1 \quad for \quad |x| <= 1 \\ -|x|^3 + 5|x|^2 - 8|x| + 4 \quad for \quad 1 < |x| <= 2 \\ 0 \end{cases} f(x,y)=x32x2+1forx<=1x3+5x28x+4for1<x<=20
此时,逼近的函数为 y = s i n ( x ∗ P I ) ( x ∗ P I ) y=\frac{sin(x*PI)}{(x*PI)} y=(xPI)sin(xPI),如下所示:
在这里插入图片描述

a = − 0.5 a=-0.5 a=0.5时,如下:
f ( x , y ) = { 1.5 ∣ x ∣ 3 − 2.5 ∣ x ∣ 2 + 1 f o r ∣ x ∣ < = 1 − 0.5 ∣ x ∣ 3 + 2.5 ∣ x ∣ 2 − 4 ∣ x ∣ + 2 f o r 1 < ∣ x ∣ < = 2 0 f(x,y) = \begin{cases} 1.5|x|^3 - 2.5|x|^2 + 1 \quad for \quad |x| <= 1 \\ -0.5|x|^3 + 2.5|x|^2 - 4|x| + 2 \quad for \quad 1 < |x| <= 2 \\ 0 \end{cases} f(x,y)=1.5x32.5x2+1forx<=10.5x3+2.5x24x+2for1<x<=20
此时对应为三次Hermite样条,如下所示:
在这里插入图片描述

三种插值算法的优缺点

最近邻插值算法

最近邻插值算法双线性插值算法双三次插值算法
采样方式用距离采样点最近的像素值最为采样点的灰度值用双线性方式计算采样点周围的4个点,计算其灰度值根据采样点的周围16个像素值的双线性关系以及像素变化率,计算出采样点的灰度值
计算性能计算量最小、最快计算量比较大,速度居中计算量最大,性能最慢
效果未考虑周围像素点的影像,采样后的灰度值有明显的不连续性,图像质量损失较大,会产生马赛克或者锯齿现象克服最近邻插值算法的灰度不连续性,未考虑各邻点的灰度值的相互影响,故具有低通滤波的性质,从而导致缩放后的图像的高频分量收到损失、图像边缘在一定程度上变得较为模糊克服了前两种方法的不足之处,能够产生比双线性茶壶中算法更为平滑的边缘,计算精度很高,处理后的图像质量损失最少,效果最佳的

:在进行图像缩放时应根据实际情况对三种算法做出选择,既要考虑时间方面的可行性,也要考虑对变化后图像质量可用性,这样才能达到较为理想结果。


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

相关文章

插值拟合算法

一.插值算法 1.插值概念 构造一个函数使得所有已知点在函数图像上 2.一维插值插值方法 &#xff08;1&#xff09;一般多项式插值 &#xff08;2&#xff09;拉格朗日插值 &#xff08;3&#xff09;分段线性插值 采用线性函数 &#xff08;4&#xff09;牛顿插值 &#xf…

插值与逼近_数值分析计算方法

传送门&#xff1a; 线性和非线性方程数值解法_数值分析计算方法 &#x1f449;插值与逼近_数值分析计算方法 ⚠️施工中&#x1f477;… 1 插值 1.1 多项式插值 1.1.1 Lagrange插值 插值误差的事后估计&#xff1a;用两个结果的差来估计插值误差 使用注意 当插值点x位于…

数学建模-插值算法(Matlab)

注意&#xff1a;代码文件仅供参考&#xff0c;一定不要直接用于自己的数模论文中 国赛对于论文的查重要求非常严格&#xff0c;代码雷同也算作抄袭 如何修改代码避免查重的方法&#xff1a;https://www.bilibili.com/video/av59423231 //清风数学建模 一、基础知识 简单来说…

插值算法总结

1、最邻近元法 这是最简单的一种插值方法&#xff0c;不需要计算&#xff0c;在待求象素的四邻象素中&#xff0c;将距离待求象素最近的邻象素灰度赋给待求象素。设iu, jv(i, j为正整数&#xff0c; u, v为大于零小于1的小数&#xff0c;下同)为待求象素坐标&#xff0c;则待求…

插值算法基本原理

插值&#xff1a;数据处理的手段 将缺失数据补全处理 线性内插 拉格朗日插值法 牛顿插值 拟合&#xff1a;预测&#xff0c;寻找规律的手段 是插值的外延 插值算法&#xff1a;使用在现有的数据极少&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学方法…

插值算法——分段线性插值(1)

首先&#xff0c;科普一下插值的含义&#xff1a;在离散数据的基础上补插连续函数&#xff0c;使得这条连续曲线通过全部给定的离散数据点。 插值是离散函数逼近的重要方法&#xff0c;利用它可通过函数在有限个点处的取值状况&#xff0c;估算出函数在其他点处的近似值。 插…

Matlab实现常见的插值算法

本文介绍如何使用 Matlab 实现常见的插值算法&#xff1a;分段三次埃尔米特插值和三次样条插值。 分段三次埃尔米特插值 (1) pchip&#xff08;x, y, new_x&#xff09;函数表示分段三次埃尔米特插值&#xff0c;x表示已有的数据 点&#xff0c;y表示数据点代表的纵坐标值&am…

图像插值算法及其实现

sensor、codec、display device都是基于pixel的&#xff0c;高分辨率图像能呈现更多的detail&#xff0c;由于sensor制造和chip的限制&#xff0c;我们需要用到图像插值&#xff08;scaler/resize&#xff09;技术&#xff0c;这种方法代价小&#xff0c;使用方便。同时&#x…

插值算法(数学建模学习)

本系列参考清风老师的数学建模课程 插值算法 一、算法介绍 &#xff08;一&#xff09;算法引入 对于数据量少到不足以去分析问题&#xff0c;而必须生成一些合理的数据的情况要用到插值算法。 &#xff08;二&#xff09;算法详解 &#xff08;1&#xff09;定义 设函数 …

MATLAB-插值算法汇总

前言 数模比赛中常常需要对数据进行分析&#xff0c;当数据不足时就需要补充数据&#xff0c;所用到的方法就是插值法。本文汇总了一些常用的插值算法。 Hermite插值 埃尔米特插值(Hermite)会在给定的节点处&#xff0c;要求插值多项式的函数值与原函数值相同&#xff0c;同时…

第三讲 插值算法

数模比赛中&#xff0c;常常需要根据已知的函数点进行数据&#xff0c;模型的处理和分析&#xff0c;而有时候现有的数据是极少的&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学的方法&#xff0c;“模拟产生”一些新的但又比较靠谱的值来满足需求&#…

opencv中插值算法详解

导读 做图像处理的同学应该经常都会用到图像的缩放&#xff0c;我们都知道图片存储的时候其实就是一个矩阵&#xff0c;所以在对图像进行缩放操作的时候&#xff0c;也就是在对矩阵进行操作&#xff0c;如果想要将图片放大&#xff0c;这里我们就需要用到过采样算法来扩大矩阵…

几种插值算法对比

1.拉格朗日插值 2.牛顿插值 3.分段线性插值 4. 分段三次埃尔米特插值 5.样条插值函数 6.五种样条函数比较 所以&#xff0c; 7. 五种插值方法的实际应用

转载:一文讲解图像插值算法原理

最近在研究插值算法&#xff0c;看到这篇CSDN博主Datawhale学习介绍的博文&#xff0c;觉得介绍得挺不错&#xff0c;转载过来。原文地址&#xff1a;https://blog.csdn.net/Datawhale/article/details/105697264 寄语&#xff1a;本文梳理了最近邻插值法、双线性插值法和三次…

插值算法

插值&#xff0c;通俗来说当在一个离散的事件中&#xff0c;想知道某一个位置确定的值时&#xff0c;就可以利用插值方式计算得到&#xff0c;即利用已知数据估计未知位置数值。插值的方式有很多&#xff0c;下面介绍几种常用的插值方式。 一、最近邻插值(Nearest Neighbour …

几种插值算法对比研究

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

【3.0】 常见的插值算法

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

常用的三种插值算法

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

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

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

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

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