OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
cv::DescriptorMatcher クラスabstract

キーポイント記述子をマッチングするための抽象基底クラス。 詳細...

#include <opencv2/features2d.hpp>

Collaboration diagram for cv::DescriptorMatcher:

クラス

class  DescriptorCollection
 

公開型

enum  MatcherType {
  FLANNBASED = 1 ,
  BRUTEFORCE = 2 ,
  BRUTEFORCE_L1 = 3 ,
  BRUTEFORCE_HAMMING = 4 ,
  BRUTEFORCE_HAMMINGLUT = 5 ,
  BRUTEFORCE_SL2 = 6
}
 

公開メンバ関数

virtual ~DescriptorMatcher ()
 
virtual void add (InputArrayOfArrays descriptors)
 CPU(trainDescCollectionis) または GPU(utrainDescCollectionis) の記述子コレクションを学習するために記述子を追加する。
 
virtual void clear () CV_OVERRIDE
 学習用記述子コレクションをクリアする。
 
virtual CV_NODISCARD_STD Ptr< DescriptorMatcherclone (bool emptyTrainData=false) const =0
 マッチャーを複製する。
 
virtual bool empty () const CV_OVERRIDE
 両方のコレクションに学習用記述子が存在しない場合は true を返す。
 
const std::vector< Mat > & getTrainDescriptors () const
 学習用記述子コレクション trainDescCollection への定数リンクを返す。
 
virtual bool isMaskSupported () const =0
 記述子マッチャーが許容マッチのマスキングをサポートしている場合は true を返す。
 
void knnMatch (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< std::vector< DMatch > > &matches, int k, InputArray mask=noArray(), bool compactResult=false) const
 クエリ集合の各記述子に対して、上位 k 件の最良マッチを探索する。
 
void knnMatch (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, int k, InputArrayOfArrays masks=noArray(), bool compactResult=false)
 
void match (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< DMatch > &matches, InputArray mask=noArray()) const
 クエリ集合の各記述子に対して、最良のマッチを探索する。
 
void match (InputArray queryDescriptors, std::vector< DMatch > &matches, InputArrayOfArrays masks=noArray())
 
void radiusMatch (InputArray queryDescriptors, InputArray trainDescriptors, std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArray mask=noArray(), bool compactResult=false) const
 各クエリ記述子に対して、指定された距離以内にある学習用記述子を探索する。
 
void radiusMatch (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArrayOfArrays masks=noArray(), bool compactResult=false)
 
virtual void read (const FileNode &) CV_OVERRIDE
 ファイルストレージからアルゴリズムの引数を読み込む。
 
void read (const String &fileName)
 
virtual void train ()
 記述子マッチャーを学習する。
 
void write (const Ptr< FileStorage > &fs, const String &name) const
 
void write (const String &fileName) const
 
virtual void write (FileStorage &) const CV_OVERRIDE
 アルゴリズムの引数をファイルストレージに保存する。
 
void write (FileStorage &fs, const String &name) const
 
- Public Member Functions inherited from cv::Algorithm
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual String getDefaultName () const
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
void write (FileStorage &fs, const String &name) const
 

静的公開メンバ関数

static Ptr< DescriptorMatchercreate (const DescriptorMatcher::MatcherType &matcherType)
 
static Ptr< DescriptorMatchercreate (const String &descriptorMatcherType)
 指定した型の記述子マッチャーをデフォルトのパラメータで(デフォルトコンストラクタを使って)生成する。
 
- Static Public Member Functions inherited from cv::Algorithm
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 ファイルからアルゴリズムを読み込む。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 文字列からアルゴリズムを読み込む。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 ファイルノードからアルゴリズムを読み込む。
 

限定公開メンバ関数

void checkMasks (InputArrayOfArrays masks, int queryDescriptorsCount) const
 
virtual void knnMatchImpl (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, int k, InputArrayOfArrays masks=noArray(), bool compactResult=false)=0
 
virtual void radiusMatchImpl (InputArray queryDescriptors, std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArrayOfArrays masks=noArray(), bool compactResult=false)=0
 
- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

静的限定公開メンバ関数

static CV_NODISCARD_STD Mat clone_op (Mat m)
 
static bool isMaskedOut (InputArrayOfArrays masks, int queryIdx)
 
static bool isPossibleMatch (InputArray mask, int queryIdx, int trainIdx)
 

限定公開変数類

std::vector< MattrainDescCollection
 学習画像から得た記述子のコレクション。
 
std::vector< UMatutrainDescCollection
 

詳細説明

キーポイント記述子をマッチングするための抽象基底クラス。

2 つのマッチメソッド群を持つ: ある画像の記述子を別の画像とマッチングするためのものと、画像集合とマッチングするためのものである。

列挙型メンバ詳解

◆ MatcherType

列挙値
FLANNBASED 
BRUTEFORCE 
BRUTEFORCE_L1 
BRUTEFORCE_HAMMING 
BRUTEFORCE_HAMMINGLUT 
BRUTEFORCE_SL2 

構築子と解体子の詳解

◆ ~DescriptorMatcher()

virtual cv::DescriptorMatcher::~DescriptorMatcher ( )
virtual

メンバ関数詳解

◆ add()

virtual void cv::DescriptorMatcher::add ( InputArrayOfArrays descriptors)
virtual
Python:
cv.DescriptorMatcher.add(descriptors) -> None

CPU(trainDescCollectionis) または GPU(utrainDescCollectionis) の記述子コレクションを学習させるために記述子を追加する。

コレクションが空でない場合、新しい記述子は既存の学習記述子に追加される。

引数
descriptors追加する記述子。各 descriptors[i] は同一の学習画像から得られた記述子の集合である。

cv::FlannBasedMatcher で再実装されている。

◆ checkMasks()

void cv::DescriptorMatcher::checkMasks ( InputArrayOfArrays masks,
int queryDescriptorsCount ) const
protected

◆ clear()

virtual void cv::DescriptorMatcher::clear ( )
virtual
Python:
cv.DescriptorMatcher.clear() -> None

学習記述子コレクションをクリアする。

cv::Algorithm から再実装。

cv::FlannBasedMatcher で再実装されている。

◆ clone()

virtual CV_NODISCARD_STD Ptr< DescriptorMatcher > cv::DescriptorMatcher::clone ( bool emptyTrainData = false) const
pure virtual
Python:
cv.DescriptorMatcher.clone([, emptyTrainData]) -> retval

マッチャーを複製する。

引数
emptyTrainDataemptyTrainData が false の場合、このメソッドはオブジェクトのディープコピー、すなわちパラメータと学習データの両方をコピーしたものを作成する。emptyTrainData が true の場合は、現在のパラメータを保持しつつ学習データを空にしたオブジェクトのコピーを作成する。

cv::BFMatcher および cv::FlannBasedMatcher で実装されている。

◆ clone_op()

static CV_NODISCARD_STD Mat cv::DescriptorMatcher::clone_op ( Mat m)
inlinestaticprotected
この関数の呼び出しグラフ:

◆ create() [1/2]

static Ptr< DescriptorMatcher > cv::DescriptorMatcher::create ( const DescriptorMatcher::MatcherType & matcherType)
static
Python:
cv.DescriptorMatcher.create(descriptorMatcherType) -> retval
cv.DescriptorMatcher.create(matcherType) -> retval
cv.DescriptorMatcher_create(descriptorMatcherType) -> retval
cv.DescriptorMatcher_create(matcherType) -> retval

◆ create() [2/2]

static Ptr< DescriptorMatcher > cv::DescriptorMatcher::create ( const String & descriptorMatcherType)
static
Python:
cv.DescriptorMatcher.create(descriptorMatcherType) -> retval
cv.DescriptorMatcher.create(matcherType) -> retval
cv.DescriptorMatcher_create(descriptorMatcherType) -> retval
cv.DescriptorMatcher_create(matcherType) -> retval

指定された種類の記述子マッチャをデフォルトの引数で生成する(デフォルトコンストラクタを使用)。

引数
descriptorMatcherType記述子マッチャの種類。現在、以下のマッチャの種類がサポートされている:
  • BruteForce (L2 を使用)
  • BruteForce-L1
  • BruteForce-Hamming
  • BruteForce-Hamming(2)
  • FlannBased

◆ empty()

virtual bool cv::DescriptorMatcher::empty ( ) const
virtual
Python:
cv.DescriptorMatcher.empty() -> retval

両方のコレクションに学習記述子が存在しない場合に true を返す。

cv::Algorithm から再実装されている。

◆ getTrainDescriptors()

const std::vector< Mat > & cv::DescriptorMatcher::getTrainDescriptors ( ) const
Python:
cv.DescriptorMatcher.getTrainDescriptors() -> retval

学習記述子コレクション trainDescCollection への定数リンクを返す。

◆ isMaskedOut()

static bool cv::DescriptorMatcher::isMaskedOut ( InputArrayOfArrays masks,
int queryIdx )
staticprotected

◆ isMaskSupported()

virtual bool cv::DescriptorMatcher::isMaskSupported ( ) const
pure virtual
Python:
cv.DescriptorMatcher.isMaskSupported() -> retval

記述子マッチャーが許容マッチのマスキングをサポートしている場合は true を返す。

cv::BFMatcher および cv::FlannBasedMatcher で実装されている。

◆ isPossibleMatch()

static bool cv::DescriptorMatcher::isPossibleMatch ( InputArray mask,
int queryIdx,
int trainIdx )
staticprotected

◆ knnMatch() [1/2]

void cv::DescriptorMatcher::knnMatch ( InputArray queryDescriptors,
InputArray trainDescriptors,
std::vector< std::vector< DMatch > > & matches,
int k,
InputArray mask = noArray(),
bool compactResult = false ) const
Python:
cv.DescriptorMatcher.knnMatch(queryDescriptors, trainDescriptors, k[, mask[, compactResult]]) -> matches
cv.DescriptorMatcher.knnMatch(queryDescriptors, k[, masks[, compactResult]]) -> matches

クエリ集合の各記述子について、上位 k 個の最良マッチを見つける。

引数
queryDescriptorsクエリ側の記述子の集合。
trainDescriptors学習側の記述子の集合。この集合は、クラスオブジェクト内に格納されている学習記述子コレクションには追加されない。
mask入力クエリと学習記述子行列との間で許可されるマッチを指定するマスク。
matchesマッチ結果。各 matches[i] は同一のクエリ記述子に対する k 個以下のマッチである。
k各クエリ記述子について検出する最良マッチの数。クエリ記述子に対して可能なマッチが合計で k 個未満の場合はその数になる。
compactResultマスク(またはマスク群)が空でない場合に使われる引数。compactResult が false の場合、matches ベクトルは queryDescriptors の行数と同じサイズになる。compactResult が true の場合、matches ベクトルには完全にマスクされたクエリ記述子に対するマッチは含まれない。

これらは DescriptorMatcher::match メソッドの拡張版であり、各クエリ記述子について複数の最良マッチを見つける。マッチは距離の昇順で返される。クエリ記述子と学習記述子の詳細については DescriptorMatcher::match を参照。

◆ knnMatch() [2/2]

void cv::DescriptorMatcher::knnMatch ( InputArray queryDescriptors,
std::vector< std::vector< DMatch > > & matches,
int k,
InputArrayOfArrays masks = noArray(),
bool compactResult = false )
Python:
cv.DescriptorMatcher.knnMatch(queryDescriptors, trainDescriptors, k[, mask[, compactResult]]) -> matches
cv.DescriptorMatcher.knnMatch(queryDescriptors, k[, masks[, compactResult]]) -> matches

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
queryDescriptorsクエリ側の記述子の集合。
matchesマッチ結果。各 matches[i] は同一のクエリ記述子に対する k 個以下のマッチである。
k各クエリ記述子について検出する最良マッチの数。クエリ記述子に対して可能なマッチが合計で k 個未満の場合はその数になる。
masksマスクの集合。各 masks[i] は、入力クエリ記述子と、i 番目の画像 trainDescCollection[i] に格納された学習記述子との間で許可されるマッチを指定する。
compactResultマスク(またはマスク群)が空でない場合に使われる引数。compactResult が false の場合、matches ベクトルは queryDescriptors の行数と同じサイズになる。compactResult が true の場合、matches ベクトルには完全にマスクされたクエリ記述子に対するマッチは含まれない。

◆ knnMatchImpl()

virtual void cv::DescriptorMatcher::knnMatchImpl ( InputArray queryDescriptors,
std::vector< std::vector< DMatch > > & matches,
int k,
InputArrayOfArrays masks = noArray(),
bool compactResult = false )
protectedpure virtual

実際には、マッチングは以下の 2 つのメソッドのみで実装されている。これらのメソッドは、クラスオブジェクトがすでに学習済みであることを前提とする。公開されたマッチメソッドは、train() を呼び出した後にこれらのメソッドを呼び出す。

cv::BFMatcher および cv::FlannBasedMatcher で実装されている。

この関数の呼び出しグラフ:

◆ match() [1/2]

void cv::DescriptorMatcher::match ( InputArray queryDescriptors,
InputArray trainDescriptors,
std::vector< DMatch > & matches,
InputArray mask = noArray() ) const
Python:
cv.DescriptorMatcher.match(queryDescriptors, trainDescriptors[, mask]) -> matches
cv.DescriptorMatcher.match(queryDescriptors[, masks]) -> matches

クエリ集合の各記述子について最良のマッチを見つける。

引数
queryDescriptorsクエリ側の記述子の集合。
trainDescriptors学習側の記述子の集合。この集合は、クラスオブジェクト内に格納されている学習記述子コレクションには追加されない。
matchesマッチ結果。あるクエリ記述子が mask によってマスクされている場合、その記述子に対するマッチは追加されない。したがって matches のサイズはクエリ記述子の数より小さくなることがある。
mask入力クエリと学習記述子行列との間で許可されるマッチを指定するマスク。

このメソッドの最初の形式では、学習記述子は入力引数として渡される。2 番目の形式では、DescriptorMatcher::add で設定された学習記述子コレクションが使われる。どのクエリ記述子と学習記述子をマッチング可能とするかを指定するために、省略可能なマスク(またはマスク群)を渡せる。すなわち、queryDescriptors[i] は mask.at<uchar>(i,j) が非ゼロである場合に限り trainDescriptors[j] とマッチング可能である。

◆ match() [2/2]

void cv::DescriptorMatcher::match ( InputArray queryDescriptors,
std::vector< DMatch > & matches,
InputArrayOfArrays masks = noArray() )
Python:
cv.DescriptorMatcher.match(queryDescriptors, trainDescriptors[, mask]) -> matches
cv.DescriptorMatcher.match(queryDescriptors[, masks]) -> matches

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
queryDescriptorsクエリ側の記述子の集合。
matchesマッチ結果。あるクエリ記述子が mask によってマスクされている場合、その記述子に対するマッチは追加されない。したがって matches のサイズはクエリ記述子の数より小さくなることがある。
masksマスクの集合。各 masks[i] は、入力クエリ記述子と、i 番目の画像 trainDescCollection[i] に格納された学習記述子との間で許可されるマッチを指定する。

◆ radiusMatch() [1/2]

void cv::DescriptorMatcher::radiusMatch ( InputArray queryDescriptors,
InputArray trainDescriptors,
std::vector< std::vector< DMatch > > & matches,
float maxDistance,
InputArray mask = noArray(),
bool compactResult = false ) const
Python:
cv.DescriptorMatcher.radiusMatch(queryDescriptors, trainDescriptors, maxDistance[, mask[, compactResult]]) -> matches
cv.DescriptorMatcher.radiusMatch(queryDescriptors, maxDistance[, masks[, compactResult]]) -> matches

各クエリ記述子について、指定した距離以内にある学習記述子を見つける。

引数
queryDescriptorsクエリ側の記述子の集合。
trainDescriptors学習側の記述子の集合。この集合は、クラスオブジェクト内に格納されている学習記述子コレクションには追加されない。
matches見つかったマッチ。
compactResultマスク(またはマスク群)が空でない場合に使われる引数。compactResult が false の場合、matches ベクトルは queryDescriptors の行数と同じサイズになる。compactResult が true の場合、matches ベクトルには完全にマスクされたクエリ記述子に対するマッチは含まれない。
maxDistanceマッチした記述子間の距離に対するしきい値。ここでの距離は計量距離(例えば Hamming 距離)を意味し、座標間の距離(ピクセル単位で測られるもの)ではない!
mask入力クエリと学習記述子行列との間で許可されるマッチを指定するマスク。

各クエリ記述子について、本メソッドはクエリ記述子と学習記述子との距離が maxDistance 以下となるような学習記述子を見つける。見つかったマッチは距離の昇順で返される。

◆ radiusMatch() [2/2]

void cv::DescriptorMatcher::radiusMatch ( InputArray queryDescriptors,
std::vector< std::vector< DMatch > > & matches,
float maxDistance,
InputArrayOfArrays masks = noArray(),
bool compactResult = false )
Python:
cv.DescriptorMatcher.radiusMatch(queryDescriptors, trainDescriptors, maxDistance[, mask[, compactResult]]) -> matches
cv.DescriptorMatcher.radiusMatch(queryDescriptors, maxDistance[, masks[, compactResult]]) -> matches

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

引数
queryDescriptorsクエリ側の記述子の集合。
matches見つかったマッチ。
maxDistanceマッチした記述子間の距離に対するしきい値。ここでの距離は計量距離(例えば Hamming 距離)を意味し、座標間の距離(ピクセル単位で測られるもの)ではない!
masksマスクの集合。各 masks[i] は、入力クエリ記述子と、i 番目の画像 trainDescCollection[i] に格納された学習記述子との間で許可されるマッチを指定する。
compactResultマスク(またはマスク群)が空でない場合に使われる引数。compactResult が false の場合、matches ベクトルは queryDescriptors の行数と同じサイズになる。compactResult が true の場合、matches ベクトルには完全にマスクされたクエリ記述子に対するマッチは含まれない。

◆ radiusMatchImpl()

virtual void cv::DescriptorMatcher::radiusMatchImpl ( InputArray queryDescriptors,
std::vector< std::vector< DMatch > > & matches,
float maxDistance,
InputArrayOfArrays masks = noArray(),
bool compactResult = false )
protectedpure virtual

cv::BFMatcher および cv::FlannBasedMatcher で実装されている。

この関数の呼び出しグラフ:

◆ read() [1/2]

virtual void cv::DescriptorMatcher::read ( const FileNode & fn)
virtual
Python:
cv.DescriptorMatcher.read(fileName) -> None
cv.DescriptorMatcher.read(arg1) -> None

ファイルストレージからアルゴリズムの引数を読み込む。

cv::Algorithm から再実装されている。

cv::FlannBasedMatcher で再実装されている。

◆ read() [2/2]

void cv::DescriptorMatcher::read ( const String & fileName)
inline
Python:
cv.DescriptorMatcher.read(fileName) -> None
cv.DescriptorMatcher.read(arg1) -> None
この関数の呼び出しグラフ:

◆ train()

virtual void cv::DescriptorMatcher::train ( )
virtual
Python:
cv.DescriptorMatcher.train() -> None

記述子マッチャを学習させる。

記述子マッチャ(例えば flann インデックス)を学習させる。マッチングを行うすべてのメソッドでは、マッチングの前に毎回 train() メソッドが実行される。一部の記述子マッチャ(例えば BruteForceMatcher)は、このメソッドの実装が空である。それ以外のマッチャは実際に内部構造を学習する(例えば FlannBasedMatcher は flann::Index を学習する)。

cv::FlannBasedMatcher で再実装されている。

◆ write() [1/4]

void cv::DescriptorMatcher::write ( const Ptr< FileStorage > & fs,
const String & name ) const
inline
Python:
cv.DescriptorMatcher.write(fileName) -> None
cv.DescriptorMatcher.write(fs, name) -> None

◆ write() [2/4]

void cv::DescriptorMatcher::write ( const String & fileName) const
inline
Python:
cv.DescriptorMatcher.write(fileName) -> None
cv.DescriptorMatcher.write(fs, name) -> None
この関数の呼び出しグラフ:

◆ write() [3/4]

virtual void cv::DescriptorMatcher::write ( FileStorage & fs) const
virtual
Python:
cv.DescriptorMatcher.write(fileName) -> None
cv.DescriptorMatcher.write(fs, name) -> None

アルゴリズムの引数をファイルストレージに保存する。

cv::Algorithm から再実装されている。

cv::FlannBasedMatcher で再実装されている。

◆ write() [4/4]

void cv::DescriptorMatcher::write ( FileStorage & fs,
const String & name ) const
inline
Python:
cv.DescriptorMatcher.write(fileName) -> None
cv.DescriptorMatcher.write(fs, name) -> None

メンバ変数詳解

◆ trainDescCollection

std::vector<Mat> cv::DescriptorMatcher::trainDescCollection
protected

学習画像から得られた記述子のコレクション。

◆ utrainDescCollection

std::vector<UMat> cv::DescriptorMatcher::utrainDescCollection
protected

このクラス詳解は次のファイルから抽出されました: