当前位置: 首页 > article >正文

OpenCV的FAST和goodFeaturesToTrack的區別

這兩個 OpenCV 的函數 FASTgoodFeaturesToTrack 都是用於特徵點檢測的,但它們有不同的用途和工作原理。以下是它們的區別:

1. FAST 函數

目的: FAST 是用來檢測圖像中的角點(KeyPoints),特別是高效的角點檢測器(Feature Detector)。它通常用於實時應用中,能夠快速地找到圖像中的角點。

參數:

  • InputArray image: 輸入圖像,必須是灰度圖像。
  • CV_OUT std::vector<KeyPoint>& keypoints: 輸出檢測到的特徵點(角點)。
  • threshold: 用來判斷是否為角點的閾值。該值越高,檢測到的角點數量越少,通常需要調整來達到最佳效果。
  • nonmaxSuppression: 是否執行非極大值抑制來過濾非最大角點。如果設置為 true,將只保留局部最大值的角點,這樣可以避免過多的角點。

特點:

  • 用途: 主要用來檢測快速角點(FAST角點檢測算法),適合用於需要快速計算的場合。
  • 算法: FAST 是一種基於亮度變化的角點檢測算法,會在每個像素周圍檢查圓形範圍的亮度變化來確定是否是角點。它主要檢測圖像中的角點,通常不會產生過多的特徵點,並且計算速度較快。
  • 應用場景: 用於需要快速檢測角點的場景,像是視覺跟踪、視覺SLAM等。

2. goodFeaturesToTrack 函數

目的: goodFeaturesToTrack 是用來檢測圖像中具有較高質量的特徵點,通常是角點(也叫做“強特徵點”)。該算法會選擇出圖像中比較穩定且容易追蹤的特徵點,並且會根據質量值進行過濾。

參數:

  • InputArray image: 輸入圖像,必須是灰度圖像。
  • OutputArray corners: 輸出特徵點的座標。
  • int maxCorners: 最大角點數量,該值控制返回的角點數量,會返回最強的 maxCorners 個角點。
  • double qualityLevel: 角點質量的閾值,用來控制選擇的角點質量。質量高的角點將會被選中。
  • double minDistance: 相鄰角點之間的最小距離,這有助於防止返回過於接近的角點。
  • InputArray mask: 掩膜圖像,可以限制角點檢測範圍。
  • int blockSize: 用來計算每個像素的角點質量的區域大小。
  • int gradientSize: 用來計算角點的梯度大小,預設為 3。
  • bool useHarrisDetector: 是否使用 Harris 角點檢測算法來計算角點的質量。若為 false,則使用 Shi-Tomasi 方法。
  • double k: Harris 算法中的常數 k,當 useHarrisDetector=true 時有效。

特點:

  • 用途: 用來檢測圖像中的強角點,並選擇出穩定且具有較高質量的角點。這些特徵點通常具有較高的區分度和可追蹤性。
  • 算法: goodFeaturesToTrack 使用 Shi-Tomasi 角點檢測算法(或可選的 Harris 算法)來選擇高質量的角點。該算法選擇質量較高的角點,並根據角點之間的最小距離過濾掉重疊的角點。
  • 應用場景: 用於光流法(如 calcOpticalFlowPyrLK)、特徵匹配等需要穩定、易於追蹤的角點的應用。

主要區別

  1. 檢測角點的質量:

    • FAST 主要用來快速檢測角點,沒有直接考慮角點的質量。它適用於需要快速檢測的情況。
    • goodFeaturesToTrack 會根據角點的質量選擇特徵點,能夠選擇出最具區分度的角點,通常更適合用於後續的追蹤或匹配任務。
  2. 角點的數量和篩選:

    • FAST 可以檢測圖像中所有的角點,但這些角點不一定是最強的,可能會有很多冗餘點。通過 nonmaxSuppression 可以過濾掉部分冗餘的角點。
    • goodFeaturesToTrack 設置了 maxCornersqualityLevel 等參數,會挑選出質量較高的角點,並且在距離上進行篩選,防止過多重疊的角點。
  3. 運行速度:

    • FAST 通常比 goodFeaturesToTrack 更快,因為它的算法本身設計上是為了速度優化的。
  4. 應用場景:

    • FAST 常用於即時處理和對速度要求高的場合(如視覺SLAM、即時物體追蹤等)。
    • goodFeaturesToTrack 更適合於需要精確選擇高質量特徵點的場景(如光流估計、視覺匹配等)。

總結

  • FAST: 速度快,適用於即時處理,對質量要求不高,更多的是快速檢測角點。
  • goodFeaturesToTrack: 會選擇質量高且穩定的特徵點,更適合後續的特徵追蹤和匹配任務,會對角點進行篩選,選擇較少但質量較高的角點。

http://www.kler.cn/a/454953.html

相关文章:

  • 工程设计优化问题:改进海鸥算法(Matlab)
  • Figma插件:提高设计工作效率
  • MySQL 构建 1000 万数据太慢?如何快速构建大量模拟数据?
  • 打破视障壁垒,百度文心快码无障碍版本助力视障IT从业者就业无“碍”
  • 理解有放回和无放回抽样 (Python)
  • 小波分析算法
  • 【Leetcode 热题 100】46. 全排列
  • C++ —— 模板类与友元
  • 数字化什么意思?从基础概念到行业应用的全面解读
  • Linux应用软件编程-多任务处理(进程)
  • 代码随想录Day52 101. 孤岛的总面积,102. 沉没孤岛,103. 水流问题,104.建造最大岛屿。
  • qt+Linux+arm多核CPU 亲和性
  • Python异常处理在“简易记事本”项目中的应用
  • 摄影构图与拍摄
  • XTUOJ 三角数
  • 数据分析篇001
  • 设计模式--装饰器模式【结构型模式】
  • MCS-51单片机常用汇编指令和特殊功能寄存器~
  • STM32开发笔记123:使用FlyMcu下载程序
  • 代码随想录Day49 42. 接雨水,84.柱状图中最大的矩形。