DMRITool  v0.1.1-139-g860d86b4
Diffusion MRI Tool
SamplingSchemeQSpaceIncrementalEstimation.cxx
Go to the documentation of this file.
1 
19 #include "utl.h"
22 
23 #include "SamplingSchemeQSpaceIncrementalEstimationCLP.h"
24 
29 int
30 main (int argc, char const* argv[])
31 {
32 
33  PARSE_ARGS;
34 
35  typedef itk::SamplingSchemeQSpace<double> SamplingType;
36  typedef SamplingType::Pointer SamplingPointer;
38  EstimationType::Pointer estimator = EstimationType::New();
39 
40  utlGlobalException(_NumberOfSamples.size()==0, "should give the numbers of samples in shells");
41  EstimationType::IndexVectorType numbers(_NumberOfSamples.size());
42  for ( unsigned int i = 0; i < _NumberOfSamples.size(); i += 1 )
43  numbers[i] = _NumberOfSamples[i];
44 
45  EstimationType::MatrixPointer fineOrientations(new EstimationType::MatrixType());
46 
47  estimator->SetDebug(_Debug);
48  estimator->SetNumbersInShell(numbers);
49  estimator->SetTessellationOrder(_Order);
50  if (_Criteria=="DISTANCE")
51  estimator->SetCriteriaType(EstimationType::DISTANCE);
52  else if (_Criteria=="ELECTROSTATIC")
53  estimator->SetCriteriaType(EstimationType::ELECTROSTATIC);
54  if(_FineOrientationsArg.isSet())
55  {
56  fineOrientations = utl::ReadGrad<double>(_FineOrientations, DIRECTION_NODUPLICATE, CARTESIAN_TO_CARTESIAN);
57  estimator->SetFineOrientations(fineOrientations);
58  }
59  if(_InitialOrientationsArg.isSet())
60  {
61  SamplingPointer initialSamples = SamplingType::New();
62  initialSamples->ReadOrientationFile(_InitialOrientations, DIRECTION_NODUPLICATE);
63  estimator->SetInitialOrientations(initialSamples);
64  }
65  estimator->SetElectrostaticOrder(_EnergyOrder);
66  estimator->SetWeightForSingleShell(_Weight);
67 
68  itk::TimeProbe clock;
69  clock.Start();
70  estimator->UpdateOutputData();
71  clock.Stop();
72  std::cout << "Elapsed time : " << clock.GetTotal() << std::endl;
73 
74  SamplingPointer output = estimator->GetOutputOrientations();
75  // output->Print(std::cout<<"output");
76  // output->RemoveSamplesNotIndexed();
77 
79  WriterType::Pointer writer = WriterType::New();
80  writer->SetSampling(output);
81  writer->SetOrientationFile(_OutputOrientations);
82  writer->SaveSingleShellOn();
83  writer->SaveAllShellsInOneFileOff();
84  writer->Update();
85 
86  return 0;
87 }
88 
helper functions specifically used in dmritool
int main(int argc, char const *argv[])
incrementatl estimation for single and multiple shell sampling scheme
#define utlGlobalException(cond, expout)
Definition: utlCoreMacro.h:372
this class describes sampling in Q space.
write orientations and b values (single/multiple shells) into text files