STIR  6.3.0
centre_of_gravity.h
Go to the documentation of this file.
1 //
2 //
3 /*
4  Copyright (C) 2003- 2007, Hammersmith Imanet Ltd
5  This file is part of STIR.
6 
7  SPDX-License-Identifier: Apache-2.0
8 
9  See STIR/LICENSE.txt for details
10 */
20 #include "stir/ArrayFwd.h"
21 
22 START_NAMESPACE_STIR
23 // predeclerations to avoid having to include the files and create unnecessary
24 // dependencies
25 template <int num_dimensions, class T>
26 class BasicCoordinate;
27 template <typename elemT>
28 class VectorWithOffset;
29 template <class coordT>
30 class CartesianCoordinate3D;
31 template <class elemT>
32 class VoxelsOnCartesianGrid;
33 
35 
41 template <class T>
42 T find_unweighted_centre_of_gravity_1d(const VectorWithOffset<T>& row);
43 
45 
51 template <int num_dimensions, class T>
52 BasicCoordinate<num_dimensions, T> find_unweighted_centre_of_gravity(const ArrayType<num_dimensions, T>&);
53 
55 
59 template <class T>
60 T find_unweighted_centre_of_gravity(const ArrayType<1, T>&);
61 
63 
70 template <int num_dimensions, class T>
71 BasicCoordinate<num_dimensions, T> find_centre_of_gravity(const ArrayType<num_dimensions, T>&);
72 
74 
85 template <class T>
86 void find_centre_of_gravity_in_mm_per_plane(VectorWithOffset<CartesianCoordinate3D<float>>& allCoG,
87  VectorWithOffset<T>& weights,
88  const VoxelsOnCartesianGrid<T>& image);
89 
91 
94 template <class T>
95 CartesianCoordinate3D<float> find_centre_of_gravity_in_mm(const VoxelsOnCartesianGrid<T>& image);
96 
97 END_NAMESPACE_STIR
forward declaration of stir::Array class for multi-dimensional (numeric) arrays
CartesianCoordinate3D< float > find_centre_of_gravity_in_mm(const VoxelsOnCartesianGrid< T > &image)
Computes centre of gravity of an image.
Definition: centre_of_gravity.cxx:123
BasicCoordinate< num_dimensions, T > find_centre_of_gravity(const ArrayType< num_dimensions, T > &array)
Compute centre of gravity of an Array.
Definition: centre_of_gravity.cxx:86
T find_unweighted_centre_of_gravity(const ArrayType< 1, T > &row)
Compute centre of gravity of a 1D Array but without dividing by its sum.
Definition: centre_of_gravity.cxx:45
T find_unweighted_centre_of_gravity_1d(const VectorWithOffset< T > &row)
Compute centre of gravity of a vector but without dividing by its sum.
Definition: centre_of_gravity.cxx:34
void find_centre_of_gravity_in_mm_per_plane(VectorWithOffset< CartesianCoordinate3D< float >> &allCoG, VectorWithOffset< T > &weights, const VoxelsOnCartesianGrid< T > &image)
Computes centre of gravity for each plane.
Definition: centre_of_gravity.cxx:97