ellipse_sinogram — TOMOGRAPHY 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, साहित्य)

• 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 में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• ct_reconstruction — py -3.11 examples/ct_reconstruction.py

• poc_ct_fidelity — py -3.11 examples/poc_ct_fidelity.py

वे अगले ops जिनसे type जुड़ता है (sinogram को input के रूप में लेते हैं)

backproject_sinogram · filtered_backprojection · sart_reconstruct · beam_hardening_apply · beam_hardening_correct · ring_artifact_apply · ring_artifact_remove · metal_trace_interpolate

इसी category के (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.