忍者ブログ
物理学者(ポスドク)による日々の研究生活のメモ書きです ( python/emacs/html/Japascript/シェルスクリプト/TeX/Mac/C言語/Linux/git/tmux/R/ポケモンGO)
opencvでできる

まずは、うまくいった例をメモ


■ 参考 : OpenCVをつかった特徴点マッチングについて少しだけ掘り下げる

基本的に↑の記事通りに動かした

■ 参考 : OpenCV3とPython3で特徴点を抽出する(AgastFeature, FAST, GFTT, MSER, AKAZE, BRISK, KAZE, ORB, SimpleBlob, SIFT)
import cv2
from IPython.display import Image
from IPython.display import display
from matplotlib import pyplot as plt

#
# ここで2枚の画像読み込み
#
# (お好きな画像を読み込んでください)

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

#
# 内容のチェック
#
print('##### 特徴点の数 #####')
print(len(kp1))

print('##### 特徴量記述子 #####')
print(des1)

print('##### 特徴ベクトル #####')
print(des1.shape)

#
# マッチング
#
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1, des2)

#
# 特徴点間のハミング距離でソート
#
matches = sorted(matches, key=lambda x: x.distance)

#
# 2画像間のマッチング結果画像を作成
#
img1_2 = cv2.drawMatches(img1, kp1, img2, kp2, matches[:40], None, flags=2)
plt.figure(figsize = (width*2/100, height/100), dpi=100)
plt.imshow(img1_2)
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.savefig("diff_features.png")
その後で、2枚の画像のうち、どことどこが一致しているかを調べた

特徴量のうち、一致度上位n個のみをプロットする
距離が遠いものはNoneとして無視する(これであってるのかわからんが・・・)
import matplotlib as mpl
mpl.rcParams['xtick.labelsize'] = 16
mpl.rcParams['ytick.labelsize'] = 16
mpl.rcParams["axes.labelsize"] = 20
mpl.rcParams["axes.titlesize"] = 20
mpl.rcParams["legend.fontsize"] = 20
mpl.rcParams['axes.linewidth'] = 2
mpl.rcParams['figure.facecolor'] = "white"
mpl.rcParams['mathtext.fontset'] = 'stix'
mpl.rcParams['font.family'] = 'STIXGeneral'

import numpy as np

n=100
x_diff = np.zeros(n)
y_diff = np.zeros(n)
for i in range(n):
x = kp1[matches[i].queryIdx].pt[0] - kp2[matches[i].trainIdx].pt[0]
if abs(x) > 20:
x_diff[i] = None
else:
x_diff[i] = x

x = kp1[matches[i].queryIdx].pt[1] - kp2[matches[i].trainIdx].pt[1]
if abs(x) > 20:
y_diff[i] = None
else:
y_diff[i] = x

fig = plt.figure(figsize=[12, 12])

x_diff = x_diff[~np.isnan(x_diff)]
y_diff = y_diff[~np.isnan(y_diff)]

plt.subplot(2, 1, 1)
plt.title("Comparison %s\nand %s" % (fname1, fname2))
plt.hist(x_diff, bins=20, label="horizontal difference\nmean=%.1f pixel\nstd=%.1f pixel" % (np.mean(x_diff), (np.std(x_diff))))
plt.legend(loc="upper right")
plt.xlabel("horizontal difference on features (x-value)")
plt.grid(linestyle='dotted', linewidth=1)

plt.subplot(2, 1, 2)
plt.hist(y_diff, bins=20, label="vertical difference\nmean=%.1f pixel\nstd=%.1f pixel" % (np.mean(y_diff), (np.std(y_diff))))
plt.legend(loc="upper right")
plt.xlabel("vertical difference on features (y-value)")
plt.grid(linestyle='dotted', linewidth=1)

fig.savefig("hist.png")



検索ワード 「python opencv 位置合わせ qiita」とか

■ 参考 : [OpenCV] いまさら局所特徴量で物体検出!?

■ 参考 : OpenCVで画像マッチングをする

■ 参考 : python+opencvで画像処理の勉強8 パターン・図形・特徴の検出とマッチング

■ 参考 : 2つの画像を比較して違いを見つける


■ 参考 : 特徴点のマッチング





(2023/10/06 追記)

■ 参考 : OpenCV-Pythonチュートリアル

opencvで画像解析する人へのチュートリアル記事





(2023/12/08 追記)

■ 参考 : 特徴点のマッチングと対応点の座標のCSV出力

■ 参考 : OpenCVで特徴量の座標を取得する

■ 参考 : 特徴量マッチングによるテンプレートマッチング

■ 参考 : Python+OpenCVを利用したマッチング処理

■ 参考 : 特徴マッチングによる物体検知






PR
この記事にコメントする
Name
Title
Color
E-Mail
URL
Comment
Password   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:coffee
職業:物理屋(自称)
趣味:映画鑑賞、登山
出身:大阪府の南の田舎
自己紹介:
import MyProfile
import coffee_pote from TWITTER
import amazonのほしい物リスト from WISH_LIST

print "先月子供が産まれました!"

# 最終更新 2022/10/25
カウンター
カウンター カウンター
ブログ内検索
ツイートするボタン
リンク
相互リンク募集中です (Twitterにてお知らせください)

Demo scripts for gnuplot version 5
(gnuplotのさまざまなデモ画像と作り方がまとめられている、眺めているだけでできるようになった気分になれる)

gnuplotスクリプトの解説
(米澤進吾さんの個人ページ、gnuplotと言えばこのかた)

gnuplot のページ
(Takeno Lab、うちのブログがリンクされていたのでリンク返し)

Twitterから映画の評価が分かる & 映画の鑑賞記録が残せる coco
(映画の感想をまとめられるサイト、いつもお世話になっています)

Astronomy Picture of the Day Archive
(天文や宇宙関連の最新の話題について画像とともにNASAが説明しているページ)

今日のほしぞら
(任意の時刻の空で見える星を表示してくれる、国立天文台が管理している)

GNUPLOTとアニメーション
(応用の項目の「見せてあげよう!ラピュタの雷を!!」あたりからすごすぎる)

読書メーター
(読んだ本をリストできる便利なサイト)

flickr難民の写真置き場
(20XX年、flickrは有料化の炎に包まれた。あらゆるflickr無料ユーザーは絶滅したかに見えた。 しかし、tumblr移住民は死に絶えてはいなかった。)

教授でもできるMac OS X へのLaTeX, X11, gccのインストレーションと環境設定
(阪大の山中卓さんのwebページ、タイトルにセンスが溢れている、内容は超充実してる、特にTeX関連、学振DCとかPDの申請書類作成時にはお世話になっております)

英語論文執筆用の例文検索サービス
(とんでもないものを見つけてしまった・・・・ arXivに収録されている 811,761報の 英語論文から,例文を検索するための検索エンジン)


Template "simple02" by Emile*Emilie
忍者ブログ [PR]