forward op• Data kinds: कोई नहीं → sinogram (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)
• Call: import fullseye as fs; fs.ledger.ellipse_sinogram(size=256, ellipses=None, angles_deg=None, n_detectors=None) (implementation को सीधे call करना हो तो import tomography; tomography.ellipse_sinogram(size=256, ellipses=None, angles_deg=None, n_detectors=None), registry से लेना हो तो opstomography.get("ellipse_sinogram"))
uniform ellipse के योग का closed-form Radon transform।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
The ground truth this module is tested against, and a usable operator in its own right: a sinogram with no discretisation error to feed a reconstruction, so that any error in the picture belongs to the reconstruction and not to the projector.
For one ellipse with centre (x0, y0), semi-axes (a, b), rotation phi and density rho, the line integral along x cos(t) + y sin(t) = s is::
A(t)^2 = a^2 cos^2(t - phi) + b^2 sin^2(t - phi)
s' = s - (x0 cos t + y0 sin t)
p = 2 rho a b sqrt(A^2 - s'^2) / A^2 for |s'| < A, else 0
which for a disc (a = b = r, rho = 1) collapses to the chord length 2 sqrt(r^2 - s^2). Densities add, so a sum of ellipses projects to a sum of these.
The result is in the same pixel units as radon_transform applied
to ellipse_phantom at the same *size*: the normalised half-width is size/2 pixels, and a line integral scales with length, so the closed form is multiplied by size/2. Getting that factor wrong is invisible in the picture — a sinogram has no absolute scale — and shows up only as a reconstruction whose density is off by a constant, which is why it is pinned by a test rather than by a comment.
:param size: the pixel grid the units refer to (as in ellipse_phantom). :param ellipses: as ellipse_phantom; None -> SHEPP_LOGAN. :param angles_deg: view angles; None -> linspace(0, 180, 180, endpoint=False). :param n_detectors: detector bins; None -> enough to cover the diagonal. :returns: (n_angles, n_detectors) float64 sinogram. :raises ValueError: on a degenerate ellipse or a sinogram over
MAX_SINOGRAM_ELEMENTS.
• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।
• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।
• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।
• ct_reconstruction — py -3.11 examples/ct_reconstruction.py
• poc_ct_fidelity — py -3.11 examples/poc_ct_fidelity.py
sinogram को input के रूप में लेते हैं)backproject_sinogram · filtered_backprojection · sart_reconstruct · beam_hardening_apply · beam_hardening_correct · ring_artifact_apply · ring_artifact_remove · metal_trace_interpolate
forward)ellipse_phantom · radon_transform
*Provenance: tomography.py — TOMOGRAPHY operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.