opencv圖像演算法
⑴ 如何使用opencv中的NCC演算法實現兩幅圖像的相似性判斷
因此當模板大小確定後,SAD演算法的速度最快,有了SAD演算法。
再然後是計算區域互相關性的NCC演算法。
以上三種演算法中,SAD演算法最簡單。
然後SAD相似的SSD。NCC演算法與SAD演算法相比要復雜得多。
⑵ OpenCV+Python特徵提取演算法與圖像描述符之SIFT / SURF / ORB
演算法效果比較博文
用於表示和量化圖像的數字列表,簡單理解成將圖片轉化為一個數字列表表示。特徵向量中用來描述圖片的各種屬性的向量稱為特徵矢量。
參考
是一種演算法和方法,輸入1個圖像,返回多個特徵向量(主要用來處理圖像的局部,往往會把多個特徵向量組成一個一維的向量)。主要用於圖像匹配(視覺檢測),匹配圖像中的物品。
SIFT論文
原理
opencv官網解釋
實質是在不同的尺度空間上查找關鍵點(特徵點),並計算出關鍵點的方向。SIFT所查找到的關鍵點是一些十分突出,不會因光照,仿射變換和噪音等因素而變化的點,如角點、邊緣點、暗區的亮點及亮區的暗點等。
尺度不變特徵轉換(Scale-invariant feature transform或SIFT)是一種電腦視覺的演算法用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變數。
其應用范圍包含物體辨識、機器人地圖感知與導航、影像縫合、3D模型建立、手勢辨識、影像追蹤和動作比對。
對現實中物體的描述一定要在一個十分重要的前提下進行,這個前提就是對自然界建模時的尺度。當用一個機器視覺系統分析未知場景時,計算機沒有辦法預先知道圖像中物體的尺度,因此我們需要同時考慮圖像在多尺度下的描述,獲知感興趣物體的最佳尺度。圖像的尺度空間表達指的是圖像的所有尺度下的描述。
KeyPoint數據結構解析
SURF論文
原理
opencv官網解釋
SURF是SIFT的加速版,它善於處理具有模糊和旋轉的圖像,但是不善於處理視角變化和光照變化。在SIFT中使用DoG對LoG進行近似,而在SURF中使用盒子濾波器對LoG進行近似,這樣就可以使用積分圖像了(計算圖像中某個窗口內所有像素和時,計算量的大小與窗口大小無關)。總之,SURF最大的特點在於採用了Haar特徵以及積分圖像的概念,大大加快了程序的運行效率。
因為專利原因,OpenCV3.3開始不再免費開放SIFT\SURF,需要免費的請使用ORB演算法
ORB演算法綜合了FAST角點檢測演算法和BRIEFF描述符。
演算法原理
opencv官方文檔
FAST只是一種特徵點檢測演算法,並不涉及特徵點的特徵描述。
論文
opencv官方文檔
中文版
Brief是Binary Robust Independent Elementary Features的縮寫。這個特徵描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特徵點附近隨機選取若干點對,將這些點對的灰度值的大小,組合成一個二進制串,並將這個二進制串作為該特徵點的特徵描述子。文章同樣提到,在此之前,需要選取合適的gaussian kernel對圖像做平滑處理。
1:不具備旋轉不變性。
2:對雜訊敏感
3:不具備尺度不變性。
ORB論文
OpenCV官方文檔
ORB採用了FAST作為特徵點檢測運算元,特徵點的主方向是通過矩(moment)計算而來解決了BRIEF不具備旋轉不變性的問題。
ORB還做了這樣的改進,不再使用pixel-pair,而是使用9×9的patch-pair,也就是說,對比patch的像素值之和,解決了BRIEF對雜訊敏感的問題。
關於計算速度:
ORB是sift的100倍,是surf的10倍。
對圖片數據、特徵分布的一種統計
對數據空間(bin)進行量化
Kmeans
邊緣:尺度問題->不同的標准差 捕捉到不同尺度的邊緣
斑點 Blob:二階高斯導數濾波LoG
關鍵點(keypoint):不同視角圖片之間的映射,圖片配准、拼接、運動跟蹤、物體識別、機器人導航、3D重建
SIFT\SURF