1.  什么是图像金字塔

图像金字塔是图像处理和计算机视觉中常用到的概念,常常用于多尺度处理领域(multiscale processing),尤其早年的图像匹配、识别、图像分割等算法中都用到了图像金字塔。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的表示。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。

2. 图像金字塔的分类

2.1 高斯金字塔(Gaussian pyramid):

金字塔的底层为原始图像,每向上一层则是通过高斯滤波和1/2采样得到(去掉偶数行和列),主要是用来下采样(cv2.pyrDown())的。

金字塔为一层一层的图像,层级越高,图像越小。

  • 每一层都按从下到上的次序编号, 层级  (表示为  尺寸小于层级  ())。

  • 为了获取层级为  的金字塔图像,我们采用如下方法:

    • 将  与高斯内核卷积:

    • 将所有偶数行和列去除。

  • 显而易见,结果图像只有原图的四分之一。通过对输入图像  (原始图像) 不停迭代以上步骤就会得到整个金字塔.

2.2 拉普拉斯金字塔(Laplacian pyramid):

在进行高斯金字塔运算时,由于不断的进行高斯滤波和下采样,我们丢失了很多高频信号,而拉普拉斯金字塔的目的就是保存这些高频信号,保存这些高频信号所采用的方式就是保存差分图像。比如,拉普拉斯金字塔的第0层,就是原始图像和原始图像下采样(Reduce)后再次上采样 cv2.pyrUp()(Expand)的图像的差值。用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。

上采样:将图像在每个方向扩大为原来的两倍,新增的行和列以0填充;使用先前同样的内核(乘以4)与放大后的图像卷积,获得 “新增像素”的近似值,得到的图像即为放大后的图像,但是与原来的图像相比会发觉比较模糊,因为在缩放的过程中已经丢失了一些信息,如果想在缩小和放大整个过程中减少信息的丢失,将原始图像和下采样再上采样后的图像做差值,这些数据形成了拉普拉斯金字塔。

2.3 DOG金字塔(差分金字塔)

DOG(Difference of Gaussian)金字塔是在高斯金字塔的基础上构建起来的,其实生成高斯金字塔的目的就是为了构建DOG金字塔。DOG金字塔的第1组第1层是由高斯金字塔的第1组第2层减第1组第1层得到的。以此类推,逐组逐层生成每一个差分图像,所有差分图像构成差分金字塔。概括为DOG金字塔的第0组第l层图像是由高斯金字塔的第0组第i+1层减第0组第i层得到的。

注:上采样cv2.pyrUp()函数和下采样cv2.pyrUp()函数中输入图像的宽、高必须一样,不然会报错。

cv2.pyrDown(src, dst=None, dstsize=None, borderType=None)  上采样参数同下采样。

参数说明: 1. src 输入图像 2. dst 输出图像 3. dstsize 输出图像的大小 4. borderTypre 边界处理方式。

3. 代码实现:

import cv2 as cv
import numpy as np# 图像金字塔和拉普拉斯金字塔(L1 = g1 - expand(g2)):reduce:高斯模糊+降采样,expand:扩大+卷积
# PyrDown降采样,PyrUp还原
def pyramid_demo(image):level = 3temp = image.copy()pyramid_images = []for i in range(level):dst = cv.pyrDown(temp)pyramid_images.append(dst)# cv.imshow("pyramid_down_"+str(i+1), dst)temp = dst.copy()return pyramid_imagesdef laplace_demo(image):  # 注意:图片必须是宽、高一样pyramid_images = pyramid_demo(image)level = len(pyramid_images)for i in range(level-1, -1, -1):if i-1 < 0:           # 对原图进行处理expand  = cv.pyrUp(pyramid_images[i], dstsize=image.shape[:2])lpls = cv.subtract(image, expand)cv.imshow("laplace_demo"+str(i), lpls)else:expand = cv.pyrUp(pyramid_images[i], dstsize=pyramid_images[i-1].shape[:2])lpls = cv.subtract(pyramid_images[i-1], expand)cv.imshow("laplace_demo"+str(i), lpls)if __name__ == '__main__':src = cv.imread("../images/lena.jpg")  # 读入图片放进src中# cv.imshow("demo", src)  # 将src图片放入该创建的窗口中# pyramid_demo(src)laplace_demo(src)cv.waitKey(0) # 等有键输入或者1000ms后自动将窗口消除,0表示只用键输入结束窗口cv.destroyAllWindows()  # 关闭所有窗口

15. 图像金字塔-高斯金字塔、拉普拉斯金字塔、DOG金字塔相关推荐

  1. Sift中尺度空间、高斯金字塔、差分金字塔(DOG金字塔)、图像金字塔

    本文为转发文章,只作私人记录用途.原文及其相关讨论请移步: https://blog.csdn.net/dcrmg/article/details/52561656 一. 图像金字塔 图像金字塔是一种 ...

  2. OpenCV图像处理学习十三,图像金字塔——高斯金字塔和拉普拉斯金字塔

    一.图像金字塔概念 我们在图像处理中常常会调整图像大小,最常见的就是放大(zoom in)和缩小(zoom out),尽管几何变换也可以实现图像放大和缩小,但是这里我们介绍图像金字塔 . 一个图像金字 ...

  3. 图像金字塔、高斯金字塔、差分金字塔(DOG金字塔)、尺度空间、DoG (Difference of Gaussian)角点检测

    [图像金字塔] 图像金字塔是一种以多分辨率来解释图像的结构,通过对原始图像进行多尺度像素采样的方式,生成N个不同分辨率的图像.把具有最高级别分辨率的图像放在底部,以金字塔形状排列,往上是一系列像素(尺 ...

  4. opencv学习(二十六)之图像金字塔(高斯金字塔、拉普拉斯金字塔)

    在进行数字图像处理时,我们可能会需要将某种尺寸的图像转换为其他尺寸的图像,这样会存在放大图像核缩小图像两种可能.opencv提供了一个真正意义上的图像所方函数resize(),但在本篇中主要学习以下使 ...

  5. OpenCV中的图像金字塔(高斯金字塔、拉普拉斯金字塔)

    最近在看关于数字图像的知识点,目前在图像金字塔部分,实在是懒得用手作笔记了,就以其中比较出名的"高斯金字塔"和"拉普拉斯金字塔"为例,基于OpenCV的源代码作 ...

  6. 图像金字塔(高斯与拉普拉斯)

    目录 一.图像金字塔的作用 1.图像缩放 2.图像分割 二.采样 1.下采样pyrDown() 2.上采样pyrUp() 三.高斯金字塔 1.高斯金字塔过程 2.构建图像的高斯金字塔 四.拉普拉斯金字 ...

  7. python --opencv图像处理金字塔(高斯金字塔、拉普拉斯金字塔)

    引言 前面的文章中,我们有用过图像方法或者缩小的函数 resize() ,这个函数既可以放大图像,也可以缩小图像,其中: 缩小图像:一版使用 CV_INETR_AREA (区域插值)来插值. 放大图像 ...

  8. opencv--图像金字塔--高斯金字塔

    什么是图像金字塔 我们需要了解一个概念:尺度 尺度,顾名思义就是说图像的尺寸和分辨率.在我们进行图像处理的时候,会经常对源图像的尺寸进行放大或者缩小的变换,进而转换为我们指定尺寸的目标图像.在对图像进 ...

  9. matlab金字塔,高斯金字塔的matlab实现

    对于大小为w×i 的图像I,高斯金字塔Gj 由I 的几个分辨率减小的高斯图像Ii(i是下标,下同) 组成,其中,i={0,1,...,j} 代表金字塔的级数. 图像Ii 的大小为(w/2i)×(h/2 ...

最新文章

  1. EntityCURD操作的参数和返回值
  2. Java锁的种类以及辨析(二):自旋锁的其他种类
  3. Tomcat的常用配置
  4. 判断分辨网站是否伪静态的方法
  5. 《基于张量网络的机器学习入门》学习笔记7
  6. java锁_Java锁
  7. “科班出身”的程序员和“培训出身”的程序员的大型辩论(甩锅)现场
  8. Dubbo(六)使用SpringBoot搭建dubbo服务提供者工程
  9. 逼自己玩命学了3个多月,吃透这19个架构视频!分享给你,让你今年进个大厂!(限时领)...
  10. 软件详细设计说明书_软件测试的基本理论 笔记
  11. 《HBase企业应用开发实战》—— 3.6 本章小结
  12. C++ 整型所能表示的数据范围
  13. ip subnet-zero
  14. Oracle 动态视图3 V$SESSION
  15. 关于印发国家测绘地理信息局2013年立法工作计划的通知
  16. 你的PCB地线走的对吗?为什么要有主地?
  17. 用QQ聊天记录生成一个词云
  18. ckplayer 播放视频
  19. 习惯三:要事第一--自我管理的原则
  20. IPsec+预共享密钥的IKE野蛮模式

热门文章

  1. 用python处理excel表格进行分组统计_python中excel数据分组处理
  2. 灰度巡线传感器_灰度传感器、巡线传感器、技术参数、应用推荐
  3. linux数组shell操作,shell数组操作简明总结
  4. 【应用】【正则化】L1、L2正则化
  5. 托福高频真词List20 // 附托福TPO阅读真题
  6. rpm安装、yum安装、dnf安装三者的区别
  7. java邮件发送报错: Couldn‘t connect to host, port: smtp.exmail.qq.com, 25; timeout -1
  8. 配置Jenkins使用exmail服务发送邮件
  9. 电影 《洪水泛滥之前》下载地址 Before the Flood
  10. 阿里云 DNS Server设置不符 问题解决办法