「lmrcImageOrientationSearchBySimultaneousMinimization(API)」の版間の差分
提供: Eospedia
(→API) |
(→API) |
||
行114: | 行114: | ||
<br> | <br> | ||
+ | linfo->dthetaからphi, thetaの角度の組み合わせ数を返します。 | ||
int | int | ||
lJcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, int mode); | lJcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, int mode); |
2015年3月23日 (月) 05:24時点における版
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);
linfo->ModeLによりLの算出方法を選択できます。
linfo->ModeL | 説明 |
---|---|
0 | differential of length |
1 | differential of phase |
2 | addition to derivation1D (multiply) |
3 | addition to derivation1D (difference) |
linfo->ModeCalculationAreaによりLの算出範囲を設定します。
linfo->ModeCalculationArea | 説明 |
---|---|
0 | 全ての範囲 |
1 | linfo->ThresholdCalculationArea/delU以下はカット |
CommonLineInfoから全てのコモンライン数を返します。
int lAllCommonLineCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, lCommonLineCalculationInfo* CommonLineInfo, int N, PlaneRotationAngle* planerotationAngle, CommonLineData* Workcommonlinedata, int j, int mode);
linfo->dthetaからphi, thetaの角度の組み合わせ数を返します。
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);
入力in(実画像)から角度angle[radian]の成分のみを取り出し、outへ格納します。
void lmrcImageOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode);
入力in(フーリエ画像)から角度angle[radian]の成分のみを取り出し、outへ格納します。
void lmrcImageFTOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode);
フーリエ画像から指定した角度[radian]の成分のみを取り出します。
void lmrcImageOneLineFTCreate(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* ref, mrcImage* other, mrcImage* refOneLineFT, mrcImage* otherOneLineFT, float RefAngle, float OtherAngle, int mode);
入力、角度、出力は下記のようになっています。
入力 | 角度 | 出力 |
---|---|---|
ref | RefAngle | refOneLineFT |
other | OtherAngle | otherOneLineFT |
double lmrcImageOneLineSinogramCorrelationAdditionalWeight(mrcImage* in, mrcImage* ref, int mode);