CN117917074A - 跨分量样点自适应偏移中的编解码增强 - Google Patents

跨分量样点自适应偏移中的编解码增强 Download PDF

Info

Publication number
CN117917074A
CN117917074A CN202280060815.1A CN202280060815A CN117917074A CN 117917074 A CN117917074 A CN 117917074A CN 202280060815 A CN202280060815 A CN 202280060815A CN 117917074 A CN117917074 A CN 117917074A
Authority
CN
China
Prior art keywords
sample
component
samples
video
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280060815.1A
Other languages
English (en)
Inventor
郭哲玮
修晓宇
陈伟
王祥林
陈漪纹
朱弘正
闫宁
于冰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Dajia Internet Information Technology Co Ltd
Original Assignee
Beijing Dajia Internet Information Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Dajia Internet Information Technology Co Ltd filed Critical Beijing Dajia Internet Information Technology Co Ltd
Priority claimed from PCT/US2022/042746 external-priority patent/WO2023038964A1/en
Publication of CN117917074A publication Critical patent/CN117917074A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种电子装置执行对视频信号进行解码的方法,包括:从视频信号接收包括第一分量和第二分量的图片帧;选择穿过相对于第二分量的相应样点的第一分量的同位样点或第二分量的当前样点的边缘方向;计算第一边缘强度,确定来自由同位样点或当前样点、第一相邻样点和第二相邻样点组成的组中的两个样点的值之间的差;根据M‑1个阈值将第一边缘强度量化为M个分段;基于M个分段确定针对第二分量的相应样点的分类器;根据分类器确定针对第二分量的相应样点的样点偏移;以及基于所确定的样点偏移来修改第二分量的相应样点。

Description

跨分量样点自适应偏移中的编解码增强
相关申请的交叉引用
本申请基于以下申请并要求以下申请的优先权:于2021年9月8日提交的题为“CROSS-COMPONENT SAMPLE ADAPTIVE OFFSET(跨分量样点自适应偏移)”的美国临时专利申请第63/241,917号,以及于2021年9月27日提交的题为“CROSS-COMPONENT SAMPLEADAPTIVE OFFSET(跨分量样点自适应偏移)”的美国临时专利申请第63/248,895号,上述申请的全部内容通过引用整体并入本文。
技术领域
本申请一般涉及视频编解码和压缩,更具体地,涉及提高亮度和色度编解码效率的方法和装置。
背景技术
数字视频由多种电子设备支持,例如数字电视、膝上型或台式计算机、平板计算机、数码相机、数字记录设备、数字媒体播放器、视频游戏控制台、智能电话、视频电话会议设备、视频流媒体设备等。电子设备通过通信网络发送和接收或以其他方式传送数字视频数据,和/或将数字视频数据存储在存储设备上。由于通信网络的带宽容量有限以及存储设备的存储器资源有限,在传送或存储视频数据之前,可以使用视频编解码来根据一种或多种视频编解码标准来压缩视频数据。例如,视频编解码标准包括通用视频编解码(VVC)、联合探索测试模型(JEM)、高效视频编解码(HEVC/H.265)、高级视频编解码(AVC/H.264)、运动图像专家组(MPEG)编解码等。AOMedia Video 1(AV1)是作为其先前标准VP9的后续版本而开发的。音频视频编解码(AVS),指数字音频和数字视频压缩标准,是另一个视频压缩标准系列。视频编解码通常使用预测方法(例如,帧间预测、帧内预测等),预测方法利用视频数据中固有的冗余性。视频编解码旨在将视频数据压缩为使用较低比特率的形式,同时避免或最小化视频质量的下降。
发明内容
本申请描述了与视频数据编码和解码相关的实现方式,更具体地,描述了与提高亮度和色度分量的编解码效率的方法和装置相关的实现方式,包括通过探索亮度分量和色度分量之间的跨分量关系来提高编解码效率。
根据本申请的第一方面,一种对视频信号进行解码的方法,包括:从所述视频信号接收包括第一分量和第二分量的图片帧;根据相对于第二分量的相应样点的第一分量的同位样点或第二分量的当前样点的边缘方向和一个或多个边缘强度,来确定针对所述第二分量的相应样点的分类器;根据所述分类器来确定针对所述第二分量的所述相应样点的样点偏移;以及基于所确定的样点偏移来修改所述第二分量的所述相应样点。在一些实施例中,根据所述边缘方向和所述一个或多个边缘强度来确定针对所述第二分量的所述相应样点的分类器包括:选择穿过所述同位样点或当前样点的所述边缘方向;定位所述同位样点或当前样点的第一相邻样点和第二相邻样点;通过确定来自由所述同位样点或当前样点、所述第一相邻样点和所述第二相邻样点组成的组中的两个样点的值之间的差来计算第一边缘强度;根据M-1个阈值T(1),…,T(M-1)将所述第一边缘强度量化为M个分段,其中M为正整数;以及基于所述M个分段来确定所述分类器。
根据本申请的第二方面,一种电子装置包括一个或多个处理单元、存储器以及存储在存储器中的多个程序。当由一个或多个处理单元执行时,程序使电子装置执行如上所述的对视频信号进行编解码的方法。
根据本申请的第三方面,一种非暂时性计算机可读存储介质存储多个程序以供具有一个或多个处理单元的电子装置执行。当由一个或多个处理单元执行时,程序使电子装置执行如上所述的对视频信号进行编解码的方法。
根据本申请的第四方面,一种计算机可读存储介质在其中存储包括指令的比特流,所述指令在被执行时使得解码装置执行如上所述的对视频信号进行解码的方法。
应当理解,前述一般描述和以下详细描述均仅是示例而不是对本公开的限制。
附图说明
并入本说明书并构成本说明书的一部分的附图示出了与本公开一致的示例,并且与说明书一起用于解释本公开的原理。
图1是说明根据本公开的一些实施方式的用于对视频块进行编码和解码的示范性系统的框图。
图2是说明根据本公开的一些实施方式的示范性视频编码器的框图。
图3是说明根据本公开的一些实施方式的示范性视频解码器的框图。
图4A到图4E是说明根据本公开的一些实施方式如何将帧递归地分割成不同大小和形状的多个视频块的框图。
图4F是说明VVC中定义的帧内模式的框图。
图4G是示出用于帧内预测的多个参考线的框图。
图5A是描绘根据本公开的一些实施方式的样点自适应偏移(SAO)中使用的四种梯度模式的框图。
图5B是描绘根据本公开的一些实施方式的围绕中心样点的样点的命名约定的框图。
图6A是说明根据本公开的一些实施方式的应用于色度样点并使用DBF Y作为输入的CCSAO的系统和过程的框图。
图6B是说明根据本公开的一些实施方式的应用于亮度和色度样点并使用DBF Y/Cb/Cr作为输入的CCSAO的系统和过程的框图。
图6C是说明根据本公开的一些实施方式的可以独立工作的CCSAO的系统和过程的框图。
图6D是说明根据本公开的一些实施方式的可以以相同或不同偏移递归地应用(2次或N次)的CCSAO的系统和过程的框图。
图6E是说明根据本公开的一些实施方式的与AVS标准中的增强型样点自适应偏移(ESAO)并行应用的CCSAO的系统和过程的框图。
图6F是说明根据本公开的一些实施方式的在SAO之后应用的CCSAO的系统和过程的框图。
图6G是说明根据本公开的一些实施方式的CCSAO的系统和过程可以在没有CCALF的情况下独立工作的框图。
图6H是说明根据本公开的一些实施方式的与跨分量自适应环路滤波器(CCALF)并行应用的CCSAO的系统和过程的框图。
图6I是说明根据本公开的一些实施方式的与SAO和BIF并行应用的CCSAO的系统和过程的框图。
图6J是示出根据本公开的一些实施方式的通过替代SAO而与BIF并行应用的CCSAO的系统和过程的框图。
图7是说明根据本公开的一些实施方式的使用CCSAO的样点过程的框图。
图8是说明根据本公开的一些实施方式的CCSAO过程被交织到垂直和水平去块滤波器(DBF)的框图。
图9是说明根据本公开的一些实施方式的使用跨分量相关来解码视频信号的示例性过程的流程图。
图10A是说明根据本公开的一些实施方式的使用不同亮度(或色度)样点位置进行C0分类的分类器的框图。
图10B说明根据本公开的一些实施方式的用于亮度候选的不同形状的一些示例。
图11是根据本公开的一些实施方式的示例过程的框图,该示例过程说明了可以将所有同位的和相邻的亮度/色度样点馈送到CCSAO分类中
图12A说明了根据本公开的一些实施方式的示例性分类器,其将同位亮度样点值替换为通过对同位和相邻的亮度样点进行加权而获得的值。
图12B说明了根据本公开的一些实施方式的子采样拉普拉斯计算。
图12C说明了根据本公开的一些实施方式的将跨分量/当前分量的边缘信息用于当前分量分类的示例。
图13是说明根据本公开的一些实施方式的CCSAO与具有不同削波组合的其他环路滤波器一起应用的框图。
图14A是说明根据本公开的一些实施方式的如果用于分类的同位和相邻的亮度(色度)样点中的任何一者在当前图片之外则CCSAO不应用于当前色度(亮度)样点的框图。
图14B是说明根据本公开的一些实施方式的如果用于分类的同位和相邻的亮度或色度样点中的任一者在当前图片之外则将CCSAO应用于当前亮度或色度样点的框图。
图14C是说明根据本公开的一些实施方式的如果用于分类的对应选择的同位或相邻的亮度样点在由虚拟边界(VB)定义的虚拟空间之外则CCSAO不应用于当前色度样点的框图。
图15示出了根据本公开的一些实施方式的在虚拟边界外的亮度样点上应用重复或镜像填充。
图16示出了根据本公开的一些实施方式,如果所有9个同位的相邻亮度样点都用于分类则需要额外的1个亮度线缓冲器。
图17示出了根据本公开的一些实施方式的AVS中的图示,其中9个亮度候选CCSAO穿过VB可以增加2个额外的亮度线缓冲器。
图18A示出了根据本公开的一些实施方式的VVC中的图示,其中9个亮度候选CCSAO穿过VB可以增加1个额外的亮度线缓冲器。
图18B示出了根据本公开的一些实施方式的当同位或相邻色度样点用于对当前亮度样点进行分类时的图示,所选择的色度候选可能穿过VB并且需要额外的色度线缓冲器。
图19A-19C在AVS和VVC中示出,根据本公开的一些实施方式,如果色度样点的任何亮度候选穿过VB(在当前色度样点VB之外),则针对色度样点禁用CCSAO。
图20A-20C示出了根据本公开的一些实施方式,在AVS和VVC中,如果色度样点的任何亮度候选穿过VB(在当前色度样点VB之外),则使用色度样点的重复填充启用CCSAO。
图21A-21C示出了根据本公开的一些实施方式,在AVS和VVC中,如果色度样点的任何亮度候选穿过VB(在当前色度样点VB之外),则对色度样点使用镜像填充来启用CCSAO。
图22A-22B示出了根据本公开的一些实施方式,针对不同的CCSAO样点形状使用双侧对称填充启用CCSAO。
图23示出了根据本公开的一些实施方式使用有限数量的亮度候选进行分类的限制。
图24示出了根据本公开的一些实施方式的CCSAO应用区域未对准编码树块(CTB)/编码树单元(CTU)边界。
图25示出了根据本公开的一些实施方式,CCSAO应用区域帧分区可以用CCSAO参数来固定。
图26示出了根据本公开的一些实施方式,CCSAO应用区域可以是从帧/条带/CTB级别划分的二叉树(BT)/四叉树(QT)/三叉树(TT)。
图27是说明根据本公开的一些实施方式的在图片帧内的不同级别使用和切换的多个分类器的框图。
图28是说明根据本公开的一些实施方式的CCSAO应用区域划分可以是动态的并且在图像级别上切换的框图。
图29是说明根据本公开的一些实施方式的CCSAO分类器可以考虑当前或跨分量编码信息的图。
图30是说明根据本公开的一些实施方式的本公开中公开的SAO分类方法用作后预测滤波器的框图。
图31是说明根据本公开的一些实施方式的对于后预测SAO滤波器,每个分量可以使用当前样点和相邻样点进行分类的框图。
图32是说明根据本公开的一些实施方式的本公开中公开的SAO分类方法用作重建后滤波器的框图。
图33是说明了根据本公开的一些实施方式的使用跨分量相关来解码视频信号的示例性过程的流程图。
图34是说明根据本公开的一些实施方式的与用户接口耦合的计算环境的图。
具体实施方式
现在将详细参照具体实施方式,在附图中示出了具体实施方式的示例。在以下详细描述中,阐述了大量非限制性具体细节以便帮助理解本文呈现的主题。但是对于本领域普通技术人员将显而易见的是,在不脱离权利要求的范围的情况下,可以使用各种替代方案,并且可以在没有这些具体细节的情况下实践主题。例如,对于本领域普通技术人员将显而易见的是,本文呈现的主题可以在具有数字视频能力的许多类型的电子设备上实现。
应当说明的是,本公开的说明书和权利要求书以及附图中的术语“第一”、“第二”等用于区分对象,而不用于描述任何具体的顺序或先后次序。应当理解的是,这样使用的数据在适当情况下可以互换,以便本文描述的本公开的实施例还能够以除了在附图中所示的或本公开中描述的那些顺序以外的顺序实施。
第一代AVS标准包括中国国家标准“信息技术,先进音视频编码,第2部分:视频(Information Technology,Advanced Audio Video Coding,Part 2:Video)”(称为AVS1)和“信息技术,先进音视频编码,第16部分:广播电视视频(Information Technology,Advanced Audio Video Coding,Part 16:Radio Television Video)”(称为AVS+)。与MPEG-2标准相比,它可以在相同的感知质量下节省大约50%的比特率。第二代AVS标准包括中国国家标准“信息技术,高效多媒体编码(Information Technology,EfficientMultimedia Coding)”系列(称为AVS2),其主要针对超高清电视节目的传输。AVS2的编解码效率是AVS+的两倍。同时,AVS2标准视频部分由电气电子工程师协会(IEEE)提交,作为一个国际标准申请。AVS3标准是针对UHD视频应用的新一代视频编解码标准,旨在超越最新国际标准HEVC的编解码效率,比HEVC标准提供约30%的比特率节省。2019年3月,在第68届AVS会议上,AVS3-P2基线完成,比HEVC标准提供约30%的比特率节省。目前,一种称为高性能模型(HPM)的参考软件由AVS小组维护,用于演示AVS3标准的参考实施方式。与HEVC相似,AVS3标准建立在基于块的混合视频编解码框架之上。
图1是示出了根据本公开的一些实施方式的用于并行地对视频块进行编码和解码的示例性系统10的框图。如图1中所示,系统10包括源设备12,源设备12生成并编码稍后将由目标设备14进行解码的视频数据。源设备12和目标设备14可以包括各种各样的电子设备中的任何电子设备,包括台式计算机或膝上型计算机、平板计算机、智能电话、机顶盒、数字电视、相机、显示器设备、数字媒体播放器、视频游戏机、视频流传输设备等。在一些实施方式中,源设备12和目标设备14配备有无线通信能力。
在一些实施方式中,目标设备14可以经由链路16接收待解码的编码视频数据。链路16可以包括能够将编码视频数据从源设备12移动到目标设备14的任何类型的通信介质或设备。在一个示例中,链路16可以包括使源设备12能够实时地将编码视频数据直接发送到目标设备14的通信介质。编码视频数据可以根据通信标准(例如无线通信协议)被调制,并且被发送到目标设备14。通信介质可以包括任何无线或有线通信介质,例如射频(RF)频谱或一个或多个物理传输线。通信介质可以形成基于分组的网络(例如局域网、广域网或诸如互联网的全球网)的一部分。通信介质可以包括路由器、交换机、基站或可以有利于促进从源设备12到目标设备14的通信的任何其他装置。
在其他一些实施方式中,可以将编码视频数据从输出接口22发送到存储设备32。随后,可以由目标设备14经由输入接口28访问存储设备32中的编码视频数据。存储设备32可以包括各种分布式或本地访问的数据存储介质中的任何数据存储介质,例如硬盘驱动器、蓝光光盘、数字通用盘(DVD)、压缩盘只读存储器(CD-ROM)、闪存存储器、易失性或非易失性存储器、或者用于存储编码视频数据的任何其他合适的数字存储介质。在另一示例中,存储设备32可以对应于文件服务器或可以保持由源设备12生成的编码视频数据的另一中间存储设备。目标设备14可以经由流传输或下载从存储设备32访问存储的视频数据。文件服务器可以是能够存储编码视频数据并且将编码视频数据发送到目标设备14的任何类型的计算机。示例性文件服务器包括网络服务器(例如,用于网站)、文件传输协议(FTP)服务器、网络附属存储(NAS)设备或本地磁盘驱动器。目标设备14可以通过适合于访问存储在文件服务器上的编码视频数据的任何标准数据连接来访问编码视频数据,标准数据连接包括无线信道(例如,无线保真(Wi-Fi)连接)、有线连接(例如,数字订户线(DSL)、电缆调制解调器等)或无线信道和有线连接两者的组合。编码视频数据从存储设备32的传输可以是流传输、下载传输或流传输和下载传输两者的组合。
如图1中所示,源设备12包括视频源18、视频编码器20和输出接口22。视频源18可以包括诸如以下项的源或此类源的组合:视频捕获设备(例如,摄像机)、包含先前捕获的视频的视频存档、用于从视频内容提供者接收视频的视频馈入接口、和/或用于生成作为源视频的计算机图形数据的计算机图形系统。作为一个示例,如果视频源18是安全监控系统的摄像机,则源设备12和目标设备14可以形成相机电话或视频电话。然而,本申请中所描述的实施方式通常可以适用于视频编解码,并且可以应用于无线和/或有线应用。
可以由视频编码器20对捕获、预先捕获或计算机生成的视频进行编码。可以经由源设备12的输出接口22将编码视频数据直接发送到目标设备14。还可以(或备选地)将编码视频数据存储到存储设备32上以便稍后被目标设备14或其他设备访问,以用于解码和/或回放。输出接口22可以进一步包括调制解调器和/或发送器。
目标设备14包括输入接口28、视频解码器30和显示器设备34。输入接口28可以包括接收器和/或调制解调器,并且通过链路16接收编码视频数据。通过链路16传送或在存储设备32上提供的编码视频数据可以包括由视频编码器20生成的各种语法元素以供视频解码器30在对视频数据进行解码时使用。此类语法元素可以被包括在通信介质上发送的、存储在存储介质上的或存储在文件服务器上的编码视频数据内。
在一些实施方式中,目标设备14可以包括显示器设备34,显示器设备34可以是集成显示器设备和被配置为与目标设备14通信的外部显示器设备。显示器设备34向用户显示解码视频数据,并且可以包括各种显示器设备中的任何显示器设备,诸如液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或另一类型的显示器设备。
视频编码器20和视频解码器30可以根据专有标准或行业标准(例如,VVC、HEVC、MPEG-4的第10部分、AVC、AVS)或此类标准的扩展进行操作。应当理解,本申请不限于特定的视频编码/解码标准,并且可以适用于其他视频编码/解码标准。通常认为源设备12的视频编码器20可以被配置为根据这些当前标准或未来标准中的任何标准对视频数据进行编码。类似地,还通常认为目标设备14的视频解码器30可以被配置为根据这些当前标准或未来标准中的任何标准对视频数据进行解码。
视频编码器20和视频解码器30可以分别被实现为各种合适的编码器和/或解码器电路中的任何电路,例如一个或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、分立逻辑器件、软件、硬件、固件或其任何组合。当部分地以软件实现时,电子设备可以将用于软件的指令存储于合适的非暂态计算机可读介质中,并且使用一个或多个处理器执行硬件中的指令以执行本公开中所公开的视频编码/解码操作。视频编码器20和视频解码器30中的每一个可以被包括在一个或多个编码器或解码器中,编码器或解码器中的任一者可以被集成为相应设备中的组合式编码器/解码器(CODEC)的一部分。
图2是示出了根据本申请中描述的一些实施方式的示例性视频编码器20的框图。视频编码器20可以对视频帧内的视频块执行帧内预测编码和帧间预测编码。帧内预测编码依赖于空间预测以减少或移除给定视频帧或图片内的视频数据中的空间冗余。帧间预测编码依赖于时间预测以减少或移除视频序列的邻近视频帧或图片内的视频数据中的时间冗余。应当注意的是,在视频编解码领域中,术语“帧”可以用作术语“图像”或“图片”的同义词。
如图2所示,视频编码器20包括视频数据存储器40、预测处理单元41、已解码图片缓冲器(DPB)64、加法器50、变换处理单元52、量化单元54和熵编码单元56。预测处理单元41还包括运动估计单元42、运动补偿单元44、分区单元45、帧内预测处理单元46和帧内块复制(BC)单元48。在一些实施方式中,视频编码器20还包括反量化单元58、逆变换处理单元60和加法器62用于视频块重建。诸如去块滤波器的环路滤波器63可以位于加法器62和DPB 64之间以对块边界进行滤波以从重建的视频中去除块效应伪像。除了去块滤波器之外,还可以使用诸如样点自适应偏移(SAO)滤波器和/或自适应环路滤波器(ALF)之类的另一环路滤波器来对加法器62的输出进行滤波。在一些示例中,环路滤波器可以被省略,并且解码的视频块可以由加法器62直接提供给DPB 64。视频编码器20可以采用固定或可编程硬件单元的形式,或者可以被划分为一个或多个所示的固定或可编程硬件单元。
视频数据存储器40可以存储将由视频编码器20的组件编码的视频数据。可例如从图1所示的视频源18获得视频数据存储器40中的视频数据。DPB 64是存储供视频编码器20(例如,以帧内或帧间预测编码模式)在对视频数据进行编码时使用的参考视频数据(例如,参考帧或图片)的缓冲器。视频数据存储器40和DPB 64可以由各种存储器设备中的任何存储器设备形成。在各种示例中,视频数据存储器40可以与视频编码器20的其他组件一起在芯片上,或相对于那些组件在芯片外。
如图2中所示,在接收到视频数据之后,预测处理单元41内的分割单元45将视频数据分割为视频块。此分割还可以包括根据与视频数据相关联的预定义的拆分结构(例如四叉树(QT)结构)将视频帧分割为条带、瓦片(tile)(例如,视频块的集合)或其他更大的编码单元(CU)。视频帧是或可以被视为具有样点值的二维样点阵列或矩阵。阵列中的样点也可以被称为像素(pixel)或图像元素(pel)。阵列或图片的水平和垂直方向(或轴)上的样点的数量定义了视频帧的尺寸和/或分辨率。例如,可以通过使用QT分割将视频帧划分为多个视频块。视频块再次是或可以被视为具有样点值的二维样点阵列或矩阵,但是其维度小于视频帧的维度。视频块的水平和垂直方向(或轴)上的样点的数量定义了视频块的尺寸。通过例如迭代地使用QT分割、二叉树(BT)分割或三叉树(TT)分割或其任意组合,可以将视频块进一步分割为一个或多个块分区或子块(其可以再次形成块)。应注意,本文所使用的术语“块”或“视频块”可以是帧或图片的一部分,尤其是矩形(正方形或非正方形)部分。参考例如HEVC和VVC,块或视频块可以是或对应于编码树单元(CTU)、CU、预测单元(PU)或变换单元(TU)和/或可以是或对应于相应的块(例如编码树块(CTB)、编码块(CB)、预测块(PB)或变换块(TB))和/或子块。
预测处理单元41可以基于误差结果(例如,编码速率和失真等级)为当前视频块选择多个可行预测编码模式中的一个,例如多个帧内预测编码模式中的一个或多个帧间预测编码模式中的一个。预测处理单元41可以将所得的帧内预测编码块或帧间预测编码块提供给加法器50以生成残差块,并且提供给加法器62以重建编码块以用于随后作为参考帧的一部分使用。预测处理单元41还将语法元素(例如运动矢量、帧内模式指示符、分割信息和其他此类语法信息)提供给熵编码单元56。
为了选择用于当前视频块的合适的帧内预测编码模式,预测处理单元41内的帧内预测处理单元46可以与和待编码的当前块在同一帧中的一个或多个邻近块相关地执行当前视频块的帧内预测编码以提供空间预测。预测处理单元41内的运动估计单元42和运动补偿单元44与一个或多个参考帧中的一个或多个预测块相关地执行当前视频块的帧间预测编码以提供时间预测。视频编码器20可以执行多个编码遍次,例如,以为视频数据的每个块选择合适的编码模式。
在一些实施方式中,运动估计单元42通过根据视频帧序列内的预定模式生成运动矢量来确定用于当前视频帧的帧间预测模式,运动矢量指示当前视频帧内的视频块相对于参考视频帧内的预测块的位移。由运动估计单元42执行的运动估计是生成运动矢量的过程,该运动矢量估计针对视频块的运动。例如,运动矢量可以指示当前视频帧或图片内的视频块相对于与当前帧内正被编码的当前块相关的参考帧内的预测块的位移。预定模式可以将序列中的视频帧指定为P帧或B帧。帧内BC单元48可以以与由运动估计单元42确定用于帧间预测的运动矢量类似的方式确定用于帧内BC编码的矢量(例如,块矢量),或可以利用运动估计单元42确定块矢量。
在像素差方面,针对视频块的预测块可以是或可以对应于被认为与待编码视频块紧密匹配的参考帧的块或参考块,像素差可以由绝对差总和(SAD)、平方差总和(SSD)或其他差度量确定。在一些实施方式中,视频编码器20可以计算用于DPB 64中存储的参考帧的子整数像素位置的值。例如,视频编码器20可以对参考帧的四分之一像素位置、八分之一像素位置或其他分数像素位置的值进行内插。因此,运动估计单元42可以相对于全像素位置和分数像素位置执行运动搜索并且输出具有分数像素精度的运动矢量。
运动估计单元42通过以下方式来计算针对帧间预测编码帧中的视频块的运动矢量:将视频块的位置与从第一参考帧列表(列表0)或第二参考帧列表(列表1)选择的参考帧的预测块的位置进行比较,第一参考帧列表和第二参考帧列表中的每一个参考帧列表标识DPB 64中存储的一个或多个参考帧。运动估计单元42将计算出的运动矢量发送到运动补偿单元44,然后发送到熵编码单元56。
由运动补偿单元44执行的运动补偿可以涉及基于由运动估计单元42确定的运动矢量获取或生成预测块。在接收到针对当前视频块的运动矢量之后,运动补偿单元44可以在参考帧列表中的一个参考帧列表中定位运动矢量所指向的预测块,从DPB 64取回预测块,并且将预测块转发到加法器50。然后,加法器50通过从正被编码的当前视频块的像素值减去由运动补偿单元44提供的预测块的像素值来形成像素差值的残差视频块。形成残差视频块的像素差值可以包括亮度分量差或色度分量差或两者。动补偿单元44还可以生成与视频帧的视频块相关联的语法元素以供视频解码器30在对视频帧的视频块进行解码时使用。语法元素可以包括例如定义用于识别预测块的运动矢量的语法元素、指示预测模式的任何标志、或本文描述的任何其他语法信息。应注意,运动估计单元42和运动补偿单元44可以高度集成,但出于概念目的而单独说明。
在一些实施方式中,帧内BC单元48可以以与上文结合运动估计单元42和运动补偿单元44所描述的方式类似的方式生成矢量并获取预测块,但是这些预测块在与正被编码的当前块相同的帧中,并且这些矢量被称为块矢量而非运动矢量。具体地,帧内BC单元48可以确定将用于对当前块进行编码的帧内预测模式。在一些示例中,帧内BC单元48可以例如在单独的编码遍次期间使用各种帧内预测模式来对当前块进行编码,并且通过率失真分析来测试它们的性能。接下来,帧内BC单元48可以在各种测试的帧内预测模式中选择合适的帧内预测模式来使用并相应地生成帧内模式指示符。例如,帧内BC单元48可以使用率失真分析针对各种测试的帧内预测模式计算率失真值,并且在测试的模式中选择具有最佳率失真特性的帧内预测模式作为合适的帧内预测模式来使用。率失真分析大体上确定编码块与被编码以产生编码块的原始未编码块之间的失真(或误差)量、以及用于产生编码块的比特率(即,比特数量)。帧内BC单元48可以根据针对各种编码块的失真和速率计算比率,以确定哪个帧内预测模式展现针对块的最佳率失真值。
在其他示例中,帧内BC单元48可以全部或部分地使用运动估计单元42和运动补偿单元44来执行根据本文描述的实施方式的用于帧内BC预测的此类功能。在任一情况下,对于帧内块复制,在像素差方面,预测块可以是被认为与待编码的块紧密匹配的块,像素差可以由SAD、SSD或其他差度量确定,并且识别预测块可以包括计算针对子整数像素位置的值。
无论预测块是来自根据帧内预测的同一帧还是来自根据帧间预测的不同帧,视频编码器20可以通过从正被编码的当前视频块的像素值减去预测块的像素值来形成像素差值,从而形成残差视频块。形成残差视频块的像素差值可以包括亮度分量差和色度分量差两者。
作为如上文所描述的由运动估计单元42和运动补偿单元44执行的帧间预测或由帧内BC单元48执行的帧内块复制预测的替代方案,帧内预测处理单元46可以对当前视频块进行帧内预测。具体地,帧内预测处理单元46可以确定帧内预测模式以用于对当前块进行编码。为此,帧内预测处理单元46可以例如在单独的编码遍次期间使用各种帧内预测模式来对当前块进行编码,并且帧内预测处理单元46(或在一些示例中,模式选择单元)可以从测试的帧内预测模式中选择合适的帧内预测模式来使用。帧内预测处理单元46可以将指示针对块选择的帧内预测模式的信息提供给熵编码单元56。熵编码单元56可以将指示选择的帧内预测模式的信息编码到比特流中。
在预测处理单元41经由帧间预测或帧内预测确定针对当前视频块的预测块之后,加法器50通过从当前视频块减去预测块来形成残差视频块。残差块中的残差视频数据可以被包括在一个或多个TU中并且提供给变换处理单元52。变换处理单元52使用变换(例如离散余弦变换(DCT)或概念上类似的变换)将残差视频数据变换为残差变换系数。
变换处理单元52可以将所得变换系数发送到量化单元54。量化单元54对变换系数进行量化以进一步减小比特率。量化过程还可以减小与系数中的一些或全部相关联的比特深度。可以通过调整量化参数来修改量化程度。在一些示例中,量化单元54可以随后对包括量化的变换系数的矩阵执行扫描。备选地,熵编码单元56可以执行扫描。
在量化之后,熵编码单元56使用例如上下文自适应可变长度编码(CAVLC)、上下文自适应二进制算术编码(CABAC)、基于语法的上下文自适应二进制算术编码(SBAC)、概率区间分割熵(PIPE)编码或另一熵编码方法或技术,将量化的变换系数熵编码成视频比特流。然后,可以将编码的比特流发送到如图1所示的视频解码器30,或存档于如图1所示的存储设备32中以供稍后发送到视频解码器30或由视频解码器30取回。熵编码单元56还可以对用于正被编码的当前视频帧的运动矢量和其他语法元素进行熵编码。
反量化单元58和逆变换处理单元60分别应用反量化和逆变换以在像素域中重建残差视频块以用于生成用于预测其他视频块的参考块。如上文指出的,运动补偿单元44可以从存储在DPB 64中的帧的一个或多个参考块生成运动补偿预测块。运动补偿单元44还可以将一个或多个内插滤波器应用于预测块以计算子整数像素值以用于在运动估计时使用。
加法器62将重建的残差块与由运动补偿单元44产生的运动补偿预测块相加来产生参考块以存储在DPB 64中。然后,参考块可以由帧内BC单元48、运动估计单元42和运动补偿单元44用作预测块以对后续视频帧中的另一视频块进行帧间预测。
图3是示出了根据本申请的一些实施方式的示例性视频解码器30的框图。视频解码器30包括视频数据存储器79、熵解码单元80、预测处理单元81、反量化单元86、逆变换处理单元88、加法器90和DPB 92。预测处理单元81进一步包括运动补偿单元82、帧内预测单元84和帧内BC单元85。视频解码器30可以执行与上文结合图2关于视频编码器20所描述的编码过程基本互逆的解码过程。例如,运动补偿单元82可以基于从熵解码单元80接收的运动矢量生成预测数据,而帧内预测单元84可以基于从熵解码单元80接收的帧内预测模式指示符生成预测数据。
在一些示例中,视频解码器30的单元可以被分派任务以执行本申请的实施方式。此外,在一些示例中,本公开的实施方式可以分散在视频解码器30的单元中的一个或多个单元中。例如,帧内BC单元85可以单独地或与视频解码器30的其他单元(例如运动补偿单元82、帧内预测单元84和熵解码单元80)组合地执行本申请的实施方式。在一些示例中,视频解码器30可以不包括帧内BC单元85,并且帧内BC单元85的功能可以由预测处理单元81的其他组件(例如运动补偿单元82)执行。
视频数据存储器79可以存储将由视频解码器30的其他组件进行解码的视频数据,例如编码视频比特流。可以例如从存储设备32、从本地视频源(例如相机)、经由视频数据的有线或无线网络通信、或通过访问物理数据存储介质(例如,闪存驱动器或硬盘)获得存储在视频数据存储器79中的视频数据。视频数据存储器79可以包括存储来自编码视频比特流的编码视频数据的编码图片缓冲器(CPB)。视频解码器30的DPB 92存储参考视频数据以供视频解码器30(例如,以帧内或帧间预测编码模式)在对视频数据进行解码时使用。视频数据存储器79和DPB 92可以由各种存储器设备中的任何存储器设备形成,例如动态随机存取存储器(DRAM)(包括同步DRAM(SDRAM))、磁阻式RAM(MRAM)、电阻式RAM(RRAM)或其他类型的存储器设备。出于说明性目的,视频数据存储器79和DPB 92在图3中被描绘为视频解码器30的两个不同组件。但是对于本领域的技术人员将显而易见的是,视频数据存储器79和DPB92可以由同一存储器设备或单独存储器设备提供。在一些示例中,视频数据存储器79可以与视频解码器30的其他组件一起在芯片上,或相对于那些组件在芯片外。
在解码过程期间,视频解码器30接收表示编码视频帧的视频块和相关联的语法元素的编码视频比特流。视频解码器30可以在视频帧级和/或视频块级接收语法元素。视频解码器30的熵解码单元80对比特流进行熵解码以生成量化系数、运动矢量或帧内预测模式指示符、以及其他语法元素。然后,熵解码单元80将运动矢量或帧内预测模式指示符、以及其他语法元素转发到预测处理单元81。
当视频帧被编码为帧内预测编码(I)帧或用于其他类型的帧中的帧内编码预测块时,预测处理单元81的帧内预测单元84可以基于用信号传送的帧内预测模式和来自当前帧的先前解码块的参考数据来生成用于当前视频帧的视频块的预测数据。
当视频帧被编码为帧间预测编码(即,B或P)帧时,预测处理单元81的运动补偿单元82基于从熵解码单元80接收的运动矢量和其他语法元素产生针对当前视频帧的视频块的一个或多个预测块。预测块中的每一个可以从参考帧列表中的一个参考帧列表内的参考帧产生。视频解码器30可以基于存储在DPB 92中的参考帧使用默认构建技术来构建参考帧列表,即,列表0和列表1。
在一些示例中,当根据本文描述的帧内BC模式对视频块进行编码时,预测处理单元81的帧内BC单元85基于从熵解码单元80接收的块矢量和其他语法元素产生针对当前视频块的预测块。预测块可以在由视频编码器20定义的与当前视频块相同的图片的重建区域内。
运动补偿单元82和/或帧内BC单元85通过解析运动矢量和其他语法元素来确定针对当前视频帧的视频块的预测信息,然后使用该预测信息产生针对正被解码的当前视频块的预测块。例如,运动补偿单元82使用接收到的语法元素中的一些语法元素来确定用于对视频帧的视频块进行编码的预测模式(例如,帧内预测或帧间预测)、帧间预测帧类型(例如,B或P)、用于针对帧的参考帧列表中的一个或多个的构建信息、用于帧的每个帧间预测编码视频块的运动矢量、用于帧的每个帧间预测编码视频块的帧间预测状态、以及用于对当前视频帧中的视频块进行解码的其他信息。
类似地,帧内BC单元85可以使用接收到的语法元素中的一些语法元素,例如标志,以确定当前视频块是使用帧内BC模式预测的、帧的哪些视频块在重建区域内且应被存储在DPB 92中的构建信息、用于帧的每个帧内BC预测视频块的块矢量、用于帧的每个帧内BC预测视频块的帧内BC预测状态、以及用于对当前视频帧中的视频块进行解码的其他信息。
运动补偿单元82还可以使用如由视频编码器20在对视频块进行编码期间使用的内插滤波器执行内插,以计算针对参考块的子整数像素的内插值。在这种情况下,运动补偿单元82可以根据接收到的语法元素确定由视频编码器20使用的内插滤波器,并且使用这些内插滤波器来产生预测块。
反量化单元86使用由视频编码器20针对视频帧中的每个视频块计算出的用于确定量化程度的相同量化参数,对在比特流中提供且由熵解码单元80熵解码的量化的变换系数进行反量化。逆变换处理单元88将逆变换(例如,逆DCT、逆整数变换或概念上类似的逆变换过程)应用于变换系数,以便在像素域中重建残差块。
在运动补偿单元82或帧内BC单元85基于矢量和其他语法元素生成当前视频块的预测块之后,加法器90通过对来自逆变换处理单元88的残差块和由运动补偿单元82和帧内BC单元85生成的相应预测块求和来重建当前视频块的解码视频块。诸如去块滤波器、SAO滤波器和/或ALF的环路滤波器91可以位于加法器90与DPB 92之间以进一步处理解码后的视频块。环路滤波器91可以在重建的CU被放入参考图片存储区之前应用于重建的CU。在一些示例中,环路滤波器91可以被省略,并且解码后的视频块可以由加法器90直接提供给DPB92。然后,给定帧中的解码视频块被存储在DPB 92中,DPB 92存储用于下一个视频块的后续运动补偿的参考帧。DPB 92或与DPB 92分开的存储器设备也可存储经解码的视频以供稍后在显示设备(例如图1的显示设备34)上呈现。
在典型的视频编码过程中,视频序列通常包括帧或图片的有序集合。每一帧可以包括三个样点阵列,表示为SL、SCb和SCr。SL是亮度样点的二维阵列。SCb是Cb色度样点的二维阵列。SCr是Cr色度样点的二维阵列。在其他实例中,帧可以是单色的,因此仅包括亮度样点的一个二维阵列。
与HEVC一样,AVS3标准建立在基于块的混合视频编解码框架之上。输入视频信号逐块处理(称为编码单元(CU))。与仅基于四叉树划分块的HEVC不同,在AVS3中,将一个编码树单元(CTU)分割为CU以适应基于四叉树/二叉树/扩展四叉树的不同局部特征。此外,去除了HEVC中多分区单元类型的概念,即AVS3中不存在CU、预测单元(PU)和变换单元(TU)的分离。相反,每个CU始终用作预测和变换的基本单元,无需进一步划分。在AVS3的树分区结构中,首先基于四叉树结构对一个CTU进行分区。然后,可以基于二叉树和扩展四叉树结构进一步划分每个四叉树叶节点。
如图4A中所示,视频编码器20(或更具体地,分割单元45)通过首先将帧分割为CTU的集合来生成帧的编码表示。视频帧可以包括以光栅扫描顺序从左到右和从上到下连续排序的整数个CTU。每个CTU是最大的逻辑编码单元,并且由视频编码器20在序列参数集中用信号传送CTU的宽度和高度,使得视频序列中的所有CTU具有128×128、64×64、32×32和16×16之一的相同尺寸。但是应当注意,本申请不必限于特定尺寸。如图4B中所示,每个CTU可以包括亮度样点的一个CTB、色度样点的两个对应编码树块、以及用于对编码树块的样点进行编码的语法元素。语法元素描述编码像素块的不同类型的单元的性质以及可以如何在视频解码器30处重建视频序列,包括帧间预测或帧内预测、帧内预测模式、运动矢量和其他参数。在单色图片或具有三个单独颜色平面的图片中,CTU可以包括单个编码树块和用于对该编码树块的样点进行编码的语法元素。编码树块可以是N×N的样点块。
为了实现更好的性能,视频编码器20可以对CTU的编码树块递归地执行树分割,例如二叉树分割、三叉树分割、四叉树分割或其组合,并且将CTU划分为较小的CU。如图4C中所描绘的,首先将64×64的CTU 400划分为四个较小的CU,每个CU具有32×32的块尺寸。在四个较小的CU中,将CU 410和CU 420分别划分为块尺寸为16×16的四个CU。将两个16×16的CU 430和CU 440分别进一步划分为块尺寸为8×8的四个CU。图4D描绘了示出如图4C中所描绘的CTU 400的分割过程的最终结果的四叉树数据结构,四叉树的每个叶节点与范围从32×32到8×8的相应尺寸的一个CU对应。类似于图4B中描绘的CTU,每个CU可以包括相同尺寸的帧的亮度样点的CB和色度样点的两个对应编码块、以及用于对编码块的样点进行编码的语法元素。在单色图片或具有三个单独颜色平面的图片中,CU可以包括单个编码块和用于对编码块的样点进行编码的语法结构。应注意,图4C和图4D中所描绘的四叉树分割仅用于说明性目的,并且一个CTU可以基于四叉树分割/三叉树分割/二叉树分割而被拆分为多个CU以适应于变化的局部特性。在多类型树结构中,一个CTU按照四叉树结构被分割,并且每个四叉树叶CU可以按照二叉和三叉树结构被进一步分割。如图4E所示,具有宽度W和高度H的编码块有五种可能的分割类型,即四元分割、水平二元分割、垂直二元分割、水平三元分割和垂直三元分割。在AVS3中,有五种可能的分区类型,即四元分区、水平二元分区、垂直二元分区、水平扩展四叉树分区(图4E中未示出)和垂直扩展四叉树分区(图4E中未示出)。
在一些实施方式中,视频编码器20可以进一步将CU的编码块分割为一个或多个(M×N个)PB。PB是被应用相同预测(帧间或帧内)的矩形(正方形或非正方形)样点块。CU的PU可以包括亮度样点的PB、色度样点的两个对应PB和用于对PB进行预测的语法元素。在单色图片或具有三个单独颜色平面的图片中,PU可以包括单个PB和用于对PB进行预测的语法结构。视频编码器20可以生成针对CU的每个PU的亮度PB、Cb PB和Cr PB的预测亮度块、预测Cb块和预测Cr块。
视频编码器20可以使用帧内预测或帧间预测来生成针对PU的预测块。如果视频编码器20使用帧内预测来生成PU的预测块,则视频编码器20可以基于与PU相关联的帧的解码样点来生成PU的预测块。如果视频编码器20使用帧间预测来生成PU的预测块,则视频编码器20可以基于除与PU相关联的帧之外的一个或多个帧的解码样点来生成PU的预测块。
在视频编码器20生成针对CU的一个或多个PU的预测亮度块、预测Cb块和预测Cr块之后,视频编码器20可以通过从CU的原始亮度编码块减去CU的预测亮度块来生成针对CU的亮度残差块,使得CU的亮度残差块中的每个样点指示CU的预测亮度块之一中的亮度样点与CU的原始亮度编码块中的对应样点之差。类似地,视频编码器20可以分别生成针对CU的Cb残差块和Cr残差块,使得CU的Cb残差块中的每个样点指示CU的预测Cb块之一中的Cb样点与CU的原始Cb编码块中的对应样点之差,并且CU的Cr残差块中的每个样点可以指示CU的预测Cr块之一中的Cr样点与CU的原始Cr编码块中的对应样点之差。
此外,如图4C中所示,视频编码器20可以使用四叉树分割将CU的亮度残差块、Cb残差块和Cr残差块分别分解成一个或多个亮度变换块、Cb变换块和Cr变换块。变换块是被应用相同变换的矩形(正方形或非正方形)样点块。CU的TU可以包括亮度样点的变换块、色度样点的两个对应变换块和用于对变换块样点进行变换的语法元素。因此,CU的每个TU可以与亮度变换块、Cb变换块和Cr变换块相关联。在一些示例中,与TU相关联的亮度变换块可以是CU的亮度残差块的子块。Cb变换块可以是CU的Cb残差块的子块。Cr变换块可以是CU的Cr残差块的子块。在单色图片或具有三个单独颜色平面的图片中,TU可以包括单个变换块和用于对该变换块的样点进行变换的语法结构。
视频编码器20可以将一个或多个变换应用于TU的亮度变换块以生成针对TU的亮度系数块。系数块可以是变换系数的二维阵列。变换系数可以是标量。视频编码器20可以将一个或多个变换应用于TU的Cb变换块以生成针对TU的Cb系数块。视频编码器20可以将一个或多个变换应用于TU的Cr变换块以生成针对TU的Cr系数块。
在生成系数块(例如,亮度系数块、Cb系数块或Cr系数块)之后,视频编码器20可以对系数块进行量化。量化通常是指变换系数被量化以可能减少用于表示变换系数的数据量从而提供进一步压缩的过程。在视频编码器20对系数块进行量化之后,视频编码器20可以对指示量化的变换系数的语法元素进行熵编码。例如,视频编码器20可以对指示量化的变换系数的语法元素执行CABAC。最后,视频编码器20可以输出包括比特序列的比特流,比特序列形成编码帧和相关联数据的表示,比特流被保存于存储设备32中或被发送到目标设备14。
在接收到由视频编码器20生成的比特流之后,视频解码器30可以解析比特流以从比特流获得语法元素。视频解码器30可以至少部分地基于从比特流获得的语法元素来对视频数据的帧进行重建。对视频数据进行重建的过程通常与由视频编码器20执行的编码过程互逆。例如,视频解码器30可以对与当前CU的TU相关联的系数块执行逆变换以重建与当前CU的TU相关联的残差块。视频解码器30还通过将针对当前CU的PU的预测块的样点与当前CU的TU的变换块的对应样点相加,来重建当前CU的编码块。在重建针对帧的每个CU的编码块之后,视频解码器30可以重建帧。
如上所述,视频编码主要使用两种模式(即,帧内部预测(或帧内预测)和帧之间预测(或帧间预测))来实现视频压缩。应注意,IBC可以被视为帧内预测或第三模式。在两种模式之间,由于使用运动矢量来根据参考视频块预测当前视频块,所以帧间预测比帧内预测对编码效率的贡献更大。
但是随着不断改进的视频数据捕获技术和用于保留视频数据中的细节的更精细的视频块尺寸,表示用于当前帧的运动矢量所需的数据量也大幅增加。克服此挑战的一种方式受益于以下事实:不仅空间域和时间域两者中的一组邻近CU具有用于预测目的的相似视频数据,而且这些邻近CU之间的运动矢量也是相似的。因此,可以通过以下方式而使用空间邻近CU和/或时间同位CU的运动信息作为当前CU的运动信息(例如,运动矢量)的近似(其也被称为当前CU的“运动矢量预测因子”(MVP)):探索它们的空间和时间相关性。
代替如上文结合图2所描述的将由运动估计单元42确定的当前CU的实际运动矢量编码到视频比特流中,从当前CU的实际运动矢量减去当前CU的运动矢量预测因子以产生针对当前CU的运动矢量差(MVD)。通过这样做,不需要将由运动估计单元42针对帧的每个CU确定的运动矢量编码到视频比特流中,并且可以显著减少用于表示视频比特流中的运动信息的数据量。
类似于在编码块的帧间预测期间选择参考帧中的预测块的过程,视频编码器20和视频解码器30两者需要采用一组规则,以用于使用与当前CU的空间邻近CU和/或时间同位CU相关联的那些潜在候选运动矢量来构建针对当前CU的运动矢量候选列表(也称为“合并列表”),然后从运动矢量候选列表中选择一个成员作为针对当前CU的运动矢量预测因子。通过这样做,不需要从视频编码器20向视频解码器30发送运动矢量候选列表本身,并且运动矢量候选列表内的所选运动矢量预测因子的索引足以使视频编码器20和视频解码器30使用运动矢量候选列表内的相同运动矢量预测因子来对当前CU进行编码和解码。
一般而言,VVC中应用的基本帧内预测方案几乎与HEVC保持相同,除了一些预测工具被进一步扩展、添加和/或改进,例如,具有宽角度帧内模式的扩展帧内预测、多参考行(MRL)帧内预测、位置相关帧内预测组合(PDPC)、帧内子分区(ISP)预测、跨分量线性模型(CCLM)预测和矩阵加权帧内预测(MIP)。
与HEVC相似,VVC使用与当前CU相邻(即,在当前CU上方或在当前CU左侧)的参考样点集来预测当前CU的样点。然而,为了捕获存在于自然视频(尤其是高分辨率(例如,4K)视频内容)中更精细的边缘方向,角度帧内模式的数量从HEVC中的33扩展到VVC中的93。图4F是示出了VVC中定义的帧内模式的示意图。如图4F所示,在93个角度帧内模式中,模式2至模式66是传统角度帧内模式,模式-1至模式-14和模式67至模式80是宽角度帧内模式。除了角度帧内模式之外,HEVC的平面模式(图1中的模式0)和直流(DC)模式(图1中的模式1)也应用于VVC。
如图4E所示,由于在VVC中应用了四叉树/二叉树/三叉树的分区结构,因此对于VVC中的帧内预测,除了正方形的视频块之外,还存在矩形视频块。由于一个给定视频块具有不相等的宽度和高度,因此可以从93个角度帧内模式中为不同块形状选择各种角度帧内模式集。更具体地,对于正方形视频块和矩形视频块,除了平面模式和DC模式之外,针对每个块形状还支持93个角度帧内模式中的65个角度帧内模式。当视频块的矩形块形状满足特定条件时,可以由视频解码器30根据从视频编码器20接收到的传统角度帧内模式的索引使用如下表1所示的映射关系自适应地确定视频块的宽角度帧内模式的索引。也就是说,对于非正方形块,由视频编码器20使用传统角度帧内模式的索引来发信号通知宽角度帧内模式,其中传统角度帧内模式的索引在被解析之后由视频解码器30映射到宽角度帧内模式的索引,从而确保帧内模式(即,平面模式、DC模式和93个角度帧内模式中的65个角度帧内模式)的总数(即,67)不变并且帧内预测模式编码方法不变。因此,在提供跨不同块大小的一致设计的同时实现了帧内预测模式的良好的信号通知效率。
表1-0示出了VCC中用于不同块形状的帧内预测的传统角度帧内模式的索引与宽角度帧内模式的索引之间的映射关系,其中W表示视频块的宽度,并且H表示视频块的高度。
表1-0传统角度帧内模式的索引与宽角度帧内模式的索引之间的映射关系。
与HEVC中的帧内预测类似,VVC中的所有帧内模式(即,平面模式、DC模式和角度帧内模式)利用当前视频块上方和左侧的参考样点集来进行帧内预测。然而,与仅使用最近的参考样点行/列(即,图4G中的第0行201)的HEVC不同,在VVC中引入了MRL帧内预测,在MRL帧内预测中,除了最近的参考样点行/列之外,还可以使用两个附加的参考样点行/列(即,图4G中的第1行203和第3行205)来进行帧内预测。从视频编码器20向视频解码器30发信号通知所选参考样点行/列的索引。当选择了非最近的参考样点行/列(例如,图4G中的第1行203或第3行205)时,从可以用于预测当前视频块的帧内模式集中排除平面模式。针对当前CTU内的第一行/列视频块,禁用MRL帧内预测,以防止使用当前CTU之外的扩展参考样点。
样点自适应偏移(SAO)是基于编码器传输的查找表中的值,通过在应用去块滤波器之后有条件地将偏移值添加到每个样点来修改解码样点的过程。基于由语法元素sao-type-idx为每个CTB选择的滤波类型,基于区域执行SAO滤波。sao-type-idx的值为0表示SAO滤波器未应用于CTB,值1和2分别表示使用带偏移和边缘偏移滤波类型。在由等于1的sao-type-idx指定的带偏移模式中,选择的偏移值直接取决于样点幅度。在这种模式下,整个样点幅度范围被均匀地分割成32个分段,称为带,并且属于这些带中的四个(在32个带内是连续的)的样点值是通过添加表示为带偏移的传输值来修改的,这可以是正的或者负的。使用四个连续带的主要原因是,在可能出现条带伪影的平滑区域中,CTB中的样点幅度往往集中在仅少数几个带中。此外,使用四个偏移的设计选择与也使用四个偏移值的边缘偏移操作模式是统一的。在由等于2的sao-type-idx指定的边缘偏移模式中,具有从0到3的值的语法元素sao-eo-class表示水平、垂直或两个对角梯度方向之一是否用于CTB中的边缘偏移分类。
图5A是描绘根据本公开的一些实施方式的在SAO中使用的四个梯度模式的框图。四个梯度模式502、504、506和508用于边缘偏移模式中的相应sao-eo-class。标记为“p”的样点表示要考虑的中心样点。标记为“n0”和“n1”的两个样点指定沿(a)水平(sao-eo-class=0)、(b)垂直(sao-eo-class=1)、(c)135°对角线(sao-eo-class=2)和(d)45°(sao-eo-class=3)梯度模式的两个相邻样点。通过将位于某个位置的样点值p与位于相邻位置的两个样点的值n0和n1进行比较,CTB中的每个样点被分类到五个EdgeIdx类别中的一个,如图5A所示。这种分类是基于解码样点值对每个样点进行的,因此EdgeIdx分类不需要额外的信令。根据样点位置的EdgeIdx类别,对于从1到4的EdgeIdx类别,将来自传输的查找表的偏移值添加到样点值。偏移值对于类别1和2始终为正,对于类别3和4始终为负。因此滤波器通常在边缘偏移模式下具有平滑效果。下面的表1-1说明了SAO边缘类中的示例EdgeIdx类别。
表1-1:SAO边缘类中的样点EdgeIdx类别。
对于SAO类型1和2,总共有四个幅度偏移值被传输到每个CTB的解码器。对于类型1,符号也被编码。偏移值和相关语法元素(例如sao-type-idx和sao-eo-class)由编码器确定——通常使用优化率失真性能的标准。可以使用合并标志指示SAO参数将从左侧或上方的CTB继承,以使信令有效。总之,SAO是一种非线性滤波操作,它允许对重建的信号进行额外的细化,并且它可以增强平滑区域和边缘周围的信号表示。
在一些实施例中,实施预采样自适应偏移(Pre-SAO)。具有低复杂度的pre-SAO的编解码性能在未来的视频编解码标准发展中很有前途。在一些示例中,Pre-SAO仅应用于使用用于分类的亮度样点的亮度分量样点。Pre-SAO通过应用两个类似SAO的滤波操作(称为SAOV和SAOH)进行操作,并且在应用现有(传统)SAO之前将它们与去块滤波器(DBF)联合应用。第一个类似SAO的滤波器SAOV在应用垂直边缘去块滤波器(DBFV)之后将SAO应用于输入图片Y2来进行操作。
Y3(i)=Clip1(Y`2(i)+d1·(f(i)>T?1:0)-d2·(f(i)<-T?1:0))
其中T是预定的正的常数,d1和d2是与两个类相关联的偏移系数,基于Y1(i)和Y2(i)之间的逐样点差异,由下式给出
f(i)=Y1(i)-Y2(i)。
d1的第一类给出为取所有样点位置i,使得f(i)>T,而d2的第二类由f(i)<–T给出。在编码器处计算偏移系数d1和d2,使得以与现有SAO过程中相同的方式,SAOV的输出图片Y3与原始图片X之间的均方误差最小化。在应用SAOV之后,第二个类似SAO的滤波器SAOH在SAOV已经被应用之后将SAO应用于Y4来进行操作,根据Y3(i)和Y4(i)之间的逐样点差异对水平边缘去块滤波器(DBFH)的输出图片进行分类。与SAOV相同的程序应用于SAOH,用Y3(i)–Y4(i)而不是Y1(i)–Y2(i)进行分类。SAOH和SAOV中的每一个的两个偏移系数、预定阈值T和启用标志在条带级别用信号通知。SAOH和SAOV独立地应用于亮度和两个色度分量。
在某些情况下,SAOV和SAOH仅对受相应去块(DBFV或DBFH)影响的图片样点进行操作。因此,与现有的SAO过程不同,Pre-SAO仅处理给定空间区域(图片或传统SAO中的CTU)中所有样点的子集,从而保持每图片样点的解码端平均操作的所得增加较低(根据初步估计,在最坏的情况下,每个样点进行两次或三次比较和两次添加)。Pre-SAO只需要去块滤波器使用的样点,而不需要在解码器处存储额外的样点。
在一些实施例中,双边滤波器(BIF)被实现用于超越VVC的压缩效率探索。BIF在样点自适应偏移(SAO)环路滤波器阶段执行。双边滤波器(BIF)和SAO都使用来自去块的样点作为输入。每个滤波器为每个样点创建一个偏移,并且这些偏移被添加到输入样点中,然后在进行ALF之前进行削波。
详细地,输出样点IOUT获得为
IOUT=clip3(IC+ΔIBIF+ΔISAO),
其中IC是来自去块的输入样点,ΔIBIF是来自双边滤波器的偏移,ΔISAO是来自SAO的偏移。
在一些实施例中,该实施方式为编码器提供了在CTU和条带级别启用或禁用滤波的可能性。编码器通过评估率失真优化(RDO)成本做出决定。
PPS中引入了以下语法元素:
表1-2:图片参数集RBSP语法。
pps_bilateral_filter_enabled_flag等于0指定双边环路滤波器对于引用PPS的条带被禁用。pps_bilateral_filter_flag等于1指定双边环路滤波器对于引用PPS的条带被启用。
bilateral_filter_strength指定在双边变换块滤波过程中使用的双边环路滤波器强度值。bilateral_filter_strength的值应在0到2的范围内,包括端值。
bilateral_filter_qp_offset指定对于引用PPS的条带在双边滤波器查找表LUT(x)的推导中使用的偏移。bilateral_filter_qp_offset应在-12到+12的范围内,包括端值。
引入以下语法元素:
表1-3:条带头语法。
表1-4:编码树单元语法。
语法如下:slice_bilateral_filter_all_ctb_enabled_flag等于1指定双边滤波器被启用并应用于当前条带中的所有CTB。当slice_bilateral_filter_all_ctb_enabled_flag不存在时,推断为等于0。
slice_bilateral_filter_enabled_flag等于1指定双边滤波器已启用并且可以应用于当前条带的CTB。当slice_bilateral_filter_enabled_flag不存在时,推断等于slice_bilateral_filter_all_ctb_enabled_flag。
bilateral_filter_ctb_flag[xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]等于1指定双边滤波器应用于亮度位置(xCtb,YCtb)的编码树单元的亮度编码树块。bilateral_filter_ctb_flag[cIdx][xCtb>>CtbLog2SizeY][yCtb>>CtbLog2SizeY]等于0指定不对亮度位置(xCtb,yCtb)的编码树单元的亮度编码树块应用双边滤波器。当bilateral_filter_ctb_flag不存在时,推断等于(slice_bilateral_filter_all_ctb_enabled_flag&slice_bilateral_filter_enabled_flag)。
在一些示例中,对于被滤波的CTU,滤波过程如下进行。在图片边界处,样点不可用,双边滤波器使用扩展(样点重复)来填充不可用的样点。对于虚拟边界,行为与SAO相同,即不发生滤波。当穿过水平CTU边界时,双边滤波器可以访问与SAO正在访问的样点相同的样点。图5B是描绘根据本公开的一些实施方式的围绕中心样点的样点的命名约定的框图。例如,如果中心样点IC位于CTU的顶行,则从上面的CTU读取INW、IA和INE,就像SAO一样,但填充了IAA,因此不需要额外的行缓冲区。中心样点IC周围的样点根据图5B表示,其中A、B、L和R代表上、下、左和右,并且其中NW、NE、SW、SE代表西北等。同样,AA代表上-上,BB代表下-下等等。这种菱形不同于另一种使用方形滤波器支持的方法,不使用IAA、IBB、ILL或IRR
每个周围样点IA、IR等将贡献相应的修正值等。这些计算方式如下:从右侧样点IR的贡献开始,计算差值为:
ΔIR=(|IR-IC|+4)>>3,
其中|·|表示绝对值。对于非10比特数据,使用ΔIR=(|IR-IC|+2n-6)>>(n-7)代替,其中n=8用于8比特数据,等等。结果值现在被削波,使其小于16:
sIR=min(15,ΔIR).
修正值现在计算为
其中LUTROW[ ]是由qpb=clip(0,25,QP+bilateral_filter_qp_offset-17)的值确定的16个值的数组:
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,},如果qpb=0
{0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,},如果qpb=1
{0,2,2,2,1,1,0,1,0,0,0,0,0,0,0,0,},如果qpb=2
{0,2,2,2,2,1,1,1,1,1,1,1,0,1,1,-1,},如果qpb=3
{0,3,3,3,2,2,1,2,1,1,1,1,0,1,1,-1,},如果qpb=4
{0,4,4,4,3,2,1,2,1,1,1,1,0,1,1,-1,},如果qpb=5
{0,5,5,5,4,3,2,2,2,2,2,1,0,1,1,-1,},如果qpb=6
{0,6,7,7,5,3,3,3,3,2,2,1,1,1,1,-1,},如果qpb=7
{0,6,8,8,5,4,3,3,3,3,3,2,1,2,2,-2,},如果qpb=8
{0,7,10,10,6,4,4,4,4,3,3,2,2,2,2,-2,},如果qpb=9
{0,8,11,11,7,5,5,4,5,4,4,2,2,2,2,-2,},如果qpb=10
{0,8,12,13,10,8,8,6,6,6,5,3,3,3,3,-2,},如果qpb=11
{0,8,13,14,13,12,11,8,8,7,7,5,5,4,4,-2,},如果qpb=12
{0,9,14,16,16,15,14,11,9,9,8,6,6,5,6,-3,},如果qpb=13
{0,9,15,17,19,19,17,13,11,10,10,8,8,6,7,-3,},如果qpb=14
{0,9,16,19,22,22,20,15,12,12,11,9,9,7,8,-3,},如果qpb=15
{0,10,17,21,24,25,24,20,18,17,15,12,11,9,9,-3,},如果qpb=16
{0,10,18,23,26,28,28,25,23,22,18,14,13,11,11,-3,},如果qpb=17
{0,11,19,24,29,30,32,30,29,26,22,17,15,13,12,-3,},如果qpb=18
{0,11,20,26,31,33,36,35,34,31,25,19,17,15,14,-3,},如果qpb=19
{0,12,21,28,33,36,40,40,40,36,29,22,19,17,15,-3,},如果qpb=20
{0,13,21,29,34,37,41,41,41,38,32,23,20,17,15,-3,},如果qpb=21
{0,14,22,30,35,38,42,42,42,39,34,24,20,17,15,-3,},如果qpb=22
{0,15,22,31,35,39,42,42,43,41,37,25,21,17,15,-3,},如果qpb=23
{0,16,23,32,36,40,43,43,44,42,39,26,21,17,15,-3,},如果qpb=24
{0,17,23,33,37,41,44,44,45,44,42,27,22,17,15,-3,},如果qpb=25
这些值可以使用每个条目六比特来存储,如果不包括全为零的第一行,则产生26*16*6/8=312字节或300字节。和/>的修正值以相同的方式根据IL、LA和IB来计算。对于对角线样点INw、INE、ISE、ISW,以及两步外的样点IAA、IBB、IRR和ILL,计算也遵循等式2和3,但使用的移位了1的值。以对角线样点ISE为例,
其他对角线样点和两步外的样点的计算方法类似。
修正值加在一起
在一些示例中,对于前一个样点,等于/>同样,对于上面的示例,/>等于并且对于对角线和两步外修正值也可以找到类似的对称性。这意味着在硬件实现中,计算/> 和/>这六个值就足够了,其余六个值可以从先前计算的值中获得。
msum值现在乘以c=1、2或3,这可以通过以下方式使用单个加法器和逻辑与(AND)门来完成:
cv=k1&(msum<<1)+k2&msum
其中&表示逻辑与,k1是乘法器c的最高有效位,k2是最低有效位。乘以的值是使用最小块尺寸D=min(width,height)获得的,如表1-5所示:
块类型 D≤4 4<D<16 D≥16
帧内 3 2 1
帧间 2 2 1
表1-5:从块的最小尺寸D=min(width,height)中获得c参数。
最后,计算双边滤波器偏移ΔIBIF。对于全强度滤波,使用以下内容:
ΔIBIF=(cv+16)>>5,
而对于半强度滤波,使用以下内容:
ΔIBIF=(cv+32)>>6。
n比特数据的通用公式是使用
radd=214-n-bilateral_filter_strength
rshift=15-n-bilateal_filter_strength
ΔIBIF=(cv+radd)>>rshift
其中bilateral_filter_strength可以是0或1,并在pps中用信号通知。
在一些实施例中,本文公开的方法和系统通过引入跨分量信息来提高编解码效率或降低样点自适应偏移(SAO)的复杂度。SAO用于HEVC、VVC、AVS2和AVS3标准。尽管在以下描述中使用HEVC、VVC、AVS2和AVS3标准中现有的SAO设计作为基本SAO方法,但是对于视频编解码领域的技术人员来说,本公开中描述的跨分量方法也可以应用于具有类似设计精神的其他环路滤波器设计或其他编解码工具。例如,在AVS3标准中,SAO被称为增强型样点自适应偏移(ESAO)的编解码工具所取代。然而,这里公开的CCSAO也可以与ESAO并行应用。在另一个示例中,CCSAO可以与AV1标准中的约束方向增强滤波器(CDEF)并行应用。
对于HEVC、VVC、AVS2和AVS3标准中的现有SAO设计,亮度Y、色度Cb和色度Cr样点偏移值是独立确定的。即,例如,当前色度样点偏移仅由当前和相邻色度样点值决定,而不考虑同位或相邻的亮度样点。然而,亮度样点比色度样点保留了更多的原始图片细节信息,它们可以有利于当前色度样点偏移的决定。此外,由于色度样点在从RGB颜色转换为YCbCr之后,或者在量化和去块滤波器之后通常会丢失高频细节,因此引入保留高频细节的亮度样点用于色度偏移决策可以有利于色度样点重建。因此,通过探索跨分量相关性,例如通过使用跨分量样点自适应偏移(CCSAO)的方法和系统,可以预期进一步的增益。在一些实施例中,这里的相关性不仅包括跨分量样点值,还包括图片/编码信息,例如来自跨分量的预测/残差编解码模式、变换类型和量化/去块/SAO/ALF参数。
另一个示例是对于SAO,亮度样点偏移仅由亮度样点决定。然而,例如,具有相同波段偏移(BO)分类的亮度样点可以通过其同位的和相邻的色度样点进一步分类,这可能导致更有效的分类。SAO分类可以作为一种捷径来补偿原始图片和重建图片之间的样点差异。因此,需要一种有效的分类。
图6A是示出根据本公开的一些实施方式的应用于色度样点并使用DBF Y作为输入的CCSAO的系统和过程的框图。亮度去块滤波器(DBF Y)之后的亮度样点用于确定SAO Cb和SAO Cr之后的色度Cb和Cr的额外偏移。例如,当前色度样点602首先使用同位604和相邻(白色)亮度样点606进行分类,并且对应类的对应CCSAO偏移值被添加到当前色度样点值。图6B是示出根据本公开的一些实施方式的应用于亮度和色度样点并使用DBF Y/Cb/Cr作为输入的CCSAO的系统和过程的框图。图6C是示出根据本公开的一些实施方式的可以独立工作的CCSAO的系统和过程的框图。图6D是说明根据本公开的一些实施方式的可以在同一编解码器级中以相同或不同偏移递归地(2次或N次)应用或在不同级中重复的CCSAO的系统和过程的框图。总之,在一些实施例中,为了对当前亮度样点进行分类,可以使用当前和相邻亮度样点的信息、同位和相邻色度样点(Cb和Cr)的信息。在一些实施例中,为了对当前色度样点(Cb或Cr)进行分类,可以使用同位和相邻的亮度样点、同位和相邻的跨色度样点以及当前和相邻的色度样点。在一些实施例中,CCSAO可以级联在(1)DBF Y/Cb/Cr之后,(2)DBF之前的重建图像Y/Cb/Cr之后,或(3)SAO Y/Cb/Cr之后,或(4)ALF Y/Cb/Cr之后。
在一些实施例中,CCSAO还可以与其他编解码工具并行应用,例如AVS标准中的ESAO,或AV1标准中的CDEF或神经网络环路滤波器(NNLF)。图6E是示出根据本公开的一些实施方式的与AVS标准中的ESAO并行应用的CCSAO的系统和过程的框图。
图6F是示出根据本公开的一些实施方式的在SAO之后应用的CCSAO的系统和过程的框图。在一些实施例中,图6F显示CCSAO的位置可以在SAO之后,即VVC标准中跨分量自适应环路滤波器(CCALF)的位置。图6G是示出根据本公开的一些实施方式的CCSAO的系统和过程可以在没有CCALF的情况下独立工作的框图。在一些实施例中,例如在AVS3标准中,SAOY/Cb/Cr可以被ESAO代替。
图6H是示出根据本公开的一些实施方式的与CCALF并行应用的CCSAO的系统和过程的框图。在一些实施例中,CCSAO可以与CCALF并行应用。在一些实施例中,如图6H中所示,CCALF和CCSAO的位置可以互换。在一些实施例中,如图6A至图6H中所示,或贯穿本公开,SAOY/Cb/Cr块可以由ESAO Y/Cb/Cr(在AVS3中)或CDEF(在AV1中)代替。注意,Y/Cb/Cr在视频编解码领域也可以表示为Y/U/V。在一些实施例中,如果视频是RGB格式,本公开中也可以通过简单地将YUV符号分别映射到GBR来应用CCSAO。
图6I是示出根据本公开的一些实施方式的与SAO和BIF并行应用的CCSAO的系统和过程的框图。图6J是示出根据本公开的一些实施方式的通过替代SAO而与BIF并行应用的CCSAO的系统和过程的框图。在一些实施例中,当前色度样点分类重新使用同位的亮度样点的SAO类型(边缘偏移(EO)或BO)、类和类别。相应的CCSAO偏移可以用信号发送或从解码器本身导出。例如,设h_Y为同位的亮度SAO偏移,h_Cb和h_Cr分别为CCSAO Cb和Cr偏移。h_Cb(或h_Cr)=w*h_Y,其中w可以在有限的表格中选择。例如,+-1/4、+-1/2、0、+-1、+-2、+-4……等,其中|w|仅包括2的幂值。
在一些实施例中,使用同位的亮度样点(Y0)和相邻的8个亮度样点的比较分数[-8、8],这总共产生17个类。
初始类=0
循环相邻的8个亮度样点(Yi,i=1到8)
如果 Y0>Yi 类+=1
否则如果 Y0<Yi 类-=1
在一些实施例中,可以组合上述分类方法。例如,比较分数结合SAO BO(32带分类)用于增加多样性,总共产生17*32个类。在一些实施例中,Cb和Cr可以使用相同的类来降低复杂度或节省比特。
图7是说明根据本公开的一些实施方式的使用CCSAO的示例过程的框图。具体来说,图7示出了CCSAO的输入可以引入垂直和水平DBF的输入,以简化类的确定,或者增加灵活性。例如,设Y0_DBF_V、Y0_DBF_H和Y0分别为DBF_V、DBF_H和SAO的输入处的同位亮度样点。Yi_DBF_V、Yi_DBF_H和Yi分别是DBF_V、DBF_H和SAO的输入处的相邻8个亮度样点,其中i=1到8。
Max Y0=max(Y0_DBF_V,Y0_DBF_H,Y0_DBF)
Max Yi=max(Yi_DBF_V,Yi_DBF_H,Yi_DBF)
并将max Y0和max Yi馈送给CCSAO分类。
图8是说明根据本公开的一些实施方式的CCSAO过程被交织到垂直和水平DBF的框图。在一些实施例中,图6、图7和图8中的CCSAO块可以是选择性的。例如,将Y0_DBF_V和Yi_DBF_V用于第一CCSAO_V,其应用与图6中相同的样点处理,同时使用DBF_V亮度样点的输入作为CCSAO输入。
在一些实施例中,实施的CCSAO语法在下表2中示出。
/>
表2:CCSAO语法示例
在一些实施例中,为了用信号通知CCSA0 Cb和Cr偏移值,如果用信号通知一个附加的色度偏移,则可以通过加号或减号或加权来导出其他色度分量偏移以节省比特开销。例如,设h_Cb和h_Cr分别为CCSAO Cb和Cr的偏移。使用显式信令w,其中w=+-|w|,具有有限的|w|候选,h_Cr可以从h_Cb中导出,而无需显式地用信号通知h_Cr本身。
h_Cr=w*h_Cb
图7是说明根据本公开的一些实施方式的使用CCSAO的示例过程的框图。图8是说明根据本公开的一些实施方式的CCSAO过程被交织到垂直和水平去块滤波器(DBF)的框图。
图9是说明根据本公开的一些实施方式的使用跨分量相关解码视频信号的示例性过程900的流程图。
视频解码器30接收包括第一分量和第二分量的视频信号(910)。在一些实施例中,第一分量是亮度分量,而第二分量是视频信号的色度分量。
视频解码器30还接收与第二分量相关联的多个偏移(920)。
视频解码器30然后利用第一分量的特征测量来获得与第二分量相关联的分类类别(930)。例如,在图6中,首先使用同位604和相邻(白色)亮度样点606对当前色度样点602进行分类,并且将相应的CCSAO偏移值添加到当前色度样点。
视频解码器30进一步根据分类类别从第二分量的多个偏移中选择第一偏移(940)。
视频解码器30另外基于所选择的第一偏移修改第二分量(950)。
在一些实施例中,利用第一分量的特征测量来获得与第二分量相关联的分类类别(930)包括:利用第一分量的相应样点来获得第二分量的相应每个样点的相应分类类别,其中第一分量的相应样点是第一分量的相应同位样点到第二分量的相应每个样点。例如,当前色度样点分类正在重用同位亮度样点的SAO类型(EO或BO)、类和类别。
在一些实施例中,利用第一分量的特征测量来获得与第二分量相关联的分类类别(930)包括:利用第一分量的相应样点来获得第二分量的相应每个样点的相应分类类别,其中第一分量的相应样点在去块之前被重建或者在被去块之后被重建。在一些实施例中,第一分量在去块滤波器(DBF)处被去块。在一些实施例中,第一分量在亮度去块滤波器(DBFY)处被去块。例如,替代图6或图7,CCSAO输入也可以在DBF Y之前。
在一些实施例中,通过将第一分量的样点值的范围划分成几个带并基于第一分量中的样点的强度值选择带,来导出特征测量。在一些实施例中,特征测量从带偏移(BO)导出。
在一些实施例中,基于第一分量中样点的边缘信息的方向和强度导出特征测量。在一些实施例中,特征测量是从边缘偏移(EO)导出的。
在一些实施例中,修改第二分量(950)包括将选择的第一偏移直接添加到第二分量。例如,将相应的CCSAO偏移值添加到当前色度分量样点。
在一些实施例中,修改第二分量(950)包括将所选择的第一偏移映射到第二偏移并且将映射的第二偏移添加到第二分量。例如,对于用信号通知CCSAO Cb和Cr偏移值,如果用信号通知一个额外的色度偏移,则可以通过使用加号或减号或加权来导出其他色度分量偏移以节省比特开销。
在一些实施例中,接收视频信号(910)包括接收语法元素,该语法元素指示是否为序列参数集(SPS)中的视频信号启用使用CCSAO对视频信号进行解码的方法。在一些实施例中,cc_sao_enabled_flag指示是否在序列级别启用CCSAO。
在一些实施例中,接收视频信号(910)包括接收语法元素,该语法元素指示使用CCSAO对视频信号进行解码的方法是否在条带级别上针对第二分量被启用。在一些实施例中,slice_cc_sao_cb_flag或slice_cc_sao_cr_flag指示是否在Cb或Cr的相应条带中启用CCSAO。
在一些实施例中,接收与第二分量相关联的多个偏移(920)包括接收不同编码树单元(CTU)的不同偏移。在一些实施例中,对于CTU,cc_sao_offset_sign_flag指示偏移的符号,cc_sao_offset_abs指示当前CTU的CCSAO Cb和Cr偏移值。
在一些实施例中,接收与第二分量相关联的多个偏移(920)包括接收语法元素,该语法元素指示所接收的CTU的偏移是否与CTU的相邻CTU之一的偏移相同,其中相邻CTU是左相邻CTU或顶部相邻CTU。例如cc_sao_merge_up_flag表示CCSAO偏移是从左CTU合并还是从上CTU合并。
在一些实施例中,视频信号还包括第三分量,并且使用CCSAO对视频信号进行解码的方法还包括:接收与第三分量相关联的第二多个偏移;利用第一分量的特征测量得到与第三分量相关联的第二分类类别;根据第二分类类别从第二多个偏移中为第三分量选择第三偏移;基于选择的第三偏移修改第三分量。
图11是示出根据本公开的一些实施方式的所有同位的和相邻的(白色)亮度/色度样点可以被馈送到CCSAO分类的示例过程的框图。在一些实施例中,本公开中描述的分类器不仅可以用作跨分量分类(例如,使用亮度来对色度进行分类,或者反之亦然),而且还可以用作单分量分类(例如,使用亮度来对亮度进行分类或使用色度对色度进行分类)。在一些实施例中,本公开中公开的分类器也可以有利于原始SAO分类,例如可以应用于原始SAO分类。图6A、图6B和图11显示了CCSAO分类的输入。在图11中,当前色度样点为1104,跨分量同位色度样点为1102,同位亮度样点为1106。
在一些实施例中,分类器示例(C0)使用下面图12A中同位的亮度或色度样点值(Y0)(图6B中的Y4/U4/V4,以及图6C)进行分类。令带_编号(band_num)为亮度或色度动态范围的等分带数,比特_深度(bit_depth)为序列比特深度,当前色度样点的类索引示例为:
Class(C0)=(Y0*band_num)>>bit_depth
在一些实施例中,分类考虑四舍五入,例如:
Class(C0)=((Y0*band_num)+(1<<bit_depth))>>bit_depth
下面表3中列出了一些band_num和bit_depth示例。表3示出了三个分类示例,其中每个分类示例的带数不同。
表3:每个类索引的示例性的band_num和bit_depth。
在一些实施例中,分类器使用不同的亮度样点位置进行C0分类。图10A是说明根据本公开的一些实施方式的使用不同亮度(或色度)样点位置进行C0分类的分类器的框图,例如,使用相邻的Y7而不是Y0进行C0分类。
在一些实施例中,不同的分类器可以在序列参数集(SPS)/适配参数集(APS)/图片参数集(PPS)/图片头(PH)/条带头(SH)/区域/编码树单元(CTU)/编码单元(CU)/子块/样点级别进行切换。
例如,在图10中,POC0使用Y0,POC1使用Y7,如下表4所示。
POC 分类器 C0 band_num 总类
0 C0使用Y0位置 8 8
1 C0使用Y7位置 8 8
表4:不同的分类器应用于不同的图片
在一些实施例中,图10B说明了根据本公开的一些实施方式的用于亮度候选的不同形状的一些示例。例如,可以对形状应用约束。在某些情况下,亮度候选的总数必须是2的幂,如图10B(b)(c)(d)所示。在某些情况下,亮度候选的数量必须相对于色度样点(在中心)水平和垂直对称,如图10B(a)(c)(d)(e)所示。在一些实施例中,2的幂约束和对称约束也可以应用于色度候选。图6B和图6C的U/V部分展示对称约束的示例。在一些实施例中,不同的颜色格式可以具有不同的分类器“约束”。例如,420色格式使用亮度/色度候选选择(从3x3形状中选择一个候选),如图6B和图6C所示,但444色格式使用图10B(f)用于亮度和色度候选选择,422颜色格式使用图10B(g)用于亮度(2个色度样点共享4个亮度候选),使用图10B(f)用于色度候选。
在一些实施例中,C0位置和C0 band_num可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别上组合和切换。不同的组合可以是不同的分类器,如下表5所示。
POC 分类器 C0 band_num 总类
0 C0使用Y0位置 16 16
1 C0使用Y7位置 8 8
表5:不同的分类器和带数组合应用于不同的图片
在一些实施例中,同位的亮度样点值(Y0)被通过对同位和相邻的亮度样点进行加权而获得的值(Yp)代替。图12A说明了根据本公开的一些实施方式的示例性分类器,其将同位亮度样点值替换为通过对同位和相邻亮度样点进行加权而获得的值。同位的亮度样点值(Y0)可以替换为通过对相邻亮度样点进行加权而获得的相位校正值(Yp)。不同的YP可以是不同的分类器。
在一些实施例中,不同的Yp应用于不同的色度格式。例如,如图12A中所示,图12A(a)的Yp用于420色度格式,图12A(b)的Yp用于422色度格式,Y0用于444色度格式。
在一些实施例中,另一个分类器(C1)是同位的亮度样点(Y0)和相邻的8个亮度样点的比较分数[-8,8],其总共产生17个类,如下所示。
初始类(Initial Class)(C1)=0,在相邻的8个亮度样点上循环(Yi,i=1到8)
如果 Y0>Yi 类+=1
否则如果 Y0<Yi 类-=1
在一些实施例中,Cl示例等于以下函数,其中阈值th为0。
ClassIdx=Index2ClassTable(f(C,P1)+f(C,P2)+…+f(C,P8))
如果x-y>th,则f(x,y)=1;如果x-y=th,则f(x,y)=0;如果x-y<th,则f(x,y)=-1
其中Index2ClassTable是查找表(LUT),C是当前或同位样点,P1到P8是相邻样点。
在一些实施例中,类似于C4分类器,一个或多个阈值可以被预定义(例如,保存在LUT中)或在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中用信号通知来帮助分类(量化)差异。
在一些实施例中,变体(C1')仅计算比较分数[0,8],并且这产生8个类。(C1,C1')是一个分类器组,PH/SH级别标志可以用信号通知以在C1和C1'之间切换。
Initial Class(C1’)=0,在相邻的8个亮度样点上循环(Yi,i=1到8)
如果 Y0>Yi 类+=1
在一些实施例中,变化(C1s)选择性地使用M个相邻样点中的相邻N个来计数比较分数。可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别用信号通知M比特的比特掩码,以指示选择哪些相邻样点来计数比较分数。使用图6B以亮度分类器为例:8个相邻的亮度样点是候选,在PH处发信号通知8比特的比特掩码(01111110),表示选择了Y1到Y6这6个样点,所以比较分数在[-6,6]中,它产生13个偏移。选择性分类器C1s给编码器更多选择,以在偏移信令开销和分类粒度之间进行权衡。
与C1s类似,变体(C1's)仅计数比较分数[0,+N],之前的比特掩码01111110示例给出了[0,6]中的比较分数,这产生了7个偏移。
在一些实施例中,不同的分类器被组合以产生通用分类器。例如,对于不同的图片(不同的POC值),应用不同的分类器,如下表6-1所示。
POC 分类器 C0 band_num 总类
0 组合C0和C1 16 16*17
1 组合C0和C1’ 16 16*9
2 组合C0和C1 7 7*17
表6-1:不同的通用分类器应用于不同的图片
在一些实施例中,另一个分类器示例(C3)使用比特掩码进行分类,如表6-2所示。10比特的比特掩码在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别用信号通知,以指示分类器。例如,比特掩码11 1100 0000表示对于给定的10比特亮度样点值,只有最高有效位(MSB):4比特用于分类,总共产生16个类。另一个示例比特掩码10 0100 0001表示仅3比特用于分类,总共产生8个类。
在一些实施例中,比特掩码长度(N)可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中固定或切换。例如,对于10比特序列,4比特的比特掩码1110在图片中的PH中用信号通知,MSB 3比特b9、b8、b7用于分类。另一个示例是LSB上的4比特的比特掩码0011,b0,b1用于分类。比特掩码分类器可以应用于亮度或色度分类。比特掩码N是使用MSB还是LSB,可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中固定或切换。
在一些实施例中,亮度位置和C3比特掩码可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中组合和切换。不同的组合可以是不同的分类器。
在一些实施例中,可以应用比特掩码限制的“1的最大数量”来限制相应数量的偏移。例如,在SPS中将比特掩码的“1的最大数量”限制为4,这将产生序列中的最大偏移为16。不同POC中的比特掩码可以不同,但“1的最大数量”不应超过4个(总类不得超过16个)。“1的最大数量”值可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别用信号通知和切换。
表6-2:分类器示例使用比特掩码进行分类(比特掩码位置带下划线)
在一些实施例中,如图11所示,例如,对于当前色度样点1104,其他跨分量色度样点(例如,色度样点1102)及其相邻样点也可以被馈送到CCSAO分类中。例如,Cr色度样点可以被馈送到CCSAO Cb分类中。Cb色度样点可以馈送到CCSAO Cr分类中。跨分量色度样点的分类器可以与亮度跨分量分类器相同,或者可以具有其自己的分类器,如本公开中所描述的。可以将这两个分类器组合起来形成联合分类器来对当前色度样点进行分类。例如,联合分类器组合了跨分量亮度和色度样点,总共产生16个类,如下表6-3所示。
表6-3:使用结合跨分量亮度和色度样点的联合分类器的分类器示例(比特掩码位置带下划线)所有上述分类(C0、C1、C1’、C2、C3)都可以组合。例如,见下表6-4。
表6-4:不同分类器被组合
在一些实施例中,分类器示例(C2)使用同位和相邻的亮度样点的差(Yn)。图12A(c)示出了Yn的示例,当比特深度为10时,其动态范围为[-1024,1023]。设C2 band_num为Yn动态范围的等分带数,
Class(C2)=(Yn+(1<<bit_depth)*band_num)>>(bit_depth+1)。
在一些实施例中,C0和C2被组合以产生通用分类器。例如,对于不同的图片(不同的POC),应用不同的分类器,如下表7所示。
POC 分类器 C0 band_num C2 band_num 总类
0 组合C0和C2 16 16 16*17
1 组合C0和C2 8 7 8*7
表7:不同的通用分类器应用于不同的图片
在一些实施例中,所有上述分类器(C0、C1、C1’、C2)被组合。例如,对于不同的图片(不同的POC),应用不同的分类器,如下表8-1所示。
表8-1:不同的通用分类器应用于不同的图片
在一些实施例中,分类器示例(C4)使用CCSAO输入值和待补偿样点值的差值进行分类,如下表8-2所示。例如,如果在ALF阶段应用CCSAO,则使用当前分量pre-ALF和post-ALF样点值的差值进行分类。可以预定义一个或多个阈值(例如,保存在查找表(LUT)中)或在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中用信号通知以帮助分类(量化)差值。C4分类器可以与C0 Y/U/V bandNum组合以形成联合分类器(例如,如表8-2所示的POC1示例)。
表8-2:分类器示例使用CCSAO输入值与待补偿样点值的差值进行分类
在一些实施例中,分类器示例(C5)使用“编码信息”来帮助子块分类,因为不同的编解码模式可能在重建图像中引入不同的失真统计。一个CCSAO样点根据其样点之前的编码信息进行分类,这些编码信息的组合可以构成分类器,例如,如下表8-3所示。下面的图30显示了C5的编码信息的不同阶段的另一个示例。
表8-3CCSAO样点根据其样点先前的编码信息进行分类,编码信息的组合可以形成分类器
在一些实施例中,分类器示例(C6)使用YUV颜色变换值进行分类。例如,对当前Y分量进行分类,选择1/1/1同位或相邻的Y/U/V样点进行RGB颜色变换,并使用C3 bandNum量化R值作为当前Y分量分类器。
在一些实施例中,分类器示例(C7)可以被视为C0/C3和C6的通用版本。为了导出当前分量C0/C3 bandNum分类,使用所有3个颜色分量同位/当前和相邻样点。例如,为了对当前U样点进行分类,如图6B中那样使用同位的和相邻的Y/V、当前和相邻的U样点,可表示为
其中S是准备用于C0/C3 bandNum分类的中间样点,Rij是第i个分量的第j个同位/相邻/当前样点,其中第i个分量可以是Y/U/V分量,并且cij是可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中预定义或用信号通知的加权系数。
在一些实施例中,C7的一种特殊子集情况可以仅使用1/1/1同位或相邻的Y/U/V样点来导出中间样点S,这也可以被视为C6的一种特殊情况(通过使用3个分量进行颜色变换)。S可以进一步馈送到C0/C3 bandNum分类器中。
classIdx=bandS=(S*bandNumS)>>BitDepth;
在一些实施例中,与C0/C3 bandNum分类器一样,C7也可以与其他分类器组合形成联合分类器。在一些示例中,C7可能与后面的示例不同,后者联合使用同位的和相邻的Y/U/V样点进行分类(每个Y/U/V分量的3分量联合bandNum分类)。
在一些实施例中,可以应用一个约束:cij之和=1,以减少cij信令开销并将S的值限制在比特深度范围内。例如,强制c00=(1–其他cij之和)。可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中预定义或用信号通知哪个cij(在该示例中为c00)被强制(由其他系数导出)。
在一些实施例中,实现块活动分类器。对于亮度分量,每个4×4块被分至25个类之一。分类索引C是根据其方向性D和活动的量化值推导出来的,如下:
在一些实施例中,为了计算D和首先使用1-D拉普拉斯算子计算水平、垂直和两个对角线方向的梯度:
其中索引i和j指的是4×4块内左上样点的坐标,R(i,j)表示坐标(i,j)处的重建样点。
在一些实施例中,为了降低块分类的复杂性,应用子采样1-D拉普拉斯计算。图12B说明了根据本公开的一些实施方式的子采样拉普拉斯计算。如图12B所示,相同的子采样位置用于所有方向的梯度计算。
则水平方向和垂直方向梯度的D最大值和最小值设置为:
在一些实施例中,两个对角方向的梯度的最大值和最小值设置为:
/>
在一些实施例中,为了导出方向性D的值,将这些值相互比较并与两个阈值t1和t2进行比较:
步骤1.如果且/>均成立,则将D设置为0。
步骤2.如果则从步骤3继续;否则从步骤4继续。
步骤3.如果则将D设置为2;否则将D设置为1。
步骤4.如果则将D设置为4;否则将D设置为3。
在一些实施例中,活动值A计算如下:
在一些实施例中,A进一步被量化为0至4(包括0和4)的范围,并且经量化值被表示为
在一些实施例中,对于图片中的色度分量,不应用分类方法。
在一些实施例中,在对每个4×4亮度块进行滤波之前,根据为该块计算的梯度值将诸如旋转或对角线和垂直翻转之类的几何变换应用于滤波器系数f(k,l)以及对应的滤波器限幅值c(k,l)。这相当于将这些变换应用于滤波器支持区域中的样点。这个想法是通过对齐它们的方向性来使应用了ALF的不同块更加相似。
在一些实施例中,引入了三种几何变换,包括对角线、垂直翻转和旋转:
对角线:fD(k,l)=f(l,k)cD(k,l)=c(l,k),
垂直翻转:fV(k,l)=f(k,K-l-1),cV(k,l)=c(k,K-l-1)
旋转:fR(k,l)=f(K-l-1,k),cR(k,l)=c(K-l-1,k)
其中K是滤波器的大小,0≤k,l≤K-1是系数坐标,这样位置(0,0)位于左上角,位置(K-1,K-1)位于右下角。根据为该块计算的梯度值,将变换应用于滤波器系数f(k,l)和限幅值c(k,l)。变换与四个方向的四个梯度之间的关系总结如下表8-4。
梯度值 变换
gd2<gd1且gh<gv 无变换
gd2<gd1且gv<gh 对角线
gd1<gd2且gh<gv 垂直翻转
gd1<gd2且gv<gh 旋转
表8-4对于一个块计算的梯度的映射及滤波过程的变换
在一些实施例中,在解码器侧,当针对CTB启用ALF时,对CU内的每个样点R(i,j)进行滤波,产生如下所示的样点值R′(i,j),
R′(i,j)=R(i,j)+((∑k≠0l≠0f(k,l)×K(R(i+k,j+l)-R(i,j),c(k,l))+64)>>7)
其中f(k,l)表示解码后的滤波器系数,K(x,y)是裁剪函数,c(k,l)表示解码后的裁剪参数。变量k和l在和/>之间变化,其中L表示滤波器长度。裁剪函数K(x,y)=min(y,max(-y,x))对应于函数Clip3(-y,y,x)。裁剪操作引入了非线性,通过减少与当前样点值相差太大的邻居样点值的影响,使ALF更加高效。
在一些实施例中,另一个分类器示例(C8)使用跨分量/当前分量空间活动信息作为分类器。与上面的块活动分类器类似,位于(k,l)的一个样点可以通过以下方式获得样点活动:
(1)计算N个方向梯度(拉普拉斯或向前/向后)
(2)对N个方向梯度求和得到活动A
(3)量化(或映射)A以获得类索引
在一些实施例中,例如,2方向拉普拉斯梯度得到A和预定义映射{Qn}以得到
gv=Vk,l=|2R(k,l)-R(k,l-1)-R(k,l+1)|
gh=Hk,l=|2R(k,l)-R(k-1,l)-R(k+1,l)|
A=(Vk,l+Hk,l)>>(BD-6)
其中(BD-6),或表示为B,是与比特深度相关联的预定义归一化项。
在一些实施例中,A可以进一步映射到[0,4]的范围:
其中B、Qn可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中预定义或用信号通知。
在一些实施例中,另一分类器示例(C9)可以使用跨分量/当前分量的空间梯度信息作为分类器。与上面的块梯度分类器类似,位于(k,l)的一个样点可以通过以下方式得到样点梯度类:
(1)计算N个方向梯度(拉普拉斯或向前/向后);
(2)计算M个分组方向(M<=N)的梯度的最大值和最小值;
(3)通过将N个值相互比较并与m个阈值t1至tm进行比较来计算方向性D;
(4)根据相对梯度大小应用几何变换(可选)。
在一些实施例中,分类器示例(C9)可以在样点级别应用以通过以下方式进行样点分类:
(1)计算4个方向梯度(拉普拉斯);
(2)计算2个分组方向(H/V和D/A)的梯度的最大值和最小值;
通过将N个值相互比较并与两个阈值t1至tm进行比较来计算方向性D;
(4)根据相对梯度大小应用几何变换,如表8-4所示。
在一些实施例中,C8和C9可以组合以形成联合分类器。
在一些实施例中,另一分类器示例(C10)可以使用跨分量/当前分量的边缘信息来进行当前分量分类。通过扩展原有的SAO分类器,C10可以通过以下方式更有效地提取跨分量/当前分量边缘信息:
(1)选择一个方向计算2个边缘强度,其中一个方向由当前样点和2个相邻样点形成,其中一个边缘强度是通过从当前样点减去一个相邻样点(或者确定当前样点的值和一个相邻样点的值之间的差值)来计算的;
(2)通过M-1个阈值Ti将每个边缘强度量化为M个分段;
(3)使用M*M类对当前分量样点进行分类。
图12C示出了根据本公开的一些实施方式的将跨分量/当前分量的边缘信息用于当前分量分类的示例。当前样点由c表示,当前分量/跨分量的两个相邻样点由a和b表示。在示例中,
(1)从4个方向候选中选择一个对角方向。差值(c-a)和(c-b)是2个边缘强度,范围从-1023~1023(例如,对于10b序列);
(2)通过公共阈值[-T,0,T]将每个边缘强度量化为4个分段;
(3)采用16个类对当前分量样点进行分类。
如图12C所示,选择一个对角方向,将差值(c-a)和(c-b)量化为阈值[-T,0,T]的4和4个分段,形成16个边缘分段。(a,b)的位置可以通过用信号通知2个语法edgeDir和edgeStep来指示。
在一些实施例中,方向模式可以是0度、45度、90度、135度(方向之间45度),或者延伸到方向之间22.5度,或者预定义的方向集,或者在SPS/APS/PPS/PH/SH/区域(集合)/CTU/CU/子块/样点级别中用信号通知。
在一些实施例中,边缘强度也可以定义为(b-a),这简化了计算但牺牲了精度。
在一些实施例中,M-1个阈值可以在SPS/APS/PPS/PH/SH/区域(集合)/CTU/CU/子块/样点级别中被预定义或用信号通知。
在一些实施例中,M-1个阈值可以是用于边缘强度计算的不同集合,例如,用于(c-a)、(c-b)的不同集合。如果使用不同的集合,则总类可能会不同。例如,当[-T,0,T]用于计算(c-a)而[-T,T]用于计算(c-b)时,总类为4*3。
在一些实施例中,M-1个阈值可以使用“对称”属性来减少信令开销。例如,可以使用预定义模式[-T,0,T],但不使用需要用信号通知3个阈值的[T0,T1,T2]。另一个示例是[-T,T]。
在一些实施例中,阈值可以仅包含2的幂值,这不仅有效地抓住了边缘强度分布,而且降低了比较复杂度(仅需要比较MSB N比特)。
在一些实施例中,a和b的位置可以通过用信号通知2个语法来指示:(1)edgeDir指示所选择的方向,以及(2)edgeStep指示用于计算边缘强度的样点距离,如图12C所示。
在一些实施例中,edgeDir/edgeStep可以在SPS/APS/PPS/PH/SH/区域(集合)/CTU/CU/子块/样点级别中预定义或用信号通知。
在一些实施例中,edgeDir/edgeStep可以用固定长度码(FLC)或其他方法来编解码,例如截断一元(TU)码、具有k阶的指数哥伦布码(EGk)、有符号EG0(SVLC),或无符号EG0(UVLC)。
在一些实施例中,C10可以与bandNum Y/U/V或其他分类器组合以形成联合分类器。例如,将16个边缘强度与最多4个bandNum Y带相组合会产生64个类。
在一些实施例中,仅使用当前分量信息进行当前分量分类的其他分类器示例可以用作跨分量分类。例如,如图5A和表1所示,亮度样点信息和eo-class被用于导出EdgeIdx,并对当前色度样点进行分类。其他也可以用作跨分量分类器的“非跨分量”分类器包括边缘方向、像素强度、像素变化、像素方差、像素拉普拉斯求和、索贝尔算子、罗盘算子、高通滤波值、低通滤波值等。
在一些实施例中,多个分类器被用在相同的POC中。当前帧被分成几个区域,每个区域使用相同的分类器。例如,在POC0中使用了3个不同的分类器,使用哪个分类器(0、1或2)在CTU级别用信号通知,如下面的表9所示。
表9:不同的通用分类器应用于同一图片的不同区域
在一些实施例中,复数分类器(复数分类器也可称为备选偏移集)的最大数目可以是固定的或在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中用信号通知。在一个示例中,复数分类器的固定(预定义)最大数量为4。在这种情况下,POC0中使用了4个不同的分类器,并且使用哪个分类器(0、1或2)在CTU级别用信号通知。截断一元(TU)代码可用于指示用于每个亮度或色度CTB的分类器。例如,如下表10所示,当TU代码为0时:不应用CCSAO;当TU代码为10时:应用集0;当TU代码为110时,应用集1;当TU代码为1110时:应用集2;当TU代码为1111时:应用集3。定长码、哥伦布莱斯(golomb-rice)码和指数哥伦布(exponential-golomb)码也可以用来指示CTB的分类器(偏移集索引)。在POC1中使用了3种不同的分类器。
POC 分类器 C0 band_num 区域 TU码
0 C0使用Y3位置 6 0 10
0 C0使用Y3位置 7 1 110
0 C0使用Y1位置 3 2 1110
0 C0使用Y6位置 6 3 1111
1 C0使用Y0位置 16 0 10
1 C0使用Y0位置 8 1 110
1 C0使用Y1位置 8 2 1110
表10:截断一元(TU)码用于指示用于每个色度CTB的分类器
Cb和Cr CTB偏移集索引的示例被针对1280x720序列POC0给出(如果CTU大小为128x128,则帧中的CTU数量为10x6)。POC0 Cb使用4个偏移集,Cr使用1个偏移集。如下表11-1所示,当偏移集索引为0时:不应用CCSAO;当偏移集索引为1时:应用集0;当偏移集索引为2时:应用集1;当偏移集索引为3时:应用集2;当偏移集索引为4时:应用集3。类型表示所选同位亮度样点(Yi)的位置。不同的偏移集可以有不同的类型、band_num和对应的偏移。
表11-1:针对1280x720序列POC0给出了Cb和Cr CTB偏移集索引的示例(如果CTU大小为128x128,则帧中的CTU数量为10x6)
在一些实施例中,在下表11-2中列出了联合使用同位/当前和相邻Y/U/V样点进行分类的示例(每个Y/U/V分量的3分量联合bandNum分类)。在POC0中,{2,4,1}偏移集分别用于{Y,U,V}。每个偏移集都可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别自适应切换。不同的偏移集可以有不同的分类器。例如,作为如图6B和图6C所示的候选位置(candPos),为了对当前Y4亮度样点进行分类,Y set0选择{当前Y4,同位U4,同位V4}作为候选,分别具有不同的bandNum{Y,U,V}={16,1,2}。以{candY,candU,candV}为选取的{Y,U,V}候选的样点值,总类数为32,类索引推导可表示为:
bandY=(candY*bandNumY)>>BitDepth;
bandU=(candU*bandNumU)>>BitDepth;
bandV=(candV*bandNumV)>>BitDepth;
classIdx=bandY*bandNumU*bandNumV+bandU*bandNumV+bandV;
在一些实施例中,联合分类器的classIdx推导可以表示为“或-移位”形式以简化推导过程。例如,最大bandNum={16,4,4}
classIdx=(bandY<<4)|(bandU<<2)|bandV
另一个示例是在POC1分量v set1分类中。在该示例中,使用candPoS={相邻Y8,相邻U3,相邻V0},其中bandNum={4,1,2},这会产生8个类。
POC 当前分量 偏移集 分类器:candPos(Y,U,V),其中bandNum(Y,U,V) 总类(偏移数)
0 Y 0 (Y4,U4,V4),(16,1,2) 16*1*2=32
1 (Y4,U0,V2),(15,4,1) 15*4*1=60
U 0 (Y8,u3,V0),(1,1,2) 2
1 (Y4,U1,V0),(15,2,2) 60
2 (Y6,U6,V6),(4,4,1) 16
3 (Y2,U0,V5),(1,1,1) 1
V 0 (Y2,U0,V5),(1,1,1) 1
1 Y 0 (Y4,U1,V0),(15,2,2) 60
U 0 (Y6,U2,V1),(7,1,2) 14
V 0 (Y8,U3,V0),(1,1,2) 2
1 (Y8,U3,V0),(4,1,2) 8
表11-2:联合使用同位/当前和相邻Y/U/V样点进行分类的示例
在一些实施例中,列出了联合使用同位的和相邻的Y/U/V样点用于当前Y/U/V样点分类的示例(3个分量联合edgeNum(Cls)和bandNum分类用于每个Y/U/V分量),例如,如下表11-3所示。edge CandPoS是用于C1s分类器的中心位置,edge bitMask是C1s相邻样点激活指示符,edgeNum是对应的C1s类数。在此示例中,C1s仅应用于Y分类器(因此edgeNum等于edgeNumY),edge candPos始终为Y4(当前/同位样点位置)。然而,C1s可以应用于以edgecandPos作为相邻样点位置的Y/U/V分类器。
diff表示Y C1s的比较分数,classIdx推导可以是
bandY=(candY*bandNumY)>>BitDepth;
bandU=(candU*bandNumU)>>BitDepth;
bandV=(candV*bandNumV)>>BitDepth;
edgeIdx=diff+(edgeNum>>1);
bandIdx=bandY*bandNumU*bandNumV+bandU*bandNumV+bandV;
classIdx=bandIdx*edgeNum+edgeIdx;
表11-3(第1部分):联合使用同位/当前和相邻Y/U/V样点进行分类的示例
表11-3(第2部分):联合使用同位/当前和相邻Y/U/V样点进行分类的示例
表11-3(第3部分):联合使用同位/当前和相邻Y/U/V样点进行分类的示例
在一些实施例中,如上所述,对于单个分量,可以组合多个C0分类器(不同位置或权重组合,bandNum)以形成联合分类器。该联合分类器可以与其他组件组合以形成另一个联合分类器,例如,使用2Y样点(candY/candX和bandNumY/bandNumX)、1U样点(candU和bandNumU)和1V样点(candV和bandNumV)对一个U样点进行分类(Y/V可以具有相同的概念)。类索引推导可以表示为:
bandY=(candY*bandNumY)>>BitDepth;
bandX=(candX*bandNumX)>>BitDepth;
bandU=(candU*bandNumU)>>BitDepth;
bandV=(candV*bandNumV)>>BitDepth;
classIdx=bandY*bandNumX*bandNumU*bandNumV+bandX*bandNumU*bandNumV+bandU*bandNumV+bandV;
在一些实施例中,如果对一个单一分量使用多个C0,则可以应用一些解码器规范或编码器一致性约束。约束包括(1)所选择的C0候选必须彼此不同(例如,candX!=candY),和/或(2)新添加的bandNum必须小于其他bandNum(例如,bandNumX<=bandNumY)。通过在单个分量(Y)内应用直观的约束,可以去除冗余情况以节省比特成本和复杂性。
在一些实施例中,最大band_num(bandNumY、bandNumU或bandNumV)可以是固定的或在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中用信号通知。例如,在解码器中固定最大band_num=16,并且对于每个帧,用信号通知4比特以指示帧中的C0 band_num。下面的表12中列出了一些其他最大band_num示例。
表12:最大band_num和band_num比特示例
在一些实施例中,每个集合(或添加的所有集合)的类或偏移的最大数量(联合使用多个分类器的组合,例如,C1s edgeNum*C1 bandNumY*bandNumU*bandNumV)可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中固定或用信号通知。例如,对于所有添加的class_num=256*4的集合,最大值是固定的,可以使用编码器一致性检查或解码器规范性检查来检查约束。
在一些实施例中,可以对C0分类应用限制,例如,将band_num(bandNumY,bandNumU或bandNumV)限制为仅为2的幂值。不是明确地用信号通知band_num,而是用信号通知语法band_num_shift。解码器可以使用移位操作来避免乘法。不同的band_num_shift可以用于不同的分量。
Class(C0)=(Y0>>band_num_shift)>>bit_depth
另一个操作示例是考虑舍入以减少误差。
Class(C0)=((Y0+(1<<(band_num_shift-1)))>>band_num_shift)>>bit_depth
例如,如果band_num_max(Y,U或V)是16,则可能的band_num_shift候选是0、1、2、3、4,对应于band_num=1、2、4、8、16,如表13所示。
POC 分类器 C0 band_num_shift C0 band_num 总类
0 C0使用Y0位置 4 16 16
1 C0使用Y7位置 3 8 8
Band_num_max 有效band_num Band_num_shift候选
1 1 0
2 1,2 0,1
4 1,2,4 0,1,2
8 1,2,4,8 0,1,2,3
16 1,2,4,8,16 0,1,2,3,4
32 1,2,4,8,16,32 0,1,2,3,4,5
64 1,2,4,8,16,32,64 0,1,2,3,4,5,6
128 1,2,4,8,16,32,64,128 0,1,2,3,4,5,6,7
256 1,2,4,8,16,32,64,128,256 0,1,2,3,4,5,6,7,8
表13:Band_num和对应的band_num_shift候选
在一些实施例中,应用于Cb和Cr的分类器是不同的。所有类的Cb和Cr偏移都可以单独地用信号通知。例如,不同的用信号通知的偏移被应用于不同的色度分量,如下面的表14所示。
POC 分量 分类器 C0 band_num 总类 用信号通知的偏移
0 Cb C0 16 16 16
0 Cr C0 5 5 5
表14:所有类的Cb和Cr偏移都可以单独地用信号通知
在一些实施例中,最大偏移值是固定的或在序列参数集(SPS)/适配参数集(APS)/图片参数集(PPS)/图片标头(PH)/条带头(SH)/区域/CTU/CU/子块/样点级别中用信号通知。例如,最大偏移在[-15,15]之间。不同的分量可具有不同的最大偏移值。
在一些实施例中,偏移信令可以使用差分脉冲编码调制(DPCM)。例如,偏移{3,3,2,1,-1}可以用信号表示为{3,0,-1,-1,-2}。
在一些实施例中,偏移可以存储在APS或存储器缓冲器中以供下一个图片/条带重用。可以用信号通知索引以指示哪些存储的先前帧偏移用于当前图片。
在一些实施例中,Cb和Cr的分类器是相同的。可以联合用信号通知所有类的Cb和Cr偏移,例如,如下面的表15所示。
POC 分量 分类器 C0 band_num 总类 用信号通知的偏移
0 Cb和Cr C0 8 8 8
表15:所有类的Cb和Cr偏移可联合用信号通知
在一些实施例中,Cb和Cr的分类器可以是相同的。所有类别的Cb和Cr偏移可以联合用信号通知,例如,具有符号标志差异,如下面的表16所示。根据表16,当Cb偏移为(3,3,2,-1)时,导出的Cr偏移为(-3,-3,-2,1)。
表16:所有类的Cb和Cr偏移可以用符号标志差联合地用信号通知
在一些实施例中,可以为每个类用信号通知符号标志。例如,如下表17所示。根据表17,当Cb偏移为(3,3,2,-1)时,根据相应的带符号标志导出的Cr偏移为(-3,3,2,1)。
表17:所有类的Cb和Cr偏移可以用为每个类用信号通知的符号标志联合地用信号通知
在一些实施例中,Cb和Cr的分类器可以相同。所有类的Cb和Cr偏移可以用权重差联合地用信号通知,例如,如下面的表18所示。权重(w)可以在有限的表格中选择,例如+-1/4、+-1/2、0、+-1、+-2、+-4……等等,其中|w|仅包括2的幂值。根据表18,当Cb偏移为(3,3,2,-1)时,根据相应的带符号标志导出的Cr偏移为(-6,-6,-4,2)。
表18:所有类的Cb和Cr偏移可以用权重差联合地用信号通知
在一些实施例中,可以用信号通知每个类的权重。例如,如下表19所示。根据表19,当Cb偏移为(3,3,2,-1)时,根据相应的带符号标志导出的Cr偏移为(-6,12,0,-1)。
表19:所有类的Cb和Cr偏移可以用为每个类用信号通知的权重联合地用信号通知
在一些实施例中,如果在相同的POC中使用多个分类器,则单独地或联合地用信号通知不同的偏移集。
在一些实施例中,可以存储先前解码的偏移以供未来帧使用。可以用信号通知索引以指示哪个先前解码的偏移集用于当前帧,以减少偏移信令开销。例如,POC2可以重用POC0偏移,并用信号通知偏移集idx=0,如下表20所示。
表20:可以用信号通知索引以指示哪个先前解码的偏移集用于当前帧在一些实施例中,Cb和Cr的重用偏移集idx可以不同,例如,如下表21所示。
表21:可以用信号通知索引以指示哪个先前解码的偏移集用于当前帧,并且索引对于Cb和Cr分量可以不同。
在一些实施例中,偏移信令可以使用包括起始(start)和长度(length)的附加语法,以减少信令开销。例如,当band_num=256时,仅用信号通知band_idx=37~44的偏移(offset)。在下面表22-1的示例中,start和length的语法都是8比特固定长度编码,应该与band_num比特匹配。
表22-1:偏移信令使用附加语法,包括start和length
在一些实施例中,如果将CCSAO应用于所有YUV 3分量,则可以联合使用同位的和相邻的YUV样点进行分类,并且可以将所有上述用于Cb/Cr的偏移信令方法扩展到Y/Cb/Cr。在一些实施例中,不同的分量偏移集可以被单独存储和使用(每个分量具有其自己的存储集)或联合地存储和使用(每个分量共享/重用相同的存储集)。下面的表22-2显示了一个单独的集合示例。
/>
表22-2:示例显示了不同的分量偏移集可以单独存储和使用(每个分量都有自己的存储集)或联合存储和使用(每个分量共享/重用相同的存储集)
在一些实施例中,如果序列比特深度高于10(或特定比特深度),则可以在用信号通知之前量化偏移。在解码器侧,解码后的偏移在应用之前被去量化,如下面的表23-1所示。例如,对于12比特的序列,解码后的偏移左移(去量化)2。
用信号通知的偏移 去量化并且应用的偏移
0 0
1 4
2 8
3 12
14 56
15 60
表23-1:解码后的偏移在应用前被去量化
在一些实施例中,偏移可以被计算为CcSaoOffsetVal=(1-2*ccsao_offset_sign_flag)*(ccsao_offset_abs<<(BitDepth-Min(10,BitDepth)))
在一些实施例中,在此进一步引入滤波强度概念。例如,分类器偏移可以在应用于样点之前进一步加权。可以在2的幂值表中选择权重(w)。例如,+-1/4、+-1/2、0、+-1、+-2、+-4……等,其中|w|仅包括2的幂值。权重指数可以在SPS/APS/PPS/PH/SH/区域(集合)/CTU/CU/子块/样点级别上用信号通知。量化偏移信令可以作为该权重应用的子集。如果递归CCSAO如图6D所示被应用,可以在第一阶段和第二阶段之间应用类似的权重指数机制。
在一些示例中,对不同分类器的加权:可以将多个分类器的偏移应用于具有权重组合的相同样点。可以如上所述用信号通知类似的权重指数机制。例如,
offset_final=w*offset_1+(1-w)*offset_2,或者
offset_final=w1*offset_1+w2*offset_2+…
在一些实施例中,不是在PH/SH中直接用信号通知CCSAO参数,先前使用的参数/偏移可以存储在自适应参数集(APS)或存储器缓冲器中以供下一个图片/条带重用。索引可以在PH/SH中用信号通知,以指示哪些存储的先前帧偏移用于当前图片/条带。可以创建一个新的APS ID来维护CCSAO历史偏移。下表显示了使用图6I的一个示例,candPoS和bandNum{Y,U,V}={16,4,4}。在一些示例中,candPos、bandNum、偏移信令方法可以是固定长度代码(FLC)或其他方法,例如截断一元(TU)代码、具有阶数k的指数哥伦布代码(EGk)、带符号的EG0(SVLC),或无符号EG0(UVLC)。在这种情况下,sao_cc_y_class_num(或cb、cr)等于sao_cc_y_band_num_y*sao_cc_y_band_num_u*sao_cc_y_band_num_v(或cb、cr)。ph_sao_cc_y_aps_id是这个图片/条带中使用的参数索引。注意cb和cr分量可以遵循相同的信令逻辑。
/>
/>
表23-2:自适应参数集(APS)语法
aps_adaptation_parameter_set_id提供APS的标识符以供其他语法元素参考。当aps_params_type等于CCSAO_APS时,aps_adaptation_parameter_set_id的值应在0到7的范围内,包括端值(例如)。
ph_sao_cc_y_aps_id指定当前图片中条带的Y颜色分量所指的CCSAO APS的aps_adaptation_parameter_set_id。当存在ph_sao_cc_y_aps_id时,以下适用:具有等于CCSAO_APS的aps_params_type和等于ph_sao_cc_y_aps_id的aps_adaptation_parameter_set_id的APS NAL单元的sao_cc_y_set_signal_flag的值应等于1;具有等于CCSAO_APS的aps_params_type和等于ph_sao_cc_y_aps_id的aps_adaptation_parameter_set_id的APS网络抽象层(NAL)单元的TemporalId应小于或等于当前图片的TemporalId。
在一些实施例中,本文描述了APS更新机制。可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中预定义或用信号通知最大数量的APS偏移集。不同的分量可以有不同的最大数量限制。如果APS偏移集已满,则新添加的偏移集可以使用先进先出(FIFO)、后进先出(LIFO)或最近最少使用(LRU)机制替换一个现有的已存储偏移,或者指示应替换哪个APS偏移集的索引值被接收。在一些示例中,如果选择的分类器由candPos/edge info/coding info等等组成,则所有分类器信息都可以作为APS偏移集的一部分,也可以与其偏移值一起存储在APS偏移集中。在一些情况下,上述更新机制可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中预定义或用信号通知。
在一些实施例中,可以应用被称为“修剪”的约束。例如,新接收到的分类器信息和偏移不能与(同一分量的,或跨不同分量的)任何存储的APS偏移集相同。
在一些示例中,如果使用C0 candPos/bandNum分类器,APS偏移集的最大数量是每个Y/U/V 4个,并且FIFO更新用于Y/V,指示更新的idx用于U。
/>
/>
表23-3:使用FIFO的CCSAO偏移集更新。
在一些实施例中,可以放宽修剪标准以给出编码器权衡的更灵活的方式:例如,在应用修剪操作时允许N个偏移不同(例如,N=4);在另一个示例中,在应用修剪操作时允许每个偏移的值存在差异(表示为“thr”)(例如,+-2)。
在一些实施例中,可以同时或单独地应用2个标准。是否应用每个标准是在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中预定义或切换的。
在一些实施例中,N/thr可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中被预定义或切换。
在一些实施例中,FIFO更新可以是(1)从先前留下的集合idx循环更新(如果全部更新,则再次从集合0开始),如在以上示例中,(2)每次从集合0更新。在某些示例中,当接收到新的偏移集时,更新可以在PH(如示例)或SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别。
对于LRU更新,解码器维护计数表,该计数表对“总偏移集使用计数”进行计数,可以在SPS/APS/每图片组(GOP)结构/PPS/PH/SH/区域/CTU/CU/子块/样点级别中刷新。新接收到的偏移集替换了APS中最近最少使用的偏移集。如果2个存储的偏移集具有相同的计数,则可以使用FIFO/LIFO。
例如,见下表23-4中的分量Y。
表23-4:使用LRU的CCSAO偏移集更新。
在一些实施例中,不同的分量可以具有不同的更新机制。
在一些实施例中,不同的分量(例如,U/V)可以共享相同的分类器(相同的candPos/边缘信息/编码信息/偏移,可以另外具有带有修饰符的权重)。
在一些实施例中,由于不同图片/条带使用的偏移集可能仅具有轻微的偏移值差异,因此在偏移替换机制中可以使用“补丁”实施方式。在一些实施例中,“补丁”实施方式是差分脉冲码调制(DPCM)。例如,当用信号通知新的偏移集(OffsetNew)时,偏移值可以位于现有的APS存储的偏移集(OffsetOld)之上。编码器仅用信号通知增量值来更新旧的偏移集(DPCM:OffsetNew=OffsetOld+增量)。在表23-5所示的以下示例中,也可以使用除FIFO更新之外的选择(LRU、LIFO或用信号通知指示要更新哪个集合的索引)。YUV分量可能具有相同的更新机制或使用不同的更新机制。尽管在表23-5的示例中分类器candPos/bandNum没有改变,但是可以通过用信号通知附加标志来指示覆盖集合分类器(标志=0:仅更新集合偏移,标志=1:更新集合分类器和集合偏移)。
/>
表23-4:使用DPCM的CCSAO偏移集更新。
在一些实施例中,DPCM增量偏移值可以在FLC/TU/EGk(顺序=0,1,…)码中用信号通知。可以针对每个偏移集用信号通知一个标志来指示是否启用DPCM信令。DPCM增量偏移值或新添加的偏移值(当启用APS DPCM=0时,无需DPCM直接用信号通知)(ccsao_offset_abs),可以在应用于目标偏移(CcSaoOffsetVal)之前被去量化/映射。偏移量化步长可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别中预定义或用信号通知。例如,一种方法是利用量化步长=2的直接信令偏移:
CcSaoOffsetVal=(1-2*ccsao_offset_sign_flag)*(ccsao_offset_abs<<1)
另一种方法是使用量化步长=2的DPCM信令偏移:
CcSaoOffsetVal=CcSaoOffsetVal+(1-2*ccsao_offset_sign_flag)*(ccsao_offset_abs<<1)
在一些实施例中,可以应用一种约束来减少直接偏移信令开销,例如,更新的偏移值必须具有与旧的偏移值相同的符号。通过使用这样推断的偏移符号,新的更新的偏移不需要再次发送符号标志(ccsao_offset_sign_flag被推断为与旧的偏移相同)。
在一些实施例中,样点处理描述如下。设R(x,y)为CCSAO前的输入亮度或色度样点值,R’(x,y)为CCSAO后的输出亮度或色度样点值:
偏移=ccsao_offset[R(x,y)的class_index]
R’(x,y)=Clip3(0,(1<<bit_depth)-1,R(x,y)+偏移)
根据以上等式,使用当前图片的指示的分类器和/或当前偏移集idx对每个亮度或色度样点值R(x,y)进行分类。导出的类索引的对应偏移被添加到每个亮度或色度样点值R(x,y)。对(R(x,y)+偏移)应用削波函数Clip 3,使输出亮度或色度样点值R’(x,y)在比特深度动态范围内,例如范围0到(1<<bit_depth)-1。
图13是示出根据本公开的一些实施方式的CCSAO与具有不同削波组合的其他环路滤波器一起应用的框图。
在一些实施例中,当CCSAO与其他环路滤波器一起操作时,削波操作可以是
(1)添加后削波。以下等式显示了以下情况的示例:(a)CCSAO与SAO和BIF一起运行,或(b)CCSAO取代SAO但仍与BIF一起运行。
(a)IOUT=clip1(IC+ΔISAO+ΔIBIF++ΔICCSAO)
(b)IOUT=clip1(IC+ΔICCSAO+ΔIBIF)
(2)添加前削波,使用BIF操作。在一些实施例中,可以切换削波顺序。
(a)IOUT=clip1(IC+ΔISAO)
I′OUT=clip1(IOUT+ΔIBIF)
I"OUT=clip1(I"OUT+ΔICCSAO)
(b)IOUT=clip1(IC+ΔIBIF)
I′OUT=clip1(I′OUT+ΔICCSAO)
(3)在部分添加后削波
(a)IOUT=clip1(IC+ΔISAO+ΔIBIF)
I′OUT=clip1(IOUT+ΔICCSAO)
在一些实施例中,不同的削波组合在校正精度和硬件临时缓冲器大小(寄存器或SRAM比特宽度)之间给出不同的权衡。
图13(a)显示SAO/BIF偏移削波。图13(b)显示了CCSAO的一个额外的比特深度削波。图13(c)显示了在将SAO/BIF/CCSAO偏移添加到输入样点之后的联合削波。更具体地,例如,图13(a)显示了与SAO交互时的当前BIF设计。来自SAO和BIF的偏移被添加到输入样点,然后执行一个比特深度削波。然而,当SAO阶段也加入CCSAO时,可以选择两种可能的削波设计:(1)为CCSAO添加一个额外的比特深度削波,以及(2)一种在添加SAO/BIF/CCSAO偏移到输入样点之后执行联合削波的协调设计,如图13(b)和图13(c)中所示。在一些实施例中,上述削波设计仅在亮度样点方面不同,因为BIF仅应用于它们。
在一些实施例中,边界处理描述如下。如果用于分类的任何同位和相邻亮度(色度)样点在当前图片之外,则CCSAO不会应用于当前色度(亮度)样点。图14A是说明根据本公开的一些实施方式的如果用于分类的同位和相邻的亮度(色度)样点中的任何一者在当前图片之外则CCSAO不应用于当前色度(亮度)样点的框图。例如,在图14A(a)中,如果使用分类器,则CCSAO不应用于当前图片的左1列色度分量。例如,如果使用C1’,则CCSAO不应用于当前图片的左1列和顶部1行的色度分量,如图14A(b)所示。
图14B是说明根据本公开的一些实施方式的如果用于分类的同位和相邻的亮度或色度样点中的任何一个在当前图片之外则将CCSAO应用于当前亮度或色度样点的框图。在一些实施例中,一种变化是,如果用于分类的同位和相邻的亮度或色度样点中的任何一个在当前图片之外,则重复使用丢失的样点,如图14B(a)所示,或者将丢失的样点进行镜像填充以创建用于分类的样点,如图14B(b)所示,CCSAO可以应用于当前亮度或色度样点。在一些实施例中,如果用于分类的同位和相邻亮度(色度)样点中的任何一个在当前子图片/条带/瓦片/补块/CTU/360虚拟边界外,则本文公开的禁用/重复/镜像图片边界处理方法也可以应用于子图片/条带/瓦片/CTU/360虚拟边界。
例如,图片被分成一个或多个瓦片行和一个或多个瓦片列。瓦片是覆盖图片的矩形区域的一系列CTU。
条带由整数个完整瓦片或图片的一个瓦片内的整数个连续的完整CTU行组成。
子图片包含共同覆盖图片的矩形区域的一个或多个条带。
在一些实施例中,360度视频是在球体上捕获的并且固有地没有“边界”,在投影域中超出参考图片边界的参考样点总是可以从球域中的相邻样点中获得。对于由多个面组成的投影格式,无论采用何种紧凑的拼帧排列,拼帧图片中的两个或更多个相邻面之间会出现不连续性。在VVC中,引入了垂直和/或水平虚拟边界,在这些边界上禁用环路滤波操作,并且那些边界的位置在SPS或图片标头中用信号通知。与使用两个瓦片(每组连续面一个)相比,360虚拟边界的使用更加灵活,因为它不需要面大小是CTU大小的倍数。在一些实施例中,垂直360虚拟边界的最大数量为3,水平360虚拟边界的最大数量也为3。在一些实施例中,两个虚拟边界之间的距离大于或等于CTU尺寸,虚拟边界粒度是8个亮度样点,例如8x8样点网格。
图14C是说明根据本公开的一些实施方式的如果用于分类的对应选择的同位或相邻亮度样点在由虚拟边界定义的虚拟空间之外则CCSAO不应用于当前色度样点的框图。在一些实施例中,虚拟边界(VB)是分隔图片帧内的空间的虚拟线。在一些实施例中,如果在当前帧中应用虚拟边界(VB),则CCSAO不应用到已经选择由虚拟边界定义的虚拟空间之外的对应亮度位置的色度样点。图14C显示了具有9个亮度位置候选的C0分类器的虚拟边界的示例。对于每个CTU,CCSAO不应用于对应的所选亮度位置在由虚拟边界包围的虚拟空间之外的色度样点。例如,在图14C(a)中,当所选择的Y7亮度样点位置位于水平虚拟边界1406的另一侧时,CCSAO不应用于色度样点1402,该水平虚拟边界1406位于距帧的底部侧4个像素行处。例如,在图14C(b)中,当所选择的Y5亮度样点位置位于垂直虚拟边界1408的另一侧时,CCSAO不应用于色度样点1404,该垂直虚拟边界1408位于从帧的右侧起y个像素行处。
图15示出了根据本公开的一些实施方式可以对虚拟边界外的亮度样点应用重复或镜像填充。图15(a)显示了重复填充的示例。如果选择原始的Y7作为位于VB 1502底侧的分类器,则使用Y4亮度样点值进行分类(复制到Y7位置),而不是原来的Y7亮度样点值。图15(b)显示了镜像填充的示例。如果选择Y7作为位于VB 1504底侧的分类器,则使用与Y7值相对于Y0亮度样点对称的Y1亮度样点值进行分类,而不是使用原始的Y7亮度样点值。填充方法为应用CCSAO提供了更多的色度样点可能性,因此可以实现更多的编码增益。
在一些实施例中,可以应用限制以减少CCSAO所需的线缓冲器,并简化边界处理条件检查。图16示出了根据本公开的一些实施方式,如果所有9个同位的相邻亮度样点都用于分类,则可能需要额外的1个亮度线缓冲器,即当前VB 1602之上的线-5的整个线亮度样点。图10B(a)显示了仅使用6个亮度候选进行分类的示例,它减少了线缓冲器并且不需要图14A和图14B中的任何额外边界检查。
在一些实施例中,使用亮度样点进行CCSAO分类可能会增加亮度线缓冲器,因此会增加解码器硬件实现成本。图17示出根据本公开的一些实施方式的AVS中的图示,其中9个亮度候选CCSAO穿过VB 1702可以增加2个额外的亮度线缓冲器。对于虚拟边界(VB)1702以上的亮度和色度样点,在当前CTU行处理DBF/SAO/ALF。对于低于VB 1702的亮度和色度样点,在下一个CTU行处理DBF/SAO/ALF。在AVS解码器硬件设计中,亮度线-4到线-1预DBF样点、线-5预SAO样点和色度线-3到线-1预DBF样点、线-4预SAO样点存储为下一个CTU行DBF/SAO/ALF处理的线缓冲器。处理下一个CTU行时,不在行缓冲器中的亮度和色度样点不可用。然而,例如,在色度线-3(b)位置,色度样点在下一个CTU行处理,但CCSAO需要预SAO亮度样点线-7、-6和-5用于分类。预SAO亮度样点线-7、-6不在线缓冲器中,因此它们不可用。并且将预SAO亮度样点线-7和-6添加到线缓冲器将增加解码器硬件实现成本。在一些示例中,亮度VB(线-4)和色度VB(线-3)可以不同(未对齐)。
类似于图17,图18A示出了根据本公开的一些实施方式的VVC中的图示,其中9个亮度候选CCSAO穿过VB 1802可以增加1个额外的亮度线缓冲器。VB可以在不同的标准中有所不同。在VVC中,亮度VB是线-4,色度VB是线-2,所以9个候选CCSAO可能会增加1个亮度线缓冲器。
在一些实施例中,在第一解决方案中,如果色度样点的任何亮度候选穿过VB(在当前色度样点VB之外),则针对色度样点禁用CCSAO。图19A-19C在AVS和VVC中示出,根据本公开的一些实施方式,如果色度样点的任何亮度候选穿过VB 1902(在当前色度样点VB之外),则针对色度样点禁用CCSAO。图14C还显示了此实施方式的一些示例。
在一些实施例中,在第二解决方案中,从靠近且位于VB的另一侧的亮度线,例如亮度线-4,重复填充被用于CCSAO,用于“穿过VB”亮度候选。在一些实施例中,针对“穿过VB”色度候选实施从VB以下的亮度最近邻居的重复填充。图20A-20C示出了,在AVS和VVC中,根据本公开的一些实施方式,如果色度样点的任何亮度候选穿过VB 2002(在当前色度样点VB之外),则使用色度样点的重复填充来启用CCSAO。图14C(a)还示出了此实施方式的一些示例。
在一些实施例中,在第三种解决方案中,针对“穿过VB”亮度候选,从低于亮度VB,针对CCSAO使用镜像填充。图21A-21C示出了,在AVS和VVC中,根据本公开的一些实施方式,如果色度样点的任何亮度候选为穿过VB 2102(在当前色度样点VB之外),则对色度样点使用镜像填充启用CCSAO。图14C(b)和图14B(b)也显示了此实施方式的一些示例。在一些实施例中,在第四种解决方案中,“双侧对称填充”用于应用CCSAO。图22A-22B示出了根据本公开的一些实施方式,针对不同CCSAO形状的一些示例(例如,9个亮度候选(图22A)和8个亮度候选(图22B))使用双侧对称填充来启用CCSAO。对于具有色度样点的同位居中亮度样点的亮度样点集,如果亮度样点集的一侧在VB 2202之外,则对亮度样点集的两侧应用双侧对称填充。例如,在图22A中,亮度样点Y0、Y1和Y2在VB 2202之外,因此Y0、Y1、Y2和Y6、Y7、Y8均使用Y3、Y4、Y5进行填充。例如,在图22B中,亮度样点Y0在VB 2202之外,因此使用Y2填充Y0,使用Y5填充Y7。
图18B示出了根据本公开的一些实施方式,当同位或相邻的色度样点被用于对当前亮度样点进行分类时,所选择的色度候选可能穿过VB并且需要额外的色度线缓冲器的图示。可以应用与上述类似的解决方案1至4来处理该问题。
解决方案1是当亮度样点的任何色度候选可能穿过VB时,针对亮度样点禁用CCSAO。
解决方案2是针对“穿过VB”色度候选使用来自VB以下色度最近邻居的重复填充。
解决方案3是针对“穿过VB”色度候选使用来自色度VB以下的镜像填充。
解决方案4是使用“双侧对称填充”。对于以CCSAO同位色度样点为中心的候选集,如果候选集的一侧在VB之外,则对两侧应用双侧对称填充。
填充方法给予更多亮度或色度样点应用CCSAO的可能性,因此可以实现更多编码增益。
在一些实施例中,在底部图片(或条带、瓦片、砖块(brick))边界CTU行,VB以下的样点在当前CTU行处理,因此上述特殊处置(解决方案1、2、3、4)不适用于底部图片(或条带、瓦片、砖块)边界CTU行。例如,1920x1080的帧除以128x128的CTU。一个帧包含15x9个CTU(向上舍入)。底部CTU行是第15个CTU行。解码过程是一个CTU行接一个CTU行,每个CTU行一个CTU接一个CTU。需要沿着当前和下一个CTU行之间的水平CTU边界应用去块。CTB VB适用于每个CTU行,因为在一个CTU内部,在底部4/2亮度/色度线,DBF样点(VVC情况)在下一个CTU行处理,并且不可用于当前CTU行的CCSAO。然而,在图像帧的底部CTU行,底部4/2亮度/色度线DBF样点在当前CTU行可用,因为没有剩下下一个CTU行,并且它们在当前CTU行进行DBF处理。
在一些实施例中,显示在图13到图22中的VB可以用子图片/条带/瓦片/补块/CTU/360虚拟边界的边界代替。在一些实施例中,可以切换图13到图22中的色度样点和亮度样点的位置。在一些实施例中,图13至图22中色度样点和亮度样点的位置可以用第一色度样点和第二色度样点的位置代替。在一些实施例中,CTU内的ALF VB通常可以是水平的。在一些实施例中,子图片/条带/瓦片/补块/CTU/360虚拟边界的边界可以是水平的或垂直的。
在一些实施例中,可以应用限制来减少CCSAO所需的线缓冲器,并且简化边界处理条件检查,如图16中所解释的。图23示出了根据本公开的一些实施方式使用有限数量的亮度候选进行分类的限制。图23(a)显示了仅使用6个亮度候选进行分类的限制。图23(b)显示了仅使用4个亮度候选进行分类的限制。
在一些实施例中,应用区域被实施。CCSAO应用区域单元可以是基于CTB的。即开/关控制、CCSAO参数(偏移、亮度候选位置、band_num、比特掩码等用于分类,偏移集索引)在一个CTB中是相同的。
在一些实施例中,应用区域可以不与CTB边界对齐。例如,应用区域未与色度CTB边界对齐,而是发生了移位。语法(开/关控制、CCSAO参数)仍然针对每个CTB用信号通知,但真正的应用区域未与CTB边界对齐。图24示出根据本公开的一些实施方式的CCSAO应用区域未对准CTB/CTU边界2406。例如,应用区域未与色度CTB/CTU边界2406对齐,但左上角移位(4,4)个样点与VB 2408对齐。这种未对齐的CTB边界设计有利于去块过程,因为相同的去块参数用于每个8x8去块处理区域。
在一些实施例中,CCSAO应用区域单元(掩码大小)可以是变化的(大于或小于CTB尺寸),如表24中所示。掩码大小对于不同的分量可以是不同的。可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别切换掩码大小。例如,在PH中,用信号通知一系列掩码开/关标志和偏移集索引以指示每个CCSAO区域信息。
POC 分量 CTB大小 掩码大小
0 Cb 64x64 128x128
0 Cr 64x64 32x32
1 Cb 64x64 16x16
1 Cr 64x64 256x256
表24:CCSAO应用区域单元(掩码大小)可以是变体
在一些实施例中,CCSAO应用区域帧分区可以是固定的。例如,将帧划分为N个区域。图25示出了根据本公开的一些实施方式,CCSAO应用区域帧分区可以用CCSAO参数来固定。
在一些实施例中,每个区域可以具有其自己的区域开/关控制标志和CCSAO参数。此外,如果区域大小大于CTB大小,它可以具有CTB开/关控制标志和区域开/关控制标志两者。图25(a)和(b)显示了将帧分割为N个区域的一些示例。图25(a)显示了4个区域的垂直分割。图25(b)显示了4个区域的正方形分割。在一些实施例中,类似于图片级CTB全开控制标志(ph_cc_sao_cb_ctb_control_flag/ph_cc_sao_cr_ctb_control_flag),如果区域开/关控制标志关闭,则CTB开/关标志可被进一步用信号通知。否则,CCSAO将应用于该区域中的所有CTB,而无需进一步用信号通知CTB标志。
在一些实施例中,不同的CCSAO应用区域可以共享相同的区域开/关控制和CCSAO参数。例如,在图25(c)中,区域0~2共享相同的参数,区域3~15共享相同的参数。图25(c)还显示了区域开/关控制标志和CCSAO参数可以以希尔伯特扫描顺序用信号通知。
在一些实施例中,CCSAO应用区域单元可以是从图片/条带/CTB级别分割的四叉树/二叉树/三叉树。与CTB分割类似,用信号通知一系列分割标志以指示CCSAO应用区域分区。图26示出根据本公开的一些实施方式,CCSAO应用区域可以是从帧/条带/CTB级别分割的二叉树(BT)/四叉树(QT)/三叉树(TT)。
图27是说明根据本公开的一些实施方式的在图片帧内的不同级别处使用和切换的多个分类器的框图。在一些实施例中,如果在一帧中使用多个分类器,则可以在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别切换如何应用分类器集合索引的方法。例如,在一个帧中使用四个分类器集合,在PH中切换,如下表25所示。图27(a)和(c)显示默认的固定区域分类器。图27(b)显示分类器集合索引被在掩码/CTB级别发信号通知,其中0表示此CTB的CCSAO关闭,1~4表示集合索引。
POC
0 正方形分区4个区域(与帧QT分割到最大深度1相同)(a)
1 CTB级别切换分类器(b)
2 垂直分区4个区域(c)
3 帧QT分割到最大深度2
表25:一个帧中使用四个分类器集合,在PH中切换
在一些实施例中,对于默认区域情况,如果该区域中的CTB不使用默认集合索引(例如,区域级别标志为0),但使用该帧中的其他分类器集合,则可以用信号通知区域级别标志。例如,如果使用默认集合索引,则区域级别标志为1。例如,在方形分区4个区域中,使用以下分类器集合,如下表26-1所示,
POC 区域 标志 使用默认集合索引
0 1 1 使用默认集合:1
2 1 使用默认集合:2
3 1 使用默认集合:3
4 0 使用默认集合1至4
表26-1:可以发信号通知区域级别标志以显示该区域中的CTB是否不使用默认集合索引
图28是说明根据本公开的一些实施方式的CCSAO应用区域分区可以是动态的并且在图像级别上切换的框图。例如,图28(a)显示在该POC中使用了3个CCSAO偏移集(set_num=3),因此图片帧被垂直划分为3个区域。图28(b)显示在该POC中使用了4个CCSAO偏移集(set_num=4),因此图片帧被水平划分为4个区域。图28(c)显示在该POC中使用了3个CCSAO偏移集(set_num=3),因此图片帧被光栅划分为3个区域。每个区域都可以有自己的区域全部开启标志,以保存每个CTB开/关控制比特。区域的数量取决于用信号通知的图片set_num。CCSAO应用区域可以是根据块内的编码信息(样点位置、样点编码模式、环路滤波器参数等)的特定区域。例如,1)CCSAO应用区域只能在样点被跳跃模式编码时应用,或2)CCSAO应用区域仅包含沿CTU边界的N个样点,或3)CCSAO应用区域仅包含帧中的8x8网格上的样点,或4)CCSAO应用区域仅包含DBF滤波样点,或5)CCSAO应用区域仅包含CU中的顶部M和左侧N行,或(6)CCSAO应用区域仅包含帧内编码样点,或(7)CCSAO应用区域仅包含cbf=0块中的样点,或(8)CCSAO应用区域仅在[N,M]中具有块QP的块上,其中(N,M)可以是预定义的或在SPS/APS/PPS/PH/SH/区域/CTU/CU/子块/样点级别用信号通知。也可以考虑跨分量编码信息,(9)CCSAO应用区域在色度样点上,其同位亮度样点在cbf=0块中。
在一些实施例中,是否引入编码信息应用区域限制可以是预定义的或在SPS/APS/PPS/PH/SH/区域(每个替代集合)/CTU/CU/子块/样点级别中单选一个控制标志以指示在CCSAO应用程序中是否包含/排除指定的编码信息。解码器根据预定义条件或控制标志跳过那些区域的CCSAO处理。例如,YUV使用不同的预定义/标志控制条件,这些条件在区域(集合)级别切换。CCSAO应用判断可以在CU/TU/PU或者样点级别。
表26-2:YUV使用在区域(集合)级别切换的不同预定义/标志控制条件
另一个示例是重用全部或部分双边启用约束(预定义)。
bool isInter=(currCU.predMode==MODE_INTER)?true:false;
if(ccSaoParams.ctuOn[ctuRsAddr]
&&((TU::getCbf(currTU,COMPONENT_Y)||isInter==false)&&(currTU.cu->qp>17))
&&(128>std::max(currTU.lumaSize().width,currTU.lumaSize().height))
&&((isInter==false)||(32>std::min(currTU.lumaSize().width,currTU.lumaSize().height))))
在一些实施例中,排除一些特定区域可能有益于CCSAO统计收集。偏移推导可能更精确或适合于那些真正需要校正的区域。例如,cbf=0的块通常意味着块被完美预测,可能不需要进一步校正。排除这些区块可能有利于其他区域的偏移推导。
不同的应用区域可以使用不同的分类器。例如,在CTU中,跳跃模式使用C1,8x8网格使用C2,跳跃模式和8x8网格使用C3。例如,在CTU中,跳跃模式编码样点使用C1,CU中心的样点使用C2,在CU中心跳跃模式编码的样点使用C3。图29是说明根据本公开的一些实施方式的CCSAO分类器可以考虑当前或跨分量编码信息的图。例如,不同的编码模式/参数/样点位置可以形成不同的分类器。可以组合不同的编码信息以形成联合分类器。不同的区域可以使用不同的分类器。图29还示出应用区域的另一示例。
在一些实施例中,预定义或标记控制“编码信息排除区域”机制可用于DBF/Pre-SAO/SAO/BIF/CCSAO/ALF/CCALF/NN环路滤波器(NNLF),或其他环路滤波器。
在一些实施例中,实施的CCSAO语法在下表27中示出。在一些示例中,可以改变每个语法元素的二进制化。在AVS3中,术语补块类似于条带,补块标头类似于条带头。FLC代表固定长度码。TU代表截断的一元码。EGK代表k阶指数哥伦布码,其中k可以固定。SVLC代表带符号的EG0。UVLC代表无符号的EG0。
/>
/>
表27:示例性CCSAO语法
如果较高级别的标志为关闭,则可以从标志的关闭状态推断出较低级别的标志并且不需要用信号通知。例如,如果在该图片中ph_cc_sao_cb_flag为假,则ph_cc_sao_cb_band_num_minus1、ph_cc_sao_cb_luma_type、cc_sao_cb_offset_sign_flag、cc_sao_cb_offset_abs、ctb_cc_sao_cb_flag、cc_sao_cb_merge_left_flag和cc_sao_cb_merge_up_flag不存在且推断为假。
在一些实施例中,SPS ccsao_enabled_flag以SPS SAO启用标志为条件,如下表28所示。
表28:SPS ccsao_enabled_flag以SPS SAO启用标志为条件
在一些实施例中,ph_cc_sao_cb_ctb_control_flag、ph_cc_sao_cr_ctb_control_flag指示是否启用Cb/Cr CTB开/关控制粒度。如果启用了ph_cc_sao_cb_ctb_control_flag和ph_cc_sao_cr_ctb_control_flag,则可以进一步用信号通知ctb_cc_sao_cb_flag和ctb_cc_sao_cr_flag。否则,是否在当前图片中应用CCSAO取决于ph_cc_sao_cb_flag、ph_cc_sao_cr_flag,而无需在CTB级别进一步用信号通知ctb_cc_sao_cb_flag和ctb_cc_sao_cr_flag。
在一些实施例中,对于ph_cc_sao_cb_type和ph_cc_sao_cr_type,可以进一步用信号通知标志以区分是否使用中心同位的亮度位置(图10中的Y0位置)用于色度样点的分类,以减少比特开销。类似地,如果cc_sao_cb_type和cc_sao_cr_type在CTB级别用信号通知,则可以使用相同的机制进一步用信号通知标志。例如,如果C0亮度位置候选的数量是9,则cc_sao_cb_type0_flag被进一步用信号通知以区分是否使用中心同位的亮度位置,如下面的表29所示。如果未使用中心同位的亮度位置,则使用cc_sao_cb_type_idc指示使用剩余8个相邻亮度位置中的哪一个。
表29:用信号通知cc_sao_cb_type0_flag以区分是否使用中心同位的亮度位置
下表30示出了在帧中使用单个(set_num=1)或多个(set_num>1)分类器的AVS中的示例。
请注意,语法符号可以映射到上面使用的符号。
/>
表30:AVS中在图片帧中使用单个(set_num=1)或复数个(set_num>1)分类器的示例
如果结合图25或图27,其中每个区域都有其自己的集合,语法示例可以包括如下表31所示的区域开/关控制标志(picture_ccsao_lcu_control_flag[compIdx][setIdx])。
表31:每个区域都有自己的集合,语法示例可以包括区域开/关控制标志
(picture_ccsao_lcu_control_flag[compIdx][setIdx])
在一些实施例中,对于高级语法,可以添加pps_ccsao_info_in_ph_flag和gci_no_sao_constraint_flag。
在一些实施例中,pps_ccsao_info_in_ph_flag等于1指定CCSAO滤波器信息可以存在于PH语法结构中并且不存在于引用不包含PH语法结构的PPS的条带头中。pps_ccsao_info_in_ph_flag等于0指定CCSAO滤波器信息不存在于PH语法结构中,并且可以存在于引用PPS的条带头中。当不存在时,pps_ccsao_info_in_ph_flag的值被推断为等于0。
在一些实施例中,gci_no_ccsao_constraint_flag等于1指定OlsInScope中所有图片的sps_ccsao_enabled_flag应等于0。gci_no_ccsao_constraint_flag等于0不强加这样的约束。在一些实施例中,视频的比特流根据规则包括一个或多个输出层集(OLS)。在此处的示例中,OlsInScope指的是范围内的一个或多个OLS。在一些示例中,profile_tier_level()语法结构提供级别信息,并且可选地提供简档、层次(tier)、子简档和OlsInScope符合的一般约束信息。当VPS中包含profile_tier_level()语法结构时,OlsInScope是由VPS指定的一个或多个OLS。当profile_tier_level()语法结构包含在SPS中时,OlsInScope是仅包括引用SPS的层中作为最低层的层的OLS,并且该最低层是独立层。
在一些实施例中,下文进一步说明对帧内和帧间预测后SAO滤波器的扩展。在一些实施例中,本公开中公开的SAO分类方法(包括跨分量样点/编码信息分类)可以用作为预测后滤波器,预测可以是帧内、帧间或其他预测工具,例如Intra Block Copy。图30是说明根据本公开的一些实施方式的本公开中公开的SAO分类方法用作为预测后滤波器的框图。
在一些实施例中,对于每个Y、U和V分量,选择对应的分类器。并且对于每个分量预测样点,首先进行分类,并加上对应的偏移。例如,每个分量都可以使用当前样点和相邻样点进行分类。Y使用当前Y和相邻Y样点,U/V使用当前U/V样点进行分类,如下表32所示。图31是说明根据本公开的一些实施方式的对于预测后SAO滤波器,每个分量可以使用当前样点和相邻样点进行分类的框图。
表32:为每个Y、U和V分量选择对应的分类器
在一些实施例中,细化的预测样点(Ypred'、Upred'、Vpred')通过添加对应的类偏移来更新并且之后用于帧内预测、帧间预测或其他预测。
Ypred’=clip3(0,(1<<bit_depth)-1,Ypred+h_Y[i])
Upred’=clip3(0,(1<<bit_depth)-1,Upred+h_U[i])
Vpred’=clip3(0,(1<<bit_depth)-1,Vpred+h_V[i])
在一些实施例中,对于色度U和V分量,除了当前色度分量之外,跨分量(Y)可以用于进一步的偏移分类。额外的跨分量偏移(h’_U,h’_V)可以添加到当前分量偏移(h_U,h_V)上,例如,如下表33所示。
/>
表33:对于色度U和V分量,除了当前色度分量,跨分量(Y)可以用于进一步偏移分类
在一些实施例中,细化的预测样点(Upred”、Vpred”)通过添加对应的类偏移来更新并且用于之后的帧内预测、帧间预测或其他预测。
Upred”=clip3(0,(1<<bit_depth)-1,Upred’+h’_U[i])
Vpred”=clip3(0,(1<<bit_depth)-1,Vpred’+h’_V[i])
在一些实施例中,帧内预测和帧间预测可以使用不同的SAO滤波器偏移。
图32是示出根据本公开的一些实施方式的本公开中公开的SAO分类方法用作重建后滤波器的框图。
在一些实施例中,本文公开的SAO/CCSAO分类方法(包括跨分量样点/编码信息分类)可以用作为应用于树单元(TU)的重建样点的滤波器。如图32所示,CCSAO可以用作为重建后滤波器,即,使用重建样点(在预测/残差样点添加之后,去块之前)作为分类的输入,在进入相邻帧内/帧间预测之前补偿亮度/色度样点。CCSAO重建后滤波器可以减少当前TU样点的失真,并且可以为相邻的帧内/帧间块提供更好的预测。通过更精确的预测可以预期更好的压缩效率。
图33是说明根据本公开的一些实施方式的使用跨分量相关来解码视频信号的示例性过程3300的流程图。
在一个方面,视频解码器30(如图3所示)从视频信号接收包括第一分量和第二分量的图片帧(3310)。
视频解码器30根据相对于第二分量的相应样点的第一分量的同位样点或第二分量的当前样点的边缘方向和一个或多个边缘强度来确定针对第二分量的相应样点的分类器(3320)。在一些实施例中,根据边缘方向和一个或多个边缘强度确定第二分量的相应样点的分类器(3320)包括:选择穿过同位样点或当前样点的边缘方向(3320-1);定位同位样点或当前样点的第一相邻样点和第二相邻样点(3320-2);通过确定来自由同位或当前样点、第一相邻样点和第二相邻样点组成的组中的两个样点的值之间的差来计算第一边缘强度(3320-3);根据M-1个阈值T(1)、…T(M-1)将第一边缘强度量化为M个分段,其中M为正整数(3320-4);以及基于M个分段来确定分类器(3320-5)。
视频解码器30根据分类器来确定针对第二分量的相应样点的样点偏移(3330)。
视频解码器30基于所确定的样点偏移来修改第二分量的相应样点(3340)。
在一些实施例中,第一分量是选自由亮度分量、第一色度分量和第二色度分量组成的组中的一个,并且第二分量是选自由亮度分量、第一色度分量和第二色度分量组成的组中的一个。
在一些实施例中,基于M个分段确定分类器(3320-5)包括使用与M个分段相对应的M个类来确定分类器。
在一些实施例中,根据M-1个阈值T(1),…T(M-1)将第一边缘强度量化成M个分段(3320-4)包括将第一边缘强度量化成分段[-2b+1,T(1)),[T(1)),T(2)),…[T(M-1),2b-1],其中第一边缘强度的范围为[-2b+1,[2b-1],并且b是视频信号的序列比特深度。“[”或“]”表示边界值,例如T(1),包含在特定分段内,例如[T(1),T(2)),以及“(”或“)”表示边界值,例如T(2),不包括在特定分段内,例如[T(1),T(2))。
在一些实施例中,来自由同位样点或当前样点、第一相邻样点和第二相邻样点组成的组的两个样点是同位样点或当前样点和第一相邻样点。在一些实施例中,根据边缘方向和一个或多个边缘强度确定第二分量的相应样点的分类器(3320)进一步包括:通过确定同位样点或当前样点的值与第二相邻样点之间的差来计算第二边缘强度;根据N-1个阈值T(1)、…T(N-1)将第二边缘强度量化为N个分段,其中N为正整数;并附加地基于N个分段确定分类器。
在一些实施例中,附加地基于N个分段确定分类器包括:使用与组合的MxN分段相对应的MxN个类来确定分类器。
在一些实施例中,M不等于N或M等于N。
在一些实施例中,阈值T(1)、…T(M-1)以0为对称中心对称地分布。
在一些实施例中,来自由同位样点或当前样点、第一相邻样点和第二相邻样点组成的组的两个样点是第一相邻样点和第二相邻样点。
在一些实施例中,选择穿过同位样点或当前样点的边缘方向(3320-1)包括:从由处于0度、22.5度、45度、67.5度、90度、112.5度和135度的边缘方向组成的组中选择边缘方向。
在一些实施例中,边缘方向、M-1个阈值、第一相邻样点距同位样点或当前样点的样点距离、以及第二相邻样点距同位样点或当前样点的样点距离以序列参数集(SPS)、适应参数集(APS)、图片参数集(PPS)、图片头(PH)、条带头(SH)、区域、编码树单元(CTU)、编码单位(CU)、子块和样点级别中的一项或多项来预定义或用信号通知。
在一些实施例中,确定第二分量的相应样点的分类器(3320)另外根据带分类器,其中带分类器通过以下方式确定:利用基于来自相对于第二分量的相应样点的第一分量的同位样点和相邻样点以及第二分量的当前样点和相邻样点中的一个或多个样点的样点值;将样点值的范围划分为多个带;以及基于样点值的强度值来选择带。
图34示出了与用户接口3450耦合的计算环境3410。计算环境3410可以是数据处理服务器的一部分。计算环境3410包括处理器3420、存储器3430和输入/输出(I/O)接口3440。
处理器3420通常控制计算环境3410的整体操作,例如与显示、数据采集、数据通信和图像处理相关联的操作。处理器3420可以包括一个或多个处理器来执行指令以执行上述方法中的所有或一些步骤。此外,处理器3420可包括促进处理器3420与其他组件之间的交互的一个或多个模块。处理器可以是中央处理单元(CPU)、微处理器、单片机、图形处理单元(GPU)等。
存储器3430被配置为存储各种类型的数据以支持计算环境3410的操作。存储器3430可以包括预定软件3432。此类数据的示例包括用于在计算环境3410上操作的任何应用程序或方法的指令、视频数据集、图像数据等。存储器3430可以通过使用任何类型的易失性或非易失性存储器设备或其组合来实现,例如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、闪存、磁盘或光盘。
I/O接口3440提供处理器3420和外围接口模块之间的接口,例如键盘、点击轮、按钮等。这些按钮可以包括但不限于主页按钮、开始扫描按钮和停止扫描按钮。I/O接口3440可以与编码器和解码器耦合。
在一个实施例中,还提供了一种非暂时性计算机可读存储介质,包括多个程序,例如,在存储器3430中,可由计算环境3410中的处理器3420执行,用于执行上述方法。备选地,非暂时性计算机可读存储介质可以已经在其中存储了比特流或数据流,该比特流或数据流包括由编码器(例如,图2中的视频编码器20)使用例如上述编码方法生成以供解码器(例如,图3中的视频解码器30)在解码视频数据时使用的编码视频信息(例如,包括一个或多个语法元素的视频信息)。非暂时性计算机可读存储介质可以是例如ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘、光数据存储设备等。
在一个实施例中,还提供了一种计算设备,包括一个或多个处理器(例如,处理器3420);以及其中存储有多个可由一个或多个处理器执行的程序的非暂时性计算机可读存储介质或存储器3430,其中该一个或多个处理器在执行多个程序时被配置为执行上述方法。
在一个实施例中,还提供了一种计算机程序产品,包括多个程序,例如,在存储器3430中,可由计算环境3410中的处理器3420执行,用于执行上述方法。例如,计算机程序产品可以包括非暂时性计算机可读存储介质。
在一个实施例中,计算环境3410可以用一个或多个ASIC、DSP、数字信号处理设备(DSPD)、可编程逻辑设备(PLD)、FPGA、GPU、控制器、微控制器、微处理器或其他电子元件来实现,用于执行上述方法。
进一步的实施例还包括在各种其他实施例中组合或以其他方式重新布置的上述实施例的各种子集。
在一个或多个示例中,所描述的功能可以以硬件、软件、固件或它们的任意组合来实现。如果以软件实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或通过其传输,并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质,或通信介质,包括有助于例如根据通信协议将计算机程序从一个地方传输到另一个地方的任何介质。以此方式,计算机可读介质一般可对应于(1)非暂时性的有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是任何可用介质,其可以被一台或多台计算机或一个或多个处理器访问以检索指令、代码和/或数据结构以实现本申请中描述的实施方式。计算机程序产品可以包括计算机可读介质。
本公开的描述是为了说明的目的而呈现的,并且不旨在是穷举的或限制本公开。对于受益于前述描述和相关附图中呈现的教导的本领域普通技术人员来说,许多修改、变化和替代实施方式将是显而易见的。
除非另有明确说明,根据本公开的方法的步骤的顺序仅旨在是示例性的,根据本公开的方法的步骤不限于上面具体描述的顺序,而是可以根据实际情况进行更改。另外,根据本公开的方法的至少其中一个步骤可以根据实际需要进行调整、组合或删除。
选择和描述示例是为了解释本公开的原理并使本领域的其他技术人员能够理解本公开的各种实施方式,并最好地利用基本原理和具有适合于预期的特定用途的各种修改的各种实施方式。因此,应当理解,本公开的范围不限于所公开的实施方式的具体示例,并且修改和其他实施方式旨在被包括在本公开的范围内。

Claims (15)

1.一种对视频信号进行解码的方法,包括:
从所述视频信号接收包括第一分量和第二分量的图片帧;
根据相对于所述第二分量的相应样点的所述第一分量的同位样点或所述第二分量的当前样点的边缘方向和一个或多个边缘强度,来确定针对所述第二分量的所述相应样点的分类器;
根据所述分类器来确定针对所述第二分量的所述相应样点的样点偏移;以及
基于所确定的样点偏移来修改所述第二分量的所述相应样点;
其中,根据所述边缘方向和所述一个或多个边缘强度来确定针对所述第二分量的所述相应样点的分类器包括:
选择穿过所述同位样点或所述当前样点的所述边缘方向;
定位所述同位样点或所述当前样点的第一相邻样点和第二相邻样点;
通过确定来自由所述同位样点或所述当前样点、所述第一相邻样点和所述第二相邻样点组成的组中的两个样点的值之间的差来计算第一边缘强度;
根据M-1个阈值T(1)、…T(M-1)将所述第一边缘强度量化为M个分段,其中M为正整数;以及
基于所述M个分段来确定所述分类器。
2.根据权利要求1所述的方法,其中,
所述第一分量是选自由亮度分量、第一色度分量和第二色度分量组成的组中的一个,并且
所述第二分量是选自由所述亮度分量、所述第一色度分量和所述第二色度分量组成的组中的一个。
3.根据权利要求1所述的方法,其中,基于所述M个分段来确定所述分类器包括:使用与所述M个分段相对应的M个类来确定所述分类器。
4.根据权利要求1所述的方法,其中,根据M-1个阈值T(1)、…T(M-1)将所述第一边缘强度量化为M个分段包括:将所述第一边缘强度量化为分段[-2b+1,T(1)),[T(1),T(2)),…[T(M-1),2b-1],其中所述第一边缘强度的范围为[-2b+1,2b-1],并且b是所述视频信号的序列比特深度。
5.根据权利要求1所述的方法,其中,来自由所述同位样点或所述当前样点、所述第一相邻样点和所述第二相邻样点组成的组的所述两个样点是所述同位样点或所述当前样点和所述第一相邻样点,
其中,根据所述边缘方向和所述一个或多个边缘强度来确定针对所述第二分量的所述相应样点的分类器还包括:
通过确定所述同位样点或所述当前样点的值与所述第二相邻样点的值之间的差来计算第二边缘强度;
根据N-1个阈值T(1)、…T(N-1)将所述第二边缘强度量化为N个分段,其中,N为正整数;以及
附加地基于所述N个分段来确定所述分类器。
6.根据权利要求5所述的方法,其中,附加地基于所述N个分段来确定所述分类器包括:使用与组合的M×N个分段相对应的M×N个类来确定所述分类器。
7.根据权利要求5所述的方法,其中,M不等于N或者M等于N。
8.根据权利要求1所述的方法,其中,所述阈值T(1)、…T(M-1)以0为对称中心对称地分布。
9.根据权利要求1所述的方法,其中,来自由所述同位样点或所述当前样点、所述第一相邻样点和所述第二相邻样点组成的组的所述两个样点是所述第一相邻样点和所述第二相邻样点。
10.根据权利要求1所述的方法,其中,选择穿过所述同位样点或当前样点的边缘方向包括:从由处于0度、22.5度、45度、67.5度、90度、112.5度和135度的边缘方向组成的组中选择所述边缘方向。
11.根据权利要求1所述的方法,其中,所述边缘方向、所述M-1个阈值、所述第一相邻样点距所述同位样点或所述当前样点的样点距离、以及所述第二相邻样点距所述同位样点或所述当前样点的样点距离是预定义的,或是在序列参数集(SPS)、适应参数集(APS)、图片参数集(PPS)、图片头(PH)、条带头(SH)、区域、编码树单元(CTU)、编码单元(CU)、子块和样点级别中的一个或多个中用信号通知的。
12.根据权利要求1或权利要求5所述的方法,其中,附加地根据带分类器来确定针对所述第二分量的相应样点的分类器,其中,所述带分类器通过以下方式确定:利用基于一个或多个样点的样点值,所述一个或多个样点来自相对于所述第二分量的相应样点的所述第一分量的同位样点和相邻样点以及所述第二分量的当前样点和相邻样点;将所述样点值的范围划分为多个带;以及基于所述样点值的强度值来选择带。
13.一种电子装置,包括:
一个或多个处理单元;
存储器,所述存储器耦合到所述一个或多个处理单元;以及
存储在所述存储器中的多个程序,当所述多个程序被所述一个或多个处理单元执行时,使所述电子装置执行根据权利要求1至12中的任一项所述的方法。
14.一种非暂时性计算机可读存储介质,其中存储有比特流,所述比特流包括指令,所述指令当被执行时使解码装置执行根据权利要求1至12中的任一项所述的对所述视频信号进行解码的方法。
15.一种非暂时性计算机可读存储介质,所述非暂时性计算机可读存储介质存储有用于由具有一个或多个处理单元的电子装置执行的多个程序,其中,所述多个程序当由所述一个或多个处理单元执行时使所述电子装置执行根据权利要求1至12中的任一项所述的方法。
CN202280060815.1A 2021-09-08 2022-09-07 跨分量样点自适应偏移中的编解码增强 Pending CN117917074A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/241,917 2021-09-08
US202163248895P 2021-09-27 2021-09-27
US63/248,895 2021-09-27
PCT/US2022/042746 WO2023038964A1 (en) 2021-09-08 2022-09-07 Coding enhancement in cross-component sample adaptive offset

Publications (1)

Publication Number Publication Date
CN117917074A true CN117917074A (zh) 2024-04-19

Family

ID=90695051

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280060815.1A Pending CN117917074A (zh) 2021-09-08 2022-09-07 跨分量样点自适应偏移中的编解码增强

Country Status (1)

Country Link
CN (1) CN117917074A (zh)

Similar Documents

Publication Publication Date Title
WO2022178424A1 (en) Coding enhancement cross-component sample adaptive offset
CN116325734A (zh) 具有虚拟边界的跨分量样点自适应偏移中的色度编解码增强
US20240007652A1 (en) Coding enhancement in cross-component sample adaptive offset
CN115989675A (zh) 交叉分量样本自适应偏移中的色度编码增强
US20230336785A1 (en) Coding enhancement in cross-component sample adaptive offset
US20230319315A1 (en) Coding enhancement in cross-component sample adaptive offset
WO2022164757A1 (en) Chroma coding enhancement in cross-component sample adaptive offset
CN117917074A (zh) 跨分量样点自适应偏移中的编解码增强
US20240137546A1 (en) Coding enhancement in cross-component sample adaptive offset
CN117795957A (zh) 跨分量样点自适应偏移中的编解码增强
CN117769834A (zh) 跨分量样点自适应偏移中的编解码增强
CN117413516A (zh) 跨分量样本自适应偏移中的编解码增强
WO2023038964A1 (en) Coding enhancement in cross-component sample adaptive offset
CN117296315A (zh) 跨分量样点自适应偏移中的编解码增强
WO2023091729A1 (en) Cross-component sample adaptive offset
CN116965017A (zh) 在跨分量样点自适应偏移中的色度编解码增强
CN116671105A (zh) 具有虚拟边界的跨分量样点自适应偏移中的色度编解码增强
CN116569551A (zh) 交叉分量样本自适应偏移中的色度编码增强
WO2023097064A1 (en) Cross-component sample adaptive offset
CN117859325A (zh) 用于视频编解码的自适应双边滤波

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication