OSDN Git Service

SamplingUnitChange -R option were added.
[eos/base.git] / src / Objects / DataManip / mrcImage / src / lmrcImageSamplingUnitChange.c
index 3fe4bb5..c887e3e 100755 (executable)
@@ -35,21 +35,33 @@ lmrcImageSamplingUnitChange(mrcImage* out, mrcImage* in, lmrcImageSamplingUnitCh
     ky = in->HeaderLength.y/out->HeaderLength.y;
     kz = in->HeaderLength.z/out->HeaderLength.z;
 
-    out->HeaderN.x = in->HeaderN.x*kx;
-    out->HeaderN.y = in->HeaderN.y*ky;
-    out->HeaderN.z = in->HeaderN.z*kz;
+    if(1<in->HeaderN.x) {
+        out->HeaderN.x = in->HeaderN.x*kx;
+    } else {
+        out->HeaderN.x = 1;
+    }
+    if(1<in->HeaderN.y) {
+        out->HeaderN.y = in->HeaderN.y*ky;
+    } else {
+        out->HeaderN.y = 1;
+    }
+    if(1<in->HeaderN.z) {
+        out->HeaderN.z = in->HeaderN.z*kz;
+    } else {
+        out->HeaderN.z = 1;
+    }
 
        out->HeaderStartN.x = in->HeaderStartN.x*in->HeaderLength.x/out->HeaderLength.x;
        out->HeaderStartN.y = in->HeaderStartN.y*in->HeaderLength.y/out->HeaderLength.y;
        out->HeaderStartN.z = in->HeaderStartN.z*in->HeaderLength.z/out->HeaderLength.z;
     mrcInit(out, NULL);
 
+    for(z=0; z<out->HeaderN.z; z++) {
+    for(y=0; y<out->HeaderN.y; y++) {
     for(x=0; x<out->HeaderN.x; x++) {
-        for(y=0; y<out->HeaderN.y; y++) {
-            for(z=0; z<out->HeaderN.z; z++) {
-                mrcPixelDataGet(in, x/kx, y/ky, z/kz, &data, mrcPixelRePart, info.SamplingMethodMode);
-                mrcPixelDataSet(out, x, y, z, data, mrcPixelRePart);
-            }
-        }   
+        mrcPixelDataGet(in, x/kx, y/ky, z/kz, &data, mrcPixelRePart, info.SamplingMethodMode);
+        mrcPixelDataSet(out, x, y, z, data, mrcPixelRePart);
+    }
+    }   
     }
 }