aimsalgo
6.0.0
Neuroimaging image processing
quinticresampler_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_QUINTICRESAMPLER_D_H
36
#define AIMS_RESAMPLING_QUINTICRESAMPLER_D_H
37
38
#include <
aims/resampling/quinticresampler.h
>
39
40
#include <cmath>
41
42
namespace
aims
43
{
44
45
template
<
class
T >
46
QuinticResampler< T >::QuinticResampler
()
47
:
SplineResampler
< T >()
48
{
49
50
this->
_poles
.push_back( 0.5 * ( std::sqrt( 270.0 - std::sqrt( 70980.0 ) ) +
51
std::sqrt( 105.0 ) - 13.0 ) );
52
this->
_poles
.push_back( 0.5 * ( std::sqrt( 270.0 + std::sqrt( 70980.0 ) ) -
53
std::sqrt( 105.0 ) - 13.0 ) );
54
this->
_gain
= ( 1.0 - this->
_poles
[ 0 ] ) * ( 1.0 - this->
_poles
[ 1 ] );
55
this->
_gain
*= this->
_gain
;
56
57
}
58
59
60
template
<
class
T >
61
QuinticResampler< T >::~QuinticResampler
()
62
{
63
}
64
65
66
template
<
class
T >
67
int
QuinticResampler< T >::getOrder
()
const
68
{
69
70
return
5;
71
72
}
73
74
75
template
<
class
T >
76
double
QuinticResampler< T >::getBSplineWeight
(
int
i,
double
x )
const
77
{
78
79
x = std::fabs( x - (
double
)i );
80
if
( x < 1.0 )
81
{
82
83
double
f = x * x;
84
return
f * ( f * ( 0.25 - x * ( 1.0 / 12.0 ) ) - 0.5 ) + 0.55;
85
86
}
87
if
( x < 2.0 )
88
{
89
90
return
x * ( x * ( x * ( x * ( x * ( 1.0 / 24.0 ) - 0.375 ) + 1.25 ) -
91
1.75 ) + 0.625 ) + 0.425;
92
93
}
94
if
( x < 3.0 )
95
{
96
97
double
f = 3.0 - x;
98
x = f * f;
99
return
f * x * x * ( 1.0 / 120.0 );
100
101
}
102
return
0.0;
103
104
}
105
106
}
// namespace aims
107
108
#endif
aims::QuinticResampler::getOrder
int getOrder() const CARTO_OVERRIDE
Spline order (1 to 7)
Definition
quinticresampler_d.h:67
aims::QuinticResampler::getBSplineWeight
double getBSplineWeight(int i, double x) const CARTO_OVERRIDE
Returns .
Definition
quinticresampler_d.h:76
aims::QuinticResampler::QuinticResampler
QuinticResampler()
Definition
quinticresampler_d.h:46
aims::QuinticResampler::~QuinticResampler
~QuinticResampler()
Definition
quinticresampler_d.h:61
aims::SplineResampler::_poles
std::vector< double > _poles
Definition
splineresampler.h:189
aims::SplineResampler::SplineResampler
SplineResampler()
Definition
splineresampler_d.h:56
aims::SplineResampler::_gain
double _gain
Definition
splineresampler.h:190
aims
quinticresampler.h
aims
resampling
quinticresampler_d.h
Generated by
1.13.2