8.1 图像金字塔介绍
图像金字塔是图像多尺度表达中的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效结构。
简单来说,图像金字塔是**同一图像不同分辨率的子图集合。**图像金字塔最初用于机器视觉和图像压缩。
通过梯次向下采样获得,直到达到某个终止条件才停止采样。金字塔的底部是待处理图像的高分辨率表示,顶部是低分辨率的近似。
层级越高,图像越小,分辨率越低。
常见的两类图像金字塔
8.1.1 高斯金字塔
用于向下采样,主要的图像金字塔
8.1.1.1 下采样
通过高斯平滑和亚采样(subsampling)获得一系列下采样图像
原理:
-
将每一层从下往上编号即Gi到Gi+1
-
获取Gi+1的方法:
-
将Gi与高斯核卷积
-
将所有偶数行和列去除
-
每次处理完成后,图像只有原图的1/4
-
-
不停迭代上述步骤,就可以完成下采样,形成高斯金字塔
lena=cv.imread("lena.jpg")
print(lena.shape)
#向下采样,分辨率减小
dst=cv.pyrDown(lena)
print(dst.shape)
tip:向下采样会丢失图像信息
8.1.1.2 上采样
上采样是向下采样的相反过程,是指图片由小变大的过程
- 将图像在每个方向扩大为原来的两倍,新增的行和列由0补充
- 使用同样的内核(乘4)与放大后的图像卷积,获得新增像素的近似值
dst=cv.pyrUp(lena)
得到的图像即为放大的图像,但与原来图像相比比较模糊。因为缩放的过程中丢失了一些信息。如果想在缩小和放大的过程中 减少信息的丢失,这些数据形成了拉普拉斯金字塔。
tip:上采样和下采样是非线性过程,不可逆!
8.1.2 拉普拉斯金字塔
将下采样的图像再进行上采样操作,与原图作差得到残差图,为还原图像做准备。
拉普拉斯金字塔基于高斯金字塔,没有专门的函数。拉普拉斯金字塔大部分元素都是0,可用于图像压缩。
-
第0层拉普拉斯金字塔
#向下采样 dst=cv.pyrDown(lena) #向上采样 dst=cv.pyrUp(dst) lap0=lena-dst
- 第1层拉普拉斯金字塔
#拉普拉斯金字塔第一层
gas1=cv.pyrDown(lena)
gas2=cv.pyrDown(gas1)
dst1=cv.pyrUp(gas2)
lap1=gas1-dst1
cv.imshow("gas lap",np.hstack((gas1,lap1)))