CN105230021A - 屏幕内容的词典编码和解码 - Google Patents
屏幕内容的词典编码和解码 Download PDFInfo
- Publication number
- CN105230021A CN105230021A CN201480029702.0A CN201480029702A CN105230021A CN 105230021 A CN105230021 A CN 105230021A CN 201480029702 A CN201480029702 A CN 201480029702A CN 105230021 A CN105230021 A CN 105230021A
- Authority
- CN
- China
- Prior art keywords
- pixel value
- value
- dictionary
- decoding
- length
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3068—Precoding preceding compression, e.g. Burrows-Wheeler transformation
- H03M7/3071—Prediction
- H03M7/3075—Space
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3088—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
提供了用于使用词典模式来编码和/或解码视频和/或图像内容的方法和设备。例如,该方法和设备从存储在1-D词典中的先前像素值中预测当前像素值。该方法和设备使用伪2-D词典模式从先前像素值中预测当前像素值。还有,该方法和设备使用伪2-D词典模式来预测当前像素值。还有,该方法和设备使用帧间伪2-D词典模式从参考图片中的先前像素值中预测当前像素值。像素值可从(例如存储在词典中的)用偏移和长度标识的先前像素值中预测。还有,该方法和设备使用像素值的散列匹配来编码像素值。
Description
背景
工程师使用压缩(也叫做源编码(sourcecoding或sourceencoding))来降低数字视频的比特率。压缩通过将视频信息转换成较低比特率的形式来降低存储和传送该信息的成本。解压(也被称为解码)从压缩的形式中重构一种版本的原始信息。“编解码器”是编码器/解码器***。
在过去的二十年中,已采用了各种视频编解码器标准,包括ITU-TH.261、H.262(MPEG-2或ISO/IEC13818-2)、H.263和H.264(MPEG-4AVC或ISO/IEC14496-10)标准、MPEG1(ISO/IEC11172-2)和MPEG-4可视(ISO/IEC14496-2)标准以及SMPTE421M标准。最近,HEVC标准(ITU-TH.265或ISO/IEC23008-2)已被批准。当前,正在开发(例如,针对可缩放视频编码/解码、针对在样本比特深度或色度采样率方面具有较高保真度的视频的编码/解码、或针对多视图编码/解码的)HEVC标准的扩展。视频编解码器标准通常定义针对经编码的视频比特流的句法的选项,从而详述当在编码和解码时使用特定特征时该比特流中的参数。在许多情况下,视频编解码器标准还提供关于解码器应当执行以在解码时取得一致的结果的解码操作的细节。除了编解码器标准外,各种专用编解码器格式定义针对经编码的视频比特流的句法的其他选项以及相应的解码操作。
对特定类型的内容(诸如屏幕内容)的编码和解码可存在来自编码正常视频内容的不同挑战。例如,屏幕内容可包括相似内容区域(例如,具有相同色彩或平滑梯度的大型图形区域)以及重复内容区域。使用正常视频编码技术来编码和解码这样的内容可产生以下结果:效率低下并且会(例如,通过产生压缩失真)降低质量。
概述
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
描述了用于改善视频和/或图像数据的编码和/或解码效率的技术。在一些创新中,一维(1-D)词典模式被用来使用存储在1-D词典中的先前像素值(例如,先前重构或先前解码的像素值)来编码和/或解码像素值。在1-D词典模式中,当前像素值可使用标识1-D词典内的位置的偏移和指示正被预测的像素值的数目的长度来预测(例如,被精确地预测,而无需任何残留值)。
在其他创新中,伪2-D词典模式被用来使用先前像素值(例如,先前重构或先前解码的像素值)来编码和/或解码像素值。在2-D词典模式中,当前像素值可使用X和Y偏移以及长度来预测(例如,被精确地预测,而无需任何残留值)。帧间伪2-D词典模式还可用于使用参考图片中的像素值(例如,通过X和Y偏移和从参考中的相应像素位置到当前图片中正被编码或解码的相应当前像素位置的长度被标识在参考图片内)来编码和/或解码像素值。
在其他创新,编码器计算针对先前编码的像素值(例如,针对每1个、2个、4个和8个像素值)的散列值。随后,通过创建当前像素值的散列并对这些散列值进行匹配来对照先前编码的像素值匹配正被编码的当前像素值。
本文中描述的技术可被应用来对屏幕内容进行编码。屏幕内容指代计算机生成的视频和/或图像内容(例如,文本、图形、和/或计算机生成的其他人工内容)。屏幕内容的示例是计算机桌面图形用户界面的图像,包括文本、图标、菜单、窗口和/或其他计算机文本和图形。本文中描述的技术也可被应用于除屏幕内容以外的内容。
参考附图阅读以下详细描述,将更清楚本发明的前述和其他目标、特征和优点。
附图简述
图1是其中可实现所描述的一些实施例的示例计算***的示图。
图2a和2b是其中可实现所描述的一些实施例的示例网络环境的示图。
图3是结合其可实现所描述的一些实施例的示例编码器***的示图。
图4是结合其可实现所描述的一些实施例的示例解码器***的示图。
图5a和5b是示出结合其可实现所描述的一些实施例的示例视频编码器的示图。
图6是示出结合其可实现所描述的一些实施例的示例视频解码器的示图。
图7是示出使用1-D词典模式来编码像素值块的示例的示图。
图8是示出使用1-D词典模式来解码像素值块的示例的示图。
图9是用于使用词典模式来解码像素值的示例方法的流程图。
图10是用于使用1-D词典模式来解码像素值的示例方法的流程图。
图11是用于使用词典模式来编码像素值的示例方法的流程图。
详细描述
该详细描述呈现了在编码和/或解码期间对词典模式的使用中的创新。具体地,该详细描述呈现了针对使用1-D词典模式、伪2-D词典模式和/或帧间伪2-D词典模式来编码和/或解码数字视频和/或图像内容(例如,诸如屏幕内容之类的视频内容)的创新。例如,各种1-D、伪2-D和帧间伪2-D词典模式可被应用来基于存储在词典(例如1-D词典)中或存储在其他位置中(例如,存储在经重构的图片中)的先前编码或解码的(例如,经重构的)像素值(例如,视频图片中的像素值)来编码和/或解码视频内容中(例如,该视频图片中)的像素值。
描述了用于改善对视频和/或图像数据的编码和/或解码的效率的技术。在一些创新中,词典模式被用来使用存储在词典中或另一位置中的先前像素值(例如,先前重构或先前解码的像素值)来对像素值进行编码和/或解码。在词典模式中,当前像素值可使用标识在先前像素值内(例如在词典中)的位置的偏移和指示正被预测的像素值的数目的长度来预测(例如,被精确地预测,而无需任何残留值)。无损预测可通过完全从先前像素值预测像素值来执行。
这些创新中的一些改善了编码和/或解码数字图片内容(例如,图像内容和/或视频内容)的效率。例如,词典编码模式可被应用来降低编码数字图片内容所需的比特。在屏幕内容正被编码和/或解码的情况下,各种1-D、伪2-D和帧间伪2-D词典编码模式可被应用来降低编码复杂性和/或编码该内容所需的比特数。在其他创新中,对数字图片内容的编码可通过以下该改善:计算各像素群组(例如,1个像素、2个像素、4个像素、8个像素并以此类推)的散列值并匹配散列值以标识出供用来预测正被编码的当前像素值(例如,供用来使用文本中描述的各种词典模式来进行编码)的匹配散列值。
本文中描述的技术可被应用来对屏幕内容进行编码。屏幕内容指代计算机生成的视频和/或图像内容(例如,文本、图形、和/或计算机生成的其他人工内容)。屏幕内容的示例是计算机桌面图形用户界面的图像,包括文本、图标、菜单、窗口和/或其他计算机文本和图形。本文中描述的技术也可被应用于除屏幕内容以外的内容(例如,其他类型的数字视频和/或图像内容)。
虽然本文中描述的操作是被适当描述为由视频编码器或视频解码器来执行,但在许多情况中,这些操作可由另一类型的媒体处理工具(例如数字图像或数字图片编码器、数字图像或数字图片解码器)来执行。
本文中描述的一些创新是参考专用于HEVC标准的句法元素和操作来示出的。例如,对HEVC标准的草稿版本JCTVC-N1005—即2013年7月的“高效视频编码(HEVC)范围扩展文本规范:第4稿”作出参考。本文中描述的各创新还可以被实现为针对其它标准或格式。
更一般地,本文中描述的各示例的各种替代是可能的。例如,本文中描述的一些方法可以通过改变描述的方法动作的顺序、通过拆分、重复或忽略某些方法动作等来更改。所公开的技术的各方面能够被组合地或分开地使用。不同的实施例使用所描述的创新中的一个或多个。本文中描述的一些创新解决了背景中指出的一个或多个问题。通常,所给出的技术/工具并不解决所有这些问题。
I.示例计算***
图1示出了其中可实现几个所描述的创新的合适计算***(100)的概括示例。计算***(100)并不旨对使用范围或功能提出任何限制,因为这些创新可以在不同的通用或专用计算***中实现。
参考图1,计算***(100)包括一个或多个处理单元(110、115)和存储器(120、125)。处理单元(110、115)执行计算机可执行指令。处理单元可以是通用中央处理单元(“CPU”)、专用集成电路(“ASIC”)中的处理器或任何其它类型的处理器。在多处理***中,多个处理单元执行计算机可执行指令以提高处理能力。例如,图1示出中央处理单元(110)以及图形处理单元或协处理单元(115)。有形存储器(120、125)可以是(诸)处理单元可访问的易失性存储器(例如,寄存器、高速缓存、RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或这两者的某一组合。存储器(120,125)存储实现针对1-D、伪2-D和/或帧间伪2-D词典模式编码的一个或多个创新的软件(180),该软件处于适用于由(诸)处理单元执行的计算机可执行指令的形式。
计算***可具有附加的特征。例如,计算***(100)包括存储(140)、一个或多个输入设备(150)、一个或多个输出设备(160)以及一个或多个通信连接(170)。诸如总线、控制器或网络之类的互连机制(未示出)将计算***(100)的各组件互连。通常,操作***软件(未示出)为在计算***(100)中执行的其它软件提供操作环境,并协调计算***(100)的各组件的活动。
有形存储(140)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、CD-ROM、DVD或可用于储存信息并可在计算***(100)内访问的任何其他介质。
存储(140)存储针对实现1-D、伪2-D和/或帧间伪2-D词典模式编码的一个或多个创新的软件(180)的指令。
(诸)输入设备(150)可以是触摸输入设备(诸如键盘、鼠标、笔或跟踪球)、语音输入设备、扫描设备或向计算***(100)提供输入的另一设备。对于视频,(诸)输入设备(150)可以是相机、视频卡、TV调谐卡、或接受模拟或数字形式的视频输入的类似设备、或将视频样本读到计算***(100)中的CD-ROM或CD-RW。(诸)输出设备(160)可以是显示器、打印机、扬声器、CD刻录机或提供来自计算***(100)的输出的另一设备。
(诸)通信连接(170)允许通过通信介质与另一计算实体通信。通信介质传达诸如计算机可执行指令、音频或视频输入或输出、或已调制数据信号中的其他数据之类的信息。已调制数据信号是使其一个或多个特征以在信号中编码信息的方式设置或改变的信号。作为示例而非限制,通信介质可以使用电的、光学的、RF或其它载体。
所公开的创新中的任一创新可被实现成计算机可执行指令或计算机呈现产品,其被存储在一个或多个计算机可读存储介质上并在计算设备(例如任何可用计算设备,包括智能电话或其他包括计算硬件的移动设备)上执行。计算机可读存储介质是在计算环境内可访问的任何可用的有形介质(例如,诸如DVD或CD之类的一个或多个光学介质盘、易失性存储器组件(诸如DRAM或SRAM)或非易失性存储器组件(诸如闪存或硬件驱动器))。作为示例并参考图1,计算机可读存储介质包括存储器1020和1025以及存储1040。术语计算机可读存储介质不包括信号和载波。此外,术语计算机可读存储介质不包括通信连接(例如,170)。
各创新可在计算机可执行指令(诸如包括在程序模块中的在目标现实或虚拟处理器上在计算***中执行的那些计算机可执行指令)的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。如各实施例中所描述的,这些程序模块的功能可以被组合,或者在这些程序模块之间拆分。针对各程序模块的计算机可执行指令可以在本地或分布式计算***中执行。
术语“***”和“设备”在本文中被互换地使用。除非上下文明确指示,否则,术语并不暗示对计算***或计算设备的类型的任何限制。一般来说,计算***或计算设备可以是本地的或分布式的,并且可以包括具有实现本文中描述的功能的软件的专用硬件和/或通用硬件的任意组合。
所公开的方法还可使用被配置成执行所公开的方法中的任一者的专用计算硬件来实现。例如,所公开的方法可以由被专门设计或配置成实现所公开的方法中的任一者的集成电路(例如,诸如ASIC数字信号处理单元(“DSP”)之类的ASIC、图形处理单元(“GPU”)、或诸如场可编程门阵列(“FPGA”)之类的可编程逻辑器件(“PLD”))来实现。
出于呈现的目的,本详细描述使用了如“确定”和“使用”等术语来描述计算***中的计算机操作。这些术语是对由计算机执行的操作的高级抽象,且不应与人类所执行的动作混淆。对应于这些术语的实际的计算机操作取决于实现而不同。
II.示例网络环境
图2a和2b示出了包括视频编码器(220)和视频解码器(270)的示例网络环境(201,202)。编码器(220)和解码器(270)使用合适的通信协议通过网络(250)连接。网络(250)可包括因特网或另一计算机网络。
在图2a所示的网络环境(201)中,每个实时通信(“RTC”)工具(210)都包括用于双向通信的编码器(220)和解码器(270)两者。给定的编码器(220)可以产生符合HEVC标准、SMPTE421M标准、ISO/IEC14496-10标准(也称为H.264或AVC)、另一标准、或专用格式的变型或扩展的输出,使得相应的解码器(270)接受来自编码器(220)的经编码的数据。双向通信可以是视频会议、视频电话呼叫或其它双方通信场景的部分。虽然,图2a中的网络环境(201)包括两个实时通信工具(210),但网络环境(201)可改为包括参与多方通信的三个或更多个实时通信工具(210)。
实时通信工具(210)管理编码器(220)作出的编码。图3示出可以被包括在实时通信工具(210)中的示例编码器***(300)。替换地,实时通信工具(210)使用另一编码器***。实时通信工具(210)还管理解码器(270)做出的解码。图4示出可以被包括在实时通信工具(210)中的示例解码器***(400)。替换地,实时通信工具(210)使用另一解码器***。
在图2b中示出的网络环境(202)中,编码工具(212)包括编码供递送给多个回放工具(214)的视频的编码器(220),此多个回放工具(214)包括解码器(270)。单向通信可被提供用于视频监视***、web相机监视***、远程桌面会议演示或在其中编码视频并将视频从一个位置发送到一个或多个其它位置的其它场景。虽然在图2b中的网络环境(202)包括两个回放工具(214),但该网络环境(202)可以包括更多或更少的回放工具(214)。一般来说,回放工具(214)与编码工具(212)通信以确定回放工具(214)要接收的视频流。回放工具(214)接收该流、缓冲所接收的经编码的数据达合适的时间段并开始解码和回放。
图3示出可以被包括在编码工具(212)中的示例编码器***(300)。替换地,编码工具(212)使用另一编码器***。编码工具(212)还可以包括用于管理与一个或多个回放工具(214)的连接的服务器侧控制器逻辑。图4示出可以被包括在回放工具(214)中的示例解码器***(400)。替换地,回放工具(214)使用另一解码器***。回放工具(214)还可以包括用于管理与一个或多个编码工具(212)的连接的客户机侧控制器逻辑。
III.示例编码器***
图3是结合其可实现所描述的一些实施例的示例编码器***(300)的框图。编码器***(300)可以是能够用多种编码模式中的任一者(诸如用于实时通信的低等待时间编码模式、转码模式和针对来自文件或流的媒体回放的常规编码模式)操作的通用编码工具,或它可以是适用于一种这样的编码模式的专用编码工具。编码器***(300)可以被实现为操作***模块、应用库的部分、独立的应用。总体上,编码器***(300)从视频源(310)接收源视频帧序列(311)并产生经编码的数据作为到信道(390)的输出。向该信道输出的经编码的数据可包括使用1-D、伪2-D和/或帧间伪2-D词典模式编码的内容。
视频源(310)可以是相机、调谐卡、存储介质、或其它数字视频源。视频源(310)以例如每秒30帧的帧速率产生视频帧序列。如本文中所使用的,术语“帧”一般指代源、经编码的或经重构的图像数据。对于逐行扫描视频,帧是逐行扫描视频帧。对于隔行视频,在各示例实施例中,隔行视频帧可以在编码之前被去隔行。替换地,两个示例性隔行视频场被编码成经隔行的视频帧或分开的场。除了指示逐行扫描视频帧之外,术语“帧”或“图片”可以指示单个非成对的视频场、互补的成对视频场、表示在给定时间的视频对象的视频对象平面、或较大图像中的感兴趣区域。视频对象平面或区域可以是包括场景的多个对象或区域的较大图像的一部分。
抵达的源帧(311)被存储在包括多个帧缓冲器存储区域(321、322、…、32n)的源帧临时存储器存储区域(320)中。帧缓冲器(321、322等)在源帧存储区域(320)中保持一个源帧。在一个或多个源帧(311)已被存储在帧缓冲器(321,322等)中后,帧选择器(330)周期性地从源帧存储区域(320)中选择一个体源帧。帧选择器(330)选择帧以供输入到编码器(340)的次序可不同于视频源(310)产生这些帧的次序,例如帧可在次序上领先,以促成时间上向后的预测。在编码器(340)之前,编码器***(300)可包括预处理器(未示出),该预处理器在编码之前执行对选中的帧(331)的预处理(例如滤波)。预处理还可包括到供编码的到主要和次要分量的色彩空间转换。通常,在编码之前,视频已被转换成诸如YUV的色彩空间,其中亮度(Y)分量的样本值表示明亮度或强度值,而色度(U,V)分量的样本值表示色差值。色度样本值可以被子采样到较低的色度采样率(例如用于YUV4:2:0格式),或者色度样本值可以具有与亮度样本值相同的分辨率(例如用于YUV4:4:4格式)。或者,视频可用另一格式(例如,RGB4:4:4格式)来编码。
编码器(340)编码选中的帧(331)以产生经编码的帧(341)并且还产生存储器管理控制操作(“MMCO”)信号(342)或参考图片集(“RPS”)信息。如果当前帧不是已被编码的第一帧,则在执行其编码处理时,编码器(340)可以使用已经被存储在经解码帧的临时存储器存储区域(360)中的一个或多个先前被编码/解码的帧(369)。这样的存储的经解码帧(369)被用作用于当前源帧(331)的内容的帧间预测的参考帧。一般来说,编码器(340)包括执行编码任务的多个编码模块,编码任务为诸如分割成小块、帧内预测估计和预测、运动估计和补偿、频率变换、量化和熵编码。由编码器(340)执行的确切操作可以取决于压缩格式而变化。输出的经编码数据的格式可以是HEVC格式、Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的变型或扩展。
编码器(340)可以将帧分割成相同尺寸或不同尺寸的多个小块。例如,编码器(340)沿小块行和小块列来拆分帧,这些小块行和小块列利用帧边界定义在该帧内的小块的水平和垂直边界,其中每个小块是矩形区域。小块通常被用于改善针对并行处理的选项。帧还可以被组织成一个或多个片,其中一个片可以是整个帧或该帧的区域。片可以独立于帧中的其它片编码,这改善了错误复原性。出于编码和解码的目的,片或小块的内容被进一步分割成块或其它样本值集。
对于根据HEVC标准的句法来说,编码器将帧(或片或小块)的内容拆分成编码树单元。编码树单元(“CTU”)包括被组织为亮度编码树块(“CTB”)的亮度样本值和被组织为两个色度CTB的相应的色度样本值。CTU(及其CTB)的尺寸由编码器来选择,并且可例如为64x64、32x32或16x16个样本值。CTU包括一个或多个编码单元。编码单元(“CU”)具有亮度编码块(“CB”)和两个相应的色度CB。例如,具有64x64亮度CTB和两个64x64色度CTB(YUV4:4:4格式)的CTU可以被拆分成4个CU,其中每个CU包括一32x32亮度CB和两个32x32色度CB,并且每个CU可能被进一步拆分成更小的CU。或者,作为另一示例,具有64x64亮度CTB和两个32x32色度CTB(YUV4:2:0格式)的CTU可以被拆分成4个CU,其中每个CU包括一32x32亮度CB和两个16x16色度CB,并且每个CU可能被进一步拆分成更小的CU。CU的最小允许尺寸(例如8x8、16x16)可被信号化在比特流中。
通常,CU具有诸如帧间或帧内之类的预测模式。出于信号化预测信息(例如预测模式细节等)和/或预测处理的目的,CU包括一个或多个预测单元。预测单元(“PU”)具有亮度预测块(“PB”)和两个色度PB。对于帧内预测的CU,PU与CU具有相同的尺寸,除非CU具有最小尺寸(例如8x8)。在那个情况下,CU可被拆分成四个较小的PU(例如,如果最小CU尺寸为8x8,则PU为4x4),或者PU可具有最小CU尺寸,如CU的句法元素所指示的。出于残留编码/解码的目的,CU还具有一个或多个变换单元,其中变换单元(“TU”)具有一变换块(“TB”)和两个色度TB。在帧内预测的CU中的PU可以包含单个TU(尺寸与PU相同)或多个TU。如本文中所使用的,术语“块”可以指示CU、CB、PB、TB或某些其它样本值集,这取决于上下文。编码器决定如何将视频分割成CTU、CU、PU、TU等。
回到图3,编码器根据来自源帧(331)中的其它、先前重构的样本值的预测来表示该帧(331)的帧内编码的块。对于块的帧内空间预测,图片内估计器估计相邻的重构的样本值到该块的外插。帧内预测估计器可以输出经熵编码的预测信息(例如帧内空间预测的预测模式(方向))。帧内预测预测器应用预测信息来确定帧内预测值。
对于本文种描述的各种词典编码模式,编码器可计算先前重构的样本值(例如,1个像素、2个像素、4个像素、8个像素并以此类推的群组)的散列值并对这些散列值进行比较以得到正被编码的当前像素值的散列值。可基于散列比较在先前重构的样本值中标识出一个或多个长度匹配,并且可使用本文中描述的各种1-D和伪2-D词典模式(或者参考参考图片的帧间伪2-D词典模式)来编码一个(或多个)当前像素值。
编码器(340)依据来自参考帧的预测来表示源帧(331)的帧间编码的预测的块。运动估计器估计块相对于一个或多个参考帧(369)的运动。当使用多个参考帧时,这多个参考帧可来自不同的时间方向或相同的时间方向。经运动补偿的预测参考区域是(诸)参考帧中用于生成当前帧中的样本块的经运动补偿的预测值的样本区域。运动估计器输出诸如运动矢量信息之类被熵编码的运动信息。运动补偿器将运动矢量应用于参考帧(369)以确定经运动补偿的预测值。
编码器(340)的熵编码器压缩经量化的变换系数值以及某些辅助信息(例如运动矢量信息、QP值、模式决策、参数选择)。具体地,熵编码器可使用系数编码句法结构来压缩针对索引图的各元素的数据。典型的熵编码技术包括指数-Golomb编码、算术编码、差分编码、Huffman编码、行程长度编码、可变长度到可变长度(“V2V”)编码、可变长度到固定长度(“V2F”)编码、LZ编码、词典编码、概率区间划分熵编码(“PIPE”)和上述编码的组合。熵编码器可针对不同种类的信息使用不同的编码技术,并可从特定编码技术内的多个代码表中进行选择。
经编码的帧(341)和MMCO/RPS信息(342)通过解码处理仿真器(350)来处理。解码处理仿真器(350)实现了解码器的一些功能,例如对任务进行解码以重构参考帧。解码处理仿真器(350)使用MMCO/RPS信息(342)来确定给定的经编码帧(341)是否需要被重构并被存储以供在对要编码的后续帧的帧间预测中用作参考帧。如果MMCO/RPS信息(342)指示经编码的帧(341)需要被存储,则解码处理仿真器(350)对将由解码器进行的解码处理进行建模,该解码器接收经编码的帧(341)并产生相应的经解码的帧(351)。通过这么做,当编码器(340)已经使用已被存储在经解码帧存储区域(360)中的经解码的帧(369)时,解码处理仿真器(350)还使用来自存储区域(360)的经解码的帧(369)作为解码处理的一部分。
经解码帧临时存储器存储区域(360)包括多个帧缓冲器存储区域(361、362、…、36n)。解码处理仿真器(350)使用MMCO/RPS信息(342)来管理存储区域(360)中的内容,以便标识出具有编码器(340)不再需要将其用作参考帧的帧的任何帧缓冲器(361、362等)。在对解码处理进行建模之后,解码处理仿真器(350)在帧缓冲(361,362等)中存储已经以此方式标识出的新解码的帧(351)。
经编码的帧(341)和MMCO/RPS信息(342)被缓冲在临时的经编码数据区域(370)中。被聚集在经编码数据区域(370)中的经编码数据将一个或多个图片的经编码数据作为基本经编码视频比特流的句法的一部分来包含。聚集在经编码数据区域(370)中的经编码数据还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个补充增强信息(“SEI”)消息或视频可用性信息(“VUI”)消息中的一个或多个参数)。
来自临时经编码数据区域(370)的经聚集的数据(371)由信道编码器(380)处理。信道编码器(380)可以(例如根据诸如ISO/IEC13818-1的媒体流复用格式)来分组化经聚集的数据以供作为媒体流来传输,在这种情况中,信道编码器(380)可以添加句法元素作为媒体传输流的句法的一部分。或者,信道编码器(380)可以(例如根据诸如ISO/IEC14496-12的媒体容器格式)组织经聚集的数据以供作为文件来存储,在这种情况中,信道编码器(380)可以添加句法元素作为媒体存储文件的句法的一部分。或者,更一般地,信道编码器(380)可以实现一个或多个媒体***复用协议或传输协议,在这种情况中,信道编码器(380)可以添加句法元素作为(诸)协议的句法的一部分。信道编码器(380)将输出提供给信道(390),该信道(390)表示存储、通信连接或该输出的另一信道。
IV.示例解码器***
图4是结合其可实现所描述的一些实施例的示例解码器***(400)的框图。解码器***(400)可以是能够在多种解码模式(例如针对实时通信的低等待时间解码模式以及针对来自文件或流中的媒体回放的常规解码模式)中的任一者操作的通用解码工具,或它可以是适用于一种这样的解码模式的专用解码工具。解码器***(400)可以被实现为操作***模块、应用库的一部分或独立的应用。总体上,解码器***(400)从信道(410)接收经编码的数据并产生经重构的帧作为针对输出目的地(490)的输出。经编码的数据可包括使用1-D、伪2-D和/或帧间伪2-D词典模式来编码的内容。
解码器***(400)包括信道(410),该信道(410)可以表示存储、通信连接或针对作为输入的经编码数据的另一信道。信道(410)产生已经被信道编码的经编码数据。信道解码器(420)可以处理经编码的数据。例如,信道解码器(420)可以(例如根据诸如ISO/IEC13818-1的媒体流复用格式)来去分组化已被聚集以供作为媒体流来传输的数据,在这种情况中,信道解码器(420)可以解析所添加的作为媒体传输流的句法的一部分的句法元素。或者,信道解码器(420)可以(例如根据诸如ISO/IEC14496-12的媒体容器格式)来将已被聚集以供作为文件来存储的经编码的视频数据分开,在这种情况中,信道解码器(420)可以解析所添加的作为媒体存储文件的句法的一部分的句法元素。或者,更一般地,信道解码器(420)可以实现一个或多个媒体***去复用协议或传输协议,在这种情况中,信道解码器(420)可以解析所添加的作为(诸)协议的句法的一部分的句法元素。
从信道解码器(420)输出的经编码的数据(421)被存储在临时的经编码数据区域(430)中,直到已经接收到足够数量的这样的数据。经编码的数据(421)包括经编码的帧(431)和MMCO/RPS信息(432)。在经编码数据区域(430)中的经编码数据(421)包含一个或多个图片的经编码数据作为基本编码的视频比特流的句法的一部分。在经编码数据区域(430)中的经编码数据(421)还可包括与经编码的视频数据相关的媒体元数据(例如作为一个或多个SEI消息或VUI消息中的一个或多个参数)。
一般来说,经编码数据区域(430)临时存储经编码数据(421),直到这样的经编码数据(421)被解码器(450)使用。此时,经编码帧(431)和MMCO/RPS信息(432)的经编码数据被从经编码数据区域(430)传输到解码器(450)。当解码继续时,新的经编码数据被添加到经编码数据区域(430)并且保留在经编码数据区域(430)中的最旧的经编码数据被传输到解码器(450)。
解码器(450)周期性地解码经编码帧(431)以产生相应的经解码帧(451)。在适当时,当执行其解码处理时,解码器(450)可以将一个或多个先前解码的帧(469)用作帧间预测的参考帧。解码器(450)从经解码帧临时存储器存储区域(460)中读取这样的先前解码的帧(469)。通常,解码器(450)包括执行诸如熵解码、逆量化、逆频率变换、帧内预测、运动补偿和小块合并之类的解码任务的多个解码模块。由解码器(450)执行的确切操作可以取决于压缩格式而变化。
例如,解码器(450)接收经压缩的帧或帧序列的经编码数据,并产生包括经解码的帧(451)的输出。在解码器(450)中,缓冲器接收针对经压缩的帧的经编码数据,并在适当时,使得接收到的经编码数据对熵解码器可用。熵解码器对经熵编码的量化数据以及经熵编码的辅助信息进行熵解码,通常应用编码器中执行的熵编码的逆来进行熵解码。运动补偿器将运动信息应用于一个或多个参考帧以形成针对正被重构的帧的任何帧间编码块的经运动补偿的预测值。帧内预测模块可以在空间上从邻近的、先前重构的采样值中空间地预测当前块的样本值。
对于本文中描述的各种词典编码模式,解码器可用匹配模式和/或直接模式来解码当前像素值。在匹配模式中,解码器对当前像素值进行解码,这些当前像素值是从被存储在1-D词典或另一位置(例如,经重构的图片)中的先前解码的像素值(例如,先前重构的像素值)中预测的。例如,解码器可接收指示(例如,在词典内的)偏移和(指示来自该偏移的要被预测的像素值的数目的)长度的一个或多个代码。在直接模式中,解码器可直接解码像素值,而无需预测。
在非词典模式中,解码器(450)还重构预测残留值。逆量化器对经熵解码的数据进行逆量化。例如,解码器(450)基于比特流中的句法元素为图片、小块、片和/或视频的其它部分设置QP值,并相应地对变换系数进行逆量化。逆频率变换器将经量化的频域数据转换成空间域信息。对于帧间预测的块,解码器(450)将经重构的预测残留值与经运动补偿的预测组合。解码器(450)可以类似地将预测残留值与来自帧内预测的预测组合。视频解码器(450)中的运动补偿环路包括用于平滑经解码的帧(451)中的块边界行和/或列上的间断的自适应去块滤波器。
经解码帧临时存储器存储区域(460)包括多个帧缓冲存储区域(461、462、46n)。经解码帧存储区域(460)是经解码图片缓冲器的一个示例。解码器(450)使用MMCO/PS信息(432)来标识该解码器可将经解码帧(451)存储在其中的帧缓冲器(461、462等)。解码器(450)将经解码的帧(451)存储在那个帧缓冲器中。
输出序列发生器(480)使用MMCO/RPS信息(432)来标识按输出次序将产生的下一帧何时可在经解码帧存储区域(460)中获得。当按输出次序将产生的下一帧(481)可在经解码帧存储区域(460)中获得时,输出序列发生器(480)读取该下一帧并将其输出到输出目的地(490)(例如显示器)。一般来说,输出序列发生器(480)将帧从经解码帧存储区域(460)中输出的次序可以与解码器(450)解码这些帧的次序不同。
V.示例视频编码器
图5a和5b是可结合其实现所描述的一些实施例的通用视频编码器(500)的框图。编码器(500)接收包括当前图片的视频图片序列作为输入视频信号(505)并在经编码视频流(595)中产生经编码的数据作为输出。
编码器(500)是基于块的并使用取决于实现的块格式。块还可在不同的阶段上被进一步细分,例如在预测、频率变换和/或熵编码阶段。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块随后可以被划分成更小的样本值块以用于编码和解码。在针对HEVC标准的编码的实现中,编码器将图片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
编码器(500)使用图片内编码和/或图片间编码来压缩图片。编码器(500)的许多组件被用于图片内编码和图片间编码两者。由这些组件执行的确切操作可取决于所压缩的信息的类型而变化。
小块化模块(510)可选地将图片分割成相同尺寸或不同尺寸的多个小块。例如,小块化模块(510)沿小块行和小块列来拆分图片,所述小块行和小块列利用图片边界定义在图片内的小块的水平和垂直边界,其中每个小块是矩形区域。小块化模块(510)可随后将这些小块分组成一个或多个小块集合,其中一小块集合是这些小块中的一个或多个的群组。
通用编码控件(520)接收输入视频信号(505)的图片以及来自编码器(500)的各个模块的反馈(未示出)。整体上,通用编码控件(520)将控制信号(未示出)提供给其它模块(例如小块化模块(510)、变换器/缩放器/量化器(530)、缩放器/逆变换器(535)、图片内估计器(540)、运动估计器(550)以及帧内/帧间切换)以设置和改变编码期间的编码参数。具体地,通用编码控件(520)可以判定在编码期间是否和如何使用词典模式。通用编码控件(520)还可以估计编码期间的中间结果,例如执行速率-失真分析来估计。通用编码控件(520)产生指示在编码期间所做出的判定的通用控制数据(522),使得对应的解码器可以作出一致的判定。通用控制数据(522)被提供给头部格式化器/熵编码器(590)。
如果当前图片是使用图片间预测来预测的,则运动估计器(550)相对于一个或多个参考图片估计输入视频信号(505)的当前图片中的样本值块的运动。经解码图片缓冲器(570)缓冲一个或多个重构的先前编码的图片以供用作参考图片。当使用多个参考图片时,这多个参考图片可以来自不同的时间方向或相同的时间方向。运动估计器(550)产生诸如运动矢量数据和参考图片选择数据之类的辅助信息运动数据(552)。运动数据(552)被提供给头部格式化器/熵编码器(590)以及运动补偿器(555)。
运动补偿器(555)将各运动矢量应用于来自经解码图片缓冲器(570)的(诸)经重构的参考图片。运动补偿器(555)产生针对当前图片的经运动补偿的预测。
在编码器(500)内的分开的路径中,图片内估计器(540)确定如何执行对输入视频信号(505)的当前图片的样本值块的图片内预测。当前图片可全部或部分使用图片内编码来编码。对于帧内空间预测,使用当前图片的重构(538)的值,图片内估计器(540)确定如何从当前图片的邻近的、先前重构的样本值中空间地预测当前图片中的当前块的样本值。
对于本文中描述的各种词典编码模式,编码器(500)可计算先前重构的样本值(例如,1个像素、2个像素、4个像素、8个像素并以此类推的群组)的散列值并对那些散列值进行比较以得到正被编码的当前像素值的散列值。可基于散列比较在先前重构的样本值中标识出一个或多个长度匹配,并且可使用本文中描述的各种1-D和伪2-D词典模式(或者参考参考图片的帧间伪2-D词典模式)来编码一个(或多个)当前像素值。
帧内预测估计器(540)产生辅助信息帧内预测数据(542),诸如指示帧内预测是使用空间预测还是各种词典模式之一的信息(例如,每帧内块或特定预测模式方向的每帧内块的标志值)、(针对帧内空间预测的)预测模式方向。帧内预测数据(542)被提供给头部格式化器/熵编码器(590)以及图片内预测器(545)。根据帧内预测数据(542),图片内预测器(545)从当前图片的相邻的、先前重构的样本值中空间地预测当前图片中的当前块的样本值。
在非词典模式中,帧内/帧间切换选择经运动补偿的预测或图片内预测的值以供用作给定块的预测(558)。在非词典模式中,预测(558)的块和输入视频信号(505)的原始当前图片的对应部分之间的差异(如果有的话)提供残留值(518)。在当前图片的重构期间,经重构的残留值与预测(558)组合来从视频信号(505)中产生对原始内容的重构(538)。然而,在有损压缩中,还是从视频信号(505)中丢失了一些信息。
在变换器/缩放器/量化器(530)中,对于非词典模式,频率变换器将空间域视频信息转换为频域(即频谱、变换)数据。对于基于块的视频编码,频率变换器将离散余弦变换(“DCT”)、其整数近似、或另一类型的前向块变换应用于预测残留数据的块(或者在预测(558)为空的情况下,应用于样本值数据),从而产生频率变换系数的块。编码器(500)可能还能够指示这样的变换步骤被省略了。缩放器/量化器对变换系数进行缩放和量化。例如,量化器将用步骤尺寸将非统一的标量量化应用于频域数据,该步骤尺寸在逐帧的基础、逐小块的基础、逐片的基础、逐块的基础、或其它基础上变化。经量化的变换系数数据(532)被提供给头部格式化器/熵编码器(590)。
在缩放器/逆变换器(535)中,对于非词典模式,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。逆频率变换器执行逆频率变换,从而产生经重构的预测残留值或样本值的块。编码器(500)将经重构的残留值与预测(558)的值(例如,经运动补偿的预测值、图片内预测值)组合以形成重构(538)。
对于图片内预测,重构(538)的值可以被馈送回图片内估计器(540)和图片内预测器(545)。同样,重构(538)的值可以被用于后续图片的运动补偿的预测。重构(538)的值可以被进一步滤波。对于视频信号(505)的给定图片,滤波控件(560)确定如何对重构(538)的值执行去块滤波和样本自适应偏移(“SAO”)滤波。滤波控件(560)生成滤波控制数据(562),它被提供给头部格式化器/熵编码器(590)和合并器/(诸)滤波器(565)。
在合并器/(诸)滤波器(565)中,编码器(500)将来自不同小块的内容合并到图片的经重构版本中。编码器(500)根据滤波器控制数据(562)选择性地执行去块滤波和SAO滤波,以便自适应地平滑各帧中的各边界上的间断。取决于编码器(500)的设置,小块边界可以被选择性地滤波或根本不被滤波,并且编码器(500)可以在经编码的比特流内提供指示这样的滤波是否被应用的句法。经解码图片缓冲器(570)缓冲经重构的当前图片以供在后续的运动补偿的预测中使用。
头部格式化器/熵编码器(590)格式化和/或熵编码通用控制数据(522)、经量化的变换系数数据(532)、帧内预测数据(542)和打包的索引值、运动数据(552)以及滤波器控制数据(562)。例如,头部格式化器/熵编码器(590)将上下文自适应二进制算法编码(“CABAC”)用于对系数编码句法结构的各句法元素进行熵编码。
头部格式化器/熵编码器(590)在经编码视频比特流(595)中提供经编码的数据。经编码的视频比特流(595)的格式可以是HEVC格式、Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的变型或扩展。
取决于所需的压缩的实现和类型,编码器的模块可被添加、省略、拆分成多个模块、与其它模块组合、和/或用相似的模块来替代。在替换实施例中,具有不同模块和/或其它配置的模块的编码器执行一个或多个所描述的技术。编码器的具体实施例通常使用编码器(500)的变型或补充版本。所示的编码器(500)内的各模块之间的关系指示了信息在编码器中的一般流动;为简明起见,未示出其它关系。
VI.示例视频解码器
图6是结合其可实现所描述的若干实施例的通用解码器(600)的框图。解码器(600)接收经编码的视频比特流(605)中的经编码的数据并产生包括经重构视频(695)的图片的输出。经编码的视频比特流的格式(605)可以是H.265/HEVC格式、Windows媒体视频格式、VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式的变型或扩展。
解码器(600)是基于块的并使用取决于实现的块格式。块可以在不同的阶段被进一步细分。例如,图片可以被划分成64x64块、32x32块或16x16块,这些块随后可以被划分成更小的样本值块。在针对HEVC标准的解码实现中,将图片分割成CTU(CTB)、CU(CB)、PU(PB)和TU(TB)。
解码器(600)使用图片内解码和/或图片间解码来对图片进行解压缩。解码器(600)的许多组件被用于图片内解码和图片间解码这两者。由这些组件执行的确切操作可以取决于正被解压缩的信息的类型而变化。
缓冲器在经编码的视频比特流(605)中接收经编码数据,并使得接收到的经编码数据可用于解析器/熵解码器(610)。解析器/熵解码器(610)通常应用在编码器(500)中执行的熵编码的逆(例如上下文自适应二进制算术解码)对经熵编码的数据进行熵解码。例如,解析器/熵解码器(610)将上下文自适应二进制算法解码用于对系数编码句法结构中的各句法元素进行熵解码。”作为解析和熵解码的结果,解析器/熵解码器(610)产生通用控制数据(622)、经量化的变换系数数据(632)、帧内预测数据(642)和打包的索引值、运动数据(652)以及滤波器控制数据(662)。
通用解码控件(620)接收通用控制数据(622)并将控制信号(未示出)提供给其它模块(例如缩放器/逆变换器(635)、图片内预测器(645)、运动补偿器(655)以及帧内/帧间切换)以设置和改变解码期间的解码参数。
如果当前图片是使用图片间预测来预测的,则运动补偿器(655)接收运动数据(652),诸如运动矢量数据和参考图片选择数据。运动补偿器(655)将运动矢量应用于来自经解码图片缓冲器(670)的(诸)经重构的参考图片。运动补偿器(655)产生针对当前图片中的帧间编码块的运动补偿的预测。经解码图片缓冲器(670)存储一个或多个先前重构的图片以供用作参考图片。
在解码器(600)内的分开路径中,帧内预测预测器(645)接收帧内预测数据(642),诸如指示帧内预测是使用空间预测还是各词典模式之一的信息(例如,每帧内块或特定预测模式方向的每帧内块的标志值)、(针对帧内空间预测的)预测模式方向。对于帧内空间内预测,根据预测模式数据使用当前图片的重构(638)的值,图片内预测器(645)从当前图片的相邻的、先前重构的样本值中空间地预测当前图片的当前块的样本值。
对于本文中描述的各种词典编码模式,解码器可用匹配模式和/或直接模式来解码当前像素值。在匹配模式中,解码器对当前像素值进行解码,这些当前像素值是从被存储在1-D词典或另一位置(例如,经重构的图片)中的先前解码的像素值(例如,先前重构的像素值)中预测的。例如,解码器可接收指示(例如,在词典内的)偏移和(指示来自该偏移的要被预测的像素值的数目的)长度的一个或多个代码。在直接模式中,解码器可直接解码像素值,而无需预测。
在非词典模式中,帧内/帧间切换选择经运动补偿的预测或图片内预测的值以供用作给定块的预测(658)。例如,当遵循HEVC句法时,可以基于为图片中的CU编码的句法元素来控制帧内/帧间切换,该CU可以包括帧内预测的CU和帧间预测的CU。解码器(600)将预测(658)与重构的残留值组合以产生来自视频信号的内容的重构(638)。
为了重构残留值,对于非词典模式,缩放器/逆变换器(635)接收并处理经量化的变换系数数据(632)。在缩放器/逆变换器(635)中,缩放器/逆量化器对经量化的变换系数执行逆缩放和逆量化。逆频率变换器执行逆频率变换,从而产生经重构的预测残留值或样本值的块。例如,逆频率变换器将逆块变换应用到频率变换系数,从而产生样本值数据或预测残留数据。逆频率变换可以是逆DCT、其整数近似或另一种类型的逆频率变换。
对于图片内预测,重构(638)的值可以被馈送回图片内预测器(645)。对于图片间预测,重构(638)的值可以被进一步滤波。在合并器/(诸)滤波器(665)中,解码器(600)将来自不同小块的内容合并到图片的经重构版本中。解码器(600)根据滤波器控制数据(662)和滤波自适应规则来执行去块滤波和SAO滤波,以便自适应地平滑各帧中的各边界上的间断。小块边界可以被选择性地滤波或根本不滤波,这取决于解码器(600)的设置或经编码的比特流数据内的句法指示。经解码图片缓冲器(670)缓冲经重构的当前图片以供在后续的运动补偿的预测中使用。
解码器(600)还可包括后处理去块滤波器。后处理去块滤波器可选地平滑经重构图片中的间断。其他滤波(诸如去振铃滤波)还可作为后处理滤波的一部分被应用。
取决于所希望的解压缩的实现和类型,解码器的模块可以被添加、省略、拆分成多个模块、与其他模块组合和/或用类似的模块来替代。在替换实施例中,具有不同模块和/或其它配置的模块的解码器执行一个或多个所描述的技术。解码器的具体实施例通常使用解码器(600)的变型或补充版本。所示的解码器(600)内的模块之间的关系指示信息在解码器中的一般流动;为简明起见,未示出其它关系。
VII.1-D词典模式的创新
该章节呈现了一维(1-D)词典模式的各创新。一些创新涉及使用偏移和长度来信号化像素值,而其他创新涉及直接信号化像素值。又一些创新涉及垂直扫描和水平扫描。
具体地,在编码像素值时使用1-D词典模式可改善性能并减少编码视频内容,尤其是编码屏幕内容(例如,在执行屏幕捕捉时)时所需的比特。屏幕内容通常包括重复的结构(例如图形、文本字符),其向各区域提供与可用预测来编码的相同的像素值,以改善性能。
A.1-D词典模式—介绍
在1-D词典模式中,样本值(例如像素值)是通过(使用偏移和长度)参考存储在1-D词典中的先前样本值(例如,先前重构的样本值)来预测的。例如,视频编码或图像编码器可参考1-D词典来编码当前样本值,该1-D词典存储用于预测和编码当前样本值的先前样本值(例如,经重构的样本值或原始样本值)。视频解码器或图像解码器可参考1-D词典来解码当前样本值,该1-D词典存储用于预测和解码当前样本值的先前解码的(例如,经重构的)样本值。
在1-D词典模式中,一个或多个当前像素值可从一个或多个先前像素值(例如,以扫描次序)预测。预测可通过以下方式来执行:将当前像素值与先前像素值匹配,使得当前像素值可被精确地预测(例如,无需任何残留值)。术语“匹配模式”描述使用词典中(或来自另一源,诸如经重构的图片)的匹配像素值的编码和/或解码。在不存在匹配像素值的情况下(例如,在帧的开始处或在没有在先前像素值的词典中发现匹配的地方),可直接编码一个或多个当前像素值。术语“直接模式”描述直接地编码和/或解码像素值。
在一些实现中,各像素值作为组合像素来编码和解码(像素的Y、U和V值的组合或像素的R、G、B值的组合被一起编码/或解码)。在其他实现中,各像素值作为分开的分量来编码和解码(例如,可为Y、U和V分量或R、G和B分量中的每一者维护分开的1-D词典)。各像素值可用各种YUB数据格式(例如,YUV4:4:4、YUV4:2:2、YUV4:2:0等)或用各种RGB数据格式(例如,RGB、GBR、BGR等)来编码和解码。
各像素值使用1-D词典模式的编码和/或解码可被应用于被划分成不同区域(诸如块)的视频或图像内容。一般来说,可使用任何尺寸的块。在一些实现中,视频内容(例如,视频图片或帧)被划分成具有64x64、32x32、16x16或8x8个像素值的尺寸的编码单元。
在一些实现中,词典编码可与其他类型的编码组合。例如,各像素值可使用本文中描述的词典模式之一(例如,1-D词典模式)来编码。经编码的像素值可随后使用另一编码技术(例如,基于上下文的算法编码或另一编码技术)来编码。
B.信号化偏移和长度
在1-D词典模式中,当存在匹配像素值时,偏移和长度值被信号化成指示1-D词典中匹配像素值所在的用于预测当前像素值的位置。例如,一个或多个当前像素值可从存储在1-D词典模式中的一个或多个先前像素值中预测,该一个或多个先前像素值通过偏移(在1-D词典中从当前像素值倒退的位置)和长度(来自偏移的被预测的像素值的数目)标识在1-D词典内。如应当理解的,为5的偏移意指在1-D词典中从当前像素值倒退5个像素(例如,在一些实现中,负符号被添加到偏移,其在本示例中将是为-5的偏移)。
在1-D词典模式中,在一些实现中,当前块中的像素值可(例如取决于词典的最大尺寸)可从先前块中的像素值预测。例如,在使用64x64块编码的图片中,来自图片中的第四个块的像素值可(例如,使用偏移和长度)从来自该图片中的第一个块的像素值(被存储在1-D词典中)预测。
偏移可用将可能的偏移值划分成多个范围并依据范围来编码各偏移值的格式来编码和信号化(例如在比特流中)。通过这种方式,偏移可被编码成有两个部分的代码,其中第一部分标识偏移范围,且第二部分指示该范围内的偏移值。
在特定实现中,偏移值是使用以下范围来编码的。
此外,在该实现中,应用基于零的标号,使得在编码偏移值之前将偏移值减少1,并在解码偏移值之后将偏移值增加1。下表(表1)指示了与偏移值相对应的范围(具有其偏移范围代码)以及比特数。
表1-示例偏移值范围
通过使用在以上表1中描绘的实现,偏移可被编码、信号化和解码。作为示例,为415的偏移值(表示为416的原始偏移值,其被减少了1以供编码)将在范围4中被编码。由于范围4始于为276的偏移值,要被编码的值将是415-276=139。经编码的偏移将通过将为“0001”的偏移范围代码(表示范围4)组合成后面是为“0000000010001011”的16比特值(十进制数139的16比特二进制值)来生成。将该代码的两个部分(偏移范围代码和偏移值代码)放在一起得到以下针对经编码的偏移的经组合代码:"00010000000010001011"。作为另一示例,为45的偏移值(表示为46的原始偏移值,其被减少了1以供编码)将在范围3中被编码。由于范围3始于为20的偏移值,要被编码的值将是45-20=25。经编码的偏移将通过将为“001”的偏移范围代码(表示范围3)组合成后面是为“00011001”的8比特值(十进制数25的8比特二进制值)来生成。将该代码的两个部分(偏移范围代码和偏移值代码)放在一起得到以下针对经编码的偏移的经组合代码:"00100011001"。
如以上在表1中描绘的,范围5表示使用N个比特的大于65,811的偏移值,其中N表示表示最大偏移值所需的比特数。在一些实现中,最大偏移值是从当前词典尺寸中确定的。例如,如果当前词典尺寸为300,000,则N可被设为18(即,需要18个比特来表示为300,000的最大偏移值),并因此65,811和300,000之间的偏移值将使用18个比特来编码该偏移值。应当理解,范围5的偏移值始于65,812,因此为了表示300,000,仅需要18个比特来表示超过65,811的量(即,仅需要18个比特来表示300,000-65,812=234,188)。在其他实现中,最大偏移值是预定的,并且不取决于当前词典尺寸。例如,如果预定的最大偏移值为800,000,则N可被设为20。
在其他实现中,偏移值可使用不同数目的范围和/或覆盖不同偏移值群组的范围来编码。
在特定实现中,类似于偏移值,长度值是依据范围来编码的。此外,在该实现中,基于零的标号被应用,使得在编码长度值之前将长度值减少1,并在解码长度值之后将长度值增加1。下表(表2)指示了与长度值相对应的范围(具有其长度范围代码)以及比特数。
表2-示例长度值范围
通过使用在以上表2中描绘的实现,长度可被编码、信号化和解码。作为示例,为2的长度值(表示为3的原始长度值,其被减少了1以供编码)将在范围1中被编码。经编码的长度将通过将为“1”的长度范围代码(表示范围1)组合成后面是为“10”的2比特值(十进制数2的2比特二进制值)来生成。将该代码的两个部分(长度范围代码和长度值代码)放在一起得到以下针对经编码的长度的经组合代码:"101"。作为另一示例,为56的长度值(表示为57的原始长度值,其被减少了1以供编码)将在范围3中被编码。由于范围3始于为20的偏移值,要被编码的值将是56-20=36。经编码的长度将通过将为“001”的长度范围代码(表示范围3)组合成后面是为“00100100”的8比特值(十进制数36的8比特二进制值)来生成。将该代码的两个部分(长度范围代码和长度值代码)放在一起得到以下针对经编码的长度的经组合代码:"00100100100"。
如以上在表2中描绘的,范围4表示使用N个比特的大于275的长度值,其中N表示表示最大长度值所需的比特数。在一些实现中,最大长度值是留在当前块中的正被编码或解码的像素数。例如,正被编码或解码的若干当前像素值是当前的64x64块(具有4,096个像素值的块)中的第3,000个像素值,则最大长度值为1,096(4,096–3,000),其可用10个比特(N=10)来表示。应当理解,范围4的偏移值始于276,因此为了表示1,096,仅需要10个比特来表示超过275的量(即,仅需要10个比特来表示1,096-276=820)。在其他实现中,最大长度值是预定的,并且不取决于当前词典尺寸。例如,如果预定的最大长度值为4,096,则N可被设为12。
在其他实现中,长度值可使用不同数目的范围和/或覆盖不同长度值群组的范围来编码。
在一些实现中,最大偏移和/或最大长度是已知的。当最大偏移和/或最大长度已知时,编码效率可被改善。例如,在编码匹配偏移的值时,最大偏移可被设为当前词典尺度(例如,如果当前词典尺寸为10个像素,则偏移不可大于10)。在编码匹配长度的值时,最大长度可被设为留在当前块(例如,当前编码单元(CU))中的像素数。例如,如果正被编码或解码的当前像素值是8x8块中的第15个像素,则最大长度可被设为49。当(针对偏移和/或长度的)最大值已知时,该最大值可被更高效地信号化。例如,编码该最大值所需的比特数可通过计算上限(log2(最大值))来确定,该比特数可用于定义以上表1和表2中的“N”个比特。
在一些实现中,最大偏移和长度为1,当被转换成基于零的标号时,其可被编码成0。
1-D词典模式可被应用来编码和/或解码块内的像素值。例如,1-D词典模式(以及本文中描述的其他词典模式)可被用于来编码和/或解码视频帧的块(例如,各种尺寸的块,诸如4x4块、8x8块、16x16块、32x32块和64x64块)内的像素值。
在一些实现中,偏移和长度可重叠在正被编码/解码的当前像素值上。作为示例,考虑像素值[P-2,P-1,P0,P1,P2,P3],其中P-2和P-1是该1-D词典中的最后两个像素值,P0是正被编码/解码的当前像素值,并且P1到P3是将被编码/解码的接下来的像素值。在该情况下,为1的偏移和为3的长度(未经编码的偏移和长度值)是有效条件,其中P0是从P-1预测的,P1是从P0预测的,并且P2是从P1预测的。如应当理解的,为1的偏移(未经编码的值,在被编码时将为0)意指在1-D词典中从当前像素值倒退一个位置(例如,在一些实现中,负符号被添加到偏移,其在本示例中将是为-1的偏移)。
C.水平和垂直扫描
1-D词典模式支持水平和垂直扫描,其可被用来在1-D词典和视频或图像内容的二维表示(例如,二维视频或图像内容的块)之间转换。例如,视频内容的块内的像素值在编码和解码时可被水平地扫描。对于水平扫描,各像素值按水平扫描次序(例如,在像素行中从左到右地)被添加到1-D词典。视频内容的块内的像素值还可在编码和解码时被垂直地扫描。对于垂直扫描,各像素值按垂直扫描次序(例如,在像素列中从上到下地)被添加到1-D词典。
在一些实现中,水平和垂直扫描两者都被支持。为了支持水平和垂直扫描两者,可维护两个1-D词典,即按水平扫描次序存储像素值的一个1-D词典(水平扫描1-D词典)以及按垂直扫描次序存储像素值的另一个1-D词典(垂直扫描1-D词典)。在像素值需要被添加时,它可被添加到水平扫描1-D词典和垂直扫描1-D词典两者中。像素值的排序在两个词典中将是不同的,因为该次序取决于哪个扫描次序被使用。
在一些实现中,添加到1-D词典在不同时间被执行。例如,在按水平扫描模式编码或解码块时,像素值可在其被编码或解码时被添加到水平扫描1-D词典。在当前块已经被编码或解码时,像素值可随后被添加到垂直扫描1-D词典。
在支持水平和垂直扫描两者的实现中,扫描次序可(例如,在逐块的基础上或在某一其他基础上)被改变。例如,如果图片的一个块使用水平扫描,则该块的像素值将(按水平扫描次序)被添加到水平扫描1-D词典,并且该块的像素值还将(按垂直扫描次序)被添加到垂直扫描1-D词典。如果图片的另一个块使用垂直扫描,则该块的像素值将(按垂直扫描次序)被添加到垂直扫描1-D词典,并且该块的像素值还将(按水平扫描次序)被添加到水平扫描1-D词典。
D.降低词典尺寸
1-D词典的尺寸可被限制(例如,以对照预测像素值的益处来平衡维护词典的成本)。降低词典的尺寸(例如,修剪词典)可在不同的时间被执行。例如,词典的尺寸可在将像素值添加到该词典时被检查。如果该词典大于最大尺寸(例如,预定的最大尺寸,诸如500K),则该词典的尺寸可(例如,通过移除词典中最旧的条目)被降低。
在一些实现中,预定义最大词典尺寸被定义。如果词典大于预定义最大词典尺寸,则该词典的一部分(例如,该词典的最旧部分)被移除。在特定实现中,如果词典大于阈值尺寸,则该词典的三分之一被移除。例如,在一些实现中,基本词典尺寸被定义为1<<18。如果当前词典尺寸等于或大于1.5倍的基本词典尺寸,则将最旧的0.5倍的基本词典尺寸从该词典移除。
在一些实现中,词典仅被周期性地检查(并且在需要的情况下被修剪)。例如,该词典可在对块、CU或CTU进行编码和/或解码之后被检查。在特定实现中,词典的尺寸在对CTU进行编码或解码之后被检查,并且在大于最大尺寸的情况下在尺寸方面被降低三分之一。在这样的实现中,应当保证,可在两次检查之间被添加到词典的元素的最大数目应当不大于词典缓冲器尺寸减去移除阈值。例如,基本词典尺寸被定义为1<<18,并且移除阈值被定义为1.5倍的基本词典尺寸,其将为1<<18+1<<17。如果词典尺寸是在对CTU(假设CTU尺寸为4096)进行编码或解码之后被检查的,则用于词典的最小缓冲器应当为1<<18+1<<17+4096。
E.按扫描次序的重构
在对像素值进行解码后,这些像素值被重构以在两个维度中重新创建该视频内容。按扫描次序重构像素值可在解码过程期间的各时间点处被执行。例如,在视频内容的特定区域(例如,块、CU或CTU)的像素值已经被解码后,它们可按扫描次序被重构。
在一些实现中,对于CU而言,重构是在像素值已经被解码后被如下执行的。如果水平扫描被用于CU,则以下等式(等式1)被使用来按扫描次序重构具有宽度“w”和高度“h”的CU的像素值(rec[i][j]是经重构的在行“i”和列“j”处的像素;pixel[](像素[])是经解码的像素):
rec[i][j]=pixel[i*w+j](等式1)
如果垂直扫描被用于CU,则以下等式(等式2)被使用来按扫描次序重构具有宽度“w”和高度“h”的CU的像素值:
rec[i][j]=pixel[j*h+i](等式2)
F.直接模式
在使用1-D词典模式时,可存在匹配像素值没有被找到的情况。例如,在编码期间,编码器可回顾词典以确定是否存在与正被编码的当前像素值匹配(或者与当前正被编码的多个像素值匹配)的像素值(多个像素值的序列)。如果找到了匹配,则(诸)当前像素值可用匹配模式使用以上在该章节中描述的偏移和长度编码来编码。然而,如果在词典中没有找到匹配像素值,则当前像素值可使用直接模式来编码。在直接模式中,当前像素值可被直接地编码(例如,像素值的Y、U和V分量或者像素值的R、G、B分量可被直接地编码,而无需参考词典中的任何其他像素值)。
在一些实现中,逸出码或标志被用来指示何时将直接模式用于像素值。例如,编码器可将逸出码或标志放置在具有经直接编码的像素值的比特流中,使得解码器知道该像素值是使用直接模式来编码的。通过这种方式,解码器可在用直接模式编码的像素值和使用匹配模式编码的像素值之间进行区分。此外,用1-D词典模式的编码可支持按需(例如,在逐像素的基础上)在匹配模式和直接模式之间进行切换。
G.示例编码/解码
图7是示出像素值可如何使用1-D词典模式来被编码的简化示例700的示图。如示例700中所描绘的,描绘了示例像素值的8x8块710的三个行(第一行、第二行和最后一行)。示例像素值的块710是使用3字节的YUV或RGB值来描绘的。出于参考的目的,该块中的像素值被标记为在水平扫描次序中以像素零(P0)开始。
如示例700中示出的,使用1-D词典模式来编码这些像素值720。第一像素值P0是作为第一条目被添加在1-D词典中的(例如,第一像素值可以是视频帧的第一块中的第一像素)。由于1-D词典中不存在先前像素值,第一像素值P0用直接模式被编码并被添加到经编码的比特流中。第二像素值P1也是用直接模式被添加到1-D词典中的,因为该第二像素值不匹配该词典中的任何先前像素值。第三像素值P2也是用直接模式被添加到1-D词典中的。730处描绘了1-D词典的状态以及经编码的比特流。经编码的比特流是用简化格式来描绘的,该简化格式指示前三个像素是使用直接模式来编码的(例如,直接模式可由经编码的比特流中的逸出代码来指示)。
当第四像素值P3被编码时,匹配在1-D词典中被找到。具体地,P0匹配P3并且因此P3可用匹配模式使用偏移值和长度值参考1-D词典中的P0来编码。在匹配像素P0在1-D词典中被标识出后,匹配像素值的长度可被确定。在该示例中,两个像素值匹配(即,P3和P4匹配P0和P1)。为了编码偏移和长度,该示例700使用以上在该章节中描述的范围(表1和表2)。首先,偏移和长度值被减少1(以转换到基于零的标号)并使用这些范围来编码。具体地,为2(3-1)的偏移值根据表1的第一行被编码成“110”(第一个“1”指示范围1,并且“10”指示为2的偏移值)。为1(2-1)的长度值根据表2的第一行被编码成“101”(第一个“1”指示范围1,并且“01”指示为1的长度值)。添加长度和偏移导致为“110101”的代码。740处描绘了1-D词典的状态以及经编码的比特流。经编码的比特流是用简化格式来描绘的,该简化格式指示前三个像素是使用直接模式来编码的,并且第四和第五个像素值是用匹配模式来编码的并且是从第一和第二像素值中预测出的。
图8是示出像素值可如何使用1-D词典模式来被解码的简化示例800的示图。如在示例800中描绘的,使用1-D词典模式来解码通过编码图7中的块来生成的经编码的比特流810。用直接模式来解码前三个像素值并将其添加到该词典中,如820处所描绘的。
使用匹配模式来解码第四和第五像素值。在该示例中,第四和第五像素值的经编码的比特流表示为“110101”,其是使用以上在该章节中通过表1和表2来定义的偏移和长度范围来解码的。具体地,偏移被解码成2,并且长度被解码成1。通过使用该偏移和长度,用于该预测的像素值被标识出。在该示例中,为2的偏移(在添加1以补偿基于零的标号后倒退三个像素)标识该词典中的第一个像素值。长度指示(在向长度添加1以补偿基于零的标号后)两个像素值被预测出。因此,从第一和第二像素值中预测第四和第五像素值并将其添加到词典,如830处所描绘的。
一旦解码了8x8块,就按水平扫描次序重构该块。840处描绘了经重构的8x8块。
VIII.针对伪2-D词典模式的创新
本章节呈现了针对伪2-D词典模式的各创新。伪2-D词典模式类似于以上在章节VII中描述的1-D词典模式,并且因此除了本章节中描述的差异以外,伪2-D词典模式的操作与1-D词典模式相同。
尽管1-D词典模式维护先前像素值的1-D词典,但伪2-D词典模式不维护分开的词典。取而代之的是,使用伪2-D词典模式,所有先前像素值(例如,从图片或帧的开始起的所有先前重构的像素值)都可用于预测。例如,视频或图像编码器或解码器可通常在编码和解码期间维护(例如,当前图片或帧的)所有经重构的像素值(例如,以供在预测期间使用)。
由于伪2-D词典模式从二维图片中的像素值(例如,先前重构的像素值)中预测当前像素值,因此伪2-D词典模式使用两个偏移值,即X偏移值(偏移X)和Y偏移值(偏移Y)。偏移X和偏移Y值可使用以上在1-D词典章节中描述的技术(例如,使用表1中描述的范围)来被单独地信号化。例如,如果100,100处的像素值(来自当前图片的左上方的X/Y)是从10,20处的像素值中预测的,则偏移X可被设为90(指示在图片的经重构的像素值左边的90个像素,其也可用-90来指示)并且偏移Y可被设为80(指示在该图片的经重构的像素值上边的80个像素,其也可用-80来指示)。
在伪2-D词典模式中,块的结构在执行预测时被考虑。例如,考虑使用水平扫描编码的当前8x8块。如果当前块的像素值是从先前的8x8块预测的,并且该预测的长度为9(即,比8x8块的一个行长),则先前的8x8块中用于预测的像素值将环绕该块的两个行(或从一个块的最后一行到下一块的第一行)。
在一些实现中,以下等式(等式3)用于以伪2-D词典模式重构图片中的当前像素。在该等式中,当前块的大小为宽度(w)x高度(h),当前像素为在当前块中的位置“c”处(从零开始计数)的像素,(x0,y0)是在当前块的左上方的开始位置,偏移为(oX,oY),扫描次序为水平,匹配长度为1,并且pictureRec[](图片Rec[])为当前图片的重构。
pixel[c]=pictureRec[y0–oY+c/w][x0–oX+c%w](等式3)
伪2-D词典模式的其余方面在以上相关于1-D词典模式讨论了(例如,信号化长度、最大比特数以编码长度和偏移,对水平和垂直扫描模式两者的支持、一起处理各像素分量(例如,Y、U和V或R、G、B)等)。
IX.针对帧间伪2-D词典模式的创新
本章节呈现了针对帧间伪2-D词典模式的各创新。帧间伪2-D词典模式类似于以上在章节VIII中描述的伪2-D词典模式,并且因此除了本章节中描述的差异以外,该帧间伪2-D词典模式的操作与伪2-D词典模式相同。
尽管伪2-D词典模式使用当前图片中的经重构的像素值来进行预测,帧间伪2-D词典模式使用参考图片(或多个参考图片)中的像素值来进行预测。在一些实现中,帧间伪2-D词典模式中用于预测的参考图片被信号化(例如,通过信号化参考图片列表和该列表中的参考图片索引来信号化)。替换地,默认参考图片可被用于进行预测(例如,以避免针对来自多个可用参考图片的特定参考图片的信号化开销)。在一些实现中,默认参考图片是参考图片列表0中的第一图片。
X.用于使用词典模式来解码像素值的示例方法
提供了用于使用1-D词典模式、伪2-D词典模式和/或帧间伪2-D词典模式来解码像素值的各方法。
图9是用于使用词典模式来解码像素值的示例方法900的流程图。在910,在比特流中接收经编码的数据。例如,经编码的数据可以是经编码的视频数据和/或经编码的图像数据。
在920,使用词典模式来解码一个或多个当前像素值。例如,词典模式可以是1-D词典模式、伪2-D词典模式或帧间伪2-D词典模式。可为视频内容的块解码一个或多个当前像素值。解码一个或多个当前像素值包括执行操作930到950。
在930,解码偏移,该偏移指示在先前解码的像素值内的偏移位置。例如,解码偏移可包括解码偏移范围代码和偏移值代码以获得偏移值,该偏移值标识在当前图片中的先前解码的(例如,先前重构的)像素值的1-D词典内的偏移位置。解码偏移还可包括使用伪2-D词典模式或帧间伪2-D词典模式来解码具有用于标识先前像素值的X和Y偏移值的二维偏移。此外,当使用帧间伪2-D词典模式时,参考图片信息可(例如,与该偏移分开地)被解码。
在940,解码长度,该长度指示来自在930处解码的偏移的正被预测的像素的数目。例如,解码长度可包括解码长度范围代码和长度值代码。
在950,从在偏移处的一个或多个先前像素值中预测一个或多个当前像素值。一个或多个当前像素值可使用与一个或多个先前像素值相同的像素值(例如,YUV或RGB分量值)来精确地预测出,而无需任何残留值或其他修改。正被预测的像素值的数目由长度来指示。
一个或多个当前像素值在被预测出后可被用于(例如,使用针对当前块的水平或垂直扫描次序)重构二维视频图片或图像。
图10是用于使用1-D词典模式来解码像素值的示例方法1000的流程图。在1010,在比特流中接收经编码的数据。例如,经编码的数据可以是经编码的视频数据和/或经编码的图像数据。
在1020,使用1-D词典模式来解码多个当前像素值。1-D词典模式将先前解码的像素值(例如,当前图片中先前重构的像素值)存储在1-D词典中。解码多个当前像素值包括执行操作1030到1070。
在1030,解码偏移范围代码。偏移范围代码指示针对偏移值代码的比特数。例如,可能的偏移值可被划分成多个范围(例如,如以上在表1中描绘的),其中偏移范围代码指示范围以及用于偏移值代码的比特数。
在1040,(使用1030处指示的比特数)解码偏移值代码以产生偏移值。偏移值标识在先前解码的像素值的1-D词典内的位置。如果水平扫描1-D词典和垂直扫描1-D词典两者都被使用,则该偏移值可标识该词典内与当前像素的扫描次序(例如,当前块的扫描次序)相对应的位置。
在1050,解码长度范围代码。长度范围代码指示针对长度值代码的比特数。例如,可能的长度值可被划分成多个范围(例如,如以上在表2中描绘的),其中长度范围代码指示范围以及用于长度值代码的比特数。
在1060,(使用1050处指示的比特数)解码长度值代码以产生长度值。长度值指定正被预测的像素数。
在1070,使用偏移值和长度值从至少一个词典中的像素值中预测当前像素值。可用与当前像素值相对应的扫描次序(例如,水平或垂直扫描次序)从存储先前像素值的1-D词典中的相应像素值中预测当前像素值。在1-D词典中的位置由偏移值来标识,并且正被预测的当前像素值的数目由长度值指示。当前像素值可使用与词典中的先前像素值相同的像素值(例如,YUV或RGB分量值)来精确地预测,而无需任何残留值或其他修改。
当前像素值在被预测出后可被用于(例如,使用针对当前块的水平或垂直扫描次序)重构二维视频图片或图像。
XI.针对用1-D和伪2-D词典模式来编码的创新
本章节呈现了针对可适用于1-D、伪2-D和/或帧间伪2-D词典模式的编码的各创新。一些创新涉及找出词典内的匹配像素值和/或先前重构的像素值,而其他创新涉及用匹配模式信号化和提早终止的成本。
A.1-D词典模式中基于散列的匹配
在一些实现中,视频或图像编码器使用基于散列的搜索技术来标识匹配像素值。在基于散列的搜索技术的特定实现中,每1个像素(例如,一起处理像素的分量(诸如Y、U和V分量或R、G和B分量)的每个经组合的像素)、每2个像素、每4个像素及每8个像素地计算并存储散列值。例如,在将像素值添加到词典(例如,添加到1-D词典中)时,可创建针对当前像素是其一部分的每1个像素、2个像素、4个像素和8个像素的组合的散列值。作为示例,第一像素值可被编码和添加到1-D词典。第一像素值的散列值可被确定并添加(例如到散列表)。第二像素值可被编码并添加到1-D词典。第二像素值的散列值可被确定并添加。此外,2像素组合(例如,第一像素值和第二像素值)的散列值可被计算并添加,并且附加像素值被添加到1-D词典。
随后执行匹配以查看该散列中的一个像素值(或多个像素值)是否匹配正被编码的一个当前像素值(或多个当前像素值)。首先,作出检查以使用经散列化的像素值(例如,通过创建1个当前像素值的散列并将该散列与词典中的先前1个像素值的散列进行比较)来匹配每1个像素值。如果找到1个像素匹配,则编码器可检查可从当前像素匹配多少像素以确定长度(从当前像素匹配的像素数)。如果找到为2的匹配长度(例如,如果当前像素值匹配词典中的特定偏移处具有长度2的像素值),则匹配可以对2个及以上的像素(例如,在词典中的其他偏移处具有为2或更多的长度的像素值可匹配当前像素)继续,而无需再为当前像素检查1个像素的散列。类似地,如果找到为4的匹配长度,则散列检查始于4个及以上的像素,并且类似地始于8个像素。在一些实现中,散列搜索是对1个像素、2个像素、4个像素和8个像素实现的。在其他实现中,散列搜索可使用更多或更少的像素。
作为示例,考虑以下面的八个像素值(具有所指示的值和位置,例如p-3是词典中倒退三个像素的像素,该像素具有为3的像素值)结束的词典:
[…4(p-8),3(p-7),4(p-6),7(p-5),1(p-4),3(p-3),4(p-2),5(p-1)]
当前像素将由编码器进行编码:
3(p0),4(p1),7(p2),1(p3),6(p4),2(p5)
编码以散列编码模式通过检查1像素p0的散列值开始。p0的散列值匹配p-3的1像素散列值(并且p0和p-3两者都具有为3的像素值)。散列匹配仅确定检查的开始位置。从该开始位置,编码器还需要检查匹配像素值的实际数目。因此,编码器检查匹配像素值的长度。在该示例中,编码器检查是否p0==p-3(p0和p-3两者都具有为3的像素值,因此为是),随后检查是否p1==p-2(两者都具有为4的像素值,因此为是),随后检查是否p2==p-1(这些像素值不匹配,7!=5,因此编码器停止并确定匹配长度为2)。接着,编码器开始从针对两个像素的散列值中检查(由于具有为2的长度的匹配已经被找到,因此编码器不再检查1像素的散列匹配)。针对p0p1的散列值匹配具有为p-7p-6的值的2像素。随后,编码器检查匹配像素值的长度。在该示例中,编码器检查是否p0p1==p-7p-6(两者都具有为3,4的像素值,因此为是),随后检查是否p2==p-5(两者都具有为7的像素值,因此为是),随后检查是否p3==p-4(两者都具有为1的像素值,因此为1),随后检查是否p4==p-3(这些像素值不匹配,6!=3,因此编码器停止并确定匹配长度为4)。编码器可随后继续检查4个像素的散列匹配以查看是否更长的匹配长度可被找到(并最终具有8个像素的散列匹配)。当编码器完成检查时,当前像素值将用所找到的最大匹配长度来编码。
即使词典(例如,1-D词典)中的像素值(或多个像素值)与当前像素值具有相同的散列值,匹配仍被执行以查看词典中的这些像素值是否可被用于预测。例如,1-D词典中的像素的散列值可与当前像素的散列值相同。1-D词典中的散列值仍需要被比较以确定当前像素的像素值是否相同(即,不同的像素值可具有相同的散列值)。
在一些实现中,即使针对一个或多个当前像素找到了匹配,用匹配模式使用偏移和长度来编码该一个或多个当前像素的成本(例如,在比特数方面的成本)可大于直接编码这一个或多个当前像素的成本(例如,在比特数方面的成本)。在这种情况下,一个或多个当前像素可被直接地编码(例如,编码器可为一个或多个当前像素从匹配模式切换到直接模式,这可通过逸出代码或标志在比特流中标识出)。编码器可在需要时(例如,在逐像素的基础上、在逐块的基础上或在某一其他基础上)在匹配模式和直接模式之间切换。
在一些实现中,提早终止可被编码器执行。例如,如果足够的像素值(例如,N个像素值)已被处理,并且平均匹配长度(对于直接模式而言,匹配长度可被认为是1)小于阈值(例如,为T的阈值),则词典模式估计可(例如,在逐块的基础上)被提早终止。例如可终止词典模式,并且可使用其他编码模式来重新编码图片,或者可对图片的剩余部分或图片的一部分(例如,当前块)终止词典模式。提早终止可在平均匹配长度足够小使得词典模式将比其他编码模式更低效(例如比正常的帧内模式、正常的帧间模式等更低效)时被执行。例如,在一些实现中,平均匹配长度阈值T可以是2或3。
B.用伪2-D词典模式的基于散列的匹配
与上述针对1-D词典模式的基于散列的匹配类似,在编码期间基于散列的匹配可用伪2-D词典模式(以及用帧间伪2-D词典模式)来执行。
类似于1-D词典模式,为1个像素值、2个像素值、4个像素值和8个像素值的群组中的先前像素值创建散列值。然而,在匹配时,伪2-D词典模式(以及帧间伪2-D词典模式)始于检查8像素散列值(而不是始于1像素散列匹配)。如果找到了长度8的匹配,则最大长度应该不小于8,并且不需要检查4个或更少像素的散列值。然而,如果没有找到长度8的匹配,则检查始于对4个像素的匹配,并以此向下到1个像素。如果8像素匹配没有通过散列匹配被找到,并且当前匹配长度为7(例如,对4个像素的散列匹配被找到并且从那个开始位置,编码器实际上发现有7个匹配像素),则编码器可在这里终止,因为不存在对8个像素的匹配。
C.用于使用词典模式来编码像素值的示例方法
可提供用于使用1-D词典模式、伪2-D词典模式和/或帧间伪2-D词典模式来编码像素值的各方法。编码可包括计算先前像素值(例如,经重构的像素值)的散列值并将这些散列值与要被编码的当前像素值的散列值进行比较。匹配可用偏移和长度(例如,在1-D词典中或图片中的先前编码的值)来标识并被编码。如果没有找到匹配,则编码可用直接模式执行。
图11是用于使用词典模式来编码像素值的示例方法1100的流程图。在1110,用词典模式(例如,1-D词典模式、伪2-D词典模式或帧间伪2-D词典模式)编码一个或多个当前像素值。编码当前像素值包括执行根据1120到1150的操作。
在1120,计算先前编码的像素值(例如,经重构的像素值)的散列值。例如,可计算1个像素、2个像素、4个像素和8个像素的组合的散列值。
在1130,计算要被编码的一个或多个当前像素值的散列值。
在1140,将一个或多个当前像素值的散列值与先前编码的像素值的散列值进行比较以确定是否找到匹配。一旦找到匹配(例如,针对1像素值),则可确定匹配的像素的长度。
在1150,当找到匹配时,使用偏移和长度来编码一个或多个当前像素值。例如,偏移和长度可指示1-D词典中当前像素值被预测的位置或在先前重构的图片内(例如对于伪2-D词典模式或帧间伪2-D词典模式使用X和Y偏移值)的位置。
Claims (24)
1.一种在具有视频解码器或图像解码器的计算设备中的方法,该方法包括:
在比特流中接收针对图片的经编码的数据;以及
从经编码的数据中解码一个或多个当前像素值,包括:
从所述经编码的数据中解码偏移,该偏移指示在先前解码的像素值内的偏移位置;
从所述经编码的数据中解码长度;以及
从在所述先前解码的像素值中的所述偏移位置处的一个或多个对应像素值中预测所述一个或多个当前像素值,其中正被预测的像素的数目由所述长度来指示。
2.如权利要求1所述的方法,其特征在于,所述一个或多个当前像素值和所述一个或多个对应像素值是经组合的YUV像素值。
3.如权利要求1所述的方法,其特征在于,所述偏移指示在先前解码的像素值的一维词典内的偏移位置,并且其中所述一个或多个当前像素值是根据1-D词典模式来解码的。
4.如权利要求3所述的方法,其特征在于,解码所述偏移包括:
解码偏移范围代码,所述偏移范围代码指示偏移值的偏移值范围以及要解码的比特数;以及
基于所述偏移范围代码,从所指示的所述偏移值的比特数中解码所述偏移值;
其中所述一维词典内的偏移位置由所述偏移值标识。
5.如权利要求3所述的方法,其特征在于,进一步包括:
将经解码的一个或多个当前像素值添加到所述一维词典。
6.如权利要求3所述的方法,其特征在于,所述一维词典是水平扫描一维词典,所述方法进一步包括:
将经解码的一个或多个当前像素值按水平扫描次序添加到所述水平扫描一维词典;以及
将经解码的一个或多个当前像素值按垂直扫描次序添加到垂直扫描一维词典。
7.如权利要求3所述的方法,其特征在于,进一步包括:
确定所述一维词典的尺寸;以及
当所述一维词典的尺寸大于预定的最大值时,降低所述一维词典的尺寸。
8.如权利要求1所述的方法,其特征在于,解码所述长度包括:
解码长度范围代码,所述长度范围代码指示长度值的长度值范围以及要解码的比特数;以及
基于所述长度范围代码,从所指示的所述长度值的比特数中解码所述长度值;
其中正被预测的像素的数目由所述长度值来标识。
9.如权利要求1所述的方法,其特征在于,所述一个或多个当前像素值是用匹配模式来解码的,所述匹配模式从所述先前解码的像素值中的所述一个或多个对应的像素值中预测所述一个或多个当前像素值,所述方法进一步包括:
从所述经编码的数据中解码一个或多个其他当前像素值,包括:使用直接模式解码所述一个或多个其他当前像素值,在所述直接模式中,所述一个或多个其他当前像素值被直接编码而无需预测。
10.如权利要求1所述的方法,其特征在于,进一步包括:
用水平扫描次序和垂直扫描次序之一至少部分地使用经解码的一个或多个当前像素值来重构所述图片的至少一部分。
11.如权利要求1所述的方法,其特征在于,所述偏移指示在先前解码的像素值的当前图片内的X/Y偏移位置,并且其中所述一个或多个当前像素值是根据伪2-D词典模式来解码的。
12.如权利要求11所述的方法,其特征在于,解码所述偏移包括:
从第一偏移范围代码中解码X偏移值,所述第一偏移范围代码指示所述X偏移值的偏移值范围以及要解码的比特数;以及
从第二偏移范围代码中解码Y偏移值,所述第二偏移范围代码指示所述Y偏移值的偏移值范围以及要解码的比特数;
其中所述先前解码的像素值内的X/Y偏移位置是用所述X偏移值和所述Y偏移值来标识的。
13.一种在具有视频解码器或图像解码器的计算设备中的方法,该方法包括:
在比特流中接收针对图片的经编码数据;以及
使用1-D词典模式从经编码的数据中解码多个当前像素值,包括:
解码偏移范围代码,其中所述偏移范围代码指示偏移值代码的比特数;
从所指示的比特数中解码所述偏移值代码以产生偏移值,其中所述偏移值标识在先前解码的像素值的至少一个词典中的位置;
解码长度范围代码,其中所述长度范围代码指示长度值代码的比特数;
从所指示的比特数中解码所述长度值代码以产生长度值;以及
从在所述至少一个词典中的所述位置处的相应像素值中预测所述当前像素值,所述位置由所述偏移值以及由所述长度值指示的正被预测的当前像素的数目来标识。
14.如权利要求13所述的方法,其特征在于,所述至少一个词典包括:
水平扫描一维词典;以及
垂直扫描一维词典。
15.如权利要求14所述的方法,其特征在于,进一步包括:
将经解码的多个当前像素值按水平扫描次序添加到所述水平扫描一维词典;以及
将经解码的多个当前像素值按垂直扫描次序添加到所述垂直扫描一维词典。
16.如权利要求13所述的方法,其特征在于,进一步包括:
用水平扫描次序和垂直扫描次序之一至少部分地使用经解码的多个当前像素值来重构所述图片的至少一部分。
17.一种在具有视频编码器或图像编码器的计算设备中的方法,该方法包括:
编码图片的数据,包括使用预测模式来编码所述一个或多个当前像素值,所述编码包括:
计算先前编码的像素值的散列值;
计算要被编码的所述一个或多个当前像素值的散列值;
确定所述一个或多个当前像素值的散列值是否匹配所述先前编码的像素值的散列值;
当匹配被找到时,使用偏移和长度来编码所述一个或多个当前像素值,所述偏移和长度从匹配的先前编码的像素值中预测所述一个或多个当前像素值。
18.如权利要求17所述的方法,其特征在于,所述先前编码的像素值被存储在一维词典中。
19.如权利要求17所述的方法,其特征在于,所述一个或多个当前像素值和所述先前编码的像素值是经组合的YUV像素值、经组合的RGB像素值和经组合的GBR像素值之一。
20.如权利要求17所述的方法,其特征在于,计算所述先前编码的像素值的散列值包括:
计算先前编码的像素值中的每1个像素值的散列值;计算所述先前编码的像素值中的每2个像素值的散列值;计算所述先前编码的像素值中的每4个像素值的散列值;以及
计算所述先前编码的像素值中的每8个像素值的散列值。
21.如权利要求17所述的方法,其特征在于,进一步包括:
如果用来自所述先前编码的像素值的预测来编码像素值的成本大于用直接模式来编码所述像素值的成本,则切换到直接编码所述像素值的直接编码模式。
22.如权利要求17所述的方法,其特征在于,进一步包括:
计算平均匹配长度;
在所述平均匹配长度小于阈值时,切换到除针对当前块的词典模式以外的编码模式。
23.一种计算设备,包括处理单元和存储器,所述计算设备适于执行如权利要求1-22中任一项所述的方法。
24.一个或多个存储计算机可执行指令的计算机可读介质存储介质,所述计算机可执行指令使得计算设备因此被编程为执行如权利要求1-22中的任一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2014/072774 WO2015131304A1 (en) | 2014-03-04 | 2014-03-04 | Dictionary encoding and decoding of screen content |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105230021A true CN105230021A (zh) | 2016-01-06 |
CN105230021B CN105230021B (zh) | 2018-11-09 |
Family
ID=54054319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480029702.0A Active CN105230021B (zh) | 2014-03-04 | 2014-03-04 | 屏幕内容的词典编码和解码 |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP3114840A4 (zh) |
KR (1) | KR102210946B1 (zh) |
CN (1) | CN105230021B (zh) |
WO (1) | WO2015131304A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110140356A (zh) * | 2017-01-03 | 2019-08-16 | 诺基亚技术有限公司 | 使用广角帧内预测的视频和图像编码 |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10523956B2 (en) * | 2016-11-16 | 2019-12-31 | Citrix Systems, Inc. | Multi-pixel caching scheme for lossless encoding |
KR101850649B1 (ko) | 2017-05-11 | 2018-04-20 | 중앙대학교 산학협력단 | 센서스 변환 기반의 스테레오 정합 장치 및 방법 |
CN111836051B (zh) * | 2019-04-15 | 2023-07-14 | 深信服科技股份有限公司 | 一种桌面图像编码、解码方法及相关装置 |
EP4107956A4 (en) | 2020-03-21 | 2023-06-21 | Beijing Bytedance Network Technology Co., Ltd. | COMBINATION OF SUBIMAGES AND EXTENSIBILITY |
CN113365065B (zh) * | 2021-06-09 | 2024-04-26 | 湖南大学 | 用于rpa机器人屏幕录制的无损视频编码方法和解码方法 |
CN113709553A (zh) * | 2021-09-30 | 2021-11-26 | 深圳市欢太数字科技有限公司 | 一种屏幕录制方法、装置、芯片和终端 |
CN115866287B (zh) * | 2023-02-22 | 2023-05-05 | 深圳市网联天下科技有限公司 | 一种智慧校园管理平台的数据高效传输方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7023924B1 (en) * | 2000-12-28 | 2006-04-04 | Emc Corporation | Method of pausing an MPEG coded video stream |
CN103281538A (zh) * | 2013-06-06 | 2013-09-04 | 上海交通大学 | 基于滚动哈希和块级别帧内预测的帧内编码方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005503056A (ja) * | 2001-09-12 | 2005-01-27 | ボネット, ジェレミー エス. デ | 最小限の視覚的歪みでイメージのLempel−Ziv圧縮率を増大させる変換 |
CN101420606A (zh) * | 2007-10-23 | 2009-04-29 | 青岛海信电器股份有限公司 | 图像处理方法和装置 |
CN102113326A (zh) * | 2008-08-04 | 2011-06-29 | 杜比实验室特许公司 | 重叠块差异估计和补偿体系结构 |
-
2014
- 2014-03-04 WO PCT/CN2014/072774 patent/WO2015131304A1/en active Application Filing
- 2014-03-04 EP EP14884822.9A patent/EP3114840A4/en not_active Withdrawn
- 2014-03-04 CN CN201480029702.0A patent/CN105230021B/zh active Active
- 2014-03-04 KR KR1020167027340A patent/KR102210946B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7023924B1 (en) * | 2000-12-28 | 2006-04-04 | Emc Corporation | Method of pausing an MPEG coded video stream |
CN103281538A (zh) * | 2013-06-06 | 2013-09-04 | 上海交通大学 | 基于滚动哈希和块级别帧内预测的帧内编码方法 |
Non-Patent Citations (2)
Title |
---|
DAVID SALOMON: "《Data Compression:The Complete Reference Fourth Edition》", 31 December 2007 * |
张培君等: "融合全色度LZMA与色度子采样HEVC的屏幕图像编码", 《电子信息学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110140356A (zh) * | 2017-01-03 | 2019-08-16 | 诺基亚技术有限公司 | 使用广角帧内预测的视频和图像编码 |
CN110140356B (zh) * | 2017-01-03 | 2023-10-27 | 诺基亚技术有限公司 | 使用广角帧内预测的视频和图像编码 |
Also Published As
Publication number | Publication date |
---|---|
EP3114840A4 (en) | 2017-03-08 |
KR20160129076A (ko) | 2016-11-08 |
KR102210946B1 (ko) | 2021-02-01 |
WO2015131304A1 (en) | 2015-09-11 |
EP3114840A1 (en) | 2017-01-11 |
CN105230021B (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105432077B (zh) | 在切换色彩空间时调整量化/缩放和逆量化/缩放 | |
CN105684409B (zh) | 在视频和图像编码和解码中使用散列值来表示各块 | |
CN105493507B (zh) | 用于帧内块复制的残余预测 | |
CN105684441B (zh) | 视频和图像编码中的基于散列的块匹配 | |
CN105960802B (zh) | 切换色彩空间时对编码和解码的调整 | |
CN105264888B (zh) | 用于对色彩空间、色彩采样率和/或比特深度自适应切换的编码策略 | |
CN105474645B (zh) | 对视频数据进行解码的方法、对视频数据进行编码的方法、视频解码装置及视频编码装置 | |
CN108353167A (zh) | 译码视频数据的正负号信息 | |
CN105247871A (zh) | 帧内块复制预测中的块翻动和跳跃模式 | |
CN105230021A (zh) | 屏幕内容的词典编码和解码 | |
JP7357684B2 (ja) | ビデオ復号のための方法、装置、およびコンピュータプログラム | |
CN105556971A (zh) | 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定 | |
CN105917650A (zh) | 视频和图像编码/解码中的块向量预测 | |
CN105393537A (zh) | 用于基于散列的块匹配的散列表构建和可用性检查 | |
CN113330749A (zh) | 用于变换跳过模式和块差分脉冲编码调制的改进的残差编解码 | |
CN113557527B (zh) | 视频解码方法、视频解码器及介质 | |
CN105230023A (zh) | 色彩空间、色彩采样率和/或比特深度的自适应切换 | |
CN105359531A (zh) | 针对屏幕内容编码的编码器侧判定 | |
CN107710758A (zh) | 针对视频译码处理高动态范围及广色域视频数据 | |
CN106664405A (zh) | 用调色板模式对经逸出编码的像素的稳健编码/解码 | |
CN105659606A (zh) | 用于视频和图像编码和解码的基础颜色索引图模式的特征 | |
CN105493505A (zh) | 统一的帧内块复制和帧间预测模式 | |
CN105379270A (zh) | 颜色分量间残余预测 | |
CN105765974A (zh) | 用于视频和图像编码和解码的帧内块复制预测模式的特征 | |
CN105706450A (zh) | 根据基于散列的块匹配的结果的编码器决定 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |