本ライブラリでは、機械学習を容易に利用できるように、識別対象を 限定した上で、特徴抽出などの処理を補助するツール関数群を提供します。 対象となるものは、以下のものになります。
このツールでは、特徴量(3ch分の画素値)の取得は、単純にチャネル0, チャネル1, チャネル2の値を抽出するだけです。 色空間の違い(RGB, HSVなど)や、画像種別(F_IMG_UC8, F_IMG_US16など)の違いについては 考慮していませんので、ご注意下さい。
取得する特徴量が回転、スケール変動に対して不変な特徴量であることには 注意が必要です。これは逆にいえば、「傾きによってクラスを分ける」 「大きさの違いでクラスを分ける」といったことには不適当な特徴ともいえるからです。 もしそのような識別が必要な場合は、独自に特徴量を定義することをお勧めします。 (リージョンの特徴量については 画像特徴量計算 を参照してください)
用いる特徴量は理論上は不変ではありますが、実際の画像情報から取得する場合は、 多少の誤差が生じます。そのため、ある程度の数のサンプルデータを 用意しておく必要があります。
関数 | |
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 で指定する画像は、 以下の条件を満たす必要があります。
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 で指定する画像は、 以下の条件を満たす必要があります。
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 で指定する画像は、 以下の条件を満たす必要があります。
RGBQUAD型、RGBTRIPLE型の画像を用いたい場合は、 fnFIE_unpacking_rgb() でデータを アンパッキングしてから用いてください。
また、response は0以上の整数で指定してください。
マスク hMask は以下の2つのオブジェクトのうち、どちらかを使用することができます。
マスク hMask は以下の条件を満たしている必要があります。
リージョンオブジェクトをマスクとして指定した場合、リージョンに含まれる座標の画素を教師データとして追加します。
2値画像をマスクとして指定した場合、マスクの画素値が1となっている座標の画素を教師データとして追加します。
メモリ確保に失敗した場合は F_ERR_NOMEMORY を返しますが、元のデータは保持されたままになります。
[in] | hMl_color | 教師データを追加する教師データオブジェクトのハンドル |
[in] | hImage | 対象の画像オブジェクト(type:uc8, us16, dbl / ch:3) |
[in] | hMask | 教師データとする領域を指定するマスクのハンドルオブジェクト
|
[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 で指定する画像は、 以下の条件を満たす必要があります。
RGBQUAD型、RGBTRIPLE型の画像を用いたい場合は、 fnFIE_unpacking_rgb() でデータを アンパッキングしてから用いてください。
hDst で指定する画像は、 以下の条件を満たす必要があります。
また、hSrc と hDst は同じサイズである必要があります。
[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 で指定する画像は、 以下の条件を満たす必要があります。
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 | ライセンスエラー、または未初期化エラー |