图像金字塔指的是同一图像不同分辨率的子图的集合,有向下取样金字塔,向上取样金字塔,拉普拉斯金字塔....它是图像多尺度表达的一种,最主要的是用于图像的分割

向下取样金字塔指高分辨率图像向低分辨率图像的转换,从第i层获得第i+1层的步骤(G[i]->G[i+1])

1.对图像G【i】进行高斯卷积,卷积核为得到一个新的高斯模糊后的图像,

2.对新图像删除所有偶数行和偶数列(像素),得到缩小为原图四分之一的新图,即G[i+1]

上述操作称为Octave。

重复下去,可以不断缩小图像(每次变为原图的四分之一),但会丢失一些图像。

向上取样金字塔指低分辨率图像向高分辨率图像的转换,从第i层获得第i+1层的步骤(G[i]->G[i+1])

1.每个方向上扩大为原来的二倍,即增加行和列,新增的行和列以0填充

2.使用与向下取样同样的卷积核的4倍对每一个像素处理,得到新图

但想上去样是一个模糊图像,不能得到新的信息。

(向上取样和向下取样不是互逆的)


向下取样:Python: cv2.pyrDown(src[, dst[, dstsize]]) → dst

向上取样:Python: cv2.pyrUp(src[, dst[, dstsize]]) → dst

一般只需要src一个参数即可

import cv2 as cv
import numpy as np #图像金字塔
img = cv.imread("E:/pictures/lena.jpg")
down = cv.pyrDown(img) #向下取样
up = cv.pyrUp(down) #向上取样
cv.imshow("up",up)
diff = img-up
cv.imshow("diffenent",diff) #比较和原图的差异
cv.imshow("orginal",img)
cv.imshow("down",down)
cv.waitKey()
cv.destroyAllWindows()

 


拉普拉斯金字塔:向上取样是图像的尺度变大,向下取样是图像的尺度变大,拉普拉斯金字塔:L[i] = G[i] - pyrUp(pyrDown(src))(L[i]表示i层拉普拉斯图像,G[i]表示原图)也就是上述代码的diffent图像,是在高斯金字塔的基础上构造的金字塔,意思是拉普拉斯金字塔每一层的图像为同一层高斯金字塔的图像减去上一层的图像进行上采样并高斯模糊的结果。说的有点绕,可以看网上的这幅图进行理解

实现起来很简单:

img = cv.imread("E:/pictures/lena.jpg")
down = cv.pyrDown(img)
up = cv.pyrUp(down)
L1 = img-up #1层拉普拉斯图像 down2 = cv.pyrDown(down)
up2 = cv.pyrUp(down2)
L2 = down-up2 #2层拉普拉斯图像
#以此类推..........
cv.imshow("orginal",img)
cv.imshow("L1",L1)
cv.imshow("L2",L2)
cv.waitKey()
cv.destroyAllWindows()

 

最新文章

  1. Url转Link的C#正则表达式
  2. [Python] Remote debugging by Pycharm
  3. Android setStartOffset方法:设置启动时间
  4. 转载 .net中的dll.refresh文件和pdb文件
  5. Cassandra1.2文档学习(6)—— 客户端数据请求
  6. iCIBA简单案例
  7. SQL Server 开发利器 SQL Prompt 6.5 T-SQL智能感知分析器 下载地址 完全破解+使用教程
  8. FPGA 设计流程,延迟,时间
  9. C语言移位运算符
  10. Light OJ 1316 A Wedding Party 最短路+状态压缩DP
  11. HTML5学习笔记四:html5结构
  12. 深度理解div+css布局嵌套盒子
  13. springBoot actuator监控配置及使用
  14. R语言中函数调试
  15. 四、Snapman多人协作电子表格之——Exprtk脚本
  16. CentOS系统版本的查看方法
  17. 会使用基本的Render函数后,就会想,这怎么用 v-for/v-if/v-model;我写个vue Render函数进阶
  18. [转帖]Nginx安装及配置详解 From https://www.cnblogs.com/zhouxinfei/p/7862285.html
  19. Flask学习【第6篇】:Flask中的信号
  20. vue 创建单文件组件 注册组件 以及组件的使用

热门文章

  1. Openssl ec命令
  2. python 学习之路开始了
  3. list 返回列表null替换
  4. [GO]二进制文件的拷贝
  5. JavaWeb项目导入MyEclipse后变为JAVA项目项目【解决方法】
  6. ubuntu 16.04启用root和ssh登录
  7. ASP.NET’s compilation system
  8. Linux查询系统信息命令
  9. 8) Struts2 2 SpringMVC
  10. css中padding和magin的区别