基本画像操作
[基本画像操作]


列挙型

enum  f_border_mode {
  F_BORDER_NONE, F_BORDER_ZERO,
  F_BORDER_VALUE, F_BORDER_CONTINUOUS,
  F_BORDER_REPEAT, F_BORDER_MIRROR1,
  F_BORDER_MIRROR2
}
 fnFIE_copy_border() 他モード指定定数 [詳細]

関数

INT FVALGAPI fnFIE_copy_border (FHANDLE hsrc, FHANDLE hdst, INT border_left, INT border_top, INT border_mode, DOUBLE value)
 画像のボーダーを拡張する
INT FVALGAPI fnFIE_img_clear_ch (FHANDLE himg, INT channel, DOUBLE val)
 画像クリア 単独ch版
INT FVALGAPI fnFIE_img_clear (FHANDLE himg, DOUBLE val)
 画像クリア
INT FVALGAPI fnFIE_img_compare (FHANDLE hsrc1, FHANDLE hsrc2, INT *result)
 画像比較
INT FVALGAPI fnFIE_img_copy (FHANDLE srcimg, FHANDLE dstimg)
 画像コピー
INT FVALGAPI fnFIE_img_copy_ex (FHANDLE srcimg, FHANDLE dstimg, INT mode, DOUBLE offset, DOUBLE mult)
 濃度変換付き画像コピー
INT FVALGAPI fnFIE_unpacking_rgb (const FHANDLE hSrc, FHANDLE hDst)
 RGBQUAD / RGBTRIPLE アンパッキング関数
INT FVALGAPI fnFIE_packing_rgb (const FHANDLE hSrc, FHANDLE hDst)
 RGBQUAD / RGBTRIPLE パッキング関数
INT FVALGAPI fnFIE_img_expand (FHANDLE hsrc, FHANDLE hdst, INT mag_x, INT mag_y)
 画像伸長
INT FVALGAPI fnFIE_img_get_subdens (FHANDLE himg, DOUBLE x, DOUBLE y, enum f_sampling_mode mode, DOUBLE *dens)
 指定座標の濃度値取得(補間付き)
INT FVALGAPI fnFIE_img_get_dens (FHANDLE himg, INT ch, INT x, INT y, DOUBLE *dens)
 指定座標の濃度値取得
INT FVALGAPI fnFIE_img_set_dens (FHANDLE himg, INT ch, INT x, INT y, DOUBLE dens)
 指定座標の濃度値設定
INT FVALGAPI fnFIE_img_get_dens_channels (FHANDLE himg, INT x, INT y, DOUBLE *dens)
 指定座標の濃度値取得(全チャネル一括)
INT FVALGAPI fnFIE_img_set_dens_channels (FHANDLE himg, INT x, INT y, DOUBLE *dens)
 指定座標の濃度値設定(全チャネル一括)
INT FVALGAPI fnFIE_img_rgb_to_gray (const FHANDLE hsrc, FHANDLE hdst, DOUBLE coeff_r, DOUBLE coeff_g, DOUBLE coeff_b, INT mode)
 係数指定付き濃淡化
INT FVALGAPI fnFIE_img_shrink (FHANDLE hsrc, FHANDLE hdst, INT rmag)
 1/N画像圧縮
INT FVALGAPI fnFIE_img_shrink2 (FHANDLE hsrc, FHANDLE hdst, INT rmag_x, INT rmag_y, INT mode)
 画像圧縮
INT FVALGAPI fnFIE_img_sort_ch (FHANDLE hsrc, FHANDLE hdst)
 チャネル別画像ソート
INT FVALGAPI fnFIE_img_swap (FHANDLE himg1, FHANDLE himg2)
 画素値入替え
INT FVALGAPI fnFIE_jaehne_testimg (FHANDLE himg)
 B.Jaehne のテスト画像を生成する
INT FVALGAPI fnFIE_packing_ch (FHANDLE hsrc, FHANDLE hdst)
 複数チャネル画像のパッキング関数
INT FVALGAPI fnFIE_unpacking_ch (FHANDLE hsrc, FHANDLE hdst)
 複数チャネル画像へのアンパッキング関数
INT FVALGAPI fnFIE_chessboard_image (FHANDLE himg, INT stepx, INT stepy, INT shiftx, INT shifty)
 チェスボード画像を作成する。
INT FVALGAPI fnFIE_generate_noise_uniform (FHANDLE hsrcdst, DOUBLE low, DOUBLE high, UINT seed)
  [[OSS]] ノイズ画像生成(uniform noise)
INT FVALGAPI fnFIE_generate_noise_gauss (FHANDLE hsrcdst, DOUBLE ave, DOUBLE var, UINT seed)
  [[OSS]] ノイズ画像生成(gauss noise)

列挙型

fnFIE_copy_border() 他モード指定定数

列挙型の値:
F_BORDER_NONE  ボーダー処理無し
F_BORDER_ZERO  0埋めモード
F_BORDER_VALUE  一定値モード
F_BORDER_CONTINUOUS  端延長モード
F_BORDER_REPEAT  繰り返しモード
F_BORDER_MIRROR1  反転モード1
F_BORDER_MIRROR2  反転モード2


関数

INT FVALGAPI fnFIE_copy_border ( FHANDLE  hsrc,
FHANDLE  hdst,
INT  border_left,
INT  border_top,
INT  border_mode,
DOUBLE  value 
)

画像のボーダーを拡張する

入力画像から、入力画像よりも大きい出力先画像へ画像のコピーを行い、 同時にボーダー(境界)部分のピクセルの拡張を行います。 ボーダーの幅は、出力画像において、入力画像がどの位置に有るかを示す border_left, border_top パラメータにて指定することによって指定します。 つまり、出力画像のボーダー幅は下記のようになります。

  • 上部のボーダー幅: border_top
  • 下部のボーダー幅: 出力画像の高さ - ( (入力画像の高さ) + border_top )
  • 左部のボーダー幅: border_left
  • 右部のボーダー幅: 出力画像の幅 - ( (入力画像の幅) + border_left )
出力画像の幅は、入力画像の幅 + border_left 以上でなければいけません。 同じく、出力画像の高さは、入力画像の高さ + border_top 以上でなければいけません。 また、入力画像と出力画像の画像型、チャネル数は同じでなければいけません。

境界コピーモード
本関数では border_mode, border_value パラメータで指定するコピーモードにより、 周囲部分の濃度値の決め方を選択します。下記に示す6モードから選択してパラメータに指定して下さい。 なお、以下の図では、入力画像のサイズが5x3、出力画像のサイズが10x7 border_top=2, border_left=2 の時の例を示しています。
F_BORDER_ZEROモード
境界部分の濃度値は全て0になります。
copy_border_zero.png
F_BORDER_VALUEモード
境界部分の濃度値は、パラメータvalueで設定された値vになります。
copy_border_value.png
F_BORDER_CONTINUOUSモード
境界部分の濃度値は、入力画像の周囲1画素の濃度値を延長したものになります。
copy_border_continuous.png
F_BORDER_REPEATモード
入力画像がタイル状に連続していると考えて、出力画像の縁の部分の濃度値を決定します。
copy_border_repeat.png
F_BORDER_MIRROR1モード
入力画像の画素の外側(左、上、で言えば、それぞれ-0.5の下図赤鎖線の部分)で 入力画像を折り返して、出力画像の境界部分の濃度値とします。
copy_border_mirror1.png
F_BORDER_MIRROR2モード
入力画像の画素の周囲1画素の中心(左、上、で言えば、それぞれ-0.0の下図赤鎖線の部分)で 入力画像を折り返して、出力画像の境界部分の濃度値とします。 本モードの場合、入力画像の幅及び高さはそれぞれ2以上でなければいけません。
copy_border_mirror2.png
引数:
[in] hsrc 入力画像ハンドル( type: bin, uc8, s16, us16, i32 ,ui32, i64, float, double, rgbq, rgbtri )
[out] hdst 出力画像ハンドル( type: bin, uc8, s16, us16, i32 ,ui32, i64, float, double, rgbq, rgbtri )
[in] border_left 左側ボーダー幅(出力先左上X座標)
[in] border_top 上側ボーダー幅(出力先左上Y座標)
[in] border_mode ボーダーコピーモード
  • F_BORDER_ZERO 0埋めモード
  • F_BORDER_VALUE 一定値モード
  • F_BORDER_CONTINUOUS 端延長モード
  • F_BORDER_REPEAT 繰り返しモード
  • F_BORDER_MIRROR1 反転モード1
  • F_BORDER_MIRROR2 反転モード2
[in] value ボーダー濃度値。
border_mode がF_BORDER_VALUEの場合のみ使用されます。 その他のモードの場合は、この値は無視されます。 画像が整数型の場合は、濃度値は単純キャストで整数に変換されます。 2値画像の場合は ((INT) val )==0 の場合は0, それ以外は1になります。 また、指定の濃度値が濃度値範囲を超えていた場合は、サチュレーション処理が行われます。 F_IMG_RGBQUAD型の場合は各チャネルでrgbRed、rgbGreen、rgbBlue は同じ値( val ), rgbReserved は0に設定されます。 F_IMG_RGBTRIPLE型の場合は各チャネルでR、G、B ともに同じ値(val )に設定されます。 その他の画像型の場合は全てのチャネルで設定された値val になります。
戻り値:
F_ERR_NONE 正常終了
F_ERR_NOMEMORY メモリ不足エラー
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了。画像の種類やチャネル数が違う場合はこのエラーを出します。
F_ERR_INVALID_PARAM パラメータ異常。画像のサイズの影響でボーダー量がマイナスになる場合もこのエラーを出します。
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_img_clear_ch ( FHANDLE  himg,
INT  channel,
DOUBLE  val 
)

画像クリア 単独ch版

対象の画像のうち指定したチャネルのみを指定濃度( val )で塗りつぶします。 対象画像のタイプが F_IMG_RGBQUAD の場合は、 rgbRed, rgbGreen, rgbBlue は同じ値( val )、 rgbReserved は 0 に設定されます。 対象画像のタイプが F_IMG_RGBTRIPLE の場合は、R,G,B共に同じ値( val )に設定されます。

引数:
[in,out] himg 処理対象画像( type: bin, uc8, s16, us16, double, rgbq, i32, ui32, i64, float, rgbtriple )
[in] channel 処理対象にするチャネル
[in] val 塗りつぶす濃度
画像が整数型の場合は、濃度値は単純キャストで整数に変換されます。 2値画像の場合は ((INT) val )==0 の場合は0, それ以外は1になります。 また、指定の濃度値が濃度値範囲を超えていた場合は、 サチュレーション処理が行われます。
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_PARAM 存在しないチャネルが指定されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_clear()

INT FVALGAPI fnFIE_img_clear ( FHANDLE  himg,
DOUBLE  val 
)

画像クリア

画像を指定濃度( val )で塗りつぶします。 対象画像のタイプが F_IMG_RGBQUAD の場合は、 rgbRed, rgbGreen, rgbBlue は同じ値( val )、 rgbReserved は 0 に設定されます。 対象画像のタイプが F_IMG_RGBTRIPLE の場合は、R,G,B共に同じ値( val )に設定されます。

引数:
[in,out] himg 処理対象画像( type: bin, uc8, s16, us16, double, rgbq, i32, ui32, i64, float, rgbtriple )
[in] val 塗りつぶす濃度。
画像が整数型の場合は、濃度値は単純キャストで整数に変換されます。 2値画像の場合は ((INT) val )==0 の場合は0, それ以外は1になります。 また、指定の濃度値が濃度値範囲を超えていた場合は、 サチュレーション処理が行われます。
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_clear_ch()

INT FVALGAPI fnFIE_img_compare ( FHANDLE  hsrc1,
FHANDLE  hsrc2,
INT *  result 
)

画像比較

hsrc1 画像と hsrc2 画像の比較を行い、result に結果を格納します。 内容がbit単位で完全に一致していた場合のみTRUEを、それ以外の場合はFALSEを格納します。

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

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
画像形式がF_IMG_RGBQUADの場合、rgbReservedも含めて比較します。

引数:
[in] hsrc1 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] hsrc2 入力画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[out] result 比較結果
  • TRUE 画像が等しい
  • FALSE 画像が異なる
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_PARAM result が NULLのため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_img_copy ( FHANDLE  srcimg,
FHANDLE  dstimg 
)

画像コピー

srcimg から dstimg へ画像をコピーします。

コピー元画像とコピー先画像は、同一サイズでチャネル数が同じでなければなりません。 違っていた場合は異常終了になります。 また、コピー元画像とコピー先画像が同じメモリを 指し示していた場合の動作は不定です。 コピー元画像とコピー先画像の画像形式が違う場合の動作は下表を参照して下さい。

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

  • ※1 元の濃度値そのままでコピーされます。
    特にコピー元形式がBINの場合は、出力の濃度値は 0 or 1 になります。
  • ※2 rgbRed, rgbGreen, rgbBlue 共に同じ濃度値になります。 rgbReserved は 0 になります。 コピー元形式がBINの場合は、0 or 1 になります。
  • ※3 コピー先画像の濃度値は、コピー元画像の濃度値にサチュレーション処理を行った値になります。
  • ※4 コピー先画像の濃度値は、コピー元画像の濃度値にサチュレーション処理及び四捨五入を行った値になります。
  • ※5 コピー元画像の濃淡値が非数または無限の場合は、コピー先画像の濃淡値がコピー元画像の 濃淡値をコピー先画像のタイプへキャストした値になります。 コピー元画像の濃淡値が非数でも無限でも無い場合は、コピー先画像の濃淡値がコピー元画像の 濃淡値にサチュレーション処理を行った値になります。
  • ※6 各色成分の値は全て同じ濃度値になります。コピー元形式がBINの場合は、0 or 1 になります。
  • ※7 rgbRed, rgbGreen, rgbBlue の値がコピーされます。コピー先画像の rgbReserved の値は0になります。
  • ※8 rgbRed, rgbGreen, rgbBlue の値が、それぞれの色成分へ濃度値そのままでコピーされます。 rgbReserved の値はコピーされません。
  • ※9 各色成分の値が、rgbRed, rgbGreen, rgbBlueへ濃度値そのままでコピーされます。 rgbReserved の値は0になります。
引数:
[in] srcimg コピー元画像
[out] dstimg コピー先画像
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像が渡されたことにより、異常終了した.
入出力の画像サイズが違う、etc.
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_packing_rgb()
fnFIE_unpacking_rgb()
fnFIE_img_rgb_to_gray()

INT FVALGAPI fnFIE_img_copy_ex ( FHANDLE  srcimg,
FHANDLE  dstimg,
INT  mode,
DOUBLE  offset,
DOUBLE  mult 
)

濃度変換付き画像コピー

srcimg から dstimg へ画像を濃度変換しながらコピーします。 濃度変換は mode, offset, mult の3つのパラメータによって指定します。

mode==0の場合
mode == 0 の場合 fnFIE_img_mixope4() を実行した場合と同じ処理になり、 コピー先の濃度値は下式によって決定されます。
	hdst = (hsrc - offset) * mult
mode==1の場合
mode ==1 の場合、本関数はコピー元画像中の最大・最小濃度値を調べ、 その濃度値がコピー先画像型の値域に対してフルスケールとなるように offset, mult が自動決定されて変換します。関数のパラメータに指定された offset, mult の値は 無視されます。たとえばコピー元画像の最小最大濃度値が [21, 218] 、 コピー先画像の型が F_IMG_US16 の場合、本関数による濃度変換は次の式で表されます。
	hdst = (hsrc - offset) * mult
	offset = 21
	mult = 65535.0 / (218-21)
コピー元画像がF_IMG_RGBQUAD、F_IMG_RGBTRIPLEの場合は、チャネル毎に赤濃度、緑濃度、青濃度 の中から最小最大濃度値を調べ、その値を用いて濃度変換を行います。

各画像型に応じたフルスケール値は次の通りです。
コピー先型フルスケール範囲
F_IMG_BIN[0,1]
F_IMG_UC8[0,255]
F_IMG_S16[0,32767]
F_IMG_US16[0,65535]
F_IMG_I32[0,2^31-1]
F_IMG_UI32[0,2^32-1]
F_IMG_I64[0,2^63-1]
F_IMG_DOUBLE[0,1.0]
F_IMG_FLOAT[0,1.0]
F_IMG_RGBQUAD[0,255]
F_IMG_RGBTRIPLE[0,255]



コピー元画像とコピー先画像は、同一サイズでチャネル数が同じでなければなりません。 違っていた場合は異常終了になります。 また、コピー元画像とコピー先画像が同じメモリを指し示していた場合の動作は不定です。 コピー元画像とコピー先画像の画像形式が違う場合でも処理可能ですが、 一部の組み合わせに制限が有ります。処理可能な型の組み合わせは下表を参照して下さい。

  コピー先形式
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] srcimg コピー元画像 ( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[out] dstimg コピー先画像 ( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] mode 濃度変換モード
  • 0 : offset, mult による固定指定
  • 1 : コピー元画像の濃度値をフルスケール化
[in] offset 濃度オフセット ( mode==1 の場合は無視されます。)
[in] mult 濃度倍率 ( mode==1 の場合は無視されます。)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像が渡されたことにより、異常終了した.
入出力の画像サイズが違う、etc.
F_ERR_INVALID_PARAM 不正なモード指定を行った、変換できない組み合わせの画像型を指定した
F_ERR_NOMEMORY メモリ不足エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_unpacking_rgb ( const FHANDLE  hSrc,
FHANDLE  hDst 
)

RGBQUAD / RGBTRIPLE アンパッキング関数

イメージタイプが F_IMG_RGBQUAD または F_IMG_RGBTRIPLE である hSrc を、各成分ごとに分離して hDst 側に格納します。
hDst は、チャネル0に赤濃度、チャネル1に緑濃度、チャネル2に青濃度、チャネル3にrgbReserved の値をそれぞれ格納します。

入力画像のイメージタイプは F_IMG_RGBQUAD または F_IMG_RGBTRIPLE でなくてはなりません。また、チャネル数は1でなくてはなりません。
出力画像のイメージタイプは F_IMG_UC8、F_IMG_US16、F_IMG_S16、F_IMG_DOUBLE のいずれかでなくてはなりません。
また、チャネル数は3または4でなくてはなりません。
入力画像と出力画像の幅と高さは同じでなくてはなりません。

入力画像のイメージタイプが F_IMG_RGBQUAD、かつ出力画像のチャネル数が3の場合、RGBQUAD 構造体の要素の一つである rgbReserved の値は 出力されず、RGBの色成分のみが出力されます。
入力画像のイメージタイプが F_IMG_RGBTRIPLE、かつ出力画像のチャネル数が4の場合、チャネル3の値には0が出力されます。

引数:
[in] hSrc 処理対象画像( type: rgbq, rgbtri )
[out] hDst 処理結果画像( type: uc8, s16, us16, double )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 画像オブジェクトの値エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_packing_rgb ( const FHANDLE  hSrc,
FHANDLE  hDst 
)

RGBQUAD / RGBTRIPLE パッキング関数

3チャネル分、または4チャネル分の濃度値を格納している hSrc を、各成分ごとに分離して hDst に格納します。
イメージタイプが F_IMG_UC8、F_IMG_US16、F_IMG_S16、F_IMG_DOUBLEである hSrc を、各成分ごとに分離して hDst 側に格納します。

hSrc が3チャネルの場合、チャネル0を赤濃度、チャネル1を緑濃度、チャネル2を青濃度とみなして hDst に格納します。
hSrc が4チャネルの場合、チャネル0を赤濃度、チャネル1を緑濃度、チャネル2を青濃度、チャネル3をrgbReserved の値とみなして hDst に格納します。

入力画像のイメージタイプは F_IMG_UC8、F_IMG_US16、F_IMG_S16、F_IMG_DOUBLE のいずれかでなくてはなりません。 また、チャネル数は3または4でなくてはなりません。
出力画像のイメージタイプは F_IMG_RGBQUAD または F_IMG_RGBTRIPLE でなくてはなりません。また、チャネル数は1でなくてはなりません。
入力画像と出力画像の幅と高さは同じでなくてはなりません。

入力画像のチャネル数が3、かつ出力画像のイメージタイプが F_IMG_RGBQUAD の場合、RGBQUAD 構造体の要素の一つである rgbReserved の値は0に設定されます。
入力画像のチャネル数が4、かつ出力画像のイメージタイプが F_IMG_RGBTRIPLE の場合、入力画像のチャネル3の値は無視され、 チャネル0からチャネル2の値のみが格納されます。

F_IMG_US16, F_IMG_S16画像の濃度値は、コピー元画像の濃度値にサチュレーション処理を行った値になります。
F_IMG_DOUBLE 画像の濃度値は、コピー元画像の濃度値を fnFIE_d4i5() を使用して四捨五入した後、サチュレーション処理を行った値になります。

引数:
[in] hSrc 処理対象画像( type: uc8, s16, us16, double )
[out] hDst 処理結果画像( type: rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 画像オブジェクトの値エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_img_expand ( FHANDLE  hsrc,
FHANDLE  hdst,
INT  mag_x,
INT  mag_y 
)

画像伸長

入力画像 hsrc を横方向 mag_x 倍、縦方向 mag_y 倍に伸長し、出力画像 hdst に出力します。 入力画像の各画素値が、縦横それぞれの伸長率に応じた個数だけ連続して並べられます。

例として、サイズが4x2の入力画像(下図)に対して、 mag_x = 3, mag_y = 2 を指定して処理させた場合を考えます。

fie_expand_input.png

指定した伸長率分だけ入力画像の画素値を並べることで伸長し、12x4のサイズを持つ処理結果が得られます(下図)。

fie_expand_output.png

出力画像 hdst には、どのようなサイズの画像も指定することが可能です。 入力画像の幅を $src\_width$、高さを$src\_height$とすると、得られる処理結果のサイズ(幅及び高さ)は

  • 処理結果幅:$src\_width ~\times$ mag_x
  • 処理結果高さ:$src\_height ~\times$ mag_y

となります。

出力画像のサイズが上記処理結果のサイズと等しい場合、すべての処理結果を出力画像の全面で得ることができます。
出力画像のサイズがこれより大きい場合、すべての処理結果を得ることができますが、処理結果が存在しない右端と下端は元の値が保持されます。
出力画像のサイズがこれより小さい場合、出力画像のサイズを超える処理結果の右端と下端は出力画像に出力されません。

入力画像と出力画像のチャネル数と画像型は、同じでなければなりません。

引数:
[in] hsrc 入力画像( type: bin, uc8, s16, us16, double, float )
[out] hdst 出力画像( type: bin, uc8, s16, us16, double, float )
[in] mag_x 水平方向伸長率(1以上)
[in] mag_y 垂直方向伸長率(1以上)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクト
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラーまたは未初期化エラー

INT FVALGAPI fnFIE_img_get_subdens ( FHANDLE  himg,
DOUBLE  x,
DOUBLE  y,
enum f_sampling_mode  mode,
DOUBLE *  dens 
)

指定座標の濃度値取得(補間付き)

画像 himg のサブピクセル座標( x, y ) における濃度値を濃度補間法を用いて算出します。 himg のチャネル数が2以上の場合は各チャネルごとの濃度値を全て算出します。 このため dens には himg のチャネル数以上のサイズの配列を指定してください。 また himg の型が F_IMG_RGBQUAD,F_IMG_RGBTRIPLE型の場合にはチャネル数が1でなければならず、 このとき dens には長さ3以上の配列が必要です。

補間モード
本関数では濃度補間の方法を 最近傍法(F_SAMPLING_NN)、 共一次線形補間法(F_SAMPLING_BILINEAR)、3次畳み込み法(F_SAMPLING_CUBIC) の3種類の手法から選択できます。 ただし、対象画像が2値画像(bin型)の場合は F_SAMPLING_NN のみが指定可能です。 各手法の詳細は 幾何変換の説明ページ を参照してください。
座標
濃度補間の算出には対象画素とその周囲の画素の情報を利用するため、 補間モードによっては画像の周囲数画素において算出が出来ない部分が有ります。 各補間モードにおける指定可能な座標範囲は 対象画像 himg の幅を w, 高さを h とすると次の通りです。 下記条件が満たされていない場合、本関数は F_ERR_INVALID_PARAM を返します。
  • F_SAMPLING_NN の場合
    0 ≦ x && x < w && 0 ≦ y && y < h
  • F_SAMPLING_BILINEAR の場合
    0 ≦ x && x < (w-1) && 0 ≦ y && y < (h-1)
  • F_SAMPLING_ の場合
    1.0 ≦ x && x < (w-2) && 1.0 ≦ y && y < (h-2)
引数:
[in] himg 濃度を取得する画像( type: bin, uc8, s16, us16, i32, ui32, rgbq, rgbtri, double, float )
[in] x 対象画素のX座標
[in] y 対象画素のY座標
[in] mode 補間モード
  • F_SAMPLING_NN 最近傍法
  • F_SAMPLING_BILINEAR 共一次線形補間法(bin画像は指定不可)
  • F_SAMPLING_CUBIC 3次畳み込み法(bin画像は指定不可)
[out] dens 濃度値配列
himg のチャネル数分のサイズが必用
RGBQUAD, RGBTRIPLE型の場合は3以上のサイズが必要
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE himg に指定された画像が不正
F_ERR_INVALID_PARAM パラメータエラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_img_get_dens ( FHANDLE  himg,
INT  ch,
INT  x,
INT  y,
DOUBLE *  dens 
)

指定座標の濃度値取得

画像 himg のチャネル ch 、 座標( x, y )の濃度値を取得します。 ただし、 himg が F_IMG_RGBQUAD または F_IMG_RGBTRIPLE の場合には ch を以下のようにすることで特定の色の成分の濃度値を取得します。

  • ch = 0 : 座標( x, y )の赤成分(R)の濃度値
  • ch = 1 : 座標( x, y )の緑成分(G)の濃度値
  • ch = 2 : 座標( x, y )の青成分(B)の濃度値

このとき、画像 himg のチャネル数は 1 である必要があります。

引数:
[in] himg 濃度を取得する画像( type: bin, uc8, s16, us16, i32, ui32, double, float, rgbq, rgbtri)
[in] ch 対象チャネル( rgbq, rgbtriの場合、色に対応した数 [0 or 1 or 2])
[in] x 対象画素のX座標
[in] y 対象画素のY座標
[out] dens 濃度値
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE himg に指定された画像が不正
F_ERR_INVALID_PARAM パラメータエラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_set_dens()

INT FVALGAPI fnFIE_img_set_dens ( FHANDLE  himg,
INT  ch,
INT  x,
INT  y,
DOUBLE  dens 
)

指定座標の濃度値設定

画像 himg のチャネル ch 、 座標( x, y )の濃度値を設定します。 ただし、 himg が F_IMG_RGBQUAD または F_IMG_RGBTRIPLE の場合には ch を以下のようにすることで特定の色の成分に濃度値を設定します。

  • ch = 0 : 座標( x, y )の赤成分(R)の濃度値
  • ch = 1 : 座標( x, y )の緑成分(G)の濃度値
  • ch = 2 : 座標( x, y )の青成分(B)の濃度値

このとき、画像 himg のチャネル数は 1 である必要があります。

引数:
[in,out] himg 濃度を設定する画像( type: bin, uc8, s16, us16, i32, ui32, double, float, rgbq, rgbtri)
[in] ch 対象チャネル( rgbq, rgbtriの場合、色に対応した数 [0 or 1 or 2])
[in] x 対象画素のX座標
[in] y 対象画素のY座標
[in] dens 設定する濃度値
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE himg に指定された画像が不正
F_ERR_INVALID_PARAM パラメータエラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_draw_point()

fnFIE_img_get_dens()

INT FVALGAPI fnFIE_img_get_dens_channels ( FHANDLE  himg,
INT  x,
INT  y,
DOUBLE *  dens 
)

指定座標の濃度値取得(全チャネル一括)

画像 himg の座標( x , y )の濃度値を取得します。取得する濃度値とその数は画像型によって異なり、以下のようになります。

画像型がF_IMG_RGBQUAD,F_IMG_RGBTRIPLE型以外の場合
  • dens[ch] : 座標( x, y )のチャネル ch の濃度値
    このとき ch は、 0 ≦ ch < [himg のチャネル数] です。
画像型がF_IMG_RGBQUAD,F_IMG_RGBTRIPLEの場合
  • dens[0] : 座標( x, y )の赤成分(R)の濃度値
  • dens[1] : 座標( x, y )の緑成分(G)の濃度値
  • dens[2] : 座標( x, y )の青成分(B)の濃度値
このとき、画像 himg のチャネル数は 1 である必要があります。

引数:
[in] himg 濃度を取得する画像( type: bin, uc8, s16, us16, i32, ui32, double, float, rgbq, rgbtri)
[in] x 対象画素のX座標
[in] y 対象画素のY座標
[out] dens 濃度値配列
himg のチャネル数分のサイズが必要
RGBQUAD, RGBTRIPLE型の場合は3以上のサイズが必要
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE himg に指定された画像が不正
F_ERR_INVALID_PARAM パラメータエラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_set_dens_channels()

fnFIE_img_get_subdens()

INT FVALGAPI fnFIE_img_set_dens_channels ( FHANDLE  himg,
INT  x,
INT  y,
DOUBLE *  dens 
)

指定座標の濃度値設定(全チャネル一括)

画像 himg の座標( x , y )の濃度値を設定します。設定する濃度値とその数は画像型によって異なり、以下のようになります。

画像型がF_IMG_RGBQUAD,F_IMG_RGBTRIPLE型以外の場合
  • dens[ch] : 座標( x, y )のチャネル ch の濃度値
    このとき ch は、 0 ≦ ch < [himg のチャネル数] です。
画像型がF_IMG_RGBQUAD,F_IMG_RGBTRIPLEの場合
  • dens[0] : 座標( x, y )の赤成分(R)の濃度値
  • dens[1] : 座標( x, y )の緑成分(G)の濃度値
  • dens[2] : 座標( x, y )の青成分(B)の濃度値
このとき、画像 himg のチャネル数は 1 である必要があります。

引数:
[in,out] himg 濃度を設定する画像( type: bin, uc8, s16, us16, i32, ui32, double, float, rgbq, rgbtri)
[in] x 対象画素のX座標
[in] y 対象画素のY座標
[in] dens 濃度値配列
himg のチャネル数分のサイズが必要
RGBQUAD, RGBTRIPLE型の場合は3以上のサイズが必要
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE himg に指定された画像が不正
F_ERR_INVALID_PARAM パラメータエラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_get_dens_channels()

INT FVALGAPI fnFIE_img_rgb_to_gray ( const FHANDLE  hsrc,
FHANDLE  hdst,
DOUBLE  coeff_r,
DOUBLE  coeff_g,
DOUBLE  coeff_b,
INT  mode 
)

係数指定付き濃淡化

カラー画像を、指定の係数に基づき濃淡化します。
入力画像の各成分を R、G、B とし、各成分に対する変換係数を cr、cg、cb とすると 出力画像の濃度値 dst は次の変換式により計算されます。

\[ dst = cr \times R + cg \times G + cb \times B \]

一般的なカラー画像から濃淡画像への変換を行う場合は、各変換係数に次の値を御使用下さい。
coeff_r = 0.299 、coeff_g = 0.587 、coeff_b = 0.114

入力画像
入力画像は、F_IMG_UC8、F_IMG_S16、F_IMG_US16、F_IMG_DOUBLE かつ 3 チャネルであるか、F_IMG_RGBQUAD かつ 1 チャネル である必要があります。
入力画像が3チャネルの場合は 0、1、2 チャネルにそれぞれ R、G、B 成分の値が格納 されているものとして扱います。
出力画像
出力画像は、F_IMG_UC8、F_IMG_S16、F_IMG_US16、F_IMG_DOUBLE かつ 1 チャネルである必要があります。
入力画像と出力画像の画像型は同一である必要はありませんが、サイズは同一である必要があります。
出力画像が F_IMG_DOUBLE 以外の場合の濃度値は、 fnFIE_d4i5() により四捨五入で整数に変換されます。
変換モード
パラメータ mode により、変換モードを指定します。

mode に 0 を指定した場合上記の変換式の各変換係数の値には、パラメータ coeff_rcoeff_gcoeff_b で指定した値 がそのまま使用されます。
この時、出力画像の濃度値はサチュレーション処理を行った値となります。
  • mode == 0 の場合

    \[ cr = coeff\_r \]

    \[ cg = coeff\_g \]

    \[ cb = coeff\_b \]

mode に 1 を指定した場合上記の変換式の各変換係数の値には、総和が 1 となるように正規化された値が使用されます。
さらにこの時、入力画像と出力画像の画像型が異なる場合は、出力画像型に合わせてスケーリングが行われる為、 入力画像型の最大値を SRC_MAX、出力画像型の最大値を DST_MAX とすると、各変換係数の値は下のようになります。
ただし、出力画像型が F_IMG_DOUBLE の場合には、DST_MAX = 1.0 として計算されます。
また、入力画像型が F_IMG_DOUBLE の場合には、出力画像がどの画像型であってもスケーリングは行われませんので、 SRC_MAX = DST_MAX = 1.0 となります。
  • mode == 1 の場合

    \[ cr = \frac{coeff\_r}{coeff\_r + coeff\_g + coeff\_b} \times \frac{DST\_MAX}{SRC\_MAX} \]

    \[ cg = \frac{coeff\_g}{coeff\_r + coeff\_g + coeff\_b} \times \frac{DST\_MAX}{SRC\_MAX} \]

    \[ cb = \frac{coeff\_b}{coeff\_r + coeff\_g + coeff\_b} \times \frac{DST\_MAX}{SRC\_MAX} \]

注意:
coeff_r + coeff_g + coeff_b = 0.0 となる場合には、異常終了 (F_ERR_CALC_IMPOSSIBLE) となります。

各画像型の最大値は次の通りです。
画像型 最大値
F_IMG_UC8 255
F_IMG_S16 32767
F_IMG_US16 65535
F_IMG_DOUBLE 1.0
F_IMG_RGBQUAD 255
以上を踏まえた各入出力画像型の組合せにおける処理の内容は、下表のようになります。
  出力画像
uc8 (1Ch) s16 (1Ch) us16 (1Ch) double (1Ch)
入力画像 uc8 (3Ch) ※1,※4 ※1,※2 ※1,※2 ※1,※3
s16 (3Ch) ※1,※2 ※1,※4 ※1,※2 ※1,※3
us16 (3Ch) ※1,※2 ※1,※2 ※1,※4 ※1,※3
double (3Ch) ※1,※4 ※1,※4 ※1,※4 ※1,※4
RGBQ (1Ch) ※1,※4 ※1,※2 ※1,※2 ※1,※3

  • ※1 mode ==0 の場合、パラメータで指定された変換係数の値をそのまま使用します。
  • ※2 mode ==1 の場合、変換係数の正規化及び、入出力画像型に合わせたスケーリングが行われます。
  • ※3 mode ==1 の場合、変換係数の正規化及び、出力画像型の最大値を 1.0 としてスケーリングが行われます。
  • ※4 mode ==1 の場合、変換係数の正規化のみが行われます。スケーリングは行われません。
引数:
[in] hsrc 入力画像 ( type: uc8, s16, us16, double, rgbq )
[out] hdst 出力画像 ( type: uc8, s16, us16, double )
[in] coeff_r R 成分変換係数
[in] coeff_g G 成分変換係数
[in] coeff_b B 成分変換係数
[in] mode 変換モード
  • 0 : 正規化、及びスケーリングを行わない
  • 1 : 正規化、及びスケーリングを行う
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 入出力画像が不正
F_ERR_INVALID_PARAM パラメータが不正
F_ERR_CALC_IMPOSSIBLE 計算が出来ない
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー

INT FVALGAPI fnFIE_img_shrink ( FHANDLE  hsrc,
FHANDLE  hdst,
INT  rmag 
)

1/N画像圧縮

hsrc に指定された画像を縦横共に 1/rmag に圧縮し hdst へ出力します。 hdstへは

  • 幅: (hsrcの幅)/rmag
  • 高さ: (hsrcの高さ)/rmag
だけ結果が出力され、その外側は変更されません。

入力画像と出力画像は同じチャネル数、画像型でなければいけません。

引数:
[in] hsrc 入力画像ハンドル(type: uc8)
[out] hdst 出力画像ハンドル(type: uc8)
[in] rmag 圧縮率。ただし、2<=rmag
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 画像が不正
F_ERR_INVALID_PARAM 引数異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
example code:
// エラー処理は省略しているので注意して下さい。
#include <stdio.h>
#include "fie.h"

INT main()
{
    FHANDLE hsrc = NULL;
    FHANDLE hdst = NULL;
    INT i;
    CHAR buff[1024];

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

    // 入力画像生成
    hsrc = fnFIE_img_root_alloc( F_IMG_UC8, 1, 512, 480 );
    fnFIE_jaehne_testimg(hsrc);

    hdst = fnFIE_img_root_alloc( F_IMG_UC8, 1, 512, 480 );
    
    // 1/2 〜 1/32 までの画像を生成する。
    for( i=0; i<=32; i++ ){
        fnFIE_img_clear(hdst, 0.0);

        fnFIE_img_shrink( hsrc, hdst, i );  // i < 2 のときはエラーとなる
        sprintf(buff, "shrink-%02d.bmp", i);
        fnFIE_save_bmp( buff, hdst );
    }

    fnFIE_free_object( hsrc );
    fnFIE_free_object( hdst );

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

    return 0;
}

INT FVALGAPI fnFIE_img_shrink2 ( FHANDLE  hsrc,
FHANDLE  hdst,
INT  rmag_x,
INT  rmag_y,
INT  mode 
)

画像圧縮

入力画像 hsrc を、 横方向 1 / rmag_x 、 縦方向 1 / rmag_y に圧縮し、 出力画像 hdst に出力します。

例として、サイズが 20 x 7 の入力画像に対して、 rmag_x = 3、 rmag_y = 3 を指定して処理させた場合を考えます。
このとき、入力画像は 下図で色分けされているように サイズ 3 x 3 の矩形領域に分割されます。

fie_img_shrink2_src.png

そして、この分割された領域毎に mode で指定された処理を施した結果を、出力画像の各画素に出力します。
このとき、入力画像を矩形領域に分割した際に余りとなる 「右端」 及び 「下端」 の画素 (上図における灰色の画素) は、無視されます。

fie_img_shrink2_dst.png

出力画像 hdst には、どのようなサイズの画像も指定することが可能です。
入力画像の幅を $ src\_width $ 、 高さを $ src\_height $ とすると、得られる処理結果のサイズ( 幅 及び 高さ ) は

  • 処理結果幅 : $ src\_width $ / rmag_x (切り捨て)
  • 処理結果高さ : $ src\_height $ / rmag_y (切り捨て)

となります。
出力画像のサイズが、上記 処理結果のサイズと等しい場合、全ての処理結果を出力画像の全面で得ることができます。
出力画像のサイズがこれより大きかった場合、全ての処理結果を得ることはできますが、出力画像上で該当する処理結果が存在しない 右端 及び 下端 部分は、出力画像の元の値が保持されます。
出力画像のサイズがこれより小さかった場合、出力画像のサイズを超える 処理結果の 右端 及び 下端 部分は、出力画像に出力されません。


入力画像と出力画像のチャネル数は同じでなければなりません。
出力画像の画像型は、入力画像の画像型と同じであるか F_IMG_DOUBLE でなければなりません。

rmag_x は 1 以上、かつ 入力画像幅以下でなければなりません。
rmag_y は 1 以上、かつ 入力画像高さ以下でなければなりません。


圧縮モードについて.
圧縮モードは mode により、下記の値を指定して下さい。
  • mode = 0 : 平均値.
    矩形領域に含まれる画素の平均濃度値を出力します。
    出力画像が整数型である場合、結果値を四捨五入した値が出力されます。
  • mode = 1 : 合計値.
    矩形領域に含まれる画素の合計濃度値を出力します。
    結果の値が出力画像型の値域を超える場合は、飽和された値が出力されます。
  • mode = 2 : 最大値.
    矩形領域に含まれる画素の最大濃度値を出力します。
  • mode = 3 : 最小値.
    矩形領域に含まれる画素の最小濃度値を出力します。
  • mode = 4 : 中央値.
    矩形領域に含まれる画素の中央値を出力します。
    (中央値は画素を濃度値順にソートしたときに、中央に位置する値となります)
    矩形領域の画素数が偶数のときは、中央に近い2つの画素値の大きいほうを採用します。
  • mode = 5 : 最頻値.
    矩形領域に含まれる画素の最頻値を出力します。
    (最頻値は濃度値ごとに出現回数をカウントしたときに、出現回数が最も多い値となります)
    複数最頻値が出現した場合、その中で濃度値が最大となる最頻値を採用します。
    入力画像型がdoubleの場合、濃度値の小数第1位を四捨五入した後に最頻値を求めます。
  • mode = 6 : ランク1/4.
    $iRank = floor ( ( rmag\_x \times rmag\_y ) \times 1/4 + 1 )$ とします。
    矩形領域に含まれる画素の濃度値を昇順にソートし、$iRank$ 番目の値を出力します。
  • mode = 7 : ランク3/4.
    $iRank = floor ( ( rmag\_x \times rmag\_y ) \times 3/4 + 1 )$ とします。
    矩形領域に含まれる画素の濃度値を昇順にソートし、$iRank$ 番目の値を出力します。
引数:
[in] hsrc 入力画像 ( type: bin, uc8, s16, us16, double )
[out] hdst 出力画像 ( type: bin, uc8, s16, us16, double )
[in] rmag_x 水平方向圧縮率. ( 1 以上 かつ 入力画像幅 以下 )
[in] rmag_y 垂直方向圧縮率. ( 1 以上 かつ 入力画像高さ 以下 )
[in] mode 圧縮モード.
  • 0 : 平均値.
  • 1 : 合計値.
  • 2 : 最大値.
  • 3 : 最小値.
  • 4 : 中央値.
  • 5 : 最頻値.
  • 6 : ランク1/4.
  • 7 : ランク3/4.
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクトが渡された
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NOMEMORY メモリ不足エラー
F_ERR_NO_LICENCE ライセンスエラー または未初期化エラー

INT FVALGAPI fnFIE_img_sort_ch ( FHANDLE  hsrc,
FHANDLE  hdst 
)

チャネル別画像ソート

入力画像 hsrc について、各位置(x,y)にあるチャネル数c個の画素値を昇順に並び替え、 hdst に出力します。

入力画像と出力画像のチャネル数、画像型、幅、高さは、すべて同じでなければなりません。

チャネル数が1の場合、入力画像をコピーして出力します。

引数:
[in] hsrc 入力画像( type: uc8, s16, us16, double, i32, ui32, float )
[out] hdst 出力画像( type: uc8, s16, us16, double, i32, ui32, float )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクト
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラーまたは未初期化エラー

INT FVALGAPI fnFIE_img_swap ( FHANDLE  himg1,
FHANDLE  himg2 
)

画素値入替え

画像 himg1himg2 の同じ座標となる画素の値を入れ替えます。 2つの画像が重複したメモリを指示していた場合の処理結果は不定です。

また2つの画像は、型、チャネル数、幅、高さがそれぞれ等しくなければなりません。 入替え対象画像のタイプが F_IMG_RGBQUAD の場合は、入替え後の rgbReserved は 0 に設定されます。

同一画像上の2つの領域を入れ替える場合には、チャイルド画像を利用して処理を行ってください。

引数:
[in,out] himg1 画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in,out] himg2 画像ハンドル( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクト
F_ERR_NOMEMORY メモリ不足
F_ERR_NO_LICENCE ライセンスエラーまたは未初期化エラー

INT FVALGAPI fnFIE_jaehne_testimg ( FHANDLE  himg  ) 

B.Jaehne のテスト画像を生成する

Bernd Jaehne の著書Digital Image Processing (ISBN:3540240357)にて紹介されている テスト用の画像を生成します。このテスト用画像は、フィルタリング関数を適用した結果を 視覚化するのに有効です。なお、式の定義は上記書籍に無いので、独自の物です。

出力画像の濃度値dstは下記式によって求められます。

\[ dst = A \sin( 0.5 \pi \times \frac{ (x-\overline{xu})^{2} + (y-\overline{yu})^{2} }{height} ) + B \]

但し、

\[ \overline{xu} = \frac{width-1}{2} \]

\[ \overline{yu} = \frac{height-1}{2} \]

であり、A,Bは画像の型によって決まる定数で、次のようになります。

画像型AB
F_IMG_BIN0.50.5
F_IMG_UC8UC8_MAX/2.0UC8_MAX/2.0
F_IMG_S16S16_MAX0
F_IMG_US16US16_MAX/2.0US16_MAX/2.0
F_IMG_I32I32_MAX0
F_IMG_UI32UI32_MAX/2.0UI32_MAX/2.0
F_IMG_I642^630
F_IMG_DOUBLE1.00
F_IMG_FLOAT1.00
F_IMG_RGBQUADUC8_MAX/2.0UC8_MAX/2.0
F_IMG_RGBTRIPLEUC8_MAX/2.0UC8_MAX/2.0

出力先の画像はあらかじめ確保されていなければいけません。 画像のチャネル数が2以上だった場合は、全てのチャネルに同じ濃度値を書き込みます。

画像の型が F_IMG_RGBQUAD の場合は、 rgbRed, rgbGreen, rgbBlue は同じ値、 rgbReserved は 0 に設定されます。 画像の型が F_IMG_RGBTRIPLE の場合は、R,G,B共に同じ値に設定されます。

引数:
[out] himg 出力先画像のハンドラ。( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参考文献:
  • Bernd Jaehne / Digital Image Processing (ISBN:3540240357) page.289 Figure.11.3

処理結果例:
jaehne.png

fnFIE_jaehne_testimg 処理結果画像

INT FVALGAPI fnFIE_packing_ch ( FHANDLE  hsrc,
FHANDLE  hdst 
)

複数チャネル画像のパッキング関数

複数チャネルを持つ入力画像から、チャネルごとの値を横に並べて1チャネルにパックされた画像を出力します。 画素の並びは、x座標の小さいほうから順に、入力画像のチャネル番号0, 1, 2, …となります。 入力画像のチャネル数が1の場合、単にコピーされます。

例として、サイズが3x3でチャネル数が3の画像を入力した場合、下図のような出力画像が得られます。

fie_packing_pack.png

入力画像と出力画像は、以下の条件を満たす必要があります。

  • 入力画像と出力画像の高さと型が、それぞれ同じである
  • 出力画像の幅は、入力画像の幅のチャネル数倍の大きさである
  • 出力画像のチャネル数は1である

RGBQUAD型、RGBTRIPLE型へのパックは、 fnFIE_packing_rgb() をご利用ください。

引数:
[in] hsrc 入力画像( type: uc8, s16, us16, double, float )
[out] hdst 出力画像( type: uc8, s16, us16, double, float )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクト
F_ERR_NO_LICENCE ライセンスエラーまたは未初期化エラー
参照:
fnFIE_unpacking_ch()

INT FVALGAPI fnFIE_unpacking_ch ( FHANDLE  hsrc,
FHANDLE  hdst 
)

複数チャネル画像へのアンパッキング関数

入力画像を、複数チャネルの画素値を横方向に並べてパックした画像とみなし、 チャネルごとに分解して複数チャネルを持つ1つの画像として出力します。 分割するチャネル数は、出力画像のチャネル数を使用します。 出力画像のチャネル数が1の場合、単にコピーされます。

例として、サイズが9x3の単一チャネル画像を入力し、チャネル数3の出力画像を指定した場合、 下図のような出力が得られます。

fie_unpacking_ch_unpack.png

入力画像と出力画像は、以下の条件を満たす必要があります。

  • 入力画像のチャネル数は1である
  • 入力画像と出力画像の高さと型が、それぞれ同じである
  • 入力画像の幅が、出力画像の幅のチャネル数倍の大きさである

RGBQUAD型、RGBTRIPLE型のアンパックは、 fnFIE_unpacking_rgb() をご利用ください。

引数:
[in] hsrc 入力画像( type: uc8, s16, us16, double, float )
[out] hdst 出力画像( type: uc8, s16, us16, double, float )
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像オブジェクト
F_ERR_NO_LICENCE ライセンスエラーまたは未初期化エラー
参照:
fnFIE_packing_ch()

INT FVALGAPI fnFIE_chessboard_image ( FHANDLE  himg,
INT  stepx,
INT  stepy,
INT  shiftx,
INT  shifty 
)

チェスボード画像を作成する。

テスト用のチェスボード画像を作成します。

画像は、白と黒の2濃度で構成され、黒の濃度値は0になります。 白の濃度値は画像型によって異なり、次のようになります。

  • F_IMG_BIN の場合 : 1
  • F_IMG_UC8, F_IMG_RGBQUAD, F_IMG_RGBTRIPLE の場合 : 255 (==UC8_MAX)
  • F_IMG_S16 の場合 : 32767 (==S16_MAX)
  • F_IMG_US16 の場合 : 65535 (==US16_MAX)
  • F_IMG_I32 の場合 : 2147483647 (==I32_MAX)
  • F_IMG_UI32 の場合 : 4294967295 (==UI32_MAX)
  • F_IMG_I64 の場合 : 9223372036854775807 (==L64_MAX)
  • F_IMG_DOUBLE, F_IMG_FLOAT の場合 : 1.0

stepx, stepy, shiftx, shifty の4つのパラメータは チェスボードのパタンを決めるパラメータで、下図の通りです。

fie_chessboard_param.png

パラメータの意味

出力先の画像はあらかじめ確保されていなければいけません。 画像のチャネル数が2以上だった場合は、全てのチャネルに同じ濃度値を書き込みます。

画像の型が F_IMG_RGBQUAD の場合は、 rgbRed, rgbGreen, rgbBlue は同じ値、 rgbReserved は 0 に設定されます。 画像の型が F_IMG_RGBTRIPLE の場合は、R,G,B共に同じ値に設定されます。

引数:
[out] himg 出力先画像のハンドラ。( type: bin, uc8, s16, us16, i32, ui32, i64, float, double, rgbq, rgbtri )
[in] stepx チェスボードパタンのX方向周期(1以上)
[in] stepy チェスボードパタンのY方向周期(1以上)
[in] shiftx チェスボードパタンのX方向位相移動量(0以上)
[in] shifty チェスボードパタンのY方向位相移動量(0以上)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_PARAM 不正なパラメータ
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
出力例:
fie_chessboard.png

チェスボード画像出力例

INT FVALGAPI fnFIE_generate_noise_uniform ( FHANDLE  hsrcdst,
DOUBLE  low,
DOUBLE  high,
UINT  seed 
)

[[OSS]] ノイズ画像生成(uniform noise)

指定の画像を [ low, high ] の区間で一様分布となるノイズで書き換えます。

引数:
[in,out] hsrcdst 処理対象画像( type: double )
[in] low 一様に分布する値の範囲の下限
[in] high 一様に分布する値の範囲の上限
[in] seed 擬似乱数ジェネレータの初期シード値
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 画像オブジェクトの値エラー
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_add_noise_uniform()

INT FVALGAPI fnFIE_generate_noise_gauss ( FHANDLE  hsrcdst,
DOUBLE  ave,
DOUBLE  var,
UINT  seed 
)

[[OSS]] ノイズ画像生成(gauss noise)

指定の画像を平均 ave 分散 var の正規分布になるノイズで書き換えます。

引数:
[in,out] hsrcdst 処理対象画像( type: double )
[in] ave gauss分布の平均
[in] var gauss分布の分散(0.0より大きい値)
[in] seed 擬似乱数ジェネレータの初期シード値
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 画像オブジェクトの値エラー
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_add_noise_gauss()


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