colorspace oplab → rgbimageimport fullseye as fs; fs.ledger.lab_to_rgb(lab, white=(0.95047, 1.0, 1.08883)) (実装を直接呼ぶなら import imgmetrics; imgmetrics.lab_to_rgb(lab, white=(0.95047, 1.0, 1.08883))、台帳から引くなら opsimgmetrics.get("lab_to_rgb"))CIE L*a*b* → sRGB [0, 1]。色域外は切り詰められるので
rgb_to_lab との往復は色域内でしか一致しない(テストで固定)。
手順: fy = (L + 16) / 116、fx = fy + a / 500、fz = fy - b / 200 を
xyz_to_lab の逆関数で XYZ に戻し(white を掛ける)、XYZ→線形 RGB の
逆行列を掛けてから sRGB の伝達関数を掛ける。伝達関数の手前で線形 RGB を
[0, 1] に 無言でクリップする ―― ここが「色域外は切り詰め」の実体で、
例外は出ない。
lab: 最後の軸が 3 の任意の形。white: rgb_to_lab で使ったものと同じ白色点を渡す(検証はしない)。[0, 1] のガンマ付き sRGB。
8 bit にするなら呼び出し側で 255 倍して丸める。MetricContractError): 最後の軸が 3 でない。py -3.11 examples/image_quality_metrics.pyrgbimage を入力に取れる)rgb_to_lab · rgb_to_xyz · delta_e_map
colorspace)rgb_to_lab · rgb_to_xyz · xyz_to_lab
Provenance: imgmetrics.py — IMGMETRICS operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.