OSDN Git Service

Merge branch 'master' of git.osdn.jp:/gitroot/eos/base
[eos/base.git] / src / Tools / mrcImage / mrcImageFeatureCalc / src / mrcImageFeatureCalc.c
index a136c7c..362928a 100755 (executable)
@@ -40,6 +40,8 @@ main(int argc, char* argv[])
        mrcImage in;
        mrcImage out;
        mrcImage label;
+  mrcImage density;
+  mrcImage densityWeightedArea;
        lmrcImagePerimeterCalcInfo lperi;
        mrcImage peri;
        lmrcImageSurfaceAreaCalcInfo lsurface;
@@ -54,6 +56,9 @@ main(int argc, char* argv[])
        DEBUGPRINT("Program Start\n");
 
        mrcFileRead(&in, info.In, "in main", 0);
+  if(info.flagInDensity) {
+         mrcFileRead(&density, info.InDensity, "in main", 0);
+  }
 
        DEBUGPRINT("lmrcImageLabeling\n");
        lmrcImageLabeling(&label, &in, info.neighbor, 1);
@@ -62,7 +67,7 @@ main(int argc, char* argv[])
        linfo.flagNumber = 0;
        lmrcImageBasicFeatureCalc(&out, &linfo, &label, info.mode);
 
-       if(info.flagOutPerimeter) {
+       if(info.flagOutPerimeter || info.flagOutChain) {
                if(in.HeaderN.z<=1) {
                        lperi.flagArea=0;
                        switch(info.neighbor) {
@@ -94,7 +99,12 @@ main(int argc, char* argv[])
                                        mrcPixelHowNearest);
                                linfo.each[i].flagPerimeter = 1;                        
                        }
-                       mrcFileWrite(&peri, info.OutPerimeter, "in main", 0);
+      if(info.flagOutPerimeter) {
+                         mrcFileWrite(&peri, info.OutPerimeter, "in main", 0);
+      }
+      if(info.flagOutChain) {
+                         mrcFileWrite(lperi.ChainCode, info.OutChain, "in main", 0);
+      }
                } else {
                        fprintf(stderr, "Not supported for 3D image\n");
                }
@@ -135,6 +145,9 @@ main(int argc, char* argv[])
        if(info.flagOutLabel) {
                mrcFileWrite(&label, info.OutLabel, "in main", 0);
        }
+  if(info.flagOutDensityWeightedArea) {
+               mrcFileWrite(&densityWeightedArea, info.OutDensityWeightedArea, "in main", 0);
+  }
        exit(EXIT_SUCCESS);
 }