DPマッチングを行うためのクラス [詳細]
#include <dp_matching.h>
Public メソッド | |
dp_matching (const mist::array< Value_type > &pattern_a, const mist::array< Value_type > &pattern_b, const double weight_0, const double weight_1, const double weight_2, const Functor func=__dp__::square_error< Value_type >()) | |
コンストラクタ | |
void | weights (const double weight_0, const double weight_1, const double weight_2) |
重みを変化させて対応付けをやり直す | |
const mist::array< dp_pair > & | path () const |
対応付けられたパスを返す | |
size_t | length () const |
対応付けられたパスの長さを返す | |
distance_type | distance () const |
対応付けられたパスを通る場合のパターン間の距離を返す |
DPマッチングを行うためのクラス
任意のサイズ,データ型の1次元データ同士の対応付け @attention 要素間の距離を返す関数をstd::binary_functionから継承したファンクタの形式で与える必要がある. @attention 算術型,mist::rgb< 算術型 >に対しては、デフォルトで2乗距離を返すファンクタを用意してある. @param Value_type … 入力のデータ型( double や mist::rgb< unsigned char > など ) @param Functor … 要素間の距離を返すファンクタ( デフォルトは __dp__::square_error< Value_type > ) @code 使用例
// 対応付けたい2つのパターンを用意 char data0[ ] = { 'a', 'b', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c' }; char data1[ ] = { 'a', 'a', 'a', 'b', 'a', 'b', 'b', 'c', 'c', 'c' }; mist::array< char > pattern0( 10 ), pattern1( 10 ); for( size_t i = 0 ; i < pattern0.size( ) ; i ++ ) { pattern0[ i ] = data0[ i ]; pattern1[ i ] = data1[ i ]; }
// 対応付け mist::dp_matching< char > dm0( pattern0, pattern1, 1.0, 2.0, 1.0 );
// 結果の表示 std::cout << dm0.path( ) << std::endl; std::cout << dm0.distance( ) << std::endl;
// 重みを変更して再度対応付け dm0.weights( 1.0, 1.0, 1.0 );
// 結果の表示 std::cout << dm0.path( ) << std::endl; std::cout << dm0.distance( ) << std::endl;
// 距離関数を指定して対応付け mist::dp_matching< char, my_distance > dm1( pattern0, pattern1, 1.0, 2.0, 1.0, my_distance( ) );
// 結果の表示 std::cout << dm1.path( ) << std::endl; std::cout << dm1.distance( ) << std::endl;
ここで、my_distanceは例えば以下のように定義できる.
|
inline |
コンストラクタ
[in] | pattern_a | … 入力パターンA |
[in] | pattern_b | … 入力パターンB |
[in] | weight_0 | … 横方向重み |
[in] | weight_1 | … 斜め方向重み |
[in] | weight_2 | … 縦方向重み |
[in] | func | … 要素間の距離を返すファンクタ(デフォルト値:__dp__::square_error< Value_type >( )) |
|
inline |
対応付けられたパスを通る場合のパターン間の距離を返す
|
inline |
|
inline |
対応付けられたパスを返す
|
inline |
重みを変化させて対応付けをやり直す
[in] | weight_0 | … 横方向重み |
[in] | weight_1 | … 斜め方向重み |
[in] | weight_2 | … 縦方向重み |