Sift算法-----part3
前言:知道现在,我们已经创建了尺度空间,并利用它计算出高斯差,这些是用来计算尺度不变的LOG,这些工作将会产生关键点。
找到关键点,有两个步骤:
1、在DOG图像中找到最大值和最小值的分布情况。
2、找到最大值和最小值的亚像素点。
DOG图像中的最大值和最小值分布
第一步就是粗略地找出最大值和最小值的分布情况。这很简单,你遍历每一个像素点和它的所有相邻点。这种检查不只在当前图像中,同时包括它在一个容器中的上一层和下一层图片。就像这样:
x表示当前像素点,绿色点表示x的周围像素点,如果x比周围26个点都大或者小,那么x点就是关键点。
通常一个非关键点的像素点,不需检查多个,检查几个像素点就会丢弃它。
注意那些像素点不用在一个容器中的最底层和最高层检查 ,他们一般不具有足够的相邻像素点去比较,所以不用去搭理他们。
一旦,这些完成任务,这些受到标记的点是近似的最大值和最小值,这些点使趋近最大值或者最小值是因为他们几乎都在一个像素点内。但是,我们不能排除那些在像素点之间数据,所以我们必须算出那些亚像素点。
红色的点表示像素点,而绿色点表示其中的极大值
找到亚最大(最小)像素点(http://www.china-vision.net/technology/soft/200708/6403.html):
使用这些已知的像素点数据,亚像素点的值能够被计算出。这能够对近似关键点使用taylor表达式求解出来。
数学上,他是这样定义的:
我们能够很容易地计算出这个方程式的极点,求解我们能得到亚像素的点。这些亚像素点增加了匹配的成功率和算法的稳定性。
实例:
SIFT的作者推荐2个这样的极值图,因此我们需要4张DOG图片,因而在一个容器中我们需要5张图片。
总结:
我们已经能够计算出DOG图片中的最大值和最小值,即关键点,下一步我们将对这些关键点进行检查,排除某些关键点,且听下回分解!
任何疑问或者建议,请留下评论!谢谢!O(∩_∩)O~