STIR 6.4.0
SPECTUB_Weight3d.h
1/*
2 Copyright (c) 2013, Biomedical Image Group (GIB), Universitat de Barcelona, Barcelona, Spain.
3 Copyright (c) 2013, University College London
4 This file is part of STIR.
5
6 SPDX-License-Identifier: Apache-2.0
7
8 See STIR/LICENSE.txt for details
9
10 \author Carles Falcon
11
12*/
13
14#ifndef _WEIGHT3D_SPECTUB_H
15#define _WEIGHT3D_SPECTUB_H
16
27
28namespace SPECTUB
29{
30
31void wm_calculation(const int kOS,
32 const SPECTUB::angle_type* const ang,
33 SPECTUB::voxel_type vox,
34 bin_type bin,
35 const SPECTUB::volume_type& vol,
36 const proj_type& prj,
37 const float* attmap,
38 const bool* msk_3d,
39 const bool* msk_2d,
40 const int maxszb,
41 const SPECTUB::discrf_type* const gaussdens,
42 const int* const NITEMS,
43 SPECTUB::wm_da_type& wm,
44 const SPECTUB::wmh_type& wmh,
45 const float* Rrad);
46
47void wm_size_estimation(int kOS,
48 const SPECTUB::angle_type* const ang,
49 SPECTUB::voxel_type vox,
50 bin_type bin,
51 const SPECTUB::volume_type& vol,
52 const SPECTUB::proj_type& prj,
53 const bool* const msk_3d,
54 const bool* const msk_2d,
55 const int maxszb,
56 const SPECTUB::discrf_type* const gaussdens,
57 int* NITEMS,
58 const SPECTUB::wmh_type& wmh,
59 const float* Rrad);
60
61//... geometric component ............................................
62
63void calc_gauss(SPECTUB::discrf_type* gaussdens);
64
65void calc_vxprj(SPECTUB::angle_type* ang);
66
67void voxel_projection(SPECTUB::voxel_type* vox, float* eff, float lngcmd2, const SPECTUB::wmh_type& wmh);
68
69void fill_psf_no(SPECTUB::psf2da_type* psf,
70 SPECTUB::psf1d_type* psf1d_h,
71 const SPECTUB::voxel_type& vox,
72 const angle_type* const ang,
73 float szdx,
74 const SPECTUB::wmh_type& wmh);
75
76void fill_psf_2d(SPECTUB::psf2da_type* psf,
77 SPECTUB::psf1d_type* psf1d_h,
78 const SPECTUB::voxel_type& vox,
79 SPECTUB::discrf_type const* const gaussdens,
80 float szdx,
81 const SPECTUB::wmh_type& wmh);
82
83void fill_psf_3d(SPECTUB::psf2da_type* psf,
84 SPECTUB::psf1d_type* psf1d_h,
85 SPECTUB::psf1d_type* psf1d_v,
86 const SPECTUB::voxel_type& vox,
87 SPECTUB::discrf_type const* const gaussdens,
88 float szdx,
89 float thdx,
90 float thcmd2,
91 const wmh_type& wmh);
92
93void calc_psf_bin(float center_psf,
94 float binszcm,
95 SPECTUB::discrf_type const* const vxprj,
96 SPECTUB::psf1d_type* psf,
97 const SPECTUB::wmh_type& wmh);
98
99//... attenuation...................................................
100
101// not used
102// void size_attpth_simple( psf2da_type *psf, voxel_type vox, volume_type vol, float *att, angle_type *ang );
103
104// void size_attpth_full( psf2da_type *psf, voxel_type vox, volume_type vol, float *att, angle_type *ang );
105
106void
107calc_att_path(const bin_type& bin, const SPECTUB::voxel_type& vox, const SPECTUB::volume_type& vol, SPECTUB::attpth_type* attpth);
108
109float calc_att(const SPECTUB::attpth_type* const attpth, const float* const attmap, int islc, const SPECTUB::wmh_type& wmh);
110
111int comp_dist(float dx, float dy, float dz, float dlast);
112
113void error_weight3d(int nerr, const std::string& txt); // error messages in weight3d_SPECT
114
115} // namespace SPECTUB
116
117#endif
Namespace for the SPECT library from University of Barcelona.
Definition SPECTUB_Tools.h:20
structure to store angles values, indices and ratios
Definition SPECTUB_Tools.h:231
structure for bin information
Definition SPECTUB_Tools.h:288
structure for projection information
Definition SPECTUB_Tools.h:80
complementary information (matrix header)
Definition SPECTUB_Tools.h:107