関数 | |
INT FVALGAPI | fnFIE_color_extraction (const FHANDLE hsrc, FHANDLE hdst, const F_COLOR_CHART *charts, INT num_chart, enum f_colorcheck_norm_type norm_type, const DOUBLE *weight, const DOUBLE *tolerance, INT back_clear) |
色抽出 |
INT FVALGAPI fnFIE_color_extraction | ( | const FHANDLE | hsrc, | |
FHANDLE | hdst, | |||
const F_COLOR_CHART * | charts, | |||
INT | num_chart, | |||
enum f_colorcheck_norm_type | norm_type, | |||
const DOUBLE * | weight, | |||
const DOUBLE * | tolerance, | |||
INT | back_clear | |||
) |
色抽出
指定した色票リスト(複数の色票)を基に、色抽出を実行します。 以下に、指定した1つの色票に対して色抽出結果を示します。 出力画像の上図は、出力画像の画素タイプが入力画像と同じ場合、下図は、出力画像が2値画像の場合の結果です。 なお色票リストを利用せずに、任意の閾値を指定して色抽出をしたい場合には、 fnFIE_band_threshold_ch() を使用してください。
[in] | hsrc | 入力画像(type:uc8,us16,double / ch:3) |
[out] | hdst | 出力画像(type:uc8,us16,double / ch:3, type:bin / ch:1) |
[in] | charts | 色票配列 |
[in] | num_chart | 色票数 |
[in] | norm_type | ノルムタイプ
|
[in] | weight | 重み付きユークリッドノルムの重み係数 norm_type に F_CC_WEIGHTED_EUCLIDEAN 以外を指定する場合は 本パラメータには NULL を指定してください。 |
[in] | tolerance | 許容範囲 |
[in] | back_clear | 背景処理法
|
F_ERR_NONE | 正常終了 | |
F_ERR_INVALID_IMAGE | 不正な画像オブジェクトが渡された | |
F_ERR_INVALID_OBJECT | 不正なオブジェクトが渡された | |
F_ERR_INVALID_PARAM | 不正なパラメータが渡された | |
F_ERR_NOMEMORY | メモリ不足 | |
F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
// エラー処理は省略しているので注意して下さい。 #include "fie.h" VOID color_extraction_euclidean() { F_COLOR_CHART charts[2]; FHANDLE hsrc = NULL; FHANDLE hdst = NULL; FHANDLE hchild = NULL; INT type, channel, width, height; DOUBLE tolerance; // 画像ファイルを読み込む fnFIE_load_png( "fie_colorcheck1.png", &hsrc, F_COLOR_IMG_TYPE_UC8 ); fnFIE_img_get_params( hsrc, &channel, &type, NULL, &width, &height ); hdst = fnFIE_img_root_alloc( type, channel, width, height ); // 色票リストを作成する(色票の個数が2つ) hchild = fnFIE_img_child_alloc( hsrc, 165, 350, 25, 25 ); fnFIE_colorchart_calc_image( hchild, NULL, &(charts[0]) ); fnFIE_free_object( hchild ); hchild = NULL; hchild = fnFIE_img_child_alloc( hsrc, 320, 215, 25, 25 ); fnFIE_colorchart_calc_image( hchild, NULL, &(charts[1]) ); fnFIE_free_object( hchild ); hchild = NULL; tolerance = 10.0; // 色抽出(ユークリッドノルム基準)の実行する // tolerance[0]のみ使用する fnFIE_color_extraction( hsrc, hdst, charts, 2, F_CC_EUCLIDEAN, NULL, &tolerance, TRUE ); fnFIE_free_object( hsrc ); fnFIE_free_object( hdst ); fnFIE_free_object( hchild ); return; } VOID color_extraction_variance() { F_COLOR_CHART charts[2]; FHANDLE hsrc = NULL; FHANDLE hdst = NULL; FHANDLE hchild = NULL; INT type, channel, width, height; DOUBLE tolerance[3]; // 画像ファイルを読み込む fnFIE_load_png( "fie_colorcheck1.png", &hsrc, F_COLOR_IMG_TYPE_UC8 ); fnFIE_img_get_params( hsrc, &channel, &type, NULL, &width, &height ); hdst = fnFIE_img_root_alloc( type, channel, width, height ); // 色票リストを作成する(色票の個数が2つ) hchild = fnFIE_img_child_alloc( hsrc, 165, 350, 25, 25 ); fnFIE_colorchart_calc_image( hchild, NULL, &(charts[0]) ); fnFIE_free_object( hchild ); hchild = NULL; hchild = fnFIE_img_child_alloc( hsrc, 320, 215, 25, 25 ); fnFIE_colorchart_calc_image( hchild, NULL, &(charts[1]) ); fnFIE_free_object( hchild ); hchild = NULL; tolerance[0] = 1.0; tolerance[1] = 2.0; tolerance[2] = 3.0; // 色抽出(分散基準)の実行する // すべてのtoleranceの要素を使用する fnFIE_color_extraction( hsrc, hdst, charts, 2, F_CC_VARIANCE, NULL, tolerance, TRUE ); fnFIE_free_object( hsrc ); fnFIE_free_object( hdst ); fnFIE_free_object( hchild ); return; } INT main() { // FIEライブラリの使用前に必ずコールする必要があります。 fnFIE_setup(); color_extraction_euclidean(); color_extraction_variance(); // 終了処理 fnFIE_teardown(); return 0; }