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

參考(範例資料・文獻)

• 範例資料目錄(下載 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_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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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