opencv中的resize 函数 的理解以及引申
本文为转载文,原文链接:https://www.cnblogs.com/zvmxvm1991/p/7891394.html
一、什么是resize 函数:
resize函数opencv中专门用来调整图像大小的函数;
opencv 提供五种方法供选择分别是:
a.最近邻插值——INTER_NEAREST;
b.线性插值 ——INTER_LINEAR;(默认值)
c.区域插值 ——INTER_AREA;(利用像素区域关系的重采样插值)
d.三次样条插值——INTER_CUBIC(超过4*4像素邻域内的双三次插值)
e.Lanczos插值——INTER_LANCZOS4(超过8*8像素邻域的Lanczos插值)
一般来说要缩小图像用区域插值(INTER_AREA);要放大图像一般用三次样条插值(INTER_CUBIC)或者线性插值(INTER_LINEAR);
二、resize 5类算法的公式:
以下图来说明假设下图的大小为m*n ,想通过resize 函数把尺度变化为m1*n1;
a.最近邻插值:
b.线性插值(双线性插值):
其中:u v 是相当于放缩后的图像Dst相对于原图像Src中对应位置的小数部分;用的是最近邻插的公式;
c.区域插值: 当放大图像时类似最近邻插值,当缩小图像时候有不同的结果;能有效避免波纹出现;
d.三次样条插值(双三次插值):使用的是4*4邻域的像素双3次插值 从(i-1,j-1)到(i+2,j+2)所有点的插值运算结果公式如下图:
其中S(x)是对 sin(x*pi)/x 的逼近,为插值核;
e.Lanczos插值:
其中:i,j 为缩放前的位置,水平相位值PH0 、PH1、PH2、PH3,垂直相位值PV0、PV1、PV2、PV3。具体如下图所示
三、函数申明格式:
C++:void resize (InputArray src, OutputArray dst,Size dsize,double fx=0;double fy=0,int interpolation=INTER_LINEAR);
第一个参数:为输入图像;
第二个参数:为输出图像;
第三个参数:输出图像的大小;
第四个参数:沿着水平轴的缩放系数;
第五个参数:沿着垂直轴的缩放系数;
第六个参数:插值方式默认为 INTER_LINEAR 线性插值;
四、具体的实验数据结果:
选取图像的数据为3*3矩阵[5,3,1,1,1,1,0,1,0];扩大到6*6的矩阵结果图
选取图像的数据为6*6矩阵缩小到3*3矩阵的结果图
结论:对于放大图像来说方法越复杂,求出来的数据效果越好,同样的计算时间也会提高(后面会验算时间),区域插值结果与最近邻插结果一样;
对于缩小图像来说方法越复杂,求出来的数据效果越好,同样的计算时间也会提高(后面会验算时间),区域插值结果与线性插值结果一样;
五、具体图像运算结果
缩小图像用区域插值;放大图像用三次样条插值(速度慢);线性插值(速度快);
六、算法的具体时间测试,用一张400*400的图像进行测试: 单位是 MS 用的clock_t 函数测试 循环100次然后 折算成MS
缩小成200*200像素图像的测试结果
最近邻插 双插线性 区域插值 双三插值 LANCZOS4
扩大成为 800*800像素图像的测试结果
最近邻插 双插线性 区域插值双三插值 LANCZOS4
PS:如果自己计算会发现结果不正确,根源在于图像中心opencv修正过;修正公式为:
opencv中的resize 函数 的理解以及引申相关推荐
- 【OpenCV】opencv中的resize函数的插值方式
插值方式 resize 函数的介绍 各种插值方式 INTER_NEAREST,最近邻插值法 INTER_LINEAR,双线性插值法 总结 resize 函数的介绍 无论是通过C++来编写opencv, ...
- python opencv resize函数_Python OpenCV中的resize()函数的使用
改变图像大小意味着改变尺寸,无论是单独的高或宽,还是两者.也可以按比例调整图像大小. 这里将介绍resize()函数的语法及实例. 语法 函数原型 cv2.resize(src, dsize[, ds ...
- opencv中的resize函数实现图像插值缩放
如果本文对您有帮助,请帮忙点赞.评论.收藏,感谢! python 为例 一. 函数原型 dst=cv.resize(src, dsize[, dst[, fx[, fy[, interpolation ...
- 使用opencv中的merge()函数为BGR图像添加alpha通道
先上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # 图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 # 图像处理 ...
- opencv中的copyTo函数在opencv-Python中的实现
Opencv中的copyTo()函数在opencv-Python中的实现 copyTo() 函数有两种方式 第一种:src_Image.copyTo(dst_Image),表示将原图复制到目标图中. ...
- 【OpenCV】OpenCV中积分图函数与应用
OpenCV中积分图函数与应用 参考资料 opencv 查找integral,目前网上大部分的资料来自于opencv https://docs.opencv.org/master/d7/d1b/gro ...
- opencv中伪彩色applyColorMap函数(C++ / Python)
opencv中伪彩色applyColorMap函数(C++ / Python) 翻译 2017年06月23日 15:34:12 标签: 1654
- opencv中的approxPolyDP函数和boundingRect函数
opencv中的approxPolyDP函数和boundingRect函数说明 cv2.boundingRect 举例: import numpy as npimage=cv2.imread(&quo ...
- 7.STM32中对DMA_Config()函数的理解(自定义)测试DMA传输数据时CPU还可继续工作其他的事
STM32中对DMA_Config()函数的理解(自定义):
最新文章
- 算法博士平均月入4万,数据可视化技能全球吃香 | 2020年《顶级数据团队建设全景报告》重磅发布...
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- ABAP 程序运行锁
- 执行Hive语句报错:FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Access denied for user '
- SharePoint 调查列表的自定义错误页面
- matlab拟合二元函数图,求助大神。。matlab拟合二元函数,求解系数。函数形式已知...
- 谷歌母公司2019Q1财报出炉,营收增速放缓,盘后大跌7.34%,市值蒸发700亿刀
- 使用javascript生成的植物显示过程特效
- Scrapy爬取小说简单逻辑
- 修改docker内mysql配置后无法启动解决方法
- python项目---数据可视化(02)
- 元胞自动机(又称细胞自动机)
- 切换阿里巴巴开源镜像站镜像——Kali镜像
- codecademy 命令行手册(中英文)
- jnlp文件服务器数据提取,jnlp 项目示例
- 滚动轴承故障检测与诊断(一)
- AI自动识别户型图生成数据建模到3DVR场景解决方案
- 树莓派之无屏幕下发现树莓派IP方法
- 算法图解(一):算法简介
- 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU启动那些事(3)- Serial ISP模式(blhost)