highres-cortex 6.0.4
cortex_advection.hh
Go to the documentation of this file.
1/*
2Copyright Forschungszentrum Jülich GmbH (2017).
3Copyright CEA (2014, 2017).
4Copyright Université Paris XI (2014).
5
6Contributor: Yann Leprince <yann.leprince@ylep.fr>.
7Contributor: Denis Rivière <denis.riviere@cea.fr>.
8
9This file is part of highres-cortex, a collection of software designed
10to process high-resolution magnetic resonance images of the cerebral
11cortex.
12
13This software is governed by the CeCILL licence under French law and
14abiding by the rules of distribution of free software. You can use,
15modify and/or redistribute the software under the terms of the CeCILL
16licence as circulated by CEA, CNRS and INRIA at the following URL:
17<http://www.cecill.info/>.
18
19As a counterpart to the access to the source code and rights to copy,
20modify and redistribute granted by the licence, users are provided only
21with a limited warranty and the software's author, the holder of the
22economic rights, and the successive licensors have only limited
23liability.
24
25In this respect, the user's attention is drawn to the risks associated
26with loading, using, modifying and/or developing or reproducing the
27software by the user in light of its specific status of scientific
28software, that may mean that it is complicated to manipulate, and that
29also therefore means that it is reserved for developers and experienced
30professionals having in-depth computer knowledge. Users are therefore
31encouraged to load and test the software's suitability as regards their
32requirements in conditions enabling the security of their systems and/or
33data to be ensured and, more generally, to use and operate it in the
34same conditions as regards security.
35
36The fact that you are presently reading this means that you have had
37knowledge of the CeCILL licence and that you accept its terms.
38*/
39
40#ifndef YL_ISOVOLUME_HH_INCLUDED
41#define YL_ISOVOLUME_HH_INCLUDED
42
43#include <cartodata/volume/volume.h>
44#include <aims/mesh/surface.h>
45
46namespace yl
47{
48
49class VectorField3d;
50class ScalarField;
52
70std::pair<carto::VolumeRef<float>, carto::VolumeRef<float> >
72 const yl::ScalarField& domain,
73 const yl::VectorField3d& advection_field,
74 const yl::ScalarField& divergence_field,
75 float max_advection_distance,
76 float step_size,
77 int verbosity=0);
78
97 const yl::ScalarField& domain,
98 const yl::VectorField3d& advection_field,
99 float max_advection_distance,
100 float step_size,
101 int verbosity=0);
102
123template <typename T>
126 const yl::ScalarField& domain,
127 const yl::VectorField3d& advection_field,
128 const carto::VolumeRef<T>& values,
129 float max_advection_distance,
130 float step_size,
131 int verbosity=0);
132
152 const yl::ScalarField& domain,
153 const yl::VectorField3d& advection_field,
154 float max_advection_distance,
155 float step_size,
156 int verbosity=0);
157
160template <class TDomainField>
163
164} // namespace yl
165
166#endif // !defined(YL_ISOVOLUME_HH_INCLUDED)
Access a scalar field stored in a volume.
Definition field.hh:137
Store a scalar field and access it at any coordinates.
Definition field.hh:87
Store a vector field and access it at any coordinates.
Definition field.hh:60
Definition cortex.hh:41
carto::VolumeRef< T > advect_value(const carto::VolumeRef< int16_t > &seeds, const yl::ScalarField &domain, const yl::VectorField3d &advection_field, const carto::VolumeRef< T > &values, float max_advection_distance, float step_size, int verbosity=0)
Advect a point along a field, and propagate end points values to the starting point.
carto::VolumeRef< float > advect_euclidean(const carto::VolumeRef< int16_t > &seeds, const yl::ScalarField &domain, const yl::VectorField3d &advection_field, float max_advection_distance, float step_size, int verbosity=0)
Advect a point along a field, keeping track of the distance.
std::pair< carto::VolumeRef< float >, carto::VolumeRef< float > > advect_tubes(const carto::VolumeRef< int16_t > &seeds, const yl::ScalarField &domain, const yl::VectorField3d &advection_field, const yl::ScalarField &divergence_field, float max_advection_distance, float step_size, int verbosity=0)
Advect a tube along a field, starting with unit surface.
yl::ScalarField * create_domain_field(const carto::VolumeRef< int16_t > &domain)
Build a ScalarField of the given type from an int16_t volume.
AimsSurface< 2 > advect_path(const carto::VolumeRef< int16_t > &seeds, const yl::ScalarField &domain, const yl::VectorField3d &advection_field, float max_advection_distance, float step_size, int verbosity=0)
Advect a point along a field, recording advection tracts in a wireframe mesh.