图像处理---高斯金字塔在图像处理过程中具体是如何实现的?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38906523/article/details/79960519

先上sift图像金字塔的图

如果要说这种图像采样结构是金字塔的话,那也是玛雅人的金字塔而不是埃及人的金字塔。因为这个金字塔是明显分级的。英文Octave是音乐上一个八度的意思,在这里指的是一组图像。这一组图像的分辨率是相同的,但是采用了不同的高斯函数进行滤波,因此从模糊程度上看(或者说从关注的尺度上看是有区别的。),而不同组的图像具有不同的分辨率,在尺度上的差别就更大。

那么回到题主的问题。为什么已经使用了不同尺度的高斯函数进行滤波还需要引入高斯金字塔呢?这是因为SIFT算法希望能具有更高的尺度分辨率(也就是希望相邻尺度的变化比较精细),所以就需要有很多层。如果不用高斯金字塔,都在原始分辨率上靠采用不同的高斯函数实现多尺度检测,那么对于比较粗尺度的特征提取在计算量上就相当浪费。因为在保持图像原始分辨率不变的情况下,提取粗尺度特征需要高斯函数的方差较大,相应的滤波窗口也比较大,计算量会激增,而由于图像在大尺度上的模糊,保持原始分辨率已经没有必要了,这种计算消耗就更是得不偿失。所以采用高斯金字塔是为了高效地提取不同尺度的特征。

不同octave之间的尺度差异靠高斯金字塔在分辨率上的区别实现,同一个octave内部不同层之间的尺度差异靠高斯函数的方差变化来实现。另外SIFT在DOG问题上并不是使用DOG函数直接滤波,而是用相邻两层的高斯滤波结果相减得到的,为什么要这样呢?

也是为了节省计算量。因为如果直接采用DOG函数,为了提取不同的尺度,就必须逐渐扩大DOG函数的窗口,这会引起计算量的增加。在实际操作中,SIFT首先对当前octave对应的分辨率的采样图像用一个窗口相对较小的高斯函数滤波,之后同一个octave的第2层一直到第k层,都是通过对前一层已经滤波过的结果再进行一次高斯滤波。对一副原始图像用方差为\sigma^2的高斯函数连续做两次滤波的结果,相当于对这幅图像直接用一个2\sigma^2的高斯函数做一次滤波。所以每次都在前一层的滤波结果基础上进行滤波,跟对原始图像分别用不同窗口大小的高斯函数滤波的结果是一样的,但是因为避免了滤波函数窗口的扩大,可以有效减少计算量。

很好的解释,分享分享。
阅读更多
博主设置当前文章不允许评论。

博主推荐

换一批

没有更多推荐了,返回首页