This repository is a base of Eos.
Revision | 66e85f36497bdd100a784b79da015cd08e460e6c (tree) |
---|---|
Time | 2015-05-16 09:37:40 |
Author | Takuo Yasunaga <yasunaga@bio....> |
Commiter | Takuo Yasunaga |
No vacancy: Labeling
modified: include/lmrcImageLabeling.h
modified: src/Objects/DataManip/mrcImage/src/lmrcImageLabeling.c
modified: src/Objects/DataManip/mrcImage/src/lmrcImageLabeling.h
modified: src/Tools/mrcImage/mrcImageLabeling/src/mrcImageLabeling.c
@@ -12,6 +12,8 @@ | ||
12 | 12 | |
13 | 13 | #include "mrcImage.h" |
14 | 14 | |
15 | +void lmrcImageLabelingUsage(FILE* fpt); | |
15 | 16 | void lmrcImageLabeling(mrcImage* label, mrcImage* in, int mode); |
17 | +void lmrcImageLabelingOrder(mrcImage* label, int mode); | |
16 | 18 | void lmrcImageLabeling2D(mrcImage* label, mrcImage* in, int mode); |
17 | 19 | void lmrcImageLabeling3D(mrcImage* label, mrcImage* in, int mode); |
@@ -10,12 +10,18 @@ | ||
10 | 10 | */ |
11 | 11 | /* $Log$ */ |
12 | 12 | |
13 | -#define DEBUG | |
13 | +#undef DEBUG | |
14 | 14 | #include "genUtil.h" |
15 | 15 | #include "Memory.h" |
16 | 16 | #include "./lmrcImageLabeling.h" |
17 | 17 | |
18 | 18 | void |
19 | +lmrcImageLabelingUsage(FILE* fpt) | |
20 | +{ | |
21 | + fprintf(fpt, "mode: 0 (default: speed)\n"); | |
22 | + fprintf(fpt, " 1 (No vacancy)\n"); | |
23 | +} | |
24 | +void | |
19 | 25 | lmrcImageLabelingOrder(mrcImage* dst, int mode) |
20 | 26 | { |
21 | 27 | mrcImageParaTypeReal x, y, z; |
@@ -26,9 +32,19 @@ lmrcImageLabelingOrder(mrcImage* dst, int mode) | ||
26 | 32 | double data; |
27 | 33 | |
28 | 34 | DEBUGPRINT("lmrcImageLabelingOrder\n"); |
29 | - max = dst->HeaderAMax+1; | |
30 | - num = (int*)memoryAllocate(sizeof(int), "in lmrcImageLabelingOrder"); | |
31 | - newlabel = (int*)memoryAllocate(sizeof(int), "in lmrcImageLabelingOrder"); | |
35 | + max = 0; | |
36 | + for(z=0; z<dst->HeaderN.z; z++) { | |
37 | + for(y=0; y<dst->HeaderN.y; y++) { | |
38 | + for(x=0; x<dst->HeaderN.x; x++) { | |
39 | + mrcPixelDataGet(dst, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest); | |
40 | + if(max<data) { | |
41 | + max = data; | |
42 | + } | |
43 | + } | |
44 | + } | |
45 | + } | |
46 | + num = (int*)memoryAllocate(sizeof(int)*max, "in lmrcImageLabelingOrder"); | |
47 | + newlabel = (int*)memoryAllocate(sizeof(int)*max, "in lmrcImageLabelingOrder"); | |
32 | 48 | for(i=0; i<max; i++) { |
33 | 49 | num[i]=0; |
34 | 50 | newlabel[i]=0; |
@@ -52,13 +68,14 @@ lmrcImageLabelingOrder(mrcImage* dst, int mode) | ||
52 | 68 | j++; |
53 | 69 | } |
54 | 70 | } |
71 | + dst->HeaderAMax = j; | |
55 | 72 | |
56 | 73 | for(z=0; z<dst->HeaderN.z; z++) { |
57 | 74 | for(y=0; y<dst->HeaderN.y; y++) { |
58 | 75 | for(x=0; x<dst->HeaderN.x; x++) { |
59 | 76 | mrcPixelDataGet(dst, x, y, z, &data, mrcPixelRePart, mrcPixelHowNearest); |
60 | 77 | if(0<data) { |
61 | - mrcPixelDataSet(dst, x, y, z, num[(int)(data+0.5)], mrcPixelRePart); | |
78 | + mrcPixelDataSet(dst, x, y, z, newlabel[(int)(data+0.5)], mrcPixelRePart); | |
62 | 79 | } |
63 | 80 | } |
64 | 81 | } |
@@ -87,7 +104,7 @@ lmrcImageLabeling2D(mrcImage* label, mrcImage* in, int mode) | ||
87 | 104 | { |
88 | 105 | mrcImageParaTypeReal x, y, z; |
89 | 106 | double data, mindata, data0, data1, data2, data3, data4; |
90 | - int number, total; | |
107 | + int number, total, max; | |
91 | 108 | |
92 | 109 | DEBUGPRINT("lmrcImageLabeling Start\n"); |
93 | 110 | label->Header = in->Header; |
@@ -100,6 +117,7 @@ lmrcImageLabeling2D(mrcImage* label, mrcImage* in, int mode) | ||
100 | 117 | } |
101 | 118 | |
102 | 119 | number = 0; |
120 | + max = 0; | |
103 | 121 | while(1) { |
104 | 122 | total = 0; |
105 | 123 | for(y=0; y<in->HeaderN.y; y++) { |
@@ -163,7 +181,6 @@ lmrcImageLabeling2D(mrcImage* label, mrcImage* in, int mode) | ||
163 | 181 | break; |
164 | 182 | } |
165 | 183 | } |
166 | - label->HeaderAMax = number; | |
167 | 184 | } |
168 | 185 | |
169 | 186 | void |
@@ -12,6 +12,8 @@ | ||
12 | 12 | |
13 | 13 | #include "mrcImage.h" |
14 | 14 | |
15 | +void lmrcImageLabelingUsage(FILE* fpt); | |
15 | 16 | void lmrcImageLabeling(mrcImage* label, mrcImage* in, int mode); |
17 | +void lmrcImageLabelingOrder(mrcImage* label, int mode); | |
16 | 18 | void lmrcImageLabeling2D(mrcImage* label, mrcImage* in, int mode); |
17 | 19 | void lmrcImageLabeling3D(mrcImage* label, mrcImage* in, int mode); |
@@ -56,4 +56,5 @@ void | ||
56 | 56 | additionalUsage() |
57 | 57 | { |
58 | 58 | fprintf(stderr, "----- Additional Usage -----\n"); |
59 | + lmrcImageLabelingUsage(stderr); | |
59 | 60 | } |
@@ -13,6 +13,8 @@ Options: | ||
13 | 13 | [-c[onfig] configFile (NULL ).as(inFile ) ] :Optional :ConfigurationFile |
14 | 14 | [-m[ode] mode (0 ).as(Integer ) ] :Optional :Mode |
15 | 15 | ----- Additional Usage ----- |
16 | +mode: 0 (default: speed) | |
17 | + 1 (No vacancy) | |
16 | 18 | </PRE> |
17 | 19 | </BODY> |
18 | 20 | </HTML> |
@@ -18,3 +18,7 @@ exec: | ||
18 | 18 | @echo "----- Calc check -----" |
19 | 19 | |
20 | 20 | clean: |
21 | + | |
22 | +init: | |
23 | + mrcImageBinalization -i $(DATA).mrc -o $(DATA).bin -t 240 | |
24 | + mrcImageOpening -i $(DATA).bin -o $(DATA).open -m 2 -times 2 -r 1 |