-
Stephen Smith authoredStephen Smith authored
fslcomplex.cc 6.95 KiB
/* avwcomplex.cc
Mark Jenkinson, FMRIB Image Analysis Group
Copyright (C) 2000-2001 University of Oxford */
/* CCOPYRIGHT */
#include "newimageall.h"
using namespace NEWIMAGE;
void print_usage(const string& progname) {
cerr << "Usage: " << progname << " <-outputtype> <input> <output> [startvol [endvol]]" << endl << endl;
cerr << " " << progname << " -realabs complexvol absvol"
<< " [startvol [endvol]]" << endl;
cerr << " " << progname << " -realphase complexvol phasevol"
<< " [startvol [endvol]]" << endl;
cerr << " " << progname << " -realpolar complexvol absvol phasevol"
<< " [startvol [endvol]]" << endl;
cerr << " " << progname << " -realcartesian complexvol realvol"
<< " imagvol [startvol [endvol]]" << endl;
cerr << " " << progname << " -complex realvol imagvol"
<< " complexvol [startvol [endvol]]" << endl;
cerr << " " << progname << " -complexpolar absvol phasevol"
<< " complexvol [startvol [endvol]]" << endl;
cerr << " " << progname << " -complexsplit source dest"
<< " [startvol [endvol]]" << endl;
cerr << " " << progname << " -complexmerge source1 source2 dest"
<< endl;
}
void fix_start_and_end(int& start, int& end, int mint, int maxt)
{
if (start<0) { start=mint; }
if (start<mint) start=mint;
if (start>maxt) start=maxt;
if (end<0) { end=maxt; }
if (end<mint) end=mint;
if (end>maxt) end=maxt;
}
void realpolar(const string& fin, const string& fabs, const string& fphase,
int start, int end)
{
volume4D<float> vreal, vimag;
volumeinfo vinfo;
read_complexvolume4D(vreal, vimag, fin, vinfo);
fix_start_and_end(start,end,vreal.mint(),vreal.maxt());
if (fabs.size()>0) {
volume4D<float> vabs;
for (int n=start; n<=end; n++) {
vabs.addvolume(abs(vreal[n],vimag[n]));
}
save_volume4D(vabs,fabs,vinfo);
}
if (fphase.size()>0) {
volume4D<float> vphase;
for (int n=start; n<=end; n++) {
vphase.addvolume(phase(vreal[n],vimag[n]));
}
save_volume4D(vphase,fphase,vinfo);
}
}
void realcartesian(const string& fin, const string& freal, const string& fimag,