オブジェクト分類 ======================== .. highlight:: cpp このセクションでは,オブジェクトの分類に用いられる, 局所2次元特徴に基づいたアプローチについて述べます. .. index:: BOWTrainer .. _BOWTrainer: BOWTrainer ---------- `id=0.212364119956 Comments from the Wiki `__ .. ctype:: BOWTrainer ディスクリプタの集合から,「bag of visual words」のボキャブラリを学習するための抽象基底クラス. 例えば, ''Visual Categorization with Bags of Keypoints'' of Gabriella Csurka, Christopher R. Dance, Lixin Fan, Jutta Willamowski, Cedric Bray, 2004. などを参照してください. .. code-block:: c class BOWTrainer { public: BOWTrainer(){} virtual ~BOWTrainer(){} void add( const Mat& descriptors ); const vector& getDescriptors() const; int descripotorsCount() const; virtual void clear(); virtual Mat cluster() const = 0; virtual Mat cluster( const Mat& descriptors ) const = 0; protected: ... }; .. .. index:: BOWTrainer::add cv::BOWTrainer::add ------------------- `id=0.320569298412 Comments from the Wiki `__ ```` .. cfunction:: void BOWTrainer::add( const Mat\& descriptors ) 訓練集合にディスクリプタを追加します.この訓練集合は,ボキャブラリを構成するために clusterメソッドによってクラスタリングされます. :param descriptors: 訓練集合に追加されるディスクリプタ. ``descriptors`` 行列の各行が,1つのディスクリプタを表します. .. index:: BOWTrainer::getDescriptors cv::BOWTrainer::getDescriptors ------------------------------ `id=0.584677797114 Comments from the Wiki `__ .. cfunction:: const vector\& BOWTrainer::getDescriptors() const ディスクリプタの訓練集合を返します. .. index:: BOWTrainer::descripotorsCount cv::BOWTrainer::descripotorsCount --------------------------------- `id=0.550123226683 Comments from the Wiki `__ .. cfunction:: const vector\& BOWTrainer::descripotorsCount() const 訓練集合内に存在する,全ディスクリプタの個数を返します. .. index:: BOWTrainer::cluster cv::BOWTrainer::cluster ----------------------- `id=0.285743489282 Comments from the Wiki `__ .. cfunction:: Mat BOWTrainer::cluster() const 訓練ディスクリプタをクラスタリングします.ボキャブラリは,クラスタ中心から構成されるので, このメソッドはボキャブラリを返します.第1形式のメソッドでは,オブジェクトに格納された訓練ディスクリプタがクラスタリングされ, 第2形式のメソッドでは,入力ディスクリプタがクラスタリングされます. .. cfunction:: Mat BOWTrainer::cluster( const Mat\& descriptors ) const :param descriptors: クラスタリングされるディスクリプタ. ``descriptors`` 行列の各行が,1つのディスクリプタを表します.これらのディスクリプタは,内部の訓練集合には追加されません. .. index:: BOWKMeansTrainer .. _BOWKMeansTrainer: BOWKMeansTrainer ---------------- `id=0.719572776669 Comments from the Wiki `__ .. ctype:: BOWKMeansTrainer 「bag of visual words」 アプローチを用いて visual ボキャブラリを学習するための, :func:`kmeans` に基づいたクラス. .. code-block:: c class BOWKMeansTrainer : public BOWTrainer { public: BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(), int attempts=3, int flags=KMEANS_PP_CENTERS ); virtual ~BOWKMeansTrainer(){} // 学習されたボキャブラリ(つまり,クラスタ中心)を返します. virtual Mat cluster() const; virtual Mat cluster( const Mat& descriptors ) const; protected: ... }; .. コンストラクタのパラメータについて知りたい場合は, :func:`kmeans` 関数の引数を参照してください. .. index:: BOWImgDescriptorExtractor .. _BOWImgDescriptorExtractor: BOWImgDescriptorExtractor ------------------------- `id=0.192306139709 Comments from the Wiki `__ .. ctype:: BOWImgDescriptorExtractor "bag of visual words" を利用して,画像ディスクリプタを求めるためのクラス. その計算方法は,簡単に言うと以下のようなステップになります: 1. 与えられた画像に対するディスクリプタとキーポイントの集合を計算します, \ 2. 各キーポイントディスクリプタに対して,最も近い visual words をボキャブラリから求めます, \ 3. 画像ディスクリプタは,画像内で見つかったボキャブラリ words のヒストグラムを正規化したものになります. つまり,ヒストグラムの ``i`` -番目のビンは, ``i`` -番目のボキャブラリword の,画像中における頻度を表します. .. code-block:: c class BOWImgDescriptorExtractor { public: BOWImgDescriptorExtractor( const Ptr& dextractor, const Ptr& dmatcher ); virtual ~BOWImgDescriptorExtractor(){} void setVocabulary( const Mat& vocabulary ); const Mat& getVocabulary() const; void compute( const Mat& image, vector& keypoints, Mat& imgDescriptor, vector >* pointIdxsOfClusters=0, Mat* descriptors=0 ); int descriptorSize() const; int descriptorType() const; protected: ... }; .. .. index:: BOWImgDescriptorExtractor::BOWImgDescriptorExtractor cv::BOWImgDescriptorExtractor::BOWImgDescriptorExtractor -------------------------------------------------------- `id=0.4321410828 Comments from the Wiki `__ .. cfunction:: BOWImgDescriptorExtractor::BOWImgDescriptorExtractor( const Ptr\& dextractor, const Ptr\& dmatcher ) コンストラクタ. :param dextractor: 入力画像に対するディスクリプタとキーポイントを 求めるために利用される,ディスクリプタ抽出器. :param dmatcher: ディスクリプタの Matcher.これは,画像の各キーポイントディスクリプタに対して, 学習されたボキャブラリ word の中で最も近いものを見つけるために利用されます. .. index:: BOWImgDescriptorExtractor::setVocabulary cv::BOWImgDescriptorExtractor::setVocabulary -------------------------------------------- `id=0.413984671279 Comments from the Wiki `__ .. cfunction:: void BOWImgDescriptorExtractor::setVocabulary( const Mat\& vocabulary ) visual ボキャブラリを登録するためのメソッド. :param vocabulary: ( :func:`BOWTrainer` からの派生クラスを用いて学習された)ボキャブラリ. ボキャブラリの各行が,1つのvisual word(クラスタ中心)を表します. .. index:: BOWImgDescriptorExtractor::getVocabulary cv::BOWImgDescriptorExtractor::getVocabulary -------------------------------------------- `id=0.141374981941 Comments from the Wiki `__ .. cfunction:: const Mat\& BOWImgDescriptorExtractor::getVocabulary() const 登録されたボキャブラリを返します. .. index:: BOWImgDescriptorExtractor::compute cv::BOWImgDescriptorExtractor::compute -------------------------------------- `id=0.195989765028 Comments from the Wiki `__ .. cfunction:: void BOWImgDescriptorExtractor::compute( const Mat\& image, vector\& keypoints, Mat\& imgDescriptor, vector >* pointIdxsOfClusters=0, Mat* descriptors=0 ) 登録されたvisual ボキャブラリを用いて,画像ディスクリプタを求めます. :param image: 画像.これに対する画像ディスクリプタが求められます. :param keypoints: 入力画像中から検出されるキーポイント. :param imgDescriptor: 出力.つまり,求められた画像ディスクリプタです. :param pointIdxsOfClusters: クラスタに属するキーポイントのインデックス. つまり, ``pointIdxsOfClusters[i]`` は, ``i`` -番目のクラスタ(ボキャブラリのword)に属するキーポイントのインデックスです(この引数が 0 でなければ,出力されます) :param descriptors: 画像キーポイントのディスクリプタ(この引数が 0 でなければ,出力されます) .. index:: BOWImgDescriptorExtractor::descriptorSize cv::BOWImgDescriptorExtractor::descriptorSize --------------------------------------------- `id=0.0752959414633 Comments from the Wiki `__ .. cfunction:: int BOWImgDescriptorExtractor::descriptorSize() const ボキャブラリが登録されている場合は,画像ディスクリプタのサイズが返され,そうでない場合は0が返されます. .. index:: BOWImgDescriptorExtractor::descriptorType cv::BOWImgDescriptorExtractor::descriptorType --------------------------------------------- `id=0.0534599002205 Comments from the Wiki `__ .. cfunction:: int BOWImgDescriptorExtractor::descriptorType() const 画像ディスクリプタの種類を返します.