OpenCV 4.5.3(日本語機械翻訳)
クラス | 公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 限定公開メンバ関数 | 静的限定公開メンバ関数 | 限定公開変数類 | 全メンバ一覧
cv::DescriptorMatcher クラス abstract

Abstract base class for matching keypoint descriptors. [詳解]

#include <features2d.hpp>

cv::Algorithmを継承しています。

cv::BFMatcherに継承されています。

クラス

class DescriptorCollection

公開型

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

公開メンバ関数

virtual CV_WRAP void add (InputArrayOfArrays descriptors)
CPU(trainDescCollectionis) または GPU(utrainDescCollectionis) のディスクリプタコレクションを訓練するために,ディスクリプタを追加します.[【詳解】(英語]
CV_WRAP const std::vector< Mat > & getTrainDescriptors () const
列車ディスクリプタコレクション trainDescCollection への定数リンクを返します.
virtual CV_WRAP void clear () CV_OVERRIDE
列車ディスクリプタコレクションをクリアします.[【詳解】(英語]
virtual CV_WRAP bool empty () const CV_OVERRIDE
両方のコレクションに列車ディスクリプタが存在しない場合,真を返します.[【詳解】(英語]
virtual CV_WRAP bool isMaskSupported () const =0
ディスクリプタ Matcherが,許容されるマッチのマスキングをサポートしている場合には,trueを返します.[【詳解】(英語]
virtual CV_WRAP void train ()
ディスクリプタ Matcher を学習します.[【詳解】(英語]
CV_WRAP void match (InputArray queryDescriptors, InputArray trainDescriptors, CV_OUT std::vector< DMatch > &matches, InputArray mask=noArray()) const
クエリセットから,各ディスクリプタに対するベストマッチを見つけます.[【詳解】(英語]
CV_WRAP void knnMatch (InputArray queryDescriptors, InputArray trainDescriptors, CV_OUT std::vector< std::vector< DMatch > > &matches, int k, InputArray mask=noArray(), bool compactResult=false) const
クエリセットの各ディスクリプタに対して,k個のベストマッチを見つけます.[【詳解】(英語]
CV_WRAP void radiusMatch (InputArray queryDescriptors, InputArray trainDescriptors, CV_OUT std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArray mask=noArray(), bool compactResult=false) const
各クエリディスクリプタに対して,指定された距離よりも離れていないトレーニングディスクリプタを見つけます.[【詳解】(英語]
CV_WRAP void match (InputArray queryDescriptors, CV_OUT std::vector< DMatch > &matches, InputArrayOfArrays masks=noArray())
CV_WRAP void knnMatch (InputArray queryDescriptors, CV_OUT std::vector< std::vector< DMatch > > &matches, int k, InputArrayOfArrays masks=noArray(), bool compactResult=false)
CV_WRAP void radiusMatch (InputArray queryDescriptors, CV_OUT std::vector< std::vector< DMatch > > &matches, float maxDistance, InputArrayOfArrays masks=noArray(), bool compactResult=false)
CV_WRAP void write (const String &fileName) const
CV_WRAP void read (const String &fileName)
virtual CV_WRAP void read (const FileNode &) CV_OVERRIDE
アルゴリズム・パラメータをファイル・ストレージから読み込みます。[【詳解】(英語]
virtual void write (FileStorage &) const CV_OVERRIDE
アルゴリズムのパラメーターをファイルストレージに格納[【詳解】(英語]
virtual CV_WRAP Ptr< DescriptorMatcher > clone (bool emptyTrainData=false) const =0
Matcherのクローンを作成します。[【詳解】(英語]
CV_WRAP void write (const Ptr< FileStorage > &fs, const String &name=String()) const
- 基底クラス cv::Algorithm に属する継承公開メンバ関数
CV_WRAP void write (const Ptr< FileStorage > &fs, const String &name=String()) const
これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。
virtual CV_WRAP void save (const String &filename) const
virtual CV_WRAP String getDefaultName () const

静的公開メンバ関数

static CV_WRAP Ptr< DescriptorMatcher > create (const String &descriptorMatcherType)
デフォルトのパラメータ(デフォルトコンストラクタを利用)で,指定されたタイプのディスクリプタ Matcherを作成します.[【詳解】(英語]
static CV_WRAP Ptr< DescriptorMatcher > create (const DescriptorMatcher::MatcherType &matcherType)
- 基底クラス cv::Algorithm に属する継承静的公開メンバ関数
template<typename _Tp >
static Ptr< _Tp > read (const FileNode &fn)
ファイル・ノードからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > load (const String &filename, const String &objname=String())
ファイルからアルゴリズムを読み込む[【詳解】(英語]
template<typename _Tp >
static Ptr< _Tp > loadFromString (const String &strModel, const String &objname=String())
文字列からアルゴリズムを読み込む[【詳解】(英語]

限定公開メンバ関数

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
void checkMasks (InputArrayOfArrays masks, int queryDescriptorsCount) const
- 基底クラス cv::Algorithm に属する継承限定公開メンバ関数
void writeFormat (FileStorage &fs) const

静的限定公開メンバ関数

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

限定公開変数類

std::vector< Mat > trainDescCollection
訓練画像からのディスクリプタのコレクション.
std::vector< UMat > utrainDescCollection

詳解

キーポイントディスクリプタのマッチングのための抽象的な基底クラス.

このクラスには,ある画像のディスクリプタを別の画像や画像セットとマッチングさせるための,2つのマッチングメソッド群があります.

関数詳解

add()

virtual CV_WRAP void cv::DescriptorMatcher::add ( InputArrayOfArrays descriptors )
virtual

CPU(trainDescCollectionis) または GPU(utrainDescCollectionis) のディスクリプタコレクションを訓練するために,ディスクリプタを追加します.

コレクションが空ではない場合,新しいディスクリプタは,既存の訓練ディスクリプタに追加されます.

引数
descriptors 追加されるディスクリプタ.各 descriptors[i] は,同じ訓練画像から得られたディスクリプタの集合です.

clear()

virtual CV_WRAP void cv::DescriptorMatcher::clear ( )
virtual

列車ディスクリプタコレクションをクリアします.

cv::Algorithmを再実装します。

clone()

virtual CV_WRAP Ptr< DescriptorMatcher > cv::DescriptorMatcher::clone ( bool emptyTrainData = false ) const
pure virtual

Matcherのクローンを作成します。

引数
emptyTrainData emptyTrainData が false の場合、このメソッドはオブジェクトのディープコピーを作成します。つまり、パラメータとトレーニングデータの両方をコピーします。emptyTrainData が true の場合、このメソッドは現在のパラメータでオブジェクトのコピーを作成しますが、訓練データは空です。

cv::BFMatcherで実装されています.

create()

static CV_WRAP Ptr< DescriptorMatcher > cv::DescriptorMatcher::create ( const String & descriptorMatcherType )
static

デフォルトのパラメータ(デフォルトコンストラクタを利用)で,指定されたタイプのディスクリプタ Matcherを作成します.

引数
descriptorMatcherType ディスクリプタのマッチャータイプ.現在,以下のマッチャータイプがサポートされています.
  • BruteForce(これはL2)
  • BruteForce-L1
  • BruteForce-Hamming
  • BruteForce-Hamming(2)
  • FlannBased

empty()

virtual CV_WRAP bool cv::DescriptorMatcher::empty ( ) const
virtual

両方のコレクションに列車ディスクリプタが存在しない場合,真を返します.

cv::Algorithmを再実装します。

isMaskSupported()

virtual CV_WRAP bool cv::DescriptorMatcher::isMaskSupported ( ) const
pure virtual

ディスクリプタ Matcherが,許容されるマッチのマスキングをサポートしている場合には,trueを返します.

cv::BFMatcherで実装されています.

knnMatch() [1/2]

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

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
queryDescriptors ディスクリプタのセットをクエリします.
matches マッチ.各 matches[i] は,同じクエリディスクリプタに対する k 個以下のマッチです.
k 各クエリ記述子ごとに見つかったベストマッチの数,あるいは,クエリ記述子のマッチ可能な数が合計で k 個以下の場合はそれ以下.
masks マスクのセット.各 masks[i] は,入力されたクエリ記述子と,i番目の画像 trainDescCollection[i] からの保存された訓練記述子との間の,許容されるマッチを指定します.
compactResult マスクが空ではない場合に使用されるパラメータです.compactResult が false の場合, matches ベクトルは queryDescriptors の行数と同じサイズになります.compactResult が true の場合, matches vector には,完全にマスクアウトされたクエリディスクリプタに対するマッチは含まれません.

knnMatch() [2/2]

CV_WRAP void cv::DescriptorMatcher::knnMatch ( InputArray queryDescriptors,
InputArray trainDescriptors,
CV_OUT std::vector< std::vector< DMatch > > & matches,
int k,
InputArray mask = noArray(),
bool compactResult = false
) const

クエリセットの各ディスクリプタに対して,k個のベストマッチを見つけます.

引数
queryDescriptors ディスクリプタのセットをクエリします.
trainDescriptors ディスクリプタの訓練セット.このセットは,クラスオブジェクトに格納されている訓練ディスクリプタコレクションには追加されません.
mask 入力クエリと訓練ディスクリプタの行列との間の,許容されるマッチを指定するマスク.
matches マッチ.各 matches[i] は,同じクエリディスクリプタに対する k 個以下のマッチです.
k 各クエリ記述子ごとに見つかったベストマッチの数,あるいは,クエリ記述子のマッチ可能な数が合計で k 個以下の場合はそれ以下.
compactResult マスクが空ではない場合に使用されるパラメータです.compactResult が false の場合, matches ベクトルは queryDescriptors の行数と同じサイズになります.compactResult が true の場合, matches vector には,完全にマスクアウトされたクエリディスクリプタに対するマッチは含まれません.

のこれらの拡張バージョンはDescriptorMatcher::matchメソッドの拡張版は,各クエリディスクリプタに対して複数のベストマッチを見つけます.これらのマッチは,距離の増加順に返されます.クエリと訓練ディスクリプタの詳細についてはDescriptorMatcher::matchを参照してください.

knnMatchImpl()

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

実際には,マッチングは以下の2つのメソッドによってのみ実装されています.これらのメソッドは,クラスオブジェクトがすでに学習されていることを前提としています.パブリックなマッチメソッドは,以下のメソッドを呼び出した後に,これらのメソッドを呼び出します.train().

cv::BFMatcherで実装されています.

match() [1/2]

CV_WRAP void cv::DescriptorMatcher::match ( InputArray queryDescriptors,
CV_OUT std::vector< DMatch > & matches,
InputArrayOfArrays masks = noArray()
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
queryDescriptors ディスクリプタのセットをクエリします.
matches マッチ。クエリディスクリプタが mask でマスクアウトされている場合,このディスクリプタに対するマッチは追加されません.そのため,マッチのサイズは,クエリディスクリプタの数よりも小さくなる可能性があります.
masks マスクのセット.各 masks[i] は,入力されたクエリ記述子と,i番目の画像 trainDescCollection[i] からの保存された訓練記述子との間の,許容されるマッチを指定します.

match() [2/2]

CV_WRAP void cv::DescriptorMatcher::match ( InputArray queryDescriptors,
InputArray trainDescriptors,
CV_OUT std::vector< DMatch > & matches,
InputArray mask = noArray()
) const

クエリセットから,各ディスクリプタに対するベストマッチを見つけます.

引数
queryDescriptors ディスクリプタのセットをクエリします.
trainDescriptors ディスクリプタの訓練セット.このセットは,クラスオブジェクトに格納されている訓練ディスクリプタコレクションには追加されません.
matches マッチ。クエリディスクリプタが mask でマスクアウトされている場合,このディスクリプタに対するマッチは追加されません.そのため,マッチのサイズは,クエリディスクリプタの数よりも小さくなる可能性があります.
mask 入力クエリと訓練ディスクリプタの行列との間の,許容されるマッチを指定するマスク.

このメソッドの第1のバージョンでは,入力引数として訓練ディスクリプタが渡されます.このメソッドの第2のバージョンでは,で設定された訓練ディスクリプタコレクションが利用されます.DescriptorMatcher::addが使用されます.オプションのマスクを渡すことで,どのクエリディスクリプタとトレーニングディスクリプタをマッチングさせるかを指定できます.つまり,mask.at<uchar>(i,j) が0ではない場合にのみ,queryDescriptors[i] は trainDescriptors[j] とマッチすることができます.

radiusMatch() [1/2]

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

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
queryDescriptors ディスクリプタのセットをクエリします.
matches マッチしたもの
maxDistance マッチしたディスクリプタ間の距離の閾値.距離とは,ここではメトリックな距離(例えばHammingdistance)を意味し,座標間の距離(これは,Pixelsで測定されます)ではありません.
masks マスクのセット.各 masks[i] は,入力されたクエリ記述子と,i番目の画像 trainDescCollection[i] からの保存された訓練記述子との間の,許容されるマッチを指定します.
compactResult マスクが空ではない場合に使用されるパラメータです.compactResult が false の場合, matches ベクトルは queryDescriptors の行数と同じサイズになります.compactResult が true の場合, matches vector には,完全にマスクアウトされたクエリディスクリプタに対するマッチは含まれません.

radiusMatch() [2/2]

CV_WRAP void cv::DescriptorMatcher::radiusMatch ( InputArray queryDescriptors,
InputArray trainDescriptors,
CV_OUT std::vector< std::vector< DMatch > > & matches,
float maxDistance,
InputArray mask = noArray(),
bool compactResult = false
) const

各クエリディスクリプタに対して,指定された距離よりも離れていないトレーニングディスクリプタを見つけます.

引数
queryDescriptors ディスクリプタのセットをクエリします.
trainDescriptors ディスクリプタの訓練セット.このセットは,クラスオブジェクトに格納されている訓練ディスクリプタコレクションには追加されません.
matches マッチしたもの
compactResult マスクが空ではない場合に使用されるパラメータです.compactResult が false の場合, matches ベクトルは queryDescriptors の行数と同じサイズになります.compactResult が true の場合, matches vector には,完全にマスクアウトされたクエリディスクリプタに対するマッチは含まれません.
maxDistance マッチしたディスクリプタ間の距離の閾値.距離とは,ここではメトリックな距離(例えばHammingdistance)を意味し,座標間の距離(これは,Pixelsで測定されます)ではありません.
mask 入力クエリと訓練ディスクリプタの行列との間の,許容されるマッチを指定するマスク.

各クエリディスクリプタに対して,メソッドは,クエリディスクリプタとトレーニングディスクリプタの間の距離が maxDistance と同等かそれよりも小さくなるようなトレーニングディスクリプタを見つけます.検出されたマッチは,距離が大きい順に返されます.

read()

virtual CV_WRAP void cv::DescriptorMatcher::read ( const FileNode & fn )
virtual

アルゴリズム・パラメータをファイル・ストレージから読み込みます。

cv::Algorithmを再実装します。

train()

virtual CV_WRAP void cv::DescriptorMatcher::train ( )
virtual

ディスクリプタ Matcher を学習します.

ディスクリプタ・マッチャー(例えば,flannインデックス)を学習します.マッチするすべてのメソッドにおいて,メソッドtrain()はマッチングの前に毎回実行されます.一部のディスクリプタ Matcher(例えば,BruteForceMatcher)は,このメソッドを空で実装しています.他の Matcher は,本当に内部構造を学習します(例えば, FlannBasedMatcher は, flann::Index を学習します).

write()

virtual void cv::DescriptorMatcher::write ( FileStorage & fs ) const
virtual

アルゴリズムのパラメーターをファイルストレージに格納

cv::Algorithmを再実装します。


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