Python+OpenCV|AKAZE特徴量

画像処理とOpenCV




AKAZE記述子

FED(fast explicit diffusion)と呼ばれる数学的手法を用いて大幅な高速化を図っている。
さらに、M-LDB(robust modified-local difference binary)という独自の特徴量記述子を定義し、画像内の勾配情報を有効活用している。

論文

Fast explicit diffusion for accelerated

Python+OpenCV

import cv2

img = cv2.imread('haruna_kankore.png')
 
akaze = cv2.AKAZE_create() 
kp = akaze.detect(img)
img_akaze = cv2.drawKeypoints(img, kp, img, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
cv2.imwrite('img_akaze.png', img_akaze)

結果

元画像

AKAZE記述子

プログラム+α

特徴点のマッチング

import cv2


img1 = cv2.imread("haruna_kankore.png")

img2 = cv2.imread("haruna_kankore_temp.png")

akaze = cv2.AKAZE_create()                                

kp1, des1 = akaze.detectAndCompute(img1, None)
kp2, des2 = akaze.detectAndCompute(img2, None)

bf = cv2.BFMatcher()

matches = bf.knnMatch(des1, des2, k=2)

good = []
for m, n in matches:
    if m.distance < 0.2 * n.distance:
        good.append([m])

img_akaze = cv2.drawMatchesKnn(img1, kp1, img2, kp2, good, None, flags=2)


cv2.imwrite('img_akaze.png', img_akaze)

元画像

AKAZE記述子

参考

タイトルとURLをコピーしました