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

  • 1. 效果图
  • 2. 原理
    • 2.1 什么是图像金字塔
    • 2.2 金字塔分类
    • 2.3 应用
  • 3. 源码
  • 参考

这篇博客将介绍图像金字塔的理论,及用图像金字塔cv2.pyrUp(), cv2.pyrDown()实现苹果与梨的完美融合;

1. 效果图

高斯金字塔效果图如下:
一层是另一层的宽高的1/2;

高斯金字塔原图 VS 低分辨率图 VS 高分辨率效果图如下:

可以看到先pyDown丢失了行列信息后,在pyUp填充行列信息图像会极其的模糊。因为一旦降低分辨率,就会丢失信息。
拉普拉斯效果图如下:

图像融合效果图如下:

2. 原理

2.1 什么是图像金字塔

同一幅图像的不同分辨率的图像,从下到上看起来像金字塔,即称之为金字塔;

2.2 金字塔分类

  • 高斯金字塔

高斯金字塔中的高层次(低分辨率)是通过去除低层次(高分辨率)图像中的连续行和列而形成的。然后,将底层5个像素的贡献值加上高斯权值,形成更高层次的每个像素;
每一层M×N图像就变成了M/2×N/2图像,面积减少到原来面积的四分之一。它被称为八度音阶。

  • 拉普拉斯金字塔

拉普拉斯金字塔是由高斯金字塔形成的;
拉普拉斯金字塔图像就像边缘图像,它的大部分元素是零,用于图像压缩;
拉普拉斯金字塔中的一层是由高斯金字塔中的该层和高斯金字塔中其上层的扩展版本之间的差异形成的。

2.3 应用

  • 图像压缩
  • 图像大小改变
  • 图像融合:使用金字塔进行图像融合可以实现无缝融合,而不会在图像中留下太多数据。

3. 源码

# 图像金字塔
import cv2
import imutilsimg = cv2.imread('ym3.jpg')
img = imutils.resize(img, width=500)lower_reso = img
cv2.imshow("origin", img)for i in range(0, 3):lower_reso = cv2.pyrDown(lower_reso)cv2.imshow("lower_reso " + str(i), lower_reso)
cv2.waitKey(0)
cv2.destroyAllWindows()img = imutils.resize(img, width=300)
lower_reso = cv2.pyrDown(img)
higher_reso = cv2.pyrUp(lower_reso)
cv2.imshow("origin", img)
cv2.imshow("lower_reso", lower_reso)
cv2.imshow("higher_reso", higher_reso)
cv2.waitKey(0)def getLaplacian():img = cv2.imread('ym2.jpg')img = cv2.resize(img, (800, 800))# 为图像生成高斯金字塔G = img.copy()gpA = [G]for i in range(4):G = cv2.pyrDown(G)gpA.append(G)# 为图像生成拉普拉斯金字塔for i in range(4, 0, -1):GE = cv2.pyrUp(gpA[i])print(gpA[i - 1].shape, GE.shape)L = cv2.subtract(gpA[i - 1], GE)cv2.imshow("Laplacian " + str(i), L)cv2.waitKey(0)getLaplacian()

参考

  • https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_pyramids/py_pyramids.html#py-pyramids

Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()相关推荐

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

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

  2. python opencv 图像膨胀

    python opencv 图像膨胀 代码: import cv2 import numpy as np # 图像膨胀 def dilate_img(img,a,iterations):kernel ...

  3. python opencv 图像旋转

    python opencv 图像旋转 原图 顺时针旋转 代码: import cv2 path = '2.jpg' img = cv2.imread(path,1) trans_img = cv2.t ...

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

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

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

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

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

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

  7. python opencv图像二值化函数_python opencv 二值化 计算白色像素点的实例

    python opencv 二值化 计算白色像素点的实例 贴部分代码 #! /usr/bin/env python # -*- coding: utf-8 -*- import cv2 import ...

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

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

  9. 【Python+OpenCV 图像透视变换 warpPerspective函数】

    Python+OpenCV 图像透视变换 warpPerspective函数 1.函数介绍 2.代码实例 3.实现效果 1.函数介绍 warpPerspective():对图像进行透视变换.简单来说, ...

最新文章

  1. Android 天气预报源码
  2. mysql自带命令使用教程_自用mysql自带命令实现数据库备份还原
  3. python编程(redis操作)
  4. 零基础带你学习MySQL—unique 唯一(二十五)
  5. mysql 修改密码_经验总结 | MYSQL修改密码脚本,值得收藏
  6. hash算法概念和hash加盐法
  7. Json 文件中出现 Expected value at 1:0 问题的解决
  8. 大数据管理技术 Hadoop-JavaAPI程序案例1
  9. 安装virtualbox可能遇到的错误
  10. [转贴]郎恒《齐天大圣》Rap 搞笑!
  11. Qlist+QMap+QVariant使用
  12. 高通量测序与杂交优势
  13. Android原生系统开发如何优雅的提供系统级的API供第三方程序调用?
  14. 使用钢笔工具进行抠图
  15. 老男孩mysql运维dba实战21部完整版_老男孩Mysql DBA高级运维系列课程(16部)
  16. 华尔街日报:郭台铭的“紫禁城”
  17. 《HOP-Matting:Hierarchical Opacity Propagation for Image Matting》论文笔记
  18. HSSFWorkbook 创建Excel文件
  19. gmpy2库的常用函数及其作用
  20. CCNP350-401学习笔记(1-50题)

热门文章

  1. 中国矿业大学计算机学院机房,2020年中国矿业大学计算机学院初试自命题科目考试大纲-数据结构...
  2. SyntaxError: Non-ASCII character ‘\xe5‘ in file(xxlrt_1.py) on line 7, but no encoding declared;
  3. Failed to resolve:com.android.support:appcompat-v7:报错处理
  4. C#实现有向无环图(DAG)拓扑排序
  5. 查找无序数组中第K大的数
  6. Adapter的getView
  7. 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较
  8. C++const关键字作用
  9. 服务器php将视频转为m3u8,php应用ffmpeg对mp4文件转换并生成m3u8视频流文件
  10. byte数组穿换成pcm格式_Apache Arrow:一种适合异构大数据系统的内存列存数据格式标准...