typedef struct lmrc2hdfInfo {
int numFile;
int nResolution;
+ int flagIn;
+ mrcImage* in;
+ float inColor[4];
+ int flagIn2;
+ mrcImage* in2;
+ float in2Color[4];
} lmrc2hdfInfo;
typedef enum lmrc2hdfMode {
{
mrc2hdfInfo info;
lmrc2hdfInfo linfo;
- mrcImage* in;
hid_t out;
herr_t status;
DEBUGPRINT("Program Start\n");
if(info.flagIn) {
linfo.numFile = 1;
- in = (mrcImage*)memoryAllocate(sizeof(mrcImage), "in main");
- mrcFileRead(in, info.In, "in main", 0);
+ linfo.in = (mrcImage*)memoryAllocate(sizeof(mrcImage), "in main");
+ mrcFileRead(linfo.in, info.In, "in main", 0);
+ linfo.flagIn = 1;
+ linfo.flagIn2 = 0;
} else if(info.flagInList) {
linfo.numFile = info.flagInList;
- in = (mrcImage*)memoryAllocate(sizeof(mrcImage)*linfo.numFile, "in main");
+ linfo.flagIn = info.flagInList;
+ linfo.in = (mrcImage*)memoryAllocate(sizeof(mrcImage)*linfo.numFile, "in main");
for(i=0; i<linfo.numFile; i++) {
- mrcFileRead(&(in[i]), info.InList[i], "in main", 0);
+ mrcFileRead(&(linfo.in[i]), info.InList[i], "in main", 0);
+ }
+ linfo.inColor[0] = info.IR;
+ linfo.inColor[1] = info.IG;
+ linfo.inColor[2] = info.IB;
+ linfo.inColor[3] = info.IA;
+ if(info.flagInList2) {
+ if(linfo.numFile != info.flagInList2) {
+ fprintf(stderr, "Different Number between -I and -I2: %ld %ld\n", info.flagInList, info.flagInList2);
+ exit(EXIT_FAILURE);
+ }
+ linfo.flagIn2 = info.flagInList2;
+ linfo.in2 = (mrcImage*)memoryAllocate(sizeof(mrcImage)*linfo.numFile, "in main");
+ for(i=0; i<linfo.numFile; i++) {
+ mrcFileRead(&(linfo.in2[i]), info.InList2[i], "in main", 0);
+ }
+ linfo.in2Color[0] = info.I2R;
+ linfo.in2Color[1] = info.I2G;
+ linfo.in2Color[2] = info.I2B;
+ linfo.in2Color[3] = info.I2A;
+ } else {
+ linfo.flagIn2 = 0;
}
} else {
fprintf(stderr, "-i or -I is necessary\n");
switch(info.hdf5mode) {
case 0: {
- lmrc2hdf(&out, in, &linfo, info.mode);
+ lmrc2hdf(&out, linfo.in, &linfo, info.mode);
break;
}
case 1: {
- lmrc2hdfimaris(&out, in, &linfo, info.mode);
+ lmrc2hdfimaris(&out, linfo.in, &linfo, info.mode);
break;
}
default: {
unsigned char* thumbImage;
double sum, min, max, mean;
mrcImage tmpImage;
+ mrcImage* tmpIn;
lmrcImageProjectionInfo lpro;
DEBUGPRINT("Start lmrc2hdfimaris\n");
// DataSet
nres = linfo->nResolution;
ntime = linfo->numFile;
- nchannel = 1;
+ if(0<linfo->flagIn) {
+ nchannel = 1;
+ }
+ if(0<linfo->flagIn2) {
+ nchannel = 2;
+ if(in[0].HeaderN.x != linfo->in2[0].HeaderN.x
+ ||in[0].HeaderN.y != linfo->in2[0].HeaderN.y
+ ||in[0].HeaderN.z != linfo->in2[0].HeaderN.z) {
+ fprintf(stderr, "Different Size : In (%d %d %d) and I2 (%d, %d, %d)\n",
+ linfo->in[0].HeaderN.x, linfo->in[0].HeaderN.y, linfo->in[0].HeaderN.z,
+ linfo->in2[0].HeaderN.x, linfo->in2[0].HeaderN.y, linfo->in2[0].HeaderN.z);
+ exit(EXIT_FAILURE);
+ }
+ }
+
// ResolutionLevel
for(ires=0; ires<nres; ires++) {
sprintf(tmp, "%s/%s %d", groupName[0], "ResolutionLevel", ires);
gIDTime = H5Gcreate2(gIDRes, tmp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
DEBUGPRINT1("%s\n", tmp);
for(ichannel=0; ichannel<nchannel; ichannel++) {
+ switch(ichannel) {
+ case 0:
+ tmpIn = linfo->in;
+ break;
+ case 1:
+ tmpIn = linfo->in2;
+ break;
+ default:
+ fprintf(stderr, "Not supported ichannel: %d\n", ichannel);
+ exit(EXIT_FAILURE);
+ break;
+ }
sprintf(tmp, "%s/%s %d/%s %d/%s %d", groupName[0], "ResolutionLevel", ires, "TimePoint", itime, "Channel", ichannel);
gIDChannel = H5Gcreate2(gIDTime, tmp, H5P_DEFAULT, H5P_DEFAULT, H5P_DEFAULT);
DEBUGPRINT1("%s\n", tmp);
dspaceID = H5Screate_simple(3, dims, NULL);
sprintf(tmp, "%s/%s %d/%s %d/%s %d/%s", groupName[0], "ResolutionLevel", ires, "TimePoint", itime, "Channel", ichannel, "Data");
DEBUGPRINT1("%s\n", tmp);
- DEBUGPRINT1("mode: %d\n", in[ichannel].HeaderMode);
+ DEBUGPRINT1("mode: %d\n", tmpIn[0].HeaderMode);
image = (float*)memoryAllocate(sizeof(float)*dims[0]*dims[1]*dims[2], "in lmrc2hdfimars");
for(i=0; i<256; i++) hist[i] = 0;
for(i=0; i<1024; i++) hist1024[i] = 0;
// image
DEBUGPRINT("image\n");
- if(in[itime].HeaderAMax<=in[itime].HeaderAMin) {
+ if(tmpIn[itime].HeaderAMax<=tmpIn[itime].HeaderAMin) {
fprintf(stderr, "Image data is flat\n");
for(i=0; i<dims[0]*dims[1]*dims[2]; i++) {
- image[i] = in[itime].HeaderAMin;
+ image[i] = tmpIn[itime].HeaderAMin;
hist[0]++;
hist1024[0]++;
}
for(yorg=y*irange;yorg<(y+1)*irange; yorg++) {
for(xorg=x*irange;xorg<(x+1)*irange; xorg++) {
numrange++;
- mrcPixelDataGet(&(in[itime]), xorg, yorg, zorg, &data, mrcPixelRePart, mrcPixelHowNearest);
+ mrcPixelDataGet(&(tmpIn[itime]), xorg, yorg, zorg, &data, mrcPixelRePart, mrcPixelHowNearest);
sum+=data;
}
}