実行
[2値ブローブ解析]


データ構造

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)
 ブローブ解析の詳細な処理時間取得

列挙型

ブローブ解析:対象色指定

列挙型の値:
F_MEASURE_BLACKFG_WHITEBG  前景が黒(0)、背景が白(1)
F_MEASURE_WHITEFG_BLACKBG  前景が白(1)、背景が黒(0)
F_MEASURE_BLACKFG  前景が黒(0)、背景は解析しない
F_MEASURE_WHITEFG  前景が白(1)、背景は解析しない


関数

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)の画素の座標をいくつと見なすかということです(下図参照)。 チャイルド画像に対してブローブ解析を行う際に、ルート画像の原点を ブローブ解析時の座標の原点としたい場合などに利用します。

measure_offset.png

Fig. offsetパラメータの説明

但し、offset値を0以外に設定する場合には、座標範囲に注意してください。 offsetを付加した画像の座標範囲、

  • offset.x ≦ x ≦ (offset.x + (画像の幅) - 1)
  • offset.y ≦ y ≦ (offset.y + (画像の高さ) - 1)
が、それぞれ

  • -65534 ≦ x ≦ 65534
  • -65534 ≦ y ≦ 65534
を満たしていなければなりません。

params はブローブ解析のためのパラメータセットです。 F_MEASURE_PARAMS のドキュメントを参照して下さい。

返されたハンドルオブジェクトは不要になったら fnFIE_free_object() にて解放してください。

引数:
[in] himage 入力画像( type: bin )
[in] offset 原点座標オフセット
[in] params パラメータセット
[out] exerr エラーコード。エラーコードを受け取る必要の無い場合は、NULLを指定します。
戻り値:
正常に終了した場合は、2値ブローブ解析結果ハンドル(F_MEASURE_RESULTオブジェクト) を返します。 何らかのエラーが発生し、処理が失敗した場合は NULL を返します。 正常、異常、どちらの場合も exerr パラメータにエラーコード受け取り先変数のポインタが 渡された場合は、そこにエラーコードを代入して返します。返されるエラーコードは下記の何れかです。
戻り値:
*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 ライセンスエラー、または未初期化エラー
example code
// エラー処理は省略しているので注意して下さい。
#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( &param, 0, sizeof(F_MEASURE_PARAMS) );
    param.color_mode = F_MEASURE_WHITEFG_BLACKBG;
    param.neighborhood = 8;

    // メジャー実行
    measure_result = fnFIE_measure_execute( himg, orgin, &param, &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に保持されている解析結果の下部に追加されます(下図)。 本機能は、ラインセンサで画像を取り込むのと平行して解析を行いたい場合などに有効です。

measure_continue.png

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 ライセンスエラー、または未初期化エラー
example code
// エラー処理は省略しているので注意して下さい。
#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( &param, 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, &param, &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 ライセンスエラー、または未初期化エラー


Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:47 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2