18.双线性插值缩放算法的matlab与FPGA实现(一)

一篇文章为你讲透双线性插值

简介

1.什么是插值

  图片放大是图像处理中的一个特别基础的操作。几乎在每一个图片相关的项目中,从传统图像处理到i深度学习,都有应用。
  简单来说,插值指利用已知的点来“猜”未知的点,图像领域插值常用在修改图像尺寸的过程,由下图是双线性插值的效果。
在这里插入图片描述

2.常用的插值算法

  插值算法有很多种,这里列出关联比较密切的三种:
    (1)最近邻法(Nearest Interpolation):计算速度最快,但是效果最差。
    (2)双线性插值(Bilinear Interpolation):双线性插值是用原图像中4(2x2)个点计算新图像中1个点,效果略逊于双三次插值,速度比双三次插值快,属于一种平衡美,在很多框架中属于默认算法。
    (3)双三次插值(Bicubic interpolation):双三次插值是用原图像中16(4x4)个点计算新图像中1个点,效果比较好,但是计算代价过大。

插值算法介绍

2.1最近邻法(Nearest Interpolation)

  最近邻算法不需要计算新图像中矩阵中点的数值,直接找到原图像中对应的点,将数值赋值给新图像矩阵中的点,根据对应关系找到原图像中的对应的坐标,这个坐标可能不是整数;这时候找最近的点进行插值。对应关系如下:
在这里插入图片描述
  上图效果是最近邻法的计算过程示意图,由上图可见,最近邻法只是把最外围的像素复制了一遍。最近邻法不需要计算只需要寻找原图中对应的点,所以最近邻法速度最快,但是会破坏原图像中像素的渐变关系,原图像中的值是渐变的,但是在新图像中局部破坏了这种渐变关系。

2.2 双线性插值对应的关系

  双线性插值的对应公式和前面的最近邻法一样,不一样的是根据对应关系不再是找最近的一个点,而是找最近的四个点,如下图所示:
在这里插入图片描述
  这里我们根据四个点来计算一个点,这一个点是根据单线性插值在两个不同方向上计算出来的。下面先介绍以下单线性插值。

2.2.1 单线性插值

已知图像中P1和P2两个点,坐标分别为 ( x 1 , y 1 ) (x1,y1) (x1,y1) ( x 2 , y 2 ) (x2,y2) (x2,y2),要计算 [ x 1 , x 2 ] [x1,x2] [x1,x2]区间内某一位置x在直线上的y值。
在这里插入图片描述
  根据初中的知识,2点求一条直线公式(这是双线性插值所需要的唯一的基础公式)。
y − y 1 x − x 1 = y 2 − y 1 x 2 − x 1 (1) \frac{y-y_1}{x-x_1}=\frac{y_2-y_1}{x_2-x_1}\tag{1} xx1yy1=x2x1y2y1(1)
  经过简单整理成下面的格式:
y = x 2 − x x 2 − x 1 y 1 + x − x 1 x 2 − x 1 y 2 (2) y=\frac{x_2-x}{x_2-x_1}y_1+\frac{x-x_1}{x_2-x_1}y_2\tag{2} y=x2x1x2xy1+x2x1xx1y2(2)
  这里没有写成经典的AX+B的形式,因为这种形式从权重的角度很好理解。
  首先看分子,分子可以看成x与x1和x2的距离作为权重,这也是很好理解的,P点与P1、P2点符合线性变化的关系,所以P离P1近就更接近P1,离P2近就更接近P2。
  现在再把公式中的分式看作是一个整体,原式可以理解成y1和y2的加权系数,如何理解这个加权系数呢,要返回来思考一下,先明确根本目的:我们是要在图像中根据两个已知的像数值求未知点的像数值。这样一个公式是不满足写代码的需求的,图中的y1和y2分别代表原图像中的像素值,上面的公式可以写成如下格式。
f ( P ) = x 2 − x x 2 − x 1 f ( P 1 ) + x − x 1 x 2 − x 1 f ( P 2 ) (3) f(P)=\frac{x_2-x}{x_2-x_1}f(P_1)+\frac{x-x_1}{x_2-x_1}f(P_2)\tag{3} f(P)=x2x1x2xf(P1)+x2x1xx1f(P2)(3)

2.2.2 双线性插值

  已知 Q 11 ( x 1 , y 1 ) 、 Q 12 ( x 1 , y 2 ) 、 Q 2 , 1 ( x 2 , y 1 ) 、 Q 22 ( x 2 , y 2 ) Q_{11}(x_1,y_1)、Q_{12}(x_1,y_2)、Q_{2,1}(x_2,y_1)、Q_{22}(x_2,y_2) Q11(x1,y1)Q12(x1,y2)Q

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值