ツール
[機械学習]


説明

機械学習を行うためには

といった処理が必須となります。しかし、これには

といった、ある程度の前提知識を要します。

本ライブラリでは、機械学習を容易に利用できるように、識別対象を 限定した上で、特徴抽出などの処理を補助するツール関数群を提供します。 対象となるものは、以下のものになります。

カラー画素の画素値による識別
カラー画像の各画素の画素値を特徴量とした、色の類似性に基づくクラス識別のための 教師データの設定、識別処理を行います。 つまり、特徴ベクトルは3次元(=3チャネル分の画素値)となります。

このツールでは、特徴量(3ch分の画素値)の取得は、単純にチャネル0, チャネル1, チャネル2の値を抽出するだけです。 色空間の違い(RGB, HSVなど)や、画像種別(F_IMG_UC8, F_IMG_US16など)の違いについては 考慮していませんので、ご注意下さい。

リージョンの形状による識別
指定されたリージョンオブジェクトから、「回転」「スケール変動」に対して 不変な複数の特徴量を抽出し、形状の違いによる識別のための教師データの設定、 識別処理を行います。直接の対象はリージョンオブジェクトですが、 ブローブからリージョンの変換( fnFIE_measure_get_region() ) を用いることで、ブローブ解析結果の分類にも応用ができます。

取得する特徴量が回転、スケール変動に対して不変な特徴量であることには 注意が必要です。これは逆にいえば、「傾きによってクラスを分ける」 「大きさの違いでクラスを分ける」といったことには不適当な特徴ともいえるからです。 もしそのような識別が必要な場合は、独自に特徴量を定義することをお勧めします。 (リージョンの特徴量については 画像特徴量計算 を参照してください)

用いる特徴量は理論上は不変ではありますが、実際の画像情報から取得する場合は、 多少の誤差が生じます。そのため、ある程度の数のサンプルデータを 用意しておく必要があります。


関数

FHANDLE FVALGAPI fnFIE_ml_sample_alloc_color (VOID)
 画素のカラー分類用 教師オブジェクトの生成
INT FVALGAPI fnFIE_ml_sample_add_color_image (FHANDLE hMl_color, FHANDLE hImage, INT response)
 カラー分類用教師データの追加(画像オブジェクトでの指定)
INT FVALGAPI fnFIE_ml_sample_add_color_point (FHANDLE hMl_color, FHANDLE hImage, PNT_T point, INT response)
 カラー分類用教師データの追加(座標指定)
INT FVALGAPI fnFIE_ml_sample_add_color_area (FHANDLE hMl_color, FHANDLE hImage, FHANDLE hMask, INT response)
 カラー分類用教師データの追加(マスクによる領域指定)
INT FVALGAPI fnFIE_ml_predict_color_image (FHANDLE hMl, FHANDLE hSrc, FHANDLE hDst)
 入力画像のカラー画素値による分類
INT FVALGAPI fnFIE_ml_predict_color_point (FHANDLE hMl, FHANDLE hImage, PNT_T point, INT *response)
 入力画像の指定座標の画素の分類
INT FVALGAPI fnFIE_ml_predict_color_value (FHANDLE hMl, DOUBLE val_ch0, DOUBLE val_ch1, DOUBLE val_ch2, INT *response)
 入力された画素値の分類
FHANDLE FVALGAPI fnFIE_ml_sample_alloc_region_shape (VOID)
 リージョンの形状識別用 教師オブジェクトの生成
INT FVALGAPI fnFIE_ml_sample_add_region (FHANDLE hMl_Region, FHANDLE hRegion, INT response)
 リージョン分類用 教師データの追加
INT FVALGAPI fnFIE_ml_predict_region_shape (FHANDLE hMl, FHANDLE hRegion, INT *response)
 入力されたリージョンの識別

関数

FHANDLE FVALGAPI fnFIE_ml_sample_alloc_color ( VOID   ) 

画素のカラー分類用 教師オブジェクトの生成

カラー画像の画素値(RGBなど)を特徴ベクトルとして取り扱う教師データオブジェクトを作成し、 そのハンドルを返します。パラメータ不正や、メモリ不足などでオブジェクトを確保 できなかった場合は、NULLが返却されます。
生成されたハンドルが不要になったら fnFIE_free_object() にて解放してください。

戻り値:
正常終了 作成された教師データオブジェクトのハンドル
NULL 異常終了(メモリ不足など)

INT FVALGAPI fnFIE_ml_sample_add_color_image ( FHANDLE  hMl_color,
FHANDLE  hImage,
INT  response 
)

カラー分類用教師データの追加(画像オブジェクトでの指定)

fnFIE_ml_sample_alloc_color() で確保したカラー分類用教師データオブジェクトに教師データを追加します。
本関数では、hImage で指定した画像オブジェクトのすべての画素を、 response で指定したラベルの 教師データとしてセットします。

hImage で指定する画像は、 以下の条件を満たす必要があります。

  • F_IMG_UC8, F_IMG_US16, F_IMG_DOUBLE : 3ch

RGBQUAD型、RGBTRIPLE型の画像を用いたい場合は、 fnFIE_unpacking_rgb() でデータを アンパッキングしてから用いてください。

また、response は0以上の整数で指定してください。

メモリ確保に失敗した場合は F_ERR_NOMEMORY を返しますが、元のデータは保持されたままになります。

引数:
[in] hMl_color 教師データを追加する教師データオブジェクトのハンドル
[in] hImage 教師データとして追加する画像オブジェクト(type:uc8, us16, dbl / ch:3 )
[in] response 教師データのラベル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 入力されたラベルが不正
F_ERR_INVALID_OBJECT 入力された教師データオブジェクトが不正
F_ERR_INVALID_IMAGE 入力された画像オブジェクトが不正
F_ERR_NOMEMORY メモリ不足による領域確保エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_ml_sample_add_color_point ( FHANDLE  hMl_color,
FHANDLE  hImage,
PNT_T  point,
INT  response 
)

カラー分類用教師データの追加(座標指定)

fnFIE_ml_sample_alloc_color() で確保したカラー分類用教師データオブジェクトに教師データを追加します。
本関数では、hImage で指定画像の point で指定した座標の画素を、 response で指定したラベルの 教師データとしてセットします。

hImage で指定する画像は、 以下の条件を満たす必要があります。

  • F_IMG_UC8, F_IMG_US16, F_IMG_DOUBLE : 3ch

RGBQUAD型、RGBTRIPLE型の画像を用いたい場合は、 fnFIE_unpacking_rgb() でデータを アンパッキングしてから用いてください。

また、response は0以上の整数で指定してください。

メモリ確保に失敗した場合は F_ERR_NOMEMORY を返しますが、元のデータは保持されたままになります。

引数:
[in] hMl_color 教師データを追加する教師データオブジェクトのハンドル
[in] hImage 対象の画像オブジェクト(type:uc8, us16, dbl / ch:3)
[in] point 教師データとする画素の座標
[in] response 教師データのラベル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 入力されたラベルが不正 または 指定した座標が不正(画像範囲外など)
F_ERR_INVALID_OBJECT 入力された教師データオブジェクトが不正
F_ERR_INVALID_IMAGE 入力された画像オブジェクトが不正
F_ERR_NOMEMORY メモリ不足による領域確保エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_ml_sample_add_color_area ( FHANDLE  hMl_color,
FHANDLE  hImage,
FHANDLE  hMask,
INT  response 
)

カラー分類用教師データの追加(マスクによる領域指定)

fnFIE_ml_sample_alloc_color() で確保したカラー分類用教師データオブジェクトに教師データを追加します。
本関数では、hImage で指定画像の hMask で指定した領域の画素を、 response で指定したラベルの 教師データとしてセットします。

hImage で指定する画像は、 以下の条件を満たす必要があります。

  • F_IMG_UC8, F_IMG_US16, F_IMG_DOUBLE : 3ch

RGBQUAD型、RGBTRIPLE型の画像を用いたい場合は、 fnFIE_unpacking_rgb() でデータを アンパッキングしてから用いてください。

また、response は0以上の整数で指定してください。

マスク hMask は以下の2つのオブジェクトのうち、どちらかを使用することができます。

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト

マスク hMask は以下の条件を満たしている必要があります。

  • マスクが2値画像の場合、入力画像( hImage )とサイズが同じであること
  • マスクが2値画像の場合、チャネル数は1であること

リージョンオブジェクトをマスクとして指定した場合、リージョンに含まれる座標の画素を教師データとして追加します。
2値画像をマスクとして指定した場合、マスクの画素値が1となっている座標の画素を教師データとして追加します。

メモリ確保に失敗した場合は F_ERR_NOMEMORY を返しますが、元のデータは保持されたままになります。

引数:
[in] hMl_color 教師データを追加する教師データオブジェクトのハンドル
[in] hImage 対象の画像オブジェクト(type:uc8, us16, dbl / ch:3)
[in] hMask 教師データとする領域を指定するマスクのハンドルオブジェクト
  • リージョン
  • 2値画像( type : bin / ch : 1)
[in] response 教師データのラベル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 入力されたラベルが不正
F_ERR_INVALID_OBJECT 入力された教師データオブジェクト, または不正なマスクが渡された
F_ERR_INVALID_IMAGE 入力された画像オブジェクト, またはマスクとして渡された画像オブジェクトが不正
F_ERR_NOMEMORY メモリ不足による領域確保エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_ml_predict_color_image ( FHANDLE  hMl,
FHANDLE  hSrc,
FHANDLE  hDst 
)

入力画像のカラー画素値による分類

カラー分類用教師オブジェクトで学習した機械学習オブジェクトを使用して、 入力された画像全体の画素を分類します。

本関数では、hSrc で指定された画像のすべての画素に対して分類を行い、その結果を hDst で指定した出力画像の対応する座標に設定します。つまり、出力画像の 各画素の画素値が、入力画像の各画素の分類のラベルになります。

hSrc で指定する画像は、 以下の条件を満たす必要があります。

  • F_IMG_UC8, F_IMG_US16, F_IMG_DOUBLE : 3ch

  RGBQUAD型、RGBTRIPLE型の画像を用いたい場合は、 fnFIE_unpacking_rgb() でデータを アンパッキングしてから用いてください。

hDst で指定する画像は、 以下の条件を満たす必要があります。

  • F_IMG_I32 : 1ch

また、hSrchDst は同じサイズである必要があります。

引数:
[in] hMl    分類に使用する学習オブジェクト
[in] hSrc 分類対象の画像オブジェクト(type:uc8, us16, dbl / ch:3)
[out] hDst 出力画像(type:i32 / ch:1)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_OBJECT 入力された機械学習オブジェクトが不正
F_ERR_INVALID_IMAGE 入力された画像オブジェクトが不正
F_ERR_NOMEMORY メモリ不足で領域確保に失敗
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_ml_predict_color_point ( FHANDLE  hMl,
FHANDLE  hImage,
PNT_T  point,
INT *  response 
)

入力画像の指定座標の画素の分類

カラー分類用教師オブジェクトで学習した機械学習オブジェクトを使用して、 入力画像の指定座標の画素の分類結果を response に出力します。

hSrc で指定する画像は、 以下の条件を満たす必要があります。

  • F_IMG_UC8, F_IMG_US16, F_IMG_DOUBLE : 3ch

RGBQUAD型、RGBTRIPLE型の画像を用いたい場合は、 fnFIE_unpacking_rgb() でデータを アンパッキングしてから用いてください。

引数:
[in] hMl    分類に使用する学習オブジェクト
[in] hImage 分類対象の画像オブジェクト(type:uc8, us16, dbl / ch:3)
[in] point 分類する画素の座標
[out] response 判別結果
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 入力されたパラメータが不正(指定座標が画像の範囲外など)
F_ERR_INVALID_OBJECT 入力された機械学習オブジェクトが不正
F_ERR_INVALID_IMAGE 入力された画像オブジェクトが不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_ml_predict_color_value ( FHANDLE  hMl,
DOUBLE  val_ch0,
DOUBLE  val_ch1,
DOUBLE  val_ch2,
INT *  response 
)

入力された画素値の分類

カラー分類用教師オブジェクトで学習した機械学習オブジェクトを使用して、 入力された画素値の分類結果を response に出力します。

入力値 val_ch0 , val_ch1 , val_ch2 は、それぞれ チャネル番号0, 1, 2の値となります。たとえば、RGB色空間での画素値を 分類したい場合は、val_ch0 にRの値、val_ch1 にGの値、val_ch2 にBの 値を設定します。

引数:
[in] hMl    分類に使用する学習オブジェクト
[in] val_ch0 分類対象の画素値(チャネル0)
[in] val_ch1 分類対象の画素値(チャネル1)
[in] val_ch2 分類対象の画素値(チャネル2)
[out] response 判別結果
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 入力されたパラメータが不正
F_ERR_INVALID_OBJECT 入力された機械学習オブジェクトが不正
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

FHANDLE FVALGAPI fnFIE_ml_sample_alloc_region_shape ( VOID   ) 

リージョンの形状識別用 教師オブジェクトの生成

リージョンの特徴量を特徴ベクトルとして取り扱う教師データオブジェクトを作成し、 そのハンドルを返します。パラメータ不正や、メモリ不足などでオブジェクトを確保 できなかった場合は、NULLが返却されます。
生成されたハンドルが不要になったら fnFIE_free_object() にて解放してください。

戻り値:
正常終了 作成された教師データオブジェクトのハンドル
NULL 異常終了(メモリ不足など)

INT FVALGAPI fnFIE_ml_sample_add_region ( FHANDLE  hMl_Region,
FHANDLE  hRegion,
INT  response 
)

リージョン分類用 教師データの追加

fnFIE_ml_sample_alloc_region_shape() で確保したリージョンの形状識別用教師データオブジェクトに教師データを追加します。
hRegion で指定したリージョンオブジェクトから特徴量を抽出し、 response で指定したラベルの 学習サンプルとしてセットします。

入力するリージョンは、必ず領域が存在するものを指定して下さい。領域が存在しない場合は 計算不能エラー( F_ERR_CALC_IMPOSSIBLE )を返します。また、response は0以上の整数で指定してください。

メモリ確保に失敗した場合は F_ERR_NOMEMORY を返しますが、元のデータは保持されたままになります。

引数:
[in] hMl_Region 教師データを追加する教師データオブジェクトのハンドル
[in] hRegion 教師データとしてリージョンオブジェクトのハンドル
[in] response 教師データのラベル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 入力されたラベルが不正
F_ERR_INVALID_OBJECT 入力された教師データオブジェクト または リージョンオブジェクトが不正
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NOMEMORY メモリ不足による領域確保エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_ml_predict_region_shape ( FHANDLE  hMl,
FHANDLE  hRegion,
INT *  response 
)

入力されたリージョンの識別

リージョン識別用教師オブジェクトで学習した機械学習オブジェクトを使用して、 入力されたリージョンの識別結果を response に出力します。

入力するリージョンは、必ず領域が存在するものを指定して下さい。領域が存在しない場合は 計算不能エラー( F_ERR_CALC_IMPOSSIBLE )を返します。

引数:
[in] hMl    識別に使用する学習オブジェクト
[in] hImage 識別対象のリージョンオブジェクト
[out] response 判別結果
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 入力されたパラメータが不正
F_ERR_INVALID_OBJECT 入力された機械学習オブジェクト または リージョンオブジェクトが不正
F_ERR_CALC_IMPOSSIBLE 計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー


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