関数 | |
FHANDLE FVALGAPI | fnFIE_morphology_se_alloc (UCHAR *ucpMask, INT size_x, INT size_y, INT step_x, INT anchor_x, INT anchor_y) |
構造要素オブジェクトの確保と構造要素の設定 | |
INT FVALGAPI | fnFIE_morphology_se_init (FHANDLE hse, UCHAR *ucpMask, INT size_x, INT size_y, INT step_x, INT anchor_x, INT anchor_y) |
構造要素の設定 | |
INT FVALGAPI | fnFIE_morphology_get_params (FHANDLE hse, INT *size_x, INT *size_y, INT *anchor_x, INT *anchor_y) |
構造要素情報取得 | |
INT FVALGAPI | fnFIE_morphology_get_mask (FHANDLE hse, UCHAR *mask, INT step_x) |
構造要素取得 | |
INT FVALGAPI | fnFIE_morphology_set_anchor (FHANDLE hse, INT anchor_x, INT anchor_y) |
構造要素のアンカー位置変更 | |
FHANDLE FVALGAPI | fnFIE_create_box_se (INT size_x, INT size_y) |
BOX構造要素の作成 | |
FHANDLE FVALGAPI | fnFIE_create_disk_se (INT radius) |
DISK構造要素の作成 | |
FHANDLE FVALGAPI | fnFIE_create_line_se (INT length, INT l_type) |
LINE構造要素の作成 |
FHANDLE FVALGAPI fnFIE_morphology_se_alloc | ( | UCHAR * | ucpMask, | |
INT | size_x, | |||
INT | size_y, | |||
INT | step_x, | |||
INT | anchor_x, | |||
INT | anchor_y | |||
) |
構造要素オブジェクトの確保と構造要素の設定
構造要素を確保し、指定のマスクで構造要素を設定します。 構造要素は、1次元配列 ucpMask により定義します。 ucpMask には step_x * size_y * sizeof(UCHAR) の領域が必要です。
構造要素は、構造要素の座標を B(x,y) と表記すれば、
B(x,y) = ucpMask [ ( y + anchor_y ) * step_x + ( x + anchor_x ) ]
但し
と定義されます。 構造要素の各座標において、 ucpMask の値が0以外であれば構造要素に含まれる点、 ucpMask の値が0であれば構造要素に含まれない点と定義されます。
構造要素がまったく点を含まない場合はエラーとなります。(NULLを返します)
不要になった構造要素オブジェクトは、 fnFIE_free_object() で解放して下さい。
[in] | ucpMask | 構造要素の値を指定するマスクの先頭ポインタ |
[in] | size_x | マスク幅(1以上) |
[in] | size_y | マスク高さ(1以上) |
[in] | step_x | マスクメモリ横幅(UCHAR単位) |
[in] | anchor_x | 構造要素のX方向アンカー位置( 0 ≦ anchor_x < size_x ) |
[in] | anchor_y | 構造要素のY方向アンカー位置( 0 ≦ anchor_y < size_y ) |
INT FVALGAPI fnFIE_morphology_se_init | ( | FHANDLE | hse, | |
UCHAR * | ucpMask, | |||
INT | size_x, | |||
INT | size_y, | |||
INT | step_x, | |||
INT | anchor_x, | |||
INT | anchor_y | |||
) |
構造要素の設定
指定のパラメータで構造要素を設定する関数。 構造要素がまったく点を含まない場合はエラーとなります。(F_ERR_INVALID_PARAMを返します) 構造要素の設定方法については fnFIE_morphology_se_alloc() を参照してください。
[in,out] | hse | 設定する構造要素オブジェクトのハンドル |
[in] | ucpMask | 構造要素の値を指定するマスクの先頭ポインタ |
[in] | size_x | マスク幅(1以上) |
[in] | size_y | マスク高さ(1以上) |
[in] | step_x | マスクメモリ横幅(UCHAR単位) |
[in] | anchor_x | 構造要素のX方向アンカー位置( 0 ≦ anchor_x < size_x ) |
[in] | anchor_y | 構造要素のY方向アンカー位置( 0 ≦ anchor_y < size_y ) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_OBJECT | 不正なハンドルが渡されたため異常終了 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_morphology_get_params | ( | FHANDLE | hse, | |
INT * | size_x, | |||
INT * | size_y, | |||
INT * | anchor_x, | |||
INT * | anchor_y | |||
) |
構造要素情報取得
hse パラメータで指定された構造要素の情報を取得します。 取得できる情報は、X方向サイズ、Y方向サイズ、X方向アンカー、Y方向アンカー です。
出力先の引数( size_x, size_y, anchor_x, anchor_y )はすべてNULLポインタチェックされるため、 必要の無いものにはNULLが指定可能です。このとき hse 以外のすべてのパラメータがNULLであっても、 エラーにはならず正常終了となります。たとえば、構造要素のX方向アンカー位置だけを取得したければ、 anchor_x に有効なポインタを渡し、他の size_x, hegiht, anchor_y にはNULLを指定すれば良いです。
[in] | hse | 情報を取得する構造要素のハンドル |
[out] | size_x | 構造要素のX方向サイズ |
[out] | size_y | 構造要素のY方向サイズ |
[out] | anchor_x | 構造要素のX方向アンカー位置 |
[out] | anchor_y | 構造要素のY方向アンカー位置 |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_OBJECT | 不正なハンドルが渡されたため異常終了 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_morphology_get_mask | ( | FHANDLE | hse, | |
UCHAR * | mask, | |||
INT | step_x | |||
) |
構造要素取得
hse の構造要素を1次元配列 mask にコピーします。 あらかじめ fnFIE_morphology_get_params() で構造要素のサイズ( size_x, size_y )を 取得し、必要な領域を確保して下しさい。 mask には step_x * size_y * sizeof(UCHAR) の領域が必要です。 mask にNULLを指定するとF_ERR_INVALID_PARAMとなります。 mask の座標を mask(x,y)、構造要素の座標を B(x,y) と表記すれば、
mask(x,y) = B( x - anchor_x, y - anchor_y )
但し
mask(x,y) = mask [ y * step_x + x ]
mask の各座標において、値が255であれば構造要素に含まれる点、 値が0であれば構造要素に含まれない点を意味します。
[in] | hse | 情報を取得する構造要素のハンドル |
[out] | mask | 構造要素のマスクパターンのコピー先 |
[in] | step_x | maskのメモリ幅(byte単位、構造要素のX方向サイズ以上) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_OBJECT | 不正なハンドルが渡されたため異常終了 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
INT FVALGAPI fnFIE_morphology_set_anchor | ( | FHANDLE | hse, | |
INT | anchor_x, | |||
INT | anchor_y | |||
) |
構造要素のアンカー位置変更
構造要素のアンカー位置を変更します。
[in,out] | hse | 構造要素のハンドル |
[in] | anchor_x | 構造要素のX方向アンカー位置( 0 ≦ anchor_x < 構造要素のX方向サイズ ) |
[in] | anchor_y | 構造要素のY方向アンカー位置( 0 ≦ anchor_y < 構造要素のY方向サイズ ) |
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_OBJECT | 不正なハンドルが渡されたため異常終了 | |
F_ERR_INVALID_PARAM | パラメータ異常 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
FHANDLE FVALGAPI fnFIE_create_box_se | ( | INT | size_x, | |
INT | size_y | |||
) |
BOX構造要素の作成
矩形の構造要素を作成します。
生成される構造要素のアンカー位置は
不要になった構造要素オブジェクトは、 fnFIE_free_object() で解放して下さい。
[in] | size_x | 矩形の横方向長さ(1以上) |
[in] | size_y | 矩形の縦方向長さ(1以上) |
FHANDLE FVALGAPI fnFIE_create_disk_se | ( | INT | radius | ) |
DISK構造要素の作成
円盤の形の構造要素を作成します。
生成される構造要素のサイズは
生成される構造要素のアンカー位置は
構造要素に含まれる点は
となる点(x,y)。 但し
となります。
不要になった構造要素オブジェクトは、 fnFIE_free_object() で解放して下さい。
[in] | radius | DISKの半径(1以上) |
FHANDLE FVALGAPI fnFIE_create_line_se | ( | INT | length, | |
INT | l_type | |||
) |
LINE構造要素の作成
線の形の構造要素を作成します。
本関数では、 l_type パラメータで指定するモードにより構造要素の決め方を選択します。 下記に示すモードから選択してパラメータに指定して下さい。
[in] | length | 線の長さ(1以上) |
[in] | l_type | 線の種類
|