tonemap_reinhard — 3D render op

• 資料種類:image2d → image2d

• 呼叫: import fullseye as fs; fs.ledger.tonemap_reinhard(hdr, exposure: 'float' = 1.0, white: 'float | None' = None) -> 'np.ndarray'(要直接呼叫實作,import render_tonemap; render_tonemap.tonemap_reinhard(hdr, exposure: 'float' = 1.0, white: 'float | None' = None) -> 'np.ndarray';從台帳取用則 ops3d.get("tonemap_reinhard"))

用法

用 Reinhard 色調映射把 HDR 壓縮到 [0, 1] 的 LDR。→ float64,與輸入同形狀。

對乘以曝光後的 x = hdr * exposure:

• white is None … 基本形 x / (1 + x)。將 [0, ∞) 以嚴格單調遞增 映射到 [0, 1),絕不截斷(在全域嚴格保持灰階順序)。

• 指定 white … 擴展形 x (1 + x/white²) / (1 + x)。將 white 精確映射到 1.0, 將更多的範圍分給小於 white 的部分(超過 white 的輸入會超過 1,因此截斷到 [0, 1])。

彩色 (H, W, C) 依通道獨立映射。與樸素截斷 min(x, 1) 不同, 即使在值 > 1 的高光區域也保持單調的灰階。

Args:

hdr: HDR 影像。(H, W) 灰階 or (H, W, C) 彩色,輻射輝度 >= 0。

exposure: 映射前乘上的曝光尺度(正)。

white: 可選的 white-point(正)。None 時為基本 Reinhard(建議、全域單調)。

Returns:

[0, 1] 的 float64 LDR 影像(與輸入同形狀)。

Raises:

ValueError: 空/非有限/負的輻射輝度,非正的 exposure/white(fail-closed)。

背景知識指南(該運算子背後的物理與規範)

• blender_interop — 與 Blender 搭配使用 —— 在 Blender 中建形、用 fullseye 量測(座標軸、單位、真值資料的陷阱)

參考(範例資料、文獻)

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

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

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

• render_beauty — py -3.11 examples_3d/render_beauty.py

• render_tonemap — py -3.11 examples_3d/render_tonemap.py

型別可銜接的下一個運算子(可接受 image2d 作為輸入)

fuse_to_voxel · fit_poly_surface · eval_poly_surface · surface_form_error · background_flatten · polar_unwrap · fit_zernike · matcap_shade

同類別(render)

project_points · render_point_depth · render_volume_projection · render_shaded · ambient_occlusion · cast_shadow · phong_shade · matcap_shade


*Provenance: render_tonemap.py — 3D 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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