ct_scan op• 데이터 종류: projstack × ctgeometry → voxel
• 호출: import fullseye as fs; fs.ledger.sirt_reconstruct(projections, geometry, n_iter=50, relaxation=1.0, initial=None, nonnegative=True, device='auto', on_iter=None)(구현을 직접 호출하려면 import ctscan; ctscan.sirt_reconstruct(projections, geometry, n_iter=50, relaxation=1.0, initial=None, nonnegative=True, device='auto', on_iter=None), 원장에서 가져오려면 opstomography.get("sirt_reconstruct"))
• GPU: 없음(CPU 참조 구현만)
SIRT: 모든 뷰를 동시에 쓰는 갱신 x <- x + lam C A^T R (p - A x).
> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.
R and C are the inverse row and column sums of A. With the matched pair of this family it minimises a weighted least-squares error, and it needs no formula, so it is the route for tomosynthesis, few views and limited angle.
:param projections: (view, V, U) line integrals. :param geometry: dict from ct_scan_geometry. :param n_iter: iterations, 1 .. 5000. :param relaxation: step lam, (0, 2). :param initial: starting volume; None gives zeros. :param nonnegative: clip to >= 0 after each iteration. :param device: "auto", "cpu" or "cuda". :param on_iter: optional on_iter(iteration, volume) for a convergence curve;
returning a boolean True (bool or numpy.bool_) stops after
that iteration; any other return value (None, numbers, dicts,
arrays) is ignored.
:returns: (Z, Y, X) float volume. :raises ValueError: on a shape that disagrees with the geometry or a relaxation
outside (0, 2). Empty input (projections with 0 elements) raises
ValueError.
The default 50 iterations is not converged. SIRT moves slowly. On consistent data (24^3 Shepp-Logan, cone, 20 views) the relative residual is 0.0318 at 50 iterations and 0.0087 at 200, and the nRMS to the truth drops from 0.0407 to 0.0232 (43 %); on the measured walnut (fan, 50 views) the RMSE to the reference is 0.0055 /mm at 60 iterations and 0.0036 at 400 (2026-11-09 audit). Comparing methods at the defaults makes SIRT look worse than it is. Choose n_iter from a curve: on_iter can compute the residual |A x - p| / |p| (ct_forward_project) or the error on held-out views, and return True once its relative change falls below e.g. 1e-3. With noisy data the error to the truth reaches a minimum and then rises again (semi-convergence), so the residual alone is not a stopping rule there.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• ct_scan_modes — py -3.11 examples/ct_scan_modes.py
• poc_ct_casting_sparse_views — py -3.11 examples/poc_ct_casting_sparse_views.py
• poc_real_walnut_cbct — py -3.11 examples/poc_real_walnut_cbct.py
voxel 를 입력으로 받는 것)radon_volume · ct_forward_project
ct_scan)ct_scan_geometry · shepp_logan_3d · ellipsoid_phantom · ellipsoid_projections · ct_forward_project · ct_adjoint_project · fdk_reconstruct · os_sart_reconstruct
*Provenance: ctscan.py — TOMOGRAPHY 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.