「簡単なプログラム例」の版間の差分
提供: Eospedia
| 行54: | 行54: | ||
for(y=0; y<in->HeaderN.y; y++){ | for(y=0; y<in->HeaderN.y; y++){ | ||
for(x=0; x<in->HeaderN.x; x++){ | for(x=0; x<in->HeaderN.x; x++){ | ||
| + | // 画素の値を手に入れます。 | ||
mrcPixelDataGet(in, x, y, z, &src, mrcPixelRePart, mrcPixelHowNearest); | mrcPixelDataGet(in, x, y, z, &src, mrcPixelRePart, mrcPixelHowNearest); | ||
mrcPixelDataGet(out, x, y, 0, &dst, mrcPixelRePart, mrcPixelHowNearest); | mrcPixelDataGet(out, x, y, 0, &dst, mrcPixelRePart, mrcPixelHowNearest); | ||
| + | // 画素の値を足し合わせます。 | ||
dst += src; | dst += src; | ||
| + | // 新しい画素の値を設定します。 | ||
mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart); | mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart); | ||
} | } | ||
2012年10月21日 (日) 09:08時点における版
基本的なメイン関数の書き方を示します。
Tool.c
#include "../inc/Tool.h"
#include "genUtil.h"
#include "mrcImage.h"
int
main(int argc, char* argv[])
{
ToolInfo info; // 引数からの情報を格納する構造体
lToolInfo linfo; // APIが必要とする情報を格納する構造体
mrcImage in; // 入力用[[mrcImage]]
mrcImage out; // 出力用[[mrcImage]]
// プロトタイプとして提供される関数の3つ組み
init0(&info); // 初期値の設定
argCheck(&info, argc, argv); // 引数から値を受け渡す
init1(&info); // 引数の情報に応じた動き:ファイルの開閉など
mrcFileRead(&in, info.In, "in main", 0); // ファイルを読み込む
lTool(&out, &in, &linfo, info.mode); // inを処理して、outを作り出す。
// 一般にlで始まるものは、画像処理ライブラリ
mrcFileRead(&out, info.Out, "in main", 0); // ファイルを書き出す
}
基本的な画像処理ライブラリの作り方を示します。ここではz軸方向に投影するプログラムの書き方を示しています。
lTool.c
#include "./lTool.h"
#include "genUtil.h"
#include "mrcImage.h"
void
lTool(mrcImage* out, mrcImage* in, lToolInfo* linfo, int status)
{
mrcImageParaTypeReal x, y, z; // ピクセル座標を表現する変数
double src, dst; // 画素の値を格納
out->Header = in->Header; // 入力画像と出力画像の画像フォーマットを同じにする。
out->HeaderN.z = 1; // 例えば、z方向には1ピクセルぶんとする
mrcInit(&out, NULL); // 出力画像の記憶領域を確保
for(z=0; z<in->HeaderN.z; z++){
for(y=0; y<in->HeaderN.y; y++){
for(x=0; x<in->HeaderN.x; x++){
// 画素の値を手に入れます。
mrcPixelDataGet(in, x, y, z, &src, mrcPixelRePart, mrcPixelHowNearest);
mrcPixelDataGet(out, x, y, 0, &dst, mrcPixelRePart, mrcPixelHowNearest);
// 画素の値を足し合わせます。
dst += src;
// 新しい画素の値を設定します。
mrcPixelDataSet(out, x, y, 0, dst, mrcPixelRePart);
}
}
}
}