xdesign.phantom
¶
Objects and methods for computing the quality of reconstructions.
Module author: Daniel J Ching <carterbox@users.noreply.github.com>
Phantoms¶
Defines an object for simulating X-ray phantoms.
Module author: Daniel J Ching <carterbox@users.noreply.github.com>
|
An object for the purpose of evaluating X-ray imaging methods. |
|
Save phantom to file as a python repr. |
|
Load phantom from file containing a python repr. |
|
Save phantom to file as a python pickle. |
|
Load phantom from file as a python pickle. |
- class xdesign.phantom.phantom.Phantom(geometry=None, children=[], material=None)[source]¶
Bases:
object
An object for the purpose of evaluating X-ray imaging methods.
Phantoms may be hierarchical structures with children that are contained within and/or a parent which contains them. They have two parts: a geometry and properties. The geometry defines the spatial extent over which the properties are valid. Properties are parameters which a
Probe
uses to measure the Phantom.All Phantoms must fit within the geometry of their ancestors. Phantoms whose geometry is None act as containers.
- geometry¶
The spatial boundary of the Phantom; may be None.
- Type
Entity
- children¶
A list of Phantoms contained in this Phantom.
- parent¶
The Phantom containing this Phantom.
- material¶
The mass_attenuation of the phantom.
- population¶
The number of decendents of this phantom.
- append(child)[source]¶
Add a child to the Phantom.
Only add the child if it is contained within the geometry of its ancestors.
- property center¶
Return the centroid of the Phantom.
- property density¶
Return the geometric density of the Phantom.
- property geometry¶
Return the geometry of the Phantom.
- property is_leaf¶
Return whether the Phantom is a leaf node.
- property radius¶
Return the radius of the smallest boundary sphere.
- rotate(theta, point=Point([]), axis=None)[source]¶
Rotate around an axis that passes through the given point.
- sprinkle(counts, radius, gap=0, region=None, material=None, max_density=1, shape=<class 'xdesign.geometry.area.Circle'>)[source]¶
Sprinkle a number of
Circle
shaped Phantoms around the Phantom. Uses various termination criteria to determine when to stop trying to add circles.- Parameters
counts (int) – The number of circles to be added.
radius (scalar or list) – The radius of the circles to be added.
gap (float, optional) – The minimum distance between circle boundaries. A negative value allows overlapping edges.
region (
Entity
, optional) – The new circles are confined to this shape. None if the circles are allowed anywhere.max_density (scalar, optional) – Stops adding circles when the geometric density of the phantom reaches this ratio.
material (scalar, optional) – A mass attenuation parameter passed to the circles.
- Returns
counts (scalar) – The number of circles successfully added.
- property volume¶
Return the volume of the Phantom
- xdesign.phantom.phantom.load_phantom(filename)[source]¶
Load phantom from file containing a python repr.
- xdesign.phantom.phantom.pickle_phantom(phantom, filename)[source]¶
Save phantom to file as a python pickle.
Standard phantoms¶
Defines an object for simulating X-ray phantoms.
Module author: Daniel J Ching <carterbox@users.noreply.github.com>
Generates a Phantom for internal testing of XDesign. |
|
|
Generates a series of cocentric alternating black and white circles whose radii are changing at a parabolic rate. |
|
Generates a phantom of randomly placed circles for determining dynamic range. |
|
Rows of increasingly smaller circles. |
|
Generates a collection of slanted squares. |
|
Generates a phantom with a single circle in its center. |
|
Generates a Siemens star. |
- class xdesign.phantom.standards.DogaCircles(n_sizes=5, size_ratio=0.5, n_shuffles=5)[source]¶
Bases:
xdesign.phantom.phantom.Phantom
Rows of increasingly smaller circles. Initally arranged in an ordered Latin square, the inital arrangement can be randomly shuffled.
- radii¶
radii of circles
- Type
ndarray
- x¶
x position of circles
- Type
ndarray
- y¶
y position of circles
- Type
ndarray
- class xdesign.phantom.standards.DynamicRange(steps=10, jitter=True, geometry=Rectangle(<MagicMock name='mock()' id='140346947267856'>, <MagicMock name='mock().tolist()' id='140346817705296'>))[source]¶
Bases:
xdesign.phantom.phantom.Phantom
Generates a phantom of randomly placed circles for determining dynamic range.
- Parameters
steps (scalar, optional) – The orders of magnitude (base 2) that the colors of the circles cover.
jitter (bool, optional) – True : circles are placed in a jittered grid False : circles are randomly placed
shape (string, optional)
- class xdesign.phantom.standards.HyperbolicConcentric(min_width=0.1, exponent=0.5)[source]¶
Bases:
xdesign.phantom.phantom.Phantom
Generates a series of cocentric alternating black and white circles whose radii are changing at a parabolic rate. These line spacings cover a range of scales and can be used to estimate the Modulation Transfer Function. The radii change according to this function: r(n) = r0*(n+1)^k.
- class xdesign.phantom.standards.SiemensStar(n_sectors=4, center=Point([]), radius=0.5)[source]¶
Bases:
xdesign.phantom.phantom.Phantom
Generates a Siemens star.
- ratio¶
The spatial frequency times the proportional radius. e.g to get the frequency, f, divide this ratio by some fraction of the maximum radius: f = ratio/radius_fraction
- Type
scalar
- class xdesign.phantom.standards.SlantedSquares(count=10, angle=0.08726646259972222, gap=0)[source]¶
Bases:
xdesign.phantom.phantom.Phantom
Generates a collection of slanted squares. Squares are arranged in concentric circles such that the space between squares is at least gap. The size of the squares is adaptive such that they all remain within the unit circle.
- angle¶
the angle of slant in radians
- Type
scalar
- count¶
the total number of squares
- Type
scalar
- gap¶
the minimum space between squares
- Type
scalar
- side_length¶
the size of the squares
- Type
scalar
- n_levels¶
the number of levels
- Type
scalar
- class xdesign.phantom.standards.UnitCircle(radius=0.5, material=SimpleMaterial(mass_attenuation=1.0))[source]¶
Bases:
xdesign.phantom.phantom.Phantom
Generates a phantom with a single circle in its center.
- class xdesign.phantom.standards.XDesignDefault[source]¶
Bases:
xdesign.phantom.phantom.Phantom
Generates a Phantom for internal testing of XDesign.
The default phantom is: (1) nested, it contains phantoms within phantoms; (2) geometrically simple, the sinogram can be verified visually; and (3) representative, it contains the three main geometric elements: circle, polygon, and mesh.
Custom phantoms¶
Defines an object for simulating X-ray phantoms.
Module author: Daniel J Ching <carterbox@users.noreply.github.com>
|
Generates a phantom with structure similar to soil. |
|
Generates a phantom with structure similar to foam. |
|
Generate a Phantom with structure similar to wood. |
- class xdesign.phantom.custom.Foam(size_range=[0.05, 0.01], gap=0, porosity=1)[source]¶
Bases:
xdesign.phantom.standards.UnitCircle
Generates a phantom with structure similar to foam.
- class xdesign.phantom.custom.Softwood[source]¶
Bases:
xdesign.phantom.phantom.Phantom
Generate a Phantom with structure similar to wood.
- Parameters
ringsize (float [cm]) – The thickness of the annual rings in cm.
latewood_fraction (float) – The volume ratio of latewood cells to earlywood cells
ray_fraction (float) – The ratio of rows of ray cells to rows of tracheids
ray_height (float [cm]) – The height of the ray cells
cell_width, cell_height (float [cm]) – The shape of the earlywood cells
cell_thickness (float [cm]) – The thickness of the earlywood cell walls
frame (arraylike [cm]) – A bounding box for the cells
- class xdesign.phantom.custom.Soil(porosity=0.412)[source]¶
Bases:
xdesign.phantom.standards.UnitCircle
Generates a phantom with structure similar to soil.
References
Schlüter, S., Sheppard, A., Brown, K., & Wildenschild, D. (2014). Image processing of multiphase images obtained via X‐ray microtomography: a review. Water Resources Research, 50(4), 3615-3639.