sinogram_center_shift — TOMOGRAPHY geometry op

• Data kinds: sinogram → sinogram

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

उपयोग

sinogram को उसकी rotation axis पर फिर से केंद्रित करता है।

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

Shifts every projection by -shift_px along the detector axis with linear interpolation. With shift_px=None the shift is measured first by sinogram_center_of_rotation, which makes this the one-call fix.

Round-trip on the Shepp-Logan phantom, shifting by *d* and back:

d max |error| relative to the peak line integral

1.00 px 0.0e+00 0.0e+00 (an integer shift is exact)

0.50 px 1.4e-01 1.2e-01

0.25 px 1.1e-01 9.2e-02

A *fractional* shift is not a small operation and this is the operator's honest limitation: 12 % of the peak, on a phantom with sharp edges, from one round trip. Interpolation is a low-pass filter and the sinogram of an edge is not band-limited, so there is nothing to recover on the way back. Using a Fourier shift instead would trade this visible blur for invisible ringing at the detector edges, which is worse in the way that matters here. The consequence is in sinogram_center_of_rotation's table: an integer centre error is fully repairable, a half-pixel one is not.

:param sinogram: (n_angles, n_detectors). :param shift_px: axis offset in detector bins; None -> measure it. :param angles_deg: view angles, used only when *shift_px* is None. :returns: (n_angles, n_detectors) float64 sinogram. :raises ValueError: if |shift_px| is at or past half the detector width —

past that the object has been shifted out of the field of view and what

comes back is edge padding, which reconstructs as a plausible, empty slice.

संदर्भ (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

वे अगले 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 के (geometry)

sinogram_center_of_rotation


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