图像金字塔原理

       一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下, 我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一幅图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况 下,我们需要创建一组图像,这些图像是具有不同分辨率的原始图像。我 们把这组图像叫做图像金字塔(简单来说就是同一图像的不同分辨率的子图集 合)。如果我们把最大的图像放在底部,最小的放在顶部,看起来像一座金字 塔,故而得名图像金字塔。
      图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且是通过对原始图像连续降采样获得,直到达到某个中止条件才停止采样。
有两类图像金字塔:高斯金字塔和拉普拉斯金字塔
       

一、高斯金字塔

   
     高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔低层图像中向上采样重建一个图像。
      高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的:要从金字塔第i层生成第i+1层(我们表示第i+1层为Gi+1),我们先要用高斯核对Gi进行卷积(顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值),然后删除所有偶数行和偶数列。这样 操作一次一个 MxN 的图像就变成了一个 M/2xN/2 的图像。所以这幅图像 的面积就变为原来图像面积的四分之一。这被称为 Octave。连续进行这样 的操作我们就会得到一个分辨率不断下降的图像金字塔。
       我们可以使用函数 cv2.pyrDown() 和 cv2.pyrUp() 构建图像金字塔。
函数 cv2.pyrDown() 从一个高分辨率大尺寸的图像向上构建一个金子塔 (尺寸变小,分辨率降低)。
img = cv2.imread('messi5.jpg')
lower_reso = cv2.pyrDown(higher_reso)
下图是一个四层的图像金字塔。

      函数 cv2.pyrUp() 从一个低分辨率小尺寸的图像向下构建一个金子塔(尺 寸变大,但分辨率不会增加)。
  higher_reso2 = cv2.pyrUp(lower_reso)
   在这种情况下,图像首先在每个维度上扩大为原来的两倍,新增的行(偶数行)以0填充。然后给指定的滤波器进行卷积(实际上是一个在每一维上都扩大为两倍的过滤器)去估计“丢失”像素的近似值。
        所以PyrUp()并不是PyrDown的逆操作。因为一旦使 用 cv2.pyrDown(),图像的分辨率就会降低,信息就会被丢失。

二、拉普拉斯金字塔

     为了恢复原来(更高分辨率)的图像,我们需要获得由降采样操作丢失的信息。 这些数据形成了拉普拉斯金字塔。
   拉普拉斯金字塔可以有高斯金字塔计算得来,公式如下:

使用openCV直接进行拉普拉斯运算:
      Li = Gi   - PyrUp (Gi+1)
拉普拉金字塔的图像看起来就像边界图,其中很多像素都是 0。他们经常 被用在图像压缩中。下图就是一个三层的拉普拉斯金字塔:

附图:高斯金字塔及其逆形式——拉普拉斯金字塔:

三、图像金字塔的应用

3.1 图像融合
金字塔的一个应用是图像融合。例如,在图像缝合中,你需要将两幅 图叠在一起,但是由于连接区域图像像素的不连续性,整幅图的效果看起来会 很差。这时图像金字塔就可以排上用场了,他可以帮你实现无缝连接。这里的 一个经典案例就是将两个水果融合成一个,看看下图也许你就明白我在讲什么 了。
实现上述效果的步骤如下:
1. 读入两幅图像,苹果和句子。
2. 构建苹果和橘子的高斯金字塔(6 层)。
3. 根据高斯金字塔计算拉普拉斯金字塔。
4. 在拉普拉斯的每一层进行图像融合(苹果的左边与橘子的右边融合)
5. 根据融合后的图像金字塔重建原始图像。
3.2 图像分割
   见cbPyrSegmentation()函数使用。

参考:

1.openCV官方教程;

2.学习openCV

高斯拉普拉斯——图像金字塔相关推荐

  1. python 高斯金字塔_Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金字塔

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. 基础知识铺垫 学习图像金字塔,发现网上的资料比较多,检索起来比较轻松. 图像金字塔是一张图像多尺度的表达,或者可以理解成一 ...

  2. 【youcans 的 OpenCV 例程200篇】186.图像金字塔之拉普拉斯金字塔

    OpenCV 例程200篇 总目录-202205更新 [youcans 的 OpenCV 例程200篇]186.图像金字塔之拉普拉斯金字塔 图像金字塔是一种以多分辨率来解释图像的结构,常用于图像分割. ...

  3. 图像金字塔和高斯金字塔

    一:图像金字塔 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构.图像金字塔实际上是一张图片在不同尺度下的集合,即原图的上采样和下采样集合.金 ...

  4. 尺度空间理论与图像金字塔(二)

    SIFT简介 整理一下方便阅读,作者写的东西摘自论文,在此感谢xiaowei等的贡献 DoG尺度空间构造(Scale-space extrema detection)http://blog.csdn. ...

  5. 尺度空间理论与图像金字塔

    我们之所以决定使用卷积后的特征是因为图像具有一种"静态性"的属性.也就是说使用卷积就是为了提取显著特征,减少特征维数,减少计算量. 在对图像进行卷积操作后的只管现象:图像变得模糊了 ...

  6. 【OpenCV 例程200篇】31. 图像金字塔(cv2.pyrDown)

    [OpenCV 例程200篇]31. 图像金字塔(cv2.pyrDown) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更 ...

  7. 图像金字塔、特征金字塔(FPN)

    图像金字塔 参考: https://www.jianshu.com/p/436e96200f80 图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构.一幅图像的金字塔是 ...

  8. 图像金字塔和特征金字塔

    图像金字塔 图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构.一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合.其通过梯次向下 ...

  9. 尺度空间与图像金字塔(多分辨率)超级细致

    文章目录 尺度空间 什么是尺度空间(scale space) 为什么需要尺度空间 高斯核 图像金字塔 什么是分辨率 为什么需要多分辨率 多尺度和多分辨率 图像金字塔 高斯金字塔 SIFT 参考 Why ...

最新文章

  1. 数据分析中会常犯哪些错误,如何解决的?
  2. Revising Aggregations - The Sum Function(集合函数-sum)
  3. 顺序表应用4-2:元素位置互换之逆置算法(数据改进)
  4. CV:基于face库利用cv2调用摄像头(或视频)根据人脸图片实现找人(先指定要识别已知人脸的文件夹转为numpy_array+输入新图片遍历已有numpy_array)
  5. .net 4下引用低版本.net类库发生异常的解决方案
  6. 初识Flink-从WorldCount开始
  7. Vue3---vue组件库
  8. java中decrement,Java Math decrementExact()用法及代码示例
  9. PTA最大子列和问题
  10. 支持js代码的博客有哪些?
  11. es客户端工具_超越 Cookie:当今的客户端数据存储
  12. Linux Shell编程参考大全
  13. wp10 手机 部署linux,【图片】02-15【吐槽】【转】win10手机端直接安装xap教程!【windowsphone吧】_百度贴吧...
  14. 匹配表情emoji 正则_新版Emoji表情过滤
  15. Ruby语言的优点和缺点
  16. T32 获取电脑Product ID
  17. 分析机构对华为手机极为悲观,预估它今年出货量大跌超七成
  18. 怎样的金融IT公司才算好公司
  19. Google笔试集锦
  20. 始祖双碳新闻 | 2022年8月15日碳中和行业早知道

热门文章

  1. 最美的时候你遇见了谁
  2. 知识点15:文件的高级应用
  3. Pr 入门教程如何调整肤色?
  4. 偶尔会有的一点感受(二)
  5. 平台+插件源代码最新地址
  6. Haxe是一门新兴的开源编程语言--Haxe学习笔记(一) Haxe:一次编码全平台编译的神话
  7. 第四课:点亮LED灯
  8. win环境20分钟搭建php+sql服务器Apache+php+mysql在windows下的安装与
  9. Google发布文本内容生成短视频工具:Imagen Video
  10. TWS蓝牙耳机怎么挑选?值得买的蓝牙耳机推荐