图像金字塔

1.原理
一般情况下,我们要处理是一副具有固定分辨率的图像。但是特别情况下我们需要对同一个图像的不同分辨率的子图像进行处理,如查找图像中的某个目标,如人脸,我们不知道目标在图像中的尺寸大小。这种情况下,我们需要创建一组图像,这些图像是具有不同分辨率的原始图像。我们把这组图像叫做图像金字塔。就是同一图像的不同分辨率的子图集合。我们把最大的图像放在底部,最小的放在顶部,看起来就像一座金字塔。
有两类:高斯金字塔和拉普拉斯金字塔。
1.1高斯金字塔
高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的。顶部图像中的每个像素值等于下一层图像中5个像素的高斯加权平均值。这样操作一次一个MxN的图像就变成了一个M/2xN/2的图像。所以这幅图像的面积就变为原来图像面积的四分之一。这被称为Octave。连续这样的操作,我们就会得到一个分辨率不断下降的图像金字塔。可以使用函数cv2.pyrDown()和cv2.pyrUp()构建图像金字塔。
图像金字塔
向下采样(逐渐丢失图像)
cv2.pyrDown从一个高分辨率大尺寸的图像向上构建一个金字塔(尺寸变小,分辨率降低)
对图像G_i进行高斯内核卷积
将所有偶数行和列去除
结果图像只有原图的四分之一。高斯核卷积运算就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值(权重不同)经过加权平均后得到。通过对输入图像(原始图像)不停迭代以上步骤就会得到整个金字塔。同时我们也可以看到,向下取样会逐渐丢失图像的信息。

向上采样(放大图像)
cv2.pyrUp从一个低分辨率小尺寸的图像向上构建一个金字塔(尺寸变大,但分辨率不会增加)
将图像在每个方向扩大为原来的两倍,新增的行和列以0填充
使用先前同样的内核(乘以4)与放大后的图像卷积,获得 “新增像素”的近似值
图像金字塔

1.2.拉普拉斯金字塔
拉普拉斯金字塔可以由高斯金字塔计算得来。公式如下:
图像金字塔

图像金字塔
拉普拉斯金字塔的图像看起来就像是边界图,其中很多像素都是0,常被用在图像压缩中。

2.使用金字塔进行图像融合
在图像缝合中,由于连接区域图像像素的不连续,整幅图看起来会很差,金字塔就可以实现无缝连接。
图像融合的两个重要作用为:
1.实现两个图像的无缝连接,下面用苹果和橘子的例子说明
2.图像压缩,从苹果和橘子的例子中,读者可以体会如何利用小图像(被高斯金字塔变换后的图像)和几层拉普拉斯金字塔表示大图像信息(拉普拉斯金字塔即使图像很大,由于大部分为黑色,可认为是0,因此压缩后数量很小)
读入两幅图
构建各自的高斯金字塔(6层)
根据高斯金字塔计算拉普拉斯金字塔
在拉普拉斯的每一层进行图像融合
根据融合后的图像金字塔重建原始图像。
如何重建原始图像过程
图像金字塔
Difference of Gaussian(DOG)是高斯函数的差分。可以通过图像与高斯函数进行卷积得到一副图像的低通滤波结果,即去噪过程,这里的高斯和低通高斯式一样的,是一个函数,即为正态分布函数.高斯函数为:
G(x)=12πσ2−−−−√e−x22σ2
G(x)=12πσ2e−x22σ2

那么Difference of Gaussian即高斯函数查分是两附图高斯图像的差.即:
f(x;μ,σ1,σ2)=1σ12π−−√e−(x−μ)22μ2−1σ22π−−√e−(x−μ)22σ22
f(x;μ,σ1,σ2)=1σ12πe−(x−μ)22μ2−1σ22πe−(x−μ)22σ22
定义:就是把同一张图像在不同的参数下做高斯模糊之后的结果相减,得到的输出图像.称为高斯不同(DOG).
高斯不同式图像的内在特征,在灰度图像增强\角点检测中经常用到.
对于采用的每一层我们都可以做DOG,然后再做下一步的采样
通过高斯不同可以获得图像的轮廓,或者角点.