Python图像处理(16):图像金字塔
2015-07-12 21:58
501 查看
快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息
图像金字塔是图像中多尺度表达的一种,最初用于机器视觉和图像压缩。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。层级越高,则图像越小,分辨率越低。
一般情况下有两种类型的图像金字塔常常出现在文献和以及实际运用中。他们分别是:
高斯金字塔 ( Gaussianpyramid): 用来向下采样,主要的图像金字塔
拉普拉斯金字塔 (Laplacianpyramid): 用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。
两者的简要区别:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔底层图像中向上采样重建一个图像。
图像金字塔中的向上和向下采样分别通过OpenCV函数 pyrUp 和 pyrDown 实现。 这里的向下与向上采样,是对图像的尺寸而言的(和金字塔的方向相反),向上就是图像尺寸加倍,向下就是图像尺寸减半。而如果我们按上图中演示的金字塔方向来理解,金字塔向上图像其实在缩小,这样刚好是反过来了。
但需要注意的是,PryUp和PryDown不是互逆的,即PryUp不是降采样的逆操作。这种情况下,图像首先在每个维度上扩大为原来的两倍,新增的行(偶数行)以0填充。然后给指定的滤波器进行卷积(实际上是一个在每个维度都扩大为原来两倍的过滤器)去估计“丢失”像素的近似值。用Python试试:
我们的原始图像:
下采样后的图像:
还原后的图像:
图像明显的模糊化。
图像金字塔是图像中多尺度表达的一种,最初用于机器视觉和图像压缩。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。层级越高,则图像越小,分辨率越低。
一般情况下有两种类型的图像金字塔常常出现在文献和以及实际运用中。他们分别是:
高斯金字塔 ( Gaussianpyramid): 用来向下采样,主要的图像金字塔
拉普拉斯金字塔 (Laplacianpyramid): 用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。
两者的简要区别:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔底层图像中向上采样重建一个图像。
图像金字塔中的向上和向下采样分别通过OpenCV函数 pyrUp 和 pyrDown 实现。 这里的向下与向上采样,是对图像的尺寸而言的(和金字塔的方向相反),向上就是图像尺寸加倍,向下就是图像尺寸减半。而如果我们按上图中演示的金字塔方向来理解,金字塔向上图像其实在缩小,这样刚好是反过来了。
但需要注意的是,PryUp和PryDown不是互逆的,即PryUp不是降采样的逆操作。这种情况下,图像首先在每个维度上扩大为原来的两倍,新增的行(偶数行)以0填充。然后给指定的滤波器进行卷积(实际上是一个在每个维度都扩大为原来两倍的过滤器)去估计“丢失”像素的近似值。用Python试试:
# 图像金字塔 src = cv2.imread('f:\\tmp\\cotton.jpg') cv2.imshow('src', src) # 下采样 dst = cv2.pyrDown(src) cv2.imshow('dst', dst) # 上采样 src1 = cv2.pyrUp(dst) cv2.imshow('src1', src1) cv2.waitKey()
我们的原始图像:
下采样后的图像:
还原后的图像:
图像明显的模糊化。
相关文章推荐
- Python格式化字符串
- python初学遇到的问题总结
- 使用python的numpy时 导致的问题
- win7下python执行cmd命令中exe崩溃的处理
- Java,php,python,js数据类型
- Python+Django+SAE系列教程10-----Django模板
- Python学习记录
- python 循环中break与continue区别学习
- Python 获得Facebook用户有一个共同的兴趣Friends
- python函数定义
- 手把手教你:python字符串编码详解
- Flask --- Python的另一个轻量级Web框架
- python——scrapy安装成功,check项目成功,运行出现一下问题
- tornado 源码分析 之 异步io的实现方式
- OpenCV2.3.1+Python2.7.3+Numpy等的配置
- Python下opencv使用笔记(七)(图像梯度与边缘检测)
- python 对字典排序
- Selenium学习笔记之001:Selenium+Eclipse+Python测试环境搭建
- Python实现简单的爬虫
- Python下opencv使用笔记(六)(图像的形态学转换)