beam_hardening_apply — TOMOGRAPHY artifact op

資料種類:sinogramsinogram

呼叫: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.

參考(範例資料・文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者・年份)與用途見上面的族使用指南

可執行的範例(實際呼叫該運算子並已驗證的樣例)

ct_reconstructionpy -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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.