色票計算
[色彩検査]


関数

INT FVALGAPI fnFIE_colorchart_calc_image (const FHANDLE hsrc, const FHANDLE hmask, F_COLOR_CHART *chart)
 色票の計算(画像指定)
INT FVALGAPI fnFIE_colorchart_set_color (const DOUBLE *color, F_COLOR_CHART *chart)
 色票の計算(色指定)
INT FVALGAPI fnFIE_colorchart_calc_norm (const F_COLOR_CHART *right, const F_COLOR_CHART *target, DOUBLE *norm, enum f_colorcheck_norm_type norm_type, const DOUBLE *weight)
 色票間のノルム計算

関数

INT FVALGAPI fnFIE_colorchart_calc_image ( const FHANDLE  hsrc,
const FHANDLE  hmask,
F_COLOR_CHART chart 
)

色票の計算(画像指定)

入力画像の処理対象領域より、色票を計算します。 色票とは、処理対象領域の特徴量をまとめたものです。

処理対象領域
処理対象領域は、入力画像全体となります。 矩形の処理対象領域を設定したい場合は、FIE画像のチャイルド画像を利用します。 自由形状の処理対象領域を設定したい場合、マスクを設定してください。マスクが必要ない場合は、NULLを指定します。 なお、処理対象領域は2画素以上の領域が必要となります。 例えば、マスク処理により処理対象領域が2画素未満の場合は、 F_ERR_CALC_IMPOSSIBLE が返されます。
処理対象領域の定義
処理対象領域の例を、下図に示します。 処理対象領域は、同一考えられる領域を設定する必要があります。 下図の1〜3の領域が正しく設定された処理対象領域です。 4〜6の領域のように、複数の色が設定されている場合は、色票間のノルム計算や色抽出の正しい結果を得ることができません。 ただしユーザーが、処理対象領域が同一色かどうかなどの検査等の場合は、その限りではありません。
colorchart_roi.png

マスク
マスクは、画素タイプが F_IMG_BIN 、チャネル数が1のFIE画像、またはリージョンで指定します。 マスクがFIE画像の場合、入力画像とサイズが同じ必要があります。 マスクがリージョンの場合、座標の最大値、最小値は入力画像の範囲内に含まれている必要があります。 マスクが必要ない場合は、NULLを指定してください。
フラグ
すべてのチャネルの3σが1以上の場合、F_COLOR_CHART_VALID_MAHALANOBIS フラグが有効になります。 それ以外では、本色票を基準としてマハラノビスノルムを計算することができません。 なお、分散共分散行列が計算されるため、 F_COLOR_CHART_CALCULATED_VARIANCE フラグは有効になります。
使用例
fnFIE_colorchart_calc_norm() を参照してください。
引数:
[in] hsrc 入力画像(type:uc8,us16,double, ch:3)
[in] hmask マスクオブジェクト(type:bin, ch:1の画像、またはリージョン)
[out] chart 色票
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクトが渡された
F_ERR_INVALID_OBJECT 不正なオブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_CALC_IMPOSSIBLE 処理領域不足のため計算不能
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_colorchart_set_color ( const DOUBLE *  color,
F_COLOR_CHART chart 
)

色票の計算(色指定)

指定した色情報が保持されます。 本関数は、ユーザーが指定した任意の色情報を色票に設定します。 分散共分散行列は計算されません。

色情報
色情報は、要素数3の配列で指定します。 3未満の配列を指定した場合の動作は保証しません。 以下に、具体的にいくつかのパラメータについて説明します。
フラグ
分散共分散行列は計算されません。 F_CC_CALCULATED_VARIANCE 、 F_CC_VALID_MAHALANOBIS 共に無効となります。
引数:
[in] color 色情報
[out] chart 色票
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_colorchart_calc_norm ( const F_COLOR_CHART right,
const F_COLOR_CHART target,
DOUBLE *  norm,
enum f_colorcheck_norm_type  norm_type,
const DOUBLE *  weight 
)

色票間のノルム計算

色票間のノルムを計算します。 ノルムの詳細は、 f_colorcheck_norm_type を参照ください。

ノルムタイプ
マハラノビスノルムの計算は、基準色票の F_CC_VALID_MAHALANOBIS フラグが有効である必要があります。 マハラノビスノルムが計算できない場合は norm に−1が代入されます。 それ以外のノルムの計算で−1が代入される場合はありません。
重み付きユークリッドノルムの重み係数 weight は、重み付きユークリッドノルムの計算に使用されます。
それ以外のノルムでは指定しても使用されません。 通常はNULLを指定します。 ただし、NULL以外を指定してもエラーにはなりません。 要素数3の配列を指定します。 3未満の配列を指定した場合の動作は保証しません。
引数:
[in] right 基準色票
[in] target 対象色票
[out] norm ノルム
[in] norm_type ノルムタイプ
  • F_CC_EUCLIDEAN(ユークリッドノルム)
  • F_CC_WEIGHTED_EUCLIDEAN(重み付きユークリッドノルム)
  • F_CC_MAHALANOBIS(マハラノビスノルム)
  • F_CC_MANHATTAN(マンハッタンノルム)
  • F_CC_CHEBYSHEV(チェビシェフノルム)
[in] weight 重み付きユークリッドノルムの重み係数
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクトが渡された
F_ERR_INVALID_OBJECT 不正なオブジェクトが渡された
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
使用例
// エラー処理は省略しているので注意して下さい。
#include "fie.h"

VOID color_chart()
{
    F_COLOR_CHART chart1, chart2;
    FHANDLE       hsrc = NULL;
    FHANDLE       hchild = NULL;
    DOUBLE        norm, weight[3];

    // 画像ファイルを読み込む
    fnFIE_load_png( "fie_colorcheck1.png", &hsrc, F_COLOR_IMG_TYPE_UC8 );

    // 色票を作成
    hchild = fnFIE_img_child_alloc( hsrc, 165, 350, 25, 25 );
    fnFIE_colorchart_calc_image( hchild, NULL, &chart1 );
    fnFIE_free_object( hchild );
    hchild = NULL;

    hchild = fnFIE_img_child_alloc( hsrc, 320, 215, 25, 25 );
    fnFIE_colorchart_calc_image( hchild, NULL, &chart2 );
    fnFIE_free_object( hchild );
    hchild = NULL;

    weight[0] = 0.5;
    weight[1] = 1.0;
    weight[2] = 1.5;

    // 重み付きユークリッドノルムの計算
    fnFIE_colorchart_calc_norm( &chart1, &chart2, &norm, F_CC_WEIGHTED_EUCLIDEAN, weight );

    // マハラノビスノルムの計算(weightは必要ない)
    fnFIE_colorchart_calc_norm( &chart1, &chart2, &norm, F_CC_MAHALANOBIS, NULL );

    fnFIE_free_object( hsrc );

    fnFIE_free_object( hchild );

    return;
}

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

    color_chart();

    // 終了処理
    fnFIE_teardown();

    return 0;
}


Documentation copyright © 2009-2023 FAST Corporation.
Generated on Fri Jan 13 11:09:34 2023 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2