radon_transform — TOMOGRAPHY forward op

• Data kinds: image2d → sinogram

• Call: import fullseye as fs; fs.ledger.radon_transform(image, angles_deg=None, n_detectors=None, oversample=1) (implementation को सीधे call करना हो तो import tomography; tomography.radon_transform(image, angles_deg=None, n_detectors=None, oversample=1), registry से लेना हो तो opstomography.get("radon_transform"))

उपयोग

forward parallel-beam projection: slice अंदर, sinogram बाहर।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

Rows of the result are projection angles and columns are detector bins. The convention is fixed here and never negotiated again; every other operator in this module reads it the same way, and a transposed sinogram is structurally indistinguishable from a valid one (see opstomography for the measured consequences of not giving it its own sort).

The ray at detector bin j and angle theta is the line x cos(theta) + y sin(theta) = j - (n_det-1)/2, with x the column offset from the image centre and y the row offset — so +y runs *down* the array, matching the rest of Fullseye's image indexing rather than a textbook's upward y. The transform is the same either way (the sinogram is mirrored in the angle axis), but only one of the two agrees with ellipse_phantom, and the tests hold them together.

Accuracy against the closed form (a disc of radius 60 px in a 256-px grid, 180 views), measured in tests/test_tomography.py: interior RMS error 0.073 % of the peak line integral, whole-sinogram RMS 0.402 % — the difference between the two being the partial-volume edge, where the phantom's own anti-aliased boundary is what is being sampled.

:param image: 2-D slice, at least 2x2. :param angles_deg: 1-D view angles in degrees; None ->

linspace(0, 180, 180, endpoint=False).

:param n_detectors: bins; None -> odd count covering the diagonal. :param oversample: ray samples per pixel, 1 .. 8. The default is 1

because 4 measures no better (0.073 % against 0.070 %).

:returns: (n_angles, n_detectors) float64 sinogram. :raises ValueError: on non-finite input, an empty angle list, a detector count

under 4, 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 · ellipse_sinogram


*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.