aimsalgo  5.1.2
Neuroimaging image processing
resamplerfactory_d.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 
35 #ifndef AIMS_RESAMPLING_RESAMPLERFACTORY_D_H
36 #define AIMS_RESAMPLING_RESAMPLERFACTORY_D_H
37 
39 
50 #include <iostream>
51 
52 
53 namespace {
54  template <class T, template<typename U> class ResamplerType>
55  std::unique_ptr<aims::Resampler<T> > make_ptr(ResamplerType<T>* obj) {
56  return std::unique_ptr<aims::Resampler<T> >(obj);
57  }
58 } // anonymous namespace
59 
60 namespace aims
61 {
62 
63  template <typename T>
64  std::unique_ptr<Resampler<T> >
66  {
67  switch( order )
68  {
69  case 0:
70  return make_ptr(new NearestNeighborResampler<T>);
71  case 1:
72  return make_ptr(new LinearResampler<T>);
73  case 2:
74  return make_ptr(new QuadraticResampler<T>);
75  case 3:
76  return make_ptr(new CubicResampler<T>);
77  case 4:
78  return make_ptr(new QuarticResampler<T>);
79  case 5:
80  return make_ptr(new QuinticResampler<T>);
81  case 6:
82  return make_ptr(new SixthOrderResampler<T>);
83  case 7:
84  return make_ptr(new SeventhOrderResampler<T>);
85  case 101:
86  return make_ptr(new MajorityLabelResampler<T>);
87  case 201:
88  return make_ptr(new MedianResampler<T>);
89  default:
90  std::cerr << "no resampler for order " << order
91  << ", taking order 3 (cubic) instead" << std::endl;
92  }
93  return make_ptr(new CubicResampler<T>);
94  }
95 
96 } // namespace aims
97 
98 #endif
Volume resampler using cubic interpolation.
Volume resampler using linear (order 1) interpolation.
Volume resampler using linear (order 1) interpolation, then selects the majority label in the neighbo...
Volume resampler using linear (order 1) interpolation, then selects the median value in the neighbour...
Volume resampler using nearest-neighbour interpolation.
Volume resampler using quadratic (order 2) interpolation.
Volume resampler using quartic (order 4) interpolation.
Volume resampler using quintic (order 5) interpolation.
static std::unique_ptr< Resampler< T > > getResampler(int order)
Instantiate a Resampler of the given order.
Volume resampler using seventh-order interpolation.
Volume resampler using sixth-order interpolation.