OpenCV Python - 特徵檢測



在影像處理的背景下,特徵是影像中關鍵區域的數學表示。它們是影像視覺內容的向量表示。

特徵使得對它們進行數學運算成為可能。各種計算機視覺應用包括目標檢測、運動估計、分割、影像對齊等。

任何影像中的突出特徵包括邊緣、角點或影像的一部分。OpenCV 支援**Harris 角點檢測**和**Shi-Tomasi 角點檢測**演算法。OpenCV 庫還提供了實現**SIFT**(尺度不變特徵變換)、**SURF**(加速魯棒特徵)和 FAST 演算法進行角點檢測的功能。

Harris 和 Shi-Tomasi 演算法是旋轉不變的。即使影像旋轉,我們也可以找到相同的角點。但是,當影像放大時,如果影像,角點可能不再是角點。下圖描述了這一點。

Shi Tomasi

D.Lowe 的新演算法,**尺度不變特徵變換**(SIFT)提取關鍵點並計算其描述符。

這是透過以下步驟實現的:

  • 尺度空間極值檢測。
  • 關鍵點定位。
  • 方向分配。
  • 關鍵點描述符。
  • 關鍵點匹配。

就 OpenCV 中 SIFT 的實現而言,它從載入影像並將其轉換為灰度影像開始。**cv.xfeatures2d.SIFT_create()** 函式建立一個 SIFT 物件。

示例

呼叫其**detectAndCompute()** 方法獲取關鍵點,這些關鍵點繪製在原始影像的頂部。以下程式碼實現了此過程

import numpy as np
import cv2 as cv
img = cv.imread('home.jpg')
gray= cv.cvtColor(img,cv.COLOR_BGR2GRAY)
sift = cv.SIFT_create()
kp = sift.detect(gray,None)
img=cv.drawKeypoints(gray,kp,img)
cv.imwrite('keypoints.jpg',img)

輸出

原始影像和繪製了關鍵點的影像如下所示:

這是一張**原始影像**。

Scale Space

下圖是**帶有關鍵點的影像**:

SIFT
廣告

© . All rights reserved.