【基础】图像金字塔的概念

1. 图像金字塔是什么?

图像金字塔是由一幅图像的多个不同分辨率的子图所构成的图像集合。该组图像是由单个图像通过多次降采样产生的。如下图是一个图像金字塔的示例,从图中看到,图像金字塔是由一系列以金字塔形状排列的、自底向上分辨率逐渐降低的图像集合

image.png

2. 理论基础

下采样

图像金字塔是同一图像不同分辨率的子图集合,是通过对原图像不断地向下采样而产生的,即由高分辨率的图像产生低分辨率的近似图像。最简单的图像金字塔可以通过不断地删除图像的偶数行和偶数列得到。

例如,有一幅图像,其大小是N×N,删除其偶数行和偶数列后得到一幅(N/2)×(N/2)大小的图像。经过上述处理后,图像大小变为原来的四分之一,不断地重复该过程,就可以得到该图像的图像金字塔。

也可以先对原始图像滤波,得到原始图像的近似图像,然后将近似图像的偶数行和偶数列删除以获取向下采样的结果。

这里介绍两种滤波器:

  • 邻域滤波器:通过邻域平均求原始图像的近似图像,产生平均金字塔;

  • 高斯滤波器:使用高斯滤波器对原始图像进行滤波,这也是openCV函数cv2.pyrDown()采用的方法。

高斯金字塔是通过不断地使用高斯金字塔滤波、采样所产生的,其过程如下图:

image.png

经过上述处理后,原始图像与每次向下采样得到的结果图像共同构成了高斯金字塔。

上采样

在向上采样的过程中,通常将图像的宽度和高度都变为原来的2倍。这意味着,向上采样的结果图像的大小是原始图像的4倍。所以,上采样要补充大量的像素点。对新生成的像素点进行赋值,称为插值处理,该过程可以通过多种方式实现。

**有一种常见的向上采样,对像素点以补零的方式完成插值。**通常是在每列像素点的右侧插入值为零的列,在每行像素点的下方插入值为零的行。在下图中,左侧是要进行向上采样的4个像素点,右侧是向上采样时进行补零后的处理结果:

image.png

然后使用向下采样时所用的高斯滤波器(高斯核)对补零后的图像进行滤波处理,以获取向上采样的结果图像。但是需要注意,此时图像中四分之三像素点的值都是零。所以,要将高斯滤波器系数乘以4,以保证得到的像素值范围在其原有像素值范围内

小结

通过以上分析可知,向上采样和向下采样是相反的两种操作。但是,由于向下采样会丢失像素值,所以这两种操作并不是可逆的。也就是说,对一幅图像先向上采样、再向下采样,是无法恢复其原始状态的;同样,对一幅图像先向下采样、再向上采样也无法恢复到原始状态。