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: 會選擇質量高且穩定的特徵點,更適合後續的特徵追蹤和匹配任務,會對角點進行篩選,選擇較少但質量較高的角點。
相关推荐
州周25 分钟前
Ftp目录整个下载
linux·服务器·数据库
Jackey_Song_Odd25 分钟前
Ubuntu 24.04.1 解决部分中文字符(门、径)显示错误的问题
linux·ubuntu
kaixin_learn_qt_ing38 分钟前
Linux export命令
linux
余额不足1213841 分钟前
C语言基础十六:枚举、c语言中文件的读写操作
linux·c语言·算法
冷曦_sole1 小时前
linux-19 根文件系统(一)
linux·运维·服务器
AI大模型学徒1 小时前
Linux(二)_清理空间
linux·运维·服务器
云川之下1 小时前
【linux】 unshare -user -r /bin/bash命令详解
linux·bash·unshare
热心市民运维小孙1 小时前
Ubuntu重命名默认账户
linux·ubuntu·excel
Jackey_Song_Odd2 小时前
解决Ubuntu下无法装载 Windows D盘的问题
linux·ubuntu
乔巴不是狸猫2 小时前
第11周作业
linux