博客
关于我
环路滤波(四):LMCS
阅读量:537 次
发布时间:2019-03-09

本文共 1911 字,大约阅读时间需要 6 分钟。

LMCS( luma mapping with chroma scaling)是VVC中新增的技术,其位于去方块滤波之前,也被称为环路重整形(in-loop reshaper)。该技术用于HDR和SDR视频中。

LMCS包括两部分:(1)基于自适应分段线性模型的环内亮度映射;(2)基于亮度的色度残差缩放;

 

上图是解码端的LMCS框架,上面是亮度处理下面是色度处理。淡蓝色框在映射域(mapped domain)包括反量化、反变换、亮度帧内预测、亮度预测值和残差值相加;非阴影框在普通域(非映射)(original domain)包括环路滤波、运动补偿、色度帧内预测、色度预测值和残差值相加、DPB中参考图像存取。浅黄色框是LMCS相关功能,包括亮度信号正向和逆向映射、基于亮度的色度缩放。SPS中有一个标志位控制LMCS功能开启。

基于分段线性模型的环内亮度映射

环内亮度映射是调整输入信号的动态范围来提高压缩效率。对于HDR图像其动态范围很高可能需要10比特才能表示,而显示设备可能只有8比特这就需要色调映射改变信号的范围。

亮度映射通过一个前向映射函数FwdMap和与之对应的逆向映射函数InvMap实现。FwdMap是一个分段线性模型,有16个均匀分段。InvMap可由FwdMap推导出,所以码流中只需传输FwdMap函数。

亮度映射模型在tile组级别( tile group level)上传输,即每个tile组的模型相互独立。首先传输一个标志位表示当前tile组是否存在分段映射模型,如果存在则传输相应模型参数。tile组中还存在另外一个标志位表示当前tile组是否使用LCMS。

分段线性模型将输入信号的动态范围映射到16个等长区间,每个区间的线性映射参数用映射到该区间的码字数表示。以10比特输入为例,2^10=1024,每个区间默认有1024/16=64个码字,区间实际传输的码字数用来计算缩放因子和调整映射函数。

FwdMap的每个分段区间由InputPivot[]和MappedPivot[]定义。InputPivot[]和MappedPivot[]按下列方法生成(假设输入信号为10比特):

1)OrgCW = 642)For i = 0:16, InputPivot[ i ] = i * OrgCW3)For i=0:16, MappedPivot[i] is calculated as follows:  MappedPivot[ 0 ] = 0;for( i = 0; i <16 ; i++)  MappedPivot[ i + 1 ] = MappedPivot[ i ] + SignalledCW[ i ]SignalledCW[ i ]是第i个分段区间传输的码字数。

映射过程(前向或逆向)可以通过 look-up-tables (LUT)或动态计算(on-the-fly computation)实现。

如果使用LUT,每个tile组可以预先计算和存储FwdMapLUT和InvMapLUT,然后可以通过FwdMap(Y_pred)=FwdMapLUT[Y_pred]和InvMap(Y_pred)=InvMapLUT[Y_pred]进行前向和逆向映射。

如果使用动态计算,以前向映射FwdMap 为例,为了得到亮度像素所属的区间,首先像素值要右移6位得到所属区间,然后检索该区间的模型参数并使用动态计算得到映射值。假设区间索引为i,令a1=InputPivot[i],a2=InputPivot[i+1],b1=MappedPivot[i],b2=MappedPivot[i+1],则映射函数可以表示为:

 

逆映射InvMap 过程类似,只不过上面比特右移操作换成条件检测,因为映射域的区间不是均匀划分的。

基于亮度的色度残差缩放

如果使用了亮度映射,且当前tile组没有使用dual tree partition,则需要一个额外的标志位表示是否使用基于亮度的色度残差缩放。

如果没有使用亮度映射或当前tile组使用了dual tree partition,不允许使用基于亮度的色度残差缩放。且当色度块小于等于4时也不允许使用基于亮度的色度残差缩放。

色度残差缩放依赖于相应亮度预测块平均值,计算方式如下:

 

int  Reshape::calculateChromaAdj(Pel avgLuma){  int lumaIdx = Clip3
(0, (1<

整个色度块的缩放因子都相同,缩放过程如下:

感兴趣的请关注微信公众号Video Coding

 

转载地址:http://wraiz.baihongyu.com/

你可能感兴趣的文章
Mysql:SQL性能分析
查看>>
mysql:SQL按时间查询方法总结
查看>>
MySQL:什么样的字段适合加索引?什么样的字段不适合加索引
查看>>
MySQL:判断逗号分隔的字符串中是否包含某个字符串
查看>>
MySQL:某个ip连接mysql失败次数过多,导致ip锁定
查看>>
Mysql:避免重复的插入数据方法汇总
查看>>
M_Map工具箱简介及地理图形绘制
查看>>
m_Orchestrate learning system---二十二、html代码如何变的容易
查看>>
n = 3 , while n , continue
查看>>
n 叉树后序遍历转换为链表问题的深入探讨
查看>>
N-Gram的基本原理
查看>>
n1 c语言程序,全国青少年软件编程等级考试C语言经典程序题10道七
查看>>
nacos config
查看>>
Nacos Derby 远程命令执行漏洞(QVD-2024-26473)
查看>>
Nacos 与 Eureka、Zookeeper 和 Consul 等其他注册中心的区别
查看>>
Nacos2.X 配置中心源码分析:客户端如何拉取配置、服务端配置发布客户端监听机制
查看>>
NacosClient客户端搭建,微服务注册进nacos
查看>>
Nacos做注册中心使用
查看>>
Nacos原理
查看>>
Nacos发布0.5.0版本,轻松玩转动态 DNS 服务
查看>>