beam_hardening_correct — TOMOGRAPHY artifact op

데이터 종류: sinogramsinogram

호출: import tomography; tomography.beam_hardening_correct(sinogram, high_energy_fraction=0.5, attenuation_ratio=0.4, poly_coeffs=None, n_table=4096)(또는 opstomography.get("beam_hardening_correct"))

사용법

컵핑을 되돌립니다 —— 모델의 엄밀한 역, 또는 교정된 다항식으로.

> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.

Two routes, and the difference between them is what you are allowed to claim:

Model inverse (default). :func:beam_hardening_apply is a monotone

scalar function of the line integral, so it has an exact inverse; this

builds it by interpolating the forward curve on *n_table* nodes. Round-trip

error on the disc phantom: 1.6e-08 absolute and 8.0e-09 relative to

the peak line integral — the table resolution and nothing else.

This is a *simulation* tool — it needs the same `w and k` the

hardening used, which on real data nobody has.

Polynomial (*poly_coeffs*). `p_corr = c1 p + c2 p^2 + ...`, the

water-correction of every clinical scanner, whose coefficients come from

scanning a uniform water phantom and fitting for a flat reconstruction.

This is what applies to real data, and it is only as good as the assumption

that everything in the field of view attenuates like water.

The honest limitation is the same one every scanner has: the correction is

material-specific. A water calibration applied to a slice containing bone

or metal over-corrects the dense material and leaves dark bands between dense

objects, and nothing in the sinogram says which case you are in.

:param sinogram: `(n_angles, n_detectors)` hardened line integrals.

:param high_energy_fraction: *w* used by the forward model.

:param attenuation_ratio: *k* used by the forward model.

:param poly_coeffs: `(c1, c2, ...)`; when given, the polynomial route is

used and *w* / *k* are ignored.

:param n_table: nodes of the inverse table, `64 .. 1048576`.

:returns: `(n_angles, n_detectors)` float64 corrected sinogram.

:raises ValueError: as :func:beam_hardening_apply, plus an empty or

non-finite *poly_coeffs*.

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.

• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.

• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.

실행 가능한 예제(이 연산자를 실제로 호출하는 검증된 샘플)

ct_reconstructionpy -3.11 examples/ct_reconstruction.py

타입이 이어지는 다음 연산자(sinogram 를 입력으로 받는 것)

backproject_sinogram · filtered_backprojection · sart_reconstruct · beam_hardening_apply · ring_artifact_apply · ring_artifact_remove · metal_trace_interpolate · sinogram_center_of_rotation

같은 카테고리(artifact)

beam_hardening_apply · 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.