过年休息了大半个月,今天开始继续学习OpenCV,今天学习OpenCV中的图像金字塔。图像金字塔是图像多尺度表达的一种,最主要的是用于图像的分割。同时,图像金字塔也被广泛用于各种视觉应用中。图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,通过对原始图像连续降采样获得,直到达到某个终止条件才停止降采样。
图像金字塔分为两种:
1.高斯金字塔(Gaussian pyramid)
2.拉普拉斯金字塔(Laplacian pyramid)
两者的简要区别:高斯金字塔用来向下降采样图像,而拉普拉斯金字塔则用来从金字塔底层图像中向上采样重建一个图像。
高斯金字塔
高斯金字塔采用向下降采样的方式采集图像数据,其向下采样(生成高斯金字塔)的具体操作为:
- 对图像进行高斯卷积
- 删除所有的偶数行和偶数列
因此,高斯金字塔得到的图像从低到高,每一层都为前一层的1/4大小,如下图所示:
OpenCV中测试结果图如下:
可以看出,每次降采样后图像都变为前一层图像的1/4大小。
拉普拉斯金字塔
拉普拉斯金字塔与高斯金字塔相反,每次向上采样后,图像都要比前一层图像大4倍,但是不能将拉普拉斯金字塔简单理解为高斯金字塔的“逆过程”,PryUp和PryDown不是互逆的,即PryUp不是降采样的逆操作。
拉普拉斯金字塔采用向上降采样的方式采集图像数据,其向上采样的具体操作为:
- 首先将维数扩大两倍(图像的宽和高各扩大2倍)
- 将新增的行、列处的值置为0
- 对新的图像进行高斯卷积(卷积核所有元素之和为4)
- 用原层次的高斯金字塔减去 3 中形成的图像
PryDown( )是一个会丢失信息的函数。为了恢复原来更高的分辨率的图像,我们要获得因向下降采样操作所丢失的信息,这些数据就和拉普拉斯金字塔有关系了。
下图是高斯金字塔及其逆形式——拉普拉斯金字塔的说明图:
拉普拉斯金字塔第 i 层的数学公式:
L i = G i − U P ( G i + 1 ) ⊗ g 5 × 5 L_i = G_i - UP(G_{i+1}) \otimes g_{5\times5} Li=Gi−UP(Gi+1)⊗g5×5
其中:G_i 表示高斯金字塔中第 i 层的源图像,G_{i+1} 表示高斯金字塔中第 i+1 层的图像, ⊗ \otimes ⊗表示卷积操作, g 5 × 5 g_{5\times5} g5×5为5×5的高斯核。
假设以图中最大的1号图为例,G_1 为源图像,G_2为高斯金字塔第2层的图像, U P ( G i