artifact op• 데이터 종류: sinogram → sinogram
• 호출: import tomography; tomography.beam_hardening_apply(sinogram, high_energy_fraction=0.5, attenuation_ratio=0.4)(또는 opstomography.get("beam_hardening_apply"))
단색 사이노그램을 다색으로 —— 컵핑의 발생원.
> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.
A real X-ray tube emits a spectrum, and low-energy photons are absorbed more,
so the beam that survives a thick path is *harder* (higher mean energy) and
therefore attenuated less per unit length than the beam that survives a thin
one. The line integral stops being linear in path length, and the
reconstruction of a uniform object comes back with a depressed centre: the
cupping artefact.
The two-spectrum model used here is the smallest one that is physics and not a
curve::
I/I0 = (1-w) exp(-p) + w exp(-k p)
p_meas = -ln(I/I0)
with *w* the fraction of the beam at the high energy and *k < 1* its relative
attenuation. It is exact at `p = 0`, concave everywhere, and monotone — so
it is invertible, which is what :func:beam_hardening_correct inverts.
Measured on a uniform disc (radius 60 px in 256 px, density 1/60 so the peak
line integral is 2.0) at `w = 0.5, k = 0.4`: the FBP reconstruction's
centre-to-rim ratio drops to 0.9312, against 0.9981 before hardening,
and :func:beam_hardening_correct returns it to 0.9981 — the clean value
in all four digits. (The clean ratio is 0.9981 rather than exactly 1 because
of the detector sampling discussed in :func:filtered_backprojection. The
cupping is the 6.7-point drop, not the 0.2-point one.)
:param sinogram: `(n_angles, n_detectors)` monochromatic line integrals,
which must be `>= 0`.
:param high_energy_fraction: *w*, in `[0, 1)`. 0 is a monochromatic beam and
the operator is then the identity.
:param attenuation_ratio: *k*, in `(0, 1)`. 1 is again monochromatic.
:returns: `(n_angles, n_detectors)` float64 hardened sinogram.
:raises ValueError: on a negative sinogram (a negative line integral is not a
measurement this model can harden — the logarithm of the transmitted
intensity has already gone wrong upstream), or parameters outside range.
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• ct_reconstruction — py -3.11 examples/ct_reconstruction.py
sinogram 를 입력으로 받는 것)backproject_sinogram · filtered_backprojection · sart_reconstruct · beam_hardening_correct · ring_artifact_apply · ring_artifact_remove · metal_trace_interpolate · sinogram_center_of_rotation
artifact)beam_hardening_correct · ring_artifact_apply · ring_artifact_remove · metal_trace_interpolate
*Provenance: tomography.py — TOMOGRAPHY 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.