resize插值方式

OpenCV中resize()函数的插值方式对比 - CodeAntenna

在进行图像缩放过程中,opencv中的resize函数是最常用的,其速度相对较快,只需要一行代码即可。此函数中提供5种缩放插值的方法。在下文中将进行对比。

1、resize函数简介

void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );

参数含义

 

2、算法对比

算法INTER_NEARESTINTER_LINEARINTER_CUBICINTER_LANCZOS4INTER_AREA
主要思想用距离采样点最近的像素值最为采样点的灰度值用双线性方式计算采样点周围的4个点,计算其灰度值根据采样点的周围16个像素值的双线性关系以及像素变化率,计算出采样点的灰度值在x,y方向分别对相邻的八个点进行插值,也就是计算加权和,傅立叶变换有关的三角函数的方法使用像素区域关系进行重采样,图像放大时类似于双线性插值,缩放时类似于最近邻插值
锯齿现象不可避免可避免可避免可避免可避免
周围像素未考虑未考虑已考虑已考虑已考虑
速度最快较快一般较慢最慢
  1. 为考虑图像的分辨率,尤其是INTER_AREA、INTER_CUBIC和INTER_LANCZOS4插值,图像分辨率的大小对其有一定的影响,一般情况INTER_AREA效率低一些;
  2. 算法运行过程中,opencv内部进行了优化,所以实际时间有些许波动;
  3. 测试过程中,硬件设备的干扰;

3、总结

    如果缩小图像,INTER_AREA插值效果最好,而且可以有效防止产生波纹现象,如果放大图像,通常使用INTER_CUBIC或是INTER_LANCZOS4,此两种方法速度较慢,但效果相对较好。尽管INTER_NEAREST算法相当快,但使其效果大打折扣,一般很少使用。
    值得注意的是INTER_LINEAR速度较快,效果一般,其会抑制图像信号中的高频分量(即图像边缘会变模糊)。对于要求不高的场景,可以考虑此算法,但是如果需要最大限度的保留图像中的边缘与其他特征(如角点等),且对程序的效率要求并不是很苛刻,则不建议优先使用此算法。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值