opencv中的resize 函数 的理解以及引申[通俗易懂]

一、什么是resize函数:  resize函数opencv中专门用来调整图像大小的函数;  opencv提供五种方法供选择分别是:                   a.最近邻插值——INTER_NEAREST;                   b.线性插值——INTER_LINEAR;(默认值)                   c.区域插值——IN…

大家好,又见面了,我是你们的朋友全栈君。

一、什么是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.最近邻插值:

                       opencv中的resize 函数 的理解以及引申[通俗易懂]                      opencv中的resize 函数 的理解以及引申[通俗易懂]

 

  b.线性插值(双线性插值):

            opencv中的resize 函数 的理解以及引申[通俗易懂]

                                                                其中:u v 是相当于放缩后的图像Dst相对于原图像Src中对应位置的小数部分;用的是最近邻插的公式;

 

  c.区域插值:  当放大图像时类似最近邻插值,当缩小图像时候有不同的结果;能有效避免波纹出现;

 

      d.三次样条插值(双三次插值):使用的是4*4邻域的像素双3次插值  从(i-1,j-1)到(i+2,j+2)所有点的插值运算结果公式如下图:

opencv中的resize 函数 的理解以及引申[通俗易懂]

 

          opencv中的resize 函数 的理解以及引申[通俗易懂]

                                                             其中S(x)是对 sin(x*pi)/x  的逼近,为插值核;

  e.Lanczos插值:

opencv中的resize 函数 的理解以及引申[通俗易懂]

                              其中:i,j 为缩放前的位置,水平相位值PH0 、PH1、PH2、PH3,垂直相位值PV0、PV1、PV2、PV3。具体如下图所示

opencv中的resize 函数 的理解以及引申[通俗易懂]

三、函数申明格式:

  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的矩阵结果图

  opencv中的resize 函数 的理解以及引申[通俗易懂]  opencv中的resize 函数 的理解以及引申[通俗易懂]  opencv中的resize 函数 的理解以及引申[通俗易懂] opencv中的resize 函数 的理解以及引申[通俗易懂]opencv中的resize 函数 的理解以及引申[通俗易懂]opencv中的resize 函数 的理解以及引申[通俗易懂]

  

选取图像的数据为6*6矩阵缩小到3*3矩阵的结果图

  opencv中的resize 函数 的理解以及引申[通俗易懂]  opencv中的resize 函数 的理解以及引申[通俗易懂]  opencv中的resize 函数 的理解以及引申[通俗易懂] opencv中的resize 函数 的理解以及引申[通俗易懂] opencv中的resize 函数 的理解以及引申[通俗易懂]

 

 

opencv中的resize 函数 的理解以及引申[通俗易懂]

 

 

 

 

   结论:对于放大图像来说方法越复杂,求出来的数据效果越好,同样的计算时间也会提高(后面会验算时间),区域插值结果与最近邻插结果一样;

      对于缩小图像来说方法越复杂,求出来的数据效果越好,同样的计算时间也会提高(后面会验算时间),区域插值结果与线性插值结果一样;

 

五、具体图像运算结果

opencv中的resize 函数 的理解以及引申[通俗易懂]

 

 

 

 

    缩小图像用区域插值;放大图像用三次样条插值(速度慢);线性插值(速度快);

六、算法的具体时间测试,用一张400*400的图像进行测试:  单位是 MS  用的clock_t  函数测试  循环100次然后 折算成MS

缩小成200*200像素图像的测试结果

  最近邻插opencv中的resize 函数 的理解以及引申[通俗易懂]   双插线性 opencv中的resize 函数 的理解以及引申[通俗易懂] 区域插值opencv中的resize 函数 的理解以及引申[通俗易懂]  双三插值 opencv中的resize 函数 的理解以及引申[通俗易懂]  LANCZOS4opencv中的resize 函数 的理解以及引申[通俗易懂]

 

 

 

扩大成为 800*800像素图像的测试结果

 

 最近邻插opencv中的resize 函数 的理解以及引申[通俗易懂] 双插线性 opencv中的resize 函数 的理解以及引申[通俗易懂]区域插值opencv中的resize 函数 的理解以及引申[通俗易懂]双三插值 opencv中的resize 函数 的理解以及引申[通俗易懂]LANCZOS4opencv中的resize 函数 的理解以及引申[通俗易懂]

 

 

 

    

 

  

  PS:如果自己计算会发现结果不正确,根源在于图像中心opencv修正过;修正公式为:

opencv中的resize 函数 的理解以及引申[通俗易懂]

 

  

 

 

 

 

 

 

  

 

 

 

 

 

 

 

  

 

转载于:https://www.cnblogs.com/zvmxvm1991/p/7891394.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/129410.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Linode 遭受大规模DDoS攻击

    Linode 遭受大规模DDoS攻击美国当地时间12月29日,专用虚拟服务器提供商Linode遭到DDoS攻击,截至到本文发布时其web服务的访问仍受影响,其中API调用和管理功能依然部分不可用。Linode称正在努力尽快恢复正常访问服务。\\早在2013年就有过Linode就遭到大规模DDoS攻击。在HackNews上的讨论中,有人认为Linode在安全建设方面多有疏忽,并且和ISP缺乏配合,从而导致此次DDoS攻击影响过甚。\…

  • css3颜色渐变_灰色渐变图片

    css3颜色渐变_灰色渐变图片Document*{margin:0;padding:0}.words{font-size:25px;font-weight:700;text-align:center;margin:20px0}div{width:300px;height:150px;margin:0auto10px;border:1pxsolid#ddd;}.box1{background:-webkit-linea…

    2022年10月26日
  • leetcode-78子集[通俗易懂]

    leetcode-78子集[通俗易懂]给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]] 提示:1 <= nums.length <= 10-10 <= nums[i] <= 10nums 中的所有元素 互

  • DHCP协议解析

    DHCP协议解析DHCP(DynamicHostConfigurationProtocol,动态主机配置协议)是IETF为实现IP的自动配置而设计的协议,它可以为客户机自动分配IP地址、子网掩码以及缺省网关、DNS服务器的IP地址等TCP/IP参数。了解DHCP工作过程可以帮助我们排除有关DHCP服务遇到的问题。DHCP协议是基于UDP层之上的应用,本文结合抓报所得数据分析DHCP协议实现原理一、

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号