概念:

图像金字塔;
一般情况下,我们要处理是一副具有固定分辨率的图像。但是有些情况下,我们需要对同一图像的不同分辨率的子图像进行处理。比如,我们要在一副图像中查找某个目标,比如脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔(简单来说就是同一图像的不同分辨率的子图集合)。如果我们把最大的图像放在底部,最小的放在顶部,看起来像一座金字塔,故而得名图像金字塔。

高斯图像金字塔:

高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的。顶部图像中的每个像素值等于下一层图像中5个像素的高斯加权平均值。这样操作一次一个MxN的图像就变成了一个M/2xN/2的图像。所以这幅图像的面积就变成为原来图像面积的四分之一。连续进行这样的操作我们就会得到一个分辨率不断下降的图像金字塔我们可以使用函数cv2.pyrDown()和cv2.pyrUp()构建金字塔。
import numpy as np
import matplotlib.pyplot as plt
import cv2
#图像金字塔
def show(image):plt.imshow(image)plt.axis('off')plt.show()def imread(image):image=cv2.imread(image)#把图像的BGR转换成RGBimage=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)return image
#高斯金字塔
image=imread('1.png')
for i in range(4):image=cv2.pyrDown(image)print(image.shape)show(image)

import numpy as np
import matplotlib.pyplot as plt
import cv2
#图像金字塔
def show(image):plt.imshow(image)plt.axis('off')plt.show()def imread(image):image=cv2.imread(image)#把图像的BGR转换成RGBimage=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)return image
#高斯金字塔
#降低分辨率
image=imread('1.png')
for i in range(4):image=cv2.pyrDown(image)print(image.shape)# show(image)#高斯金字塔
#提高分辨率
for i in range(4):image=cv2.pyrUp(image)print(image.shape)show(image)

拉普拉斯金字塔:

拉普拉斯金字塔可以由高斯金字塔计算得来的,公式如下: Li=Gi-pyrUp(Gi+1)   ,拉普拉斯金字塔的图像看起来就像边界图,其中很多像素都是0.

import numpy as np
import matplotlib.pyplot as plt
import cv2
#图像金字塔
def show(image):plt.imshow(image)plt.axis('off')plt.show()def imread(image):image=cv2.imread(image)#把图像的BGR转换成RGBimage=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)return image
#拉普拉斯金字塔
down_image1=cv2.pyrDown(image)
down_image2=cv2.pyrDown(down_image1)
up_image=cv2.pyrUp(down_image2)
print(image.shape)
print(down_image1.shape)
print(down_image2.shape)
print(up_image.shape)
laplacian=down_image1 - up_image
show(laplacian)

运行报错:

F:\开发工具\pythonProject\tools\venv\Scripts\python.exe F:/开发工具/pythonProject/tools/opencv/open13.py
(696, 1242, 3)
(348, 621, 3)
(174, 311, 3)
(348, 622, 3)
Traceback (most recent call last):File "F:\开发工具\pythonProject\tools\opencv\open13.py", line 37, in <module>laplacian=down_image1 - up_image
ValueError: operands could not be broadcast together with shapes (348,621,3) (348,622,3) Process finished with exit code 1

提示:俩边维数不一样导致, shapes (348,621,3) (348,622,3) ,宽度一样高度少了1

M = np.ones((up_image.shape[0],up_image.shape[1]-1,3),dtype='uint8')
import numpy as np
import matplotlib.pyplot as plt
import cv2
#图像金字塔
def show(image):plt.imshow(image)plt.axis('off')plt.show()def imread(image):image=cv2.imread(image)#把图像的BGR转换成RGBimage=cv2.cvtColor(image,cv2.COLOR_BGR2RGB)return imagedown_image1=cv2.pyrDown(image)
down_image2=cv2.pyrDown(down_image1)
up_image=cv2.pyrUp(down_image2)
M = np.ones((up_image.shape[0],up_image.shape[1]-1,3),dtype='uint8')
print(image.shape)
print(down_image1.shape)
print(down_image2.shape)
print(up_image.shape)
print(M.shape)
laplacian=down_image1 - M
show(laplacian)
F:\开发工具\pythonProject\tools\venv\Scripts\python.exe F:/开发工具/pythonProject/tools/opencv/open13.py
(696, 1242, 3)
(348, 621, 3)
(174, 311, 3)
(348, 622, 3)
(348, 621, 3)

维度一样了

效果展示:

Opencv之图像金字塔(笔记07)相关推荐

  1. 使用Python和OpenCV构建图像金字塔

    使用Python和OpenCV的图像金字塔 1. 效果图 2. 什么是图像金字塔? 3. 依赖 4. 源码 参考 这篇博客将介绍如何使用两种方法构造图像金字塔. 使用Python和OpenCV构建金字 ...

  2. Python+OpenCV:图像金字塔

    Python+OpenCV:图像金字塔 理论 通常情况下,我们使用固定大小的图像.但在某些情况下,我们需要处理(相同的)不同分辨率的图像. 例如,当搜索图像中的某些东西时,比如脸,我们不确定该物体在图 ...

  3. OpenCV实现图像金字塔

    目的: 使用OpenCV中的函数 cv::pyrUp 和 cv::pyrDown 对给定的图像下采样和上采样(downsample 和 upsample). 理论 一般需要把图像的尺寸调整为和原图不一 ...

  4. 【OpenCV】图像金字塔

    Pyramid    通过上采样upsample和下采样downsample实现图像金字塔.OpenCV相应函数为pyrUp()和pyrDown(). void cv::pyrUp ( InputAr ...

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

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

  6. OpenCV系列 --- 图像金字塔

    大家好,今天学习的时候遇到了图像金字塔的问题,那么今天就聊聊图像金字塔的话题吧! 其实图像金字塔也没有那么高大上,实际的功能也是为了实现图像的放大与放小.说到放大放小,图像金字塔也分为两种,一种就是高 ...

  7. Python OpenCV 之图像金字塔,高斯金字塔与拉普拉斯金字塔

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. Python OpenCV 基础知识铺垫 高斯金字塔 cv2.pyrDown 与 cv2.pyrUp 函数原型 拉普拉斯金 ...

  8. 【OpenCV】图像金字塔详解及编程实现

    图像金字塔被广泛用于各种视觉应用中.图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而且是通过对原始图像连续降采样获得,直到达到某个中止条件才停止降采样.有两种类型的图像金字塔常常出现 ...

  9. 图像金字塔:概念及实现

    文章目录 图像金字塔:概念和实现 1. 图像金字塔的概念 2. 图像金字塔的实现方式 3. 基于OpenCV的图像金字塔实现 参考资料 图像金字塔:概念和实现 首先补充一下分辨率的概念:图像分辨率指图 ...

最新文章

  1. HDU - 2089 不要62 【暴力打表】【数位DP】
  2. 四个你看后可能会影响你一生的故事
  3. Flask-admin 学习及一些笔记
  4. 一个路由器两个网段互通_如何判断两个IP地址是否在同一个网段?什么是子网掩码?...
  5. socket 端口和地址复用
  6. 前端学习(588):console面板简介与交互式命令
  7. 数据库中的索引原理阅读
  8. Java进阶 | Proxy动态代理机制详解
  9. web应用系统性能测试的种类
  10. NPN和PNP的区别和总结
  11. Android-资深架构师的成长之路(技术详细介绍),flutterui套件
  12. 对华炎魔方低代码平台的本地部署
  13. 数据治理系列:数仓建模之数仓主题与主题域
  14. Html网页设计-军事网站设计
  15. TrestZone入门解读
  16. Landsat8遥感影像数据免费下载
  17. 十分钟理清常见的开源协议
  18. CVE-2013-4694 WinAmp 5.63 栈溢出漏洞分析
  19. 中软国际python机试题_中软国际入职机试题[优质资料]
  20. 电子产品设计中最重要的需求是什么?

热门文章

  1. 13-Mybatis 注解开发
  2. 本地下载mysql数据库_本地Windows上安装 MySQL数据库
  3. com词根词缀_词根词缀记忆字典(com.ghosun.dict) - 4.8.8 - 应用 - 酷安网
  4. oracle 模糊查询_MySQL Like模糊查询速度太慢如何解决
  5. php oauth 扩展,PHP扩展之Web服务(一)——OAuth
  6. python画图颜色表示大小变化_Python matplotlib减少色条标签的大小
  7. python难度大吗_python需要学多久?自学两年也很难达到企业标准
  8. 灵感分享| 实例UI组件的设计风格
  9. 想拥有高清壁纸不用那么麻烦!
  10. 设计灵感|有趣优雅的弹窗消息设计!