目标

在本章中,

  • 我们将学习图像金字塔

  • 我们将使用图像金字塔创建一个新的水果“Orapple”

  • 我们将看到以下功能:cv.pyrUp(),cv.pyrDown()

理论

通常,我们过去使用的是恒定大小的图像。但是在某些情况下,我们需要使用不同分辨率的(相同)图像。例如,当在图像中搜索某些东西(例如人脸)时,我们不确定对象将以多大的尺寸显示在图像中。在这种情况下,我们将需要创建一组具有不同分辨率的相同图像,并在所有图像中搜索对象。这些具有不同分辨率的图像集称为“图像金字塔”(因为当它们堆叠在底部时,最高分辨率的图像位于顶部,最低分辨率的图像位于顶部时,看起来像金字塔)。

有两种图像金字塔。1)高斯金字塔和2)拉普拉斯金字塔

高斯金字塔中的较高级别(低分辨率)是通过删除较低级别(较高分辨率)图像中的连续行和列而形成的。然后,较高级别的每个像素由基础级别的5个像素的贡献与高斯权重形成。通过这样做,M×N图像变成M/2 × N/2图像。因此面积减少到原始面积的四分之一。它称为Octave。当我们在金字塔中越靠上时(即分辨率下降),这种模式就会继续。同样,在扩展时,每个级别的面积变为4倍。我们可以使用cv.pyrDown()和cv.pyrUp()函数找到高斯金字塔。

img = cv.imread('messi5.jpg')
lower_reso = cv.pyrDown(higher_reso)

以下是图像金字塔中的4个级别。

现在,您可以使用cv.pyrUp()函数查看图像金字塔。

higher_reso2 = cv.pyrUp(lower_reso) 

记住,higher_reso2不等于higher_reso,因为一旦降低了分辨率,就会丢失信息。下面的图像是3层的金字塔从最小的图像在前面的情况下创建。与原图对比:

拉普拉斯金字塔由高斯金字塔形成。没有专用功能。拉普拉斯金字塔图像仅像边缘图像。它的大多数元素为零。它们用于图像压缩。拉普拉斯金字塔的层由高斯金字塔的层与高斯金字塔的高层的扩展版本之间的差形成。拉普拉斯等级的三个等级如下所示(调整对比度以增强内容):

使用金字塔进行图像融合

金字塔的一种应用是图像融合。例如,在图像拼接中,您需要将两个图像堆叠在一起,但是由于图像之间的不连续性,可能看起来不太好。在这种情况下,使用金字塔混合图像可以无缝混合,而不会在图像中保留大量数据。一个经典的例子是将两种水果,橙和苹果混合在一起。现在查看结果本身,以了解我在说什么:

请查看附加资源中的第一个参考,其中有图像混合,拉普拉斯金字塔等的完整图解详细信息。只需完成以下步骤即可:

1.加载苹果和橙子的两个图像

2.查找苹果和橙子的高斯金字塔(在此示例中, 级别数为6)

3.在高斯金字塔中,找到其拉普拉斯金字塔

4.然后在每个拉普拉斯金字塔级别中加入苹果的左半部分和橙子的右半部分

5.最后从此联合图像金字塔中重建原始图像。

下面是完整的代码。(为简单起见,每个步骤都是单独进行的,这可能会占用更多的内存。如果需要,可以对其进行优化)。

import cv2 as cv
import numpy as np,sys
A = cv.imread('apple.jpg')
B = cv.imread('orange.jpg')
# 生成A的高斯金字塔
G = A.copy()
gpA = [G]
for i in xrange(6):G = cv.pyrDown(G)gpA.append(G)
# 生成B的高斯金字塔
G = B.copy()
gpB = [G]
for i in xrange(6):G = cv.pyrDown(G)gpB.append(G)
# 生成A的拉普拉斯金字塔
lpA = [gpA[5]]
for i in xrange(5,0,-1):GE = cv.pyrUp(gpA[i])L = cv.subtract(gpA[i-1],GE)lpA.append(L)
# 生成B的拉普拉斯金字塔
lpB = [gpB[5]]
for i in xrange(5,0,-1):GE = cv.pyrUp(gpB[i])L = cv.subtract(gpB[i-1],GE)lpB.append(L)
# 现在在每个级别中添加左右两半图像
LS = []
for la,lb in zip(lpA,lpB):rows,cols,dpt = la.shapels = np.hstack((la[:,0:cols/2], lb[:,cols/2:]))LS.append(ls)
# 现在重建
ls_ = LS[0]
for i in xrange(1,6):ls_ = cv.pyrUp(ls_)ls_ = cv.add(ls_, LS[i])
# 图像与直接连接的每一半
real = np.hstack((A[:,:cols/2],B[:,cols/2:]))
cv.imwrite('Pyramid_blending2.jpg',ls_)
cv.imwrite('Direct_blending.jpg',real)
## 

附加资源

1.Image Blending:http://pages.cs.wisc.edu/~csverma/CS766_09/ImageMosaic/imagemosaic.html

☆☆☆为方便大家查阅,小编已将OpenCV-Python专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“文章”,如图:

或点击下方“阅读原文”,进入OpenCV-Python专栏,即可查看系列文章。

不断更新资源

获取更多精彩

长按二维码扫码关注

OpenCV系列之图像金字塔 | 二十相关推荐

  1. OpenCV系列之图像修补 | 五十九

    目标 在本章中, 我们将学习如何通过一种称为"修复"的方法消除旧照片中的小噪音,笔画等. 我们将看到OpenCV中的修复功能. 基础 你们大多数人家里都会有一些旧的旧化照片,上面有 ...

  2. OpenCV系列之轮廓分层 | 二十五

    目标 这次我们学习轮廓的层次,即轮廓中的父子关系. 理论 在前几篇关于轮廓的文章中,我们已经讨论了与OpenCV提供的轮廓相关的几个函数.但是当我们使用cv.findcontour()函数在图像中找到 ...

  3. OpenCV系列之图像的几何变换 | 十四

    目标 学习将不同的几何变换应用到图像上,如平移.旋转.仿射变换等. 你会看到这些函数: cv.getPerspectiveTransform 变换 OpenCV提供了两个转换函数cv.warpAffi ...

  4. 【缅怀妈妈系列诗歌】之二十四:一份永不忘却的思念

    [缅怀妈妈系列诗歌]之二十四:一份永不忘却的思念 题记:在新年来临之际,梦着与逝去的妈妈团聚过元旦节有感. 谨以这一系列文章和诗歌缅怀我病逝的妈妈,祈祷她老人家在天能得以安息! --代腾飞 2010年 ...

  5. cv2.error: opencv(4.4.0)_【从零学习OpenCV 4】图像金字塔

    点击上方"小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍<从零学习Open ...

  6. 计算机视觉OpenCV(五):图像金字塔与轮廓检测

    目录 图像金字塔 1. 高斯金字塔(Gaussian Pyramid) 2. 拉普拉斯金字塔(Laplacian Pyramid) 图像轮廓 1. 查找检测物体的轮廓 2. 绘制轮廓 3. 轮廓特征 ...

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

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

  8. OpenCV+python:图像金字塔

    1,图像金字塔的概念 图像金字塔是一种以多分辨率来解释图像的有效但概念简单的结构.应用于图像分割,机器视觉和图像压缩.一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图 ...

  9. OpenCV系列 | BGR图像转换为RGB图像

    目录 方法一 方法二 使用OpenCV加载图像时,默认使用BGR的格式,而使用matplotlib显示图像时又采用RGB的格式,因此显示图像时,会显得非常奇怪. 如以一张船的照片为例,原图如下: 使用 ...

最新文章

  1. 敏捷个人纸质书:第一章 源于生活和工作的敏捷个人
  2. Ubuntu 16.04 安装JDK
  3. linux刷新磁盘_Linux内核Page Cache和Buffer Cache关系及演化历史
  4. java h5 上拉加载更多_移动端H5页面上拉加载更多功能实现(二)
  5. 2020年快手短视频直播电商营销增长宝典
  6. Vant-UI 表单组件(Field组件):验证表单元素表单提交 - 踩坑篇
  7. Flask flask-session
  8. 应届生web前端面试题_Web前端初学者(应届生)面试攻略
  9. 老男孩教育每日一题-第95天-shell脚本知识点:书写脚本完成ftp上传下载
  10. Mac电脑版微信】双开方法,最简单的微信多开教程
  11. 数据结构课程设计——宿舍管理查询软件
  12. 自来水供水收费管理系统
  13. 手机市场的竞争,用户价值才是硬道理
  14. Oracle逻辑读,物理读
  15. horovod 安装及使用
  16. 苹果x看html文字有黑线,iPhonex屏幕旁边出现绿线怎么回事 iPhonex屏幕旁边绿线是什么问题...
  17. rtx服务器设置 文件,rtx 服务器 文件传输 配置
  18. PP-YOLOE的译读笔记
  19. 二次剩余--欧拉准则
  20. linux sftp上传速度慢,华三S5500V2-34S-EI交换机关于SFTP传输慢的问题

热门文章

  1. 更新|UA开发者模式、页面翻译功能、修复浏览器插件问题
  2. 【前端】Vue体系(四)
  3. 中国IT领袖峰会上,马化腾都说了什么?
  4. tkinter.ttk — Tk themed widgets
  5. python中uniform randint_Python 随机数函数(random,uniform,randint,randrange,shuffle,sample)...
  6. 切线、法线、梯度之间的关系
  7. php 砸金蛋抽奖,jQuery抽奖砸金蛋代码
  8. 替代GDA中的获取rpc函数poDataset->GetMetadata(“RPC“)
  9. 前端一个月面试小记,字节、蚂蚁、美团、滴滴
  10. New Test :: Houdini Simulation Particles FumeFX Simultion Fluid..