用于数字成像的双三次插值技术​

article/2025/9/23 15:46:20

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

双三次插值是使用三次或其他多项式技术的2D系统,通常用于锐化和放大数字图像。在图像放大、重新采样时,或是在软件中润饰和编辑图像时也会使到用它。当我们对图像进行插值时,实际上是在将像素从一个网格转换到另一个网格。

共有两种常见的插值算法:自适应和非自适应。自适应方法取决于它们所插值的内容,而非自适应方法则平等地对待像素。在专业的专业图像编辑软件(例如Photozoom Pro和Adobe Photoshop)中都使用了自适应算法。非自适应算法包括以下内容:最近邻,双线性,双三次,样条等。通常,双三次插值可使用Lagrange多项式,三次样条或三次卷积算法完成。

当我们进行插值时,我们是从已知数据中估计未知数据。如果我们使用DSLR以16 MP的速度拍摄图像,则根据方向(水平与垂直),已知数据为4928 x 3264像素(或3264 x 4928像素)。当我们想要放大图像时,我们基于周围像素的值来近似新值。例如,如果要将6000 x 4000像素的图像大小增加到24 MP,则将添加以前不存在的更多像素。那是额外的8 MP。

由于我们要添加而不是减去像素,因此细节可能会丢失。为了保留清晰度和细节,必须将每个像素与其周围的像素进行近似,以获得最接近的值。就像复制像素以通过放大来填充图像中创建的空间一样。因此,这些值必须与其最近的像素相邻点近似或相同。放大时,您需要向图像添加800万个新像素以填充空间。它们只需要足够准确即可重新创建细节并保持清晰度以保持图像清晰。

考虑以下网格。

这是一个(4,0)x(0,4)正方形,每个正方形代表一个像素。它总共有25个像素(5 x 5)。黑点表示要插值的数据,总计25个点。颜色表示函数值,因此在此示例中,我们看到它们不是径向对称的。这样可以在几乎没有图像伪影的情况下进行更平滑的重采样。因此,通常选择双三次插值而不是双线性或最近邻插值,但是处理图像需要更多时间。如果质量值得关注,那么三次立方也是最佳选择。双线性插值处理2x2(4个像素)的正方形,而双三次插值处理4x4(16个像素)的正方形。假设我们使用以下函数:

(0,0)、(1,0)、(0,1)、(1,1)这是单位正方形的4个角。可以表示为以下内容:

这需要确定p(x,y)的16个系数的值。该过程还有更多步骤,但这是基本公式。这就是创建2D图像的插值曲面的原因。这是关于获取网格上p(x,y)上的点的值并对其进行插值以近似其周围点的值的全部操作。

如果大家不需要编代码,则始终可以使用具有预建功能的软件进行图像编辑。在Photoshop中对图像重新采样时,将获得双三次插值技术。从菜单中:

Image -> Image Size

我们将看到一个对话框,从中可以选择所需的重采样选项。如果不追求质量,但可以选择双线性和最近邻,但可以加快缩放比例或缩小比例。

Photoshop中的图像重采样大小对话框(来源Adobe Creative Cloud)

我们可以更改像素数,但是它也有局限性。双三次插值在高分辨率下效果很好,但是当您超出24 MP超高分辨率时,效果可能会不太好。这是因为添加的像素越多,需要保留的细节越多。该算法只是无法按照原始图像分辨率保留所有内容。

大多数情况下,使用的是压缩的JPEG图像。如果压缩级别更高以节省空间,则可能已经丢失了详细信息。否则,请选择最低的压缩级别以保留更多图像细节以进行放大。缩小尺寸时,它有很大不同。与减少像素相比,减少像素实际上具有更多的细节和清晰度。这是因为重新创建细节比仅删除细节更困难。缩小尺寸后,最大的好处就是质量看起来仍然不错(例如8K到2K),因为没有近似的或人工的细节来填补空间。

双三次插值不仅用于缩放图像,而且还用于视频显示。尽管它们比其他2D技术更优越,但它们确实有一些缺点。过冲(光晕),削波,响声伪影和锐度有时也会存在一定问题。这就是为什么多次使用三次插值法效果较差。现在,有诸如SRCNN(超分辨率卷积神经网络)或SRGAN(超分辨率生成对抗网络)之类的超分辨率技术在保留清晰度方面做得更好。


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

相关文章

插值算法(最邻近差值、双线性插值、双三次插值)

一、最邻近差值(nearest) 含义: 选取离目标点最近的点的值作为新的插入点的值。 两幅图坐标值变换关系: (代码未验证) for i1:size(dist,1)x round(i* (size(src,1)/size(dist,1))); %dst横坐标变换到s…

matlab双线性插值双三次插值对CUFED5进行处理

本文是摘抄与总结,仅供自己学习和日后查阅使用。 可以自己写一个双线性插值函数, ------------------------------------------------------------------- function outputimg my_imresize(A,n) % A 是图像矩阵,n是放缩的倍数 % 返回值outputimg是一…

双三次插值算法的C++实现与SSE指令优化

在上篇文章中,我们讲解了常见的最邻近插值算法、双线性插值算法和双三次插值算法的原理与实现,三种插值算法中双三次插值算法的插值效果最好,但其也是三种算法中计算复杂度最高、耗时最长的算法。本文在给出双三次插值C代码的基础上&#xff…

双三次插值 - 插值图像任意位置亚像素C++

双三次插值 - 插值图像任意位置亚像素C 一、概念 双三次插值又称立方卷积插值。三次卷积插值是一种更加复杂的插值方式。该算法利用待采样点周围16个点的灰度值作三次插值,不仅考虑到4 个直接相邻点的灰度影响,而且考虑到各邻点间灰度值变化率的影响。…

matlab 给图像双三次,图像灰度的双三次插值的MATLAB实现

相比C/C实现,图像灰度的双三次插值的MATLAB实现要方便的多,下面是MATLAB语言实现 clc,clear; ffimread(C:\Program Files\MATLAB\R2013a\bin\work\lena.bmp); [mm,nn]size(ff);%将图像隔行隔列抽取元素,得到缩小的图像f mmm/2;nnn/2; fzeros(…

java 双三次线性插值_三种常见的图像处理双三次插值算法

三种常见的图像处理双三次插值算法 双立方插值计算涉及16像素,间(i’, j’)像中的包括 小数部分的像素坐标。dx表示X方向的小数坐标。dy表示Y方向的小数坐标。 详细 能够看下图: 依据上述图示与双立方插值的数学表达式能够看出。双立方插值本质上图像16个像素点 权重卷积之和…

双三次插值 python实现_Python:用GPU实现双三次插值

它不是GPU(而是尝试利用线程和CPU的向量单元),但是pyvips比scipy快很多,您可以测试一下。在 我做了个基准:import sys import time import scipy.ndimage import pyvips scale 10 n_loops 10 start time.time() test_image scipy.ndimage…

双三次插值及Matlab实现

双三次插值及Matlab实现 一、简单实例 采用简单实例进行对双三次插值的介绍,由于双三次插值对于目标图像的某一像素进行估计时,所采用的像素信息为其周围16个像素点信息,因此不同于最近邻插值和双线性插值,此时假设有 5 5 5\tim…

【opencv】最近邻插值、双线性插值、双三次插值(三次样条插值)

目录 1. 最近邻插值2. 双线性插值1)简单理解2)一般性 3. 双三次插值(三次样条插值)总结 b站 视频讲解 : https://www.bilibili.com/video/BV1wh411E7j9/ 1. 最近邻插值 举个简单例子:一个 3 3 3 \times 3…

挑战图像处理100问(27)——双三次插值

当我们需要对图像进行放大或缩小时,为了避免图像变形或失真,我们需要进行插值。插值是一种基于已知数据点,在这些数据点之间进行估计的方法。在图像处理中,常见的插值方法包括最邻近插值、双线性插值、双三次插值等。 双三次插值…

【图像超分辨(SR)】通俗直观彻底理解双线性插值、双三次插值及其作用

写在前面的一点话 网上讲解基本双线性插值、双三次线性插值的文章很多,但大部分都是只在讲为什么是这样,并不算非常通俗(起码对我来说需要额外查很多资料来补充理解)。很少有文章能够给初学者一些比较直观的理解,因此…

插值法(最邻近,双线性,双三次)的原理及实现

插值法(最邻近,双线性,双三次)的原理及实现 常用的插值方法有最邻近插值法、双现象插值法和双三次插值法等,主要用于图像的放大或缩小。 缩小图像(或称为下采样(subsampled) 或降采样&#xf…

表示关系x =y =z的c语言表达式为________.,为表示关系x≥y≥z,应使用C语言表达式____。...

为表焦距决定了画面的透视关系。 示关使用GREGRE ≥y≥桡神经沟位于 应C语言表关于脊柱正确的描写是() 建筑物或者其他设施以及建筑物上的搁置物、达式悬挂物发生( )造成他人损害的,所有人或者管理人应当承担民事责任,但能够证明自己没有过错的除外。 为表成对的脑颅…

C语言运算表达式整理

C语言的运算规则是按照运算符的优先级进行的,所以我们首先看一下C的运算优先级别 总结 最简单的优先级就是 算数运算符>关系运算符>逻辑运算符>赋值运算符 然后我们还要了解一个短路规则(特性) 短路规则:在整个逻辑表…

与数学式子对应的C语言表达式是(),与数学式子3乘以x的n次方/(2x-1)对应的C语言表达式是...

满意答案 lengwei241 2013.03.25 采纳率:43% 等级:13 已帮助:11778人 18 与数学式子3乘以x的n次方/(2x-1)对应的C语言表达式是 3*x^n/(2*x-1) 3*x**n/(2*x-1) 3*pow(x,n)*(1/(2*x-1)) 3*pow(n,x)/(2*x-1) 答案是3*pow(x,n)*(1/(2*x-1)) 为什么 解答:其中pow(x,n)为C语言…

C语言表达式和表达式的值

今天突然发现如果能很好的理解表达式和表达式的值的概念,可以使编程代码变的更整洁。很多时候我们总是忘记从最基本的概念开始考虑问题。我觉得我们有必要把C/C标准看下,在里面肯定有很多我们一直困惑的问题的答案。 C语言是基于结构化程序设计思想的程序…

以下c语言表达式与代数式计算结果,设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式计算结果不相符的是...

设有定义:float a=2,b=4,h=3;,以下C语言表达式中与代数式计算结果不相符的是 设有式计算结Women in Britain, having some qualifications, were enfranchised until ______. 定义达式代数The usual rhyme scheme for the English or Shakespearean sonnet is( ). In “For …

与数学式对应的c语言表达式为,数学表达式“|x|4”对应的C语言表达式是“x-4||x4”。...

数学表达式“|x|4”对应的C语言表达式是“x-4||x4”。 数学式《莺莺传》故事的时代为( ) 表达人力资本的投资是提高技术水平的必要途径。() 对达式教育投资是人力资本的投资唯一重点。() 微商是以移动终端为载体,应的C语言表通过社交媒介手段,进行传播的…

C语言 运算符、表达式

运算符、表达式 1、 C语言运算符 算术运算符和算术表达式 (加)、—(减)、*(乘)、/(除)、%(取余,也叫模运算符,该运算符两侧都要求为整数&#xff…