<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ##特征點檢測之FAST算法 在上一節中,記錄了Harris算子檢測圖像特征點的定義和基于OpenCV的實現方法,它基于兩個正交方向上的強度變化率。本節記錄另一種特征點檢測算子FAST(Features from Accelerated Segment Test),它依賴少數像素的比較來確定是否接受一個特征點,其檢測效率要好于Harris。 與Harris算法相同,FAST特征算法需要定義什么是特征點。這次的定義基于假定特征點周圍的圖像強度,通過檢查候選像素的周圍一圈像素來決定是否接受這一個特征點。與中心點差異較大的像素如果組成連續的圓弧,并且弧長大于圓周長的3/4,則可判斷為特征點。 在此基礎上,算法還使用了額外的技巧進行加速。首先測試一個圓圈上被90度分隔的四個點(如頂部、底部,左側和右側四個點),如果要滿足FAST的定義條件,四個點中至少要有三個點必須同時大于或小于中心像素。如果條件不成立,則該點可以直接被移除而不需要進一步的驗證。在實踐中,大部分的像素點可以通過這個測試進行移除,因此該算法非常高效。 和Harris方法相同的是,可以在找到的角點上執行非極大值抑制,因此需要指定角點強度的測量方法。 這里可以使用OpenCV 2的通用接口來創建任意的特征檢測器,比如FAST檢測器的使用方法如下: ~~~ // 創建特征點的向量 std::vector<cv::KeyPoint>keypoints; // 構造FAST特征檢測器 cv::FastFeatureDetector fast(75); // 進行檢測 fast.detect(image, keypoints); ~~~ 同時,為了方便標記特征點,OpenCV提供了通用的特征點繪制函數cv::drawKeypoints,其調用方法如下: ~~~ // 通用的特征點繪制函數 cv::drawKeypoints(image, // 輸入圖像 keypoints, // 特征點向量 image, // 輸出圖像 cv::Scalar(255,255,255), // 特征點顏色 cv::DrawMatchesFlags::DRAW_OVER_OUTIMG); // 繪制標記 ~~~ 通過指定選中的繪制標記,可以看到輸出圖像中特征點均得到了繪制: ![](https://box.kancloud.cn/2015-12-30_5683a75bf0de8.jpg) 完整的實現代碼如下,只需修改main函數: ~~~ #include <QCoreApplication> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/features2d/features2d.hpp> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 輸入圖像 cv::Mat image = cv::imread("c:/031.jpg", 0); cv::namedWindow("Original Image"); cv::imshow("Original Image", image); // 特征點的向量 std::vector<cv::KeyPoint>keypoints; // 構造FAST特征檢測器 cv::FastFeatureDetector fast(75); // 進行檢測 fast.detect(image, keypoints); // 通用的特征點繪制函數 cv::drawKeypoints(image, // 輸入圖像 keypoints, // 特征點向量 image, // 輸出圖像 cv::Scalar(255, 255, 255), // 特征點顏色 cv::DrawMatchesFlags::DRAW_OVER_OUTIMG); // 繪制標記 cv::namedWindow("Fast Feature"); cv::imshow("Fast Feature", image); return a.exec(); } ~~~ FAST算法可以獲得非常快速的特征點檢測,在需要考慮運行速度的時候可以選用,比如在高幀率的視頻序列中進行視覺跟蹤。 關于FAST特征算法的詳細描述,可參考以下論文: The article by E.Rosten, T.Drummond, Machine Learning for High-speed Corner Detection, In European Conference on Computer Vision, pp.430-443, 2006
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看