[小白学习教程之] 理解SIFT
在这篇教程中,我们通过对SIFT由简至繁的解释,来一步一步认识它。
Step1: SIFT是一种“图像”局部特征提取算法
什么是图像?
呐,你拿起手机,打开相机,对准目标,咔嚓一下。一幅图像就诞生了喔~。它保存在了你的手机里面,当然是以数字的形式喔。例如,下面这张奥巴马的照片就是图像,而它右边的数字就是保存在计算机里面的东西喔。
什么是特征?
特征是对一件事物的描述,例如:奥巴马的皮肤是黑色的,他是美国人。在这一描述中,黑色皮肤和美国人,就是我们提炼出来的关于奥巴马的特征。使用特征的目的,是便于将事物简化,而便于归类和区分,以快速地对一件事物进行识别,减少记忆负担。出现了两个人,一个皮肤白,一个皮肤黑,问,谁是奥巴马?我们能很快地通过皮肤黑,知道黑皮肤那个人是奥巴马。这是特征的区分性功能。还有一个功能是不变性。奥巴马可是会动的喔,他可以有不同的动作姿势,穿不同的衣服,在这些情况下,我们都要能识别出来,这个人是奥巴马喔。于是皮肤是黑色的这个特征就是奥巴马一直都不会变的一个特点喔,那记住这一点是不是很方便,在各种情况下都可以帮助我们去认出他。
对图像进行特征提取也是同样的目的。对于一幅图像或其中的某些区域,我们希望能通过一些数学运算,将原本由一大堆数字描述的图像或图像区域,变成由几十或几千个数字来描述,能方便我们用这些特征去对图像进行识别。
总结:特征是为识别服务的,有用的特征需要同时具备一定程度上的区分性和不变性。 |
什么是局部特征(local feature)?
局部是一个相对的概念,SIFT中提取的局部特征是组成一件事物的小块图像单元。例如,把图像中奥巴马的整个身体看做是一件事物,而其图像中的嘴角、眼角等小区域提取得到的特征,就是局部特征。
再比如,下面这幅图中,对ABCDEF这样子的小块图像进行特征提取,得到的特征就是局部特征。
为什么要提取局部特征呢?
因为:变量越少,观察结果上变化的可能性就越小。 |
有没有被吓到?“啊,为什么突然不友好了,放了一句晦涩难懂的话出来。”
没关系,睁大眼睛,请完成下面这个实验:请找出以下所有图片中,它们相似的地方。你会发现答案,一定是在局部。(呐,如果你学过概率统计,就懂方框中那句话了。这句话的道理还存在于其他算法思想中,读者可记住之后自行发散思维哟^_^)有没有被吓到?“啊,为什么突然不友好了,放了一句晦涩难懂的话出来。”
Step2: SIFT是Scale Invariant Feature Transform的缩写
在Step1中,我们理解了,想要从成千上万张图像中,找出跟我们想要找的事物相似的图像,我们可以提取图像的局部特征,我们找到相同的局部特征,比对它们,就可以知道哪张图像是我们期望找出来的图像。
然而,历史上出现过的局部特征提取方法,可并不只有SIFT这一种喔,那么SIFT究竟有什么特别之处?而为什么又要这么做呢?在这个步骤中,我们将更加深入地理解局部特征,解答这两个疑惑。
下面回到建筑物这幅图,继续做实验:请在图中有出现过ABCDEF的地方,打上对应的标记。你会发现,ABCD的标记特别多,而EF