生活随笔
收集整理的這篇文章主要介紹了
特征点的基本概念和如何找到它们
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、什么是特征點,它具有什么“特征”?
? ? 特征點、角點、關鍵點,這些概念雖然有細節上的不同,但是在我們這里統一稱為“特征”點,也就是具有特征性質的點。在圖像處理中,所謂“特征點”,主要指的就是“能夠在其他含有相同場景或目標的相似圖像中以一種相同的或至少非常相似的不變形式表示圖像或目標”,聽上去比較拗口,那么用比較直白的方法表述,就是對于“同一個物體或場景,從不同的角度采集多幅圖片,如果相同的地方能夠被識別出來是相同的。這些些具有‘尺度不變性的點或塊’稱為特征點”。 ? ??特征提取是圖像分析與圖像識別的前提,它是將高維的圖像數據進行簡化表達最有效的方式,從一幅圖像的M×N×3的數據矩陣中,我們看不出任何信息,所以我們必須根據這些數據提取出圖像中的關鍵信息,一些基本元件以及它們的關系。 ? ??特征點是那些經過算法分析出來的,含有豐富局部信息的點,經常出現在圖像中拐角、紋理劇烈變化等地方。特征點具有的所謂“尺度不變性”,就是指其在不同圖片中能夠被識別出來具有的統一性質。
? ? 圖中被圓圈標記的點是良好的追蹤點,而標有方框的點 - 即是尖銳邊界的點 - 都是差的選擇。如果你能夠在不同的圖片中,找到同一物體獨一無二的一個點,那么反過來你就能夠在不同的圖片上講這個物體定位出來。
? ? ?最后需要注意一點,“特征點”不僅僅是一個點,它還包括一系列局部的信息。甚至很多情況下,它本身就是具有面積的一小塊區域。
二、特征點具有哪些意義? ? ? ?對于計算機來說,圖像只是數據的存儲;只有對圖像進行特征分析后,才能夠進一步去識別圖像中的物體。因此特征點在識別、定位、拼接、跟蹤等多種圖像處理的細分類別中廣泛使用,是基礎并且廣泛運用的圖像處理知識。以拼接舉例: ? ? ?經典的圖像拼接中,因為目前計算機無法識別出圖片中的物體,所以需要有一種統一的計算方法,能夠告訴計算機不同圖片中同一物體的特征點,那么也就是得到了物體的位置和形態了;經過提純模型(經常是RANSAC)進一步對所獲得的點進行建模,可以獲得兩幅圖片之間較為精確的位姿關系,從而對準。 ? ? ?? ? ? ? 三、OpenCV中提供了那些特征點模型? ? ? 特征點尋找技術一直在發展,并且近些年出現的特征提取技術逐步具備“旋轉或尺度不變性或小的仿射變換的不變性"?。但即使是這樣,并沒有一種方法比其他的“明顯更好”。綜合掌握,根據實際情況選取才是合理的破題之道。 ? ? ?1、Harris-Shi-Tomasi特征檢測器和cv :: GoodFeaturesToTrackDetector ? ? ?最常用的角點定義是由哈里斯[Harris88]提出的, 這些角點,被稱為哈爾角點,可以被認為是原始的關鍵點;而后被Shi和Tomasi [Shi94]進行了進一步擴展,后者被證明對于大多數跟蹤應用來說是優越的。由于歷史原因,在OpenCV中叫做”GoodFeatures"; ? ? ?2、簡單的blob檢測器和cv :: SimpleBlobDetector ? ? ?提出“斑點”的概念。斑點本質上沒有那么明確的局部化,而是表示可能預期隨時間具有一定穩定性的感興趣區域。 ? ? 3、FAST特征檢測器和cv :: FastFeatureDetector ? ??最初由Rosten和Drummond [Rosten06]提出的FAST(加速段測試的特征),其基本思想是,如果附近的幾個點與P類似,那么P將成為一個很好的關鍵點。 ? ? 4、SIFT特征檢測器和cv :: xfeatures2d :: SIFT ? ??由David Lowe最初于2004年提出的SIFT特征(尺度不變特征變換)[Lowe04]被廣泛使用,是許多隨后開發的特征的基礎;SIFT特征計算花銷很大,但是具有高度的表達能力。 ? ? 5、SURF特征檢測器和cv :: xfeatures2d :: SURF ? ??SURF特征(加速魯棒特征)最初由Bay等人于2006年提出[Bay06,Bay08],并且在許多方面是我們剛剛討論的SIFT特征的演變。SURF所產生的特征不僅計算速度快得多,并且在許多情況下,它對SIFT特征觀察到的方向或照明變化的魯棒性也更強。 ? ? 6、Star / CenSurE特征檢測器和cv :: xfeatures2d :: StarDetector ? ??Star特征,也被稱為中心環繞極值(或CenSurE)功能,試圖解決提供哈爾角點或FAST特征的局部化水平的問題,同時還提供尺度不變性。 ? ? 7、BRIEF描述符提取器和cv :: BriefDescriptorExtractor ? ??BRIEF,即二進制魯棒獨立基本特征,是一種相對較新的算法,BRIEF不找到關鍵點;相反,它用于生成可通過任何其他可用的特征檢測器算法定位的關鍵點的描述符。 ? ? 8、BRISK算法 ? ??Leutenegger等人介紹的BRISK40描述符,試圖以兩種不同的方式改進Brief(Leutenegger11)。 首先,BRISK引入了自己的一個特征檢測器(回想一下,Brief只是一種計算描述符的方法)。 其次,BRISK的特征本身雖然與BRIEF原則相似,卻嘗試以提高整體功能的魯棒性的方式進行二值比較。 ? ? 9、ORB特征檢測器和cv :: ORB ? ??創建了ORB功能[Rublee11],其目標是為SIFT或SURF提供更高速的替代品。ORB功能使用非常接近于FAST(我們在本章前面看到的)的關鍵點檢測器,但是使用了基本上不同的描述符,主要基于BRIEF。 ? ? 10、FREAK描述符提取器和cv :: xfeatures2d :: FREAK ? ??FREAK描述符最初是作為Brief,BRISK和ORB的改進引入的,它是一個生物啟發式的描述符,其功能非常類似于BRIEF,主要在于它計算二進制比較的領域的方式[Alahi12]。 ? ? 11、稠密特征網格和cv :: DenseFeatureDetector類 ? ??cv :: DenseFeatureDetector class53的目的只是在圖像中的網格中生成一個規則的特征數組。 四、OpenCV中特征尋找的相關函數和機制有哪些? ? ??當進行跟蹤時,或者其他類型的用到關鍵點及其描述符的分析時,通常需要做三件事情。第一個是根據一些關鍵點的定義搜索圖像并查找該圖像中的所有關鍵點;第二個是為發現的每個關鍵點計算其描述符;第三個是通過將所找到的關鍵點的描述符與一些現有的描述符集進行比較,看看是否可以找到匹配項。當然匹配之后還有一些其他的后續工作。 ? ? 以上工作可以分類4步: 1、尋找? ? ??OpenCV一方面提供了比如“cv::goodFeaturesToTrack()"這樣的直接尋找特征的方法,但是一般情況下提供了統一抽象。cv :: KeyPoint對象為特征點;cv :: Feature2D表述為點的特征。 2、匹配? ? ? OpenCV同樣提供統一方法。cv :: DMatch對象,一般來說,匹配器將是一個嘗試將一個圖像中的關鍵點與其他單個圖像或稱為字典的其他圖像的集合進行匹配的對象。當找到匹配時,OpenCV通過生成cv :: DMatch對象的列表(STL向量)來描述它們。同時,cv:DescriptorMatcher類接口提供了三個函數match(),knnMatch()和 radiusMatch();對于每個函數,有兩個不同的變形 - 一個用于識別(需要一個特征列表并使用經過訓練的字典),另一個用于跟蹤(需要兩個特征列表)。 3、顯示 ? ? 一般的特征點都帶有顯示接口,你可以通過繪制特征點來獲得一個直觀的認識;或者在兩幅圖中將同樣的特征進行連線表示關系。 4、擴展 ? ??OpenCV中,cv :: calcOpticalFlowPyrLK()等函數在光流等運用中對特征點進行擴展。 感謝閱讀至此,希望有所幫助。 ?
總結
以上是生活随笔為你收集整理的特征点的基本概念和如何找到它们的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。