Files
pqAutomationApp/app/tests/eotf.py

41 lines
997 B
Python
Raw Normal View History

2026-04-20 09:41:24 +08:00
"""EOTFPQ / ST.2084)相关纯算法。"""
import numpy as np
def calculate_pq_curve(gray_levels):
"""计算 PQ (ST.2084) EOTF 理想曲线。
Args:
gray_levels: 灰阶百分比数组 (0-100)
Returns:
numpy.ndarray: 归一化亮度数组 (0-1)
"""
# PQ 曲线参数ITU-R BT.2100 标准)
m1 = 0.1593017578125 # = 2610 / 16384
m2 = 78.84375 # = 78.84375
c1 = 0.8359375 # = 3424 / 4096
c2 = 18.8515625 # = 2413 / 128
c3 = 18.6875 # = 2392 / 128
L_bar = []
for gray in gray_levels:
V = gray / 100.0
if V <= 0:
L_bar.append(0)
else:
V_pow = np.power(V, 1 / m2)
numerator = max(V_pow - c1, 0)
denominator = c2 - c3 * V_pow
if denominator > 0:
L = np.power(numerator / denominator, 1 / m1)
else:
L = 0
L_bar.append(L)
return np.array(L_bar)