lmrcImagePad(API)
提供: Eospedia
DataManip/mrcImage/src/lmrcImagePadはmrcImagePadのための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);