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

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

图像处理之-----插值算法相关推荐

  1. OpenCV框架与图像插值算法

    @(Aaron) [图像处理, 图像插值算法] 1.1 简介   在图像处理中,平移变换.旋转变换以及放缩变换是一些基础且常用的操作.这些几何变换并不改变图象的象素值,只是在图象平面上进行象素的重新排 ...

  2. 【图像处理】基于分形插值算法实现换脸含Matlab源码

    1 简介 2 部分代码 function result = skin(Y,Cb,Cr)a = 25.39;b = 14.15;ecx = 1.72;ecy = 2.43;sita = 2.64;cx ...

  3. 视频图像处理基础知识0(双线性插值算法进行图像缩放)【转】

    转自:http://blog.csdn.net/times_poem/article/details/51395781 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 双线性插 ...

  4. 计算机视觉基础:图像处理Task01-图像插值算法

    图像插值算法 1. 最近邻插值算法 最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输出. f(dstX,dstY)=h(dstXsrcWidthdstWidth, ...

  5. Datawhale 计算机视觉基础-图像处理(上)-Task01 OpenCV框架与图像插值算法

    简介 在图像处理中,平移变换.旋转变换以及放缩变换是一些基础且常用的操作.这些几何变换并不改变图象的象素值,只是在图象平面上进行象素的重新排列.在一幅输入图象 [ u , v ] [u,v] [u,v ...

  6. 图像处理中两种基本的插值算法(最邻近插值法和双线性内插法)

    在图像的基本仿射变换中,经常会碰到经过旋转.缩放后灰度值如何赋值的问题.因为变换之后,图像的坐标位置有可能是小数,所以就需要插值算法来确定到底将该像素赋予哪个位置. 1.最邻近插值法(Nearest ...

  7. 计算机视觉图像处理-CV2与图像插值算法

    用最近邻插值与双线性插值原理完成图像缩放 最近邻插值,是指将目标图像中的点,对应到源图像中后,找到最相邻的整数点,作为插值后的输.缺点:使用最近邻插值算法处理图像放大时,在图象中可能出现明显的块状效应 ...

  8. 数字图像处理(十三)图像放大及双线性插值算法

    导言 图像放大是日常学习中经常要用到的两个算法,我们首先讨论缩放的流程以及放大时如何优化双线性插值算法. 采用国际标准测试图像Lena,为了方便,我们将读入的彩色图转为灰度图进行缩放. 图像放大 和图 ...

  9. 结合实例与代码谈数字图像处理都研究什么?

    图像处理(以及机器视觉)在学校里是一个很大的研究方向,很多研究生.博士生都在导师的带领下从事着这方面的研究.另外,就工作而言,也确实有很多这方面的岗位和机会虚位以待.而且这种情势也越来越凸显.那么图像 ...

最新文章

  1. 渗透中寻找突破口的那些事
  2. 程序员要避免的五种程序注释方式
  3. 计算机专业学生却被强迫工厂实习?结果发生意外手指被截肢,学校回应:会治到满意为止...
  4. linux rsync 原理,rsync 同步原理和类别
  5. 北斗导航 | 坐标转换:ECEF转LLA:GPS坐标系:WGS84(matlab代码)
  6. wxWidgets:创建其他框架
  7. m5310模组数据上传至onenet_5G通信模组799元限量发售,中国移动意欲何为?
  8. 支持多协议多服务的服务器设计和实现的步骤,基于多协议的人工影响天气接入服务器设计与实现...
  9. 微信帝国进化史:一个通讯工具如何在八年内制霸互联网?
  10. 转自《编程世界》一篇让我震憾的文章
  11. MATLAB2018a安装包免费
  12. WebService cxf视频教程
  13. 网络贷款系统完整版源码,thinkphp内核开发,安全可靠,定制网贷分销平台系统
  14. 51单片机流水灯实验
  15. 泛微云桥e-Bridge任意文件读取
  16. 为了强调低电平有效,有时也将反相器图形符号中表示反相的小圆圈画在输入端,例如上图的左边一列反相器的画法
  17. [案例]信息巨头Carfax如何打造数据产品
  18. 为什么说“管理是一门技术、更是一门艺术”
  19. c语言程序24转换12时间,C语言将24小时制转换为12小时制的方法
  20. vscode 调试php 乱码,vscode调试c解决中文乱码怎么办

热门文章

  1. SecureCRT的安装和破解--亲试可用
  2. SSIS 学习之旅 SSIS 简介
  3. 李宏毅深度学习视频摘要
  4. FreeSWITCH之配置G729转码
  5. 虚拟机与Linux的安装
  6. 数字信号处理5——CFAR算法及matlab实现
  7. 轻松搞定网吧记费管理系统
  8. iOS Xcode 打包IPA问题集锦
  9. see declaration of 'i'
  10. 音频文件格式转换 转为 wav格式