博客
关于我
OpenCv 金字塔之上采样与下采样
阅读量:602 次
发布时间:2019-03-13

本文共 1490 字,大约阅读时间需要 4 分钟。

图像金字塔与上下采样技术


一、图像金字塔的两大类别

在图像处理领域,金字塔分为两大类,主要用于不同的应用场景:

  • 高斯金字塔(Gaussian Pyramid)

    高斯金字塔的主要作用是对图像进行降采样,这与我们通常的金字塔概念相反。降采样是通过从底层图像向上采样逐步构建而成的。简言之,高斯金字塔是在逐步降低图像分辨率的过程中生成的。

  • 拉普拉斯金字塔(Laplacian Pyramid)

    拉普拉斯金字塔则具有相反的功能——从底层图像中重建上层未采样图像。在数字图像处理中,这类金字塔用于预测残差,并能够对图像实现最大程度的还原。拉普拉斯金字塔通常与高斯金字塔结合使用。

  • 两者的核心区别

    • 高斯金字塔:用于对图像逐次降采样,新生成的图像分辨率比原图低。
    • 拉普拉斯金字塔:用于从底层图像重建原始高分辨率图像,可实现某种程度的图像修复或还原。

    金字塔的构建原理

    构建金字塔时,我们可以遵循以下步骤:

  • 从G_0生成G_1:对G_0层图像进行高斯卷积(使用核值计算),然后剔除偶数行和偶数列,最终得到面积为原始图像四分之一的G_1层。

  • 逐层向上构建:重复上述过程,将金字塔逐层构建完毕。

  • 在实际操作中,OpenCV为我们提供了pyrDownpyrUp两个函数,分别用于金字塔的下采样和上采样。


    二、pyrUp()函数:上采样与高斯平滑

    • 函数原型void pyrUp(InputArray src, OutputArray dst, const Size& dstsize=Size())

    • 功能作用:对输入图像先进行上采样(行列方向放大一倍),然后进行高斯平滑。

    • 尺寸参数

      • 默认尺寸为Size(src.cols*2, src.rows*2),如果自定义尺寸需满足以下条件:
        • |dstsize.width - src.cols * 2| ≤ (dstsize.width mod 2)
        • |dstsize.height - src.rows * 2| ≤ (dstsize.height mod 2)
    • 实际过程

      • 上采样导致面积增大四倍,因此高斯核需乘以4以保持平滑效果。
      • 该函数既是放大一倍的前置处理,也是高斯变换的前置操作。

    三、pyrDown()函数:降采样与高斯平滑

    • 函数原型void pyrDown(InputArray src, OutputArray dst, const Size& dstsize=Size())

    • 功能作用:先对图像进行高斯平滑,然后对其进行降采样(行列方向缩减一半)。

    • 尺寸参数

      • 默认尺寸为Size((src.cols+1)/2, (src.rows+1)/2),但需满足以下条件:
        • |dstsize.width * 2 - src.cols| ≤ 2
        • |dstsize.height * 2 - src.rows| ≤ 2
    • 实际过程

      • 把当前图像高斯平滑后,逐行或逐列删除偶数行和偶数列,最终得到缩放一半的图像。
      • 降采样最终导致图像的分辨率降低,可能带来锯齿状失真,因此高斯平滑是必要的。

    四、图像尺度调整

    在图像处理中,常需要对图像的尺寸进行调整。OpenCV中的resize函数为此提供了强有力的支持,能够根据需求实现图像的放大或缩小。

    • 缩小图像的最佳方式:使用CV_INTER_AREA区域插值,能够保持图像的连续性,适合细节不敏感的场景。
    • 放大图像的最佳方式:使用CV_INTER_LINEAR线性插值,能够捕捉图像的细节变化,适合放大时需保持清晰的场景。

    这份讲解涵盖了从金字塔构建到尺寸调整的核心知识点,希望对图像处理爱好者有一定的帮助!

    转载地址:http://qekaz.baihongyu.com/

    你可能感兴趣的文章
    00013.05 字符串比较
    查看>>
    javaEE003.03 jQuery:基本选择器、层次选择器
    查看>>
    IEDA全局搜索快捷键 Ctrl+shift+F无效的原因、 eclipse:Ctrl + h 进行全局搜索
    查看>>
    LeetCode: 138. 复制带随机指针的链表(中等)[DFS, 迭代]
    查看>>
    微信小程序 数据列表点击会有提示
    查看>>
    Effective Java 读书笔记
    查看>>
    JVM 学习笔记十三、垃圾回收概述
    查看>>
    Rsync + Intofy 数据实时同步方案
    查看>>
    No.3.1_11 JavaSE入门 P10 【常用API】数组排序和Arrays工具类、包装类、Date
    查看>>
    Shiro RememberMe 1.2.4 反序列化漏洞(Shiro-550, CVE-2016-4437)复现
    查看>>
    tomcat启动时遇到Error starting child和404时
    查看>>
    使用jieba时的bug
    查看>>
    Method com/mysql/jdbc/ResultSet.isClosed()Z is abstract
    查看>>
    SpringBoot使用@Email报错误
    查看>>
    SpringBoot之国际化
    查看>>
    Maven 输入依赖名字不提示
    查看>>
    Rabbitmq的内存磁盘监控
    查看>>
    访问servlet时弹出文件下载框解决方法
    查看>>
    IDEA中同时push项目到gitee和github
    查看>>
    tinyproxy正向代理
    查看>>