| #define F_FEATUREFLAG_XYRANGE 0x0000000000000001 |
特徴量グループ指定フラグ:座標範囲(xmin, ymin, xmax, ymax, xmin_at_ymin, xmax_at_ymax, ymin_at_xmax, ymax_at_xmin)
| #define F_FEATUREFLAG_AREA 0x0000000000000002 |
特徴量グループ指定フラグ:面積(area)
| #define F_FEATUREFLAG_PERIMETER 0x0000000000000004 |
特徴量グループ指定フラグ:周囲長
| #define F_FEATUREFLAG_MOMENT1 0x0000000000000008 |
特徴量グループ指定フラグ:1次モーメント(sumx, sumy)
| #define F_FEATUREFLAG_MOMENT2 0x0000000000000010 |
特徴量グループ指定フラグ:2次モーメント(sumx2, sumy2, sumxy)
| #define F_FEATUREFLAG_CENTERG 0x0000000000000020 |
特徴量グループ指定フラグ:重心(centerx, centery)
| #define F_FEATUREFLAG_RECT1AREA 0x0000000000000080 |
特徴量グループ指定フラグ:外接矩形面積(rect1_area)
| #define F_FEATUREFLAG_RECT1LRATIO 0x0000000000000100 |
特徴量グループ指定フラグ:外接矩形縦横比(rect1_lratio)
| #define F_FEATUREFLAG_RECT1SRATIO 0x0000000000000200 |
特徴量グループ指定フラグ:外接矩形面積比(rect1_sratio)
| #define F_FEATUREFLAG_RECT2SIZE 0x0000000000000400 |
特徴量グループ指定フラグ:外接長方形縦横(lsize, wsize)
| #define F_FEATUREFLAG_RECT2AREA 0x0000000000000800 |
特徴量グループ指定フラグ:外接長方形面積(rect2_area)
| #define F_FEATUREFLAG_RECT2LRATIO 0x0000000000001000 |
特徴量グループ指定フラグ:外接長方形縦横比(rect2_lratio)
| #define F_FEATUREFLAG_RECT2SRATIO 0x0000000000002000 |
特徴量グループ指定フラグ:外接長方形面積比(rect2_sratio)
| #define F_FEATUREFLAG_EQUIELLIPSE 0x0000000000004000 |
特徴量グループ指定フラグ:慣性等価楕円関連(majoraxis, minoraxis, axistheta, axisratio)
| #define F_FEATUREFLAG_DISTANCEP 0x0000000000008000 |
特徴量グループ指定フラグ:外周距離最大最小平均標準偏差
| #define F_FEATUREFLAG_HOLENUM 0x0000000000010000 |
特徴量グループ指定フラグ:穴の数
| #define F_FEATUREFLAG_HOLEAREA 0x0000000000020000 |
特徴量グループ指定フラグ:穴面積
| #define F_FEATUREFLAG_HOLERATIO 0x0000000000040000 |
特徴量グループ指定フラグ:穴面積比
ブローブ解析:配置順指定
fnFIE_measure_specialsort_list() における配置順指定のための定数
ブローブ解析:フィルタ種別指定
fnFIE_measure_sort_list() にて、ソート対象とする特徴量、または F_MEASURE_FILTER_RANGE にてフィルタ対象とする特徴量 を指定するための定数
| F_FEATURE_NONE | ソート対象無し |
| F_FEATURE_COLOR | ブローブ色 |
| F_FEATURE_XMIN | xmin |
| F_FEATURE_YMIN | xmax |
| F_FEATURE_XMAX | ymin |
| F_FEATURE_YMAX | ymax |
| F_FEATURE_XMIN_AT_YMIN | xmin_at_ymin |
| F_FEATURE_XMAX_AT_YMAX | xmax_at_ymax |
| F_FEATURE_YMIN_AT_XMAX | ymin_at_xmax |
| F_FEATURE_YMAX_AT_XMIN | ymax_at_xmin |
| F_FEATURE_XDIFF | xdiff |
| F_FEATURE_YDIFF | ydiff |
| F_FEATURE_SUMX | sumx |
| F_FEATURE_SUMY | sumy |
| F_FEATURE_SUMX2 | sumx2 |
| F_FEATURE_SUMY2 | sumy2 |
| F_FEATURE_SUMXY | sumxy |
| F_FEATURE_AREA | area |
| F_FEATURE_CENTERX | centerx |
| F_FEATURE_CENTERY | centery |
| F_FEATURE_RECT1AREA | rect1_area |
| F_FEATURE_RECT1LRATIO | rect1_lratio |
| F_FEATURE_RECT1SRATIO | rect1_sratio |
| F_FEATURE_LSIZE | lsize |
| F_FEATURE_WSIZE | wsize |
| F_FEATURE_RECT2AREA | rect2_area |
| F_FEATURE_RECT2LRATIO | rect2_lratio |
| F_FEATURE_RECT2SRATIO | rect2_sratio |
| F_FEATURE_MAJORAXIS | majoraxis |
| F_FEATURE_MINORAXIS | minoraxis |
| F_FEATURE_AXISTHETA | axistheta |
| F_FEATURE_AXISRATIO | axisratio |
| F_FEATURE_DIAMETER_EQUIDISK | diameter_equidisk |
| F_FEATURE_DIAMETER_EQUICIRCLE | diameter_equicircle |
| F_FEATURE_CIRCULARITY1 | circularity1 |
| F_FEATURE_CIRCULARITY2 | circularity2 |
| F_FEATURE_CIRCULARITY3 | circularity3 |
| F_FEATURE_CONVEX_AREA | convex_area |
| F_FEATURE_CONVEX_PERIM | convex_perim |
| F_FEATURE_CONVEX_AREARATIO | convex_arearatio |
| F_FEATURE_CONVEX_PERIMRATIO | convex_perimratio |
| F_FEATURE_FERET_MAX | feretmax |
| F_FEATURE_FERET_MIN | feretmin |
| F_FEATURE_FMAX_THETA | fmax_theta |
| F_FEATURE_FMIN_THETA | fmin_theta |
| F_FEATURE_DPMIN | dpmin |
| F_FEATURE_DPMAX | dpmax |
| F_FEATURE_DPAVE | dpave |
| F_FEATURE_DPSIGMA | dpsigma |
| F_FEATURE_DCMAX | dcmax |
| F_FEATURE_DCMIN | dcmin |
| F_FEATURE_DCAVE | dcave |
| F_FEATURE_DSMAX | dsmax |
| F_FEATURE_DSMIN | dsmin |
| F_FEATURE_DSAVE | dsave |
| F_FEATURE_NS | ns |
| F_FEATURE_PERIM | perimeter |
| F_FEATURE_ST | st |
| F_FEATURE_SC | sc |
| F_FEATURE_HOLES | holes |
| F_FEATURE_HRATIO | hratio |
| F_FEATURE_PPS | pps |
| F_FEATURE_AXISTHETA_CYCLIC | axistheta の巡回判定版 |
| F_FEATURE_FMAX_THETA_CYCLIC | fmax_theta の巡回判定版 |
| F_FEATURE_FMIN_THETA_CYCLIC | fmin_theta の巡回判定版 |
| F_FEATURE_M10 | モーメント M10 == F_MEATURE_SUMX |
| F_FEATURE_M01 | モーメント M01 == F_MEATURE_SUMY |
| F_FEATURE_M20 | モーメント M20 == F_MEATURE_SUMX2 |
| F_FEATURE_M02 | モーメント M02 == F_MEATURE_SUMY2 |
| F_FEATURE_M11 | モーメント M11 == F_MEATURE_SUMXY |
| F_FEATURE_M30 | モーメント M30 |
| F_FEATURE_M03 | モーメント M03 |
| F_FEATURE_M21 | モーメント M21 |
| F_FEATURE_M12 | モーメント M12 |
| F_FEATURE_MG20 | 重心モーメント MG20 |
| F_FEATURE_MG02 | 重心モーメント MG02 |
| F_FEATURE_MG11 | 重心モーメント MG11 |
| F_FEATURE_MG30 | 重心モーメント MG30 |
| F_FEATURE_MG03 | 重心モーメント MG03 |
| F_FEATURE_MG21 | 重心モーメント MG21 |
| F_FEATURE_MG12 | 重心モーメント MG12 |
| F_FEATURE_HU_MOMENT0 | Huモーメント不変量0 |
| F_FEATURE_HU_MOMENT1 | Huモーメント不変量1 |
| F_FEATURE_HU_MOMENT2 | Huモーメント不変量2 |
| F_FEATURE_HU_MOMENT3 | Huモーメント不変量3 |
| F_FEATURE_HU_MOMENT4 | Huモーメント不変量4 |
| F_FEATURE_HU_MOMENT5 | Huモーメント不変量5 |
| F_FEATURE_HU_MOMENT6 | Huモーメント不変量6 |
| INT FVALGAPI fnFIE_measure_get_list | ( | FHANDLE | hresult, | |
| F_MEASURE_FILTER_RANGE * | filters, | |||
| UINT | filter_num, | |||
| UINT ** | blob_numbers, | |||
| UINT * | num | |||
| ) |
ブローブ番号配列の取得
指定の特徴量範囲にマッチするブローブのブローブ番号を配列で返します。 なお、背景ブローブ及び無効ブローブの番号は出力ブローブ番号配列には含まれません。 また、フィルタが2種以上指定されているとき( filter_num > 1 )は、 全ての条件のANDでの評価となります。
返される配列は内部で fnOAL_malloc() を使用してメモリを確保し、そのポインタを *blob_numbers にて返します。 関数へのエントリー時、パラメータ blob_numbers の値 *blob_numbers はNULLでなければいけません。 *blob_numbers に返された配列は利用後 fnOAL_free() にてメモリを解放してください。
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | filters | 取得条件フィルタ配列 filter_num == 0 の場合は NULL を指定できます。 |
| [in] | filter_num | filters の配列サイズ(単位:要素数, filter_num > 0) |
| [out] | blob_numbers | ブローブ番号配列 (*blob_numbers=NULL) |
| [out] | num | blob_numbers の配列サイズ(単位:要素数) |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_OBJECT | hresult パラメータに指定されたブローブ解析結果ハンドルが不正 | |
| F_ERR_NOMEMORY | メモリ不足エラー | |
| F_ERR_INVALID_PARAM | パラメータ不正 | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
// エラー処理は省略しているので注意して下さい。 #include <stdio.h> #include "oal_aloc.h" #include "fie.h" INT main() { FHANDLE himg=NULL; FHANDLE measure_result; F_MEASURE_PARAMS param; PNT_T orgin; INT exerr; UINT *bloblist=NULL, blobnum, i; F_MEASURE_FILTER_RANGE filters[2]; // FIEライブラリの使用前に必ずコールする必要があります。 fnFIE_setup(); // 適当な2値画像を用意する - 画像ファイル名は適宜変更すること fnFIE_load_bmp( "test.bmp", &himg, F_COLOR_IMG_TYPE_UC8 ); // 座標原点の指定 orgin.x = 0; orgin.y = 0; // パラメータ設定 memset( ¶m, 0, sizeof(F_MEASURE_PARAMS) ); param.color_mode = F_MEASURE_WHITEFG_BLACKBG; param.neighborhood = 8; // メジャー実行 measure_result = fnFIE_measure_execute( himg, orgin, ¶m, &exerr ); // 面積が 10〜1000 で、且つ xdiffが 2〜10 のブローブのブローブ番号リストを取得。 filters[0].type = F_FEATURE_AREA; filters[0].min = 10; filters[0].max = 1000; filters[1].type = F_FEATURE_XDIFF; filters[1].min = 2; filters[1].max = 10; fnFIE_measure_get_list( measure_result, filters, 2, &bloblist, &blobnum ); // 得られたブローブ番号列を表示 printf( "FILTER1: " ); for( i=0; i<blobnum; i++ ) printf( "%d, ", bloblist[i] ); printf( "\n" ); // さらに ydiff が 2〜10 のブローブを取り出す。 filters[0].type = F_FEATURE_YDIFF; filters[0].min = 2; filters[0].max = 10; fnFIE_measure_refilter_list( measure_result, filters, 1, bloblist, &blobnum ); // 得られたブローブ番号列を表示 printf( "FILTER2: " ); for( i=0; i<blobnum; i++ ) printf( "%d, ", bloblist[i] ); printf( "\n" ); // ブローブ番号配列は使い終わったらユーザー側で解放しなければならない。 // 解放には必ず fnOAL_free を使うこと。 fnOAL_free( bloblist ); fnFIE_free_object( measure_result ); // 終了処理 fnFIE_teardown(); return 0; }
| INT FVALGAPI fnFIE_measure_refilter_list | ( | FHANDLE | hresult, | |
| F_MEASURE_FILTER_RANGE * | filters, | |||
| UINT | filter_num, | |||
| UINT * | blob_numbers, | |||
| UINT * | num | |||
| ) |
ブローブ番号配列の特徴量に基づくフィルタリング
blob_numbers に渡されたブローブ番号配列から、 filters にて指定される 特徴量範囲にマッチしないブローブのブローブ番号を取り除きます。 なお、背景ブローブ及び無効ブローブの番号は出力ブローブ番号配列には含まれません。 また、フィルタが2種以上指定されているとき( filter_num > 1 )は、 全ての条件のANDでの評価となります。
フィルタ後の配列は前方に詰められ、残りの部分は不定領域になります。
Fig. 処理説明(num=15の時の例)
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | filters | 取得条件フィルタ配列 filter_num == 0 の場合は NULLを指定できます。 |
| [in] | filter_num | filters の配列サイズ(単位:要素数, filter_num > 0) |
| [in,out] | blob_numbers | ブローブ番号配列 |
| [in,out] | num | blob_numbers の配列サイズ(単位:要素数) |
| F_ERR_NONE | 正常終了 | |
| F_ERR_NOMEMORY | メモリ不足エラー | |
| F_ERR_INVALID_OBJECT | hresult パラメータに指定されたブローブ解析結果ハンドルが不正 | |
| F_ERR_INVALID_PARAM | パラメータ不正 | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_measure_sort_list | ( | FHANDLE | hresult, | |
| enum f_measure_feature_type | key1st, | |||
| INT | direc1st, | |||
| enum f_measure_feature_type | key2nd, | |||
| INT | direc2nd, | |||
| enum f_measure_feature_type | key3rd, | |||
| INT | direc3rd, | |||
| UINT * | numbers, | |||
| UINT | num | |||
| ) |
ブローブの特徴量に基づくソーティング
numbers パラメータにて渡されたブローブ番号の配列を、 それぞれのブローブの指定特徴量に従ってソートします。
ソートキーには下記の値のうち、何れかを指定します。 下記にリストされていない値を指定した場合は、F_FEATURE_NONE が指定された場合と同じになります。
F_FEATURE_NONE 0 (ソートしない)F_FEATURE_COLOR ブローブ色F_FEATURE_XMIN xminF_FEATURE_XMAX xmaxF_FEATURE_YMIN yminF_FEATURE_YMAX ymaxF_FEATURE_XMIN_AT_YMIN xmin_at_yminF_FEATURE_XMAX_AT_YMAX xmax_at_ymaxF_FEATURE_YMIN_AT_XMAX ymin_at_xmaxF_FEATURE_YMAX_AT_XMIN ymax_at_xminF_FEATURE_XDIFF xdiffF_FEATURE_YDIFF ydiffF_FEATURE_SUMX sumxF_FEATURE_M10 F_FEATURE_SUMX のシノニムF_FEATURE_SUMY sumyF_FEATURE_M01 F_FEATURE_SUMY のシノニムF_FEATURE_SUMX2 sumx2F_FEATURE_M20 F_FEATURE_SUMX2 のシノニムF_FEATURE_SUMY2 sumy2F_FEATURE_M02 F_FEATURE_SUMY2 のシノニムF_FEATURE_SUMXY sumxyF_FEATURE_M11 F_FEATURE_SUMXY のシノニムF_FEATURE_M30 M30F_FEATURE_M03 M03F_FEATURE_M21 M21F_FEATURE_M12 M12F_FEATURE_MG20 重心モーメント MG20F_FEATURE_MG02 重心モーメント MG02F_FEATURE_MG11 重心モーメント MG11F_FEATURE_MG30 重心モーメント MG30F_FEATURE_MG03 重心モーメント MG03F_FEATURE_MG21 重心モーメント MG21F_FEATURE_MG12 重心モーメント MG12F_FEATURE_HU_MOMENT0 Huモーメント不変量0F_FEATURE_HU_MOMENT1 Huモーメント不変量1F_FEATURE_HU_MOMENT2 Huモーメント不変量2F_FEATURE_HU_MOMENT3 Huモーメント不変量3F_FEATURE_HU_MOMENT4 Huモーメント不変量4F_FEATURE_HU_MOMENT5 Huモーメント不変量5F_FEATURE_HU_MOMENT6 Huモーメント不変量6F_FEATURE_AREA areaF_FEATURE_CENTERX centerxF_FEATURE_CENTERY centeryF_FEATURE_RECT1AREA rect1_areaF_FEATURE_RECT1LRATIO rect1_lratioF_FEATURE_RECT1SRATIO rect1_sratioF_FEATURE_LSIZE lsizeF_FEATURE_WSIZE wsizeF_FEATURE_RECT2AREA rect2_areaF_FEATURE_RECT2LRATIO rect2_lratioF_FEATURE_RECT2SRATIO rect2_sratioF_FEATURE_MAJORAXIS majoraxisF_FEATURE_MINORAXIS minoraxisF_FEATURE_AXISTHETA axisthetaF_FEATURE_AXISTHETA_CYCLIC F_FEATURE_AXISTHETA が指定された場合と同じ動作をしますF_FEATURE_AXISRATIO axisratioF_FEATURE_DPMIN dpminF_FEATURE_DPMAX dpmaxF_FEATURE_DPAVE dpaveF_FEATURE_DPSIGMA dpsigmaF_FEATURE_ST stF_FEATURE_SC scF_FEATURE_HOLES holesF_FEATURE_HRATIO hratioF_FEATURE_PERIM perimF_FEATURE_DIAMETER_EQUIDISK diameter_equidiskF_FEATURE_DIAMETER_EQUICIRCLE diameter_equicircleF_FEATURE_CIRCULARITY1 circularity1F_FEATURE_CIRCULARITY2 circularity2F_FEATURE_CIRCULARITY3 circularity3F_FEATURE_CONVEX_AREA convex_areaF_FEATURE_CONVEX_PERIM convex_perimF_FEATURE_CONVEX_AREARATIO convex_arearatioF_FEATURE_CONVEX_PERIMRATIO convex_perimratioF_FEATURE_FERET_MAX feretmaxF_FEATURE_FERET_MIN feretminF_FEATURE_FMAX_THETA fmax_thetaF_FEATURE_FMAX_THETA_CYCLIC F_FEATURE_FMAX_THETA が指定された場合と同じ動作をしますF_FEATURE_FMIN_THETA fmin_thetaF_FEATURE_FMIN_THETA_CYCLIC F_FEATURE_FMIN_THETA が指定された場合と同じ動作をしますF_FEATURE_DCMIN dcminF_FEATURE_DCMAX dcmaxF_FEATURE_DCAVE dcaveF_FEATURE_DSMAX dsmaxF_FEATURE_DSMIN dsminF_FEATURE_DSAVE dsaveF_FEATURE_NS sibling_numF_FEATURE_PPS ppsソート対象の特徴量は key1st, key2nd, key3rd にて3番目まで指定することが出来ます。 まず key1st でソートし key1st で同じ値だった物は key2nd でソートされ、 さらに key2nd でも同じだった物は key3rd でソートされます。 ソートキーが3つも必要ない場合は、下記のように指定します。これに従わなかった場合はパラメータエラーとなります。
direc1st, direc2nd, direc3rd は各キーでのソート順(昇順or降順)を決めるパラメータです。 昇順にソートする場合は 0 を、 降順にソートする場合は 1 を指定してください。
F_FEATURE_AXISTHETA axisthetaF_FEATURE_AXISTHETA_CYCLIC F_FEATURE_AXISTHETA が指定された場合と同じ動作をしますF_FEATURE_FMAX_THETA fmax_thetaF_FEATURE_FMAX_THETA_CYCLIC F_FEATURE_FMAX_THETA が指定された場合と同じ動作をしますF_FEATURE_FMIN_THETA fmin_thetaF_FEATURE_FMIN_THETA_CYCLIC F_FEATURE_FMIN_THETA が指定された場合と同じ動作をします
ですので、 昇順にソートした場合、
が最初の要素に、
が 最後の要素になるよう並び替えられることになります。| [in] | hresult | ブローブ解析結果 |
| [in] | key1st | 最優先ソートキー(ソート対象特徴量) |
| [in] | direc1st | key1stのソート順 |
| [in] | key2nd | 2番目に優先されるソートキー(ソート対象特徴量) |
| [in] | direc2nd | key2ndのソート順 |
| [in] | key3rd | 3番目に優先されるソートキー(ソート対象特徴量) |
| [in] | direc3rd | key3rdのソート順 |
| [in,out] | numbers | ソート対象ブローブ番号配列 |
| [in] | num | numbersの要素数 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_PARAM | 不正なパラメータが指定された。 | |
| F_ERR_INVALID_OBJECT | hresutl に渡された結果ハンドルが不正 | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
// エラー処理は省略しているので注意して下さい。 #include <stdio.h> #include "oal_aloc.h" #include "fie.h" INT main() { FHANDLE himg=NULL; FHANDLE measure_result; F_MEASURE_PARAMS param; PNT_T orgin; INT exerr; UINT *bloblist=NULL, blobnum, i; F_MEASURE_FILTER_RANGE filters[2]; // FIEライブラリの使用前に必ずコールする必要があります。 fnFIE_setup(); // 適当な2値画像を用意する - 画像ファイル名は適宜変更すること fnFIE_load_bmp( "test.bmp", &himg, F_COLOR_IMG_TYPE_UC8 ); // 座標原点の指定 orgin.x = 0; orgin.y = 0; // パラメータ設定 memset( ¶m, 0, sizeof(F_MEASURE_PARAMS) ); param.color_mode = F_MEASURE_WHITEFG_BLACKBG; param.neighborhood = 8; // メジャー実行 measure_result = fnFIE_measure_execute( himg, orgin, ¶m, &exerr ); // 有効なブローブのブローブ番号リストを取得 fnFIE_measure_get_list( measure_result, filters, 2, &bloblist, &blobnum ); // 面積の小さい順にブローブ番号リストをソートする fnFIE_measure_sort_list( measure_result, F_FEATURE_AREA, 0, F_FEATURE_NONE, 0, F_FEATURE_NONE, 0, bloblist, blobnum ); // 得られたブローブ番号列を表示 printf( "SORTBY AREA: " ); for( i=0; i<blobnum; i++ ) printf( "%d, ", bloblist[i] ); printf( "\n" ); // 配置順でソートし直す fnFIE_measure_specialsort_list( measure_result, F_MEASURE_UP_TO_LEFT_RIGHT, 0.0, bloblist, blobnum ); // 得られたブローブ番号列を表示 printf( "SORTBY ARRANGEMENT: " ); for( i=0; i<blobnum; i++ ) printf( "%d, ", bloblist[i] ); printf( "\n" ); // ブローブ番号配列は使い終わったらユーザー側で解放しなければならない。 // 解放には必ず fnOAL_free を使うこと fnOAL_free( bloblist ); fnFIE_free_object( measure_result ); // 終了処理 fnFIE_teardown(); return 0; }
| INT FVALGAPI fnFIE_measure_specialsort_list | ( | FHANDLE | hresult, | |
| enum f_measure_special_sort_order | order, | |||
| DOUBLE | theta, | |||
| UINT * | numbers, | |||
| UINT | num | |||
| ) |
ブローブの位置情報に基づくソーティング
当社の従来ライブラリ(FVL, FVX など)と同様のアルゴリズムによって、 ブローブ列を2次元座標情報に基づいて並べ替えます。
並べ替えの方向は order パラメータと theta パラメータによって決まります。 order は並び順の方向を決める物で、下図のような意味となります。
theta は order で指定する並び順を任意の角度に傾けるパラメータです。
order==UP_TO_LEFT_RIGHT, theta==π/6 の場合の例
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | order | 並び替え順 |
| [in] | theta | 回転角 |
| [in,out] | numbers | 並び替えるブローブ番号の配列 |
| [in] | num | ブローブ番号配列( numbers )の要素数 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_PARAM | 不正なパラメータが指定された。 | |
| F_ERR_INVALID_OBJECT | hresutl に渡された結果ハンドルが不正 | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| FHANDLE FVALGAPI fnFIE_measure_get_region | ( | FHANDLE | hresult, | |
| UINT | blobno, | |||
| INT * | exerr | |||
| ) |
REGION取得
ブローブ解析結果から、指定のブローブの領域情報をリージョンオブジェクトとして取得します。 blobno に指定するブローブ番号は、有効ブローブの番号でなければなりません。
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | blobno | リージョンを取得したいブローブのブローブ番号 |
| [out] | exerr | エラーコード。エラーコードを受け取る必要の無い場合は、NULLを指定します。 |
| *exerr==F_ERR_NONE | 正常終了 | |
| *exerr==F_ERR_NOMEMORY | メモリ不足エラー | |
| *exerr==F_ERR_INVALID_PARAM | パラメータエラー, blobno に指定されたブローブ番号が不正 | |
| *exerr==F_ERR_INVALID_OBJECT | パラメータエラー, hresult に指定されたハンドルが不正 | |
| *exerr==F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_measure_get_parent | ( | const FHANDLE | hresult, | |
| UINT | blobno, | |||
| UINT * | parent | |||
| ) |
親ブローブの取得
対象ブローブの親ブローブのブローブ番号を取得します。 対象ブローブが背景BLOBの場合は、0を返します。
対象ブローブ番号が有効なブローブ番号範囲(0〜( fnFIE_measure_get_blobnum() で取得される数-1))外か、 無効ブローブである場合は F_ERR_INVALID_PARAM を返します。 なお、エラー発生時は parent の値は変更されません。
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | blobno | 対象ブローブのブローブ番号 |
| [out] | parent | 親ブローブのブローブ番号 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_OBJECT | hresult に指定されたオブジェクトハンドルが不正 | |
| F_ERR_INVALID_PARAM | blobno に指定されたブローブ番号が不正, parent に NULL pointer が渡された | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_measure_get_child | ( | const FHANDLE | hresult, | |
| UINT | blobno, | |||
| UINT * | child | |||
| ) |
子ブローブの取得
対象ブローブの子ブローブのブローブ番号を取得します。 対象ブローブに子ブローブが無い場合は、自分自身のブローブ番号を返します。
対象ブローブ番号が有効なブローブ番号範囲(0〜( fnFIE_measure_get_blobnum() で取得される数-1))外か、 無効ブローブである場合は F_ERR_INVALID_PARAM を返します。 なお、エラー発生時は child の値は変更されません。
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | blobno | 対象ブローブのブローブ番号 |
| [out] | child | 子ブローブのブローブ番号 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_OBJECT | hresult に指定されたオブジェクトハンドルが不正 | |
| F_ERR_INVALID_PARAM | blobno に指定されたブローブ番号が不正, child に NULL pointer が渡された | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_measure_get_sibling_back | ( | const FHANDLE | hresult, | |
| UINT | blobno, | |||
| UINT * | back | |||
| ) |
1つ後ろの兄弟ブローブの取得
対象ブローブの1つ後ろの兄弟ブローブのブローブ番号を取得します。 兄弟ブローブが存在しない場合は、自分自身のブローブ番号となります。
対象ブローブ番号が有効なブローブ番号範囲(0〜( fnFIE_measure_get_blobnum() で取得される数-1))外か、 無効ブローブである場合は F_ERR_INVALID_PARAM を返します。 なお、エラー発生時は back の値は変更されません。
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | blobno | 対象ブローブのブローブ番号 |
| [out] | back | 1つ後ろの兄弟ブローブのブローブ番号 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_OBJECT | hresult に指定されたオブジェクトハンドルが不正 | |
| F_ERR_INVALID_PARAM | blobno に指定されたブローブ番号が不正, back に NULL pointer が渡された | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_measure_get_sibling_next | ( | const FHANDLE | hresult, | |
| UINT | blobno, | |||
| UINT * | next | |||
| ) |
1つ次の兄弟ブローブの取得
対象ブローブの1つ次の兄弟ブローブのブローブ番号を取得します。 兄弟ブローブが存在しない場合は、自分自身のブローブ番号となります。
対象ブローブ番号が有効なブローブ番号範囲(0〜( fnFIE_measure_get_blobnum() で取得される数-1))外か、 無効ブローブである場合は F_ERR_INVALID_PARAM を返します。 なお、エラー発生時は next の値は変更されません。
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | blobno | 対象ブローブのブローブ番号 |
| [out] | next | 1つ次の兄弟ブローブのブローブ番号 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_OBJECT | hresult に指定されたオブジェクトハンドルが不正 | |
| F_ERR_INVALID_PARAM | blobno に指定されたブローブ番号が不正, next に NULL pointer が渡された | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_measure_get_is_valid | ( | const FHANDLE | hresult, | |
| UINT | blobno, | |||
| UINT * | invalid | |||
| ) |
ブローブ番号の有効/無効チェック
対象ブローブが無効ブローブであるか、有効ブローブであるかを取得します。 無効ブローブとは、BLOBの解析中に他のBLOBと連結するなどして、 「途中まで存在していたが、最後には無くなってしまったBLOB」です。
対象ブローブ番号が有効なブローブ番号範囲(0〜( fnFIE_measure_get_blobnum() で取得される数-1))外 で有る場合はエラーとなり F_ERR_INVALID_PARAM を返します。 なお、エラー発生時は invalid の値は変更されません。
| [in] | hresult | ブローブ解析結果ハンドル |
| [in] | blobno | 対象ブローブのブローブ番号 |
| [out] | invalid | 有効==0, 無効==1。 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_OBJECT | hresult に指定されたオブジェクトハンドルが不正 | |
| F_ERR_INVALID_PARAM | blobno に指定されたブローブ番号が不正, invalid に NULL pointer が渡された | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_measure_get_blobnum | ( | const FHANDLE | hresult, | |
| UINT * | num | |||
| ) |
全ブローブ数の取得
無効ブローブと有効ブローブを合わせた全てのブローブの個数を返します。 他の2値ブローブ解析関数群で、ブローブ番号を指定する際は、 0〜(本関数で取得した数-1) がブローブ番号範囲となります。
有効なブローブの数を取得したい場合は fnFIE_measure_get_real_blobnum() を使用して下さい。
| [in] | hresult | ブローブ解析結果ハンドル |
| [out] | num | 全ブローブ数 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_OBJECT | hresult に指定されたオブジェクトハンドルが不正 | |
| F_ERR_INVALID_PARAM | num に NULL pointer が渡された | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
| INT FVALGAPI fnFIE_measure_get_real_blobnum | ( | const FHANDLE | hresult, | |
| UINT * | num | |||
| ) |
有効BLOB数の取得
有効なブローブの個数を返します。 但し、有効ブローブ数に背景ブローブ(0番)の数は含みません。 無効ブローブを含めた全てのブローブ数を取得したい場合は fnFIE_measure_get_blobnum() を使用して下さい。
| [in] | hresult | ブローブ解析結果ハンドル |
| [out] | num | 有効ブローブ数 |
| F_ERR_NONE | 正常終了 | |
| F_ERR_INVALID_OBJECT | 不正なハンドルが渡された | |
| F_ERR_INVALID_PARAM | num に NULL pointer が渡された | |
| F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |