OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/eos/base
[eos/hostdependX86LINUX64.git] / include / lmrcImageOrientationSearchBySimultaneousMinimization.h
1 /*
2 # lmrcImageOrientationSearchBySimultaneousMinimization.h : $Revision$  
3 # $Date$ 
4 # Created by $Author$
5 # Usage : lmrcImageOrientationSearchBySimultaneousMinimization.h 
6 # Attention
7 #   $Loccker$
8 #       $State$ 
9 #
10 */
11 /* $Log$ */
12
13 #include "mrcImage.h"
14 #include "Memory.h"
15 #include "String.h"
16 #include "genUtil.h"
17 #include "lCommonLineCalculation.h"
18
19 #define WORDLEN  (1024)
20 #define PHIMIN   (0)
21 #define PHIMAX   (2*M_PI-(M_PI/180/2))
22 #define THETAMIN (0)
23 #define THETAMAX (M_PI)
24 #define PSIMIN   (0)
25 #define PSIMAX   (2*M_PI-(M_PI/180/2))
26
27
28
29 typedef struct EulerAngle {
30         char* filename;
31
32         float phi;
33         float theta;
34         float psi;
35 } EulerAngle;
36
37 typedef struct lmrcImageOrientationSearchBySimultaneousMinimizationInfo {
38         int    filenum;
39         char*  OutFileName;
40
41         float  dtheta;
42         float  dpsi;
43
44         int    mode;
45         int    initialrandomdata;
46         int    modeinitialdata;
47         int    ModeStartPoint;
48         int    ModeAngularArea;
49         int    ModeL;
50         int    ModeThresholdAngular;
51         int    ModeCalculationArea;
52         int    ModeFix;
53         double ThresholdCalculationArea;
54
55         char*  LogFileName;
56         char*  Log2FileName;
57         char*  mrc2dFileName;
58         char*  mrc3dFileName;
59
60         int    MaxCount;
61         char*  FileNameHeader;
62
63         EulerAngle* angle;
64 } lmrcImageOrientationSearchBySimultaneousMinimizationInfo;
65
66 typedef struct PlaneRotationAngle {
67         float theta;
68         float phi;
69 } PlaneRotationAngle;
70
71 typedef struct CommonLineData {
72         float angleRef;
73         float angleOther;
74         float angularweight;
75         int   num;
76         int   flag;
77 } CommonLineData;
78
79 double
80 lLcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* refOneLineFT, mrcImage* otherOneLineFT, 
81                           mrcImage* refOneLineSino, mrcImage* otherOneLineSino, CommonLineData* commonlinedata, double delU, int Num, int mode);
82
83 int
84 lAllCommonLineCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, lCommonLineCalculationInfo* CommonLineInfo, int N,
85                           PlaneRotationAngle* planerotationAngle, CommonLineData* Workcommonlinedata, int j, int mode);
86
87 int
88 lJcalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, int mode);
89
90 void
91 lPlaneRotationAngleSet(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, PlaneRotationAngle* planerotationAngle, int mode);
92
93 void
94 lAngularWeightCalculation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* commonlinedata, int CommonLineNum, int mode);
95
96 void
97 lCommonLineDataSetInPlaneRotation(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* commonlinedata,
98                                   CommonLineData* commonlinedataWithPlaneRotation, int PlaneRotationNum, int CommonLineNum, int i,
99                                   int* PlaneRotationFileNum, mrcImage* ref, int mode);
100
101 int
102 lCommonLinesDataSet(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, CommonLineData* Workcommonlinedata, CommonLineData* commonlinedata, int mode);
103
104 void
105 lInitialDataFileRead(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, FILE* fpt, int mode);
106
107 void
108 lmrcImageOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode);
109
110 void
111 lmrcImageFTOneLineGet(mrcImage* out, mrcImage* in, float angle, int mode);
112
113 void
114 lmrcImageOneLineFTCreate(lmrcImageOrientationSearchBySimultaneousMinimizationInfo* linfo, mrcImage* ref, mrcImage* other,
115                          mrcImage* refOneLineFT, mrcImage* otherOneLineFT, float RefAngle, float OtherAngle, int mode);
116
117 double 
118 lmrcImageOneLineSinogramCorrelationAdditionalWeight(mrcImage* in, mrcImage* ref, int mode);