我們有時候在看一件事物的時候,無論物體離我們多遠,或者說角度怎么變化,我們好像都可以大概分辨出是什么東西或者人,這是什么原因呢?主要是因為事物本身局部具有一些穩定的特征,他們具有不變性(亮度,形狀,尺度等)。只要抓住這些特征,就很容易辨認出物體,那計算機是怎么抓住這些特征的呢。在圖像處理中,使用SIFT(Scale Invariant Feature Transform)算法來獲取這些特征圖像特征。
此方法由David Lowe于1999年發表于ICCV(International Conference on Computer Vision),并經過5年的整理和完善,在2004年發表于IJCV(International journal of computer vision)。由于在此之前的目標檢測算法對圖片的大小、旋轉非常敏感,而SIFT算法是一種基于局部興趣點的算法,因此不僅對圖片大小和旋轉不敏感,而且對光照、噪聲等影響的抗擊能力也非常優秀,因此,該算法在性能和適用范圍方面較于之前的算法有著質的改變。這使得該算法對比于之前的算法有著明顯的優勢,所以,一直以來它都在目標檢測和特征提取方向占據著重要的地位。
sift算法的流程Sifts算法主要有個流程組成:
DOG(高斯差分)尺度空間的極值檢測,
特征點定位
特征方向賦值
特征點描述
先來說一下什么叫尺度空間,我們知道,人的眼睛看一張圖像,會隨著距離的變化而變化(距離越遠,越模糊),而不管距離遠景,我們都能抓住事物的不變特征。所以我們需要實現模擬現實中圖像在人的眼中隨著距離變化的效果(越遠圖像越小、模糊,),計算機中則用尺度空間來模擬距離的遠近效果。
模糊程度通常是通過高斯模糊來創建,當我們對原圖像使用高斯模糊創建了一組圖像后,就相當于創建了一個尺度空間,通過圖像的模糊程度來模擬人在距離物體由遠到近時物體在視網膜上成像過程,距離物體越近其尺度越大圖像也越模糊,使用不同的參數,模糊圖像(分辨率不變),是尺度空間的另一種表現形式。公式如下:不解釋,不深究,具體去了解高斯模糊的知識。
不同σ的高斯函數決定了對圖像的平滑程度,越大的σ值對應的圖像越模糊。