「lFETOrientationSearchByFeatureAlignment(API)」の版間の差分
提供: Eospedia
(ページの作成:「DataManip/transform/src/'''lFETOrientationSearchByFeatureAlignment'''はFETOrientationSearchByFeatureAlignmentのためのAPI です。 == 定数 == #define SphereD...」) |
|||
行72: | 行72: | ||
int mode; | int mode; | ||
}lFETFeatureAlignmentSphereInfo; | }lFETFeatureAlignmentSphereInfo; | ||
− | + | ||
typedef struct lFETFeatureAlignmentInfo{ | typedef struct lFETFeatureAlignmentInfo{ | ||
lFETFeatureAlignmentImageInfo* images; | lFETFeatureAlignmentImageInfo* images; | ||
行132: | 行132: | ||
== API == | == API == | ||
extern void lFETOrientationSearchByFeatureAlignment(lFETOrientationSearchByFeatureAlignmentInfo in, int mode); | extern void lFETOrientationSearchByFeatureAlignment(lFETOrientationSearchByFeatureAlignmentInfo in, int mode); | ||
+ | <br> | ||
+ | |||
+ | sphの初期設定を行います。 | ||
extern void lFETFeatureAlignmentSphereInit(lFETFeatureAlignmentSphereInfo* sph, int mode); | extern void lFETFeatureAlignmentSphereInit(lFETFeatureAlignmentSphereInfo* sph, int mode); | ||
+ | <br> | ||
+ | |||
extern void lFETFeatureAlignmentSphereDevide(lFETFeatureAlignmentSphereInfo* sph); | extern void lFETFeatureAlignmentSphereDevide(lFETFeatureAlignmentSphereInfo* sph); | ||
extern void lFETFeatureAlignmentSphereDegenerate(lFETFeatureAlignmentSphereInfo* sph); | extern void lFETFeatureAlignmentSphereDegenerate(lFETFeatureAlignmentSphereInfo* sph); | ||
行151: | 行156: | ||
extern void lFETFeatureAlignmentInitPreSet_i11LMLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i11LMLXsInitInfo* out); | extern void lFETFeatureAlignmentInitPreSet_i11LMLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i11LMLXsInitInfo* out); | ||
extern void lFETFeatureAlignmentInitSet_i11LMLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i11LMLXsInitInfo* initInfo, int target); | extern void lFETFeatureAlignmentInitSet_i11LMLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i11LMLXsInitInfo* initInfo, int target); | ||
− | + | <br> | |
+ | |||
+ | aの要素をbのメンバへコピーします。 | ||
extern void lFETFAfeaturecpy1(lFETFeatureAlignmentFeature* b, double* a); | extern void lFETFAfeaturecpy1(lFETFeatureAlignmentFeature* b, double* a); | ||
+ | 以下の対応でコピーします。 | ||
+ | <table border=1> | ||
+ | <tr> | ||
+ | <th>bのメンバ</th> | ||
+ | <th>aの要素</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>b->w</td> | ||
+ | <td>a[0]</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>b->a</td> | ||
+ | <td>a[1]</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>b->k</td> | ||
+ | <td>a[2]</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br> | ||
+ | |||
+ | aのメンバをbのメンバへ加えます。(w, a, k) | ||
+ | extern void lFETFAfeatureAdd(lFETFeatureAlignmentFeature* b, lFETFeatureAlignmentFeature* a); | ||
+ | <br> | ||
+ | |||
+ | 2つの座標a, b間の距離を返します。 | ||
extern double lFETFAcalcCoordDistance(lFETFeatureAlignmentCoord a, lFETFeatureAlignmentCoord b); | extern double lFETFAcalcCoordDistance(lFETFeatureAlignmentCoord a, lFETFeatureAlignmentCoord b); | ||
+ | <br> | ||
+ | |||
extern lFETFeatureAlignmentCoord lFETFAcalcCoordSum(lFETFeatureAlignmentCoord a, lFETFeatureAlignmentCoord b, lFETFeatureAlignmentCoord c, lFETFeatureAlignmentCoord d); | extern lFETFeatureAlignmentCoord lFETFAcalcCoordSum(lFETFeatureAlignmentCoord a, lFETFeatureAlignmentCoord b, lFETFeatureAlignmentCoord c, lFETFeatureAlignmentCoord d); | ||
+ | <br> | ||
+ | |||
+ | aの座標とmodeを掛けた値をbの要素へ格納します。 | ||
extern void lFATFAcoordcpy2(lFETFeatureAlignmentCoord* a, double* b, int mode); | extern void lFATFAcoordcpy2(lFETFeatureAlignmentCoord* a, double* b, int mode); | ||
+ | 以下の対応で格納します。 | ||
+ | <table border=1> | ||
+ | <tr> | ||
+ | <th>bの要素</th> | ||
+ | <th>値</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>b[0]</td> | ||
+ | <td>a->x*mode</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>b[1]</td> | ||
+ | <td>a->y*mode</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>b[2]</td> | ||
+ | <td>a->z*mode</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br> | ||
+ | |||
+ | aの要素とmodeを掛けた値をbの座標へ格納します。 | ||
extern void lFETFAcoordcpy1(lFETFeatureAlignmentCoord* b, double* a, int mode); | extern void lFETFAcoordcpy1(lFETFeatureAlignmentCoord* b, double* a, int mode); | ||
+ | 以下の対応で格納します。 | ||
+ | <table border=1> | ||
+ | <tr> | ||
+ | <th>bのメンバ</th> | ||
+ | <th>値</th> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>x</td> | ||
+ | <td>a[0]*mode</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>y</td> | ||
+ | <td>a[1]*mode</td> | ||
+ | </tr> | ||
+ | <tr> | ||
+ | <td>z</td> | ||
+ | <td>a[2]*mode</td> | ||
+ | </tr> | ||
+ | </table> | ||
+ | <br> | ||
+ | |||
extern void lFETFAvectorProduct1(double* a, double* b, double* ans); | extern void lFETFAvectorProduct1(double* a, double* b, double* ans); |
2015年3月25日 (水) 00:41時点における版
DataManip/transform/src/lFETOrientationSearchByFeatureAlignmentはFETOrientationSearchByFeatureAlignmentのためのAPI です。
定数
#define SphereDevNum 2100
構造体
typedef struct lFETOrientationSearchByFeatureAlignmentInfo{ FILE* In; FILE* In2; int flagInType; // 0:Sinogram 1:FET int flagIn2; FILE* Out; int ldn; double srl; int flagInA, flagOutA, flagOut2D, flagOutLOG; int itmax, devmax, mitmax, mdevmax; FILE* InA; FILE* OutA; FILE* Out2D; FILE* OutLOG; int mode; }lFETOrientationSearchByFeatureAlignmentInfo;
typedef struct lFETFeatureAlignmentCoord{ double x, y, z; }lFETFeatureAlignmentCoord;
typedef struct lFETFeatureAlignmentFeature{ double t, w, a, k; }lFETFeatureAlignmentFeature;
typedef struct lFETFeatureAlignmentSpherePointInfo{ lFETFeatureAlignmentCoord self; lFETFeatureAlignmentFeature fets; lFETFeatureAlignmentFeature nfets; int nnum; }lFETFeatureAlignmentSpherePointInfo;
typedef struct lFETFeatureAlignmentImageInfo{ char imagename[256]; lFETFeatureAlignmentFeature* fets; double lenmax; double lenmin; double lensum; int posmax; int posmin; int flagLX; double interAngle; lFETFeatureAlignmentCoord norm, base, yoys; //lFETFeatureAlignmentImageInfoClass group; lFETFeatureAlignmentSpherePointInfo* spt[2]; int next; }lFETFeatureAlignmentImageInfo;
typedef struct lFETFeatureAlignmentImageQSInfo{ lFETFeatureAlignmentFeature** corset; int** cset; int* lxseries; int* nseries; int seed; int num; }lFETFeatureAlignmentImageQSInfo;
typedef struct lFETFeatureAlignmentSphereSquareInfo{ lFETFeatureAlignmentSpherePointInfo** sq; int center; }lFETFeatureAlignmentSphereSquareInfo;
typedef struct lFETFeatureAlignmentSphereInfo{ lFETFeatureAlignmentSphereSquareInfo sq6[2][6]; int curSwitch; int mode; }lFETFeatureAlignmentSphereInfo;
typedef struct lFETFeatureAlignmentInfo{ lFETFeatureAlignmentImageInfo* images; int imagey; int imagenum; double llong; double lmiddle; double lmiddles; double lshort; int ldn; double srl; double corave; FILE* OutLOG; //int groupnum[9]; //int groups[9]; int seedImage, smallImage; lFETFeatureAlignmentSphereInfo sph; //lFETFeatureAlignmentSpherePointInfo* spt; int mode; }lFETFeatureAlignmentInfo;
typedef struct lFETFeatureAlignment_multiselectInfo{ lFETFeatureAlignmentImageInfo* images; double max; }lFETFeatureAlignment_multiselectInfo;
typedef struct lFETFeatureAlignment_i11LMLXsInitInfo{ int lmList[10]; int lxList[10]; int pos[10][10]; //int rev[10][10]; double cvalue[10]; double cor[10][10][2]; }lFETFeatureAlignment_i11LMLXsInitInfo;
typedef struct lFETFeatureAlignment_i2LMsLXsInitInfo{ int ser[2][5][10]; int num[2]; }lFETFeatureAlignment_i2LMsLXsInitInfo;
typedef struct lFETFeatureAlignment_i1LssInitInfo{ lFETFeatureAlignmentImageInfo* images[10]; int** angle[10]; int** nums[10]; int** max; }lFETFeatureAlignment_i1LssInitInfo;
typedef struct lFETFeatureAlignment_initmSelecterInfo{ int mode; FILE* InA; int itmax,devmax,mitmax,mdevmax; lFETFeatureAlignmentInfo* faInfo; lFETFeatureAlignment_multiselectInfo multi; lFETFeatureAlignment_i11LMLXsInitInfo i11LMLXs; lFETFeatureAlignment_i2LMsLXsInitInfo i2LMsLXs; lFETFeatureAlignment_i1LssInitInfo i1Lss; }lFETFeatureAlignment_initmSelecterInfo;
API
extern void lFETOrientationSearchByFeatureAlignment(lFETOrientationSearchByFeatureAlignmentInfo in, int mode);
sphの初期設定を行います。
extern void lFETFeatureAlignmentSphereInit(lFETFeatureAlignmentSphereInfo* sph, int mode);
extern void lFETFeatureAlignmentSphereDevide(lFETFeatureAlignmentSphereInfo* sph); extern void lFETFeatureAlignmentSphereDegenerate(lFETFeatureAlignmentSphereInfo* sph); extern void lFETFeatureAlignmentSphereRandDisturb(lFETFeatureAlignmentSphereInfo* sph); extern void lFETFeatureAlignmentSphereFeatureSet(lFETFeatureAlignmentInfo* info); extern int lFETFeatureAlignmentSphereRefGenerate(lFETFeatureAlignmentInfo* in, lFETFeatureAlignmentImageInfo* out); extern void lFETFeatureAlignmentInitSet_i2PCA(lFETFeatureAlignmentInfo* info); extern void lFETFeatureAlignmentInitSet_i1L(lFETFeatureAlignmentInfo* info); extern void lFETFeatureAlignmentInitSet_i1Ls(lFETFeatureAlignmentInfo* info, int target); extern void lFETFeatureAlignmentInitPreSet_i1Lss(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i1LssInitInfo* out, int target); extern void lFETFeatureAlignmentInitSet_i1Lss(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i1LssInitInfo* out, int mode); extern void lFETFeatureAlignmentInitPreSet_i2LMsLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i2LMsLXsInitInfo* initInfo); extern void lFETFeatureAlignmentInitSet_i2LMsLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i2LMsLXsInitInfo* initInfo, int targetM, int targetS); extern void lFETFeatureAlignmentInitSet_i2LM(lFETFeatureAlignmentInfo* info); extern void lFETFeatureAlignmentInitSet_i21LMLX(lFETFeatureAlignmentInfo* info); extern void lFETFeatureAlignmentInitSet_random(lFETFeatureAlignmentInfo* info); extern void lFETFeatureAlignmentInitSet_i2LXs(lFETFeatureAlignmentInfo* info, int target); extern void lFETFeatureAlignmentInitPreSet_i11LMLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i11LMLXsInitInfo* out); extern void lFETFeatureAlignmentInitSet_i11LMLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i11LMLXsInitInfo* initInfo, int target);
aの要素をbのメンバへコピーします。
extern void lFETFAfeaturecpy1(lFETFeatureAlignmentFeature* b, double* a);
以下の対応でコピーします。
bのメンバ | aの要素 |
---|---|
b->w | a[0] |
b->a | a[1] |
b->k | a[2] |
aのメンバをbのメンバへ加えます。(w, a, k)
extern void lFETFAfeatureAdd(lFETFeatureAlignmentFeature* b, lFETFeatureAlignmentFeature* a);
2つの座標a, b間の距離を返します。
extern double lFETFAcalcCoordDistance(lFETFeatureAlignmentCoord a, lFETFeatureAlignmentCoord b);
extern lFETFeatureAlignmentCoord lFETFAcalcCoordSum(lFETFeatureAlignmentCoord a, lFETFeatureAlignmentCoord b, lFETFeatureAlignmentCoord c, lFETFeatureAlignmentCoord d);
aの座標とmodeを掛けた値をbの要素へ格納します。
extern void lFATFAcoordcpy2(lFETFeatureAlignmentCoord* a, double* b, int mode);
以下の対応で格納します。
bの要素 | 値 |
---|---|
b[0] | a->x*mode |
b[1] | a->y*mode |
b[2] | a->z*mode |
aの要素とmodeを掛けた値をbの座標へ格納します。
extern void lFETFAcoordcpy1(lFETFeatureAlignmentCoord* b, double* a, int mode);
以下の対応で格納します。
bのメンバ | 値 |
---|---|
x | a[0]*mode |
y | a[1]*mode |
z | a[2]*mode |
extern void lFETFAvectorProduct1(double* a, double* b, double* ans);