【图像缩放】最邻近插值

| 分类 blog  | 标签 图像缩放  插值算法  算法  | 浏览  
图像插值算法

前言

图像处理中有三种常用的插值算法:

  • 最邻近插值

  • 双线性插值

  • 双立方(三次卷积)插值

本文介绍其中的最邻近插值

如果想先看效果和源码,可以拉到最底部

何时进行最邻近插值

这个算法的特点是

  • 速度非常快速

  • 误差很大

  • 如果缩放系数较大,肯定会有马赛克效果

适合在一些需要实时预览缩放后效果,但是精度要求又不是很高的场景

数学理论

最简单的理论-1对1映射,如图

简单分析如下:

  • 目标插值图中的某像素点(distI, distJ)在原图中的映射为(i + v, j + u)

  • 最终这个点的取值就是(i, j)处的值

  • v,u都小于1(就是进行一次取整)

插值公式

F(i + v, j + u) = f(i, j)

直接映射+取整即可完成取值

代码实现

过于简单,不再赘述,核心就是

运行效果

可参考同系列中的双立方插值中的效果图

三种插值算法的简单比较

纬度 最邻近 双线性 双立方
速度 较慢
质量
质量相比于canvas 远低于 低于 高于
代码实现难度 极易 偏难
适用场景 实时计算 作为默认实现效果 高质量的效果

开源项目

这个项目里用JS实现了几种插值算法,包括(最邻近值,双线性,三次卷积-包括两种不同实现等)

https://github.com/dailc/image-process

上一篇     下一篇
Lichun Dai

Lichun Dai

程序员,偏前端。会点口琴和吉他。

博客 62 项目 2 随笔 107

GitHub 5sing 知乎 segmentfault 掘金