算術演算
[画像フィルタ]


関数

INT FVALGAPI fnFIE_img_abs (FHANDLE hsrc, FHANDLE hdst)
 画像絶対値演算
INT FVALGAPI fnFIE_img_add (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hdst)
 画像間加算
INT FVALGAPI fnFIE_img_add_const (FHANDLE hsrc1, DOUBLE value, FHANDLE hdst)
 画像と定数の加算
INT FVALGAPI fnFIE_img_atan2 (FHANDLE hsrc_y, FHANDLE hsrc_x, FHANDLE hdst)
 画像間逆正接演算
INT FVALGAPI fnFIE_img_blend (FHANDLE hsrc1, DOUBLE val1, FHANDLE hsrc2, DOUBLE val2, DOUBLE val3, FHANDLE hdst)
 重み付き画像加算
INT FVALGAPI fnFIE_img_diff (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hdst)
 画像間差分計算
INT FVALGAPI fnFIE_img_diff_const (FHANDLE hsrc, DOUBLE value, FHANDLE hdst)
 画像と定数の差分
INT FVALGAPI fnFIE_img_div (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hdst)
 画像間除算
INT FVALGAPI fnFIE_img_div_const1 (FHANDLE hsrc, DOUBLE value, FHANDLE hdst)
 画像と定数の除算
INT FVALGAPI fnFIE_img_div_const2 (DOUBLE value, FHANDLE hsrc, FHANDLE hdst)
 定数と画像の除算
INT FVALGAPI fnFIE_img_invert (FHANDLE hsrc, FHANDLE hdst)
 画像濃度値反転演算
INT FVALGAPI fnFIE_img_exp (FHANDLE hsrc, FHANDLE hdst)
 画像指数関数値演算
INT FVALGAPI fnFIE_img_log (FHANDLE hsrc, FHANDLE hdst)
 画像対数関数値演算
INT FVALGAPI fnFIE_img_mask (FHANDLE hsrc, FHANDLE hmask, FHANDLE hdst)
 画像マスク転送
INT FVALGAPI fnFIE_img_mask2 (FHANDLE hsrc, FHANDLE hmask, FHANDLE hdst)
 画像マスク転送2
INT FVALGAPI fnFIE_img_max (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hdst)
 画像間最大値
INT FVALGAPI fnFIE_img_max_const (FHANDLE hsrc, DOUBLE value, FHANDLE hdst)
 画像と定数の最大値
INT FVALGAPI fnFIE_img_min (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hdst)
 画像間最小値
INT FVALGAPI fnFIE_img_min_const (FHANDLE hsrc, DOUBLE value, FHANDLE hdst)
 画像と定数の最小値
INT FVALGAPI fnFIE_img_mixope1 (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hsrc3, FHANDLE hdst)
 複合画像間計算[ (A*B)+C ]
INT FVALGAPI fnFIE_img_mixope2 (FHANDLE hsrc, DOUBLE val1, DOUBLE val2, FHANDLE hdst)
 複合画像間計算[ (A*const1)+const2 ]
INT FVALGAPI fnFIE_img_mixope3 (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hsrc3, DOUBLE val1, DOUBLE val2, FHANDLE hdst)
 複合画像間計算[ (A-B)*C/const1+const2 ]
INT FVALGAPI fnFIE_img_mixope4 (FHANDLE hsrc, DOUBLE val1, DOUBLE val2, FHANDLE hdst)
 複合画像間計算[ (A-const1)*const2 ]
INT FVALGAPI fnFIE_img_mul (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hdst)
 画像間乗算
INT FVALGAPI fnFIE_img_mul_const (FHANDLE hsrc, DOUBLE value, FHANDLE hdst)
 画像と定数の乗算
INT FVALGAPI fnFIE_img_mul_matrix (const FHANDLE hsrc, FHANDLE hdst, const FMATRIX *mat)
 画像と行列の乗算
INT FVALGAPI fnFIE_img_sub (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hdst)
 画像間減算
INT FVALGAPI fnFIE_img_sub_const1 (FHANDLE hsrc, DOUBLE value, FHANDLE hdst)
 画像と定数の減算
INT FVALGAPI fnFIE_img_sub_const2 (DOUBLE value, FHANDLE hsrc, FHANDLE hdst)
 定数と画像の減算
INT FVALGAPI fnFIE_img_mask_add (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像間加算
INT FVALGAPI fnFIE_img_mask_add_const (FHANDLE hsrc, DOUBLE val, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像と定数の加算
INT FVALGAPI fnFIE_img_mask_diff (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像間差分
INT FVALGAPI fnFIE_img_mask_diff_const (FHANDLE hsrc, DOUBLE val, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像と定数の差分
INT FVALGAPI fnFIE_img_mask_div (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像間除算
INT FVALGAPI fnFIE_img_mask_div_const1 (FHANDLE hsrc, DOUBLE val, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像と定数の除算
INT FVALGAPI fnFIE_img_mask_div_const2 (DOUBLE val, FHANDLE hsrc, FHANDLE hmask, FHANDLE hdst)
 定数とマスク付き画像の除算
INT FVALGAPI fnFIE_img_mask_max (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像間最大値
INT FVALGAPI fnFIE_img_mask_max_const (FHANDLE hsrc, DOUBLE val, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像と定数の最大値
INT FVALGAPI fnFIE_img_mask_min (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像間最小値
INT FVALGAPI fnFIE_img_mask_min_const (FHANDLE hsrc, DOUBLE val, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像と定数の最小値
INT FVALGAPI fnFIE_img_mask_mixop1 (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hsrc3, FHANDLE hmask, FHANDLE hdst)
 マスク付き複合画像間計算[ (A*B)+C ]
INT FVALGAPI fnFIE_img_mask_mixop2 (FHANDLE hsrc, DOUBLE val1, DOUBLE val2, FHANDLE hmask, FHANDLE hdst)
 マスク付き複合画像間計算[ (A*const1)+const2 ]
INT FVALGAPI fnFIE_img_mask_mixop3 (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hsrc3, DOUBLE val1, DOUBLE val2, FHANDLE hmask, FHANDLE hdst)
 マスク付き複合画像間計算[ (A-B)*C/const1+const2 ]
INT FVALGAPI fnFIE_img_mask_mul (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像間乗算
INT FVALGAPI fnFIE_img_mask_mul_const (FHANDLE hsrc, DOUBLE val, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像と定数の乗算
INT FVALGAPI fnFIE_img_mask_sub (FHANDLE hsrc1, FHANDLE hsrc2, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像間減算
INT FVALGAPI fnFIE_img_mask_sub_const1 (FHANDLE hsrc, DOUBLE val, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像と定数の減算
INT FVALGAPI fnFIE_img_mask_sub_const2 (DOUBLE val, FHANDLE hsrc, FHANDLE hmask, FHANDLE hdst)
 マスク付き画像と定数の減算

関数

INT FVALGAPI fnFIE_img_abs ( FHANDLE  hsrc,
FHANDLE  hdst 
)

画像絶対値演算

各画素の濃度値の絶対値を求め、出力画像に出力します。

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
画像形式が bin, uc8, us16, rgbq の場合は、元の濃度値が必ず正であるため、 実行結果は fnFIE_img_copy() で単純コピーした場合と同じになります。

引数:
[in] hsrc 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
circuit.png

入力画像

fie_arithmetic_op_abs.png

処理結果画像(入力画像 - 128)

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_add ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hdst 
)

画像間加算

hsrc1 画像と hsrc2 画像の加算を行い hdst 画像に結果を格納します。

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像のチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • F_IMG_RGBTRIPLE または F_IMG_RGBQUAD 型を処理する場合、入力画像と出力画像の画像型全てが等しい事
F_IMG_FLOAT, F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。 画像の型が F_IMG_RGBTRIPLE の場合、R,G,B それぞれで演算を行います。

入出力画像が全て F_IMG_BIN 型の画像の場合、結果画像は fnFIE_img_or() を実行した結果と同じです。

引数:
[in] hsrc1 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, float, double, rgbq, rgbtri )
[in] hsrc2 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, float, double, rgbq, rgbtri )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
circuit.png

入力画像1

fie_arithmetic_op_mask2.png

入力画像2

fie_arithmetic_op_add.png

処理結果画像

当関数はin-place処理可能です。
使用例
// エラー処理は省略しているので注意して下さい
#include "fie.h"

INT main()
{
    FHANDLE hsrc1 = NULL;   // 入力画像1
    FHANDLE hsrc2 = NULL;   // 入力画像2
    FHANDLE hdst = NULL;    // 出力画像
    INT width, height;

    // FIEライブラリの初期化処理
    fnFIE_setup();

    // 入力画像をファイルから読み込む
    fnFIE_load_bmp("src_img1.bmp", &hsrc1, F_COLOR_IMG_TYPE_UC8);
    fnFIE_load_bmp("src_img2.bmp", &hsrc2, F_COLOR_IMG_TYPE_UC8);

    // 出力画像を確保する
    // 出力画像の幅と高さは、入力画像と等しくなければならない
    fnFIE_img_get_params(hsrc1, NULL, NULL, NULL, &width, &height);
    hdst = fnFIE_img_root_alloc(F_IMG_UC8, 1, width, height);

    // 画像間加算の実行
    fnFIE_img_add(hsrc1, hsrc2, hdst);

    // 出力画像をファイルに保存する
    fnFIE_save_bmp("dst_img.bmp", hdst);

    // 画像オブジェクトを解放する
    fnFIE_free_object(hsrc1);
    fnFIE_free_object(hsrc2);
    fnFIE_free_object(hdst);

    // FIEライブラリの終了処理
    fnFIE_teardown();

    return 0;
}

INT FVALGAPI fnFIE_img_add_const ( FHANDLE  hsrc1,
DOUBLE  value,
FHANDLE  hdst 
)

画像と定数の加算

hsrc1 画像と定数 value の加算を行い hdst 画像に結果を格納します。

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
また、引数 value は各型にキャストした後に評価されます。 value が型の値域を超えている場合の動作は不定です。 (例えば、画像の型がUC8ならば、0〜255が value の有効な値域になる。)

F_IMG_FLOAT, F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。

画像形式が F_IMG_RGBQUAD の場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。 画像の型が F_IMG_RGBTRIPLE の場合、R,G,B それぞれで演算を行います。

引数:
[in] hsrc1 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] value 定数
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。
使用例
// エラー処理は省略しているので注意して下さい
#include "fie.h"

INT main()
{
    FHANDLE hsrc = NULL;    // 入力画像
    FHANDLE hdst = NULL;    // 出力画像
    INT width, height;
    DOUBLE add_value = 100.0;   // 加算する値

    // FIEライブラリの初期化処理
    fnFIE_setup();

    // 入力画像をファイルから読み込む
    fnFIE_load_bmp("src_img.bmp", &hsrc, F_COLOR_IMG_TYPE_UC8);

    // 出力画像を確保する
    // 出力画像の幅と高さは、入力画像と等しくなければならない
    fnFIE_img_get_params(hsrc, NULL, NULL, NULL, &width, &height);
    hdst = fnFIE_img_root_alloc(F_IMG_UC8, 1, width, height);

    // 画像と定数の加算の実行
    fnFIE_img_add_const(hsrc, add_value, hdst);

    // 出力画像をファイルに保存する
    fnFIE_save_bmp("dst_img.bmp", hdst);

    // 画像オブジェクトを解放する
    fnFIE_free_object(hsrc);
    fnFIE_free_object(hdst);

    // FIEライブラリの終了処理
    fnFIE_teardown();

    return 0;
}

INT FVALGAPI fnFIE_img_atan2 ( FHANDLE  hsrc_y,
FHANDLE  hsrc_x,
FHANDLE  hdst 
)

画像間逆正接演算

各画素の濃度値に対して、次の計算を行います。 hdst = atan2( hsrc_y , hsrc_x )

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像同士の画像形式が一致していること
  • 入力画像と出力画像のチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
出力画像形式がF_IMG_S16型画像の場合、出力値は-16384〜16384の範囲になります。 これは-π〜+πを-16384〜+16384にスケーリングした値です。

引数:
[in] hsrc_y 入力画像ハンドル( type: s16, double )
[in] hsrc_x 入力画像ハンドル( type: s16, double )
[out] hdst 出力画像ハンドル( type: s16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_sobel_dir

INT FVALGAPI fnFIE_img_blend ( FHANDLE  hsrc1,
DOUBLE  val1,
FHANDLE  hsrc2,
DOUBLE  val2,
DOUBLE  val3,
FHANDLE  hdst 
)

重み付き画像加算

各画素の濃度値に対して、次の計算を行います。

hdst = hsrc1 * val1 + hsrc2 * val2 + val3

F_IMG_DOUBLE以外の型では、オーバーフローが発生しないよう、演算結果にサチュレーション処理を行った後に出力します。

全ての入力画像と出力画像は、幅、高さ、型、及びチャネル数が等しくなければなりません。

引数:
[in] hsrc1 入力画像1( type: uc8, s16, us16, double )
[in] val1 定数1
[in] hsrc2 入力画像2( type: uc8, s16, us16, double )
[in] val2 定数2
[in] val3 定数3
[out] hdst 出力画像( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクト
F_ERR_NO_LICENCE ライセンスエラーまたは未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_diff ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hdst 
)

画像間差分計算

hsrc1 画像と hsrc2 画像の差を求めます。 式は次のようになります。

	hdst = abs( hsrc1 - hsrc2 )
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_S16 型では、演算結果がオーバーフローする場合があるため、 サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。

F_IMG_BIN 型の画像の場合、結果画像は fnFIE_img_xor() を実行した結果と同じです。

引数:
[in] hsrc1 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
[in] hsrc2 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
fie_arithmetic_op_mask2.png

入力画像1

fie_arithmetic_op_sub1.png

入力画像2

fie_arithmetic_op_diff2.png

処理結果画像

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_diff_const ( FHANDLE  hsrc,
DOUBLE  value,
FHANDLE  hdst 
)

画像と定数の差分

hsrc 画像と定数 value との差を求めます 式は次のようになります。

	hdst = abs( hsrc - value )
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
また、引数 value は各型にキャストした後に評価されます。 value が型の値域を超えている場合の動作は不定です。 (例えば、画像の型がUC8ならば、0〜255が value の有効な値域になる。)

F_IMG_S16 型では、演算結果がオーバーフローする場合があるため、 サチュレーション処理を行った後に出力します。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] value 定数
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_div ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hdst 
)

画像間除算

hsrc1 画像と hsrc2 画像の除算を行い hdst 画像に結果を格納します。 分母( hsrc2 )の0チェックは行わないため、0が含まれていると0除算例外が 発生する場合があります(処理系依存)。 式は次のようになります。

	hdst = hsrc1 / hsrc2
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_S16 型では、演算結果がオーバーフローする場合があるため、 サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。

引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_div_const1 ( FHANDLE  hsrc,
DOUBLE  value,
FHANDLE  hdst 
)

画像と定数の除算

hsrc 画像と定数 value の除算を行い hdst 画像に結果を格納します。 分母( value )の0チェックは行わないため、0が含まれていると0除算例外が 発生する場合があります(処理系依存)。 式は次のようになります。

	hdst = hsrc / value
	

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_FLOAT, F_IMG_DOUBLE 以外の画像型では、演算はDOUBLE型に変換した後に行われます。 演算結果はオーバーフローしないようサチュレーション処理を行った後に出力します。

画像型が F_IMG_FLOAT の場合は、演算は定数 value をFLOAT型に変換した後に行われます。

画像形式が F_IMG_RGBQUAD の場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。 画像の型が F_IMG_RGBTRIPLE の場合、R,G,B それぞれで演算を行います。

引数:
[in] hsrc 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] value 定数
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_div_const2()
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_div_const2 ( DOUBLE  value,
FHANDLE  hsrc,
FHANDLE  hdst 
)

定数と画像の除算

定数 valuehsrc 画像の除算を行い hdst 画像に結果を格納します。 分母( hsrc )の0チェックは行わないため、0が含まれていると0除算例外が 発生する場合があります(処理系依存)。 式は次のようになります。

	hdst = value / hsrc
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_DOUBLE 以外の画像型では、演算はDOUBLE型に変換した後に行われます。 演算結果はオーバーフローしないようサチュレーション処理を行った後に出力します。

引数:
[in] value 定数
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_div_const1()
処理結果例:
circuit.png

入力画像

fie_arithmetic_op_div.png

処理結果画像(5000 / 入力画像)

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_invert ( FHANDLE  hsrc,
FHANDLE  hdst 
)

画像濃度値反転演算

画素の濃度値を反転する処理を行います。

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
入力される画像の型によって、下記のように動作が変わります。
  • F_IMG_BIN の場合
    入力の濃度値が0のとき出力の濃度値は 1 、入力の濃度値が1のとき出力の濃度値は 0 になります。
  • F_IMG_UC8, F_IMG_US16 の場合
    入力の濃度値が v のとき出力の濃度値は (型の最大値) - v になります。
  • F_IMG_S16 の場合
    入力の濃度値が v のとき出力の濃度値は -v になります。
    入力値が-32768の時は飽和処理され、+32767が出力されます。
  • F_IMG_DOUBLE の場合
    入力の濃度値が v のとき出力の濃度値は -v になります。
  • F_IMG_RGBQUAD の場合
    各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで計算され、 入力の濃度値を v とすると、出力は 255 - v になります。 また、rgbReservedは0になります。
引数:
[in] hsrc 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq );
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq );
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
circuit.png

入力画像

fie_arithmetic_op_invert.png

処理結果画像

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_exp ( FHANDLE  hsrc,
FHANDLE  hdst 
)

画像指数関数値演算

各画素の濃度値に対して、次の計算を行います。

hdst = exp( hsrc )

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc 入力画像ハンドル( type: double )
[out] hdst 出力画像ハンドル( type: double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_log ( FHANDLE  hsrc,
FHANDLE  hdst 
)

画像対数関数値演算

各画素の濃度値がゼロより大きい場合、次の計算を行い、そうでなければゼロを出力します。

hdst = log( hsrc )

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc 入力画像ハンドル( type: double )
[out] hdst 出力画像ハンドル( type: double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask ( FHANDLE  hsrc,
FHANDLE  hmask,
FHANDLE  hdst 
)

画像マスク転送

hsrc 画像を hmask にてマスクして hdst 画像へコピーします。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、リージョンに含まれる座標の画素は hsrc 画像から hdst 画像へコピーされ、 リージョンに含まれない座標の画素は濃度値0が hdst 画像へ代入されます。

マスクが2値画像の場合、マスク画像の画素値が1の画素は hsrc 画像から hdst 画像へコピーされ、 マスク画像の画素値が0の画素は濃度値0が hdst 画像へ代入されます。

マスクが2値画像の場合、マスク画像は下記の条件を全て満たしていなければなりません。

  • 画像型が F_IMG_BIN である事
  • チャネル数が1である事
  • マスク画像の幅と高さが入出力画像と等しい事
入力画像と出力画像は下記の条件を全て満たしていなければなりません。
  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像ハンドル( type: bin, channels:1 )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NOMEMORY メモリ不足エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
circuit.png

入力画像1

fie_arithmetic_op_mask.png

入力画像2

fie_arithmetic_op_and.png

処理結果画像

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask2 ( FHANDLE  hsrc,
FHANDLE  hmask,
FHANDLE  hdst 
)

画像マスク転送2

hsrc 画像を hmask にてマスクして hdst 画像へコピーします。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、リージョンに含まれる座標の画素は hsrc 画像から hdst 画像へコピーされ、 リージョンに含まれない座標の画素は hdst 画像の元の値を保持します。

マスクが2値画像の場合、マスク画像の画素値が1の画素は hsrc 画像から hdst 画像へコピーされ、 マスク画像の画素値が0の画素は hdst 画像の元の値を保持します。

マスクが2値画像の場合、マスク画像は下記の条件を全て満たしていなければなりません。

  • 画像型が F_IMG_BIN である事
  • チャネル数が1である事
  • マスク画像の幅と高さが入出力画像と等しい事
入力画像と出力画像は下記の条件を全て満たしていなければなりません。
  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像ハンドル( type: bin, channels:1 )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NOMEMORY メモリ不足エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_max ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hdst 
)

画像間最大値

hsrc1 画像と hsrc2 画像の各画素で最大値を算出し hdst 画像に結果を格納します。 式は次のようになります。

	dst = src1 > src2 ? src1 : src2;
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_BIN 型の画像の場合、結果画像は fnFIE_img_or() を実行した結果と同じです。

引数:
[in] hsrc1 入力画像ハンドル( type: bin, uc8, s16, us16, double )
[in] hsrc2 入力画像ハンドル( type: bin, uc8, s16, us16, double )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
circuit.png

入力画像1

fie_arithmetic_op_mask.png

入力画像2

fie_arithmetic_op_or.png

処理結果画像

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_max_const ( FHANDLE  hsrc,
DOUBLE  value,
FHANDLE  hdst 
)

画像と定数の最大値

定数 valuehsrc 画像の各画素で最大値を算出し hdst 画像に結果を格納します。 式は次のようになります。

	dst = src1 > value ? src1 : value;
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] value 定数
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_min ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hdst 
)

画像間最小値

hsrc1 画像と hsrc2 画像の各画素で最小値を算出し hdst 画像に結果を格納します。 式は次のようになります。

	dst = src1 < src2 ? src1 : src2;
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_BIN 型の画像の場合、結果画像は fnFIE_img_and() を実行した結果と同じです。

引数:
[in] hsrc1 入力画像ハンドル( type: bin, uc8, s16, us16, double )
[in] hsrc2 入力画像ハンドル( type: bin, uc8, s16, us16, double )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
circuit.png

入力画像1

fie_arithmetic_op_mask.png

入力画像2

fie_arithmetic_op_and.png

処理結果画像

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_min_const ( FHANDLE  hsrc,
DOUBLE  value,
FHANDLE  hdst 
)

画像と定数の最小値

hsrc 画像の各画素と定数 value で最小値を算出し hdst 画像に結果を格納します。 式は次のようになります。

	dst = src < value ? src : value;
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] value 定数
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mixope1 ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hsrc3,
FHANDLE  hdst 
)

複合画像間計算[ (A*B)+C ]

各画素の濃度値に対して、次の計算を行います。

hdst = (hsrc1 * hsrc2) + hsrc3

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 全ての入力画像と出力画像の型、及びチャネル数が等しい事
  • 全ての入力画像の幅と高さが出力画像と等しい事
F_IMG_DOUBLE以外の型ではオーバーフローが発生しないよう、 演算結果にサチュレーション処理を行った後に出力します。

引数:
[in] hsrc1 入力画像1ハンドル( type: uc8, s16, us16, double )
[in] hsrc2 入力画像2ハンドル( type: uc8, s16, us16, double )
[in] hsrc3 入力画像3ハンドル( type: uc8, s16, us16, double )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mixope2 ( FHANDLE  hsrc,
DOUBLE  val1,
DOUBLE  val2,
FHANDLE  hdst 
)

複合画像間計算[ (A*const1)+const2 ]

各画素の濃度値に対して、次の計算を行います。

hdst = (hsrc * val1) + val2

F_IMG_DOUBLE以外の型ではオーバーフローが発生しないよう、 演算結果にサチュレーション処理を行った後に出力します。

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val1 定数1
[in] val2 定数2
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mixope3 ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hsrc3,
DOUBLE  val1,
DOUBLE  val2,
FHANDLE  hdst 
)

複合画像間計算[ (A-B)*C/const1+const2 ]

各画素の濃度値に対して、次の計算を行います。

hdst = (hsrc1 - hsrc2) * hsrc3 / val1 + val2

分母( val1 )の0チェックは行わないため、0が指定されると0除算例外が 発生する場合があります(処理系依存)。

F_IMG_DOUBLE以外の型ではオーバーフローが発生しないよう、 演算結果にサチュレーション処理を行った後に出力します。

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 全ての入力画像と出力画像の型、及びチャネル数が等しい事
  • 全ての入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc1 入力画像1ハンドル( type: uc8, s16, us16, double )
[in] hsrc2 入力画像2ハンドル( type: uc8, s16, us16, double )
[in] hsrc3 入力画像3ハンドル( type: uc8, s16, us16, double )
[in] val1 定数1
[in] val2 定数2
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mixope4 ( FHANDLE  hsrc,
DOUBLE  val1,
DOUBLE  val2,
FHANDLE  hdst 
)

複合画像間計算[ (A-const1)*const2 ]

各画素の濃度値に対して、次の計算を行います。

hdst = (hsrc - val1) * val2

右辺の濃度値計算は浮動小数にて演算が行われます。 F_IMG_DOUBLE,F_IMG_FLOAT以外の型ではオーバーフローが発生しないよう、 演算結果にサチュレーション処理を行った後に出力します。

本関数では、入力画像 hsrc と出力画像 hdst の型が異なる場合でも処理が可能ですが、 いくつかの組み合わせに制限があります。処理可能な組み合わせ及び制限については下表を参照してください。

  コピー先形式
BINUC8S16US16I32UI32I64DOUBLEFLOATRGBQUADRGBTRIPLE
コピー元
形式
BIN○※1○※1
UC8○※1○※1
S16○※1○※1
US16○※1○※1
I32○※1○※1
UI32○※1○※1
I64○※1○※1
DOUBLE○※1○※1
FLOAT○※1○※1
RGBQUAD×××××××××○※4○※3
RGBTRIPLE×××××××××○※2
○:可 ×:不可

  • ※1 rgbRed, rgbGreen, rgbBlue 共に同じ濃度値になります。 rgbReserved は 0 になります。
  • ※2 rgbReserved は 0 になります。
  • ※3 rgbReserved の値は出力されず、RGBの色成分に対する計算結果のみが出力されます。
  • ※4 rgbRed, rgbGreen, rgbBlue に対しての処理結果のみが出力され、 rgbReserved は 0 になります。
入力画像と出力画像は下記の条件を全て満たしていなければなりません。
  • 入力画像と出力画像のチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
引数:
[in] hsrc 入力画像ハンドル ( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] val1 定数1
[in] val2 定数2
[out] hdst 出力画像ハンドル ( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_PARAM 処理できない組み合わせの画像ハンドルが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mul ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hdst 
)

画像間乗算

hsrc1 画像と hsrc2 画像の乗算を行い hdst 画像に結果を格納します。

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。

F_IMG_BIN 型の画像の場合、結果画像は fnFIE_img_and() を実行した結果と同じです。

引数:
[in] hsrc1 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
[in] hsrc2 入力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
circuit.png

入力画像

fie_arithmetic_op_mul.png

処理結果画像(入力画像 x 2)

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mul_const ( FHANDLE  hsrc,
DOUBLE  value,
FHANDLE  hdst 
)

画像と定数の乗算

hsrc 画像と定数 value の乗算を行い hdst 画像に結果を格納します。

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_FLOAT, F_IMG_DOUBLE 以外の画像型では、演算はDOUBLE型に変換した後に行われます。 また、演算結果はオーバーフローしないようサチュレーション処理を行った後に出力します。

画像型が F_IMG_FLOAT の場合は、演算は定数 value をFLOAT型に変換した後に行われます。

画像形式が F_IMG_RGBQUAD の場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。 画像の型が F_IMG_RGBTRIPLE の場合、R,G,B それぞれで演算を行います。

引数:
[in] hsrc 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] value 定数
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mul_matrix ( const FHANDLE  hsrc,
FHANDLE  hdst,
const FMATRIX mat 
)

画像と行列の乗算

画像の各画素をチャネル数分の次元をもつ列ベクトルとみなし、
入力画像の注目画素$(x, y)$の列ベクトル$V_{s}$を変換行列$M$で変換し、結果を出力画像の対応する画素$(x, y)$の列ベクトル$V_{d}$に格納します。

\[ V_{d}\ =\ M \cdot V_{s} \]

\[ V_{s}= \left(\begin{array}{c} S_{0}\\ S_{1}\\ \vdots \\ S_{n} \end{array}\right) ,\ V_{d}= \left(\begin{array}{c} D_{0}\\ D_{1}\\ \vdots \\ D_{m} \end{array}\right) \]

ここで、$n$は入力画像のチャネル数、$m$は出力画像のチャネル数、$M$はユーザーの任意の変換行列とします。
行列の積は、入力画像のチャネル数$n$と変換行列の列数、出力画像のチャネル数$m$と変換行列の行数が、同じであれば過不足なく計算できますが、
入出力画像のチャネル数と変換行列のサイズを任意とするために以下の処理を行います。

  • 変換行列の列数 > 入力画像チャネル数 : 列数に対して不足している次元(チャネル)を補い、1として計算します
  • 変換行列の列数 < 入力画像チャネル数 : 変換行列の列数分だけ処理を行い、超えている入力画像チャネルの要素は無視されます
  • 変換行列の行数 > 出力画像チャネル数 : 出力画像チャネル数分計算を行いそれ以上は計算されません
  • 変換行列の行数 < 出力画像チャネル数 : 超えているチャネルの値を0で埋めます
入出力画像のチャネル数を3chとし、4行4列の変換行列で処理を行った場合

\[ \left(\begin{array}{c} D_{0}\\ D_{1}\\ D_{2}\\ \blacktriangle \end{array}\right) = \left(\begin{array}{cccc} M_{00} & M_{01} & M_{02} & M_{03}\\ M_{10} & M_{11} & M_{12} & M_{13}\\ M_{20} & M_{21} & M_{22} & M_{23}\\ M_{30} & M_{31} & M_{32} & M_{33} \end{array}\right) \left(\begin{array}{c} S_{0}\\ S_{1}\\ S_{2}\\ \blacksquare \end{array}\right) \]

となり、$\blacksquare $の次元が不足し行列の計算が出来ません。上記の条件を適用し、入力画像の次元を補い、1として計算します。
また、出力画像のチャネルは3であるため、$\blacktriangle$に当たる変換行列の行は計算されず無視され、最終的に下記の様に計算されます。

\[ \left(\begin{array}{c} D_{0}\\ D_{1}\\ D_{2}\\ \end{array}\right) = \left(\begin{array}{cccc} M_{00} & M_{01} & M_{02} & M_{03}\\ M_{10} & M_{11} & M_{12} & M_{13}\\ M_{20} & M_{21} & M_{22} & M_{23}\\ \end{array}\right) \left(\begin{array}{c} S_{0}\\ S_{1}\\ S_{2}\\ 1 \end{array}\right) \]

入力画像と出力画像は下記の条件を満たしている必要があります。

  • 入力画像と出力画像の幅と高さは同じである
  • 入力画像と出力画像の画像型は同じである
F_IMG_DOUBLE 以外の画像型では、演算結果に対して小数部を四捨五入し、飽和処理を行った後に出力します。

対応している入出力画像タイプは下記の通りです。

  • F_IMG_UC8
  • F_IMG_S16
  • F_IMG_US16
  • F_IMG_DOUBLE
引数:
[in] hsrc 入力画像のハンドル( type : uc8, s16, us16, double )
[out] hdst 出力画像のハンドル( type : uc8, s16, us16, double )
[in] mat 変換行列
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足
F_ERR_INVALID_IMAGE 不正な画像オブジェクトが渡された
もしくは、入出力画像の型が違う、など
F_ERR_INVALID_PARAM 不正なパラメータが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_img_sub ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hdst 
)

画像間減算

hsrc1 画像から hsrc2 画像を引きます。 式は次のようになります。

	hdst = hsrc1 - hsrc2
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
F_IMG_FLOAT, F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。

画像形式が F_IMG_RGBQUAD の場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。 画像形式が F_IMG_RGBTRIPLE の場合、R,G,B それぞれで演算を行います。

引数:
[in] hsrc1 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] value 定数
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
fie_arithmetic_op_mask2.png

入力画像1

fie_arithmetic_op_sub1.png

入力画像2

fie_arithmetic_op_sub2.png

処理結果画像

当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_sub_const1 ( FHANDLE  hsrc,
DOUBLE  value,
FHANDLE  hdst 
)

画像と定数の減算

hsrc 画像から定数 value を引きます。 式は次のようになります。

	hdst = hsrc - value
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
また、引数 value は各型にキャストした後に評価されます。 value が型の値域を超えている場合の動作は不定です。 (例えば、画像の型がUC8ならば、0〜255が value の有効な値域になる。)

F_IMG_FLOAT, F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。

画像形式が F_IMG_RGBQUAD の場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。 画像形式が F_IMG_RGBTRIPLE の場合、R,G,B それぞれで演算を行います。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] value 定数
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_sub_const2 ( DOUBLE  value,
FHANDLE  hsrc,
FHANDLE  hdst 
)

定数と画像の減算

定数 value から hsrc 画像を引きます。 式は次のようになります。

	hdst = value - hsrc
	

入力画像と出力画像は下記の条件を全て満たしていなければなりません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
また、引数 value は各型にキャストした後に評価されます。 value が型の値域を超えている場合の動作は不定です。 (例えば、画像の型がUC8ならば、0〜255が value の有効な値域になる。)

F_IMG_FLOAT, F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。

画像形式が F_IMG_RGBQUAD の場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。 画像形式が F_IMG_RGBTRIPLE の場合、R,G,B それぞれで演算を行います。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] value 定数
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_add ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像間加算

マスク hmask 付きの hsrc1 画像と hsrc2 画像の加算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) + hsrc2(x,y) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) + hsrc2(x,y) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

2つの入力画像( hsrc1 , hsrc2 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。

引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像ハンドル( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_add_const ( FHANDLE  hsrc,
DOUBLE  val,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像と定数の加算

マスク hmask 付きの hsrc 画像と定数 val の加算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) + val & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) + val & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
覚え書き:
定数 ( val ) は入力画像のタイプにキャストされた後に計算されます。 そして、入力画像の画素値と定数は、オーバフローをしないように適切なタイプにキャストされて計算がされます。 例として、入力画像のタイプが F_IMG_UC8 の場合は以下のように計算がされます。

\[ ( \mathrm{UINT} )(hsrc(x, y) ) + ( \mathrm{UINT} )( ( \mathrm{UCHAR} )( val ) ) \]

しかしながら、定数( val )が画像タイプの画素値の範囲を超えている場合、結果は不定となります。

戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_diff ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像間差分

マスク hmask 付きの hsrc1 画像と hsrc2 画像の差分を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} abs( hsrc1(x,y) - hsrc2(x,y) ) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} abs( hsrc1(x,y) - hsrc2(x,y) ) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

2つの入力画像( hsrc1 , hsrc2 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_S16 型では、演算結果がオーバーフローする場合があるため、 サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります

引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_diff_const ( FHANDLE  hsrc,
DOUBLE  val,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像と定数の差分

マスク hmask 付きの hsrc 画像と定数 val の加算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} abs( hsrc(x,y) - val) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} abs(hsrc(x,y) - val) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_S16 型では、演算結果がオーバーフローする場合があるため、 サチュレーション処理を行った後に出力します。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
覚え書き:
定数 ( val ) は入力画像のタイプにキャストされた後に計算されます。 そして、入力画像の画素値と定数は、オーバフローをしないように適切なタイプにキャストされて計算がされます。 例として、入力画像のタイプが F_IMG_UC8 の場合は以下のように計算がされます。

\[ abs( ( \mathrm{INT} )(hsrc(x, y)) - ( \mathrm{INT} )( ( \mathrm{UCHAR} )( val ) ) ) \]

しかしながら、定数( val )が画像タイプの画素値の範囲を超えている場合、結果は不定となります。

戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_div ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像間除算

マスク hmask 付きの hsrc1 画像と hsrc2 画像の除算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) \div hsrc2(x,y) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) \div hsrc2(x,y) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

2つの入力画像( hsrc1 , hsrc2 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_S16 型では、演算結果がオーバーフローする場合があるため、 サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。

引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_div_const1 ( FHANDLE  hsrc,
DOUBLE  val,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像と定数の除算

マスク hmask 付きの hsrc 画像と定数 val の除算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) \div val & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) \div val & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算はDOUBLE型に変換した後に行われます。 演算結果はオーバーフローしないようサチュレーション処理を行った後に出力します。

なお、定数( val )の値はチェックしていません。 そのため、 val が0の場合の結果は不定です。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_div_const2 ( DOUBLE  val,
FHANDLE  hsrc,
FHANDLE  hmask,
FHANDLE  hdst 
)

定数とマスク付き画像の除算

定数 val とマスク hmask 付きの hsrc 画像の除算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} val \div hsrc(x,y) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} val \div hsrc(x,y) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算はDOUBLE型に変換した後に行われます。 演算結果はオーバーフローしないようサチュレーション処理を行った後に出力します。

なお、入力画像( hsrc )の画素値はチェックしていません。 そのため、 hsrc の画素値が0の場合の結果は不定です。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのオブジェクトハンドル
  • 2値画像( type : bin )
  • リージョン
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_max ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像間最大値

マスク hmask 付きの hsrc1 画像と hsrc2 画像の最大値を算出して hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} \max ( hsrc1(x,y), hsrc2(x,y) ) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} \max ( hsrc1(x,y), hsrc2(x,y) ) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

2つの入力画像( hsrc1 , hsrc2 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_max_const ( FHANDLE  hsrc,
DOUBLE  val,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像と定数の最大値

マスク hmask 付きの hsrc 画像と定数 val の最大値を算出して hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} \max ( hsrc(x,y) , val ) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} \max ( hsrc(x,y) , val ) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_min ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像間最小値

マスク hmask 付きの hsrc1 画像と hsrc2 画像の最小値を算出して hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} \min ( hsrc1(x,y), hsrc2(x,y) ) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} \min ( hsrc1(x,y), hsrc2(x,y) ) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

2つの入力画像( hsrc1 , hsrc2 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_min_const ( FHANDLE  hsrc,
DOUBLE  val,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像と定数の最小値

マスク hmask 付きの hsrc 画像と定数 val の最小値を算出して hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} \min ( hsrc(x,y) , val ) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} \min ( hsrc(x,y) , val ) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_mixop1 ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hsrc3,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き複合画像間計算[ (A*B)+C ]

マスク hmask 付きの hsrc1 画像、 hsrc2 画像と hsec3 画像の複合演算を行い hdst 画像に結果を格納します。 複合演算の内容については下記に示します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) \times hsrc2(x,y) + hsrc3(x, y) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) \times hsrc2(x,y) + hsrc3(x, y) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

3つの入力画像( hsrc1 , hsrc2 , hsec3 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
上記演算は、画像の型にかかわらず、DOUBLE型にて実行されます。 また、F_IMG_DOUBLE以外の型ではオーバーフローが発生しないよう、 演算結果にサチュレーション処理を行った後に出力します。

引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hsrc3 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_mixop2 ( FHANDLE  hsrc,
DOUBLE  val1,
DOUBLE  val2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き複合画像間計算[ (A*const1)+const2 ]

マスク hmask 付きの hsrc1 画像と定数 val1val2 の複合演算を行い hdst 画像に結果を格納します。 複合演算の内容については下記に示します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) \times val1 + val2 & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) \times val1 + val2 & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
上記演算は、画像の型にかかわらず、DOUBLE型にて実行されます。 また、F_IMG_DOUBLE以外の型ではオーバーフローが発生しないよう、 演算結果にサチュレーション処理を行った後に出力します。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val1 定数1
[in] val2 定数2
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_mixop3 ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hsrc3,
DOUBLE  val1,
DOUBLE  val2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き複合画像間計算[ (A-B)*C/const1+const2 ]

マスク hmask 付きの hsrc1 画像、 hsrc2 画像、 hsec3 画像と 定数 val1val2 の複合演算を行い hdst 画像に結果を格納します。 複合演算の内容については下記に示します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} ( hsrc1(x,y) - hsrc2(x,y) ) \times hsrc3(x, y) \div val1 + val2 & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} ( hsrc1(x,y) - hsrc2(x,y) ) \times hsrc3(x, y) \div val1 + val2 & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

3つの入力画像( hsrc1 , hsrc2 , hsec3 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
なお、定数( val )の値はチェックしていません。 そのため、 val が0の場合の結果は不定です。

上記演算は、画像の型にかかわらず、DOUBLE型にて実行されます。 また、F_IMG_DOUBLE以外の型ではオーバーフローが発生しないよう、 演算結果にサチュレーション処理を行った後に出力します。

引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double )
[in] hsrc3 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val1 定数1
[in] val2 定数2
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_mul ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像間乗算

マスク hmask 付きの hsrc1 画像と hsrc2 画像の乗算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) \times hsrc2(x,y) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) \times hsrc2(x,y) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

2つの入力画像( hsrc1 , hsrc2 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。

引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_mul_const ( FHANDLE  hsrc,
DOUBLE  val,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像と定数の乗算

マスク hmask 付きの hsrc 画像と定数 val の乗算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) \times val & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) \times val & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算はDOUBLE型に変換した後に行われます。 演算結果はオーバーフローしないようサチュレーション処理を行った後に出力します。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_sub ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像間減算

マスク hmask 付きの hsrc1 画像と hsrc2 画像の減算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) - hsrc2(x,y) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc1(x,y) - hsrc2(x,y) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

2つの入力画像( hsrc1 , hsrc2 )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。 また、画像形式がF_IMG_RGBQUADの場合、各画素の濃度値は rgbRed, rgbGreen, rgbBlue それぞれで演算を行います。 また、rgbReservedは0になります。

引数:
[in] hsrc1 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hsrc2 入力画像ハンドル( type: uc8, s16, us16, double, rgbq )
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double, rgbq )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_sub_const1 ( FHANDLE  hsrc,
DOUBLE  val,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像と定数の減算

マスク hmask 付きの hsrc 画像と定数 val の減算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) - val & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} hsrc(x,y) - val & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのオブジェクトハンドル
  • リージョン
  • 2値画像( type : bin )
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
覚え書き:
定数 ( val ) は入力画像のタイプにキャストされた後に計算されます。 そして、入力画像の画素値と定数は、オーバフローをしないように適切なタイプにキャストされて計算がされます。 例として、入力画像のタイプが F_IMG_UC8 の場合は以下のように計算がされます。

\[ ( \mathrm{INT} )(hsrc(x, y)) - ( \mathrm{INT} )( ( \mathrm{UCHAR} )( val ) ) \]

しかしながら、定数( val )が画像タイプの画素値の範囲を超えている場合、結果は不定となります。

戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。

INT FVALGAPI fnFIE_img_mask_sub_const2 ( DOUBLE  val,
FHANDLE  hsrc,
FHANDLE  hmask,
FHANDLE  hdst 
)

マスク付き画像と定数の減算

定数 val とマスク hmask 付きの hsrc 画像の減算を行い hdst 画像に結果を格納します。

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

  • リージョンオブジェクト
  • 2値画像の画像オブジェクト
マスクがリージョンの場合、出力画像は以下のように計算されます。

\[ hdst(x,y) = \left\{ \begin{array}{ll} val - hsrc(x,y) & \mathrm{if} \; (x,y) \in hmask \\ hdst(x,y) & \mathrm{if} \; (x,y) \notin hmask \end{array} \right. \]

マスクが2値画像の場合、出力は以下のように計算されます。

\[hdst(x,y) = \left\{ \begin{array}{ll} val - hsrc(x,y) & \mathrm{if} \; hmask(x,y) = 1 \\ hdst(x,y) & \mathrm{if} \; hmask(x,y) = 0 \end{array} \right. \]

入力画像( hsrc )と出力画像( hdst )は以下の条件を満たしている必要があります。

  • すべての画像の画素タイプは同じこと
  • すべての画像のチャネル数は同じであること
  • すべての画像の幅と高さは同じであること
マスク( hmask ) は以下の条件を満たしている必要があります。
  • マスクのタイプが2値画像である場合、入力画像、出力画像とサイズが同じであること
  • マスクのタイプが2値画像である場合、チャネル数は1であること
F_IMG_DOUBLE 以外の画像型では、演算結果に対して サチュレーション処理を行った後に出力します。

引数:
[in] hsrc 入力画像ハンドル( type: uc8, s16, us16, double )
[in] val 定数
[in] hmask マスクのハンドル
  • 2値画像( type : bin )
  • リージョン
[out] hdst 出力画像ハンドル( type: uc8, s16, us16, double )
覚え書き:
定数 ( val ) は入力画像のタイプにキャストされた後に計算されます。 そして、入力画像の画素値と定数は、オーバフローをしないように適切なタイプにキャストされて計算がされます。 例として、入力画像のタイプが F_IMG_UC8 の場合は以下のように計算がされます。

\[ ( \mathrm{INT} )( ( \mathrm{UCHAR} )( val ) ) - ( \mathrm{INT} )(hsrc(x, y) ) \]

しかしながら、定数( val )が画像タイプの画素値の範囲を超えている場合、結果は不定となります。

戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
  • サイズ、またはチャネル数がすべての入力画像、または出力画像で同じではない
  • 入力画像、または出力画像に画像オブジェクトではないハンドルが渡された
  • 対応していない画像ハンドルが渡された
F_ERR_INVALID_OBJECT 不正なマスクが渡された
  • 2値画像、またはリージョンではないマスクが渡された
  • 入力画像や出力画像とサイズが異なる2値画像マスクが渡された
  • 2値画像マスクのチャネル数が1ではない
  • 不正なタイプのマスクが渡された
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
当関数はin-place処理可能です。


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