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

1、resize函数简介

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

参数含义

参数含义:
InputArray src     -原图像
OutputArray dst    -输出图像
Size dsize         -目标图像的大小
double fx=0        -在x轴上的缩放比例
double fy=0        -在y轴上的缩放比例
int interpolation  -插值方式,有以下5种方式 INTER_NEAREST      -最近邻插值
INTER_LINEAR       -双线性插值 (默认使用)
INTER_AREA         -区域插值。
INTER_CUBIC        -三次样条插值,也叫立方插值(超过4*4像素邻域内的双三次插值)
INTER_LANCZOS4     -Lanczos插值(超过8*8像素邻域的Lanczos插值)

2、算法对比

算法 INTER_NEAREST INTER_LINEAR INTER_CUBIC INTER_LANCZOS4 INTER_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速度较快,效果一般,其会抑制图像信号中的高频分量(即图像边缘会变模糊)。对于要求不高的场景,可以考虑此算法,但是如果需要最大限度的保留图像中的边缘与其他特征(如角点等),且对程序的效率要求并不是很苛刻,则不建议优先使用此算法。

OpenCV中resize()函数的插值方式对比相关推荐

  1. 【OpenCV】opencv中的resize函数的插值方式

    插值方式 resize 函数的介绍 各种插值方式 INTER_NEAREST,最近邻插值法 INTER_LINEAR,双线性插值法 总结 resize 函数的介绍 无论是通过C++来编写opencv, ...

  2. opencv中resize函数

    opencv中的resize函数有多种用法: 1,图像缩放 opencv帮助文档中对resize函数的介绍: src 输入图 dst 输出图,形态和输入图相同,当dsize不等于0,输出图尺寸会和ds ...

  3. OpenCV中resize函数五种插值算法的实现过程

    最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻.双线性.双三次.基于像素区域关系.兰索斯插值.下面用for循环代替cv::resize函数来说明其详细的插值实现过程,其 ...

  4. 关于Opencv中Filter2D函数的补全方式

    目录 关于Opencv中Filter2D函数的补全方式 环境 验证 C++举例 Python举例 关于Opencv中Filter2D函数的补全方式 环境 OpenCV3.4.16(C++) openc ...

  5. OpenCV中flip函数实现

    一.flip()函数原型介绍 void cv::flip(InputArray src,OutputArray dst, int flipCode) 各参数含义 src:输入图像. dst:输出图像. ...

  6. OpenCV中initUndistortRectifyMap函数存在bug原因探究

    原文首发于公众号「3D视觉工坊」:OpenCV中initUndistortRectifyMap函数存在bug原因探究. 最近在运行如下一段代码时,生成的mapx和mapy有点异常. 代码片段如下: # ...

  7. imfilter c语言,opencv中cvFilter2D( ) 函数filter2D()函数与MATLAB中imfilter()函数的差异...

    出处: 1:cvFilter2D() 函数为opencv中c语言函数 2:filter2D()函数为opencv中c++函数 3:imfilter()函数为matlab版本函数 计算结果的异同: 2( ...

  8. Opencv中直方图函数calcHist

    Opencv中直方图函数calcHist calcHist函数在Opencv中是极难理解的一个函数,一方面是参数说明晦涩难懂,另一方面,说明书给出的实例也不足以令人完全搞清楚该函数的使用方式.最难理解 ...

  9. 转载:opencv中imshow函数运行中断的解决办法

    OpenCV中 imshow函数运行中断的解决方法 羊和咩咩 2017-03-10 16:00:49 5919 收藏 最后发布:2017-03-10 16:00:49首发:2017-03-10 16: ...

最新文章

  1. C# - Marshal 学习总结
  2. 6个信号提醒是时候跳槽了 CIO务必get到
  3. js字符串replace替换多个_汇总几大python常见字符串处理函数与用法(建议收藏)...
  4. 流行趋势-立体感和艺术剪纸风海报美妆设计
  5. 各大公司(Google,Microsoft,Baidu, Microsoft Research Asia etc.)实习生面试题总汇
  6. python 函数
  7. 修改navigationbar右侧按钮离屏幕边缘位置
  8. java简单的数据库查询(SQLServer数据库)
  9. python爬虫毕业论文大纲参考模板_毕业论文大纲参考模板.docx
  10. 向PDF写入签名日期
  11. R语言加载UCI糖尿病数据集、并启动Rattle GUI、调用party包中的ctree函数构建条件推理树模型、Rattle混淆矩阵、使用R自定义编写函数通过混淆矩阵计算特异度、敏感度、PPV、NPV
  12. 核心路由器市场分析:07回顾以及08展望
  13. 公考二十四节气考点汇总
  14. 重庆理工大学计算机转专业,2020年重庆理工大学转专业,大一新生转专业和入学考试...
  15. 【终结扩散模型】Consistency Models.OpenAI开源新模型代码,一步成图,1秒18张
  16. 车牌识别分割定位_解析车牌识别系统有什么优势?
  17. C语言键盘方向键的读入
  18. java毕业设计项目基于JavaWeb酒店管理系统开发与设计
  19. html 串行通信接口,一种串行通信接口的级联方法与流程
  20. 名表依波路borel_borel手表是什么牌子

热门文章

  1. 化石能源类有哪些最新发表的毕业论文呢?
  2. HTML标签语义化,已整理成文档
  3. 深度揭秘阿里(蚂蚁金服)技术面试流程!附前期准备,学习方向
  4. 实战 抓取安徽省所有市、县、镇矢量坐标数据
  5. 如何上传图片到阿里云服务器上
  6. 流量卡官网源码有后台带文章系统
  7. 从零开始学VUE之Webpack(Html打包插件的使用)
  8. 亚里士多德的现代意义
  9. matlab的Scope 的工具栏显示出来
  10. 群晖设置存储空间和共享文件夹