Python图像处理(16):图像金字塔

快乐虾

http://blog.csdn.net/lights_joy/

欢迎转载,但请保留作者信息


图像金字塔是图像中多尺度表达的一种,最初用于机器视觉和图像压缩。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。层级越高,则图像越小,分辨率越低。


一般情况下有两种类型的图像金字塔常常出现在文献和以及实际运用中。他们分别是:


高斯金字塔  (  Gaussianpyramid): 用来向下采样,主要的图像金字塔


拉普拉斯金字塔 (Laplacianpyramid): 用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。 


两者的简要区别:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔底层图像中向上采样重建一个图像。


图像金字塔中的向上和向下采样分别通过OpenCV函数 pyrUp pyrDown 实现。 这里的向下与向上采样,是对图像的尺寸而言的(和金字塔的方向相反),向上就是图像尺寸加倍,向下就是图像尺寸减半。而如果我们按上图中演示的金字塔方向来理解,金字塔向上图像其实在缩小,这样刚好是反过来了。


但需要注意的是,PryUpPryDown不是互逆的,即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图像处理(16):图像金字塔_第1张图片


下采样后的图像:

Python图像处理(16):图像金字塔_第2张图片


还原后的图像:

Python图像处理(16):图像金字塔_第3张图片


图像明显的模糊化。










你可能感兴趣的:(图像/视频处理)