「lmrcImageOrientationSearchBySimultaneousMinimization(API)」の版間の差分
提供: Eospedia
(→API) |
(→API) |
||
| 行65: | 行65: | ||
lLcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* refOneLineFT, mrcImage* otherOneLineFT, | lLcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* refOneLineFT, mrcImage* otherOneLineFT, | ||
mrcImage* refOneLineSino, mrcImage* otherOneLineSino, CommonLineData* commonlinedata, double delU, int Num, int mode); | mrcImage* refOneLineSino, mrcImage* otherOneLineSino, CommonLineData* commonlinedata, double delU, int Num, int mode); | ||
| + | <br> | ||
CommonLineInfoから全てのコモンライン数を返します。 | CommonLineInfoから全てのコモンライン数を返します。 | ||
| 行70: | 行71: | ||
lAllCommonLineCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, lCommonLineCalculationInfo* CommonLineInfo, int N, | lAllCommonLineCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, lCommonLineCalculationInfo* CommonLineInfo, int N, | ||
PlaneRotationAngle* planerotationAngle, CommonLineData* Workcommonlinedata, int j, int mode); | PlaneRotationAngle* planerotationAngle, CommonLineData* Workcommonlinedata, int j, int mode); | ||
| + | <br> | ||
int | int | ||
lJcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, int mode); | lJcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, int mode); | ||
| + | <br> | ||
linfo->dthetaからphi, thetaの角度の組み合わせを算出し、planerotationAngleへ格納します。 | linfo->dthetaからphi, thetaの角度の組み合わせを算出し、planerotationAngleへ格納します。 | ||
void | void | ||
lPlaneRotationAngleSet(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, PlaneRotationAngle* planerotationAngle, int mode); | lPlaneRotationAngleSet(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, PlaneRotationAngle* planerotationAngle, int mode); | ||
| + | <br> | ||
| + | commonlinedata[i].angleRefからコモンラインの重みを算出し、commonlinedata[i].angularweightに格納します。 | ||
void | void | ||
lAngularWeightCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* commonlinedata, int CommonLineNum, int mode); | lAngularWeightCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* commonlinedata, int CommonLineNum, int mode); | ||
| + | linfo->ModeThresholdAngularにより角度の閾値を設定できます。 | ||
| + | <table border=1> | ||
| + | <tr> | ||
| + | <th>linfo->ModeThresholdAngular</th> | ||
| + | <th>角度の閾値</th> | ||
| + | </tr> | ||
| + | <tr> | ||
| + | <td>0</td> | ||
| + | <td>1.0e-4</td> | ||
| + | </tr> | ||
| + | <tr> | ||
| + | <td>1</td> | ||
| + | <td>M_PI/180</td> | ||
| + | </tr> | ||
| + | <tr> | ||
| + | <td>2</td> | ||
| + | <td>linfo->dpsi</td> | ||
| + | </tr> | ||
| + | </table> | ||
| + | <br> | ||
void | void | ||
| 行85: | 行110: | ||
CommonLineData* commonlinedataWithPlaneRotation, int PlaneRotationNum, int CommonLineNum, int i, | CommonLineData* commonlinedataWithPlaneRotation, int PlaneRotationNum, int CommonLineNum, int i, | ||
int* PlaneRotationFileNum, mrcImage* ref, int mode); | int* PlaneRotationFileNum, mrcImage* ref, int mode); | ||
| + | <br> | ||
Workcommonlinedataの各要素のメンバの内、angleRef, angleOhter, numをそれぞれlinfoの各要素へ格納します。<br> | Workcommonlinedataの各要素のメンバの内、angleRef, angleOhter, numをそれぞれlinfoの各要素へ格納します。<br> | ||
| 行90: | 行116: | ||
int | int | ||
lCommonLinesDataSet(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* Workcommonlinedata, CommonLineData* commonlinedata, int mode); | lCommonLinesDataSet(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* Workcommonlinedata, CommonLineData* commonlinedata, int mode); | ||
| + | <br> | ||
void | void | ||
lInitialDataFileRead(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, FILE* fpt, int mode); | lInitialDataFileRead(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, FILE* fpt, int mode); | ||
| + | <br> | ||
void | void | ||
lmrcImageOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode); | lmrcImageOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode); | ||
| + | <br> | ||
void | void | ||
lmrcImageFTOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode); | lmrcImageFTOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode); | ||
| + | <br> | ||
void | void | ||
lmrcImageOneLineFTCreate(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* ref, mrcImage* other, | lmrcImageOneLineFTCreate(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* ref, mrcImage* other, | ||
mrcImage* refOneLineFT, mrcImage* otherOneLineFT, float RefAngle, float OtherAngle, int mode); | mrcImage* refOneLineFT, mrcImage* otherOneLineFT, float RefAngle, float OtherAngle, int mode); | ||
| + | <br> | ||
double | double | ||
lmrcImageOneLineSinogramCorrelationAdditionalWeight(mrcImage* in, mrcImage* ref, int mode); | lmrcImageOneLineSinogramCorrelationAdditionalWeight(mrcImage* in, mrcImage* ref, int mode); | ||
2015年3月23日 (月) 04:26時点における版
DataManip/transform/src/lmrcImageOrientationSearchBySimultaneousMinimizationはmrcImageOrientationSearchBySimultaneousMinimizationのためのAPI です。
定数
#define WORDLEN (1024) #define PHIMIN (0) #define PHIMAX (2*M_PI-(M_PI/180/2)) #define THETAMIN (0) #define THETAMAX (M_PI) #define PSIMIN (0) #define PSIMAX (2*M_PI-(M_PI/180/2))
構造体
typedef struct EulerAngle {
char* filename;
float phi;
float theta;
float psi;
} EulerAngle;
typedef struct lmrcImageOrientationSearchBySimultaneousMinimizationInfo {
int filenum;
char* OutFileName;
float dtheta;
float dpsi;
int mode;
int initialrandomdata;
int modeinitialdata;
int ModeStartPoint;
int ModeAngularArea;
int ModeL;
int ModeThresholdAngular;
int ModeCalculationArea;
int ModeFix;
double ThresholdCalculationArea;
char* LogFileName;
char* Log2FileName;
char* mrc2dFileName;
char* mrc3dFileName;
int MaxCount;
char* FileNameHeader;
EulerAngle* angle;
} lmrcImageOrientationSearchBySimultaneousMinimizationInfo;
typedef struct PlaneRotationAngle {
float theta;
float phi;
} PlaneRotationAngle;
typedef struct CommonLineData {
float angleRef;
float angleOther;
float angularweight;
int num;
int flag;
} CommonLineData;
API
double lLcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* refOneLineFT, mrcImage* otherOneLineFT, mrcImage* refOneLineSino, mrcImage* otherOneLineSino, CommonLineData* commonlinedata, double delU, int Num, int mode);
CommonLineInfoから全てのコモンライン数を返します。
int
lAllCommonLineCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, lCommonLineCalculationInfo* CommonLineInfo, int N,
PlaneRotationAngle* planerotationAngle, CommonLineData* Workcommonlinedata, int j, int mode);
int lJcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, int mode);
linfo->dthetaからphi, thetaの角度の組み合わせを算出し、planerotationAngleへ格納します。
void lPlaneRotationAngleSet(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, PlaneRotationAngle* planerotationAngle, int mode);
commonlinedata[i].angleRefからコモンラインの重みを算出し、commonlinedata[i].angularweightに格納します。
void lAngularWeightCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* commonlinedata, int CommonLineNum, int mode);
linfo->ModeThresholdAngularにより角度の閾値を設定できます。
| linfo->ModeThresholdAngular | 角度の閾値 |
|---|---|
| 0 | 1.0e-4 |
| 1 | M_PI/180 |
| 2 | linfo->dpsi |
void
lCommonLineDataSetInPlaneRotation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* commonlinedata,
CommonLineData* commonlinedataWithPlaneRotation, int PlaneRotationNum, int CommonLineNum, int i,
int* PlaneRotationFileNum, mrcImage* ref, int mode);
Workcommonlinedataの各要素のメンバの内、angleRef, angleOhter, numをそれぞれlinfoの各要素へ格納します。
また、面内回転によって重なる画像数を返します。
int lCommonLinesDataSet(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* Workcommonlinedata, CommonLineData* commonlinedata, int mode);
void lInitialDataFileRead(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, FILE* fpt, int mode);
void lmrcImageOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode);
void lmrcImageFTOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode);
void
lmrcImageOneLineFTCreate(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* ref, mrcImage* other,
mrcImage* refOneLineFT, mrcImage* otherOneLineFT, float RefAngle, float OtherAngle, int mode);
double lmrcImageOneLineSinogramCorrelationAdditionalWeight(mrcImage* in, mrcImage* ref, int mode);