「lFETOrientationSearchByFeatureAlignment(API)」の版間の差分

提供: Eospedia
移動: 案内検索
(API)
行166: 行166:
 
sphの初期設定を行います。
 
sphの初期設定を行います。
 
  extern void lFETFeatureAlignmentSphereInit(lFETFeatureAlignmentSphereInfo* sph, int mode);
 
  extern void lFETFeatureAlignmentSphereInit(lFETFeatureAlignmentSphereInfo* sph, int mode);
 +
<br>
 +
 +
info->sphにて特徴量の設定を行います。
 +
extern void lFETFeatureAlignmentSphereFeatureSet(lFETFeatureAlignmentInfo* info);
 
<br>
 
<br>
  
行178: 行182:
 
sphのある向きの特徴量を中心の特徴量にします。ある向きは(x, y, z)=(10, 7, 5)としています。
 
sphのある向きの特徴量を中心の特徴量にします。ある向きは(x, y, z)=(10, 7, 5)としています。
 
  extern void lFETFeatureAlignmentSphereRandDisturb(lFETFeatureAlignmentSphereInfo* sph);
 
  extern void lFETFeatureAlignmentSphereRandDisturb(lFETFeatureAlignmentSphereInfo* sph);
<br>
 
 
info->sphにて特徴量の設定を行います。
 
extern void lFETFeatureAlignmentSphereFeatureSet(lFETFeatureAlignmentInfo* info);
 
 
<br>
 
<br>
  
行188: 行188:
 
<br>
 
<br>
  
 +
4 images selected by 90degree rule
 
  extern void lFETFeatureAlignmentInitSet_i2PCA(lFETFeatureAlignmentInfo* info);
 
  extern void lFETFeatureAlignmentInitSet_i2PCA(lFETFeatureAlignmentInfo* info);
 +
<br>
 +
 +
1 image of image has largest radius
 +
info->seedImageをシードとする
 
  extern void lFETFeatureAlignmentInitSet_i1L(lFETFeatureAlignmentInfo* info);
 
  extern void lFETFeatureAlignmentInitSet_i1L(lFETFeatureAlignmentInfo* info);
 +
 +
flagLX == targetをシードとする
 
  extern void lFETFeatureAlignmentInitSet_i1Ls(lFETFeatureAlignmentInfo* info, int target);
 
  extern void lFETFeatureAlignmentInitSet_i1Ls(lFETFeatureAlignmentInfo* info, int target);
 +
<br>
 +
 
  extern void lFETFeatureAlignmentInitPreSet_i1Lss(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i1LssInitInfo* out, 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 lFETFeatureAlignmentInitSet_i1Lss(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i1LssInitInfo* out, int mode);
行197: 行206:
 
  extern void lFETFeatureAlignmentInitSet_i2LM(lFETFeatureAlignmentInfo* info);
 
  extern void lFETFeatureAlignmentInitSet_i2LM(lFETFeatureAlignmentInfo* info);
 
  extern void lFETFeatureAlignmentInitSet_i21LMLX(lFETFeatureAlignmentInfo* info);
 
  extern void lFETFeatureAlignmentInitSet_i21LMLX(lFETFeatureAlignmentInfo* info);
 +
<br>
 +
 +
all images with random angles consist
 
  extern void lFETFeatureAlignmentInitSet_random(lFETFeatureAlignmentInfo* info);
 
  extern void lFETFeatureAlignmentInitSet_random(lFETFeatureAlignmentInfo* info);
 +
<br>
 +
 +
2 images of image has largest radius
 
  extern void lFETFeatureAlignmentInitSet_i2LXs(lFETFeatureAlignmentInfo* info, int target);
 
  extern void lFETFeatureAlignmentInitSet_i2LXs(lFETFeatureAlignmentInfo* info, int target);
 
  extern void lFETFeatureAlignmentInitPreSet_i11LMLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i11LMLXsInitInfo* out);
 
  extern void lFETFeatureAlignmentInitPreSet_i11LMLXs(lFETFeatureAlignmentInfo* info, lFETFeatureAlignment_i11LMLXsInitInfo* out);

2015年3月25日 (水) 07:22時点における版

DataManip/transform/src/lFETOrientationSearchByFeatureAlignmentFETOrientationSearchByFeatureAlignmentのための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;
メンバ 説明
t
w
a 歪度
k 尖度


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;


curSwitch: 0, 1: データ切り替えのためのスイッチとして使用

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

FeatureAlignmentによる角度探索

extern void lFETOrientationSearchByFeatureAlignment(lFETOrientationSearchByFeatureAlignmentInfo in, int mode);


sphの初期設定を行います。

extern void lFETFeatureAlignmentSphereInit(lFETFeatureAlignmentSphereInfo* sph, int mode);


info->sphにて特徴量の設定を行います。

extern void lFETFeatureAlignmentSphereFeatureSet(lFETFeatureAlignmentInfo* info);


sphの分割データ(self, fets)をsph->curSwitchの切り替えて格納します。元のデータは解放します。(sph->curSwitchは新しい格納場所を指します)

extern void lFETFeatureAlignmentSphereDevide(lFETFeatureAlignmentSphereInfo* sph);


sphの縮退データをsph->curSwitchの切り替えて格納します。元のデータは解放します。(sph->curSwitchは新しい格納場所を指します)

extern void lFETFeatureAlignmentSphereDegenerate(lFETFeatureAlignmentSphereInfo* sph);


sphのある向きの特徴量を中心の特徴量にします。ある向きは(x, y, z)=(10, 7, 5)としています。

extern void lFETFeatureAlignmentSphereRandDisturb(lFETFeatureAlignmentSphereInfo* sph);


inから参照データリストを作成し、outへ格納します。

extern int lFETFeatureAlignmentSphereRefGenerate(lFETFeatureAlignmentInfo* in, lFETFeatureAlignmentImageInfo* out);


4 images selected by 90degree rule

extern void lFETFeatureAlignmentInitSet_i2PCA(lFETFeatureAlignmentInfo* info);


1 image of image has largest radius info->seedImageをシードとする

extern void lFETFeatureAlignmentInitSet_i1L(lFETFeatureAlignmentInfo* info);

flagLX == targetをシードとする

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);


all images with random angles consist

extern void lFETFeatureAlignmentInitSet_random(lFETFeatureAlignmentInfo* info);


2 images of image has largest radius

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);


4つの座標a, b, c, dを合計し、正規化した座標を返します。

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


aとbの外積をansへ格納します。(2軸に直交するベクトルを算出)

extern void lFETFAvectorProduct1(double* a, double* b, double* ans);