[ASIFT0]ASIFT算法深⼊讲解
ASITF算法出现已经很长时间了,这个算法主要是解决SIFT等特征提起算法在影像有较⼤倾斜⾓度时,同名点对提取较少的问题。有⼀些关于该算法的应⽤和改进算法效率的中⽂⽂章,⼀些博客也做了基本的介绍,但是总感觉⼤多是⾛马观花,讨论的不深⼊,希望对⼤家有所帮助。
1. 算法流程
2. 算法细节
2.1 采样点的产⽣
2.2 算法中反⾛样⾼斯滤波应⽤原理
2.3 双分辨率原理(two-resolution acceleration)
3. 算法伪代码实现
1. 算法流程
ASIFT算法就是为了解决SIFT、ORB、SURF等特征描述算⼦倾斜匹配的问题。上⾯的这些算法可以很
好的应对尺度、旋转情况下的匹配,但是对于倾斜影像的特征点匹配只能提取很少量的特征,所以作者在提出ASIFT来解决这个问题。
attendant
这个算法的假设是:对于光滑的平⾯,在局部可以建⽴仿射变化模型代替投影变化模型。基于此,作者形象化的建⽴⼀个半球形空间,通过球形中的经度和纬度唯⼀的确定相机的空间位置。在这些空间位置上,对图像进⾏模拟,模拟所有可能的仿射扭曲。然后对模拟图像进⾏SIFT特征点匹配,进⽽实现算法的仿射不变性匹配算法。
广州舞蹈培训
2. 算法细节
2.1 采样点的产⽣
这些扭曲由两个参量决定:经度(⽔平⾓度)φ 和纬度(垂直⾓度)θ 。倾斜度参数 t 完成:t = 1 cosθ。设原始图像为 u( x , y ),原始图像在 X 轴上倾斜度为 t 的变换由 u ( x , y ) → u (t x ,y)得到。对数字图像来说,倾斜图像由具有⽅向性的 t 倍⼆次采样(t-subsampling)得到。
为使 ASIFT 算法对任何仿射变换具有不变性,倾斜度t和⾓度φ 必须具有较⾼精度。采样间隔由⾃然图像的多次实验得到。在较⼤的θ 下,较⼩的Δθ改变便能使图像产⽣较⼤的扭曲。对t 进⾏⼏何级数的采样可满⾜这⼀需求。⼀般来说,采样⽐率Δt应与⾓度φ⽆关。倾斜度最佳采样间隔应是Δt =1.414。
同样的,对⽔平采样来说,当 θ = arccos1/t增加时,⽔平采样的精度必须增加。在较⼤的垂直⾓度θ下,图像⽔平⾓度 Δφ 较⼩的变化即能使图像产⽣较⼤扭曲。⽂献[12]中提出,⽔平最佳采样间隔应是Δφ =72/t。
下图说明了不规则采样参数 θ = arccos1/t和φ 在半球体上的显⽰情况。采样点集中在⾚道区域。
得到的θ,就是45,60,70,75,80. 得到了下图中右图所⽰的采样位置。
按照参数 θ = arccos1/t和φ 进⾏抽样。⿊⾊为采样点。左图为半球体沿Y 轴半球体透视图。右图为沿 Z 轴的半球体透视图。θ 值如图所⽰。
catch是什么意思
2.2 算法中反⾛样⾼斯滤波应⽤原理
算法中存在对图像重新计算size的过程,所以当图像被缩⼩的时候,然后对图像进⾏反⾛样的⾼斯滤波()。它要求之前在X 轴上有⼀次抗⾛样处理(antialiasing filter),最⼤限度的减少图像失真。该滤波由标准差为c的⾼斯卷积完成。在⽂献[1]中 Lowe 建议该值取c = 0.8。⽂献[15]中证明了该取值图像失真度较⼩。
对图像进⾏旋转变换和倾斜变换可以模拟有限的⼀些不同⽔平⾓度,垂直⾓度拍摄图像。对这些参数进⾏采样能保证模拟图像在不同的φ 和θ 引起的视⾓变换下保持近似。所有模拟倾斜后的图像将由 SIFT 算法进⾏匹配⽐较。
2.3 双分辨率原理
有的博⽂上说“在实际应⽤中,可能会存在不同分辨率下的图像匹配问题。ASIFT 遇到不同分辨率的图像时可归结到低分辨率下去实现。”这是论⽂中采⽤双分辨率的原因,但是我的理解不是这样的。通过对论⽂原⽂的理解,双分辨率是为了加速ASIFT算法。在低分辨率图像中,找到能提取最多同名点的
⼀种变化矩阵,然后直接将这个矩阵应⽤在⾼分辨率的图像匹配中,最后达到能够最快的实现较好的匹配结果。
⾸先,程序选择低分辨率搜索下会产⽣匹配对的仿射变换,然后在原始查询图像以及搜索图库中模拟所选的仿射变换,最后运⽤ SIFT 算法⽐较模拟仿射变换后的图⽚。两种不同分辨率下的解决办法如下所述:
bodyslam(1)、采⽤系数 K × K⼆次采样查询图⽚ u 和待搜索图⽚ v。u′ = SK*GK*u and v′ = SK*GK*v
因为是降低图像的分辨率,故使⽤⾼斯做反⾛样平滑滤波GK,为 K×K⼆次采样。
(2)、低分辨率下的 ASIFT 算法:对查询图⽚u′和搜索图⽚v′ 应⽤ ASIFT 算法;
(3)、确定u′ 和v′ 中可能产⽣最多匹配对的 M 种仿射变换;
(4)、⾼分辨率下的 ASIFT:在原始图像 u 和 v 上使⽤ ASIFT 算法,但是模拟倾斜时只使⽤这 M 种仿射变换。
上图中左图为低分辨率的 ASIFT 算法,采⽤了3 × 3次⼆次采样。找到 19 个匹配点。右图为⾼分辨率 ASIFT 算法,找到51 个点。
3. 算法伪码实现
Algorithm 1: ASIFT 特征点计算
Input : Image u, tilt sampling step δt = √2, tilt sampling range n = 5, rotation sampling step factor b = 72 Output: ASIFT keypoints (referenced by tilt and rotation values)
for t = 1,δt,δt^2 ,··· ,δt^n // loop over tilts
do
if t == 1 // when t = 1 (no tilt),journalist
then theta=0 // calculate scale-, rotation- and translation-invariant features on the original image
key(t, theta) = SIFT(u) // C++ routine: compute sift keypoints粉戏
el
for theta = 0,b/t,2b/t,··· ,kb/t (such that kb/t < 180) // loop over rotations (angle in degrees)go over
do ur = rot(u, theta) // rotate image (with bilinear interpolation)
uf = G(0.8t)*ur // anti-aliasing filtering (G(0.8t) is a Gaussian convolution with kernel standard deviation equal to 0.8t). This 1-dimensional convolution is made in the vertical direction, before sub-sampling in the same direction.
ut = tilt(uf, t) // tilt image (subsample in vertical direction by a factor of t)
key(t, theta) = SIFT(ut) // calculate scale-, rotation- and translation-invariant features.
endif
Algorithm2:特征点匹配
Input : ASIFT keypoints of the two images: key1 and key2
Output: Matched keypoints: matchinglist
for t1 = 1,δt,δt^2 ,··· ,δt^n // loop over tilts on image 1
do
if t1 == 1 // when t1 = 1 (no tilt), no rotation simulated
then theta1 all = [0]
el
theta1 all = [0, b/t1, 2b/t1, ..., kb/t1] (such that kb/t1 < 180)
for theta1 in theta1 all // loop over rotations on image 1 (angle in degrees)
do
for t2 = 1,δt,δt^2 ,...,δt^n // loop over tilts on image 2
do
if t2 == 1 // when t2 = 1 (no tilt), no rotation simulated
then theta2 all = [0]
el
theta2 all = [0, b/t2, 2b/t2, ..., kb/t2] (such that kb/t2 < 180)
charterparty王长喜十二句作文法
上海美发学校for theta2 in theta2 all // loop over rotations on image 2 (angle in degrees)
do matchinglist(t1, theta1, t2, theta2) = SIFT match(keys1(t1, theta1), keys2(t2, theta2)) // Matching the keypoints between the two simulated images.
从程序伪代码中可以看到,⼀、ASIFT算法使⽤双线性插值的⽅法进⾏对图像进⾏旋转theta,
⼆、然后进⾏反⾛样滤波
三、在垂直⽅向进⾏采样 获得模拟图像
四、对模拟图像进⾏SIFT提取特征点
后记:对于ASIFT的研究,现在已经不是热点。但是关于ASIFT的效率的提升,以及对于宽基线遥感影像的匹配,应该还是有⼀定的研究价值。