構造要素オブジェクト
[モルフォロジ]


関数

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 ) ]

但し

  • -anchor_x ≦ x ≦ size_x - anchor_x - 1
  • -anchor_y ≦ y ≦ size_y - anchor_y - 1

と定義されます。 構造要素の各座標において、 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_xsize_x )
[in] anchor_y 構造要素のY方向アンカー位置( 0 ≦ anchor_ysize_y )
戻り値:
確保された構造要素のハンドル メモリ不足で確保に失敗した場合や ライセンスエラー、または未初期化エラーが発生した場合はNULLを返します。

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 ライセンスエラー、または未初期化エラー
参照:
fnFIE_morphology_se_alloc()

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 )

但し

  • 0 ≦ x ≦ size_x - anchor_x - 1
  • 0 ≦ y ≦ size_y - anchor_y - 1

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構造要素の作成

矩形の構造要素を作成します。

生成される構造要素のアンカー位置は

  • anchor_x = ( size_x - 1 ) / 2
  • anchor_y = ( size_y - 1 ) / 2 となります。

不要になった構造要素オブジェクトは、 fnFIE_free_object() で解放して下さい。

引数:
[in] size_x 矩形の横方向長さ(1以上)
[in] size_y 矩形の縦方向長さ(1以上)
戻り値:
確保された構造要素のハンドル メモリ不足で確保に失敗した場合や ライセンスエラー、または未初期化エラーが発生した場合はNULLを返します。

FHANDLE FVALGAPI fnFIE_create_disk_se ( INT  radius  ) 

DISK構造要素の作成

円盤の形の構造要素を作成します。

生成される構造要素のサイズは

  • size_x = 2 * radius + 1
  • size_y = 2 * radius + 1

生成される構造要素のアンカー位置は

  • anchor_x = radius
  • anchor_y = radius

構造要素に含まれる点は

  • x*x + y*y ≦ radius * radius

となる点(x,y)。 但し

  • -anchor_x ≦ x ≦ size_x - anchor_x - 1
  • -anchor_y ≦ y ≦ size_y - anchor_y - 1

となります。

不要になった構造要素オブジェクトは、 fnFIE_free_object() で解放して下さい。

引数:
[in] radius DISKの半径(1以上)
戻り値:
確保された構造要素のハンドル メモリ不足で確保に失敗した場合や ライセンスエラー、または未初期化エラーが発生した場合はNULLを返します。

FHANDLE FVALGAPI fnFIE_create_line_se ( INT  length,
INT  l_type 
)

LINE構造要素の作成

線の形の構造要素を作成します。

本関数では、 l_type パラメータで指定するモードにより構造要素の決め方を選択します。 下記に示すモードから選択してパラメータに指定して下さい。

F_SE_LINE_FSLASH
構造要素は右上から左下への斜線になります。 生成される構造要素のサイズは
  • size_x = length
  • size_y = length
生成される構造要素のアンカー位置は
  • anchor_x = length / 2
  • anchor_y = ( length - 1 ) / 2
構造要素に含まれる点は
  • x+y = length - 1
となる点(x,y)。 但し
  • -anchor_x ≦ x ≦ size_x - anchor_x - 1
  • -anchor_y ≦ y ≦ size_y - anchor_y - 1
F_SE_LINE_BSLASH
構造要素は左上から右下への斜線になります。 生成される構造要素のサイズは
  • size_x = length
  • size_y = length
生成される構造要素のアンカー位置は
  • anchor_x = ( length - 1 ) / 2
  • anchor_y = ( length - 1 ) / 2
構造要素に含まれる点は
  • x=y となる点(x,y)
但し
  • -anchor_x ≦ x ≦ size_x-anchor_x-1
  • -anchor_y ≦ y ≦ size_y-anchor_y-1
F_SE_LINE_VLINE
構造要素は縦線になります。 生成される構造要素のサイズは
  • size_x = 1
  • size_y = length
生成される構造要素のアンカー位置は
  • anchor_x = 0
  • anchor_y = ( length - 1 ) / 2
F_SE_LINE_HLINE
構造要素は横線になります。 生成される構造要素のサイズは
  • size_x = length
  • size_y = 1
生成される構造要素のアンカー位置は
  • anchor_x = ( length - 1 ) / 2
  • anchor_y = 0
F_SE_LINE_CROSS
構造要素は×印になります。 生成される構造要素のサイズは
  • size_x = length
  • size_y = length
生成される構造要素のアンカー位置は
  • anchor_x = ( length - 1 ) / 2
  • anchor_y = ( length - 1 ) / 2
構造要素に含まれる点は
  • x=y または x+y = length - 1
となる点(x,y)。 但し
  • -anchor_x ≦ x ≦ size_x-anchor_x-1
  • -anchor_y ≦ y ≦ size_y-anchor_y-1
不要になった構造要素オブジェクトは、 fnFIE_free_object() で解放して下さい。

引数:
[in] length 線の長さ(1以上)
[in] l_type 線の種類
  • F_SE_LINE_FSLASH 右上から左下への斜線
  • F_SE_LINE_BSLASH 左上から右下への斜線
  • F_SE_LINE_VLINE 縦線
  • F_SE_LINE_HLINE 横線
  • F_SE_LINE_CROSS ×印
戻り値:
確保された構造要素のハンドル メモリ不足で確保に失敗した場合や ライセンスエラー、または未初期化エラーが発生した場合はNULLを返します。


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