特徴量計算
[リージョン処理]


関数

INT FVALGAPI fnFIE_region_set_connection (FHANDLE hreg, INT connection)
 REGIONオブジェクトの連結性設定関数
INT FVALGAPI fnFIE_region_calc_boundary (FHANDLE hreg, PNT_T **pnts, UINT *pnum)
 REGION境界点抽出
INT FVALGAPI fnFIE_region_calc_boundary_ex (FHANDLE hreg, PNT_T **ext_pnts, UINT *ext_pnum, PNT_T **int_pnts, UINT *int_pnum)
 REGION境界点抽出(拡張版)
INT FVALGAPI fnFIE_region_get_perimeter (FHANDLE hreg, DOUBLE *perimeter)
 REGION特徴量:周囲長計測
INT FVALGAPI fnFIE_region_get_area (FHANDLE hreg, UINT *area)
 REGION特徴量:面積
INT FVALGAPI fnFIE_region_get_xyrange (FHANDLE hreg, INT *xmin, INT *xmax, INT *ymin, INT *ymax)
 REGION特徴量:座標の最大最小値
INT FVALGAPI fnFIE_region_get_maxminpos (FHANDLE hreg, INT *xmin_at_ymin, INT *xmax_at_ymax, INT *ymin_at_xmax, INT *ymax_at_xmin)
 REGION特徴量:座標の最大最小位置
INT FVALGAPI fnFIE_region_get_xydiff (FHANDLE hreg, INT *xdiff, INT *ydiff)
 REGION特徴量:外接矩形サイズ取得(xdiff、ydiff)
INT FVALGAPI fnFIE_region_get_rect1_area (FHANDLE hreg, UINT *area)
 REGION特徴量:外接矩形面積
INT FVALGAPI fnFIE_region_get_rect1_lratio (FHANDLE hreg, DOUBLE *lratio)
 REGION特徴量:外接矩形縦横比
INT FVALGAPI fnFIE_region_get_rect1_sratio (FHANDLE hreg, DOUBLE *sratio)
 REGION特徴量:外接矩形面積比
INT FVALGAPI fnFIE_region_get_moment1 (FHANDLE hreg, DLONG *sumx, DLONG *sumy)
 REGION特徴量:1次モーメント
INT FVALGAPI fnFIE_region_get_moment2 (FHANDLE hreg, UDLONG *sumx2, UDLONG *sumy2, DLONG *sumxy)
 REGION特徴量:2次モーメント
INT FVALGAPI fnFIE_region_calc_central_moment2 (FHANDLE hreg, DOUBLE *mg20, DOUBLE *mg02, DOUBLE *mg11)
 REGION特徴量:重心2次モーメント
INT FVALGAPI fnFIE_region_calc_moment3 (FHANDLE hreg, DOUBLE *m30, DOUBLE *m03, DOUBLE *m21, DOUBLE *m12)
 REGION特徴量:3次モーメント
INT FVALGAPI fnFIE_region_calc_central_moment3 (FHANDLE hreg, DOUBLE *mg30, DOUBLE *mg03, DOUBLE *mg21, DOUBLE *mg12)
 REGION特徴量:重心3次モーメント
INT FVALGAPI fnFIE_region_calc_moment (FHANDLE hreg, INT xn, INT yn, DOUBLE *m)
 REGION特徴量:N次モーメント
INT FVALGAPI fnFIE_region_calc_central_moment (FHANDLE hreg, INT xn, INT yn, DOUBLE *mg)
 REGION特徴量:重心N次モーメント
INT FVALGAPI fnFIE_region_calc_hu_moments (FHANDLE hreg, DOUBLE *h)
 REGION特徴量:Huモーメント不変量
INT FVALGAPI fnFIE_region_get_center (FHANDLE hreg, DOUBLE *centerx, DOUBLE *centery)
 REGION特徴量:重心
INT FVALGAPI fnFIE_region_get_equivalent_ellipse (FHANDLE hreg, DOUBLE *majoraxis, DOUBLE *minoraxis, DOUBLE *theta, DOUBLE *aratio)
 REGION特徴量:等価楕円
INT FVALGAPI fnFIE_region_calc_equivalent_disk (FHANDLE hreg, DOUBLE *diameter)
 REGION特徴量:面積等価円
INT FVALGAPI fnFIE_region_get_rect2_size (FHANDLE hreg, DOUBLE *lsize, DOUBLE *wsize)
 REGION特徴量:外接長方形
INT FVALGAPI fnFIE_region_get_rect2_area (FHANDLE hreg, DOUBLE *area)
 REGION特徴量:外接長方形面積
INT FVALGAPI fnFIE_region_get_rect2_lratio (FHANDLE hreg, DOUBLE *lratio)
 REGION特徴量:外接長方形縦横比
INT FVALGAPI fnFIE_region_get_rect2_sratio (FHANDLE hreg, DOUBLE *sratio)
 REGION特徴量:外接長方形面積比
INT FVALGAPI fnFIE_region_calc_circularity1 (FHANDLE hreg, DOUBLE *circularity)
 REGION特徴量:真円度#1
INT FVALGAPI fnFIE_region_calc_equivalent_circle (FHANDLE hreg, DOUBLE *diameter)
 REGION特徴量:周囲長等価円
INT FVALGAPI fnFIE_region_get_distance_to_boundary (FHANDLE hreg, DOUBLE *dpmin, DOUBLE *dpmax, DOUBLE *dpave, DOUBLE *dpsigma)
 REGION特徴量:外周距離
INT FVALGAPI fnFIE_region_calc_circularity2 (FHANDLE hreg, DOUBLE *circularity)
 REGION特徴量:真円度#2
INT FVALGAPI fnFIE_region_calc_circularity3 (FHANDLE hreg, DOUBLE *circularity)
 REGION特徴量:真円度#3
INT FVALGAPI fnFIE_region_calc_convexfeature (FHANDLE hreg, DOUBLE *convex_area, DOUBLE *convex_perim)
 REGION特徴量:凸包面積・周囲長
INT FVALGAPI fnFIE_region_calc_convexratio (FHANDLE hreg, DOUBLE *convex_arearatio, DOUBLE *convex_perimratio)
 REGION特徴量:凸包面積比・周囲長比
INT FVALGAPI fnFIE_region_calc_feret_diameter_maxmin (FHANDLE hreg, DOUBLE *feretmax, DOUBLE *fmax_theta, DOUBLE *feretmin, DOUBLE *fmin_theta)
 REGION特徴量:最大フェレ径、最小フェレ径
INT FVALGAPI fnFIE_region_calc_feret_diameter (FHANDLE hreg, DOUBLE theta, INT mode, DOUBLE *diameter)
 REGION特徴量:指定角度フェレ径計測
INT FVALGAPI fnFIE_region_calc_convex2d (FHANDLE hreg, PNT_T **ppHull, UINT *verNum)
 REGION特徴量:凸包生成
INT FVALGAPI fnFIE_region_calc_rect2pos (FHANDLE hreg, DPNT_T *points)
 REGION特徴量:外接長方形の頂点
INT FVALGAPI fnFIE_region_calc_bounding_rotated_rect_pos (FHANDLE hreg, DOUBLE theta, DPNT_T *points)
 REGION特徴量:指定角度外接長方形の頂点
INT FVALGAPI fnFIE_region_calc_circumcircle (FHANDLE hreg, DPNT_T *center, DOUBLE *radius)
 REGION特徴量:最小外接円

関数

INT FVALGAPI fnFIE_region_set_connection ( FHANDLE  hreg,
INT  connection 
)

REGIONオブジェクトの連結性設定関数

REGIONオブジェクトの連結性を設定します。 周囲長および外周距離計算時に必要な境界点列を求める際に使われるパラメータです。 連結性が変更された場合は、関連する特徴量のフラグがクリアされます。

  • REGIONオブジェクトの連結性の初期値は8です。
引数:
[in] hreg REGIONハンドル
[in] connection 連結性
  • 8 : 8連結
  • 4 : 4連結
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータ
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_calc_boundary ( FHANDLE  hreg,
PNT_T **  pnts,
UINT *  pnum 
)

REGION境界点抽出

領域(REGION)の境界点を抽出します。 特徴量の意味は ここ を参照して下さい。 領域の境界にはexternal boundaryとinternal boundaryの2種類ありますが、 本関数ではexternal boundaryのみ抽出します。(下図参照) internal boundaryが必要な場合には fnFIE_region_calc_boundary_ex() を使用してください。

fie_region_boundary_01.png

連結モードによって異なる境界点列が取得できます。(下図参照) 連結性の設定は fnFIE_region_set_connection() より行って下さい。

fie_region_boundary_02.png

領域の境界を画像座標系で反時計回りに探索(右手の法則)します。 1つの境界点列で始点と終点は必ず同一点となります。

fie_region_boundary_03.png

領域が2つ以上ある場合(ラベリングするとラベル数が2以上になるとき)でも、すべての領域について境界点列を生成します。 1つの境界点列が終了すると、座標にI32_MINが格納された点を挿入しています。 また、境界点列が複数ある場合、1 yの昇順、2 xの昇順で境界点列の始点を使ってソートします。

出力用のメモリは関数内で確保されます。 *pnts はNULLにしておいて下さい。 得られた点列( *pnts )は、不要になった後に fnOAL_free() を使用して解放して下さい。

注意:
  • 領域が存在しないREGIONの時は *pnts は NULL , *pnum は0となります。
  • xdiff, ydiff がそれぞれ2以上65535以下の領域で、4連結で境界点抽出を行った場合の *pnum のサイズの最大値は面積の1.5〜1.6倍となります。
  • 8連結の場合は xdiff, ydiff が65535以下であれば *pnum がUI32_MAXを超えることはないと考えられます。(ただし証明していない。)
  • FVLなどのFASTの境界点抽出ライブラリとは得られる結果が異なります。
  • 連結性の設定については fnFIE_region_set_connection() を参照して下さい。
  • 関数エントリー時 *pnts == NULL でなければいけません。
抽出例
fie_region_boundary_04.png
上図を8連結モードで境界点列を生成したときの結果を以下に示します。 ただしPNT_Tの値を(x,y)と表記します。
	pnum : 22
	pnts : (1,1)(1,2)(1,3)(2,3)(3,3)(4,3)(5,3)(4,3)(3,2)(3,1)(2,1)(1,1)(I32_MIN,I32_MIN)
           (3,5)(2,6)(3,5)(4,6)(5,6)(5,5)(4,5)(3,5)(I32_MIN,I32_MIN)
	

上図を4連結モードで境界点列を生成したときの結果を以下に示します。

	pnum : 25
	pnts : (1,1)(1,2)(1,3)(2,3)(3,3)(4,3)(5,3)(4,3)(3,3)(3,2)(3,1)(2,1)(1,1)(I32_MIN,I32_MIN)
           (3,5)(4,5)(4,6)(5,6)(5,5)(4,5)(3,5)(I32_MIN,I32_MIN)(2,6)(2,6)(I32_MIN,I32_MIN)
	

example code
// エラー処理は省略しているので注意して下さい。

#include <stdio.h>
#include "oal_aloc.h"
#include "fie.h"

INT main()
{
    FHANDLE hreg=NULL;
    PNT_T *pnts;
    UINT i,pnum=0;
    // リージョン定義用のランレングス配列
    F_RUNLENGTH runlengths[] = {
        { 1, 3, 1 },
        { 1, 1, 2 }, { 3, 3, 2 },
        { 1, 5, 3 },
        { 3, 5, 5 },
        { 2, 2, 6 }, { 4, 5, 6 },
    };

    // FIEライブラリの使用前に必ずコールする必要があります。
    fnFIE_setup();

    // 適当な領域(hreg)を用意する。ドキュメントの抽出例に対応
    hreg = fnFIE_create_region_runlength(runlengths, 7);

    // pntsをNULLで初期化する
    pnts=NULL;
    
    // 8連結で境界点列を求める例
    fnFIE_region_set_connection  ( hreg, 8 );
    fnFIE_region_calc_boundary( hreg, &pnts, &pnum );
    
    // 結果を表示する
    printf("pnum : %d\n", pnum);
    printf("pnts :\n");
    for(i=0;i<pnum;i++){
        if (pnts[i].x != I32_MIN) {
            printf("(%d,%d)", pnts[i].x, pnts[i].y);
        }
        else {
            // 1つの境界点列が終了
            printf("(I32_MIN,I32_MIN)\n");
        }
    }
    // pntsのメモリ解放はユーザが行う
    fnOAL_free( pnts );

    // 解放
    fnFIE_free_object(hreg);


    // 終了処理
    fnFIE_teardown();

    return 0;
}
引数:
[in] hreg REGIONハンドル
[out] pnts 出力点列の先頭ポインタを格納するアドレス
関数エントリー時 *pnts == NULL でなければならない
[out] pnum 出力点列の点の数。
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_INVALID_PARAM パラメータ異常
  • パラメータに NULL ポインタが渡された。
  • *pnts が NULL でない
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_set_connection(), fnFIE_region_calc_boundary_ex()

INT FVALGAPI fnFIE_region_calc_boundary_ex ( FHANDLE  hreg,
PNT_T **  ext_pnts,
UINT *  ext_pnum,
PNT_T **  int_pnts,
UINT *  int_pnum 
)

REGION境界点抽出(拡張版)

領域(REGION)の境界点を抽出します。 特徴量の意味は ここ を参照して下さい。 領域の境界にはexternal boundaryとinternal boundaryの2種類ありますが、 本関数ではその両方が取得できる fnFIE_region_calc_boundary() の拡張版です。(下図参照) external boundaryのみが取得できればいい場合は fnFIE_region_calc_boundary() をお使いください。

fie_region_boundary_01.png

連結モードによって異なる境界点列が取得できます。(下図参照) 連結性の設定は fnFIE_region_set_connection() より行って下さい。

fie_region_boundary_02.png

領域の境界を画像座標系で反時計回りに探索(右手の法則)します。 1つの境界点列で始点と終点は必ず同一点となります。

fie_region_boundary_03.png

領域が2つ以上ある場合(ラベリングするとラベル数が2以上になるとき)でも、すべての領域について境界点列を生成します。 1つの境界点列が終了すると、座標にI32_MINが格納された点を挿入しています。 また、境界点列が複数ある場合、1:yの昇順、2:xの昇順 で境界点列の始点を使ってソートします。

出力用のメモリは関数内で確保されます。 *ext_pnts, *int_pnts はNULLにしておいて下さい。 得られた点列( *ext_pnts, *int_pnts )は、不要になった後に fnOAL_free() を使用して解放して下さい。

注意:
  • 領域が存在しないREGIONの時は *ext_pnts および *int_pnts は NULL , *ext_pnum および *int_pnum は0となります。
  • 領域にinternal boundaryが無い(穴がない)REGIONの場合は、 *int_pnts は NULL , *int_pnum は0となります。
  • xdiff, ydiff がそれぞれ2以上65535以下の領域で、4連結で境界点抽出を行った場合の *ext_pnum のサイズの最大値は面積の1.5〜1.6倍となります。
  • 8連結の場合は xdiff, ydiff が65535以下であれば *ext_pnum がUI32_MAXを超えることはないと考えられます。(ただし証明していない。)
  • FVLなどのFASTの境界点抽出ライブラリとは得られる結果が異なります。
  • 連結性の設定については fnFIE_region_set_connection() を参照して下さい。
  • *ext_pnts は関数エントリー時 *ext_pnts == NULL でなければいけません。( ext_pnts != NULL の場合 )
  • *int_pnts は関数エントリー時 *int_pnts == NULL でなければいけません。( int_pnts != NULL の場合 )
抽出例
fie_region_boundary_ex.png
上図を8連結モードで境界点列を生成したときの結果を以下に示します。 ただしPNT_Tの値を(x,y)と表記します。
	ext_pnum : 28
	ext_pnts : (0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,4),(4,4),(5,4),(6,4),
	           (6,3),(6,2),(6,1),(5,1),(4,1),(3,1),(2,1),(1,1),(0,1),(I32_MIN,I32_MIN)
	           (3,6),(2,7),(3,6),(4,6),(5,6),(4,6),(3,6),(I32_MIN,I32_MIN)

	int_pnum : 19
	int_pnts : (0,2),(1,1),(2,1),(3,2),(3,3),(2,4),(1,4),(0,3),(0,2),(I32_MIN,I32_MIN)
	           (3,2),(4,1),(5,2),(6,3),(5,4),(4,4),(3,3),(3,2),(I32_MIN,I32_MIN)
	

上図を4連結モードで境界点列を生成したときの結果を以下に示します。

	ext_pnum : 29
	ext_pnts : (0,1),(0,2),(0,3),(0,4),(1,4),(2,4),(3,4),(4,4),(5,4),(6,4),(6,3),
	           (6,2),(6,1),(5,1),(4,1),(3,1),(2,1),(1,1),(0,1),(I32_MIN,I32_MIN)
	           (3,6),(4,6),(5,6),(4,6),(3,6),(I32_MIN,I32_MIN)
	           (2,7),(2,7),(I32_MIN,I32_MIN)

	int_pnum : 28
	int_pnts : (0,2),(0,1),(1,1),(2,1),(3,1),(3,2),(3,3),(3,4),(2,4),(1,4),(0,4),(0,3),(0,2),(I32_MIN,I32_MIN)
	           (3,2),(3,1),(4,1),(5,1),(5,2),(6,2),(6,3),(6,4),(5,4),(4,4),(3,4),(3,3),(3,2),(I32_MIN,I32_MIN)
	

引数:
[in] hreg REGIONハンドル
[out] ext_pnts external boundary の出力点列の先頭ポインタを格納するアドレス
不要な場合は ext_pnts に NULL を渡す。 ext_pnts != NULL の場合、 関数エントリー時 *ext_pnts == NULL でなければなりません
[out] ext_pnum ext_pnts に出力された点の数
ext_pnts == NULL の場合、このパラメータは参照されません
[out] int_pnts 出力点列の先頭ポインタを格納するアドレス
不要な場合は int_pnts に NULL を渡す。 int_pnts != NULL の場合、 関数エントリー時 *int_pnts == NULL でなければなりません
[out] int_pnum int_pnts に出力された点の数
int_pnts == NULL の場合、このパラメータは参照されません
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_INVALID_PARAM パラメータ異常
  • パラメータに NULL ポインタが渡された。
  • ext_pntsint_pnts がともに NULL
  • *ext_pnts 又は *int_pnts が NULL でない
  • ext_pnum 又は int_pnum が NULL
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_calc_boundary(), fnFIE_region_set_connection()

INT FVALGAPI fnFIE_region_get_perimeter ( FHANDLE  hreg,
DOUBLE *  perimeter 
)

REGION特徴量:周囲長計測

REGIONの周囲長を計測します。 REGIONの境界点列のユークリッド距離を周囲長と定義します。 連結性は fnFIE_region_set_connection() で指定した値を使用します。 (指定した連結性で境界点列抽出を行い、境界点列から周囲長を求めます。)

  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 8連結の場合、xdiff,ydiffが65535以下でない場合は正しく計算できない可能性があります。
  • 4連結の場合、xdiff,ydiffが65535以下 かつ (面積/1.51)<=UI32_MAX (←左辺整数)でない場合は正しく計算できない可能性があります。
  • 連結性の設定については fnFIE_region_set_connection() 参照
引数:
[in] hreg REGIONハンドル
[out] perimeter 周囲長
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_set_connection()

INT FVALGAPI fnFIE_region_get_area ( FHANDLE  hreg,
UINT *  area 
)

REGION特徴量:面積

REGIONの面積を計算します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの面積を出力します。
  • 領域がない場合は面積は0となります。
  • xdiff,ydiffが65535以下で使用することを想定した計算アルゴリズムとなっています。それ以外の場合はオーバーフローの可能性があります。
引数:
[in] hreg REGIONハンドル
[out] area 面積
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • area に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_get_xyrange ( FHANDLE  hreg,
INT *  xmin,
INT *  xmax,
INT *  ymin,
INT *  ymax 
)

REGION特徴量:座標の最大最小値

REGIONのX,Y座標の最大値と最小値をそれぞれ求めます。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
引数:
[in] hreg REGIONハンドル
[out] xmin X座標最小値
[out] xmax X座標最大値
[out] ymin Y座標最小値
[out] ymax Y座標最大値
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • xmin, xmax, ymin, ymax に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_get_maxminpos ( FHANDLE  hreg,
INT *  xmin_at_ymin,
INT *  xmax_at_ymax,
INT *  ymin_at_xmax,
INT *  ymax_at_xmin 
)

REGION特徴量:座標の最大最小位置

REGIONのX,Y座標の最大最小位置を求めます。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で座標の最大最小値を必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] xmin_at_ymin Yの最小位置におけるXの最小値
[out] xmax_at_ymax Yの最大位置におけるXの最大値
[out] ymin_at_xmax Xの最大位置におけるYの最小値
[out] ymax_at_xmin Xの最小位置におけるYの最大値
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • xmin_at_ymin, xmax_at_ymax, ymin_at_xmax, ymax_at_xmin に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_xyrange()

INT FVALGAPI fnFIE_region_get_xydiff ( FHANDLE  hreg,
INT *  xdiff,
INT *  ydiff 
)

REGION特徴量:外接矩形サイズ取得(xdiff、ydiff)

REGIONの外接矩形の横サイズ( xdiff )と縦サイズ( ydiff )を取得します。 特徴量の意味は ここ を参照してください。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で座標の最大最小値を必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] xdiff 外接矩形横サイズ
[out] ydiff 外接矩形縦サイズ
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • xdiff, ydiff に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_xyrange()

INT FVALGAPI fnFIE_region_get_rect1_area ( FHANDLE  hreg,
UINT *  area 
)

REGION特徴量:外接矩形面積

REGIONの外接矩形の面積を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で外接矩形サイズを必要に応じて求めます。
  • xdiff,ydiffが65535以下で使用することを想定した計算アルゴリズムとなっています。それ以外の場合はオーバーフローの可能性があります。
引数:
[in] hreg REGIONハンドル
[out] area 外接矩形面積
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • area に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_xydiff()

INT FVALGAPI fnFIE_region_get_rect1_lratio ( FHANDLE  hreg,
DOUBLE *  lratio 
)

REGION特徴量:外接矩形縦横比

REGIONの外接矩形の縦横比を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で外接矩形サイズを必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] lratio 外接矩形縦横比
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • lratio に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_xydiff()

INT FVALGAPI fnFIE_region_get_rect1_sratio ( FHANDLE  hreg,
DOUBLE *  sratio 
)

REGION特徴量:外接矩形面積比

REGIONの外接矩形の面積比を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で領域面積、外接矩形面積を必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] sratio 外接矩形面積比
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • sratio に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_area(), fnFIE_region_get_xydiff()

INT FVALGAPI fnFIE_region_get_moment1 ( FHANDLE  hreg,
DLONG *  sumx,
DLONG *  sumy 
)

REGION特徴量:1次モーメント

REGIONの1次モーメントを取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • xdiff,ydiffが65535以下かつ-65534<=x,y<=65534の条件を満たさない場合はオーバーフローの可能性があります。
引数:
[in] hreg REGIONハンドル
[out] sumx X方向1次モーメント
[out] sumy Y方向1次モーメント
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • sumx, sumy に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_get_moment2 ( FHANDLE  hreg,
UDLONG *  sumx2,
UDLONG *  sumy2,
DLONG *  sumxy 
)

REGION特徴量:2次モーメント

REGIONの2次モーメントを取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • xdiff,ydiffが65535以下かつ-65534<=x,y<=65534の条件を満たさない場合はオーバーフローの可能性があります。
引数:
[in] hreg REGIONハンドル
[out] sumx2 X方向2次モーメント
[out] sumy2 Y方向2次モーメント
[out] sumxy XY方向2次モーメント
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • sumx2, sumy2, sumxy に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_calc_central_moment2 ( FHANDLE  hreg,
DOUBLE *  mg20,
DOUBLE *  mg02,
DOUBLE *  mg11 
)

REGION特徴量:重心2次モーメント

REGIONの2次モーメントを取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部で面積、1次モーメント、2次モーメントを必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] mg20 X方向重心2次モーメント
[out] mg02 Y方向重心2次モーメント
[out] mg11 XY方向重心2次モーメント
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • mg20, mg02, mg11 に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_calc_moment3 ( FHANDLE  hreg,
DOUBLE *  m30,
DOUBLE *  m03,
DOUBLE *  m21,
DOUBLE *  m12 
)

REGION特徴量:3次モーメント

REGIONの3次モーメントを取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部計算は DOUBLE型変数にて行いますが、型精度の都合で、 大きなブローブや座標値の大きいブローブ ( 左上座標が(0,0)の正方ブローブを想定したとき、xdiff または ydiff が 1800程度以上が目安 ) では桁落ちによる計算誤差が発生します。
引数:
[in] hreg REGIONハンドル
[out] m30 $ M_{30} $
[out] m03 $ M_{03} $
[out] m21 $ M_{21} $
[out] m12 $ M_{12} $
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • m30, m03, m21, m12 に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_calc_central_moment3 ( FHANDLE  hreg,
DOUBLE *  mg30,
DOUBLE *  mg03,
DOUBLE *  mg21,
DOUBLE *  mg12 
)

REGION特徴量:重心3次モーメント

REGIONの3次モーメントを取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部計算は DOUBLE型変数にて行いますが、型精度の都合で、 大きなブローブ( xdiff または ydiff が 1800程度以上が目安 ) では桁落ちによる計算誤差が発生します。
引数:
[in] hreg REGIONハンドル
[out] mg30 $ MG_{30} $
[out] mg03 $ MG_{03} $
[out] mg21 $ MG_{21} $
[out] mg12 $ MG_{12} $
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • m30, m03, m21, m12 に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_calc_moment ( FHANDLE  hreg,
INT  xn,
INT  yn,
DOUBLE *  m 
)

REGION特徴量:N次モーメント

REGIONのN次モーメントを取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部計算は DOUBLE型変数にて行いますが、型精度の都合で、 大きなブローブでは桁落ちによる計算誤差が発生します。 (桁数は指定次数によって変わるため、どの程度のサイズで桁落ちが発生するかは不明です)
引数:
[in] hreg REGIONハンドル
[in] xn x次数(0以上)
[in] yn y次数(0以上)
[out] m モーメント $ M $
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • xn, yn に 0 より小さい値が指定された
  • m に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_calc_central_moment ( FHANDLE  hreg,
INT  xn,
INT  yn,
DOUBLE *  mg 
)

REGION特徴量:重心N次モーメント

REGIONのN次モーメントを取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部計算は DOUBLE型変数にて行いますが、型精度の都合で、 大きなブローブでは桁落ちによる計算誤差が発生します。 (桁数は指定次数によって変わるため、どの程度のサイズで桁落ちが発生するかは不明です)
引数:
[in] hreg REGIONハンドル
[in] xn x次数(0以上)
[in] yn y次数(0以上)
[out] mg 重心モーメント $ MG $
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • xn, yn に 0 より小さい値が指定された
  • m に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_calc_hu_moments ( FHANDLE  hreg,
DOUBLE *  h 
)

REGION特徴量:Huモーメント不変量

REGIONの7つのHuモーメント不変量を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
引数:
[in] hreg REGIONハンドル
[out] h Huモーメント不変量の出力先配列。サイズは7
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • h に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_get_center ( FHANDLE  hreg,
DOUBLE *  centerx,
DOUBLE *  centery 
)

REGION特徴量:重心

REGIONの重心を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で面積、1次モーメントを必要に応じて求めます。
  • xdiff,ydiffが65535以下でない場合はオーバーフローの可能性があります。
引数:
[in] hreg REGIONハンドル
[out] centerx 重心のX座標
[out] centery 重心のY座標
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • centerx, centery に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_area(), fnFIE_region_get_moment1()

INT FVALGAPI fnFIE_region_get_equivalent_ellipse ( FHANDLE  hreg,
DOUBLE *  majoraxis,
DOUBLE *  minoraxis,
DOUBLE *  theta,
DOUBLE *  aratio 
)

REGION特徴量:等価楕円

REGIONの面積と等価な楕円の主軸半径・副軸半径・傾き・主軸副軸長比を取得します。
特徴量の意味は ここ を参照してください。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で面積、1次・2次モーメントを必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] majoraxis 主軸半径
[out] minoraxis 副軸半径
[out] theta 傾き(主軸とX軸がなす角度)単位:ラジアン ( -π/2 <= theta <= π/2 )
[out] aratio 主軸副軸長比 : 副軸長/主軸長
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • majoraxis, minoraxis, theta, aratio に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_area(), fnFIE_region_get_moment1(), fnFIE_region_get_moment2()

INT FVALGAPI fnFIE_region_calc_equivalent_disk ( FHANDLE  hreg,
DOUBLE *  diameter 
)

REGION特徴量:面積等価円

REGIONの面積と等価な円の直径を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部で面積を必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] diameter 面積等価円直径
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • diameter に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_area()

INT FVALGAPI fnFIE_region_get_rect2_size ( FHANDLE  hreg,
DOUBLE *  lsize,
DOUBLE *  wsize 
)

REGION特徴量:外接長方形

領域に外接する長方形のサイズを取得します。 特徴量の意味は ここ を参照して下さい。 領域内の点(x,y)は(x-0.5,y-0.5),(x+0.5,y-0.5),(x-0.5,y+0.5),(x+0.5,y+0.5)で囲まれる 矩形分の広がりを持っているという定義で外接長方形を求めています。( fnFIE_region_calc_feret_diameter() 参照 )

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で等価楕円を必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] lsize 外接長方形横長
[out] wsize 外接長方形縦長
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • lsize, wsize に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_equivalent_ellipse()

INT FVALGAPI fnFIE_region_get_rect2_area ( FHANDLE  hreg,
DOUBLE *  area 
)

REGION特徴量:外接長方形面積

REGIONの外接長方形の面積を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で外接長方形サイズを必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] area 外接長方形面積
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • area に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_rect2_size()

INT FVALGAPI fnFIE_region_get_rect2_lratio ( FHANDLE  hreg,
DOUBLE *  lratio 
)

REGION特徴量:外接長方形縦横比

REGIONの外接長方形の縦横比を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で外接長方形サイズを必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] lratio 外接長方形縦横比
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • lratio に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_rect2_size()

INT FVALGAPI fnFIE_region_get_rect2_sratio ( FHANDLE  hreg,
DOUBLE *  sratio 
)

REGION特徴量:外接長方形面積比

REGIONの外接長方形の面積比を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で領域面積、外接長方形面積を必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] sratio 外接長方形縦横比
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • sratio に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_rect2_area()

INT FVALGAPI fnFIE_region_calc_circularity1 ( FHANDLE  hreg,
DOUBLE *  circularity 
)

REGION特徴量:真円度#1

REGIONの真円度#1を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で領域面積、周囲長を必要に応じて求めます。
  • 4連結と8連結で周囲長の計算方法が異なるため、真円度が異なる場合があります。
  • 連結性の設定については fnFIE_region_set_connection() 参照
引数:
[in] hreg REGIONハンドル
[out] circularity 真円度#1
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • circularity に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_area(), fnFIE_region_get_perimeter(), fnFIE_region_set_connection()

INT FVALGAPI fnFIE_region_calc_equivalent_circle ( FHANDLE  hreg,
DOUBLE *  diameter 
)

REGION特徴量:周囲長等価円

REGIONの周囲長と等価な円の直径を取得します。 周囲長が0の場合に直径が0となります。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部で周囲長を必要に応じて求めます。
  • 4連結と8連結で周囲長の計算方法が異なるため、真円度が異なる場合があります。
  • 連結性の設定については fnFIE_region_set_connection() 参照
引数:
[in] hreg REGIONハンドル
[out] diameter 周囲長等価円直径
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • diameter に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_perimeter(), fnFIE_region_set_connection()

INT FVALGAPI fnFIE_region_get_distance_to_boundary ( FHANDLE  hreg,
DOUBLE *  dpmin,
DOUBLE *  dpmax,
DOUBLE *  dpave,
DOUBLE *  dpsigma 
)

REGION特徴量:外周距離

REGIONの重心と境界点列の距離最小値、距離最大値、距離平均値、距離標準偏差値を取得します。 特徴量の意味は ここ を参照して下さい。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で重心を必要に応じて求めます。
  • 4連結と8連結で境界点列の求め方が異なるため、外周距離の各値が異なる場合があります。
  • 連結性の設定については fnFIE_region_set_connection() 参照
引数:
[in] hreg REGIONハンドル
[out] dpmin 外周距離最小値
[out] dpmax 外周距離最大値
[out] dpave 外周距離平均値
[out] dpsigma 外周距離標準偏差値
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • dpmin, dpmax, dpave, dpsigma に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_center(), fnFIE_region_calc_boundary(), fnFIE_region_set_connection()

INT FVALGAPI fnFIE_region_calc_circularity2 ( FHANDLE  hreg,
DOUBLE *  circularity 
)

REGION特徴量:真円度#2

REGIONの真円度#2を求めます。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部で領域面積、外周距離特徴量を必要に応じて求めます。
  • 4連結と8連結で結果が異なる場合があります。
  • 連結性の設定については fnFIE_region_set_connection() 参照
引数:
[in] hreg REGIONハンドル
[out] circularity 真円度#2
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • circularity に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_area(), fnFIE_region_get_distance_to_boundary(), fnFIE_region_set_connection()

INT FVALGAPI fnFIE_region_calc_circularity3 ( FHANDLE  hreg,
DOUBLE *  circularity 
)

REGION特徴量:真円度#3

REGIONの真円度#3求めます。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • 内部で外周距離特徴量を必要に応じて求めます。
  • 4連結と8連結で結果が異なる場合があります。
  • 連結性の設定については fnFIE_region_set_connection() 参照
引数:
[in] hreg REGIONハンドル
[out] circularity 真円度#3
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • circularity に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_set_connection(), fnFIE_region_get_distance_to_boundary()
参考文献:
  • Computer and Robot Vision VOLUME1 ,Robert M.Haralick P.61

INT FVALGAPI fnFIE_region_calc_convexfeature ( FHANDLE  hreg,
DOUBLE *  convex_area,
DOUBLE *  convex_perim 
)

REGION特徴量:凸包面積・周囲長

凸包の面積と周囲長を求めます。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
  • ブローブのラン数が非常に多い場合( (ランの数+1)*2*sizeof(PNT_T)≧UI32_MAX となる場合) は凸包が計算できず、エラーになります。
引数:
[in] hreg REGIONハンドル
[out] convex_area 凸包面積
[out] convex_perim 凸包周囲長
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • convex_area, convex_perim に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_calc_convex2d()

INT FVALGAPI fnFIE_region_calc_convexratio ( FHANDLE  hreg,
DOUBLE *  convex_arearatio,
DOUBLE *  convex_perimratio 
)

REGION特徴量:凸包面積比・周囲長比

凸包の面積比:(領域の面積/凸包面積)、凸包の周囲長比:(領域の周囲長/凸包周囲長)を取得します。 特徴量の意味は ここ を参照してください。

注意:
  • 既に計算済みの場合は再計算されず計算済みの値を出力します。
  • 領域がない場合はエラー終了となります。
  • 内部で周囲長、面積、凸包面積・周囲長を必要に応じて求めます。
  • ブローブのラン数が非常に多い場合( (ランの数+1)*2*sizeof(PNT_T)≧UI32_MAX となる場合) は凸包が計算できず、エラーになります。
引数:
[in] hreg REGIONハンドル
[out] convex_arearatio 凸包面積比
[out] convex_perimratio 凸包周囲長比
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • convex_arearatio, convex_perimratio に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_calc_convexfeature(), fnFIE_region_get_area(), fnFIE_region_get_perimeter()

INT FVALGAPI fnFIE_region_calc_feret_diameter_maxmin ( FHANDLE  hreg,
DOUBLE *  feretmax,
DOUBLE *  fmax_theta,
DOUBLE *  feretmin,
DOUBLE *  fmin_theta 
)

REGION特徴量:最大フェレ径、最小フェレ径

領域の最大フェレ径と最小フェレ径を取得します。 特徴量の意味は ここ を参照して下さい。

角度は-π/2≦θ<π/2の範囲で得られます。 フェレ径が最大、または最小となる角度は複数ある可能性がありますが、そのうちのどの角度が得られるかは特に定義しません。 領域が1点の時は、最大フェレ径、最小フェレ径、最大フェレ径角度、最小フェレ径角度はすべて0.0となります。 領域が直線状になる場合(面積が2以上で凸包が求まらない場合)の最小フェレ径の値は0.0となります。

本関数では、点が広がりを持たない場合のフェレ径の最大・最小値を計算しています。点が広がりを持つ場合も計算可能ですが、処理を 高速に行なうことを優先して、そのような仕様としています。点の広がりについては ここ を参照してください。

注意:
  • 領域がない場合はエラー終了となります。
  • 領域の面積が2^30-1より大きい場合は正しく計算できない場合があります。
  • xdiff,ydiffが65535以下の条件を満たさない場合はオーバーフローの可能性があります。

本関数の角度範囲はFVALG ver1.7 より -π/2≦θ<π/2 に変更されました。

引数:
[in] hreg REGIONハンドル
[out] feretmax 最大フェレ径
[out] fmax_theta 最大フェレ径の角度
[out] feretmin 最小フェレ径
[out] fmin_theta 最小フェレ径の角度
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • feretmax, fmax_theta, feretmin, fmin_theta に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_calc_feret_diameter()

INT FVALGAPI fnFIE_region_calc_feret_diameter ( FHANDLE  hreg,
DOUBLE  theta,
INT  mode,
DOUBLE *  diameter 
)

REGION特徴量:指定角度フェレ径計測

指定された角度でREGIONのフェレ径を計測します。 特徴量の意味は ここ を参照して下さい。

mode は、1画素の広がりを考慮するかしないかのモード選択です。 mode が0の時、座標点は広がりを持たないものとして計測します。1点のみの領域はどの角度で計測してもフェレ径の値は0となります。 mode が1の時、領域内の1点は幅1の正方矩形領域であるという定義の下に幅計測します。 詳しい説明は ここ を参照して下さい。

注意:
  • 領域がない場合はエラー終了となります。
引数:
[in] hreg REGIONハンドル
[in] theta フェレ径を計測するときの角度(フェレ径計測軸とx軸がなす角度)単位:ラジアン
[in] mode 画素領域モード
  • 0 : 点で計測
  • 1 : 矩形の広がりを持つ点で計測
[out] diameter フェレ径
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • diameter に NULL が指定された
  • mode に 0 or 1 以外が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_region_calc_convex2d ( FHANDLE  hreg,
PNT_T **  ppHull,
UINT *  verNum 
)

REGION特徴量:凸包生成

REGIONに外接する凸包を生成します。 特徴量の意味は ここ を参照して下さい。

出力される凸包の頂点は、画像座標系で時計回りに連結します。 最初と最後の頂点は同じ点で出力するため、出力される凸包の頂点数は実の頂点数プラス1になります。 凸包保存用点配列のメモリは関数内部で確保するため、引数の *ppHull はNULLにして下さい。 (メモリ解放はユーザー側で fnOAL_free() を使用して行ってください。)

注意:
  • 領域内の全点を入力して fnFIE_convex2d_monochain() を実行した結果とは、 開始点の位置が異なる場合があります。
  • 領域全点が一直線上にある場合はF_ERR_CALC_IMPOSSIBLEとなります。
  • xdiff,ydiffが65535以下の条件を満たさない場合はオーバーフローの可能性があります。
  • ブローブのラン数が非常に多い場合( (ランの数+1)*2*sizeof(PNT_T)≧UI32_MAX となる場合) は凸包が計算できず、エラーになります。
引数:
[in] hreg REGIONハンドル
[out] ppHull 出力される凸包の頂点列( *ppHull は必ずNULLでなければならない)
[out] verNum 出力される凸包の頂点の個数
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • ppHull, verNum に NULL が指定された
  • *ppHull == NULL ではない
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_convex2d_monochain()

INT FVALGAPI fnFIE_region_calc_rect2pos ( FHANDLE  hreg,
DPNT_T points 
)

REGION特徴量:外接長方形の頂点

REGIONの外接長方形の頂点を取得します。 特徴量の意味は ここ を参照して下さい。

point には0度のときに画像座標系で左上となる点を始点に、 時計回りに頂点座標を書き込みます。

注意:
  • 内部で等価楕円、外接長方形を必要に応じて求めます。
引数:
[in] hreg REGIONハンドル
[out] points 外接長方形の4頂点の点列。サイズ4
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • points に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_get_rect2_size()

INT FVALGAPI fnFIE_region_calc_bounding_rotated_rect_pos ( FHANDLE  hreg,
DOUBLE  theta,
DPNT_T points 
)

REGION特徴量:指定角度外接長方形の頂点

REGIONの指定した傾きをもった外接長方形の頂点を取得します。 特徴量の意味は 外接長方形の頂点座標(指定角) を参照して下さい。

points には0度のときに画像座標系で左上となる点を始点に、 時計回りに頂点座標を書き込みます。

注意:
  • 領域がない場合はエラー終了となります。
引数:
[in] hreg REGIONハンドル
[in] theta 外接長方形の角度(外接長方形のある一辺とx軸がなす角度)単位:ラジアン
[out] points 外接長方形の4頂点の点列。サイズ4
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • points に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_region_calc_rect2pos()

INT FVALGAPI fnFIE_region_calc_circumcircle ( FHANDLE  hreg,
DPNT_T center,
DOUBLE *  radius 
)

REGION特徴量:最小外接円

REGIONの最小外接円を取得します(最小外接円は最小包含円とも呼ばれます)。 特徴量の意味は ここ を参照して下さい。

注意:
  • 領域内の点が1点以下の場合はエラーとなります。
  • xdiff,ydiffが65535以下の条件を満たさない場合はオーバーフローの可能性があります。
  • ブローブのラン数が非常に多い場合( (ランの数+1)*2*sizeof(PNT_T)≧UI32_MAX となる場合) は内部で利用する凸包が計算できず、エラーになります。
引数:
[in] hreg REGIONハンドル
[out] center 最小外接円の中心
[out] radius 最小外接円の半径
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが指定された
  • center, radius に NULL が指定された
F_ERR_INVALID_OBJECT 不正なハンドル
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参考文献:
  • 「コンピュータ・ジオメトリ 計算幾何学:アルゴリズムと応用」近代科学社(ISBN4-7649-0277-X) P.105-110


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