「MrcImage.h」の版間の差分
提供: Eospedia
(→メンバ) |
(→メンバ) |
||
| 行12: | 行12: | ||
<pre> | <pre> | ||
typedef struct mrcImage { | typedef struct mrcImage { | ||
| + | // 画像の情報を示すヘッダーです。 | ||
mrcImageHeader Header; | mrcImageHeader Header; | ||
mrcImageParaTypeInteger BytePerImage; | mrcImageParaTypeInteger BytePerImage; | ||
| 行18: | 行19: | ||
mrcImageParaTypeInteger PixelPerImage; | mrcImageParaTypeInteger PixelPerImage; | ||
mrcStatusType status; | mrcStatusType status; | ||
| + | |||
| + | // 画像が格納された1次元配列です。型に応じて用意されています。 | ||
char* Image; | char* Image; | ||
unsigned char* ImageCharImage; | unsigned char* ImageCharImage; | ||
| 行24: | 行27: | ||
float* ImageFloatImage; | float* ImageFloatImage; | ||
double* ImageDoubleImage; | double* ImageDoubleImage; | ||
| + | |||
| + | // 付加的情報のためのテーラーです。 | ||
mrcImageTailer* Tailer; | mrcImageTailer* Tailer; | ||
mrcImageParaTypeInteger numTailer; | mrcImageParaTypeInteger numTailer; | ||
| 行37: | 行42: | ||
</pre> | </pre> | ||
| + | ヘッダー情報です。共用体として、複数の書き出し、読み出しに対応しています。 | ||
<pre> | <pre> | ||
| 行47: | 行53: | ||
_mrcImageHeaderCCP4 ContCCP4; /* Current Header */ | _mrcImageHeaderCCP4 ContCCP4; /* Current Header */ | ||
} mrcImageHeader; | } mrcImageHeader; | ||
| + | </pre> | ||
| + | 以前のCCPフォーマットです。ただし、Lengthの意味が異なります。Eosでは、ピクセル間隔(サンプリング間隔)を示しています。 | ||
| + | |||
| + | <pre> | ||
typedef struct _mrcImageHeader { | typedef struct _mrcImageHeader { | ||
mrcImageParaTypeIntegerCoord N; /* Data Numbers */ | mrcImageParaTypeIntegerCoord N; /* Data Numbers */ | ||
| 行74: | 行84: | ||
CCP4のフォーマットが2000年に正式に変更になったことに併せて、そのフォーマットに対応しました。以前のものと共用体によりいずれのフォーマットにも一端対応しています。 | CCP4のフォーマットが2000年に正式に変更になったことに併せて、そのフォーマットに対応しました。以前のものと共用体によりいずれのフォーマットにも一端対応しています。 | ||
| + | ただし、Lengthの意味が異なります。Eosでは、ピクセル間隔(サンプリング間隔)を示しています。 | ||
<pre> | <pre> | ||
2013年4月28日 (日) 20:39時点における最新版
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;