图像插值运算总结

图像插值就是利用已知邻近像素点的灰度值(或RGB图像中的三色值)来产生未知像素点的灰度值,以便由原始图像再生出具有更高分辨率的图像。
图像插值常常用在图像的放缩,旋转等变换中。常用的插值运算有三种:最邻近插值、双线性插值和立方卷积插值(cubic运算)。
假设变换(放缩,旋转等等)前的图像为S,变换后的图像为T。

1. 最邻近插值

【基本思想】
变换后图像T中像素 p(x,y) 映射在原图像S中的点为 p,(x1,y1) ,需要注意的是因为对图像做过变换,所以在原图像中不一定能找到某个像素点和其对应。那么这时候就利用其最近的像素点来填充变换后图像的像素点 p(x,y)
如下图所示,若要插值的点落在 (i,j) , (i+1,j) , (i,j+1) , (i+1,j+1) 。 四个点中间的区域,那么计算该点距离四点的位置来选择用哪个点的灰度来对目标点进行插值。下图中的青色虚线将该区域划分为四个部分,落在A,B,C,D四个区域分别用 (i,j) , (i+1,j) , (i,j+1) , (i+1,j+1) 四个点的灰度进行插值。


这里写图片描述

这种方式计算简单,所以算法的时间复杂度低,实时性能得到了很好的保证。但是因为直接用邻近像素对变换后图像做填充,在放大图像时图像会出现明显的“马赛克”。特别图像的边缘有锯齿状。

2. 双线性插值

【基本思想】
双线性插值并不简单的复制原图像某一个像素点来填充目标图像的像素点,而是将利用目标点映射到原图像中邻近的四个像素点的加权和来填充目标像素点。如下所示:


这里写图片描述

下图中横纵坐标表示的是图像的长度和宽度,Z轴表示的是像素点的灰度值。

利用以下关系可以得到目标点的灰度计算公式:

f(i,j+v)=[f(i,j+1)f(i,j)]v+f(i,j)

同理有:
f(i+1,j+v)=[f(i+1,j+1)f(i+1,j)]v+f(i+1,j)

因此有
f(i+u,j+v)=(1u)(1v)f(x,y)+(1u)vf(i,j+1)+u(iv)f(i+1,j)+uvf(i+1,j+1)

利用上述关系就可以得到目标点的灰度值。相比邻近插值,双线性插值计算上比邻近插值复杂,但是在图像的边缘上明显要优于邻近插值运算的结果。

3. 立方卷积插值

【基本思想】
利用插值函数:

f(x)=sinxx

的三次逼近结果对图像的像素点进行插值。三次逼近结果:

S(x)=12|x|2+|x|348|x|+5|x|2|x|30(|x| <1)(1<|x|<2)(|x|>2)

目标像素的灰度值由邻近16个像素点的加权插值得到:
g(x,y)=f(u,v)=ABCA=[s(1+b)  s(b)  s(1b)  s(2b)]C=[s(1+a)  s(a)  s(1a)  s(2a)]TB=f([u]1,[v]1)f([u],[v]1)f([u]+1,[v]1)f([u]+2,[v]1)f([u1],[v])f([u],[v])f([u]+1,[v])f([u]+2,[v])f([u]1,[v]+1)f([u],[v]+1)f([u]+1,[v]+1)f([u]+2,[v]+1)f([u1],[v]+2)f([u],[v]+2)f([u]+1,[v]+2)f([u]+2,[v]+2)

立方卷积插值运算计算量大,特别是浮点运算很占时间,然而其插值效果非常好,图像的边缘信息保留较好。

4. 对比结果

邻近插值结果

双线性插值结果

立方卷积插值

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空空的司马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值