backproject_sinogram — TOMOGRAPHY reconstruct op

• Data kinds: sinogram → image2d

• Call: import fullseye as fs; fs.ledger.backproject_sinogram(sinogram, angles_deg=None, size=None, span_deg=None) (implementation को सीधे call करना हो तो import tomography; tomography.backproject_sinogram(sinogram, angles_deg=None, size=None, span_deg=None), registry से लेना हो तो opstomography.get("backproject_sinogram"))

उपयोग

सादा, un-filtered back-projection — धुंधली baseline।

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

Smear each projection back along the rays it came from and sum. The result is the true slice convolved with 1/|r|, so it is correct in the large and wrong everywhere in detail.

Two numbers, because only one of them is the interesting one. Raw, on the Shepp-Logan phantom with 180 views, this operator's values run 0.768 to 2.493 where the truth runs 0.0 to 0.0167 — the 1/|r| kernel has no finite integral, so an un-filtered back-projection has no meaningful absolute scale at all and its normalised RMS error against the truth is 104. After the best least-squares rescaling onto the truth — which is what any display with an auto window does for you, silently — the error is 0.168 against 0.0246 for filtered_backprojection, a factor of 6.8. That second number is the ramp filter's real contribution; the first is a warning that a picture which looks approximately right after auto-windowing can be off by a factor of 100 in the numbers underneath it.

It is a registered operator and not a private helper because the blur *is* the lesson, and because it is the correct starting point for iterative methods.

Not to be confused with fullseye.backproject, which lifts pixels into 3-D using a depth map and a camera model; that one is projective geometry, this one is an integral transform, and the only thing they share is a word.

:param sinogram: (n_angles, n_detectors), rows = angles. :param angles_deg: view angles; None -> uniform [0, 180). :param size: output side; None -> the inscribed square, n_det/sqrt2

rounded down to an odd number.

:param span_deg: angular range used for the d(theta) weight; None ->

inferred from *angles_deg* (or 180 for the default scan).

:returns: (size, size) float64 image. :raises ValueError: as filtered_backprojection.

संदर्भ (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 जुड़ता है (image2d को input के रूप में लेते हैं)

radon_transform

इसी category के (reconstruct)

filtered_backprojection · sart_reconstruct


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