SIFT算法是在不同的尺度空间上查找关键点,而尺度空间的获取需要使用高斯模糊来实现 。
一维正态分布公式:
(x-μ)在高斯图像模糊中对应模糊半径,指的是模板元素到模板中心的距离。
eg: 二维模板大小为m*n,则模板上元素(x,y)对应的高斯公式为:
正态分布主要分布在3σ至-3σ,距离之外的像素可忽略不计,所以,图像处理只需要计算(6σ+1)*(6σ+1)的矩阵作为高斯矩阵模板,且σ值越大,图像越模糊。
图像二维高斯模糊
5*5的高斯模板(σ=0.6):
6.58573e-006 | 0.000424781 | 0.00170354 | 0.000424781 | 6.58573e-006 |
0.000424781 | 0.0273984 | 0.109878 | 0.0273984 | 0.000424781 |
0.00170354 | 0.109878 | 0.440655 | 0.109878 | 0.00170354 |
0.000424781 | 0.0273984 | 0.109878 | 0.0273984 | 0.000424781 |
6.58573e-006 | 0.000424781 | 0.00170354 | 0.000424781 | 6.58573e-006 |
分离高斯模糊
如图2.3所示,二维高斯模糊会损失一部分边缘像素,σ值越大,边缘像素损失越多,且二维高斯模糊模板越大,运算量也越大。对二维高斯模糊进行改进,提出了分离高斯模糊。分离高斯模糊就是水平方向进行一维高斯矩阵变换加上竖直方向的一维高斯矩阵变换。
使用O(n)表示时间复杂度,它是衡量一个算法消耗时间的量度。eg:计算f(x)=x^3+2x^2+5x-6中,随着x的不断趋向极端(即正无穷与负无穷)时,x^3越来越起主导作用,所以我们称这个算法的时间复杂度为O(3) 。
二维高斯模糊的时间复杂度为O(M*N*m*n) ,分离高斯模糊的时间复杂度为O(M*N*m)+O(M*N*n) ;m,n为高斯矩阵的维数,M,N为二维图像的维数。
分离高斯模糊的优点:1、算法的时间复杂度变低,即运算量变小;2、边缘损失的像素变少。