KAZE記述子
SIFTやSURFでは、DoG画像をベースに特徴点を検出している。
KAZEでは、AOS(additive operator splitting)と可変コンダクタンス拡散(variable conductance diffusion, VCD)を採用し、重要な特徴を残したままノイズ除去し、スケール不変性を得ている。
論文
Python+OpenCV
import cv2 img = cv2.imread('haruna_kankore.png') kaze = cv2.KAZE_create() kp = kaze.detect(img) img_kaze = cv2.drawKeypoints(img, kp, img, flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv2.imwrite('img_kaze.png', img_kaze)
結果
元画像
KAZE記述子
プログラム+α
特徴点のマッチング
import cv2 img1 = cv2.imread("haruna_kankore.png") img2 = cv2.imread("haruna_kankore_temp.png") kaze = cv2.KAZE_create() kp1, des1 = kaze.detectAndCompute(img1, None) kp2, des2 = kaze.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_kaze = cv2.drawMatchesKnn(img1, kp1, img2, kp2, good, None, flags=2) cv2.imwrite('img_kaze.png', img_kaze)