「mrcImage(API)」の版間の差分
(→lmrcImageFourierPowerSpectrum) |
|||
(同じ利用者による、間の36版が非表示) | |||
行45: | 行45: | ||
ヘッダサイズ | ヘッダサイズ | ||
#define MRC_HEADER (1024) | #define MRC_HEADER (1024) | ||
− | + | テイラサイズ | |
#define MRC_TAILER (1024) | #define MRC_TAILER (1024) | ||
− | ==== | + | ====画像モード==== |
=====mrcファイル互換のための定義===== | =====mrcファイル互換のための定義===== | ||
typedef mrcImageParaTypeInteger mrcImageMode; | typedef mrcImageParaTypeInteger mrcImageMode; | ||
行114: | 行114: | ||
===ピクセルデータ=== | ===ピクセルデータ=== | ||
− | データの種類 | + | ====データの種類==== |
typedef enum mrcPixelDataType { | typedef enum mrcPixelDataType { | ||
mrcPixelRePart = 0, | mrcPixelRePart = 0, | ||
行170: | 行170: | ||
<br> | <br> | ||
− | [[補間]]方法 | + | ====[[補間]]方法==== |
typedef enum mrcPixelDataHowToGet { | typedef enum mrcPixelDataHowToGet { | ||
mrcPixelHowNearest = 0, | mrcPixelHowNearest = 0, | ||
行182: | 行182: | ||
<tr> | <tr> | ||
<th>モード</th> | <th>モード</th> | ||
+ | <th>設定値</th> | ||
<th>[[補間]]方法</th> | <th>[[補間]]方法</th> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>mrcPixelHowNearest</td> | <td>mrcPixelHowNearest</td> | ||
+ | <td>0</td> | ||
<td>最近傍法</td> | <td>最近傍法</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>mrcPixelHowLinear</td> | <td>mrcPixelHowLinear</td> | ||
+ | <td>1</td> | ||
<td>線形補間法</td> | <td>線形補間法</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>mrcPixelHowCubicConv</td> | <td>mrcPixelHowCubicConv</td> | ||
+ | <td>2</td> | ||
<td>3次補間法</td> | <td>3次補間法</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
<td>mrcPixelHowPolySig</td> | <td>mrcPixelHowPolySig</td> | ||
+ | <td>3</td> | ||
<td>2次曲面補間法</td> | <td>2次曲面補間法</td> | ||
</tr> | </tr> | ||
+ | </table> | ||
+ | <br> | ||
+ | |||
+ | ====mrcImageDataSetMode==== | ||
+ | typedef enum mrcImageDataSetMode { | ||
+ | mrcImageDataSetModeCentre = 0, | ||
+ | mrcImageDataSetModeOrigin = 1 | ||
+ | } mrcImageDataSetMode; | ||
+ | |||
+ | [[mrcImage(API)#画素データの設定|mrcImageDataSet]]のモードとして使用します。 | ||
+ | <table border="1"> | ||
+ | <tr> | ||
+ | <th> | ||
+ | 定数名 | ||
+ | </th> | ||
+ | <th> | ||
+ | 値 | ||
+ | </th> | ||
+ | <th> | ||
+ | 説明 | ||
+ | </th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> | ||
+ | mrcImageDataSetModeCentre | ||
+ | </td> | ||
+ | <td> | ||
+ | 0 | ||
+ | </td> | ||
+ | <td> | ||
+ | 画像の中心から取得する | ||
+ | </td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td> | ||
+ | mrcImageDataSetModeOrigin | ||
+ | </td> | ||
+ | <td> | ||
+ | 1 | ||
+ | </td> | ||
+ | <td> | ||
+ | 原点から取得する | ||
+ | </td> | ||
+ | </tr> | ||
</table> | </table> | ||
<br> | <br> | ||
行307: | 行356: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>[[mrcImage(API)# | + | <td>[[mrcImage(API)#テイラ情報|テイラ情報]]</td> |
<td>Tailer, numTailer</td> | <td>Tailer, numTailer</td> | ||
<td>角度情報など</td> | <td>角度情報など</td> | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td>[[mrcImage#FEI|FEIヘッダ]]</td> | + | <td>[[mrcImage(API)#FEI|FEIヘッダ]]</td> |
<td>FEIHeader, numFEIHeader</td> | <td>FEIHeader, numFEIHeader</td> | ||
<td>FEI用の拡張ヘッダ</td> | <td>FEI用の拡張ヘッダ</td> | ||
行498: | 行547: | ||
} FEIextendedHeader; | } FEIextendedHeader; | ||
− | ==== | + | ====テイラ情報==== |
typedef struct _mrcImageTailer { | typedef struct _mrcImageTailer { | ||
char Code[4]; | char Code[4]; | ||
行518: | 行567: | ||
typedef char mrcImageSymmetryOperator; | typedef char mrcImageSymmetryOperator; | ||
− | === | + | ===画像の統計データ=== |
− | + | mrcImageの統計データを格納する構造体です。<br> | |
− | + | データは[[mrcImage(API)#統計データの取得|mrcImageInformation(API)]]から取得して、主に入力情報として使用します。<br> | |
typedef struct mrcImageInformation { | typedef struct mrcImageInformation { | ||
double mean; | double mean; | ||
行561: | 行610: | ||
} mrcImageInformation; | } mrcImageInformation; | ||
− | ==== | + | ===API毎の設定ファイル=== |
− | [[ | + | ====lmrcImageSmoothingInfo==== |
+ | [[mrcImage(API)#lmrcImageSmoothing|lmrcImageSmoothing]]の設定データとして使用します。 | ||
typedef struct lmrcImageSmoothingInfo { | typedef struct lmrcImageSmoothingInfo { | ||
long mode; | long mode; | ||
行570: | 行620: | ||
double sigma; /* for Lee-Sigma filter */ | double sigma; /* for Lee-Sigma filter */ | ||
} lmrcImageSmoothingInfo; | } lmrcImageSmoothingInfo; | ||
− | + | ||
− | [[ | + | ====lmrcImageCVEInfo==== |
+ | [[mrcImage(API)#lmrcImageCVE|lmrcImageCVE]]の設定データとして使用します。 | ||
typedef struct lmrcImageCVEInfo { | typedef struct lmrcImageCVEInfo { | ||
long sx; /* CVE domain size. */ | long sx; /* CVE domain size. */ | ||
行577: | 行628: | ||
long sz; | long sz; | ||
} lmrcImageCVEInfo; | } lmrcImageCVEInfo; | ||
− | + | ||
− | [[ | + | ====lmrcImageTfunctionInfo==== |
+ | [[mrcImage(API)#lmrcImageTfunction|lmrcImageTfunction]]の設定データとして使用します。 | ||
typedef struct lmrcImageTfunctionInfo { | typedef struct lmrcImageTfunctionInfo { | ||
long sx; /* Tfunction domain size. */ | long sx; /* Tfunction domain size. */ | ||
行585: | 行637: | ||
} lmrcImageTfunctionInfo; | } lmrcImageTfunctionInfo; | ||
− | [[ | + | ====lmrcImageHighlightInfo==== |
+ | [[mrcImage(API)#lmrcImageHighlighting|lmrcImageHighlighting]]の設定データとして使用します。 | ||
typedef struct lmrcImageHighlightInfo { | typedef struct lmrcImageHighlightInfo { | ||
long mode; | long mode; | ||
行592: | 行645: | ||
} lmrcImageHighlightInfo; | } lmrcImageHighlightInfo; | ||
− | [[ | + | ====lmrcImageLowPassFilterInfo==== |
+ | [[mrcImage(API)#lmrcImageLowPassFilter|lmrcImageLowPassFilter]]の設定データとして使用します。 | ||
typedef struct lmrcImageLowPassFilterInfo | typedef struct lmrcImageLowPassFilterInfo | ||
{ | { | ||
行599: | 行653: | ||
} lmrcImageLowPassFilterInfo; | } lmrcImageLowPassFilterInfo; | ||
− | [[ | + | ====lmrcImageHighPassFilterInfo==== |
+ | [[mrcImage(API)#lmrcImageHighPassFilter|lmrcImageHighPassFilter]]の設定データとして使用します。 | ||
typedef struct lmrcImageHighPassFilterInfo | typedef struct lmrcImageHighPassFilterInfo | ||
{ | { | ||
行608: | 行663: | ||
} lmrcImageHighPassFilterInfo; | } lmrcImageHighPassFilterInfo; | ||
− | [[ | + | ====lmrcImageBandPassFilterInfo==== |
+ | [[mrcImage(API)#lmrcImageBandPassFilter|lmrcImageBandPassFilter]]の設定データとして使用します。 | ||
typedef struct lmrcImageBandPassFilterInfo | typedef struct lmrcImageBandPassFilterInfo | ||
{ | { | ||
行617: | 行673: | ||
} lmrcImageBandPassFilterInfo; | } lmrcImageBandPassFilterInfo; | ||
− | === | + | ====lmrcImageMultiCTFCompensationInfo==== |
− | + | [[mrcImage(API)#lmrcImageMultiCTFCompensation|lmrcImageMultiCTFCompensation]]の設定データとして使用します。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
typedef enum lmrcImageMultiCTFCompensationSolventFlatteningMode { | typedef enum lmrcImageMultiCTFCompensationSolventFlatteningMode { | ||
lmrcImageMultiCTFCompensationSolventFlatteningModeDensityPeakIsSolvent=0, | lmrcImageMultiCTFCompensationSolventFlatteningModeDensityPeakIsSolvent=0, | ||
行640: | 行691: | ||
} lmrcImageMultiCTFCompensationInfo; | } lmrcImageMultiCTFCompensationInfo; | ||
− | === | + | ====lmrcImageCTFSNInfo==== |
+ | [[mrcImage(API)#lmrcImageCTFSN|lmrcImageCTFSN]]の設定データとして使用します。 | ||
typedef struct lmrcImageCTFSNInfo | typedef struct lmrcImageCTFSNInfo | ||
{ | { | ||
行647: | 行699: | ||
} lmrcImageCTFSNInfo; | } lmrcImageCTFSNInfo; | ||
− | === | + | ====lmrcImageFourierPowerSpectrumInfo==== |
+ | [[mrcImage(API)#lmrcImageFourierPowerSpectrum|lmrcImageFourierPowerSpectrum]]の設定データとして使用します。 | ||
typedef struct mrcImageFourierPowerSpectrum | typedef struct mrcImageFourierPowerSpectrum | ||
{ | { | ||
行658: | 行711: | ||
double dX, dY, dZ; | double dX, dY, dZ; | ||
} lmrcImageFourierPowerSpectrumInfo; | } lmrcImageFourierPowerSpectrumInfo; | ||
− | |||
==API== | ==API== | ||
行664: | 行716: | ||
====画像データの初期化==== | ====画像データの初期化==== | ||
extern mrcStatusType mrcInit(mrcImage* mrc, char* filaname); | extern mrcStatusType mrcInit(mrcImage* mrc, char* filaname); | ||
− | ヘッダ情報(画像モードやサイズ) | + | ヘッダ情報(画像モードやサイズ)を別のmrcファイルから読み出す場合はfilenameにファイル名を指定し、NULLの場合はデフォルト設定となります。画像データをmrcのメンバーImageに新規作成し, ポインタをImageXXXXImage(XXXX: Char, Shortなど)に格納されます。<br> |
+ | <br> | ||
+ | ※ このAPIは無条件でmrc->Imageにメモリを確保しますので、mrc->Imageが空であることが保証されるときのみ使用して下さい。(空でない場合は[[mrcImage(API)#画像データの解放|mrcImageFree]]でメモリを解放してから確認します。) | ||
====ヘッダ情報の初期化==== | ====ヘッダ情報の初期化==== | ||
行673: | 行727: | ||
extern mrcStatusType mrcHiddenDataSet(mrcImage* mrc, long mode); | extern mrcStatusType mrcHiddenDataSet(mrcImage* mrc, long mode); | ||
− | ==== | + | ====テイラ情報の初期化==== |
extern void mrcTailerInit(mrcImage* mrc, long mode); | extern void mrcTailerInit(mrcImage* mrc, long mode); | ||
===画像データの解放=== | ===画像データの解放=== | ||
extern void mrcImageFree(mrcImage* mrc, char* message); | extern void mrcImageFree(mrcImage* mrc, char* message); | ||
− | 画像データの実体(Image)を解放し、Image, ImageXXXXImage(XXXX: Char, Shortなど) | + | 画像データの実体(Image)を解放し、Image, ImageXXXXImage(XXXX: Char, Shortなど)をNULLポインタとします。 |
=== ファイルの読み込み === | === ファイルの読み込み === | ||
+ | filenameを読み出して、mrcへ格納する。 | ||
extern mrcStatusType mrcFileRead (mrcImage* mrc, char* filename, char* message, 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 mrcImageRead (mrcImage* mrc, char* filename, char* message, long mode); | ||
extern mrcStatusType mrcHeaderRead(mrcImage* mrc, char* filename, char* message, long mode); | extern mrcStatusType mrcHeaderRead(mrcImage* mrc, char* filename, char* message, long mode); | ||
行719: | 行776: | ||
message: エラーメッセージ用<br> | message: エラーメッセージ用<br> | ||
− | mode: +1: 書き出しデータを表示する, +2: | + | mode: +1: 書き出しデータを表示する, +2: [[mrcImage(API)#画素データの統計処理|統計データを計算]]しない |
====低分解能での書き出し==== | ====低分解能での書き出し==== | ||
行726: | 行783: | ||
===データコピー=== | ===データコピー=== | ||
− | 画像データのコピー | + | src -> dst へコピーする |
+ | ====画像データのコピー==== | ||
extern void lmrcImageCopy(mrcImage* dst, mrcImage* src, mrcImageParaTypeRealCoord to); | extern void lmrcImageCopy(mrcImage* dst, mrcImage* src, mrcImageParaTypeRealCoord to); | ||
− | + | to: オフセット(座標) | |
+ | |||
+ | ====テイラ情報のコピー==== | ||
extern void mrcTailerCopy(mrcImage* dst, mrcImage* src, long mode); | extern void mrcTailerCopy(mrcImage* dst, mrcImage* src, long mode); | ||
+ | mode: +1: 新規作成してコピーする, それ以外: そのままコピーする | ||
===画像モードのチェック=== | ===画像モードのチェック=== | ||
行737: | 行798: | ||
extern int IsFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); | extern int IsFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); | ||
extern int IsFFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); | extern int IsFFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); | ||
+ | 戻り値: 0: 該当しない, 1: 該当する | ||
=== 画素データの取得 === | === 画素データの取得 === | ||
行747: | 行809: | ||
mrcPixelDataType mode, | mrcPixelDataType mode, | ||
mrcPixelDataHowToGet how); | mrcPixelDataHowToGet how); | ||
− | 座標(x, y, z) | + | 座標(x, y, z)におけるデータを取得し、dataに格納されます。<br> |
− | [[mrcImage(API)# | + | [[mrcImage(API)#ピクセルデータ|mode及びhow]]により取得するデータが異なります。<br> |
====オングストローム単位での画素データの取得==== | ====オングストローム単位での画素データの取得==== | ||
行773: | 行835: | ||
extern void mrcInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, mrcImageParaTypeInteger mode); | extern void mrcInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, mrcImageParaTypeInteger mode); | ||
− | ==== | + | ====画素情報の設定==== |
extern void mrcImageInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, long mode); | extern void mrcImageInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, long mode); | ||
− | ==== | + | ====フィラメントデータの作成==== |
+ | 入力ファイルinを基にフィラメントデータoutを作成する。<br> | ||
+ | [[mrcImage(API)#mrcImageDataSetMode|mrcImageDataSetMode]](mode)によって、inの取得位置が異なることに注意。 | ||
extern void mrcImageDataSet(mrcImage* out, | extern void mrcImageDataSet(mrcImage* out, | ||
mrcImage* in, | mrcImage* in, | ||
行804: | 行868: | ||
static inline void mrcPixelDataSetFloatImage(mrcImage* img, | static inline void mrcPixelDataSetFloatImage(mrcImage* img, | ||
mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data) | mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data) | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
static inline void mrcPixelDataSetFloatFTRe(mrcImage* fft, | static inline void mrcPixelDataSetFloatFTRe(mrcImage* fft, | ||
mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data) | mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data) | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
static inline void mrcPixelDataSetFloatFTIm(mrcImage* fft, | static inline void mrcPixelDataSetFloatFTIm(mrcImage* fft, | ||
mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data) | mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data) | ||
− | + | ||
− | + | ===画素データの統計処理=== | |
− | + | 最大値、最小値、平均値を算出(mrcのヘッダ情報に格納する) | |
− | + | ||
extern void mrcStatDataSet(mrcImage* mrc, mrcImageParaTypeInteger mode); | extern void mrcStatDataSet(mrcImage* mrc, mrcImageParaTypeInteger mode); | ||
行841: | 行898: | ||
void ImageAbs(mrcImage* out ,mrcImage* in); out := fabs(in); | void ImageAbs(mrcImage* out ,mrcImage* in); out := fabs(in); | ||
− | ====== | + | ======2乗、平方根====== |
void lmrcImageSquare(mrcImage* in); in := in*in | void lmrcImageSquare(mrcImage* in); in := in*in | ||
void lmrcImageRoot(mrcImage* in ,double eps); in := sqrt(in), if in>eps else in:=0 | void lmrcImageRoot(mrcImage* in ,double eps); in := sqrt(in), if in>eps else in:=0 | ||
行887: | 行944: | ||
====統計データの取得==== | ====統計データの取得==== | ||
+ | [[mrcImage]]データから[[mrcImage(API)#画像の統計データ|画像の統計データ]]を取得する。 | ||
extern void lmrcImageInformation(mrcImageInformation* info, mrcImage* img); | extern void lmrcImageInformation(mrcImageInformation* info, mrcImage* img); | ||
− | ==== | + | ====画素データ変換==== |
− | + | 画素データをint型に変換する | |
extern void lmrcImageToIntImage(mrcImage* dst, mrcImage* src, mrcImageParaTypeInteger mode); | extern void lmrcImageToIntImage(mrcImage* dst, mrcImage* src, mrcImageParaTypeInteger mode); | ||
行930: | 行988: | ||
====mrcImageCheckFFT==== | ====mrcImageCheckFFT==== | ||
+ | 入力ファイルinのモードに関係なくFFT画像をrefへ出力します。 | ||
extern void lmrcImageCheckFFT(mrcImage* in, mrcImage* ref); | extern void lmrcImageCheckFFT(mrcImage* in, mrcImage* ref); | ||
====lmrcImageSmoothing==== | ====lmrcImageSmoothing==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageSmoothingInfo|lmrcImageSmoothingInfo]]を使用します。 | ||
extern void lmrcImageSmoothingModeInfo(FILE* fpt); | extern void lmrcImageSmoothingModeInfo(FILE* fpt); | ||
extern void lmrcImageSmoothing(mrcImage* dst, mrcImage* src, lmrcImageSmoothingInfo* info, long mode); | extern void lmrcImageSmoothing(mrcImage* dst, mrcImage* src, lmrcImageSmoothingInfo* info, long mode); | ||
====lmrcImageCVE==== | ====lmrcImageCVE==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageCVEInfo|lmrcImageCVEInfo]]を使用します。 | ||
extern void lmrcImageCVE(mrcImage* dst, mrcImage* src, lmrcImageCVEInfo* info); | extern void lmrcImageCVE(mrcImage* dst, mrcImage* src, lmrcImageCVEInfo* info); | ||
====lmrcImageTfunction==== | ====lmrcImageTfunction==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageTfunctionInfo|lmrcImageTfunctionInfo]]を使用します。 | ||
extern void lmrcImageTfunction(mrcImage* dst, mrcImage* src, lmrcImageTfunctionInfo* info, long mode); | extern void lmrcImageTfunction(mrcImage* dst, mrcImage* src, lmrcImageTfunctionInfo* info, long mode); | ||
====lmrcImageHighlighting==== | ====lmrcImageHighlighting==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageHighlightInfo|lmrcImageHighlightInfo]]を使用します。 | ||
extern void lmrcImageHighlightingInfoPrint(FILE* fpt); | extern void lmrcImageHighlightingInfoPrint(FILE* fpt); | ||
extern void lmrcImageHighlighting(mrcImage* dst, mrcImage* src, lmrcImageHighlightInfo* info); | extern void lmrcImageHighlighting(mrcImage* dst, mrcImage* src, lmrcImageHighlightInfo* info); | ||
====lmrcImageLowPassFilter==== | ====lmrcImageLowPassFilter==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageLowPassFilterInfo|lmrcImageLowPassFilterInfo]]を使用します。 | ||
extern void lmrcImageLowPassFilter(mrcImage* dst, mrcImage* src, lmrcImageLowPassFilterInfo* info, long mode); | extern void lmrcImageLowPassFilter(mrcImage* dst, mrcImage* src, lmrcImageLowPassFilterInfo* info, long mode); | ||
====lmrcImageHighPassFilter==== | ====lmrcImageHighPassFilter==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageHighPassFilterInfo|lmrcImageHighPassFilterInfo]]を使用します。 | ||
extern void lmrcImageHighPassFilter(mrcImage* dst, mrcImage* src, lmrcImageHighPassFilterInfo* info, long mode); | extern void lmrcImageHighPassFilter(mrcImage* dst, mrcImage* src, lmrcImageHighPassFilterInfo* info, long mode); | ||
====lmrcImageBandPassFilter==== | ====lmrcImageBandPassFilter==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageBandPassFilterInfo|lmrcImageBandPassFilterInfo]]を使用します。 | ||
extern void lmrcImageBandPassFilter(mrcImage* dst, mrcImage* src, lmrcImageBandPassFilterInfo* info, long mode); | extern void lmrcImageBandPassFilter(mrcImage* dst, mrcImage* src, lmrcImageBandPassFilterInfo* info, long mode); | ||
行966: | 行1,032: | ||
====lmrcImageMultiCTFCompensation==== | ====lmrcImageMultiCTFCompensation==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageMultiCTFCompensationInfo|lmrcImageMultiCTFCompensationInfo]]を使用します。 | ||
extern void lmrcImageMultiCTFCompensationInfoInit(lmrcImageMultiCTFCompensationInfo* info); | extern void lmrcImageMultiCTFCompensationInfoInit(lmrcImageMultiCTFCompensationInfo* info); | ||
extern void lmrcImageMultiCTFCompensationInfoSet(lmrcImageMultiCTFCompensationInfo* info); | extern void lmrcImageMultiCTFCompensationInfoSet(lmrcImageMultiCTFCompensationInfo* info); | ||
行978: | 行1,045: | ||
====lmrcImageCTFSN==== | ====lmrcImageCTFSN==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageCTFSNInfo|lmrcImageCTFSNInfo]]を使用します。 | ||
extern void lmrcImageCTFSN(mrcImage *outMrc, const mrcImage *inMrc, lmrcImageCTFSNInfo *info, long mode); | extern void lmrcImageCTFSN(mrcImage *outMrc, const mrcImage *inMrc, lmrcImageCTFSNInfo *info, long mode); | ||
====lmrcImageFourierPowerSpectrum==== | ====lmrcImageFourierPowerSpectrum==== | ||
+ | 設定データ[[mrcImage(API)#lmrcImageFourierPowerSpectrumInfo|lmrcImageFourierPowerSpectrumInfo]]を使用します。 | ||
extern mrcImageFourierPowerSpectrum lmrcImageFourierPowerSpectrumMakeSpectrum(const mrcImage *inFFT, lmrcImageFourierPowerSpectrumInfo *info); | extern mrcImageFourierPowerSpectrum lmrcImageFourierPowerSpectrumMakeSpectrum(const mrcImage *inFFT, lmrcImageFourierPowerSpectrumInfo *info); | ||
extern void lmrcImageFourierPowerSpectrumDeleteSpectrum(mrcImageFourierPowerSpectrum theSpectrum); | extern void lmrcImageFourierPowerSpectrumDeleteSpectrum(mrcImageFourierPowerSpectrum theSpectrum); | ||
行995: | 行1,064: | ||
extern void lmrcImageRotation2D(mrcImage* dst, mrcImage* src, double angle, mrcPixelDataHowToGet mode); | extern void lmrcImageRotation2D(mrcImage* dst, mrcImage* src, double angle, mrcPixelDataHowToGet mode); | ||
+ | |||
+ | 入力画像srcを角度angleで回転した画像をdstへ格納します。(mode: [[#補間方法]]) | ||
extern void lmrcImageRotation2DPeriodicBoundary(mrcImage* dst, mrcImage* src, double angle, mrcPixelDataHowToGet mode); | extern void lmrcImageRotation2DPeriodicBoundary(mrcImage* dst, mrcImage* src, double angle, mrcPixelDataHowToGet mode); | ||
+ | <br> | ||
====mrcImageSectionGet==== | ====mrcImageSectionGet==== |
2015年3月23日 (月) 05:47時点における最新版
DataManip/mrcImageは、mrcImage型の画像を取り扱うための低水準APIです。
目次
- 1 定数
- 2 構造体
- 2.1 マスク処理
- 2.2 座標
- 2.3 mrcImageの構造
- 2.4 画像の統計データ
- 2.5 API毎の設定ファイル
- 2.5.1 lmrcImageSmoothingInfo
- 2.5.2 lmrcImageCVEInfo
- 2.5.3 lmrcImageTfunctionInfo
- 2.5.4 lmrcImageHighlightInfo
- 2.5.5 lmrcImageLowPassFilterInfo
- 2.5.6 lmrcImageHighPassFilterInfo
- 2.5.7 lmrcImageBandPassFilterInfo
- 2.5.8 lmrcImageMultiCTFCompensationInfo
- 2.5.9 lmrcImageCTFSNInfo
- 2.5.10 lmrcImageFourierPowerSpectrumInfo
- 3 API
- 3.1 初期化
- 3.2 画像データの解放
- 3.3 ファイルの読み込み
- 3.4 ファイルの書き出し
- 3.5 データコピー
- 3.6 画像モードのチェック
- 3.7 画素データの取得
- 3.8 画素のデータの設定
- 3.9 画素データの統計処理
- 3.10 画像処理一般のライブラリ
- 3.11 エラー処理
- 3.12 コマンド毎の処理
- 3.12.1 lmrcFFTInfo
- 3.12.2 mrcImageCheckSameSize
- 3.12.3 mrcImageCheckFFT
- 3.12.4 lmrcImageSmoothing
- 3.12.5 lmrcImageCVE
- 3.12.6 lmrcImageTfunction
- 3.12.7 lmrcImageHighlighting
- 3.12.8 lmrcImageLowPassFilter
- 3.12.9 lmrcImageHighPassFilter
- 3.12.10 lmrcImageBandPassFilter
- 3.12.11 lmrcImageShrink
- 3.12.12 lmrcImageShift
- 3.12.13 mrcImagePrint
- 3.12.14 lmrcImageMultiCTFCompensation
- 3.12.15 lmrcImageCTFObservation
- 3.12.16 lmrcImageCTFCompensation
- 3.12.17 lmrcImageCTFSN
- 3.12.18 lmrcImageFourierPowerSpectrum
- 3.12.19 mrcImageSectionGet
- 3.12.20 mrcImageSectionSet
定数
マスク処理
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)
mrcファイルの状態
#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[];
サイズ
ヘッダサイズ
#define MRC_HEADER (1024)
テイラサイズ
#define MRC_TAILER (1024)
画像モード
mrcファイル互換のための定義
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)
IMOD
#define mrcUShortImage ((mrcImageMode)6) #define mrcCharImageRGB ((mrcImageMode)16)
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)
2D投影モード
#define mrcImageTailerMode2DProjection 0
画像情報
統計データの算出モード
typedef enum mrcImageInformationMode { meanOfAll = 0, meanOfSphereSurface = 1, meanOfCylinderSurface = 2, meanOfEdge = 3, meanOfCentre = 4, meanOfSparse = 5, meanOf2DEdgeY = 6, RMSofAllPixels = 7 } mrcImageInformationMode;
平均値などを算出する関数(lmrcImageInformation、lmrcImageSolventFlattening(API)など)のモードとして設定します。
mrcImageInformation.modeの値として使用します。
ピクセルデータ
データの種類
typedef enum mrcPixelDataType { mrcPixelRePart = 0, mrcPixelImPart, mrcPixelMag, mrcPixelPow, mrcPixelLogMag, mrcPixelLogPow, mrcPixelPhase } mrcPixelDataType;
設定・取得するピクセルデータのタイプで、mrcPixselDataSetやmrcPixselDataGetの引数(mode)として使用します。
モード | 実画像 | FT画像 |
---|---|---|
mrcPixelRePart | データ | 実部データ |
mrcPixelImPart | 対応無し | 虚部データ |
mrcPixelMag | データ | 振幅: (実部^2 + 虚部^2)^(1/2) |
mrcPixelPow | データ^2 | 強度: 実部^2 + 虚部^2 |
mrcPixelLogMag | 対応無し | ログ振幅: (log10(実部^2 + 虚部^2)) / 2 |
mrcPixelLogPow | 対応無し | ログ強度: log10(実部^2 + 虚部^2) |
mrcPixelPhase | 対応無し | 位相 |
補間方法
typedef enum mrcPixelDataHowToGet { mrcPixelHowNearest = 0, mrcPixelHowLinear, mrcPixelHowCubicConv, mrcPixelHowPolySig } mrcPixelDataHowToGet;
ピクセルデータの補間方法で、mrcPixselDataGetの引数(how)として使用します。
モード | 設定値 | 補間方法 |
---|---|---|
mrcPixelHowNearest | 0 | 最近傍法 |
mrcPixelHowLinear | 1 | 線形補間法 |
mrcPixelHowCubicConv | 2 | 3次補間法 |
mrcPixelHowPolySig | 3 | 2次曲面補間法 |
mrcImageDataSetMode
typedef enum mrcImageDataSetMode { mrcImageDataSetModeCentre = 0, mrcImageDataSetModeOrigin = 1 } mrcImageDataSetMode;
mrcImageDataSetのモードとして使用します。
定数名 |
値 |
説明 |
---|---|---|
mrcImageDataSetModeCentre |
0 |
画像の中心から取得する |
mrcImageDataSetModeOrigin |
1 |
原点から取得する |
構造体
マスク処理
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;
実数: 実データやPDBデータなどを扱うときに使用します。
typedef struct mrcImageParaTypeRealCoord { mrcImageParaTypeReal x; mrcImageParaTypeReal y; mrcImageParaTypeReal z; } mrcImageParaTypeRealCoord;
mrcImageの構造
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;
構成 | 対応メンバ | 役割 |
---|---|---|
ヘッダ情報 | Header | 画像モード、サイズなど |
隠しデータ | BytePerImage, BytePerBand, BandPerPixel, PixelPerImage | 1ピクセル当たりのオングストロームなど |
ステータス | status | ファイルの状態 |
画像データ | Image, ImageCharImage, ... , ImageDoubleImage | 画像データ本体(実体はImage、他メンバはポインタで管理) |
テイラ情報 | Tailer, numTailer | 角度情報など |
FEIヘッダ | FEIHeader, numFEIHeader | FEI用の拡張ヘッダ |
ダミー | dummyHeaderByte | ダミーデータ |
バイトスワップ | flagByteSwap | 処理系によったエンディアン関連のフラグ |
CCP4-2000 | flagCCP4, ImageOffset, SymmetryOperator | CCP4-2000用 |
ヘッダ情報
デフォルト
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
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;
IMOD
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 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
FEI
#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;
テイラ情報
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の統計データを格納する構造体です。
データはmrcImageInformation(API)から取得して、主に入力情報として使用します。
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;
API毎の設定ファイル
lmrcImageSmoothingInfo
lmrcImageSmoothingの設定データとして使用します。
typedef struct lmrcImageSmoothingInfo { long mode; mrcImageParaTypeReal sx; /* Filter kernel size */ mrcImageParaTypeReal sy; mrcImageParaTypeReal sz; double sigma; /* for Lee-Sigma filter */ } lmrcImageSmoothingInfo;
lmrcImageCVEInfo
lmrcImageCVEの設定データとして使用します。
typedef struct lmrcImageCVEInfo { long sx; /* CVE domain size. */ long sy; /* Apr.30,1996 */ long sz; } lmrcImageCVEInfo;
lmrcImageTfunctionInfo
lmrcImageTfunctionの設定データとして使用します。
typedef struct lmrcImageTfunctionInfo { long sx; /* Tfunction domain size. */ long sy; /* June 11,1996 */ long sz; } lmrcImageTfunctionInfo;
lmrcImageHighlightInfo
lmrcImageHighlightingの設定データとして使用します。
typedef struct lmrcImageHighlightInfo { long mode; float Bias; /* May 1,1996 */ float Grad; } lmrcImageHighlightInfo;
lmrcImageLowPassFilterInfo
lmrcImageLowPassFilterの設定データとして使用します。
typedef struct lmrcImageLowPassFilterInfo { long mode; /* June 4,1996 */ float hvp, width; } lmrcImageLowPassFilterInfo;
lmrcImageHighPassFilterInfo
lmrcImageHighPassFilterの設定データとして使用します。
typedef struct lmrcImageHighPassFilterInfo { long mode; /* June 5,1996 */ float hvp, width; float pathWindowLow; float pathWindowHigh; } lmrcImageHighPassFilterInfo;
lmrcImageBandPassFilterInfo
lmrcImageBandPassFilterの設定データとして使用します。
typedef struct lmrcImageBandPassFilterInfo { long mode; /* June 5,1996 */ float hvl, hvh, wl, wh; int flagLowWeight; double lowWeight; } lmrcImageBandPassFilterInfo;
lmrcImageMultiCTFCompensationInfo
lmrcImageMultiCTFCompensationの設定データとして使用します。
typedef enum lmrcImageMultiCTFCompensationSolventFlatteningMode { lmrcImageMultiCTFCompensationSolventFlatteningModeDensityPeakIsSolvent=0, lmrcImageMultiCTFCompensationSolventFlatteningModeDefinedSTDIsSolvent=1 } lmrcImageMultiCTFCompensationSolventFlatteningMode; typedef struct lmrcImageMultiCTFCompensationInfo { long maxiteration; double okrms; long diversefactor; double z; long nhist; FILE* logfile; lmrcImageMultiCTFCompensationSolventFlatteningMode solventMode; float definedSTD; } lmrcImageMultiCTFCompensationInfo;
lmrcImageCTFSNInfo
lmrcImageCTFSNの設定データとして使用します。
typedef struct lmrcImageCTFSNInfo { long mode, deg1, deg2; ctfInfo ctf; } lmrcImageCTFSNInfo;
lmrcImageFourierPowerSpectrumInfo
lmrcImageFourierPowerSpectrumの設定データとして使用します。
typedef struct mrcImageFourierPowerSpectrum { long n; double d, *h; } mrcImageFourierPowerSpectrum; typedef struct lmrcImageFourierPowerSpectrumInfo { double dX, dY, dZ; } lmrcImageFourierPowerSpectrumInfo;
API
初期化
画像データの初期化
extern mrcStatusType mrcInit(mrcImage* mrc, char* filaname);
ヘッダ情報(画像モードやサイズ)を別のmrcファイルから読み出す場合はfilenameにファイル名を指定し、NULLの場合はデフォルト設定となります。画像データをmrcのメンバーImageに新規作成し, ポインタをImageXXXXImage(XXXX: Char, Shortなど)に格納されます。
※ このAPIは無条件でmrc->Imageにメモリを確保しますので、mrc->Imageが空であることが保証されるときのみ使用して下さい。(空でない場合はmrcImageFreeでメモリを解放してから確認します。)
ヘッダ情報の初期化
extern mrcStatusType mrcDefaultHeaderValueSet(mrcImage* mrc); extern mrcStatusType mrcDefaultHeaderValueSetOnlyFixedValue(mrcImage* mrc);
隠しデータの設定
extern mrcStatusType mrcHiddenDataSet(mrcImage* mrc, long mode);
テイラ情報の初期化
extern void mrcTailerInit(mrcImage* mrc, long mode);
画像データの解放
extern void mrcImageFree(mrcImage* mrc, char* message);
画像データの実体(Image)を解放し、Image, ImageXXXXImage(XXXX: Char, Shortなど)をNULLポインタとします。
ファイルの読み込み
filenameを読み出して、mrcへ格納する。
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);
message: エラーメッセージ用
mode: 読み込みデータを 0: 表示しない, 1: 表示する
ファイルの書き出し
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
message: エラーメッセージ用
mode: +1: 書き出しデータを表示する, +2: 統計データを計算しない
低分解能での書き出し
ip2mrcなどで使用されています。
extern mrcStatusType mrcFileWriteLowerResolution(mrcImage* mrc, char* filename, char* message, long sample , long mode);
データコピー
src -> dst へコピーする
画像データのコピー
extern void lmrcImageCopy(mrcImage* dst, mrcImage* src, mrcImageParaTypeRealCoord to);
to: オフセット(座標)
テイラ情報のコピー
extern void mrcTailerCopy(mrcImage* dst, mrcImage* src, long mode);
mode: +1: 新規作成してコピーする, それ以外: そのままコピーする
画像モードのチェック
extern int IsFloatImage(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); extern int IsFloatFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); extern int IsImage(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); extern int IsFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode); extern int IsFFT(mrcImage* mrc, char* message, mrcImageParaTypeInteger mode);
戻り値: 0: 該当しない, 1: 該当する
画素データの取得
ピクセル単位の画素データの取得
extern double mrcPixelDataGet(mrcImage* mrc, mrcImageParaTypeReal x /* Pixel Unit */, mrcImageParaTypeReal y /* Pixel Unit */, mrcImageParaTypeReal z /* Pixel Unit */, double* data, mrcPixelDataType mode, mrcPixelDataHowToGet how);
座標(x, y, z)におけるデータを取得し、dataに格納されます。
mode及び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);
画素情報の設定
extern void mrcImageInfoSet(mrcImage* mrc, FILE* fptIn, FILE* fptOut, long mode);
フィラメントデータの作成
入力ファイルinを基にフィラメントデータoutを作成する。
mrcImageDataSetMode(mode)によって、inの取得位置が異なることに注意。
extern void mrcImageDataSet(mrcImage* out, mrcImage* in, mrcImageParaTypeReal x, mrcImageParaTypeReal y, mrcImageParaTypeReal z, float phi, mrcImageDataSetMode mode);
ピクセル単位の画素データの設定
extern double mrcPixelDataSet(mrcImage* mrc, mrcImageParaTypeReal x /* Pixel Unit */, mrcImageParaTypeReal y /* Pixel Unit */, mrcImageParaTypeReal z /* Pixel Unit */, double data, mrcPixelDataType mode);
オングストローム単位での画素データの設定
extern double mrcImageDataSetbyAU(mrcImage* mrc, mrcImageParaTypeReal x /* Angstrom */, mrcImageParaTypeReal y /* Angstrom */, mrcImageParaTypeReal z /* Angstrom */, double data, mrcPixelDataType mode);
インライン型関数の画素データの設定
static inline void mrcPixelDataSetFloatImage(mrcImage* img, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data)
static inline void mrcPixelDataSetFloatFTRe(mrcImage* fft, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data)
static inline void mrcPixelDataSetFloatFTIm(mrcImage* fft, mrcImageParaTypeInteger x, mrcImageParaTypeInteger y, mrcImageParaTypeInteger z, double data)
画素データの統計処理
最大値、最小値、平均値を算出(mrcのヘッダ情報に格納する)
extern void mrcStatDataSet(mrcImage* mrc, 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 lmrcImageDevidedByImage(mrcImage* img, mrcImage* i1, mrcImage* i2); img := i1/i2, 0 := 0/0, 0 := x/0
絶対値
void ImageAbs(mrcImage* out ,mrcImage* in); out := fabs(in);
2乗、平方根
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++
2乗加算
void lmrcSQRImageAdd(mrcImage* img2, mrcImage* img1, long* number); img2 := img2 + img1*img1, number++
減算
void lmrcImageSubtractionCalc(mrcImage* out, mrcImage* in1, mrcImage* in2) out := in1 - in2 void llmrcImageSub(mrcImage*out ,mrcImage* in1 ,mrcImage* in2) out : = in1 - in2(上記と同じ機能)
畳み込み
extern void lmrcImageConvolution(mrcImage* out, mrcImage* in, mrcImage* kernel, int mode);
統計
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);
投影
extern void lmrcImageXSection(mrcImage* proj, mrcImage* img, double Y); extern void lmrcImageYSection(mrcImage* proj, mrcImage* img, double X); extern void lmrcImageXProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageYProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageZProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageXYProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageYZProjection(mrcImage* proj, mrcImage* img); extern void lmrcImageZXProjection(mrcImage* proj, mrcImage* img);
ヒストグラム
extern void lmrcImageHistgram(double** hist, unsigned long nlevel, mrcImage* img); extern void lmrcImageHistgram2(double** hist, double delta, mrcImage* img); extern void lmrcImageHistgram5(double** hist, unsigned long nlevel, double Low, double High, mrcImage* img); extern void lmrcImageHistgram3(double** hist, unsigned long nlevel, mrcImage* img); extern void lmrcImageHistgram4(double** hist, double delta, mrcImage* img); extern void lmrcImageHistgram6(double** hist, unsigned long nlevel, double Low, double High, mrcImage* img);
統計データの取得
extern void lmrcImageInformation(mrcImageInformation* info, mrcImage* img);
画素データ変換
画素データをint型に変換する
extern void lmrcImageToIntImage(mrcImage* dst, mrcImage* src, mrcImageParaTypeInteger mode);
FFT関連
extern void lfft2d(mrcImage* fft, mrcImage* img); extern void lmrcImageFFT(mrcImage* fft, mrcImage* img, long mode); extern void lmrcImageFFTFirstDimensionOnly(mrcImage* fft, mrcImage* img, long mode); #ifdef FFTW extern void lmrcImageFFTWFlagSet(unsigned int flag); #endif extern void lmrcFFTFGconj(mrcImage* out, mrcImage* in1, mrcImage* in2); extern void lmrcFFTFxG(mrcImage* out, mrcImage* in1, mrcImage* in2);
画像データの相関
extern void lmrcImageCorrelation(mrcImage* out, mrcImage* in, mrcImage* ref, long mode); extern void lmrcImageCorrelationModePrint(FILE* fpt); extern void lmrcImageCorrelationWithCTFCompensation(mrcImage* out, mrcImage* in, ctfInfo* inctf, mrcImage* ref, ctfInfo* refctf, long mode);
エラー処理
extern mrcStatusType mrcError(char* message, char* inRtnName, char* callRtnName, mrcStatusType status); extern mrcStatusType mrcErrorMsg(FILE* fpt, char* message, char* inRtnName, char* callRtnName, mrcStatusType status);
コマンド毎の処理
lmrcFFTInfo
extern floatVector* lmrcFSInfoXAxisMag(mrcImage* fft); extern floatVector* lmrcFSInfoXAxisPhase(mrcImage* fft); extern floatVector* lmrcFSInfoYAxisMag(mrcImage* fft); extern floatVector* lmrcFSInfoYAxisPhase(mrcImage* fft);
extern floatVector* lmrcFSInfoScatteringAngularDistribution(mrcImage* fft); extern floatVector* lmrcFSInfoScatteringAngularDistributionAverage(mrcImage* fft); extern floatVector* lmrcFSInfoScatteringAngularDistributionSD(mrcImage* fft); extern floatVector* lmrcFSInfoSpacing(mrcImage* fft);
mrcImageCheckSameSize
extern void lmrcImageCheckSameSize(mrcImage* in, mrcImage* ref);
mrcImageCheckFFT
入力ファイルinのモードに関係なくFFT画像をrefへ出力します。
extern void lmrcImageCheckFFT(mrcImage* in, mrcImage* ref);
lmrcImageSmoothing
設定データlmrcImageSmoothingInfoを使用します。
extern void lmrcImageSmoothingModeInfo(FILE* fpt); extern void lmrcImageSmoothing(mrcImage* dst, mrcImage* src, lmrcImageSmoothingInfo* info, long mode);
lmrcImageCVE
設定データlmrcImageCVEInfoを使用します。
extern void lmrcImageCVE(mrcImage* dst, mrcImage* src, lmrcImageCVEInfo* info);
lmrcImageTfunction
設定データlmrcImageTfunctionInfoを使用します。
extern void lmrcImageTfunction(mrcImage* dst, mrcImage* src, lmrcImageTfunctionInfo* info, long mode);
lmrcImageHighlighting
設定データlmrcImageHighlightInfoを使用します。
extern void lmrcImageHighlightingInfoPrint(FILE* fpt); extern void lmrcImageHighlighting(mrcImage* dst, mrcImage* src, lmrcImageHighlightInfo* info);
lmrcImageLowPassFilter
設定データlmrcImageLowPassFilterInfoを使用します。
extern void lmrcImageLowPassFilter(mrcImage* dst, mrcImage* src, lmrcImageLowPassFilterInfo* info, long mode);
lmrcImageHighPassFilter
設定データlmrcImageHighPassFilterInfoを使用します。
extern void lmrcImageHighPassFilter(mrcImage* dst, mrcImage* src, lmrcImageHighPassFilterInfo* info, long mode);
lmrcImageBandPassFilter
設定データlmrcImageBandPassFilterInfoを使用します。
extern void lmrcImageBandPassFilter(mrcImage* dst, mrcImage* src, lmrcImageBandPassFilterInfo* info, long mode);
lmrcImageShrink
extern void lmrcImageShrink(mrcImage* dst, mrcImage* src, mrcImageParaTypeIntegerCoord S, long mode);
lmrcImageShift
extern void lmrcImageShift(mrcImage* out, mrcImage* in, mrcImageParaTypeRealCoord shift, mrcPixelDataHowToGet mode); extern void lmrcImageShiftFollowingGC(mrcImage* out, mrcImage* in, int mode);
mrcImagePrint
extern void mrcInfoPrint(FILE* fpt, mrcImage* mrc, mrcImageParaTypeInteger mode);
lmrcImageMultiCTFCompensation
設定データlmrcImageMultiCTFCompensationInfoを使用します。
extern void lmrcImageMultiCTFCompensationInfoInit(lmrcImageMultiCTFCompensationInfo* info); extern void lmrcImageMultiCTFCompensationInfoSet(lmrcImageMultiCTFCompensationInfo* info); extern void lmrcImageMultiCTFCompensation(mrcImage* dst, mrcImage* src, ctfInfo* ctf, long nfile, lmrcImageMultiCTFCompensationInfo info, long mode);
lmrcImageCTFObservation
extern void lmrcImageCTFObservation(mrcImage* dst, mrcImage* src, ctfInfo* ctf, long mode); extern void lmrcImagesCTFObservation(mrcImage* dst, mrcImage* src, ctfInfo* ctf, long mode);
lmrcImageCTFCompensation
extern void lmrcImageCTFCompensation(mrcImage* src, ctfInfo* ctf, long mode);
lmrcImageCTFSN
設定データlmrcImageCTFSNInfoを使用します。
extern void lmrcImageCTFSN(mrcImage *outMrc, const mrcImage *inMrc, lmrcImageCTFSNInfo *info, long mode);
lmrcImageFourierPowerSpectrum
設定データlmrcImageFourierPowerSpectrumInfoを使用します。
extern mrcImageFourierPowerSpectrum lmrcImageFourierPowerSpectrumMakeSpectrum(const mrcImage *inFFT, lmrcImageFourierPowerSpectrumInfo *info); extern void lmrcImageFourierPowerSpectrumDeleteSpectrum(mrcImageFourierPowerSpectrum theSpectrum); extern mrcImageFourierPowerSpectrum lmrcImageFourierPowerSpectrum(const mrcImage *inMrc, lmrcImageFourierPowerSpectrumInfo *info, long mode); extern void lmrcImageRotation3DModePrint(FILE* fpt); extern void lmrcImageRotation3DFollowingEulerAngle(mrcImage* dst, mrcImage* src, const char* m, mrcImageParaTypeReal rot1, mrcImageParaTypeReal rot2, mrcImageParaTypeReal rot3, mrcPixelDataHowToGet mode, int mode2); extern void lmrcImageRotation3DFollowingMatrix3D(mrcImage* dst, mrcImage* src, Matrix3D mat, mrcPixelDataHowToGet mode, int mode2); extern void lmrcImageRotation3DZXY(mrcImage* dst, mrcImage* src, mrcImageParaTypeReal rotx, mrcImageParaTypeReal roty, mrcImageParaTypeReal rotz, mrcPixelDataHowToGet mode, int mode2); extern void lmrcImageRotation2D(mrcImage* dst, mrcImage* src, double angle, mrcPixelDataHowToGet mode);
入力画像srcを角度angleで回転した画像をdstへ格納します。(mode: #補間方法)
extern void lmrcImageRotation2DPeriodicBoundary(mrcImage* dst, mrcImage* src, double angle, mrcPixelDataHowToGet mode);
mrcImageSectionGet
extern char* mrcImageSectionGetModeDescription(long mode); extern void mrcImageSectionGet(mrcImage* dst, mrcImage* src, mrcImageParaTypeReal z, long mode);
mrcImageSectionSet
extern void mrcImageSectionSet(mrcImage* dst, mrcImage* src, mrcImageParaTypeReal z, long mode); extern double lmrcImageMaxDataGet(mrcImage* src, long mode);