「mrcImage(API)」の版間の差分
提供: Eospedia
細 (Kinoshita がページ「mrcImage.h」を「mrcImage(API)」に移動しました: コマンド及び他の記事との重複を避けるため) |
|||
| 行47: | 行47: | ||
====Image Data Type==== | ====Image Data Type==== | ||
| + | /* for compatibility */ | ||
| + | typedef mrcImageParaTypeInteger mrcImageMode; | ||
| + | #define MRC_char_image ((mrcImageMode)0) | ||
| + | #define MRC_short_image ((mrcImageMode)1) | ||
| + | #define MRC_float_image ((mrcImageMode)2) | ||
| + | #define MRC_complex_short_ft ((mrcImageMode)3) | ||
| + | #define MRC_complex_float_ft ((mrcImageMode)4) | ||
| + | #define MRC_long_image ((mrcImageMode)101) | ||
| + | #define MRC_double_image ((mrcImageMode)102) | ||
| + | #define MRC_complex_long_ft ((mrcImageMode)103) | ||
| + | #define MRC_complex_double_ft ((mrcImageMode)104) | ||
| + | #define MRC_complex_short_fft ((mrcImageMode)1003) | ||
| + | #define MRC_complex_float_fft ((mrcImageMode)1004) | ||
| + | #define MRC_complex_long_fft ((mrcImageMode)1103) | ||
| + | #define MRC_complex_double_fft ((mrcImageMode)1104) | ||
| + | #define MRC_NotSuppotedMode ((mrcImageMode)0xffffffffL) | ||
| + | |||
| + | #define mrcCharImage ((mrcImageMode)0) | ||
| + | #define mrcShortImage ((mrcImageMode)1) | ||
| + | #define mrcFloatImage ((mrcImageMode)2) | ||
| + | #define mrcComplexShortFT ((mrcImageMode)3) | ||
| + | #define mrcComplexFloatFT ((mrcImageMode)4) | ||
| + | #define mrcComplexFloatOneDimFT ((mrcImageMode)5) | ||
| + | // Change of IMOD | ||
| + | #define mrcUShortImage ((mrcImageMode)6) | ||
| + | #define mrcCharImageRGB ((mrcImageMode)16) | ||
| + | // Change for IMOD: (6,7) -> (26,27) | ||
| + | #define mrcFloatRadonImage ((mrcImageMode)26) | ||
| + | #define mrcFloatRadonFT ((mrcImageMode)27) | ||
| + | #define mrcLongImage ((mrcImageMode)101) | ||
| + | #define mrcDoubleImage ((mrcImageMode)102) | ||
| + | #define mrcComplexLongFT ((mrcImageMode)103) | ||
| + | #define mrcComplexDoubleFT ((mrcImageMode)104) | ||
| + | #define mrcComplexShortFFT ((mrcImageMode)1003) | ||
| + | #define mrcComplexFloatFFT ((mrcImageMode)1004) | ||
| + | #define mrcComplexLongFFT ((mrcImageMode)1103) | ||
| + | #define mrcComplexDoubleFFT ((mrcImageMode)1104) | ||
| + | #define mrcNotSuppotedMode ((mrcImageMode)0xffffffffL) | ||
| + | |||
| + | #define MRC_MAX_LABEL_N (10) | ||
| + | #define MRC_MAX_LABEL_LEN (80) | ||
| + | #define MRC_MAX_EXTRA (29) | ||
| + | #define MRC_MAX_EXTRA_CCP4 (15) | ||
| + | |||
| + | ===Tailer=== | ||
| + | #define mrcImageTailerMode2DProjection 0 | ||
| + | |||
| + | ===画像情報=== | ||
| + | typedef enum mrcImageInformationMode { | ||
| + | meanOfAll = 0, | ||
| + | meanOfSphereSurface = 1, | ||
| + | meanOfCylinderSurface = 2, | ||
| + | meanOfEdge = 3, | ||
| + | meanOfCentre = 4, | ||
| + | meanOfSparse = 5, | ||
| + | meanOf2DEdgeY = 6, | ||
| + | RMSofAllPixels = 7 | ||
| + | } mrcImageInformationMode; | ||
| + | |||
| + | typedef enum mrcPixelDataType { | ||
| + | mrcPixelRePart = 0, | ||
| + | mrcPixelImPart, | ||
| + | mrcPixelMag, | ||
| + | mrcPixelPow, | ||
| + | mrcPixelLogMag, | ||
| + | mrcPixelLogPow, | ||
| + | mrcPixelPhase | ||
| + | } mrcPixelDataType; | ||
| + | |||
| + | typedef enum mrcPixelDataHowToGet { | ||
| + | mrcPixelHowNearest = 0, | ||
| + | mrcPixelHowLinear, | ||
| + | mrcPixelHowCubicConv, | ||
| + | mrcPixelHowPolySig | ||
| + | } mrcPixelDataHowToGet; | ||
==構造体== | ==構造体== | ||
| + | ===Status Mask=== | ||
typedef union MRC_Status_t { | typedef union MRC_Status_t { | ||
mrcStatusType all; | mrcStatusType all; | ||
| 行85: | 行161: | ||
} mrcImageParaTypeRealCoord; | } mrcImageParaTypeRealCoord; | ||
| + | === MRC Image Header=== | ||
| + | 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; | ||
| + | |||
| + | /* For CCP4 2000 : Current New */ | ||
| + | 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 MARCHST; | ||
| + | mrcImageParaTypeReal ARMS; | ||
| + | mrcImageParaTypeInteger LabelN; | ||
| + | char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN]; | ||
| + | } _mrcImageHeaderCCP4; | ||
| + | |||
| + | /* For IMOD: Current New */ | ||
| + | typedef struct _mrcImageHeaderIMOD { | ||
| + | mrcImageParaTypeIntegerCoord N; /* Data Numbers */ | ||
| + | mrcImageMode Mode; /* Data Type */ | ||
| + | mrcImageParaTypeIntegerCoord StartN; /* First in map */ | ||
| + | mrcImageParaTypeIntegerCoord M; /* Number of Intervals */ | ||
| + | mrcImageParaTypeRealCoord Length; /* PixelSize=Len/M: 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 extended header */ | ||
| + | short creatid; /* Flag for Skew transformation */ | ||
| + | short extra1[15]; /* Flag for Skew transformation */ | ||
| + | short nint; | ||
| + | short nreal; /*l Skew matrix S */ | ||
| + | mrcImageParaTypeReal extra2[5]; /* Extra, user defined storage space */ | ||
| + | mrcImageParaTypeInteger imodStamp; | ||
| + | mrcImageParaTypeInteger imodFlags; | ||
| + | short idtype; | ||
| + | short lnes; | ||
| + | short nd1; | ||
| + | short nd2; | ||
| + | short vd1; | ||
| + | short vd2; | ||
| + | mrcImageParaTypeReal tiltangles[6]; /* Extra, user defined storage space */ | ||
| + | mrcImageParaTypeReal xorg; /* Extra, user defined storage space */ | ||
| + | mrcImageParaTypeReal yorg; /* Extra, user defined storage space */ | ||
| + | mrcImageParaTypeReal zorg; /* Extra, user defined storage space */ | ||
| + | mrcImageParaTypeCharacter MAP[4]; | ||
| + | mrcImageParaTypeInteger MARCHST; | ||
| + | mrcImageParaTypeReal ARMS; | ||
| + | mrcImageParaTypeInteger LabelN; | ||
| + | char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN]; | ||
| + | } _mrcImageHeaderIMOD; | ||
| + | |||
| + | |||
| + | typedef union mrcImageHeader { | ||
| + | unsigned char All[MRC_HEADER]; | ||
| + | mrcImageParaTypeInteger Int[MRC_HEADER/4]; | ||
| + | mrcImageParaTypeReal Real[MRC_HEADER/4]; | ||
| + | _mrcImageHeader Cont; | ||
| + | _mrcImageHeaderCCP4 ContCCP4; | ||
| + | _mrcImageHeaderIMOD ContIMOD; | ||
| + | } mrcImageHeader; | ||
| + | |||
| + | |||
| + | #define FEI_EXTENDED_HEADER_EACH (128) | ||
| + | |||
| + | typedef struct _FEIextendedHeader { | ||
| + | mrcImageParaTypeReal aTilt; // Alpha tilt, in degrees | ||
| + | mrcImageParaTypeReal bTilt; // Beta tilt, in degrees | ||
| + | mrcImageParaTypeReal xStage; // Stage x position. | ||
| + | // Normally in SI units (meters), | ||
| + | // but some older files may be in micrometers. | ||
| + | // Check by looking at values for x,y,z. | ||
| + | // If one of these exceeds 1, it will be micrometers. | ||
| + | mrcImageParaTypeReal yStage; // Stage y position. For testing of units see x_stage. | ||
| + | mrcImageParaTypeReal zStage; // Stage z position. For testing of units see x_stage. | ||
| + | mrcImageParaTypeReal xShift; // Image shift x. For testing of units see x_stage. | ||
| + | mrcImageParaTypeReal yShift; // Image shift y. For testing of units see x_stage. | ||
| + | mrcImageParaTypeReal defocus; | ||
| + | mrcImageParaTypeReal expTime; | ||
| + | mrcImageParaTypeReal mean; | ||
| + | mrcImageParaTypeReal tiltAxis; | ||
| + | mrcImageParaTypeReal pixelSize; | ||
| + | mrcImageParaTypeReal magnification; | ||
| + | mrcImageParaTypeReal ht; | ||
| + | mrcImageParaTypeReal binning; | ||
| + | mrcImageParaTypeReal appliedDefocus; | ||
| + | mrcImageParaTypeReal reminder[FEI_EXTENDED_HEADER_EACH/4-16]; | ||
| + | } _FEIextendedHeader; | ||
| + | |||
| + | typedef union FEIextendedHeader { | ||
| + | mrcImageParaTypeReal Real[FEI_EXTENDED_HEADER_EACH/4]; | ||
| + | _FEIextendedHeader Cont; | ||
| + | } FEIextendedHeader; | ||
| + | |||
| + | ===Tailer=== | ||
| + | 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; | ||
| + | |||
| + | |||
| + | typedef char mrcImageSymmetryOperator; | ||
| + | |||
| + | ===mrcImage Structure=== | ||
| + | typedef struct mrcImage { | ||
| + | mrcImageHeader Header; | ||
| + | size_t BytePerImage; | ||
| + | mrcImageParaTypeInteger BytePerBand; | ||
| + | mrcImageParaTypeInteger BandPerPixel; | ||
| + | size_t PixelPerImage; | ||
| + | mrcStatusType status; | ||
| + | char* Image; | ||
| + | unsigned char* ImageCharImage; | ||
| + | unsigned short* ImageShortImage; | ||
| + | unsigned long* ImageLongImage; | ||
| + | float* ImageFloatImage; | ||
| + | double* ImageDoubleImage; | ||
| + | |||
| + | /* Tailer */ | ||
| + | mrcImageTailer* Tailer; | ||
| + | mrcImageParaTypeInteger numTailer; | ||
| + | |||
| + | /* FEIextendedHeader */ | ||
| + | FEIextendedHeader* FEIHeader; | ||
| + | mrcImageParaTypeInteger numFEIHeader; | ||
| + | |||
| + | /* Dummy */ | ||
| + | char* dummyHeader; | ||
| + | mrcImageParaTypeInteger dummyHeaderByte; | ||
| + | |||
| + | /* Swap Bytes */ | ||
| + | mrcImageParaTypeInteger flagByteSwap; | ||
| + | |||
| + | /* flag CCP4-2000 */ | ||
| + | mrcImageParaTypeInteger flagCCP4; | ||
| + | mrcImageParaTypeInteger ImageOffset; | ||
| + | mrcImageSymmetryOperator* SymmetryOperator; | ||
| + | } mrcImage; | ||
| + | |||
| + | typedef struct mrcImageInformation { | ||
| + | double mean; | ||
| + | double rootMeanSquare; | ||
| + | double meanOfSphereSurface; | ||
| + | double sdOfSphereSurface; | ||
| + | double seOfSphereSurface; | ||
| + | double meanOfCylinderSurface; | ||
| + | double sdOfCylinderSurface; | ||
| + | double seOfCylinderSurface; | ||
| + | double meanOfEdge; | ||
| + | double sdOfEdge; | ||
| + | double seOfEdge; | ||
| + | double max; | ||
| + | mrcImageParaTypeRealCoord maxCoord; | ||
| + | double min; | ||
| + | mrcImageParaTypeRealCoord minCoord; | ||
| + | double sd; | ||
| + | double se; | ||
| + | double rmax; | ||
| + | long flagrmax; | ||
| + | double RMS; /* Root mean square */ | ||
| + | int mode; | ||
| + | |||
| + | /* For Search Area */ | ||
| + | int flagXrange; | ||
| + | int flagYrange; | ||
| + | int flagZrange; | ||
| + | double XrangeMin; | ||
| + | double XrangeMax; | ||
| + | double YrangeMin; | ||
| + | double YrangeMax; | ||
| + | double ZrangeMin; | ||
| + | double ZrangeMax; | ||
| + | |||
| + | int flagCentre; | ||
| + | double CentreX; | ||
| + | double CentreY; | ||
| + | double CentreZ; | ||
| + | } mrcImageInformation; | ||
| + | |||
| + | #define HeaderN Header.Cont.N | ||
| + | #define HeaderMode Header.Cont.Mode | ||
| + | #define HeaderStartN Header.Cont.StartN | ||
| + | #define HeaderM Header.Cont.M | ||
| + | #define HeaderLength Header.Cont.Length | ||
| + | #define HeaderAlpha Header.Cont.Alpha | ||
| + | #define HeaderBeta Header.Cont.Beta | ||
| + | #define HeaderGamma Header.Cont.Gamma | ||
| + | #define HeaderMAPC Header.Cont.MAPC | ||
| + | #define HeaderMAPR Header.Cont.MAPR | ||
| + | #define HeaderMAPS Header.Cont.MAPS | ||
| + | #define HeaderAMin Header.Cont.AMin | ||
| + | #define HeaderAMax Header.Cont.AMax | ||
| + | #define HeaderAMean Header.Cont.AMean | ||
| + | #define HeaderISPG Header.Cont.ISPG | ||
| + | #define HeaderNSYMBT Header.Cont.NSYMBT | ||
| + | #define HeaderLSKFLG Header.ContCCP4.LSKFLG | ||
| + | #define HeaderEXTRA Header.Cont.EXTRA | ||
| + | #define HeaderOriginX Header.Cont.OriginX | ||
| + | #define HeaderOriginY Header.Cont.OriginY | ||
| + | #define HeaderLabelN Header.Cont.LabelN | ||
| + | #define HeaderLabel Header.Cont.Label | ||
| + | |||
| + | ===画像情報=== | ||
| + | typedef struct lmrcImageSmoothingInfo { | ||
| + | long mode; | ||
| + | mrcImageParaTypeReal sx; /* Filter kernel size */ | ||
| + | mrcImageParaTypeReal sy; | ||
| + | mrcImageParaTypeReal sz; | ||
| + | double sigma; /* for Lee-Sigma filter */ | ||
| + | } lmrcImageSmoothingInfo; | ||
| + | |||
| + | typedef struct lmrcImageCVEInfo { | ||
| + | long sx; /* CVE domain size. */ | ||
| + | long sy; /* Apr.30,1996 */ | ||
| + | long sz; | ||
| + | } lmrcImageCVEInfo; | ||
| + | |||
| + | typedef struct lmrcImageTfunctionInfo { | ||
| + | long sx; /* Tfunction domain size. */ | ||
| + | long sy; /* June 11,1996 */ | ||
| + | long sz; | ||
| + | } lmrcImageTfunctionInfo; | ||
| + | |||
| + | typedef struct lmrcImageHighlightInfo { | ||
| + | long mode; | ||
| + | float Bias; /* May 1,1996 */ | ||
| + | float Grad; | ||
| + | } lmrcImageHighlightInfo; | ||
| + | |||
| + | typedef struct lmrcImageLowPassFilterInfo | ||
| + | { | ||
| + | long mode; /* June 4,1996 */ | ||
| + | float hvp, width; | ||
| + | } lmrcImageLowPassFilterInfo; | ||
| + | |||
| + | typedef struct lmrcImageHighPassFilterInfo | ||
| + | { | ||
| + | long mode; /* June 5,1996 */ | ||
| + | float hvp, width; | ||
| + | float pathWindowLow; | ||
| + | float pathWindowHigh; | ||
| + | } lmrcImageHighPassFilterInfo; | ||
| + | |||
| + | typedef struct lmrcImageBandPassFilterInfo | ||
| + | { | ||
| + | long mode; /* June 5,1996 */ | ||
| + | float hvl, hvh, wl, wh; | ||
| + | int flagLowWeight; | ||
| + | double lowWeight; | ||
| + | } lmrcImageBandPassFilterInfo; | ||
| + | |||
| + | ===mrcImageDataSet用=== | ||
| + | typedef enum mrcImageDataSetMode { | ||
| + | mrcImageDataSetModeCentre = 0, | ||
| + | mrcImageDataSetModeOrigin = 1 | ||
| + | } mrcImageDataSetMode; | ||
==API== | ==API== | ||
| 行100: | 行489: | ||
extern mrcStatusType mrcHeaderRead(mrcImage* mrc, char* filename, char* message, long mode); | extern mrcStatusType mrcHeaderRead(mrcImage* mrc, char* filename, char* message, long mode); | ||
extern mrcStatusType mrcTailerRead(mrcImage* mrc, char* filename, char* message, long mode); | extern mrcStatusType mrcTailerRead(mrcImage* mrc, char* filename, char* message, long mode); | ||
| + | |||
| + | extern mrcStatusType mrcFileReadGeneral (mrcImage* mrc, char* filename, char* type, char* message, long mode); | ||
| + | extern mrcStatusType mrcImageReadGeneral (mrcImage* mrc, char* filename, char* type, char* message, long mode); | ||
| + | extern mrcStatusType mrcHeaderReadGeneral(mrcImage* mrc, char* filename, char* type, char* message, long mode); | ||
| + | extern mrcStatusType mrcTailerReadGeneral(mrcImage* mrc, char* filename, char* type, char* message, long mode); | ||
| + | extern mrcStatusType mrcFileGeneralListPrint(FILE* fpt); | ||
| + | |||
| + | extern mrcStatusType mrcFileReadFEIextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); | ||
| + | extern mrcStatusType mrcImageReadFEIextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); | ||
| + | extern mrcStatusType mrcHeaderReadFEIextendedMRC(mrcImage* mrc, char* filename, char* message, long mode); | ||
| + | extern mrcStatusType mrcTailerReadFEIextendedMRC(mrcImage* mrc, char* filename, char* message, long mode); | ||
| + | |||
| + | extern mrcStatusType mrcFileReadIMODextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); | ||
| + | extern mrcStatusType mrcImageReadIMODextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); | ||
| + | extern mrcStatusType mrcHeaderReadIMODextendedMRC(mrcImage* mrc, char* filename, char* message, long mode); | ||
| + | extern mrcStatusType mrcTailerReadIMODextendedMRC(mrcImage* mrc, char* filename, char* message, long mode); | ||
=== ファイルの書き出し === | === ファイルの書き出し === | ||
| 行148: | 行553: | ||
====ピクセル単位の画素データの設定==== | ====ピクセル単位の画素データの設定==== | ||
extern void mrcInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, mrcImageParaTypeInteger mode); | extern void mrcInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, mrcImageParaTypeInteger mode); | ||
| − | |||
=== 画像処理一般のライブラリ === | === 画像処理一般のライブラリ === | ||
| 行186: | 行590: | ||
void mrcImageStdDev(mrcImage* sig, mrcImage* avg, mrcImage* avg2, long number); sig:= sqrt(avg2 - avg*avg), at present, avg, avg2 must be given. | void mrcImageStdDev(mrcImage* sig, mrcImage* avg, mrcImage* avg2, long number); sig:= sqrt(avg2 - avg*avg), at present, avg, avg2 must be given. | ||
void mrcImageStdErr(mrcImage* se, mrcImage* avg, mrcImage* avg2, long number); se := sqrt(avg2 - avg*avg)/number, at present, avg, avg2 must be given. | void mrcImageStdErr(mrcImage* se, mrcImage* avg, mrcImage* avg2, long number); se := sqrt(avg2 - avg*avg)/number, at present, avg, avg2 must be given. | ||
| + | |||
| + | ===エンディアン関連=== | ||
| + | extern int mrcImageByteSwap(mrcImage* mrc, long mode); | ||
2014年5月9日 (金) 06:32時点における版
DataManip/mrcImageは、mrcImage型の画像を取り扱うための低水準APIです。
目次
定数
Status Mask
typedef unsigned int mrcStatusMask; typedef unsigned int mrcStatusType;
#define mrcStatusMask_ExitFailure ((mrcStatusMask)0x80000000L) #define mrcStatusMask_Warning ((mrcStatusMask)0x40000000L) #define mrcStatusMask_Information ((mrcStatusMask)0x20000000L) #define mrcStatusMask_Message ((mrcStatusMask)0x10000000L) #define mrcStatusMask_1B ((mrcStatusMask)0x08000000L) #define mrcStatusMask_1A ((mrcStatusMask)0x04000000L) #define mrcStatusMask_19 ((mrcStatusMask)0x02000000L) #define mrcStatusMask_18 ((mrcStatusMask)0x01000000L) #define mrcStatusMask_17 ((mrcStatusMask)0x00800000L) #define mrcStatusMask_16 ((mrcStatusMask)0x00400000L) #define mrcStatusMask_15 ((mrcStatusMask)0x00200000L) #define mrcStatusMask_14 ((mrcStatusMask)0x00100000L) #define mrcStatusMask_ReferMRCInfo ((mrcStatusMask)0x00080000L) #define mrcStatusMask_Mode ((mrcStatusMask)0x00040000L) #define mrcStatusMask_ReferMemory ((mrcStatusMask)0x00020000L) #define mrcStatusMask_ReferFile ((mrcStatusMask)0x00010000L) #define MRC_Status_OK ((mrcStatusType)0x00000000L) #define MRC_FileCanNotOpened ((mrcStatusType)0x00000000L|mrcStatusMask_ReferFile) #define MRC_ImageHeaderCanNotRead ((mrcStatusType)0x00000001L|mrcStatusMask_ReferFile) #define MRC_ImageDataCanNotRead ((mrcStatusType)0x00000002L|mrcStatusMask_ReferFile) #define MRC_ImageHeaderCanNotWrite ((mrcStatusType)0x00000003L|mrcStatusMask_ReferFile) #define MRC_ImageDataCanNotWrite ((mrcStatusType)0x00000004L|mrcStatusMask_ReferFile) #define MRC_FileCanNotClosed ((mrcStatusType)0x00000005L|mrcStatusMask_ReferFile) #define MRC_MemoryNotAllocate ((mrcStatusType)0x00000000L|mrcStatusMask_ReferMemory) #define MRC_ModeNotSupported ((mrcStatusType)0x00000000L|mrcStatusMask_Mode) #define MRC_ModeZNot1FFTMode ((mrcStatusType)0x00000001L|mrcStatusMask_Mode) #define MRC_SizeOfZero ((mrcStatusType)0x00000000L|mrcStatusMask_ReferMRCInfo)
extern char* mrcImageGeneralTypeList[];
MRC Image Header
Header Size
#define MRC_HEADER (1024) #define MRC_TAILER (1024)
Image Data Type
/* for compatibility */ typedef mrcImageParaTypeInteger mrcImageMode; #define MRC_char_image ((mrcImageMode)0) #define MRC_short_image ((mrcImageMode)1) #define MRC_float_image ((mrcImageMode)2) #define MRC_complex_short_ft ((mrcImageMode)3) #define MRC_complex_float_ft ((mrcImageMode)4) #define MRC_long_image ((mrcImageMode)101) #define MRC_double_image ((mrcImageMode)102) #define MRC_complex_long_ft ((mrcImageMode)103) #define MRC_complex_double_ft ((mrcImageMode)104) #define MRC_complex_short_fft ((mrcImageMode)1003) #define MRC_complex_float_fft ((mrcImageMode)1004) #define MRC_complex_long_fft ((mrcImageMode)1103) #define MRC_complex_double_fft ((mrcImageMode)1104) #define MRC_NotSuppotedMode ((mrcImageMode)0xffffffffL) #define mrcCharImage ((mrcImageMode)0) #define mrcShortImage ((mrcImageMode)1) #define mrcFloatImage ((mrcImageMode)2) #define mrcComplexShortFT ((mrcImageMode)3) #define mrcComplexFloatFT ((mrcImageMode)4) #define mrcComplexFloatOneDimFT ((mrcImageMode)5) // Change of IMOD #define mrcUShortImage ((mrcImageMode)6) #define mrcCharImageRGB ((mrcImageMode)16) // Change for IMOD: (6,7) -> (26,27) #define mrcFloatRadonImage ((mrcImageMode)26) #define mrcFloatRadonFT ((mrcImageMode)27) #define mrcLongImage ((mrcImageMode)101) #define mrcDoubleImage ((mrcImageMode)102) #define mrcComplexLongFT ((mrcImageMode)103) #define mrcComplexDoubleFT ((mrcImageMode)104) #define mrcComplexShortFFT ((mrcImageMode)1003) #define mrcComplexFloatFFT ((mrcImageMode)1004) #define mrcComplexLongFFT ((mrcImageMode)1103) #define mrcComplexDoubleFFT ((mrcImageMode)1104) #define mrcNotSuppotedMode ((mrcImageMode)0xffffffffL) #define MRC_MAX_LABEL_N (10) #define MRC_MAX_LABEL_LEN (80) #define MRC_MAX_EXTRA (29) #define MRC_MAX_EXTRA_CCP4 (15)
Tailer
#define mrcImageTailerMode2DProjection 0
画像情報
typedef enum mrcImageInformationMode {
meanOfAll = 0,
meanOfSphereSurface = 1,
meanOfCylinderSurface = 2,
meanOfEdge = 3,
meanOfCentre = 4,
meanOfSparse = 5,
meanOf2DEdgeY = 6,
RMSofAllPixels = 7
} mrcImageInformationMode;
typedef enum mrcPixelDataType {
mrcPixelRePart = 0,
mrcPixelImPart,
mrcPixelMag,
mrcPixelPow,
mrcPixelLogMag,
mrcPixelLogPow,
mrcPixelPhase
} mrcPixelDataType;
typedef enum mrcPixelDataHowToGet {
mrcPixelHowNearest = 0,
mrcPixelHowLinear,
mrcPixelHowCubicConv,
mrcPixelHowPolySig
} mrcPixelDataHowToGet;
構造体
Status Mask
typedef union MRC_Status_t {
mrcStatusType all;
struct Content {
#ifdef M68
unsigned char level;
unsigned char category;
short detail;
#else
short detail;
unsigned char category;
unsigned char level;
#endif
} status;
} MRC_Status_t;
#ifdef M68 typedef int mrcImageParaTypeInteger; #else typedef int mrcImageParaTypeInteger; #endif
typedef float mrcImageParaTypeReal; typedef unsigned char mrcImageParaTypeCharacter;
typedef struct mrcImageParaTypeIntegerCoord {
mrcImageParaTypeInteger x;
mrcImageParaTypeInteger y;
mrcImageParaTypeInteger z;
} mrcImageParaTypeIntegerCoord;
typedef struct mrcImageParaTypeRealCoord {
mrcImageParaTypeReal x;
mrcImageParaTypeReal y;
mrcImageParaTypeReal z;
} mrcImageParaTypeRealCoord;
MRC Image Header
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;
/* For CCP4 2000 : Current New */
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 MARCHST;
mrcImageParaTypeReal ARMS;
mrcImageParaTypeInteger LabelN;
char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN];
} _mrcImageHeaderCCP4;
/* For IMOD: Current New */
typedef struct _mrcImageHeaderIMOD {
mrcImageParaTypeIntegerCoord N; /* Data Numbers */
mrcImageMode Mode; /* Data Type */
mrcImageParaTypeIntegerCoord StartN; /* First in map */
mrcImageParaTypeIntegerCoord M; /* Number of Intervals */
mrcImageParaTypeRealCoord Length; /* PixelSize=Len/M: 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 extended header */
short creatid; /* Flag for Skew transformation */
short extra1[15]; /* Flag for Skew transformation */
short nint;
short nreal; /*l Skew matrix S */
mrcImageParaTypeReal extra2[5]; /* Extra, user defined storage space */
mrcImageParaTypeInteger imodStamp;
mrcImageParaTypeInteger imodFlags;
short idtype;
short lnes;
short nd1;
short nd2;
short vd1;
short vd2;
mrcImageParaTypeReal tiltangles[6]; /* Extra, user defined storage space */
mrcImageParaTypeReal xorg; /* Extra, user defined storage space */
mrcImageParaTypeReal yorg; /* Extra, user defined storage space */
mrcImageParaTypeReal zorg; /* Extra, user defined storage space */
mrcImageParaTypeCharacter MAP[4];
mrcImageParaTypeInteger MARCHST;
mrcImageParaTypeReal ARMS;
mrcImageParaTypeInteger LabelN;
char Label[MRC_MAX_LABEL_N][MRC_MAX_LABEL_LEN];
} _mrcImageHeaderIMOD;
typedef union mrcImageHeader {
unsigned char All[MRC_HEADER];
mrcImageParaTypeInteger Int[MRC_HEADER/4];
mrcImageParaTypeReal Real[MRC_HEADER/4];
_mrcImageHeader Cont;
_mrcImageHeaderCCP4 ContCCP4;
_mrcImageHeaderIMOD ContIMOD;
} mrcImageHeader;
#define FEI_EXTENDED_HEADER_EACH (128)
typedef struct _FEIextendedHeader {
mrcImageParaTypeReal aTilt; // Alpha tilt, in degrees
mrcImageParaTypeReal bTilt; // Beta tilt, in degrees
mrcImageParaTypeReal xStage; // Stage x position.
// Normally in SI units (meters),
// but some older files may be in micrometers.
// Check by looking at values for x,y,z.
// If one of these exceeds 1, it will be micrometers.
mrcImageParaTypeReal yStage; // Stage y position. For testing of units see x_stage.
mrcImageParaTypeReal zStage; // Stage z position. For testing of units see x_stage.
mrcImageParaTypeReal xShift; // Image shift x. For testing of units see x_stage.
mrcImageParaTypeReal yShift; // Image shift y. For testing of units see x_stage.
mrcImageParaTypeReal defocus;
mrcImageParaTypeReal expTime;
mrcImageParaTypeReal mean;
mrcImageParaTypeReal tiltAxis;
mrcImageParaTypeReal pixelSize;
mrcImageParaTypeReal magnification;
mrcImageParaTypeReal ht;
mrcImageParaTypeReal binning;
mrcImageParaTypeReal appliedDefocus;
mrcImageParaTypeReal reminder[FEI_EXTENDED_HEADER_EACH/4-16];
} _FEIextendedHeader;
typedef union FEIextendedHeader {
mrcImageParaTypeReal Real[FEI_EXTENDED_HEADER_EACH/4];
_FEIextendedHeader Cont;
} FEIextendedHeader;
Tailer
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;
typedef char mrcImageSymmetryOperator;
mrcImage Structure
typedef struct mrcImage {
mrcImageHeader Header;
size_t BytePerImage;
mrcImageParaTypeInteger BytePerBand;
mrcImageParaTypeInteger BandPerPixel;
size_t PixelPerImage;
mrcStatusType status;
char* Image;
unsigned char* ImageCharImage;
unsigned short* ImageShortImage;
unsigned long* ImageLongImage;
float* ImageFloatImage;
double* ImageDoubleImage;
/* Tailer */
mrcImageTailer* Tailer;
mrcImageParaTypeInteger numTailer;
/* FEIextendedHeader */
FEIextendedHeader* FEIHeader;
mrcImageParaTypeInteger numFEIHeader;
/* Dummy */
char* dummyHeader;
mrcImageParaTypeInteger dummyHeaderByte;
/* Swap Bytes */
mrcImageParaTypeInteger flagByteSwap;
/* flag CCP4-2000 */
mrcImageParaTypeInteger flagCCP4;
mrcImageParaTypeInteger ImageOffset;
mrcImageSymmetryOperator* SymmetryOperator;
} mrcImage;
typedef struct mrcImageInformation {
double mean;
double rootMeanSquare;
double meanOfSphereSurface;
double sdOfSphereSurface;
double seOfSphereSurface;
double meanOfCylinderSurface;
double sdOfCylinderSurface;
double seOfCylinderSurface;
double meanOfEdge;
double sdOfEdge;
double seOfEdge;
double max;
mrcImageParaTypeRealCoord maxCoord;
double min;
mrcImageParaTypeRealCoord minCoord;
double sd;
double se;
double rmax;
long flagrmax;
double RMS; /* Root mean square */
int mode;
/* For Search Area */
int flagXrange;
int flagYrange;
int flagZrange;
double XrangeMin;
double XrangeMax;
double YrangeMin;
double YrangeMax;
double ZrangeMin;
double ZrangeMax;
int flagCentre;
double CentreX;
double CentreY;
double CentreZ;
} mrcImageInformation;
#define HeaderN Header.Cont.N #define HeaderMode Header.Cont.Mode #define HeaderStartN Header.Cont.StartN #define HeaderM Header.Cont.M #define HeaderLength Header.Cont.Length #define HeaderAlpha Header.Cont.Alpha #define HeaderBeta Header.Cont.Beta #define HeaderGamma Header.Cont.Gamma #define HeaderMAPC Header.Cont.MAPC #define HeaderMAPR Header.Cont.MAPR #define HeaderMAPS Header.Cont.MAPS #define HeaderAMin Header.Cont.AMin #define HeaderAMax Header.Cont.AMax #define HeaderAMean Header.Cont.AMean #define HeaderISPG Header.Cont.ISPG #define HeaderNSYMBT Header.Cont.NSYMBT #define HeaderLSKFLG Header.ContCCP4.LSKFLG #define HeaderEXTRA Header.Cont.EXTRA #define HeaderOriginX Header.Cont.OriginX #define HeaderOriginY Header.Cont.OriginY #define HeaderLabelN Header.Cont.LabelN #define HeaderLabel Header.Cont.Label
画像情報
typedef struct lmrcImageSmoothingInfo {
long mode;
mrcImageParaTypeReal sx; /* Filter kernel size */
mrcImageParaTypeReal sy;
mrcImageParaTypeReal sz;
double sigma; /* for Lee-Sigma filter */
} lmrcImageSmoothingInfo;
typedef struct lmrcImageCVEInfo {
long sx; /* CVE domain size. */
long sy; /* Apr.30,1996 */
long sz;
} lmrcImageCVEInfo;
typedef struct lmrcImageTfunctionInfo {
long sx; /* Tfunction domain size. */
long sy; /* June 11,1996 */
long sz;
} lmrcImageTfunctionInfo;
typedef struct lmrcImageHighlightInfo {
long mode;
float Bias; /* May 1,1996 */
float Grad;
} lmrcImageHighlightInfo;
typedef struct lmrcImageLowPassFilterInfo
{
long mode; /* June 4,1996 */
float hvp, width;
} lmrcImageLowPassFilterInfo;
typedef struct lmrcImageHighPassFilterInfo
{
long mode; /* June 5,1996 */
float hvp, width;
float pathWindowLow;
float pathWindowHigh;
} lmrcImageHighPassFilterInfo;
typedef struct lmrcImageBandPassFilterInfo
{
long mode; /* June 5,1996 */
float hvl, hvh, wl, wh;
int flagLowWeight;
double lowWeight;
} lmrcImageBandPassFilterInfo;
mrcImageDataSet用
typedef enum mrcImageDataSetMode {
mrcImageDataSetModeCentre = 0,
mrcImageDataSetModeOrigin = 1
} mrcImageDataSetMode;
API
初期化
extern mrcStatusType mrcInit(mrcImage* mrc, char* filaname); extern mrcStatusType mrcDefaultHeaderValueSet(mrcImage* mrc); extern mrcStatusType mrcHiddenDataSet(mrcImage* mrc, long mode); extern void mrcImageFree(mrcImage* mrc, char* message); extern void mrcTailerInit(mrcImage* mrc, long mode); extern void mrcTailerCopy(mrcImage* dst, mrcImage* src, long mode);
ファイルの読み込み
extern mrcStatusType mrcFileRead (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcImageRead (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcHeaderRead(mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcTailerRead(mrcImage* mrc, char* filename, char* message, long mode);
extern mrcStatusType mrcFileReadGeneral (mrcImage* mrc, char* filename, char* type, char* message, long mode); extern mrcStatusType mrcImageReadGeneral (mrcImage* mrc, char* filename, char* type, char* message, long mode); extern mrcStatusType mrcHeaderReadGeneral(mrcImage* mrc, char* filename, char* type, char* message, long mode); extern mrcStatusType mrcTailerReadGeneral(mrcImage* mrc, char* filename, char* type, char* message, long mode); extern mrcStatusType mrcFileGeneralListPrint(FILE* fpt);
extern mrcStatusType mrcFileReadFEIextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcImageReadFEIextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcHeaderReadFEIextendedMRC(mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcTailerReadFEIextendedMRC(mrcImage* mrc, char* filename, char* message, long mode);
extern mrcStatusType mrcFileReadIMODextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcImageReadIMODextendedMRC (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcHeaderReadIMODextendedMRC(mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcTailerReadIMODextendedMRC(mrcImage* mrc, char* filename, char* message, long mode);
ファイルの書き出し
extern mrcStatusType mrcFileWrite (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcImageWrite (mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcHeaderWrite(mrcImage* mrc, char* filename, char* message, long mode); extern mrcStatusType mrcTailerWrite(mrcImage* mrc, char* filename, char* message, long mode); #define mrcFileWriteModeGet(x) BYTE4GETBYTE(x,0) #define mrcImageWriteModeGet(x) BYTE4GETBYTE(x,1) #define mrcHeaderWriteModeGet(x) BYTE4GETBYTE(x,2) #define mrcTailerWriteModeGet(x) BYTE4GETBYTE(x,3) #define mrcFileWriteMode_InfoPrint 1 #define mrcFileWriteMode_NoCallForStatData 2 extern mrcStatusType mrcFileWriteLowerResolution(mrcImage* mrc, char* filename, char* message, long sample , long mode);
画素のデータの取得
ピクセル単位での画素データの取得
extern double mrcPixelDataGet(mrcImage* mrc,
mrcImageParaTypeReal x /* Pixel Unit */,
mrcImageParaTypeReal y /* Pixel Unit */,
mrcImageParaTypeReal z /* Pixel Unit */,
double* data,
mrcPixelDataType mode,
mrcPixelDataHowToGet how);
オングストローム単位での画素データの取得
extern double mrcImageDataGetbyAU(mrcImage* mrc,
mrcImageParaTypeReal x /* Angstrom */,
mrcImageParaTypeReal y /* Angstrom */,
mrcImageParaTypeReal z /* Angstrom */,
double* data,
mrcPixelDataType mode,
mrcPixelDataHowToGet how);
インライン型関数の画素データの取得
extern inline double mrcPixelDataGetFloatImage(mrcImage* img,
mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
extern inline double mrcPixelDataGetFloatFTRe(mrcImage* fft,
mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
extern inline double mrcPixelDataGetFloatFTIm(mrcImage* fft,
mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z)
画素のデータの設定
ピクセル単位の画素データの設定
extern void mrcInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, mrcImageParaTypeInteger mode);
画像処理一般のライブラリ
mrcImageOperation 画像の演算
単項演算
加算
void lmrcImageAddedByReal(mrcImage* img, double d); img := img+d
減算
void lmrcImageMeanSubtraction(mrcImage* out, mrcImage* in) out := in - mean void lmrcImageMeanSubtraction(mrcImage* out, mrcImage* in) out := in - mean void lmrcImageSubtraction(mrcImage* out, mrcImage* in, double value) out := in - value
除算
void lmrcImageDevidedByReal(mrcImage* img, double d); img := img/d void lmrcImageDevidedByRealForOnlyPositive(mrcImage* img, double d); img := img/d, if img>=0, else img:=img;
絶対値
void ImageAbs(mrcImage* out ,mrcImage* in); out := fabs(in);
それ以外
void lmrcImageSquare(mrcImage* in); in := in*in void lmrcImageRoot(mrcImage* in ,double eps); in := sqrt(in), if in>eps else in:=0
2項演算
連続加算
void lmrcImageAdd(mrcImage* img2, mrcImage* img1, long* number); img2 := img2 + img1, number++
減算
void lmrcImageSubtractionCalc(mrcImage* out, mrcImage* in1, mrcImage* in2) out := in1 - in2 void llmrcImageSub(mrcImage*out ,mrcImage* in1 ,mrcImage* in2) out : = in1 - in2(上記と同じ機能) void lmrcSQRImageAdd(mrcImage* img2, mrcImage* img1, long* number); img2 := img2 + img1*img1, number++ void lmrcImageDevidedByImage(mrcImage* img, mrcImage* i1, mrcImage* i2); img := i1/i2, 0 := 0/0, 0 := x/0 void lmrcImagetMapForZero(mrcImage* t, mrcImage* avg, mrcImage* se); t := avg/se, at present, avg, se must be given. void lmrcImageSN(mrcImage* sn, mrcImage* avg, mrcImage* sig); sn := avg/sig, at present, avg, sig must be given. void mrcImageStdDev(mrcImage* sig, mrcImage* avg, mrcImage* avg2, long number); sig:= sqrt(avg2 - avg*avg), at present, avg, avg2 must be given. void mrcImageStdErr(mrcImage* se, mrcImage* avg, mrcImage* avg2, long number); se := sqrt(avg2 - avg*avg)/number, at present, avg, avg2 must be given.
エンディアン関連
extern int mrcImageByteSwap(mrcImage* mrc, long mode);