PythonとOpenCVでORB特徴を使った物体認識を行う方法

スポンサーリンク

この記事では、ORB機能検出器とは何か、そしてPythonでどのようにそれを実装することができるかを見ていきます。

ORBとは、Oriented FAST and rotated BRIEFの略です。

こちらもご覧ください。

スポンサーリンク

ORB特徴検出の紹介

Oriented FAST and rotated BRIEF (ORB) は、2011年にEthan Rubleeらによって発表された高速でロバストな局所特徴検出器で、物体認識や3次元再構成などのコンピュータビジョン課題で使用されています。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import cv2
 
orb=cv2.ORB_create()
img=cv2.imread("selena.jpg",1)
 
kp, des = orb.detectAndCompute(img, None)
imgg=cv2.drawKeypoints(img, kp, None)
 
img = cv2.resize(img, (300, 300)) 
imgg = cv2.resize(imgg, (300, 300)) 
 
cv2.imshow("Original Image",img)
cv2.imshow("ORB Feature Detection on Image",imgg)
 
cv2.waitKey(0)
 
cv2.destroyAllWindows()

ORBは、FASTキーポイント検出器とBRIEF記述子を改良したものを使用します。

この際,FASTの特徴量はスケール不変でも回転不変でもありません.FASTのスケールを不変にするために、マルチスケールピラミッドを利用します。

ORBは、各レベルで特徴を検出し、精度を向上させる。

PythonによるORB特徴検出の実装

ORB特徴検出に関しては,画像を読み込み,ORB特徴を検出・計算し,検出されたキーポイントを画像に描画するために,いくつかの直接的な関数を利用します.

画像を表示するために,OpenCV ライブラリの昔からある imshow 関数を利用します.以下にコードを示しますが、手順を理解して頂ければ幸いです。

Sample Multiscaled Image Pyramid
Sample Multiscaled Image Pyramid

Outputs #1

1.1 選択された原画

Original Image Face Detection
Original Image Face Detection

1.2 特徴抽出の後

ORB Face Detection Output Image
ORB Face Detection Output Image

サンプル出力 #2

2.1 選択された原画像

Original Image Face Detection Image2
Original Image Face Detection Image2

2.2 特徴抽出の後

ORB Face Detection Output Image2
ORB Face Detection Output Image2

まとめ

このように、我々のモデルによって主要な特徴が検出されたことがお分かりいただけたと思います。

あなたの個人的な画像を使って、同じアルゴリズムを試すことができます。

そして、モデルの結果に驚かれることでしょう。

お読みいただきありがとうございました。

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