博客
关于我
环路滤波(四):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/

你可能感兴趣的文章
Node-RED中建立静态网页和动态网页内容
查看>>
Vue3+Element-ul学生管理系统(第二十二课)
查看>>
Node-RED中根据HTML文件建立Web网站
查看>>
Node-RED中解析高德地图天气api的json数据显示天气仪表盘
查看>>
Node-RED中连接Mysql数据库并实现增删改查的操作
查看>>
Node-RED中通过node-red-ui-webcam节点实现访问摄像头并截取照片预览
查看>>
Node-RED中配置周期性执行、指定时间阶段执行、指定时间执行事件
查看>>
Node-RED安装图形化节点dashboard实现订阅mqtt主题并在仪表盘中显示温度
查看>>
Node-RED怎样导出导入流程为json文件
查看>>
Node-RED订阅MQTT主题并调试数据
查看>>
Node-RED通过npm安装的方式对应卸载
查看>>
node-request模块
查看>>
node-static 任意文件读取漏洞复现(CVE-2023-26111)
查看>>
Node.js 8 中的 util.promisify的详解
查看>>
node.js debug在webstrom工具
查看>>
Node.js Event emitter 详解( 示例代码 )
查看>>
Node.js GET、POST 请求是怎样的?
查看>>
Node.js HTTP模块详解:创建服务器、响应请求与客户端请求
查看>>
Node.js RESTful API如何使用?
查看>>
node.js url模块
查看>>