目录
一、图像金字塔
图像金字塔是主要用于图像的分割。一幅图像的金字塔是一系列以金字塔形状排列的,分辨率逐步降低,且来源于同一张原始图的图像集合。金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率。因此层级越高,图像越小,分辨率越低。
二、高斯金字塔
高斯金字塔的图像如下:

图像金字塔中的上采样和下采样分别通过OpenCV函数 pyrUp 和 pyrDown 实现。
这里的下采样与上采样,是根据图像的尺寸得出的(和金字塔的方向相反),向上图像尺寸加倍,向下图像尺寸减半。如图中Level0至Level1,图像尺寸减半,金字塔方向向上,为下采样。
下采样代码范例如下,将图片进行两次下采样,图片尺寸缩小到原先的1/4
dog =cv2.imread('1.png',cv2.IMREAD_GRAYSCALE)#灰度化
cv2.imshow('dog',dog)
cv2.waitKey(100000)
dog_down_1= cv2.pyrDown(dog)#下采样1
cv2.imshow('dog_down 1',dog_down_1)
cv2.waitKey(100000)
dog_down_2 = cv2.pyrDown(dog_down_1)#下采样2
cv2.imshow('dog_down_2',dog_down_2)
cv2.waitKey(100000)
上采样代码同理,将pyrDown更改为pyrUp,即能对图片进行上采样
原图与下采样运行结果对比如下


但需要注意的是,PryUp和PryDown不是互逆的,例如Level0 pyrDown后为Level1,但Level1 pyrUp后无法得到Level0。这是因为pyrUp是将图像首先在每个维度上扩大为原来的两倍,新增的行以0填充,然后再给指定的滤波器进行卷积去估计丢失像素的近似值。
同样以该图为例,将先运行出的face_down_2进行两次上采样
dog_down_1_up = cv2.pyrUp(dog_down_2)#上采样1
dog_down_2_up =cv2.pyrUp(dog_down_1_up)#上采样2
cv2.imshow('dog_down_2_up',dog_down_2_up)
cv2.waitKey(100000)
得到的结果与对比

能明显发现图片变得很模糊。
为了恢复原来更高的分辨率的图像,我们要获得由降采样操作丢失的信息,这些数据就和拉普拉斯金字塔有关系了。
三、拉普拉斯金字塔
L0 = face - face_down_2_up
dog_restore=L0+dog_down_2_up
cv2.imshow('dog_restore',dog_restore)
cv2.waitKey(100000)
cv2.imshow('L0',L0)
cv2.waitKey(100000)
最右侧为修复后的图像,可以看出图像基本复原成功。由代码可以看出,拉普拉斯金字塔的运作原理为将原图与进行采样复原后的像素差值进行存储后补充到采样复原图中,最左侧图即为储存的差值。
956

被折叠的 条评论
为什么被折叠?



