xcist / main

simulation and reconstruction package
BSD 3-Clause "New" or "Revised" License
47 stars 23 forks source link

Creating Analytic Phantom #69

Closed tims3900 closed 5 months ago

tims3900 commented 5 months ago

Hello, I'm interested in creating an analytic phantom and was wondering if there is any documentation available for reference. While I understand how to shift the phantom in the xy direction, I'm curious if there are techniques to modify its length along the z-axis. Specifically, I'm interested in adjusting the phantom's appearance across multiple slices, allowing certain aspects to appear or disappear as needed. Also is there any way to create more complex shapes from equations or is the analytic phantom limited to elliptical shapes.

zhangjy-ge commented 5 months ago

Hi,

zhangjy-ge commented 5 months ago

It seems you have deleted one of your comments about if there are other shapes that are supported by xcist. I would still answer it here for future reference.

We do have plans to support the following types in analytic phantom: Ellipsoid, Cylinder, Torus, Cone, Hyperboloid2, Hyperboloid1, VesselSeg, Box , which can be specified in object.type by an integer, e.g., 1 (for ellipsoid) or 2 (for cylinder). However, not all shapes are implemented as of now and you may see some shapes not working.

tims3900 commented 5 months ago

Just to clarify, with all the example analytic phantoms such as W20.ppm contained in the repository having object.shape = 0 this means that every analytic object is being defined as an ellipsoid? Looking towards the method Phantom_Analytic_BoundObjects in Phantom_Analytic.py I am assuming that the typ variable refers to the object.shape. Does this mean that the program only supports up to index 2 for the object.shape?

zhangjy-ge commented 5 months ago

I made a typo in the previous post. It should be object.type not object.shape. object.shape Used only for the torus object to define the thickness relative to the radius of curvature. Sorry for the confusion