文章目录

  • 图像金字塔
    • 1.1高斯金字塔(Gaussian pyramid)
    • 代码
    • 1.2拉普拉斯金字塔(Laplacian pyramid)

图像金字塔

图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。

常见两类图像金字塔:

  • 高斯金字塔 ( Gaussian pyramid): 用来向下/降采样,主要的图像金字塔
  • 拉普拉斯金字塔(Laplacian pyramid): 用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。


两者的简要区别:高斯金字塔用来向下采样图像,注意降采样其实是由金字塔底部向上采样,分辨率降低,它和我们理解的金字塔概念相反(注意);而拉普拉斯金字塔则用来从金字塔底层图像中向上采样重建一个图像。

要从金字塔第i层生成第i+1层(我们表示第i+1层为Gi+1G_{i+1}Gi+1​),我们先要用高斯核对GiG_iGi​进行卷积,然后删除所有偶数行和偶数列。新得到图像面积会变为源图像的四分之一。按上述过程对输入图像G0G_0G0​执行操作就可产生出整个金字塔。

当图像向金字塔的上层移动时,尺寸和分辨率就降低。OpenCV中,从金字塔中上一级图像生成下一级图像的可以用PryDown。而通过PryUp将现有的图像在每个维度都放大两遍。

图像金字塔中的向上和向下采样分别通过OpenCV函数 pyrUp 和 pyrDown 实现。概括起来就是:

  • 对图像向上采样:pyrUp函数
  • 对图像向下采样:pyrDown函数

这里的向下与向上采样,是对图像的尺寸而言的(和金字塔的方向相反),向上就是图像尺寸加倍,向下就是图像尺寸减半。而如果我们按上图中演示的金字塔方向来理解,金字塔向上图像其实在缩小,这样刚好是反过来了。

但需要注意的是,PryUp和PryDown不是互逆的,即PryUp不是降采样的逆操作。这种情况下,图像首先在每个维度上扩大为原来的两倍,新增的行(偶数行)以0填充。然后给指定的滤波器进行卷积(实际上是一个在每个维度都扩大为原来两倍的过滤器)去估计“丢失”像素的近似值。PryDown( )是一个会丢失信息的函数。为了恢复原来更高的分辨率的图像,我们要获得由降采样操作丢失的信息,这些数据就和拉普拉斯金字塔有关系了。

1.1高斯金字塔(Gaussian pyramid)

高斯金字塔是通过高斯平滑和亚采样获得一系列下采样图像,也就是说第K层高斯金字塔通过平滑、亚采样就可以获得K+1层高斯图像,高斯金字塔包含了一系列低通滤波器,其截至频率从上一层到下一层是以因子2逐渐增加,所以高斯金字塔可以跨越很大的频率范围。

  • 向下采用:

得到的图像即为Gi+1G_{i+1}Gi+1​的图像,显而易见,结果图像只有原图的四分之一。通过对输入图像GiG_iGi​(原始图像)不停迭代以上步骤就会得到整个金字塔。同时我们也可以看到,向下取样会逐渐丢失图像的信息。以上就是对图像的向下取样操作,即缩小图像。

  • 向上采用:
    得到的图像即为放大后的图像,但是与原来的图像相比会发觉比较模糊,因为在缩放的过程中已经丢失了一些信息,如果想在缩小和放大整个过程中减少信息的丢失,这些数据形成了拉普拉斯金字塔。

代码

img=cv2.imread("AM.png")
#shape值:(442, 340, 3)
#上采样
up=cv2.pyrUp(img)
#shape值:(884, 680, 3)#下采样
down=cv2.pyrDown(img)
#shape值:(221, 170, 3)#先上采样再下采样之后能不能恢复图像
up=cv2.pyrUp(img)
up_down=cv2.pyrDown(up)

通过下图可以看出左边的原图与右边经过上采样到下采样恢复之后的图是不清楚的(失去了信息)。

1.2拉普拉斯金字塔(Laplacian pyramid)


GiG_iGi​表示第i层图像,G0G_0G0​表示图像的输入,经过1(低通滤波),2(缩小尺寸)到G1G_1G1​(PyrDown操作)

down=cv2.pyrDown(img)
down_up=cv2.pyrUp(down)
l_1=img-down_up
cv_show(l_1,'l_1')

注意:上采样和下采样是非线性处理,不可逆,有损的处理!

opencv-图像金字塔相关推荐

  1. Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()

    Python,OpenCV图像金字塔cv2.pyrUp, cv2.pyrDown 1. 效果图 2. 原理 2.1 什么是图像金字塔 2.2 金字塔分类 2.3 应用 3. 源码 参考 这篇博客将介绍 ...

  2. OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔总结

    我们经常会将某种尺寸的图像转换为其他尺寸的图像,如果放大或者缩小图片的尺寸,笼统来说的话,可以使用OpenCV为我们提供的如下两种方式: <1> resize函数.这是最直接的方式, &l ...

  3. OpenCV图像金字塔pyrDown和pyrUp的实例(附完整代码)

    OpenCV图像金字塔pyrDown和pyrUp的实例 OpenCV图像金字塔pyrDown和pyrUp的实例 OpenCV图像金字塔pyrDown和pyrUp的实例 #include "i ...

  4. 【OpenCV新手教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放...

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  5. 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/26157633 作者:毛星云(浅墨) ...

  6. opencv 图像金字塔及图像重建、融合

    一.图像金字塔 关于图像金字塔的介绍,这里推荐一篇毛星云写的博客 OpenCV图像金字塔:高斯金字塔.拉普拉斯金字塔与图片尺寸缩放,是基于<OpenCV3编程入门>中图像金字塔部分编写,基 ...

  7. opencv图像金字塔的介绍

    1.学习目标: 掌握opencv图像金字塔的原理 学习内容: 1.什么是图像金字塔? 2.图像金字塔有什么用? 3.图像金字塔实现方式 学习产出: 1. 什么是图像金字塔? 图像金字塔(如图 1 所示 ...

  8. OpenCV 图像金字塔buildPyramid、pyrDown、pyrUp

    返回OpenCV算子速查表 升采样 pyrDown,降采样 pyrUp,图像金字塔buildPyramid 1. 函数定义 1.1 降采样 pyrDown 1.2 升采样 pyrUp 1.3 buil ...

  9. FCN全卷积网络—upsampling(上采样)——OpenCV图像金字塔

    一.上采样理论 1.1 bilinear 1.2 Deconvolution(反卷积) 1.3 unpooling 二.OpenCV金字塔:高斯金字塔.拉普拉斯金字塔与图片缩放 一.上采样理论 FCN ...

  10. openCV——图像金字塔

    图像金字塔 理论基础 通常情况下,图像金字塔的底部是待处理的高分辨率图像(原始图像),而顶部则为其低 分辨率的近似图像.向金字塔的顶部移动时,图像的尺寸和分辨率都不断地降低.通常情况下, 每向上移动一 ...

最新文章

  1. 互联网大厂月饼哪家强?我看了之后,口水流了一地!
  2. VS2010 MFC中 单独添加ODBC数据库记录集类(CRecordset)方法
  3. react技术栈实践(1)
  4. 除了盖泡面,kindle还可以帮你提高科研效率
  5. GDCM:读取和转储DICOMDIR文件的测试程序
  6. 想成为BAT中的一员,你总要去学点什么(二)
  7. 5种iterator
  8. P3275 [SCOI2011]糖果
  9. IOS基础学习日志(七)利用dispatch_once创建单例及使用
  10. MySQL复制以及调优
  11. 110个oracle常用函数总结(7),oracle110个最常用函数
  12. ROVIO安装运行及保存轨迹用evo评估
  13. 计算机word上下左右边距,Word页边距调整设置(上下左右边距,2003-2013)
  14. 运用卡方检验(独立性检验)来分析问卷的两个问题之间的关联性
  15. vue的一些心得总结
  16. 合格前端系列第十弹-揭秘组件库一二事
  17. MODBUS通信系列之数据处理
  18. itextpdf text转pdf
  19. pytorch repeat使用
  20. 常见的Web应用中间件(基于Linux)

热门文章

  1. mysql财务能做什么_财务能为企业做些什么?
  2. 知乎下拉刷新SwipeRefreshLayout下拉刷新用法类似知乎下拉刷新
  3. 进腾讯了,38k....
  4. windows server的安全性
  5. win10安装方法(可以不需要激活)
  6. 【多少个星期天】Python
  7. 窄带物联网和物联网有什么区别?
  8. windows server 2012/2016如何禁止某个ip或者ip地址段访问
  9. 区块链技术研究综述:原理、进展与应用
  10. obs媒体源没有声音_obs直播教程(安卓obs手机直播)