MATLAB:图像旋转与插值并比较前后MSE

本文介绍了图像旋转为何需要插值,详细探讨了最近邻、双线性和双三次插值方法,并对比了前向映射与后向映射的优缺点。通过MATLAB实现图像旋转实验,计算旋转前后的MSE,揭示了插值对图像质量的影响。
摘要由CSDN通过智能技术生成

为什么图像旋转需要插值?

图像旋转或者放大后,原本大小将发生改变,需要对一些新的像素点进行计算。MATLAB自带函数imrotate()可以实现图像旋转(MATLAB使用双三次插值)。感兴趣还可以了解flipdim、mirror、transp等函数。

常用的插值方法

最近邻插值

在一维空间中,最近邻插值就相当于四舍五入取整。在二维图像中,像素点的坐标都是整数,该方法就是选取离目标点最近的点。
最近相邻插值算法的优点是计算量很小,算法也简单,因此运算速度较快。但它仅使用离待测采样点最近的像素的灰度值作为该采样点的灰度值,而没考虑其他相邻像素点的影响,因而重新采样后灰度值有明显的不连续性,图像质量损失较大,会产生明显的马赛克和锯齿现象。最近邻插值
例如:我们约定,使用左/上原有像素点对放大的图像插值,将得到类似的结果。

双线性插值

两次线性插值算法(Bilinear Interpolation)是一种通过平均周围像素颜色值来添加像素的方法。该方法可生成中等品质的图像。

两次线性插值算法输出的图像的每个像素都是原图中四个像素(2×2)运算的结果,由于它是从原图四个像素中运算的,因此这种算法很大程度上消除了锯齿现象,而且效果也比较好。只是计算量稍大一些,但缩放后图像质量高,基本克服了最近邻插值法灰度值不连续的特点,因为它考虑了待测采样点周围四个直接邻点对该采样点的相关性影响。

但是,此方法仅考虑待测样点周围四个直接邻点灰度值的影响,而未考虑到各邻点间灰度值变化率的影响,因此具有低通滤波器的性质,从而导致缩放后图像的高频分量受到损失,图像边缘在一定程度上变得较为模糊。

双线性插值
在这里插入图片描述
可以直观地像上图那样理解双线性插值。
在这里插入图片描述
严谨的计算公式:
f ( i + u , j + v ) = ( 1 − u ) ( 1 − v ) f ( i , j ) + ( 1 − u ) v f ( i , j + 1 ) + u ( 1 − v ) f ( i + 1 , j ) + u v f ( i + 1 , j + 1 ) f( i+u, j+v)=(1-u)(1-v) f(i,j) + (1-u) v f(i,j+1) + u (1-v) f( i+1,j ) + u v f( i+1, j+1) f(i+u,j+v)=(1u)(1v)f(i,j)+(1u)vf(i,j+1)+u(1v)f(i+1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值