一.高斯滤波器
高斯滤波器:使用正态分布计算的一种卷积模板,利用高斯滤波器和图像进行卷积运算,可对图像进行模糊处理。公式如下(二维高斯滤波器):
G ( x , y ) = 1 2 π σ 2 e − ( x − m / 2 ) 2 + ( y − n / 2 ) 2 2 σ 2 \mathrm{G}(x, y)=\frac{1}{2 \pi \sigma^{2}} e^{-\frac{(x-m / 2)^{2}+(y-n / 2)^{2}}{2 \sigma^{2}}} G(x,y)=2πσ21e−2σ2(x−m/2)2+(y−n/2)2
利用python绘制高斯滤波器,代码如下:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
x = np.linspace(-3, 3, 1000)
y = np.linspace(-3, 3, 1000)
x, y = np.meshgrid(x, y)
w0 = 1
gaussian = np.exp(-((pow(x, 2) + pow(y, 2)) / pow(w0, 2)))
# 二维面振幅分布图
plt.figure()
plt.imshow(gaussian)
# 三维曲面振幅分布图
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, gaussian, cmap='jet')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
绘制的二维高斯曲面如下:
当然上面只是一个连续的曲面,在对图像进行高斯模糊的过程中需要的是高斯模板,这个模板和图像卷积便可得到高斯模糊图像。
二.高斯金字塔
高斯金字塔主要是为了得到不同尺度的图片,这些图片的尺度必须是连续的,所以要对图片进行高斯滤波。高斯金字塔是一个原始图像,产生几组(octave)每一组中又包含着几层(interval)。结构如下:
高斯金字塔的构建主要包括以下4个过程:
- 1.金字塔的阶数(O)的确定
- 2.每一组层数(S)的确定
- 3.每一层的尺度(N)的确定
- 4.下一组的图片降采样母本的确定
-
金字塔的阶数(O):一般为4,也可以根据图像的大小来选择,但需要满足下列关系:
∣ O = [ log 2 ( min ( M , N ) ) ] − 3 \mid \mathrm{O}=\left[\log _{2}(\min (M, N))\right]-3 ∣O=[log2(min(M,N))]−3
其中M,N为图像的行数和列数。
-
每一阶的层数(S):一般选择5或者6,一般选择6的时候效果最好。在这边就要根据前面的说明,特征点的选举是要在相邻的两层差分金字塔上面进行检测的,所以要得到N个尺度的特征点,就要在层的差分金字塔上检测,(自己画个图就ok了),然而要产生N+2层的差分金字塔,就要有N+3层的高斯金字塔,这样相邻的相减,才能产生N+2层差分。注意:这里的检测都是同阶里面不同层的操作。所以S = N + 3。记住这个N,有用!文章来源:https://www.toymoban.com/news/detail-404884.html
-
尺度因子N的选择文章来源地址https://www.toymoban.com/news/detail-404884.html
到了这里,关于SIFT四部曲之一:高斯滤波的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!