MrcImage.h
提供: Eospedia
mrcImage.hは、mrcImage型の画像を取り扱うための標準APIです。
クラス名(構造体)
mrcImage |- mrcImageHeader (画像の情報) |- mrcImageTailer (画像の付加的な情報) |- Image (画像)
メンバ
typedef struct mrcImage { // 画像の情報を示すヘッダーです。 mrcImageHeader Header; mrcImageParaTypeInteger BytePerImage; mrcImageParaTypeInteger BytePerBand; mrcImageParaTypeInteger BandPerPixel; mrcImageParaTypeInteger PixelPerImage; mrcStatusType status; // 画像が格納された1次元配列です。型に応じて用意されています。 char* Image; unsigned char* ImageCharImage; unsigned short* ImageShortImage; unsigned long* ImageLongImage; float* ImageFloatImage; double* ImageDoubleImage; // 付加的情報のためのテーラーです。 mrcImageTailer* Tailer; mrcImageParaTypeInteger numTailer; /* Swap Bytes */ mrcImageParaTypeInteger flagByteSwap; /* flag CCP4-2000 */ mrcImageParaTypeInteger flagCCP4; mrcImageParaTypeInteger ImageOffset; mrcImageSymmetryOperator* SymmetryOperator; } mrcImage;
ヘッダー情報です。共用体として、複数の書き出し、読み出しに対応しています。
/* Image Header */ typedef union mrcImageHeader { unsigned char All[MRC_HEADER]; mrcImageParaTypeInteger Int[MRC_HEADER/4]; mrcImageParaTypeReal Real[MRC_HEADER/4]; _mrcImageHeader Cont; /* Conventional Header */ _mrcImageHeaderCCP4 ContCCP4; /* Current Header */ } mrcImageHeader;
以前のCCPフォーマットです。ただし、Lengthの意味が異なります。Eosでは、ピクセル間隔(サンプリング間隔)を示しています。
typedef struct _mrcImageHeader { mrcImageParaTypeIntegerCoord N; /* Data Numbers */ mrcImageMode Mode; /* Data Type */ mrcImageParaTypeIntegerCoord StartN; /* First in map */ mrcImageParaTypeIntegerCoord M; /* Number of Intervals */ mrcImageParaTypeRealCoord Length; /* Cell Dimensions : Angstrom */ mrcImageParaTypeReal Alpha; /* Cell Angle : Degree */ mrcImageParaTypeReal Beta; mrcImageParaTypeReal Gamma; mrcImageParaTypeInteger MAPC; /* Which Axis Corresponds to Columns */ mrcImageParaTypeInteger MAPR; /* Which Axis Corresponds to Rows */ mrcImageParaTypeInteger MAPS; /* Which Axis Corresponds to Sections */ mrcImageParaTypeReal AMin; /* Minimum Density Value */ mrcImageParaTypeReal AMax; /* Maximum Density Value */ mrcImageParaTypeReal AMean; /* Mean Density Value */ mrcImageParaTypeInteger ISPG; /* Space Group */ mrcImageParaTypeInteger NSYMBT; /* Number of bytes */ mrcImageParaTypeReal EXTRA[MRC_MAX_EXTRA]; /* Extra, user defined storage space */ mrcImageParaTypeReal OriginX; mrcImageParaTypeReal OriginY; mrcImageParaTypeInteger LabelN; char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN]; } _mrcImageHeader;
CCP4のフォーマットが2000年に正式に変更になったことに併せて、そのフォーマットに対応しました。以前のものと共用体によりいずれのフォーマットにも一端対応しています。 ただし、Lengthの意味が異なります。Eosでは、ピクセル間隔(サンプリング間隔)を示しています。
/* For CCP4 2000 : Current New */ typedef char mrcImageSymmetryOperator; typedef struct _mrcImageHeaderCCP4 { mrcImageParaTypeIntegerCoord N; /* Data Numbers */ mrcImageMode Mode; /* Data Type */ mrcImageParaTypeIntegerCoord StartN; /* First in map */ mrcImageParaTypeIntegerCoord NI; /* Number of Intervals */ mrcImageParaTypeRealCoord Length; /* Cell Dimensions : Angstrom */ mrcImageParaTypeReal Alpha; /* Cell Angle : Degree */ mrcImageParaTypeReal Beta; mrcImageParaTypeReal Gamma; mrcImageParaTypeInteger MAPC; /* Which Axis Corresponds to Columns */ mrcImageParaTypeInteger MAPR; /* Which Axis Corresponds to Rows */ mrcImageParaTypeInteger MAPS; /* Which Axis Corresponds to Sections */ mrcImageParaTypeReal AMin; /* Minimum Density Value */ mrcImageParaTypeReal AMax; /* Maximum Density Value */ mrcImageParaTypeReal AMean; /* Mean Density Value */ mrcImageParaTypeInteger ISPG; /* Space Group */ mrcImageParaTypeInteger NSYMBT; /* Number of bytes used for storing symmetry operators */ mrcImageParaTypeInteger LSKFLG; /* Flag for Skew transformation */ mrcImageParaTypeReal SKWMAT[9]; /* Skew matrix S */ mrcImageParaTypeReal SKWTRN[3]; /* Skew translation */ mrcImageParaTypeReal EXTRA[MRC_MAX_EXTRA_CCP4]; /* Extra, user defined storage space */ mrcImageParaTypeCharacter MAP[4]; mrcImageParaTypeInteger ARCHST; mrcImageParaTypeReal ARMS; mrcImageParaTypeInteger LabelN; char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN]; } _mrcImageHeaderCCP4;
付加的な情報を与えるために添付された情報です。とくに投影像のセットなどに利用されます。CCP4のフォーマットとの対応をとりながら、付加的な情報を付けています。
/* Tailer */ /* constant begin */ #define mrcImageTailerMode2DProjection 0 /* constant end */ /* struct begin */ typedef struct _mrcImageTailer { char Code[4]; mrcImageParaTypeInteger Mode; char EulerAngleMode[4]; mrcImageParaTypeReal Rot1; mrcImageParaTypeReal Rot2; mrcImageParaTypeReal Rot3; mrcImageParaTypeInteger Mirror; } _mrcImageTailer; typedef union mrcImageTailer { unsigned char All[MRC_TAILER]; mrcImageParaTypeInteger Int[MRC_TAILER/4]; mrcImageParaTypeReal Real[MRC_TAILER/4]; _mrcImageTailer Cont; } mrcImageTailer;