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

你可能感兴趣的文章
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_说明操作步骤---大数据之Nifi工作笔记0028
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>