fast(features from accelerated segment test) 是一種特徵點檢測演算法。**原文《machine learning for high speedcorner detection》。
它的演算法流程是:
1. 影象中任意一點p,該點是我們要識別的是否為感興趣的點,假設其亮度為ip;
2. 設定乙個亮度閾值t;
3. 設定半徑為3,選擇p周圍的16個畫素;
4. 16個畫素中的n個相鄰畫素(作者設定n=12)的亮度小於ip-t或者大於ip+t,那麼這個點就是角點;
5. 考慮到演算法的計算速度,首先和ip比較1,5,9,13點的亮度。其中至少要有3個點滿足第4步的閾值準則;
6. 如果不滿足第5步,則該點不是角點,如果滿足第5步,則繼續檢查剩下的12個點是否滿足第4步的條件;
7. 重複上述步驟遍歷完影象上所有的畫素。
上述演算法有一些侷限性;
1. 如果n<12,則演算法的表現不好,因為會檢出過多的點;
2. 16個點的檢驗順序影響演算法的計算速度。
基於學習的特徵點檢測方法分為兩步:
1. 在需要檢測的場景用多張影象進行角點提取。設定乙個n和合適的閾值進行檢測。提取的特徵點作為訓練資料。
對於半徑為3的圓上的16個畫素點
這樣就得到三個子集pd,ps,pb。
kp=true表示該點是角點,kp=false表示該點不是角點。
2. 用第1步提取的特徵點進行訓練,使用id3演算法建立一顆決策樹,假設使用第x個畫素點進行決策樹的劃分,那麼對集合p得到的熵k是:
則資訊增益為
nms(non-maximal suppression)演算法的詳情請參考:nms(non-maximum suppression,非極大值抑制)演算法。
由於fast沒有計算角點響應函式,所以不能直接對結果特徵應用nms。作者定義了乙個v,對v應用nms。比較相鄰角點的v值,然後刪除v值較小的角點。
特徵點檢測學習 4 FAST演算法
fast特徵點檢測演算法 在眾多特徵點檢測演算法中,fast演算法的優勢是速度快,主要利用周圍畫素比較的資訊就可以得到特徵,簡單有效。fast演算法是基於角點檢測的影象特徵,其定義特徵點的依據是 如果某個畫素點和他周圍鄰域足夠多的畫素點處於不同區域,則這個畫素點就是特徵點,對於灰度圖來說,也就是該點...
FAST特徵點檢測演算法
定義 fast演算法定義特徵點是如果某個畫素點和他周圍領域足夠多的畫素點處於不同區域,那麼這個畫素點就是特徵點。對於灰度圖,及特徵點處灰度值與周圍足夠多畫素灰度值不同。threshold 邊緣軌跡與中心點差值。nonmaxsuppression 是否使用非極大值抑制 聚簇情況下使用 fastfeat...
matlab練習程式(FAST特徵點檢測)
演算法思想 如果乙個畫素與它鄰域的畫素差別較大 過亮或過暗 那它更可能是角點。演算法步驟 1.上圖所示,乙個以畫素p為中心,半徑為3的圓上,有16個畫素點 p1 p2 p16 2.定義乙個閾值。計算p1 p9與中心p的畫素差,若它們絕對值都小於閾值,則p點不可能是特徵點,直接pass掉 否則,當做候...