lmrcImagePad(API)

提供: Eospedia
2014年10月10日 (金) 07:32時点におけるKinoshita (トーク | 投稿記録)による版

移動: 案内検索

DataManip/mrcImage/src/lmrcImagePadmrcImagePadのためのAPI です。

定数

lmrcImagePadのmodeで使用します。

typedef enum lmrcImagePadMode {
	lmrcImagePadModeAverage                   = 0,
	lmrcImagePadModeAveragedYAxis             = 1,
	lmrcImagePadModeDynamicAveragedYAxis      = 2,
	lmrcImagePadModeAveragedEdge              = 3,
	lmrcImagePadModeBottomLeft                = 4,
	lmrcImagePadModeCenterWithoutAveraging    = 5,
	lmrcImagePadModeBottomLeftWithoutAveraging= 6,
	lmrcImagePadModeAveragedOutsideCircle     = 7,
	lmrcImagePadModeAveragedOutsideRing       = 8, 
	lmrcImagePadModeByValue                   = 9,
	lmrcImagePadModePeripheryMaskingByValue   = 10,
	lmrcImagePadModeNormalizedByBgAvgAndBgAvgOffset    = 11,
	lmrcImagePadModeNormalizedByImgVarAndImgAvgOffset  = 12,
	lmrcImagePadModeNormalizedByBgVarAndBgAvgOffset    = 13,
	lmrcImagePadModeNormalizedByDifferenceBeteweenImgAvgAndBgAvg    = 14,
	lmrcImagePadModeTiltedImageCircleAverage		        = 15 
} lmrcImagePadMode;

構造体

APIを使用するときの設定データとして使用します。

typedef struct lmrcImagePadInfo {
	mrcImageParaTypeInteger Width;
	mrcImageParaTypeInteger Height;
	mrcImageParaTypeReal Value;
	mrcImageParaTypeReal AWSize;
	mrcImageParaTypeReal AWMin;
	mrcImageParaTypeReal AWMax;
	mrcImageParaTypeReal ExpectedValue;
	int flagExpectedValue;	
	mrcImageParaTypeReal TiltAxisAngle;
	mrcImageParaTypeReal TiltAngle;
} lmrcImagePadInfo;

API

パディング

メイン

extern void lmrcImagePad(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, lmrcImagePadMode mode);

outのヘッダはinと同じに、サイズは(info->Width, info->Height)として設定します。
引数のmodeによって、以下の中から処理のいずれかが実行されます。
mode=XX: __lmrcImagePadXX を実行します。
mode=15: __lmrcImagePadTiltImageを実行します。

平均値でパディング

inの平均値でパディングします。

extern void __lmrcImagePad0(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
出力画像outの要素 処理結果
入力画像inの配置 中央配置
in内のデータ + info->Value - (inの平均値)
in外のデータ info->Value


inの左右端の平均値でパディングします。

extern void __lmrcImagePad1(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
出力画像outの要素 処理結果
入力画像inの配置 中央配置
in内のデータ + info->Value - (inの左右端の平均値)
in外のデータ info->Value


指定した範囲での左右端の平均値を使い、左右の位置に応じた重みを付けてパディングします。

extern void __lmrcImagePad2(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);

inのデータ座標(x, y)に対し、
各yについてinfo->AWSize[A]で指定した範囲での左右端の平均値をそれぞれ算出し、
各xについて左右端との距離の比に応じた割合平均値でパディングします。

出力画像outの要素 処理結果
入力画像inの配置 中央配置
in内のデータ + info->Value - (inの左右端の割合平均値)
in外のデータ info->Value


inの周辺の平均値でパディングします。

extern void __lmrcImagePad3(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
出力画像outの要素 処理結果
入力画像inの配置 中央配置
in内のデータ + info->Value - (inの周辺の平均値)
in外のデータ info->Value


inの平均値でパディングします。(左下寄せ)

extern void __lmrcImagePad4(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
出力画像outの要素 処理結果
入力画像inの配置 左下寄せ
in内のデータ + info->Value - (inの平均値)
in外のデータ info->Value


外のデータを定数で埋める

inより外のデータをinfo->Valueにします。

extern void __lmrcImagePad5(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
出力画像outの要素 処理結果
入力画像inの配置 中央配置
in内のデータ そのまま
in外のデータ info->Value


inより外のデータをinfo->Valueにします。(左下寄せ)

extern void __lmrcImagePad6(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
出力画像outの要素 処理結果
入力画像inの配置 左下寄せ
in内のデータ そのまま
in外のデータ info->Value


楕円内の平均値でパディング

入力画像inのNx, Nyを軸とする楕円について平均値を算出してパディングします。

extern void __lmrcImagePad7(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
出力画像outの要素 処理結果
入力画像inの配置 中央配置
in内のデータ - (inの楕円内の平均値)
in外のデータ info->Value


extern void __lmrcImagePad8(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
extern void __lmrcImagePad9(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
extern void __lmrcImagePad10(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
extern void __lmrcImagePad11(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
extern void __lmrcImagePad12(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
extern void __lmrcImagePad13(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
extern void __lmrcImagePad14(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);
extern void __lmrcImagePadTiltImage(mrcImage* out, mrcImage* in, lmrcImagePadInfo* info, long mode);

API情報の出力

APIで使用するのモード説明を出力します。

extern void lmrcImagePadModePrint(FILE* fpt);