-
Notifications
You must be signed in to change notification settings - Fork 204
/
Copy pathgeometry_default.py
149 lines (139 loc) · 8.92 KB
/
geometry_default.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
from __future__ import division
import numpy as np
from tigre.utilities.geometry import Geometry
class ConeGeometryDefault(Geometry):
def __init__(self, high_resolution=True, nVoxel=None):
Geometry.__init__(self)
if high_resolution:
# VARIABLE DESCRIPTION UNITS
# -------------------------------------------------------------------------------------
self.DSD = 1536.0 # Distance Source Detector (mm)
self.DSO = 1000.0 # Distance Source Origin (mm)
# Detector parameters
self.nDetector = np.array((512, 512)) # number of pixels (px)
self.dDetector = np.array((0.8, 0.8)) # size of each pixel (mm)
self.sDetector = self.nDetector * self.dDetector # total size of the detector (mm)
# Image parameters
self.nVoxel = np.array((512, 512, 512)) # number of voxels (vx)
self.sVoxel = np.array((256, 256, 256)) # total size of the image (mm)
self.dVoxel = self.sVoxel / self.nVoxel # size of each voxel (mm)
# Offsets
self.offOrigin = np.array((0, 0, 0)) # Offset of image from origin (mm)
self.offDetector = np.array((0, 0)) # Offset of Detector (mm)
# Auxiliary
self.accuracy = 0.5 # Accuracy of FWD proj (vx/sample) # noqa: E501
# Mode
self.mode = "cone" # parallel, cone ...
self.filter = None
else:
# VARIABLE DESCRIPTION UNITS
# -------------------------------------------------------------------------------------
self.DSD = 1536.0 # Distance Source Detector (mm)
self.DSO = 1000.0 # Distance Source Origin (mm)
# Detector parameters
self.nDetector = np.array((128, 128)) # (V,U) number of pixels (px)
self.dDetector = np.array((0.8, 0.8)) * 4 # size of each pixel (mm)
self.sDetector = self.nDetector * self.dDetector # total size of the detector (mm)
# Image parameters
self.nVoxel = np.array((64, 64, 64)) # number of voxels (vx)
self.sVoxel = np.array((256, 256, 256)) # total size of the image (mm)
self.dVoxel = self.sVoxel / self.nVoxel # size of each voxel (mm)
# Offsets
self.offOrigin = np.array((0, 0, 0)) # Offset of image from origin (mm)
self.offDetector = np.array((0, 0)) # Offset of Detector (mm)
self.rotDetector = np.array((0, 0, 0))
# Auxiliary
self.accuracy = 0.5 # Accuracy of FWD proj (vx/sample) # noqa: E501
# Mode
self.mode = "cone" # parallel, cone ...
self.filter = None
if nVoxel is not None:
# VARIABLE DESCRIPTION UNITS
# -------------------------------------------------------------------------------------
self.DSD = 1536.0 # Distance Source Detector (mm)
self.DSO = 1000.0 # Distance Source Origin (mm)
# Detector parameters
self.nDetector = np.array((nVoxel[1], nVoxel[2])) # (V,U) number of pixels (px)
self.dDetector = np.array([0.8, 0.8]) # size of each pixel (mm)
self.sDetector = self.dDetector * self.nDetector # total size of the detector (mm)
# Image parameters
self.nVoxel = np.array((nVoxel)) # number of voxels (vx)
self.sVoxel = np.array((256, 256, 256)) # total size of the image (mm)
self.dVoxel = self.sVoxel / self.nVoxel # size of each voxel (mm)
# Offsets
self.offOrigin = np.array((0, 0, 0)) # Offset of image from origin (mm)
self.offDetector = np.array((0, 0)) # Offset of Detector (mm)
self.rotDetector = np.array((0, 0, 0))
# Auxiliary
self.accuracy = 0.5 # Accuracy of FWD proj (vx/sample) # noqa: E501
# Mode
self.mode = "cone" # parallel, cone
class FanGeometryDefault(Geometry):
def __init__(self, high_resolution=True, nVoxel=None):
if nVoxel is not None and nVoxel[0] !=1:
raise ValueError("Fan beam geometry only supports 2D images")
Geometry.__init__(self)
if high_resolution:
# VARIABLE DESCRIPTION UNITS
# -------------------------------------------------------------------------------------
self.DSD = 1536.0 # Distance Source Detector (mm)
self.DSO = 1000.0 # Distance Source Origin (mm)
# Detector parameters
self.nDetector = np.array((1, 512)) # number of pixels (px)
self.dDetector = np.array((0.8, 0.8)) # size of each pixel (mm)
self.sDetector = self.nDetector * self.dDetector # total size of the detector (mm)
# Image parameters
self.nVoxel = np.array((1, 512, 512)) # number of voxels (vx)
self.sVoxel = np.array((0.5, 256, 256)) # total size of the image (mm)
self.dVoxel = self.sVoxel / self.nVoxel # size of each voxel (mm)
# Offsets
self.offOrigin = np.array((0, 0, 0)) # Offset of image from origin (mm)
self.offDetector = np.array((0, 0)) # Offset of Detector (mm)
# Auxiliary
self.accuracy = 0.5 # Accuracy of FWD proj (vx/sample) # noqa: E501
# Mode
self.mode = "cone" # parallel, cone ...
self.filter = None
else:
# VARIABLE DESCRIPTION UNITS
# -------------------------------------------------------------------------------------
self.DSD = 1536.0 # Distance Source Detector (mm)
self.DSO = 1000.0 # Distance Source Origin (mm)
# Detector parameters
self.nDetector = np.array((1, 128)) # (V,U) number of pixels (px)
self.dDetector = np.array((0.8, 0.8)) * 4 # size of each pixel (mm)
self.sDetector = self.nDetector * self.dDetector # total size of the detector (mm)
# Image parameters
self.nVoxel = np.array((1, 64, 64)) # number of voxels (vx)
self.sVoxel = np.array((0.5, 256, 256)) # total size of the image (mm)
self.dVoxel = self.sVoxel / self.nVoxel # size of each voxel (mm)
# Offsets
self.offOrigin = np.array((0, 0, 0)) # Offset of image from origin (mm)
self.offDetector = np.array((0, 0)) # Offset of Detector (mm)
self.rotDetector = np.array((0, 0, 0))
# Auxiliary
self.accuracy = 0.5 # Accuracy of FWD proj (vx/sample) # noqa: E501
# Mode
self.mode = "cone" # parallel, cone ...
self.filter = None
if nVoxel is not None:
# VARIABLE DESCRIPTION UNITS
# -------------------------------------------------------------------------------------
self.DSD = 1536.0 # Distance Source Detector (mm)
self.DSO = 1000.0 # Distance Source Origin (mm)
# Image parameters
self.nVoxel = np.array((nVoxel)) # number of voxels (vx)
self.sVoxel = np.array((256, 256, 256)) # total size of the image (mm)
self.dVoxel = self.sVoxel / self.nVoxel # size of each voxel (mm)
# Detector parameters
self.nDetector = np.array((nVoxel[0], nVoxel[1])) # (V,U) number of pixels (px)
self.sDetector = self.sVoxel[1:]*self.DSD/self.DSO
self.dDetector = self.sDetector / self.nDetector # size of each pixel (mm)
# Offsets
self.offOrigin = np.array((0, 0, 0)) # Offset of image from origin (mm)
self.offDetector = np.array((0, 0)) # Offset of Detector (mm)
self.rotDetector = np.array((0, 0, 0))
# Auxiliary
self.accuracy = 0.5 # Accuracy of FWD proj (vx/sample) # noqa: E501
# Mode
self.mode = "cone" # parallel, cone