データ構造 | |
struct | F_MEASURE_PARAMS |
ブローブ解析処理パラメータ [詳細] | |
列挙型 | |
enum | f_measure_color_mode { F_MEASURE_BLACKFG_WHITEBG = 0, F_MEASURE_WHITEFG_BLACKBG = 1, F_MEASURE_BLACKFG = 2, F_MEASURE_WHITEFG = 3 } |
ブローブ解析:対象色指定 [詳細] | |
関数 | |
FHANDLE FVALGAPI | fnFIE_measure_execute (FHANDLE himage, PNT_T offset, const F_MEASURE_PARAMS *params, INT *exerr) |
2値ブローブ解析実行 | |
INT FVALGAPI | fnFIE_measure_continue (FHANDLE hresult, FHANDLE himage) |
ブローブ解析の続行 | |
INT FVALGAPI | fnFIE_measure_query_timings (FHANDLE hresult, DOUBLE *rle, DOUBLE *labeling, DOUBLE *blobinfo, DOUBLE *feature_calculation) |
ブローブ解析の詳細な処理時間取得 |
enum f_measure_color_mode |
FHANDLE FVALGAPI fnFIE_measure_execute | ( | FHANDLE | himage, | |
PNT_T | offset, | |||
const F_MEASURE_PARAMS * | params, | |||
INT * | exerr | |||
) |
2値ブローブ解析実行
himage にて指定された2値画像に対して、2値ブローブ解析処理を実行します。 himage は幅、高さ共に65535以下、チャネル数=1の2値画像(type=F_IMG_BIN)でなければなりません。
offset は2値画像の座標系を指定するためのパラメータであり、 画像(0,0)の画素の座標をいくつと見なすかということです(下図参照)。 チャイルド画像に対してブローブ解析を行う際に、ルート画像の原点を ブローブ解析時の座標の原点としたい場合などに利用します。
Fig. offsetパラメータの説明
params はブローブ解析のためのパラメータセットです。 F_MEASURE_PARAMS のドキュメントを参照して下さい。
返されたハンドルオブジェクトは不要になったら fnFIE_free_object() にて解放してください。
[in] | himage | 入力画像( type: bin ) |
[in] | offset | 原点座標オフセット |
[in] | params | パラメータセット |
[out] | exerr | エラーコード。エラーコードを受け取る必要の無い場合は、NULLを指定します。 |
*exerr==F_ERR_NONE | 正常終了 | |
*exerr==F_ERR_NOMEMORY | メモリ不足エラー | |
*exerr==F_ERR_INVALID_PARAM | パラメータエラー | |
*exerr==F_ERR_INVALID_IMAGE | himage パラメータに指定された画像オブジェクトが不正 | |
*exerr==F_ERR_MEASURE_RUN_OVERFLOW | ラン数が params->max_runs を超えたため、中断した | |
*exerr==F_ERR_MEASURE_BLOB_OVERFLOW | ブローブ数が params->max_blobs を超えたため、中断した | |
*exerr==F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
// エラー処理は省略しているので注意して下さい。 #include <stdio.h> #include "fie.h" INT main() { FHANDLE himg = NULL; FHANDLE measure_result; F_MEASURE_PARAMS param; PNT_T orgin; INT exerr; UINT blobnum; // 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_blobnum( measure_result, &blobnum ); printf( "blobs:%d\n", blobnum ); fnFIE_free_object( measure_result ); fnFIE_free_object( himg ); // 終了処理 fnFIE_teardown(); return 0; }
INT FVALGAPI fnFIE_measure_continue | ( | FHANDLE | hresult, | |
FHANDLE | himage | |||
) |
ブローブ解析の続行
fnFIE_measure_execute() の解析結果に追加する形で、 himage に指定された2値画像の2値ブローブ解析処理を実行します。 himage を解析した結果は、hresultに保持されている解析結果の下部に追加されます(下図)。 本機能は、ラインセンサで画像を取り込むのと平行して解析を行いたい場合などに有効です。
himage は幅、高さ共に65535以下、チャネル数=1の2値画像(type=F_IMG_BIN)でなければなりません。 また、幅は fnFIE_measure_execute() の実行時に指定した画像と同じ幅でなければなりません。 既に解析された部分と himage に指定された画像の行数(高さ)の和 が params->max_rows を超えた場合、 または その和+offset.y が 65535 を超えた場合は F_ERR_MEASURE_ROW_OVERFLOW エラーとなります。
ブローブ解析に関するパラメータは fnFIE_measure_execute() の実行時に指定した パラメータ(params, offset)が使われます。途中で変更することは出来ません。
また、エラー発生時は hresult の内容は不正な状態となるため、直ちに fnFIE_free_object() にて解放してください。
[in,out] | hresult | ブローブ解析結果 |
[in] | himage | 追加する画像オブジェクト( type: bin ) |
F_ERR_NONE | 正常終了 | |
F_ERR_NOMEMORY | メモリ不足エラー | |
F_ERR_UNKNOWN | hresult の内部パラメータが不正 | |
F_ERR_INVALID_OBJECT | hresult パラメータに指定された2値ブローブ解析結果ハンドルが不正 | |
F_ERR_INVALID_IMAGE | himage パラメータに指定された画像オブジェクトが不正 | |
F_ERR_MEASURE_ROW_OVERFLOW | 総行数が params->max_rows を超えた、又は (offset.y+総行数)が 65535 を超えたため、中断した | |
F_ERR_MEASURE_RUN_OVERFLOW | ラン数が params->max_runs を超えたため、中断した | |
F_ERR_MEASURE_BLOB_OVERFLOW | ブローブ数が params->max_blobs を超えたため、中断した | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
// エラー処理は省略しているので注意して下さい。 #include <stdio.h> #include "fie.h" INT main() { FHANDLE himg=NULL, hchild; FHANDLE measure_result; F_MEASURE_PARAMS param; PNT_T orgin; INT exerr, i, width, height; UINT blobnum; // 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; // y=0〜9まで処理 width = fnFIE_img_get_width( himg ); height = fnFIE_img_get_height( himg ); hchild = fnFIE_img_child_alloc( himg, 0, 0, width, 10 ); measure_result = fnFIE_measure_execute( hchild, orgin, ¶m, &exerr ); // y=10〜(height-1)まで1行ずつ処理 // ラインセンサでの取り込みを模擬 for( i=10; i<height; i++){ fnFIE_img_child_attach( hchild, himg, 0, i, width, 1 ); fnFIE_measure_continue( measure_result, hchild ); } // 全ブローブ数の取得&表示 fnFIE_measure_get_blobnum( measure_result, &blobnum ); printf( "blobs:%d\n", blobnum ); fnFIE_free_object( measure_result ); // 終了処理 fnFIE_teardown(); return 0; }
INT FVALGAPI fnFIE_measure_query_timings | ( | FHANDLE | hresult, | |
DOUBLE * | rle, | |||
DOUBLE * | labeling, | |||
DOUBLE * | blobinfo, | |||
DOUBLE * | feature_calculation | |||
) |
ブローブ解析の詳細な処理時間取得
ブローブ解析処理 fnFIE_measure_execute() 又は fnFIE_measure_continue() 関数実行時の 内部処理時間を取得します。各処理時間は直前の実行時のものとなりますので、 fnFIE_measure_continue() を使用する際はご注意ください。
[in] | hresult | ブローブ解析結果ハンドル |
[out] | rle | ランレングス抽出処理時間 |
[out] | labeling | ラベリング処理時間 |
[out] | blobinfo | ブローブ情報構築処理時間 |
[out] | feature_calculation | 事前特徴量計算処理時間 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_OBJECT | hresult に不正なオブジェクトが渡された | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |