本节摘要:HDR内容的亮度动态范围极大,而人眼对不同亮度区的分辨力不均——暗部与高亮区的细节人眼较钝,中间调最敏感。LMCS(Luma Mapping with Chroma Scaling,亮度映射与色度缩放)在编码环路里插入一段自适应的分段线性亮度映射:预测前把信号"重新分配"到更利于编码的分布,重建后再映射回去;同时按映射程度对色度做联动缩放,纠正亮度色度在映射中的联动失真。本节拆解它的两段式流程与HDR动机。
第8章收官。LMCS名义上挂在高层语法(它的开关与参数在SPS/PH里信令),但作用点在编码环路内部——是理解"系统级工具如何反哺压缩效率"的绝佳样本。
标准动态范围(SDR)内容亮度约两个数量级;HDR扩展到十几个数量级,且主流传输用10位及以上位深、PQ/HLG这类非线性格式。编码器面对的困境:
LMCS的解法一句话:在环路里把亮度分布"整形"成更适合编码的形状,编完再还原——整形强度由码流信令,逐帧可调。
三个关键设计逐个说:
分段线性映射。映射函数不是单一曲线,而是分段线性的折线——码流里只传折线的几个拐点(分段边界与增益),解码端重建整条折线。折线可以按内容自适应:暗场戏把暗部区间拉伸(占更多码字),日景把中间调拉伸。整形发生在预测之前,意味着预测、残差、量化全都工作在"整形后"的分布上——整条流水线受益。
映射的分段与自适应层级。映射函数按图像统计逐帧推导候选,编码器挑优信令;分段数量与边界都有约束(防止信令膨胀),帧内还可按区域进一步微调(细节在标准文本的分节里)。设计上与第6章ALF的"系数推导+差值信令"同款:重活在编码端干,解码端查表执行。
色度残余缩放。亮度映射改变了"亮度与色度的相对关系"——同一段色度码字在不同亮度区的感知位置变了。LMCS在色度预测后按该样点亮度映射的联动系数对色度做缩放修正:亮的地方色度收一点,暗的地方放一点。物理直觉与3.3节CCLM同源——亮度和色度在感知空间里是绑在一起的,动其一必须顾其二。
LMCS的收益集中在两处:
失效面:动态范围本就狭窄的内容(平坦光照下的会议录像)里,映射函数近乎恒等——开了也只是几比特信令的浪费,无害无益。所以LMCS是逐帧开关(PH里信令,呼应8.1节"帧级差异进PH"的设计),编码器按内容画像自由取舍。
LMCS 决策的工程口径(伪代码思路): 帧级: stats = 亮度直方图统计 if 动态范围集中(直方图单峰且窄): LMCS 关闭(映射近恒等,省信令) else: 推导若干候选折线 → RD 对比 → 信令最优解 块级: 色度缩放系数由亮度映射自动派生,无需块级信令 观察指标: 中间调区域的量化失真(色带出现率)下降幅度 是验证LMCS效果最直接的指标
⚠️ 实现陷阱两条:其一,LMCS的映射发生在环路内——参考帧缓存里存的是逆映射后的原域样点,还是映射域样点,标准有精确规定,实现搞混会产生缓慢漂移(症状与5.2节依赖量化状态错位类似:画质逐帧劣化而非立刻崩溃)。其二,LMCS与色度QP映射(5.2节)存在联动,调参时两者要一起动,单动一个常得出"LMCS没用"的错误结论。
用一段具体内容把折线"画"出来。素材:城市夜景航拍(大面积暗部楼群、点状霓虹、局部车灯高光),HDR10封装。
背景:PQ码字在这类内容上的分布是"暗部挤成一团、高亮零散分布"——中间调(人眼最敏感的楼体轮廓带)恰好挤在最密的暗部边缘,量化误差最刺眼的位置与最敏感的位置重合。操作:LMCS折线把暗部到中间调这一段拉伸(占更多码字),高亮段压缩(人眼本来就钝感)。结果(示例口径):同等码率下楼体轮廓带的色带与糊化推迟出现;同等质量下码率有可感节省。解读:折线的本质是"码字再分配"——从人眼不敏感区搬到敏感区,等效于给了中间调一段"更细的量化步长",而QP一个数都没动。变式:白天素材动态范围收窄,折线趋于平直,收益归零——LMCS逐帧开关(PH信令)让它只在有用的帧上花那几比特信令。
问:LMCS和显示端的色调映射是一回事吗?
不是。显示端tone mapping是渲染层操作(显示适配,画质链路末端);LMCS是编码环路内的操作(为压缩服务,重建后已还原原域)。两者叠加工作、互不替代——LMCS管"编得准",tone mapping管"显示得对"。
问:SDR内容需要关心LMCS吗?
默认收益小,但高对比SDR(逆光人像、烛光场景)有可测收益。生产建议:SDR管线先关LMCS跑基线,再对高对比子集AB一次——用第9.2节消融的套路给这一个问题定价,比一刀切的教条可靠。