「lmrcImageCorrelation(API)」の版間の差分

提供: Eospedia
移動: 案内検索
(ページの作成:「DataManip/mrcImage/src/'''lmrcImageCorrelation'''はmrcImage同士での相関を行うのためのAPI です。mrcImageCorrelationやmrcImageAutoRotationCorrel...」)
 
(API)
 
(同じ利用者による、間の5版が非表示)
行1: 行1:
DataManip/mrcImage/src/'''lmrcImageCorrelation'''は[[mrcImage]]同士での相関を行うのためのAPI です。[[mrcImageCorrelation]]や[[mrcImageAutoRotationCorrelation]]だけでなく、[[クラスター解析]]などでも使用されています。
+
DataManip/mrcImage/src/'''lmrcImageCorrelation'''は[[mrcImage]]同士での相関を行うのためのAPI です。[[mrcImageCorrelation]]や[[mrcImageAutoRotationCorrelation]]だけでなく、[[クラスター解析]]など画像間の関係を定義したい場合でも使用します。
  
 
== 定数 ==
 
== 定数 ==
  
 
== 構造体 ==
 
== 構造体 ==
 +
===相関方法===
 +
lmrcImageAutoRotationCorrelationInfoのメンバーMethodに使用します。
 
  typedef enum lmrcImageAutoRotationCorrelationMethod {
 
  typedef enum lmrcImageAutoRotationCorrelationMethod {
 
  lmrcImageAutoRotationCorrelationMethodRotationAndCorrelation    = 0,
 
  lmrcImageAutoRotationCorrelationMethodRotationAndCorrelation    = 0,
行10: 行12:
 
  } lmrcImageAutoRotationCorrelationMethod;
 
  } lmrcImageAutoRotationCorrelationMethod;
  
 +
===相関情報===
 +
lmrcImageAutoRotationCorrelationの設定データとして使用します。
 
  typedef struct lmrcImageAutoRotationCorrelationInfo {
 
  typedef struct lmrcImageAutoRotationCorrelationInfo {
 
  int iter; /* iteration */
 
  int iter; /* iteration */
行35: 行39:
 
  int  flagXshiftOnly;
 
  int  flagXshiftOnly;
 
  int  flagNoShift;
 
  int  flagNoShift;
 
 
  } lmrcImageAutoRotationCorrelationInfo;
 
  } lmrcImageAutoRotationCorrelationInfo;
  
 +
lmrcImageCorrelationRefinementの設定データとして使用します。
 
  typedef struct lmrcImageCorrelationRefinementInfo {
 
  typedef struct lmrcImageCorrelationRefinementInfo {
 
  mrcImageParaTypeRealCoord shift;  
 
  mrcImageParaTypeRealCoord shift;  
行46: 行50:
 
  } lmrcImageCorrelationRefinementInfo;
 
  } lmrcImageCorrelationRefinementInfo;
  
 +
===回転モード===
 
  typedef enum lmrcImageAutoRotationCorrelationForManyReferencesRotationOrder {
 
  typedef enum lmrcImageAutoRotationCorrelationForManyReferencesRotationOrder {
 
  lmrcImageAutoRotationCorrelationForManyReferencesStackOrderRot1Rot2Rot3=0,
 
  lmrcImageAutoRotationCorrelationForManyReferencesStackOrderRot1Rot2Rot3=0,
行57: 行62:
  
 
  typedef struct lmrcImageAutoRotationCorrelationForManyReferencesInfo {
 
  typedef struct lmrcImageAutoRotationCorrelationForManyReferencesInfo {
    int    nRot1;          /* Image Number in Ref*/
+
int    nRot1;          /* Image Number in Ref*/
    int    nRot1Step;      /* Coarse Step in Fitting */
+
int    nRot1Step;      /* Coarse Step in Fitting */
    double nRot1AreaMin;    /* Min: Rotation Area in Fitting */
+
double nRot1AreaMin;    /* Min: Rotation Area in Fitting */
    double nRot1AreaMax;    /* Max: Rotation Area in Fitting */
+
double nRot1AreaMax;    /* Max: Rotation Area in Fitting */
    double nRot1AreaStep;  /* Step: Rotation Area in Fitting */
+
double nRot1AreaStep;  /* Step: Rotation Area in Fitting */
 
  double nRot1Delta;      /* Delta: Rotation Interval of Ref */
 
  double nRot1Delta;      /* Delta: Rotation Interval of Ref */
 
  double nRot1Start;      /* Start: Rotation Interval of Ref */
 
  double nRot1Start;      /* Start: Rotation Interval of Ref */
 
   
 
   
    int    nRot2;
+
int    nRot2;
    int    nRot2Step;
+
int    nRot2Step;
    double nRot2AreaMin;
+
double nRot2AreaMin;
    double nRot2AreaMax;
+
double nRot2AreaMax;
    double nRot2AreaStep;
+
double nRot2AreaStep;
 
  double nRot2Delta;
 
  double nRot2Delta;
 
  double nRot2Start;
 
  double nRot2Start;
 
   
 
   
    int    nRot3;
+
int    nRot3;
    int    nRot3Step;
+
int    nRot3Step;
    double nRot3AreaMin;
+
double nRot3AreaMin;
    double nRot3AreaMax;
+
double nRot3AreaMax;
    double nRot3AreaStep;
+
double nRot3AreaStep;
 
  double nRot3Delta;
 
  double nRot3Delta;
 
  double nRot3Start;
 
  double nRot3Start;
 
   
 
   
    int mode;
+
int mode;
 
   
 
   
 
  lmrcImageAutoRotationCorrelationForManyReferencesStackOrder StackOrder;
 
  lmrcImageAutoRotationCorrelationForManyReferencesStackOrder StackOrder;
 
  lmrcImageAutoRotationCorrelationForManyReferencesRefinementMode RefinementMode;
 
  lmrcImageAutoRotationCorrelationForManyReferencesRefinementMode RefinementMode;
 
   
 
   
    char* In;
+
char* In;
    FILE* fptOutASC; /* a file pointer for logging */
+
FILE* fptOutASC; /* a file pointer for logging */
    char* Out;
+
char* Out;
    mrcImage out;
+
mrcImage out;
 
   
 
   
 
  /* for Linear Correlation */
 
  /* for Linear Correlation */
    char* corFile;
+
char* corFile;
    mrcImage cor;
+
mrcImage cor;
    char* fitFile;
+
char* fitFile;
    mrcImage fittedMap;
+
mrcImage fittedMap;
 
   
 
   
 
  /* for Set mode correlation */  
 
  /* for Set mode correlation */  
    char* corFile2;
+
char* corFile2;
    mrcImage cor2;
+
mrcImage cor2;
    char* fitFile2;
+
char* fitFile2;
    mrcImage fittedMap2;
+
mrcImage fittedMap2;
 
   
 
   
 
  } lmrcImageAutoRotationCorrelationForManyReferencesInfo;
 
  } lmrcImageAutoRotationCorrelationForManyReferencesInfo;
  
 +
===PVMインストール時のみ使用可===
 
  #ifdef PVM
 
  #ifdef PVM
 
 
  typedef struct lmrcImageCorrelationPVMInfo {
 
  typedef struct lmrcImageCorrelationPVMInfo {
 
  int* tids;
 
  int* tids;
 
  int  numTask;
 
  int  numTask;
 
  } lmrcImageCorrelationPVMInfo;
 
  } lmrcImageCorrelationPVMInfo;
 
 
  #endif
 
  #endif
  
 
== API ==
 
== API ==
  extern void lmrcImageAutoRotationCorrelation(mrcImage* out, mrcImage* cor, mrcImage* in, mrcImage* ref, lmrcImageAutoRotationCorrelationInfo* linfo, int mode);
+
==== 画像間の相関 ====
extern void lmrcImageAutoRotationCorrelationRotationalCrossCorrelationFunction(mrcImage* out, mrcImage* cor, mrcImage* in, mrcImage* ref, lmrcImageAutoRotationCorrelationInfo* linfo, int mode);
+
  extern void lmrcImageCorrelation(mrcImage* cor, mrcImage* in, mrcImage* ref, long mode);
 +
線形相関
 
  extern double lmrcImageLinearCorrelation(mrcImage* in1, mrcImage* in2, long mode);
 
  extern double lmrcImageLinearCorrelation(mrcImage* in1, mrcImage* in2, long mode);
  extern void lmrcImageCorrelation(mrcImage* cor, mrcImage* in, mrcImage* ref, long mode);
+
  extern void lmrcImageLinearCorrelation2(double* cor, mrcImage* in1, mrcImage* in2, long mode);
 +
ユークリッド距離による相関
 
  extern double lmrcImageEuclidDistanceCalc(mrcImage* in1, mrcImage* in2, int mode);  
 
  extern double lmrcImageEuclidDistanceCalc(mrcImage* in1, mrcImage* in2, int mode);  
 +
extern void lmrcImageEuclidDistanceCalc2(double* cor, mrcImage* in1, mrcImage* in2, int mode);
 +
リファインメント
 
  extern void lmrcImageCorrelationRefinement(mrcImage* cor, mrcImage* shift, mrcImage* in, mrcImage* ref, lmrcImageCorrelationRefinementInfo* info, long mode);
 
  extern void lmrcImageCorrelationRefinement(mrcImage* cor, mrcImage* shift, mrcImage* in, mrcImage* ref, lmrcImageCorrelationRefinementInfo* info, long mode);
  
 +
==== AutoRotationCorrelation ====
 +
extern void lmrcImageAutoRotationCorrelation(mrcImage* out, mrcImage* cor, mrcImage* in, mrcImage* ref, lmrcImageAutoRotationCorrelationInfo* linfo, int mode);
 +
相互相関関数を使用
 +
extern void lmrcImageAutoRotationCorrelationRotationalCrossCorrelationFunction(mrcImage* out, mrcImage* cor, mrcImage* in, mrcImage* ref, lmrcImageAutoRotationCorrelationInfo* linfo, int mode);
 +
複数の参照ファイルを使用するとき
 +
extern void lmrcImageAutoRotationCorretionForManyReferences(mrcImage* in, mrcImage* ref,
 +
    lmrcImageAutoRotationCorrelationForManyReferencesInfo* info,
 +
    lmrcImageAutoRotationCorrelationInfo* linfo,
 +
    int mode);
 +
 +
===PVMインストール時のみ使用可===
 
  #ifdef PVM
 
  #ifdef PVM
 
  extern void lmrcImageCorrelationServerStart(lmrcImageCorrelationPVMInfo* linfo, FILE* fpt, int numTask);
 
  extern void lmrcImageCorrelationServerStart(lmrcImageCorrelationPVMInfo* linfo, FILE* fpt, int numTask);
行133: 行152:
 
  extern void lmrcImageAutoRotationCorrelationInfoSendByPVM(lmrcImageAutoRotationCorrelationInfo* linfo, int tid, long mode);
 
  extern void lmrcImageAutoRotationCorrelationInfoSendByPVM(lmrcImageAutoRotationCorrelationInfo* linfo, int tid, long mode);
 
  extern void lmrcImageAutoRotationCorrelationInfoRecieveByPVM(lmrcImageAutoRotationCorrelationInfo* linfo, int tid, long mode);
 
  extern void lmrcImageAutoRotationCorrelationInfoRecieveByPVM(lmrcImageAutoRotationCorrelationInfo* linfo, int tid, long mode);
 
 
  #endif
 
  #endif
 
extern void lmrcImageAutoRotationCorretionForManyReferences(mrcImage* in, mrcImage* ref,
 
    lmrcImageAutoRotationCorrelationForManyReferencesInfo* info,
 
    lmrcImageAutoRotationCorrelationInfo* linfo,
 
    int mode);
 

2015年3月9日 (月) 05:04時点における最新版

DataManip/mrcImage/src/lmrcImageCorrelationmrcImage同士での相関を行うのためのAPI です。mrcImageCorrelationmrcImageAutoRotationCorrelationだけでなく、クラスター解析など画像間の関係を定義したい場合でも使用します。

定数

構造体

相関方法

lmrcImageAutoRotationCorrelationInfoのメンバーMethodに使用します。

typedef enum lmrcImageAutoRotationCorrelationMethod {
	lmrcImageAutoRotationCorrelationMethodRotationAndCorrelation     = 0,
	lmrcImageAutoRotationCorrelationMethodRotationAndCorrelationSSDA = 1,
	lmrcImageAutoRotationCorrelationMethodRotationalFunction         = 2
} lmrcImageAutoRotationCorrelationMethod;

相関情報

lmrcImageAutoRotationCorrelationの設定データとして使用します。

typedef struct lmrcImageAutoRotationCorrelationInfo {
	int iter; /* iteration */
	int nRot; /* Rotation */  
	lmrcImageAutoRotationCorrelationMethod Method;
	float max;
	float maxTheta;
	mrcImageParaTypeRealCoord maxP;
	mrcImageInformation corInfo;
	lmrcImageSSDAInfo SSDAInfo;
	float EuclidDistance; 
	float LinearCorrelation;

	/* Restriction Rotation Area */
	int   flagRestrictionArea;
	float thetaMin;
	float thetaMax;

	int flagShiftRange;
	float shiftMinX;
	float shiftMinY;
	float shiftMaxX;
	float shiftMaxY;

	int   flagXshiftOnly;
	int   flagNoShift;
} lmrcImageAutoRotationCorrelationInfo;

lmrcImageCorrelationRefinementの設定データとして使用します。

typedef struct lmrcImageCorrelationRefinementInfo {
	mrcImageParaTypeRealCoord shift; 
	mrcImageParaTypeRealCoord step; 
	mrcImageParaTypeRealCoord range; 
	mrcImageInformation corInfo;
	int mode;
} lmrcImageCorrelationRefinementInfo;

回転モード

typedef enum lmrcImageAutoRotationCorrelationForManyReferencesRotationOrder {
	 lmrcImageAutoRotationCorrelationForManyReferencesStackOrderRot1Rot2Rot3=0,
	 lmrcImageAutoRotationCorrelationForManyReferencesStackOrderRot3Rot2Rot1=1
}  lmrcImageAutoRotationCorrelationForManyReferencesStackOrder;
typedef enum lmrcImageAutoRotationCorrelationForManyReferencesRefinementMode {
	 lmrcImageAutoRotationCorrelationForManyReferencesRefinementModeLinear  =0,
	 lmrcImageAutoRotationCorrelationForManyReferencesRefinementModeSetMode =1
}  lmrcImageAutoRotationCorrelationForManyReferencesRefinementMode;
typedef struct lmrcImageAutoRotationCorrelationForManyReferencesInfo {
	int    nRot1;           /* Image Number in Ref*/
	int    nRot1Step;       /* Coarse Step in Fitting */
	double nRot1AreaMin;    /* Min: Rotation Area in Fitting */
	double nRot1AreaMax;    /* Max: Rotation Area in Fitting */
	double nRot1AreaStep;   /* Step: Rotation Area in Fitting */
	double nRot1Delta;      /* Delta: Rotation Interval of Ref */
	double nRot1Start;      /* Start: Rotation Interval of Ref */

	int    nRot2;
	int    nRot2Step;
	double nRot2AreaMin;
	double nRot2AreaMax;
	double nRot2AreaStep;
	double nRot2Delta;
	double nRot2Start;

	int    nRot3;
	int    nRot3Step;
	double nRot3AreaMin;
	double nRot3AreaMax;
	double nRot3AreaStep;
	double nRot3Delta;
	double nRot3Start;

	int mode;

	lmrcImageAutoRotationCorrelationForManyReferencesStackOrder StackOrder;
	lmrcImageAutoRotationCorrelationForManyReferencesRefinementMode RefinementMode;

	char* In;
	FILE* fptOutASC; /* a file pointer for logging */
	char* Out;
	mrcImage out;

	/* for Linear Correlation */	
	char* corFile;
	mrcImage cor;
	char* fitFile;
	mrcImage fittedMap;

	/* for Set mode correlation */ 
	char* corFile2;
	mrcImage cor2;
	char* fitFile2;
	mrcImage fittedMap2;

} lmrcImageAutoRotationCorrelationForManyReferencesInfo;

PVMインストール時のみ使用可

#ifdef PVM
typedef struct lmrcImageCorrelationPVMInfo {
	int* tids;
	int  numTask;
} lmrcImageCorrelationPVMInfo;
#endif

API

画像間の相関

extern void lmrcImageCorrelation(mrcImage* cor, mrcImage* in, mrcImage* ref, long mode);

線形相関

extern double lmrcImageLinearCorrelation(mrcImage* in1, mrcImage* in2, long mode);
extern void lmrcImageLinearCorrelation2(double* cor, mrcImage* in1, mrcImage* in2, long mode);

ユークリッド距離による相関

extern double lmrcImageEuclidDistanceCalc(mrcImage* in1, mrcImage* in2, int mode); 
extern void lmrcImageEuclidDistanceCalc2(double* cor, mrcImage* in1, mrcImage* in2, int mode); 

リファインメント

extern void lmrcImageCorrelationRefinement(mrcImage* cor, mrcImage* shift, mrcImage* in, mrcImage* ref, lmrcImageCorrelationRefinementInfo* info, long mode);

AutoRotationCorrelation

extern void lmrcImageAutoRotationCorrelation(mrcImage* out, mrcImage* cor, mrcImage* in, mrcImage* ref, lmrcImageAutoRotationCorrelationInfo* linfo, int mode);

相互相関関数を使用

extern void lmrcImageAutoRotationCorrelationRotationalCrossCorrelationFunction(mrcImage* out, mrcImage* cor, mrcImage* in, mrcImage* ref, lmrcImageAutoRotationCorrelationInfo* linfo, int mode);

複数の参照ファイルを使用するとき

extern void lmrcImageAutoRotationCorretionForManyReferences(mrcImage* in, mrcImage* ref,
   lmrcImageAutoRotationCorrelationForManyReferencesInfo* info,
   lmrcImageAutoRotationCorrelationInfo* linfo,
   int mode);

PVMインストール時のみ使用可

#ifdef PVM
extern void lmrcImageCorrelationServerStart(lmrcImageCorrelationPVMInfo* linfo, FILE* fpt, int numTask);
extern void lmrcImageCorrelationServerEnd(lmrcImageCorrelationPVMInfo linfo);

extern void lmrcImageCorrelationPVMStart(mrcImage* in, mrcImage* ref, lmrcImageAutoRotationCorrelationInfo* linfo, int tid, long mode);
extern void lmrcImageCorrelationPVMEnd(mrcImage* out, mrcImage* cor, lmrcImageAutoRotationCorrelationInfo* linfo, int tid, long mode);

extern void lmrcImageCorrelationServer();

extern void lmrcImageAutoRotationCorrelationInfoSendByPVM(lmrcImageAutoRotationCorrelationInfo* linfo, int tid, long mode);
extern void lmrcImageAutoRotationCorrelationInfoRecieveByPVM(lmrcImageAutoRotationCorrelationInfo* linfo, int tid, long mode);
#endif