SIFT算法原理
SIFT是世界上最强大的特征点检测算法之一。特征点检测确定了所有特征点的最终位置,决定了整个系统的精度和稳定性,这方面在适合于FPGA中硬件实现加速。通过合理的设计,可以实现实时的SIFT特征提取系统设计。
特称点检测一直是计算机视觉中备受关注指出,2004年,哥伦比亚大学的David Lowe提出SIFT算法,较好的解决了物体遮挡、旋转、视角变换引起的图像变形等问题。
SIFT算法获取图像特征点的主要思想:
(1)尺度空间极值点的检测:该算法的第一步是通过对原始图像进行高斯滤波,建立高斯金字塔,获得高斯差分来找到那感兴趣的关键点,也就是在以后的图像匹配中可能发挥作用的特征点。
唯一可能的尺度空间的核心是高斯函数。因此,图像的尺度空间定义为一个函数L(X;Y;σ),从尺度可变的高斯卷积生产G(X;Y;σ),输入图像I(X;Y)
为有效地检测尺度空间稳定关键点的位置,Lowe建议通过高斯差分获取图像的空间尺度极值函数D(X;Y;σ),可以通过一个乘法系数K分离出来的两个相近的尺度进行计算。
在尺度空间通过一个常量系数K,初始图像与高斯函数局部卷积。如下图左侧
检测D(X;Y;σ)局部的最大值和最小值,每个采样点与其当前图像和9个尺度相邻,找最小值与最大值。
(2)关键点的定位:在第(1)步中找到的点,需要经过稳定性的筛选才能成为真正的关键点。
在(1)中确定了关键点,在此步骤进行筛选。
高斯函数中一个定义不情的峰值会有一个大的主曲率边缘和一个小的在垂直方向。通过一个2×2的Hessian矩阵,在关键点的位置和尺度上计算主曲率H。
根据H的特征值和D的主曲率比例关系,通过计算比例不用明确计算特征值。
(3)方向指定:根据每一个关键点邻域内点的梯度方向,为关键点分配梯度方向和梯度的模。所有将来对图像数据的操作都被转化成为相关被分配的方向,尺度和区域,因此对这些转换提供一个不变性。
在像素样本L(x;y)在尺度上,梯度幅度m(x;y)和方向 (x;y)如下
其中方向直方图覆盖360度
通过梯度主导方向确定峰值,检测直方图中的最高峰值。不到80%的最峰值被用于创建一个同方向的关键点。
这样,通过位置,尺度,方向就可以确定SIFT特征值
(4)关键点描述符:在每个关键点周围区域被选择的尺度上,测量局部图像的梯度,将特征点以多维向龄的形式描述出来。
以特征点为中心取16*16的邻域作为采样窗口,将采样点与特征点的相对方向通过高斯加权后归入包含8个bin的方向直方图,最后获得4*4*8的128维特征描述子。
最后,匹配关键点。
环视全景视频系统主要步骤:
输入4路视频,在初始化阶段对边缘局部位置进行SIFT特征提取、特征点初匹配、特征点精确匹配,在实时阶段通过加权平均法融合视频,输出合成视频。
图 主要步骤
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |