「lmrcImageClusterAnalysis(API)」の版間の差分
提供: Eospedia
(→API) |
(→API) |
||
(同じ利用者による、間の7版が非表示) | |||
行58: | 行58: | ||
=== 画像間の距離 === | === 画像間の距離 === | ||
2画像in1, in2間の距離を算出し、disへ格納します。 | 2画像in1, in2間の距離を算出し、disへ格納します。 | ||
− | void lmrcImageDistanceCalc(float* dis, mrcImage* in1, mrcImage* in2, int mode); | + | void lmrcImageDistanceCalc(float* dis, mrcImage* in1, mrcImage* in2, int mode); |
+ | <table border="1"> | ||
+ | <tr> | ||
+ | <th>mode</th> | ||
+ | <th>距離の算出方法</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeCorrelation</td> | ||
+ | <td>相関値の最大から算出して-1を掛ける</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeEuclidDistance</td> | ||
+ | <td>ユークリッド距離から算出</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeWardMethod</td> | ||
+ | <td>ユークリッド距離から算出して二乗する</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeWardMethodLinearCorrelation</td> | ||
+ | <td>リニア相関から算出</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeLinearCorrelation</td> | ||
+ | <td>上記と同じ</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br> | ||
+ | |||
float lmrcImageDistanceCalcByWardMethod(mrcImage* in1, mrcImage* in2, int num1, int num2, int mode); | float lmrcImageDistanceCalcByWardMethod(mrcImage* in1, mrcImage* in2, int num1, int num2, int mode); | ||
+ | <table border="1"> | ||
+ | <tr> | ||
+ | <th>mode</th> | ||
+ | <th>距離の算出方法</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeWardMethod</td> | ||
+ | <td>ユークリッド距離から算出</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeWardMethodLinearCorrelation</td> | ||
+ | <td>リニア相関から算出</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br> | ||
float lmrcImageDistanceCalcWithAutoRotation(mrcImage* out, mrcImage* cor, mrcImage* in1, mrcImage* in2, lmrcImageAutoRotationCorrelationInfo* linfo, int lmode, int mode); | float lmrcImageDistanceCalcWithAutoRotation(mrcImage* out, mrcImage* cor, mrcImage* in1, mrcImage* in2, lmrcImageAutoRotationCorrelationInfo* linfo, int lmode, int mode); | ||
+ | <table border="1"> | ||
+ | <tr> | ||
+ | <th>mode</th> | ||
+ | <th>距離の算出方法</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeCorrelation</td> | ||
+ | <td>最大相関値から算出して-1を掛ける</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeEuclidDistance</td> | ||
+ | <td>ユークリッド距離から算出</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeLinearCorrelation</td> | ||
+ | <td>リニア相関値から算出</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br> | ||
+ | |||
float lmrcImageDistanceCalcByWardMethodWithAutoRotation(mrcImage* out, mrcImage* cor, mrcImage* in1, mrcImage* in2, int num1, int num2, lmrcImageAutoRotationCorrelationInfo* linfo, int lmode, int mode); | float lmrcImageDistanceCalcByWardMethodWithAutoRotation(mrcImage* out, mrcImage* cor, mrcImage* in1, mrcImage* in2, int num1, int num2, lmrcImageAutoRotationCorrelationInfo* linfo, int lmode, int mode); | ||
+ | <table border="1"> | ||
+ | <tr> | ||
+ | <th>mode</th> | ||
+ | <th>距離の算出方法</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeWardMethod</td> | ||
+ | <td>ユークリッド距離から算出</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>lmrcImageClusterAnalysisModeWardMethodLinearCorrelation</td> | ||
+ | <td>リニア相関値から算出</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br> | ||
+ | === 繰り返し回数 === | ||
float lmrcImageClusterAnalysisByIteration(int* group, mrcImage* in, int clusternum, int N, int mode); | float lmrcImageClusterAnalysisByIteration(int* group, mrcImage* in, int clusternum, int N, int mode); | ||
+ | <br> | ||
=== ファイル入出力 === | === ファイル入出力 === | ||
行71: | 行151: | ||
ログの読み込み | ログの読み込み | ||
void lmrcImageClusterAnalysisDistanceFromLog(int* skip, float* distance, FILE* fpt); | void lmrcImageClusterAnalysisDistanceFromLog(int* skip, float* distance, FILE* fpt); | ||
+ | <br> |
2015年3月9日 (月) 02:31時点における最新版
DataManip/mrcImage/src/lmrcImageClusterAnalysisはmrcImageClusterAnalysisのためのAPI です。
定数
構造体
typedef enum lmrcImageClusterAnalysisMode { lmrcImageClusterAnalysisModeCorrelation = 0, lmrcImageClusterAnalysisModeEuclidDistance = 1, lmrcImageClusterAnalysisModeWardMethod = 2, lmrcImageClusterAnalysisModeWardMethodLinearCorrelation = 3, lmrcImageClusterAnalysisModeLinearCorrelation = 4 } lmrcImageClusterAnalysisMode;
#ifdef GLOBAL_DECLARATION char* lmrcImageClusterAnalysisModeMessage[] = { "By Correlation", "By Euclid Distance", "By Ward Method (default) : Euclid Length (no rotation) or its square (rotation)", "By Ward Method using Linear Correlation : (1 - Correlation)/(1 + Correlation)", "By Linear Correlation : (1 - Correlation)/(1 + Correlation)", NULL }; #endif
typedef struct lmrcImageClusterAnalysisInfo { lmrcImageClusterAnalysisMode mode; /* ClusterAnalysisMode */ int flagIteration; /* */ int flagAutoRotation; char** filename; /* filename */ int correlationMode; /* correlationMode */ mrcImage* averagedImage; lmrcImageAutoRotationCorrelationInfo arInitial; int flagPVM; int flagLogIn; FILE* fptLogIn; int previousFileNumber; int flagLog; FILE* fptLog; /* All Log */ int flagLog2; FILE* fptLog2; /* Cluster Node Log */ /* Output */ float** Distance; } lmrcImageClusterAnalysisInfo;
API
クラスター解析
void lmrcImageClusterAnalysis(int* group, mrcImage* in, int finalclusternum, int N, lmrcImageClusterAnalysisInfo* linfo);
平均画像のマージ(in1に上書きします)
void lmrcImageClusterMerge(mrcImage* in1, mrcImage* in2, int* index, int* averagednum, int m, int n, int* N);
画像間の距離
2画像in1, in2間の距離を算出し、disへ格納します。
void lmrcImageDistanceCalc(float* dis, mrcImage* in1, mrcImage* in2, int mode);
mode | 距離の算出方法 |
---|---|
lmrcImageClusterAnalysisModeCorrelation | 相関値の最大から算出して-1を掛ける |
lmrcImageClusterAnalysisModeEuclidDistance | ユークリッド距離から算出 |
lmrcImageClusterAnalysisModeWardMethod | ユークリッド距離から算出して二乗する |
lmrcImageClusterAnalysisModeWardMethodLinearCorrelation | リニア相関から算出 |
lmrcImageClusterAnalysisModeLinearCorrelation | 上記と同じ |
float lmrcImageDistanceCalcByWardMethod(mrcImage* in1, mrcImage* in2, int num1, int num2, int mode);
mode | 距離の算出方法 |
---|---|
lmrcImageClusterAnalysisModeWardMethod | ユークリッド距離から算出 |
lmrcImageClusterAnalysisModeWardMethodLinearCorrelation | リニア相関から算出 |
float lmrcImageDistanceCalcWithAutoRotation(mrcImage* out, mrcImage* cor, mrcImage* in1, mrcImage* in2, lmrcImageAutoRotationCorrelationInfo* linfo, int lmode, int mode);
mode | 距離の算出方法 |
---|---|
lmrcImageClusterAnalysisModeCorrelation | 最大相関値から算出して-1を掛ける |
lmrcImageClusterAnalysisModeEuclidDistance | ユークリッド距離から算出 |
lmrcImageClusterAnalysisModeLinearCorrelation | リニア相関値から算出 |
float lmrcImageDistanceCalcByWardMethodWithAutoRotation(mrcImage* out, mrcImage* cor, mrcImage* in1, mrcImage* in2, int num1, int num2, lmrcImageAutoRotationCorrelationInfo* linfo, int lmode, int mode);
mode | 距離の算出方法 |
---|---|
lmrcImageClusterAnalysisModeWardMethod | ユークリッド距離から算出 |
lmrcImageClusterAnalysisModeWardMethodLinearCorrelation | リニア相関値から算出 |
繰り返し回数
float lmrcImageClusterAnalysisByIteration(int* group, mrcImage* in, int clusternum, int N, int mode);
ファイル入出力
ログの書き出し
void lmrcImageClusterAnalysisDistanceToLog(FILE* fpt, int n, int m, int prevM, int prevN, float distance);
ログの読み込み
void lmrcImageClusterAnalysisDistanceFromLog(int* skip, float* distance, FILE* fpt);