Skip to content
Snippets Groups Projects
fslslice.cc 1.33 KiB
/*  avwslice.cc

    Tim Behrens, FMRIB Image Analysis Group

    Copyright (C) 2000-2001 University of Oxford  */

/*  CCOPYRIGHT  */

#include "newimage/newimageall.h"
#include "newimage/fmribmain.h"
#include "miscmaths/miscmaths.h"

using namespace NEWIMAGE;
using namespace MISCMATHS;


string zeropad_numeric_string(string in,unsigned int len){
  string out=in;
  while(out.length() < len){
    out="0"+out;
  }
  return out;
}


template <class T>
int fmrib_main(int argc, char *argv[])
{
  volume4D<T> grot;
  volume4D<T> tmp;
  string iname=string(argv[1]);
  read_volume4D(grot,iname);
  string base;
  
  if(argc==2)
    base=iname;
  else
    base=string(argv[2]);
  
  make_basename(base);
  
  for(int z=0;z<grot.zsize();z++){
    grot.setROIlimits(grot.minx(),grot.miny(),z,grot.mint(),grot.maxx(),grot.maxy(),z,grot.maxt());
    grot.activateROI();
    tmp=grot.ROI();
    string oname=base+"_slice_"+zeropad_numeric_string(num2str(z),4);
    cerr<<"writing slice "<<z<<'\r';
    save_volume4D(tmp,oname);
  }
  return 0;
}

int main(int argc,char *argv[])
{
  
  Tracer tr("main");
  
  if(argc<2){
    cout <<"Usage: avwslice <volume>"<<endl;
    cout<<endl;
    cout <<"Usage: avwslice <volume> <output basename>"<<endl;
    cout<<endl; 
    return -1;
  }
  string iname=string(argv[1]);
  return call_fmrib_main(dtype(iname),argc,argv);
}