CN104704828A - 有界率近无损和无损图像压缩 - Google Patents

有界率近无损和无损图像压缩 Download PDF

Info

Publication number
CN104704828A
CN104704828A CN201380051916.3A CN201380051916A CN104704828A CN 104704828 A CN104704828 A CN 104704828A CN 201380051916 A CN201380051916 A CN 201380051916A CN 104704828 A CN104704828 A CN 104704828A
Authority
CN
China
Prior art keywords
sample
value
encoder
bit
quantization parameter
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
Application number
CN201380051916.3A
Other languages
English (en)
Other versions
CN104704828B (zh
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.)
Avago Technologies International Sales Pte Ltd
Original Assignee
Zyray Wireless Inc
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 Zyray Wireless Inc filed Critical Zyray Wireless Inc
Publication of CN104704828A publication Critical patent/CN104704828A/zh
Application granted granted Critical
Publication of CN104704828B publication Critical patent/CN104704828B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/15Data rate or code amount at the encoder output by monitoring actual compressed data size at the memory before deciding storage at the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/17Methods 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 an image region, e.g. an object
    • H04N19/176Methods 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 an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods 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/182Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Abstract

一种系统调整用于编码图像样本(例如,像素分量)的量化参数。该系统根据隐式速率控制获取用于对当前图像像素编码的量化参数,并且获得在与所述样本相距特定距离内的另一个图像样本的测度。在该测度满足预定标准时,该系统调整量化参数,在调整量化参数之后对像素编码,并且向解码系统明确地指示该量化参数的调整。

Description

有界率近无损和无损图像压缩
相关申请的交叉引用
本申请要求于2012年10月3日提交的美国临时申请序号61/709,316以及于2013年10月2日提交的题为“Bounded Rate Near-Lossless AndLossless Image Compression”的美国申请号14/044,627的优先权,这两个申请的全文通过引用结合于此。
技术领域
本公开涉及图像处理。本公开还涉及用于图像传输和显示的压缩和解压缩技术。
背景技术
巨大的客户需求促使了显示器技术、图像分析算法以及通信技术的高速发展和复杂图像显示装置的广泛应用。仅举几例,这种装置的范围从驱动家庭影院的高分辨率显示器的DVD和蓝光播放器到也具有非常高的分辨率显示器的现在普遍存在的智能电话和平板电脑。图像处理技术的提高继续扩大这些装置的功能。
附图说明
图1示出了源(source)将编码数据传送给接收器(sink)的一个实例架构。
图2为编码器的一个实例。
图3示出了并行处理架构。
图4示出了预测器和量化器的一个实例。
图5示出了实例样本位置。
图6示出了压缩样本的编码格式的实例。
图7示出了虚拟缓冲模型的一个实例。
图8示出了一个实例解码器。
图9示出了编码的实例逻辑。
图10示出了解码的实例逻辑。
图11示出了一个实例编码和解码系统。
图12示出了图片和图片参数集的一个实例。
图13示出了编码器的另一个实例。
图14示出了解码器的另一个实例。
图15示出了块搜索的样本组。
图16示出了索引颜色历史的实例。
图17示出了使用子流多路复用的切片的一部分的实例。
图18示出了子流多路分解逻辑的实例。
图19示出了子流多路复用逻辑的一个实例。
图20示出了切片定时和延迟的一个实例。
图21示出了形成9x1 SAD的3x1部分SAD的实例。
图22示出了用于编码器平坦度检查的原始像素的实例。
图23示出了显示系统的实例。
图24示出了编码器的实例。
图25示出了用于动态调整由编码器、解码器或这两者使用的速率控制参数的系统的实例。
图26示出了忙碌像素区域与光滑像素区域相邻的图像内容的一个实例。
图27示出了单元重排过程的实例。
具体实施方式
图1示出了源150通过通信链路154与接收器152通信的一个实例架构100。源150或接收器152可以存在于操控图像数据的任意装置内,例如,DVD或蓝光播放器、智能电话、平板电脑或任意其他装置。源150可以包括保持虚拟缓冲器114的编码器104。接收器152可以包括解码器106、存储器108以及显示器110。编码器104接收源数据112(例如,源图像数据),并且可以保持预定容量的虚拟缓冲器114,以模制或模拟临时储存压缩输出数据的物理缓冲器。编码器104还可以评估编码符号,以通过预定的比特率进行传输。编码器104可以指定比特率,仅举两例,以每个像素的比特为单位或者以每个时间单位的比特为单位。
例如,通过保持用于编码的比特数减去输出的比特数的累计计数,编码器104可以确定比特率。虽然编码器104可以在将编码数据116传输给存储器108之前,使用虚拟缓冲器114来模制数据的缓冲,但是预定容量的虚拟缓冲器和输出比特率不必等于编码器内的任何缓冲器的实际容量或者实际输出比特率。而且,编码器104可以响应于虚拟缓冲器的充溢度或空虚度,调整用于编码的量化步长。下面,描述示例性编码器104和编码器104的操作。
解码器106可以从存储器108中获得编码数据116。而且,解码器106可以确定预定的虚拟缓冲器的容量和比特率,并且可以确定编码器104用于编码该编码数据116的量化步长。在解码器106将编码数据116解码时,解码器106还可以确定虚拟缓冲器114的充溢度或空虚度,并且调整用于解码的量化步长。即,解码器106可以跟踪编码器104的操作,并且确定编码器104所使用的量化步长。解码器106对编码数据116解码,并且将视频数据118提供给显示器110。在一些实施方式中,在编码数据116内没有量化步长,节省了大量带宽。下面描述解码器106和编码器104的实例及其操作。
存储器108可以实施为静态随机存取存储器(SRAM)、动态RAM(DRAM)、固态驱动器(SSD)、硬盘或其他类型的存储器。显示链路154可以是无线或有线连接或有线和无线连接的组合。编码器104、解码器106、存储器108以及显示器110可以存在于单个装置(例如,智能电话)内。或者,编码器104、解码器106、存储器108以及显示器110的任意子集可以存在于给定的装置内。例如,蓝光播放器可以包括解码器106和存储器108,并且显示器110可以是与蓝光播放器进行通信的分体显示器。
图2示出了编码器200的实例。编码器200对视频数据202编码。例如,视频数据202可以采用一系列连续帧202,…,202-x的形式。帧202,…,202-x可以采用像素分量的二维矩阵的形式,可以在任意颜色空间内表示该形式,例如,红/绿/蓝(RGB)、YUV、亮度Y/色度蓝色Cb/色度红色Cr(YCbCr)、亮度Y/色度橙色/色度绿色(YCoCg)、α、红色、绿色、蓝色(ARGB)或其他颜色空间。每个像素分量可以与空间位置对应。虽然矩阵可以重叠,以形成图片,但是在矩阵内的每个像素分量不必与在其他矩阵内的像素分量共同定位。
可以使用包括预定数量的比特(例如,每个像素分量具有8、10或12比特)的值,编码每个像素分量。作为实例,编码可以使用10比特YCbCr4:2:2、8比特YCbCr 4:2:2、10比特YCbCr 4:4:4、8比特YCbCr 4:4:4、8比特ARGB 32或8比特RGB 24编码。编码器200可以按照光栅扫描顺序接收帧的像素分量:从左到右、从上到下。在某些实现方式中,视频编码器200可以以预定速率接收像素分量。预定速率可以与每秒显示速率的实时帧对应。
视频编码器200可以包括输入、预测器&量化器204、映射和可变长度编码器(VLC)206、速率控制器208、速率缓冲器210以及存储器(例如,DRAM)212。视频编码器200接收和编码像素分量。虽然表示进入视频编码器200内的像素分量的比特数可以恒定(每个像素分量),但是表示每个编码的像素的比特数可以显著改变。编码器200可以通过减小量化步长来增大表示编码像素的比特数,或者通过增加量化步长来减少比特数。
输入、预测器&量化器204预测并且量化像素分量,产生量化残差。在某些实现方式中,输入、预测器&量化器204可以由相同帧(例如,202-0)内的先前编码并且重构的像素分量预测像素分量。映射器和可变长度编码器206编码量化残差,产生编码比特。
输入、预测器&量化器204可以使用预定的初始量化步长来量化预定量的数据,例如,视频像素数据。映射和可变长度编码器206向速率控制器208发信号,该速率控制器反过来指导输入、预测器&量化器204递增、递减或不改变量化参数,在下面更详细地进行描述。
映射和可变长度编码器206可以使用其自然数2的补码的二进制值编码量化的样本值。映射和可变长度编码器206用于编码每个值的比特数量可以由相同像素分量的编码值和与每单位样本相关联的前缀值的最近历史的组合动态地确定。
速率控制器208确定递增、递减还是不改变量化参数。速率控制器208可以执行量化步长分析,例如,通过模拟或模制以预定比特率评估的预定容量的缓冲器。模制的缓冲器可以称为虚拟缓冲器。如果虚拟缓冲器变满,那么速率控制器208可以增大或递增量化步长。如果虚拟缓冲器变空,那么速率控制器208可以减小或递减量化步长。下面相对于切片的速率控制,描述其进一步的方面。
速率控制器208可以确定虚拟缓冲器的充溢度,例如,通过对用于编码在给定数量的输入样本上接收的输入的比特计数然后减去每个样本的的预定比特率(以比特为单位)与输入样本的数量的乘积。输入样本的数量可以是一个样本。
解码器可以从初始量化步长开始对编码数据解码。在解码器对编码数据解码时,解码器还可以确定虚拟缓冲器的充溢度。通过观察用于编码与输入样本的数量对应的量的解码数据的比特量,解码器可以确定充溢度或空虚度。然后,解码器可以确定在编码器200处做出的量化步长决定。因此,编码器200不需要将量化步长显式(explicitly)传输给速率控制器或解码器内的任何其他逻辑。
图3示出了并行处理架构300。多路分解器302接收输入像素分量304,并且将每个像素分量分成组成部分,例如,α306、红色308、绿色310以及蓝色312。预测&量化块314、316、318以及320与像素分量的一个特定组成部分相关联。可以具有任何数量的这种块,这些块可以并行操作。在具有四个像素分量的格式的情况下(例如,ARGB),每个预测&量化块处理特定的分量部分。在架构300处理具有比预测&量化块更少的组成部分的像素分量时,然后,一些预测&量化块不需要操作,用于处理那些像素分量。预测&量化块314–320可以将量化残差提供给一个特定的分量映射器322、324、326以及328。分量映射器322–328还可以并行操作。
映射器322–328将映射的量化残差'E'提供给多路复用器330。多路复用器330将映射的量化残差'E'多路传输到提供给可变长度编码器334的残差流332内。或者,可以具有与每个分量映射器相关联的可变长度编码器,并且多路复用器330可以多路传输由多个可变长度编码器输出的可变长度编码的量化残差。
图4示出了预测器和量化器400的实例。预测器和量化器400包括缓冲器402、第一延迟逻辑404(实现(例如)6个样本延迟)、预测引擎406以及第二延迟逻辑408(实现(例如)3个样本延迟)。缓冲器402可以储存前一个重构图像行。预测引擎406接收当前像素分量'x'、来自第一延迟块404的前一行重构像素分量'w'、't'、's'、'g'、'c'、'b'、'd'以及'h'以及来自第二延迟块408的当前行左边的重构像素'k'、'r'、'f'、'a'。
为了使用重构的像素分量,而非输入像素分量,量化器410可以将量化残差E'提供给反向量化器412。反向量化器412反向量化所量化的残差。重构像素'Rx'由量化残差E'和来自预测引擎的预测值生成。
预测引擎406可以包括边预测引擎414、LS预测引擎416、左预测引擎418以及ABCD预测引擎420。如上所述,预测引擎406预测前一行的重构像素分量'w'、't'、's'、'g'、'c'、'b'、'd'以及'h'的当前像素分量'x'以及在当前行的左边的重构像素'k'、'r'、'f'、'a',从而产生表示像素分量'x'的残差E"。
现在,参照图5,描述预测引擎406的操作,图5示出了实例像素分量500。预测引擎406可以由上一行的相邻重构像素以及待预测像素的相同行的左边像素自适应地预测像素分量。例如,预测引擎406可以由任意重构像素't'、's'、'g'、'c'、'b'、'd'、'h'、'k'、'r'、'f'以及'a'的组合预测像素'x'。
空间预测自适应地选择边预测引擎414、LS预测引擎416、左预测引擎418以及ABCD预测引擎420这四个候选预测引擎中的一个的输出作为其用于当前像素分量的预测。考虑候选预测器,可以根据为一个或多个先前重构的像素分量确定的预测误差,进行选择。这个操作在编码器和解码器中可以相同,并且在编码数据内不需要包括任何预测控制信息。解码器可以实现相同的预测模式算法,并且推断出由编码器使用的预测模式。一旦选择了预测器,就使用所选择的预测器来预测每个样本的值。残差值E"作为预测值与实际的样本值之间的差值来计算。
LS预测引擎416
LS预测引擎416可以根据以下内容产生当前样本'x'的预测值Rx:
ABCD预测引擎420
ABCD预测引擎420可以产生预测值Px=(a+b+c+d+2)/4。这是四个相邻样本的平均值。
左预测引擎418
左预测引擎418可以将当前样本的左像素的重构值用作其预测值。换言之,Px='a'。
边预测引擎414
边预测引擎414可以使用比LS预测引擎416更多的相邻像素。边预测引擎414可以检测在当前样本'x'周围的成几个可能角度的边,并且在预测中使用该边信息。作为实例,边预测引擎414可以搜索水平的、垂直的、45度、135度、大约22.5度以及大约157.5度的边的方向。边预测引擎414可以通过两个阶段实现。第一阶段是边检测。第二阶段是边选择。
可以为预测函数指定一些选择。通过使边预测引擎414配置有参数(例如,NOLEFT=1),可以禁止使用挨着'x'位于'x'左边的重构样本值'a'。避免使用样本'a',可以允许预测、量化以及反向量化路径运转更多的时间,这可以是高吞吐量系统的一个优点,在该系统中,电路定时会导致难以快速地重构样本'a'。通过使边预测引擎414配置有参数NOLEFT=2(也称为NO2LEFT),可以禁止使用重构样本值'a'和'f','a'和'f'是挨着'x'位于'x'左边的两个样本。这允许预测、量化以及反向量化路径运转甚至更多的时间。在电路定时需要三个时钟周期来预测、量化以及反向量化时,使用NOLEFT=2,促进每个时钟一个样本的吞吐量。
可以选择性启用和禁止上面列出的四个引起的单独预测引擎。对于某些类别的内容,通过使用预测函数的子集,可以获得更好的性能。在沿着图像的左上边预测样本时,例如,可以使用左预测引擎418,下面进行规定。
NOLEFT=1选项
在NOLEFT=1时,根据以下内容,使用重构样本值'f'、'g'以及'c',由其预测Pa代替在LS预测引擎416、左预测引擎418以及ABCD预测引擎420内的重构样本值'a':
NOLEFT=2选项
在NOLEFT=2时,使用重构样本值'r'、's'、'g'以及'c',由其预测Pf和Pa代替在LS预测引擎416、左预测引擎418以及ABCD预测引擎420内的重构样本值'f'和'a'。'a'的预测可以使用与在NOLEFT中相同的方法,除了根据以下内容由Pf代替'f'以外:
Pf=(r+g+s+c+2)/4,-
NOLEFT=0、NOLEFT=1、NOLEFT=2的边预测引擎
在NOLEFT=0时,在预测中使用左边样本,并且以下内容可以应用于边检测中:
在NOLEFT=1时,在预测中不使用左边样本,并且以下内容可以应用于边检测中:
在NOLEFT=2时,在预测中不使用这两个左边样本,并且以下内容可以应用于边检测中:
参数'max_strength'可以定义为在两个样本之间差的最大可能绝对值。这个参数可以与像素数据格式相关,例如,对于8比特数据,max_strength=255,并且对于10比特数据,max_strength=1023。可以在NOLEFT=0、NOLEFT=1以及NOLEFT=2的各种情况下,应用相同的边选择逻辑,除了在NOLEFT=1或NOLEFT=2时,可以由其预测Pa代替样本值'a',并且在NOLEFT=2时,可以由其预测Pf代替样本值'f'以外:
预测选择
单元(unit)可以被视为相同分量的相邻样本的逻辑分组。例如,单元尺寸可以选择为等于2。单元尺寸可以是由单元包括的样本的数量。在替换的实施方式中,单元尺寸可以选择为具有值1、3、4或另一个值。在一个实施方式中,在单元尺寸选择为等于2时,对于一个分量的每对样本,可以使用相同分量的前一对样本评估所选择的一组(高达所有)候选预测器,并且为当前对选择为前一对执行最佳的预测器。可以在与单元未对准的界限上进行预测器的选择。可以具有某些例外,在这些例外之下限制这组候选预测器,例如,在位于左边或上面的样本不能使用时,或者例如,在不能使用一个或多个预测器时。
对于图像的第一对样本,例如,在头一行的左边的两个样本,可以选择左预测引擎418,作为预测器。进一步,对于每行的第一对样本而不是第一个样本,可以选择LS预测引擎418。可以为不能用于预测的样本值分配预先确定的值,例如,样本值的最大范围的一半。
对于其他样本对,可以根据左边这对样本的估计预测误差选择预测器,可以由所有四个预测器计算这些估计预测误差。在发现当前样本'x'的重构值时,可以如下计算当前样本的估计预测误差:
err_sample=ABS(x'-Px)
在以上方程中,Px是这四个预测器中的每个的当前样本的预测值。一个预测器的预测误差是预测器的一对样本中的两个样本的err_sample的总和。然后,选择具有最小预测误差的预测器作为相同分量的下一对样本的预测器。
要注意的是,在NOLEFT=1时,左边样本的预测误差不可用。假设当前样本是图5中的'x',那么如果NOLEFT=0,那么由左边这对样本'f'和'a'选择的预测引擎用于当前的样本对。如果NOLEFT=1,那么可以使用由可用的左边这对的最小预测误差选择的预测器,例如,如果'x'是这对中的第二样本,那么样本'r'和'f',或者如果'x'是这对中的第一样本,那么样本'r'和'k'。如果NOLEFT=2,如果'x'是这对中的第一样本,那么可以使用由样本'r'和'k'的最小预测误差选择的预测器,或者如果'x'是这对中的第二样本,那么样本'k'及其紧接在左边的样本。残差或误差值E"可以确定为E"=x–Px。
可以如下获得用于未来预测中的重构样本值'x':
x'=Px+E'*QuantDivisor;
if(x'<0)x'=0;
else if(x'>MAXVAL)x'=MAXVAL;
下面限定值QuantDivisor。MAXVAL是可以由未压缩的视频样本字长编码的最大值,例如,对于10比特视频,为1023,并且对于8比特视频,为255。在一个实现方式中,Cb和Cr是非负整数。
参照图6,描述映射器和可变长度编码器206的操作,该图示出了也称为单元的样本单元600的实例。映射器和可变长度编码器206可以使用熵编码来对使用其自然数2的补码二进制值的样本值编码。用于编码每个值的比特数可以由相同分量的编码值的最近历史和与样本的每个单元605相关联的前缀值的组合动态地确定。在某些实现方式中,单元605包括特定分量类型的两个样本610,例如,Y、Cb或Cr、或α、R、G或B。在一些实现方式中,Cb和Cr在一个单元内共同编码。相同的一组分量可以用于预测比特的数量。
样本的每个单元605具有单元样本尺寸。单元样本尺寸可以是主单元内的每个样本的比特的尺寸。单元605样本尺寸可以足够大,以便编码包含在单元505内的每个样本,并且可以更大。一个样本的尺寸可以是用于以2的补码编码的样本值的比特数。例如,值0具有尺寸0,值-1具有尺寸1,值-2或1具有尺寸2,值-4、-3、2或3具有尺寸3,以此类推。
单元605可以具有最大样本尺寸,该尺寸是在单元605中的所有样本的尺寸的最大值。单元605还可以具有预测尺寸。在一个实现方式中,如果预测尺寸大于或等于最大样本尺寸,那么单元605样本尺寸等于预测尺寸。在一个实现方式中,如果最大样本尺寸大于预测尺寸,那么在前缀值612中编码始终是非负的差值,并且最大样本尺寸可以用作单元605样本尺寸。在另一个实现方式中,如果最大样本尺寸与预测尺寸不同,那么在前缀值612中编码可以是正或负的差值。前缀值可以使用一元编码,例如,对于非负前缀值的实现方式,值0具有代码1(二进制),值1具有代码01、值2具有代码001,以此类推。单元样本尺寸是预测尺寸与前缀值612的总和。对于10比特视频,最大可能样本尺寸是10,并且最小可能样本尺寸是0,因此,最大可能前缀值是10,占据了11比特,即,0000 0000 001。对于带符号的前缀值的实现方式,带符号的前缀值可以是一元编码。
预测尺寸可以是先前编码的样本的尺寸的函数。在一个实现方式中,假设单元尺寸是2,预测尺寸是前两个样本(例如,先前单元)的相同分量的样本的尺寸的平均值(通过四舍五入)。如果单元尺寸是4,那么预测尺寸可以是先前单元的相同分量的四个样本的尺寸的平均值。如果单元尺寸是3,那么预测尺寸可以由先前单元的相同分量的最后两个样本的尺寸的平均值生成,从而避免除以3。或者,如果单元尺寸是3,那么预测尺寸可以生成为相同分量的先前单元的3个样本的加权总和。加权可以是(例如)(1/4,1/4,1/2)。
例如,如果在量化之后,图像的分量促使样本的尺寸对于很多连续的样本是2,那么预测尺寸是2,并且前缀值是0。因此,前缀代码是‘1’,每个样本使用2比特编码,并且两个样本的单元总共具有5比特。在一个瞬态造成样本尺寸突然增大的情况下,前缀值编码尺寸的增大。在另一个瞬态造成样本尺寸突然减小的情况下,前缀值可以是0,并且单元样本尺寸可以等于预测尺寸,该预测尺寸可以超过在单元中的样本的尺寸。因此,即使其自身的尺寸更小,也可以使用等于预测尺寸的比特数编码每个样本。在瞬态之后,在样本尺寸没有另一个变化时,单元样本尺寸和预测尺寸再次聚集。考虑样本的尺寸在单元之间不同,尤其在尺寸不非常快速地频繁变化时,这种技术能非常有效地编码样本。
Δ尺寸单元可变长度编码(DSU-VLC)方案促进在硬件内高速地有效编码和解码,这部分是因为这不取决于VLC表。由前缀值(计数0)和预测尺寸确定待解码的单元内的比特数,这可以在编码或解码当前单元之前确定。编码或解码每个时钟的一个单元可行,并且更快速解码的方法也可行。对于更大的吞吐量,编码可以并行编码多个单元。由于各种原因,单元尺寸可以选择为大于2。例如,在使用提出单元尺寸2实际上不能满足的吞吐量要求的情况下,可以选择更大的单元尺寸,在这种情况下可以使用单元尺寸3或4。
再次参照图4,量化器410使用量化参数Quant来量化残差E",这通常包括无损编码的情况。Quant可以采用的值的范围从0(代表无损)到与QuantDivisor[]的最高值对应的值(见下文)。通过下面显示的QuantDivisor和QuantOffset的一组示例性值,Quant的值的范围从0到17。
量化器410可以如下对残差值E"进行量化:
其中,可以通过截断,进行除法,例如,与在'C'语言中一样。
这组除数可以是:
int QuantDivisor[]={1,3,5,7,9,10,12,14,16,18,20,24,28,32,48,64,128,256};
这组相关联的偏移(舍入常数)可以是:
int QuantOffset[]={0,1,2,3,4,4,5,6,7,8,9,11,13,15,23,31,63,127};
在这种方法中,具有4个奇数值除数(3、5、7以及9),7个是这些奇数值除数中的一个和五个其他值中的一个的乘积,每个都是2的幂:2**N。结果,在一个实现方式中,量化函数支持4个奇数值除数。
使用QuantDivisor[]的这组特定的值,为良好的压缩提供低复杂度。要注意的是,可以使用乘以一小组优化常数值,来在硬件内进行除以奇数。
在其他实施方式中,可以选择除数,以便除数没有奇数因子。例如:
int QuantDivisor[]={1,2,4,8,16,32,64,128,256,512,1024,2048,4096};
int QuantOffset[]={0,0,1,3,7,15,31,63,127,255,511,1023,2047};
速率控制
通过速率控制技术,确定Quant的值,速率控制技术可以在编码器和解码器内同样地进行。速率控制技术可以使其决定基于最近编码的确定数量的像素分量的活动的测度(measure,度量)以及缓冲模型的充溢度。预定数量可以是(例如)3、2或某个其他数。每个编码的预定数量的像素分量可以更新Quant的值一次。
图7示出了虚拟缓冲模型700的实例。虚拟缓冲模型700与比特流源702、速率控制器208以及比特流用户706通信。虚拟缓冲模型700模制速率缓冲器的行为,其中,输出比特率是额定比特率。额定比特率可以在每个像素或每组像素的比特单元内,或者可以在其他单元内,例如,每个单位时间的比特,例如,每秒的比特。比特流用户706可以以额定速率模制比特的消耗。例如,比特流源702可以是映射器和可变长度编码器206的输出。一组像素可以包括预定数量的像素,例如,2、3、4或某个其他数量。
在创建比特时,比特进入虚拟缓冲模性700内。例如,在编码组时,将用于编码组的比特数加入模型700中。比特根据预定的方案离开虚拟缓冲模型700。例如,该方案可以在每组的比特单元内规定恒定的速率。虚拟缓冲模型700可以作为累加器708实现,其中,每个组加入一个值,并且减去其他值。或者,从虚拟缓冲模型700中移除比特的方案可以以每秒的比特为单位。或者,将比特加入缓冲模型700中或者从缓冲模型700中减去比特的时间可以比组更精细或更粗糙,并且可以使用除了组以外的结构,例如,样本、宏模块、切片或图片。为了模制先进先出(FIFO)缓冲器的行为,在从充溢度中减去比特数(这可能另外产生充溢度的负值)时,虚拟缓冲模型700的充溢度可以固定为0。
在用于虚拟缓冲模型700内的输出比特率小于或等于在编码器中从速率缓冲器中移除比特的实际比特率并且速率控制器704确保虚拟缓冲模型700不溢流时,速率缓冲器也不溢流。更一般地,编码器可以使用虚拟缓冲模型700来管理编码器产生比特的速率,以便稍后可以应用于编码器的比特流中的另一个虚拟缓冲模型不溢流或下溢。比特离开虚拟缓冲模型的比特率可以在任意时间变成任一个支持值。如果比特离开速率缓冲器的实际速率等于或接近比特离开虚拟缓冲模型的速率,那么编码器的比特率可以通过有效瞬时响应设为任何支持的比特率。由于速率控制使用虚拟缓冲模型管理产生比特的速率,所以速率控制函数不需要监控比特离开速率缓冲器的速率。
在一个实现方式中,编码器和解码器进行相同的速率控制(RC)决定,这些决定控制量化器的值或Quant,编码器不传输特别表示量化控制的任何比特。速率控制可以取决于先前组的由样本的尺寸测量的活动以及虚拟缓冲模型的充溢度和在先前样本中的(如果有的话)边的强度的测度。速率控制可以使用几个可配置的阈值。单元605被组织到组710内。组710用于组织样本,以促进缓冲模式和速率控制。在另一个示例性实施方式中,解码器不进行与编码器相同的速率控制决定,并且编码器传输指示至少一部分量化控制的比特。
在一个实现方式中,编码器(包括速率控制器208)确保虚拟缓冲模型700决不超过限定的最大充溢度,同时选择量化等级,以使总体主观图像质量最佳。可以比较容易地实现某些图像和比特率,而对于其他图像和比特率,缓冲器充溢度可以变化并且偶尔接近或达到虚拟缓冲模型700的尺寸,并且量化可以改变并且可以偶尔达到最大容许值。
虚拟缓冲模型700可以表示预定尺寸BufferSize的FIFO。可以根据特定的应用,选择BufferSize的值。更大的尺寸通常促进更好地压缩规定的比特率和图像内容,反之亦然。更大的尺寸还表示在物理速率缓冲器内可用的更大量的空间以及潜在增大的潜伏期。在一个示例性实施方式中,在图片的开始,缓冲模型700初始化为空。或者,虚拟缓冲模型700充溢度可以从一个图片中保持到下一个图片中,或者可以初始化为某个其他值。
在对样本的每个组710编码时,将用于编码组的比特数加入在虚拟缓冲模型700内的累加器。在编码每个组之后,从累加器中减去等于每个组的比特的预算的数量(例如,额定比特率),结果固定为0,以实施非负充溢度。在解码器模仿编码器的速率控制的实施方式中,在解码器中发生相同的操作:在对每个组解码时,将组占据的比特数加入模型中,并且减去额定比特率,例如,每个组的比特的预算数量,结果固定为0。这样,编码器和解码器缓冲模型在每个图片内为每组精确地追踪。通过调整Quant值,速率控制器208可以保证缓冲器充溢度决不超过定义的最大值,例如,缓冲尺寸。
在一个实施方式中,在每个图片的开始,量化值Quant初始化为0,与无损编码对应。在另一个实施方式中,Quant值初始化为非零值。可以动态地调整Quant值,以免缓冲模型溢流,同时使压缩图像质量最佳。速率控制算法可以促进以低比特率对困难图像的编码,具有最小可见的量化误差,以及以更高的比特率对困难图像的编码,没有可见的量化误差。
在一个实施方式中,测量每组的活动等级。活动等级可以是在组中的每个单元的最大量化残差尺寸,乘以在单元内的样本数(例如,2、3或4),加上1(与前缀值0对应),在该组内的所有单元计算总和。在量化之后,量化残差尺寸使用Quant的当前值。作为每个单元的2个样本以及每个组的3个单元的实例,样本0和1的比特数分别是SampleSize[0]和SampleSize[1]。假设单元0的这两个样本的最大值是MaxSizeUnit[0]=MAX(SampleSize[0],SampleSize[1]),那么该组的活动等级是RcSizeGroup=MaxSizeUnit[0]+1+MaxSizeUnit[1]+1+MaxSizeUnit[2]+1。在下面显示的实例中计算在最后的组中编码的比特的实数的另一个参数(例如,BitsCodedCur)也用于确定Quant值应增大、减小还是不变。
下面描述虚拟缓冲尺寸是16Kbits的实例的量化参数Quant的控制。在这个实例中,“MaxBitsPerGroup”表示在每组比特内的预定的数据速率。Offset[]是根据缓冲模型的充溢度(由“Buffer_fullness”表示,并且与由BufTh1、BufTh2等表示的各种阈值进行比较)调整“target_activity_level”的一组值:
可以为16Kbits(16,384比特)的缓冲模型尺寸设置以比特为单元的缓冲器充溢度的14个阈值(BufTh1到14),作为{1792,3584,5376,7168,8960,10752,12544,13440,14336,15232,15456,15680,15960,16240}。可以为Target_activity_level设置15个偏移值(offset[0到14]),作为{20,10,0,-2,-4,-4,-8,-10,-10,-10,-10,-12,-12,-12,-12}。
通过由两个连续的阈值限制的任何范围的缓冲器充溢度(例如,BufThl<=Buffer_fullness<BufTh2),具有由MIN_QP和MAX_QP规定的Quant范围,允许使用速率控制器208。这有助于调节Quant的变化,以在缓冲器等级较低时避免过度量化,并且避免在缓冲器充溢度较高时,表面使用过多对视觉质量没有帮助的更低有效位。根据缓冲器充溢度等级,分别从具有实例默认值{0,0,1,2,2,3,4,8,8,8,13,14,15,16,17}的15个值的阵列minQP[0to 14]以及具有实例默认值{2,2,2,3,3,7,9,10,11,12,13,14,15,16,17}的15个值的阵列maxQP[0to 14]的中选择与缓冲器充溢度等级的每个范围相关联的这对参数MIN_QP和MAX_QP。
根据测量的活动等级、目标活动等级、由MIN_QP和MAX_QP指定的允许的Quant范围以及强边的强度,调整Quant值。在具有强边时,如果Quant值依然固定,那么活动等级通常大幅增大。通过检查当前组的活动等级以及先前组的活动等级以及Quant的相关值,速率控制算法检测强边的存在。在检测到强边时,速率控制算法不增大紧接在强边的存在之后的Quant值,以便避免在可以循着强边的光谱区域内更加容易可见的潜在量化噪声。可以在(例如)某个动画片内容内观察到这个因素。速率控制可以在强边之后的第二组中增大Quant值。下面,在检测强边时用作阈值的一个参数在伪码中定义为EdgeFactor。
一些实施方式避免Quant在高量化值周围过度波动,这会在一些图像中造成可见的高频率量化噪声。这些实施方式调节Quant的增大,以便在Quant值已经较高时,对于像素的两个连续组,Quant不增大。具有某些例外。然而,一旦所测量的活动等级较低,就可以允许减小Quant。在以下实例中定义为Quantlncrl_imit[0]和Quantlncrl_imit[1]的两个参数控制这些调整;其默认值可以设为11。在以下实例中,cSizeGroup表示活动等级,BitsCodedCur表示用于编码最近编码组的比特的实际数量,并且RcTgtBitsGroup表示Target_activity_level。RcTgtBitOffset[0]和RcTgtBitOffset[1]是调整目标活动等级的范围的偏移值。EdgeFactor是用于检测强边的参数。最后组的量化步长是Quant,在为当前组分配该值之前,其作为QuantPrev进行保存。
可以如下实现Quant调整的操作:
在缓冲器充溢度接近最大容许等级时,由活动等级确定的以上Quant值可以由max_QP代替:
if(Buffer_fullness>=BufTh_overflow_avoid)
*Quant=max_QP;
其中,BufTh_overflow_avoid是可编程参数。
图8示出了实例解码器800。解码器800包括速率缓冲器802、可变长度解码器(VLD)804、预测器、映射器和反向量化器(PMIQ)806以及速率控制器808。解码器800可以位于与编码器相同的装置内或者不同的装置内,并且可以从任意源中接收比特流输入,例如,存储器或通信接口。例如,解码器800可以远离编码器,并且可以通过网络接口接收输入比特流。
速率缓冲器802可以是FIFO存储器,在编码器800接收数据速率之后,该存储器可以临时储存压缩数据速率。速率缓冲器802可以与视频解码器的剩余部分整合,或者可以位于另一个模块内,并且可以与另一个存储器组合。速率缓冲器802的尺寸可以至少与用于视频编码器内的虚拟缓冲器一样大。例如,在视频编码器使用16kbits虚拟缓冲器(例如,2048个字节)的情况下,速率缓冲器可以具有相同的尺寸,即,2048个字节或更大。可以在速率缓冲器802与VLD 804之间使用准备接受的流量控制,以在速率缓冲器802空着时,控制解码操作悬挂,直到具有在速率缓冲器802内可使用的数据。
在任何规定的时间,速率缓冲器802的充溢度可以与虚拟缓冲模型的充溢度不同。这部分因为解码器虚拟缓冲模型模仿编码器虚拟缓冲模型的操作,而非解码器的操作,并且缓冲模型对指定数量的编码比特/像素乘以每次对组解码时从缓冲模型中去除在组中的像素的数量进行运算,而非比特到达解码器的实际进度。压缩比特的传输可以模制为与解压缩函数精确地同步,而在实际操作中,可以以比这个速率更快或更慢地的速率从存储器中读取速率缓冲器802的输入。这就是上述速率控制对缓冲模型(而非对速率缓冲充溢度)进行操作的一个原因。
VLD 804的输入是压缩比特流812。压缩比特流812可以包括一系列组。这些组可以包括一组单元。每个单元可以具有前缀和某个数量的样本,例如,2、3或4个样本。VLD 804运算是可变长度编码器(VLC)206函数的反函数。由于VLD 804的输入是比特流(例如,VLC编码的样本流),所以可以依次执行一部分或所有VLD运算。然而,一些VLD功能可以是流水线式。
在一个实施方式中,VLD 804使用单元尺寸2,即,每个单元具有2个样本。对于任何给定图像的编码器和解码器,单元尺寸的选择可以相同。单元尺寸通常是编码比特流的属性。
VLD 804解码操作需要在与目前编码的元件相同的元件的先前单元内确定样本的实际尺寸(例如,有效位的数量),并且从这个信息中产生预测的单元样本尺寸。这个分析可以是流水线式的。VLD 804可以对每个单元的前缀解码,每个单元的前缀可以时一元编码的。将将解码的前缀值加入预测的样本尺寸值中。所产生的样本尺寸信息表示在单元内包含的每个样本的比特的数量。VLD 804从输入比特流中提取等于前缀尺寸加上确定的样本尺寸乘以每个单元的样本数量的比特数。一旦VLD 804提取这些比特,可以通过可以是流水线式的后续解码步骤对这些比特进行多路分解和处理。
与VLC一样,计算当前组所消耗的比特数以及当前组的活动等级并将其传递给速率控制器808,用于进行速率控制。VLD 804生成RcSizeGroup和BitsCodedCur的值,并且将这些值传递给速率控制器808。
一旦提取了编码样本,这些样本就被转换成合适的格式,用于后续处理。例如,这些样本就可以转换成11比特2的补码带符号格式,具有负样本值的符号扩展。这些恒定的宽度样本值被多路分解成样本的单独的分量流,并且被发送给预测器、映射和l-Quant(PMIQ)块体806。
图9示出了用于编码的实例逻辑900。逻辑900将量化步长初始化为0(902),然后接收像素分量的单元(904)。逻辑900还使用量化步长进行量化,并且编码量化值(906)。逻辑900测量虚拟缓冲器的充溢度(908)并且基于测量的充溢度调整量化步长(910)。如果完成编码(912),那么流动可以返回(902)或完全结束;否则,流动可以在(904)处继续。
图10示出了用于解码的实例逻辑1000。逻辑1000将量化步长初始化为0(1002)。逻辑1000对编码单元解码,并且更新虚拟缓冲器(1004)。逻辑1000还使用量化步长参数去量化(1006),并且测量虚拟缓冲器的充溢度(1008)。而且,逻辑1000可以基于测量的充溢度,调整量化步长(1010)。逻辑1000确定是否完成了帧的解码(1012),如果完成的话,那么流动可以返回(1002)或完全结束;否则,流动可以返回(1004)。
操作描述
以上描述提供了支持额外特定的图像处理操作的实例架构。接下来提供这些操作中的一些的介绍。下面还进一步讨论支持图像处理操作的额外架构实现方式。
图11基于图1的实例示出了实例编码和解码系统1100。系统1100支持实时操作。可以解压缩的源数据112(例如)实时地并且按照光栅扫描顺序进入编码器104。编码器104压缩输入的像素,以形成比特流并且在其比特缓冲器210内临时储存部分比特流。比特缓冲器210的输出是显示流压缩(DSC)比特流1106的切片层。DSC比特流1106可以(例如)从编码器104实时传输给解码器106。在这方面,大量通信链路1104可以将DSC比特流1106传输给解码器106。大量传输层可以位于通信链路1104的下面,并且通信链路1104可以包括(例如)本地高速总线、WiFi链路、以太网链路、卫星链路、蜂窝(例如,3G或4G/LTE)链路。
解码器106将DSC比特流1106接收到其速率缓冲器802内,速率缓冲器802临时储存部分DSC比特流1106。解码器106对速率缓冲器802中的比特解码,以获得未压缩的像素。解码器106(例如)实时地并且按照光栅扫描顺序为显示器110输出未压缩的像素。从解码过程中输出的图像可以与输入编码过程内的图像具有相同的格式。
DSC比特流可以包括使用图片层语法编码的一系列帧。图片层语法可以包括PPS(图片参数集)和切片语法。PPS包含解码器106用于正确地解码切片层的参数。图12示出了PPS 1200的实例。
图片层可以以整个图片为单位进行操作。例如,在渐进格式视频的情况下,图片可以是帧,或者在交错格式视频的情况下,图片可以是场。每个图片可以包括整数个连续的、非重叠的、相同尺寸的、矩形切片。在编码器104中,通过该切片层指定切片编码。在解码器106中,每个切片可以单独地解码,而不干扰其他切片。每行可以具有一个切片,或者每行可以具有多个切片。在每行具有多个切片的情况下,覆盖一行的切片的比特在DSC比特流1106中通过下面描述的切片多路复用过程多路复用。每个切片可以包括一组群组,每个组可以是按照光栅扫描顺序由三个连续像素构成的组。而且,编码器104可以编码具有多个(例如,三个)熵代码的每个组,每个元件具有一个代码,并且每个代码可以是特定类型的可变长度代码(VLC)。而且,一些组可以包括一个或多个额外比特,该一个或多个额外比特用信号通知特定的解码操作。
图13示出了编码器1300的另一个实例。DSC编码过程生成可以精确地符合独立指定的bpp(每个像素的比特)速率的比特流。可以根据每个像素时间的比特,指定bpp率,可以在算法上指定,这是因为像素时间的单元在编码器1300的输入和输出都相同。编码每个像素或一组像素的比特数可以大幅变化。在编码器1300中,速率缓冲器1302促进将用于编码每个组的可变数量的比特转换成(例如)恒定的bpp率。为此,编码过程包括速率控制器1304。
编码器1300可以包括颜色空间转换逻辑1306,例如,RGB输入到可逆YCoCg转换逻辑。输入缓冲器1308储存转换的输入。预测、量化以及重构(PQR)逻辑1310实现样本值的预测和残差值的生成。预测、量化以及重构(PQR)逻辑1310可以包括多个(例如,3个)预测器:改进的中值自适应预测(MMAP)、中点预测(MPP)以及块预测(BP)。PQR逻辑1310还实现残差值的量化和样本值的重构。还具有索引颜色历史(ICH)1312,与可以使用Δ尺寸单元可变长度编码(DSU-VLC)实施熵编码的VLC编码逻辑1314一样。输入缓冲器1308将样本提供给平坦度确定逻辑1318。还要注意的是,具有子流多路复用逻辑1320,以准备到速率缓冲器1302的多路复用输出流。
图14示出了解码器1400的另一个实例,该解码器被配置为对编码器1300编码的图像数据进行解码并且产生图像输出1418。解码器1400可以实现由编码器1300执行的逆操作。解码器1400可以包括速率缓冲器1402、子流多路分解器1420以及用于Δ尺寸单元的可变长度编码(DSU-VLC)的VLC熵解码逻辑1404。解码器1400还包括PQR逻辑1406,该逻辑可以实现多个(例如,3个)预测器:改进的中值自适应预测(MMAP)、中点预测(MPP)以及块预测(BP)。PQR逻辑1406还执行残差值的反向量化和样本值的重构。还具有ICH 1408、速率控制逻辑1410以及颜色空间转换逻辑1412。平坦度指示可以从编码器中在比特流中用信号传送,并且提供给速率控制逻辑1410。
编码过程可以产生符合HRD(假设参考解码器)约束的显示流编码的比特流。HRD可以是包括速率缓冲器的模型的解码器的理想模型,该模型应不上溢,也不下溢。
DSC比特流和解码过程促进在实际的硬件实现方式中每个时钟周期解码3个像素。在其他实现方式中,解码过程每个时钟可以处理1个、3个或其他数量的像素。通过并行编码和解码多个切片,可以增大每个时钟的像素的额外吞吐量,这通过在DSC比特流中利用每行的多个切片来促进。
颜色空间转换逻辑1306、1412
输入到编码过程中的RGB视频可以转换成YCoCg,用于后续处理。可以使用可逆形式的YCoCg,同样,这两个色度分量中的每个的比特数在YCoCg中比在RGB中更大。在YCbCr输入的情况下,不需要进行颜色空间转换。在解码过程中进行反向颜色空间转换。
PQR逻辑1319、1406
使用预测性编码(P模式)或索引颜色历史编码(ICH模式),对每组像素编码。对于P模式,具有3个预测器:改进的中值自适应预测(MMAP)、块预测(BP)以及中点预测(MPP)。编码器和解码器可以在每个中使用相同的算法自动选择MMAP、BP或MPP,而不在DSC比特流中发信号通知进行选择。
在编码器1300中,使用所选择的预测器预测每个样本。比较原始样本值和预测值,并且量化差异。然后,如果选择P模式,那么每个量化误差进行熵编码。编码器1300还执行重构步骤,在该步骤中,将反向量化误差加入预测中,以便编码器和解码器可以使用相同的参考样本。
在解码器1400中,使用所选择的预测器预测样本。通过解码DSC比特流获得的残差值被反向量化,并且将结果加入预测中,形成重构样本值。
中值自适应预测(MAP)可以是在JPEG-LS中使用的预测方法。然而,进行修正以允许解码器1400在一个组内同时处理三个像素,并且提高编码。改进的中值自适应预测(MMAP)有利于解码器以3个像素/时钟运行的硬件实现方式。MMAP根据位于当前样本的左边和上面的先前编码的重构样本预测当前样本值。为此,编码器1300和解码器1400可以使用相同组的重构样本,因此,MMAP在编码器1300和解码器1400内产生相同的结果。MMAP可以是默认预测器,并且在大部分情况下,在预测样本值时有效。
MPP从大约位于样本的有效范围的中点的值中预测当前样本。MPP具有限制残差的最大尺寸的优点。当在一组的一个分量内的样本编码所需要的比特数大于或等于该分量的比特深度减去量化位移时,可以选择MPP,代替MMAP。
BP根据相同的扫描线中的位于当前样本左边的先前编码的重构样本预测当前样本。从当前样本到预测器位置的偏移是BP向量。BP函数自动确定BP向量以及是否使用BP的决定,该BP函数在编码器和解码器内相同。
块预测
在预测值是相同的行中位于当前样本的左边的样本的情况下,块预测可以预测当前样本。参考样本的相对位置可以位于(-3)与(-10)之间,包括(-3)和(-10)。使用额外像素位置,可以提高质量。相对位置是在相同行的样本内的向量;这称为块预测向量。
可以在前一行样本上进行找出最佳向量的搜索,而非在当前编码的行中。在一个实现方式中,块搜索使用具有从-3到-10的范围的值的各电势向量比较一组9个连续的样本和参考样本。所比较的当前样本和参考样本位于相同的扫描线内,例如,位于待编码的样本行之上的一行。对于考虑的每个向量,对当前和参考组的每个中的9个样本计算SAD(绝对误差和)。选择具有最低SAD值的向量。在束缚的情况下,选择最接近0的向量。
还使用向量-1的9个像素SAD,以便确定应使用BP还是MMAP。下面提供预测器选择的更多细节。
一旦选择,向量就应用于每组3个样本中。因此,每3个样本进行块搜索。
向量表示像素X的预测值是位于在同一行的像素X的左边的像素,在像素单元中到左边的距离等于向量值。
图15说明了块搜索的实例样本组1500,示出了几个参考样本1502和向量1504、1506。还显示了当前样本'x'1506和当前SAD计算样本1508的一个实例。
索引颜色历史(ICH)逻辑1312、1408
图16示出索引颜色历史1600的一个实例。
在多个类型的内容中,例如,计算机生成的文本和图形中,相似的像素值常常相当接近,同时不一定彼此相邻。正因为如此,在索引颜色历史(ICH)内保持跟踪多个最近使用的像素值是会有帮助的。在编码器1300为特定的组选择ICH模式时,发送ICH内与所选择的像素值对应的索引值。这些索引值直接用于输出像素流内。
ICH逻辑包括储存单元,该储存单元保持使用另一种编码方法(例如,预测编码)编码的一组最近使用的颜色值。编码器1300和解码器1400可以保持ICH的相同状态。ICH可以具有32个条目,索引值指向每个条目。对于ICH编码的组,每个像素可以使用5比特ICH索引编码,该索引指向一个条目。在每组像素以P模式在编码器内编码或者在解码器内解码时,将组中的所有像素的值输入ICH内。可以管理ICH,作为移位寄存器,其中,最近最多使用的(MRU)值在顶部,并且最近最少使用的(LRU)值在底部。新条目在顶部增加,并且所有其他条目向下移动,底部条目从ICH中掉落出来。在以ICH模式对组编码时,用于编码那些像素的三个索引引用在ICH中的条目。在引用ICH条目时,该条目移动到ICH的顶部,并且在条目的先前位置之上的其他值下移1。对于每个ICH编码组的所有3个条目,并行进行这个操作,并且该组的最近(例如,最右边的)像素组变成MRU。结果,最近最多使用的(MRU)值位于历史的顶部,并且最近最少使用的(LRU)值位于历史的底部。每当在历史的顶部增加三个像素的P模式组时,便移除三个LRU值。
对于第一行的每个切片,所有32个ICH条目被视为移位寄存器的一部分。对于在第一行切片之后的行,最后7个索引值被限定为指向当前行之上的行中的重构像素,而非ICH中的条目。这可用于有效地编码不在历史移位寄存器内的像素值,并且提高了某些内容的编码。
编码器1300可以逐个组地选择ICH模式。编码器1300使用亮度子流DSU-VLC中的转义码,发信号通知组的ICH模式的使用。对于以ICH模式编码的每个组,使用固定长度5比特代码,编码在这个组中的每个像素,其中,索引值指向历史。通过经由比特流语法确定使用ICH模式,并且通过读取由构成像素的编码值的ICH索引指向的值,解码在组中的每个像素,从而解码器1400对每个ICH编码的组解码。通过将P模式像素插入ICH内并且通过响应于ICH模式组将ICH条目重新排序,编码器1300和解码器1400为每个组相同地更新ICH状态。
熵编码逻辑1314、1404
显示流编码在多个层上限定语法。最低层称为子流层。在每个切片内可以具有三个子流,每个分量具有一个子流。这三个子流可以由子流多路复用(SSM)过程共同多路复用,以形成编码切片。如果每行具有多于一个切片,那么编码的切片可以由切片多路复用过程多路复用;并且如果每行仅仅具有一个切片,那么不使用切片多路复用过程。所有切片的所产生的比特级联,以形成编码图片。图片参数集(PPS)可选地位于每个编码图片之前。
子流层
显示流编码可以使用上面称为DSU-VLC的熵编码技术,用于编码与预测编码相关联的残差。像素的ICH编码为每个像素使用固定长度的代码。专用值用于发信号通知ICH模式的使用,并且其他代码发信号通知与像素的平坦区域相关联的量化调整。
残差值 比特的尺寸 表示
-3 3 101b
-2 2 10b
-1 1 1b
0 0 <空>
1 2 01b
2 3 010b
3 3 011b
表1-用于不同的残差值的尺寸的实例
在每个切片中的像素均可以组织成三个连续的像素的组。组是由编码和解码过程使用的逻辑结构,但是不需要直接在比特流中表示。DSU-VLC将样本组织成单元。单元是一个分量的三个连续样本的残差的编码组。每个单元具有两部分:前缀和残差。基于相同分量类型的前三个残差的尺寸以及可以发生的QP的任何变化,预测每个残差的尺寸。前缀可以是表示单元中最大残差的尺寸与预测尺寸之间的非负差值的一元代码。如果差值是负数,那么由前缀编码的值是0。每个单元的残差部分包含3个值,单元中的每个样本具有一个。以2的补码对残差值编码。分配给残差的比特数可以在单元之间变化;然而,在一个单元中的全部3个残差可以分配给相同数量的比特。
此外,亮度单元的前缀还表示ICH模式是否用于每个组。从P模式到ICH模式的转换可以由转义码表示,例如,表示大于亮度的最大可能残差尺寸的尺寸的前缀值。亮度的最大可能残差尺寸取决于应用于该组中亮度的QP值。紧随另一个ICH模式组之后的ICH模式组可以由包括单个“1”比特的亮度前缀代码表示。紧随ICH模式组之后的P模式组可以由修正一元代码表示。
对于ICH模式组,对于每个元件,残差部分可以是5比特,其中,每5比特代码是编码完整像素的ICH索引,并且色度分量不使用前缀。对于在开始ICH模式组之后的后续CH模式组,每个组可以为使用每个组的16比特,例如,1比特前缀和(3)5比特ICH代码。
亮度子流还可以在语法中包含一些有条件的固定长度代码,用于编码器传输关于从忙碌区域到光滑区域的过渡的信息。下面更详细地讨论这个“平坦度指示”。
子流多路复用
可以使用没有报头的固定长度的子流多路复用方案,将三个元件状子流多路复用在一起。在美国专利公开号2011-0305282A1中,描述了一种这样做的技术,该案并入本文中,以作参考。错误!未发现参考源(Error!Reference source not found)。图17示出了子流多路复用1700的结果的实例,包括各种多路复用字和分量1702。每个多路复用字可以具有相同的尺寸,例如,对于每个分量的8或10比特(bpc),具有48比特,或者对于12bpc,具有64比特。从并行子流解码器使用数据以便实时解码的顺序,获得多路复用字1702的顺序。
图18示出了子流多路分解逻辑1800的实例。逻辑1800包括存储器,例如,速率缓冲器1802、多路分解器1804以及具有VLD的漏斗移位器1806、1808以及1810。漏斗移位器和VLD的组合称为子流处理器(SSP)。在每个组时间,SSP的任意组合可以请求多路复用字或什么都不请求。如果从SSP接收到请求,那么多路分解器1804将多路复用字发送给这个SSP。如果在相同组时间内接收到多个请求,那么多路分解器1804将多路复用字发送给做出请求的每个SSP。
在切片结束时,SSP可以在子流层数据结束之后请求多路复用字。因此,编码器1300可以根据需要在切片结束时插入填充的多路复用字。
图19示出了子流多路复用逻辑1900的实例,包括VLC和漏斗移位器1902、1904、1906、平衡存储器(例如,FIFO)1908、1910、1912、多路复用器1914、速率缓冲器1916以及多路分解器模型1918。多路分解器模型1918有助于编码器1300正确地命令多路复用字。平衡FIFO 1908、1910、1912可以存储价值多组的数据,以便在合适的时间提供多路复用字。
速率控制
编码器1300和解码器1400可以使用相同的速率控制(RC)算法,其相同地配置。在解码器1400内模仿由RC算法做出的在编码器内调整QP的决定,以便在每个像素处,解码器1400具有与编码器1300相同的QP值,不消耗任何比特来传送QP值,除了平坦度指示以外。基于先前传输和接收的信息,在编码器1300和解码器1400内做出RC决定。RC可以改变每组的QP值。
速率控制目标
RC为编码器1300和解码器1400提供量化参数(QP),以供每组使用。由于RC函数在编码器侧和解码器侧上相同,所以编码器1300和解码器1400已知基础QP值,并且不需要在比特流中传输。然而,可以在用于下面描述的平坦度指示的比特流中发送基础QP值或者对基础QP值的调整。
RC试图确保假设参考解码器(HRD)一致性。具有理想的速率缓冲器(FIFO)的模型,该模型将用于编码每个组的不同数量的比特转换成特定的恒定比特率。RC被设计为确保这个FIFO不上溢或下溢,假设通过假定的恒定比特率去除比特。
RC在其QP决定中优化图片质量。由于知觉掩蔽,在较平坦的区域上使用较低的QP,并且在忙碌区域使用较高的QP是可取的。此外,所有像素保持恒定的质量;例如,第一行切片具有有限的预测是可取的,因此,可以使用额外的比特分配。
HRD缓冲模型
假设参考解码器(HRD)模型描述了解码系统中的理想的速率缓冲器的性能。编码器速率缓冲模型可以在解码器侧上反射。编码器模型试图确保没有上溢或下溢。由于DSC可以是恒定比特率(CBR),所以HRD模型充溢度等于缓冲器尺寸-编码器缓冲充溢度;因此,解码器缓冲模型不上溢或下溢。DSC编码器速率缓冲模型可以定义比特进入和离开速率缓冲器的方案。
在初始延迟期间,例如,初始传输延迟,编码器将比特生成其每组的速率缓冲,而不移除任何比特。在这个期间,编码器模型充溢度根据所生成的比特的数量增大。例如,可以根据组时间或像素时间,指定延迟周期。
只要在切片内具有更多待编码的像素,编码器就根据内容生成比特。以指定的恒定速率移除比特。为了防止缓冲充溢度降低为低于0,使用预测模型可以优先于使用MPP,这执行最小的数据速率。一旦编码了最后一组切片,就不将更多的比特加入速率缓冲器中。比特继续以恒定速率离开速率缓冲器,直到缓冲器变空,然后,编码器发送零比特,以确保在CBR操作中,以比特为单位的压缩切片尺寸等于bpp*切片中像素数量。
将解码器初始延迟指定为编码器初始延迟的补充;例如,HRD延迟减去编码器初始延迟。然后,解码器速率缓冲充溢度作为编码器缓冲充溢度的补码追踪。
CBR对VBR
在编码器速率缓冲器另外下溢时的条件下,具有编码器是否插入比特以防止下溢的设计选择,或者使用VBR。为了防止下溢,RC确定在下一个编码组之后是否能够具有下溢,并且在发生这个条件时,促使实施最小的比特率的MPP模式。由于解码器解码额外比特,正如任何其他组一样,所以解码器不要求任何特定逻辑处理填充物。
能够支持可变比特率(VBR)。在另外下溢并且不发送任何比特(关闭)时的某些情况下,通过VBR,编码器1300停止发送比特。然后,编码器1300再次在具有某个识别事件(打开)时开始发送比特。为了使开关VBR与不取决于传输的实时行为的一般HRD兼容,可以指定关闭和打开事件。
在另外下溢并且不发送任何比特时,通过VBR,编码器停止发送比特。编码器的RC过程每组操作一次。在每个组中,将编码该组的比特数加入缓冲模型中,并且通常,从缓冲模型中减去每组的比特的标称数,该标称数是3*bpp,必要时进行调整,以形成整数比特。通过VBR,如果从缓冲模型充溢度中这样减去比特/组,会造成负值充溢度,那么RC减去标称数量的比特,然后,将缓冲充溢度固定为0,即,决不允许模型充溢度为负数。在具有真实传输和真实解码器的真实系统中,在编码器不发送任何比特时,即,在其真实速率缓冲器为空时,输送不发送任何比特,并且解码器不接收任何比特。解码器的真实速率缓冲器可以为满,但是不上溢。在编码器发送比特时,预期输送通过正常的速率传输比特,并且解码器通过该速率接收比特。解码器的真实缓冲器不上溢或下溢,并且解码器不需要做任何特殊的事情来处理VBR。输送应理解具有以及没有可用于发送和接收的有效数据的时间。
切片
编码图片的比特数可以等于该图片的像素数乘以指定bpp率。而且,通过重写先前版本的每个相应切片,可以在压缩这缓冲器内的适当位置中,更新图片的切片的任意子集。结果,可以传输完整的图片,作为包括整个图片的一系列连续的切片,并且作为一系列连续的切片传输的整个图片满足与切片相同的要求,例如,比特数等于像素数乘以bpp率,而且,包括切片的整个图片应符合合适的HRD模型,以通过这个操作模式,确保正确的实时缓冲器行为。结果,从开始传输到开始解码的延迟以及从结束传输到结束解码的延迟彼此相同并且对于每个切片都相同。
算法使用可以称为速率缓冲器的速率缓冲模型。在每个切片的结尾,算法允许编码器的速率缓冲器具有高达指定的充溢度,例如,最大比特数。如果在编码切片的结尾,编码器的缓冲器具有比这个最大数量少的比特,那么可以在结尾使用(例如)0填充剩余的比特,以正好产生所需要的比特数。这个最后的比特数占据了指定的像素时间数,以通过指定的bpp率传输。这个像素时间数是从编码结束到传输结束的延迟,这可以称为最终传输延迟。在理想的编码器和解码器的组合中,以像素时间为单元的总速率缓冲延迟等于速率缓冲器尺寸除以bpp率。从开始编码切片到开始传输该切片的初始传输延迟与最终传输延迟相同。从开始接收切片到开始解码切片的初始解码延迟(例如,在HRD定时模型中的延迟)被设为等于总端对端速率缓冲延迟减去初始传输延迟。这允许每个以上描述具有正确的操作。
图20示出了切片定时和延迟2000的实例。图20示出了切片输入视频定时2002、切片传输定时2004以及切片解码定时2006。对于在切片结尾可以在编码器缓冲器中的最大比特数,该算法可以具有固定的参数值,通常是~4kbits。所产生的结束传输延迟是bpp率的函数;该延迟被设为ceil(4096/bpp_rate)。通过8bpp,这个延迟是170组时间,并且通过12bpp,这个延迟是114组时间。最初延迟可以设为这个值。
端对端HRD延迟等于HRD缓冲器尺寸除以bpp率。例如,如果HRD缓冲器尺寸是19,836比特,并且速率是12bpp,那么端对端HRD延迟是floor(19,836/36)=551组时间。这实际上是上限,并且HRD延迟可以设为更低值,然而,如果使用更低值,那么该算法不能充分利用可用缓冲器尺寸,用于RC的目的。
直接应用于HRD并且间接应用于真实的解码器的初始解码延迟应设为HRD延迟-初始传输延迟。在此处的实例中,初始传输延迟如上所述设为114组时间,初始解码器延迟是551-114=437组时间。这是应用于HRD的延迟,即,理想的假设解码器。真实的解码器当然自由地具有额外延迟。
该算法的速率缓冲器尺寸也是HRD缓冲器尺寸,只要不超出兼容解码器的能力,该尺寸就可以由编码器选择。最佳速率缓冲器尺寸是几个因素的函数,包括bpp率和切片的宽度。
要注意的是,初始传输延迟通常是bpp率的函数。只要不超出解码器的能力,HRD速率缓冲器尺寸就可以由编码器设置。通过可调的比特率以及从在编码器内的视频到在解码器外面的视频的恒定端对端延迟,并且通过从在解码器内的压缩数据到在解码器外面的视频的恒定延迟,设计真实系统是切实可行的。编码器可以将初始传输延迟和初始解码器延迟设为所选值,以促进通过恒定延迟无缝地改变比特率。
切片的选项
编码器1300和解码器1400支持广泛的切片宽度和高度。一个配置是切片宽度=1/4图片宽度,切片高度=32行。另一个可能的配置是切片宽度=图片宽度,切片高度=8行。切片尺寸可以由图片宽度乘以图片高度规定。为了尽可能减小需要发送的额外数据,可以在整个图片中使用相同尺寸的切片。
更高的切片可以造成更好的压缩。将额外比特分配给每个切片的第一行,以尽可能提高质量,并且防止在切片之间的界限处具有伪影。通过在PPS中的参数,设置在第一行上为每组分配的额外比特的数量。可用于每个切片的第一行之后的所有行的比特数可以减少,以便每个切片的总比特数是像素数乘以bpp率。在每个切片中的第一行之后具有更多的行,就要求更少地减少比特分配。因此,32行的切片高度通常提供比8行的切片高度更好的性能。没有与切片高度相关联的成本,没有额外缓冲,也没有任何其他额外资源。编码器1300和解码器1400支持等于整个图片尺寸的切片尺寸。
为了各自实际目的,具有比全屏幕宽度更窄的切片是可取的。更窄的切片提供通过部分更新来更新更窄的切片或者促进通过低成本进行并行处理的能力。实际上,每行的多个切片可以使用一个行缓冲器,即,图片宽度的尺寸。对于每行的多个切片以及比一行高的切片,用于不同切片的速率缓冲器可以独立(independent)。例如,对于每行4个切片,实际的实现方式使用4个速率缓冲器。虽然不确切地成比例,但是在最佳速率缓冲器尺寸是切片宽度的函数时,与通常为1个切片/行的情况规定尺寸相比,可以规定每个速率缓冲器的尺寸对于4个切片/行的情况更小。因此,在每行具有多个切片时,速率缓冲器空间的总量小幅增大,而缓冲空间的行总量不增大。
切片多路复用
在被配置为每个扫描线使用多于一个切片的系统中,可以根据特定的模式多路传输压缩数据,以便尽最小化编码器和解码器的成本。所推荐的模式如下。对于每行整数S个切片,每个切片具有每行P个像素,并且图片具有W个像素的宽度。优选地,P对于所有切片相等,等于W/S,其优选地为整数。多路传输的比特流包含的比特数=第一行切片的第一切片的P*bpp率,第一行的第二切片的P*bpp率,以此类推第一行的所有切片。
这个模式的一个迭代具有W*bpp率比特,这可以是与(如果每行具有一个切片)要使用的比特数相同的比特数。如果P*bpp率不是整数,那么可以进行调整,以便每个切片产生整数个比特。例如,一个切片的一行所包括的比特数可以是P*bpp的整数截断值加上先前截断的累积残余量。然后,这个模式根据需要重复多次,以传输第一行切片中所有切片的所有比特。应用规格(例如,被设计为携带DSC压缩图像数据的传输规格)可以在分开的数据包内携带不同切片的数据。在这种情况下,与其他切片的比特相比,一个切片的最后比特可以在与其他切片的数据包分开的数据包内,包括紧接在第一个之下的垂直相邻的切片的第一比特。或者,应用规格可以选择封装一个切片的最后比特和另一个切片的第一比特,例如,水平相邻的邻近切片或垂直相邻的邻近切片。对于整个图像,总体模式可以重复。在比特流中不需要包括标记或指示,表示哪些比特用于哪个切片。相反,输送层可以提供这种指示符。
关于切片多路复用的附加信息如下。
在禁止VBR时,可以发生切片多路复用,即,启用填充。在禁止填充时,编码每个切片的比特数可以变化,例如,DSC操作是VBR。图片包括某个数量的切片。在可能的情况下,例如,在图片宽度与切片宽度的比率是整数时,切片可以具有相同的尺寸。在这个比率并非整数的情况下,切片的列宽可设为相差不超过1的整数值,并且其总和是图片宽度。在也启用VBR时,也能够进行切片多路复用。所使用的存储器和多路复用模式取决于链路的特征,包括(例如)进入或离开低功率状态所需要的开销。
通过禁止VBR(启用填充),使用相同数量的压缩比特,编码相同宽度的切片。在切片宽度等于图片宽度时,依次发送切片层数据(切片0、切片1、…切片N-1,其中,N是切片的数量)。在切片宽度比图片宽度更短时,在相同行上的所有切片的切片数据可以多路传输到固定长度的数据块内。每个数据块的长度可以等于floor(bits_per_pixel*slice_width)。由于bits_per_pixel可以是分数,所以使用floor()(向下取整)函数。例如,在图片在每行上分成两个相同尺寸的切片的情况下,多路传输的比特流包含:
切片0数据块/切片1数据块/切片0数据块/切片1数据块…
由于ceil()函数,所以如果需要的话,那么每个切片的最终数据块可以填充有0比特。
通过启用VBR,编码每个切片的比特数可以与P*bpp率不同。例如,比特数可以小于这个值。每个数据块的比特数可以与floor(bits_per_pixel*slice_width)不同,例如,比特数可以小于这个值。可以使用不同比特数的数据块,多路传输切片。每个数据块的比特数可以(例如)由在传输层内的数据包长度信息或标记代码指示。
可以根据标记为Y、Co以及Cg的分量指定显示流编码。如果在当前的PPS内convert_rgb标志等于0,那么编码器可以接受YCbCr输入。可以将Cb分量映射到Co分量标签中。可以将Cr分量映射到Cg分量标签中。在这种情况下,Cb/Co和Cr/Cg分量的位深度可以等于Y分量,使用在当前的PPS内的bits_per_component字段指定Y分量的位深度。如果在当前的PPS内convert_rgb标志等于1,那么编码器可以进行从RGB到YCoCg的颜色-空间转换。颜色空间转换可以是:
CSCCo=R–B
t=B+(cscCo>>1)
cscCg=G–t
y=t+(cscCg>>1)
与Y相比,cscCo和cscCg值具有动态范围的一个额外比特。最终的Co和Cg值的中心可以在中点周围:
Co=cscCo+(1<<bits_per_component)
Cg=cscCg+(1<<bits_per_cornponent)
要注意的是,在此处,bits_per_component变量可以表示R、G以及B分量中的每个的比特数,该比特数小于Co和Cg分量的每个分量的比特数。如果切片延伸超过图片的右边,那么在每行图片中的最右边的像素可以重复,以将切片填充到正确的水平尺寸中。如果切片延伸超过图片的底边,那么在图片的每个像素列中的最底部的像素可以重复,以将切片填充到正确的垂直尺寸中。
线路储存器
显示流压缩可以包括缓冲存储器,用于保持前一行的重构像素值,用于MMAP预测和ICH。在某些情况下,解码器线缓冲器可以具有充足的存储,以包含全范围的重构样本。然而,一些解码器可以选择使用较小的位深度来降低实现成本。
如果使用更小的位深度,那么解码器可以将该深度传送给编码器。编码器可以根据解码器实现方式所支持的内容设置linebuf_width。可以使用比特减少的样本的以下方法:
shiftAmount=MAX(0,maxBpc-linebuf_width);
round=(shif Amount>0)?(1<<(shiftAmount-1)):0;
storedSample=(sample+round)>>shiftAmount;
readSample=storedSample<<shiftAmount;
其中,maxBpc是当前分量的位深度,storedSample是写入线缓冲器中的样本值,并且readSample是回读的值。
预测类型
在P模式中可以支持三种预测类型:MMAP、BP以及MPP。
改进的中值自适应预测(MMAP)
下面在表格中规定改进的中值自适应预测。
c b d e
a P0 P1 P2
表2-包围当前组的像素
表2显示了包围预测的在该组中的三个像素(P0、P1以及P2)的像素的标记惯例。像素'c'、'b'、'd'以及'e'位于前一行,并且像素'a'是直接位于左边的重构像素。
在用于以下MMAP公式中之前,QP自适应滤波器可应用于前一行的参考像素中。水平低通滤波器[0.250.50.25]可以应用于前一行中,以获得过滤的像素filtC、filtB、filtD以及filtE。例如,
filtB=(c+2*b+d+2)>>2;
过滤的像素可以与原始像素混合,以获得用于MMAP(blendC、blendB、blendD、blendE)内的值。以下方法用于混合:
diffC=CLAMP(filtC-c,-QuantDivisor[qlevel]/2,
QuantDivisor[qlevel]/2);
blendC=c+diffC;
diffB=CLAMP(filtB-b,-QuantDivisor[qlevel]/2,
QuantDivisor[qlevel]/2);
blendB=b+diffB;
diffD=CLAMP(filtD-d,-QuantDivisor[qlevel]/2,
QuantDivisor[qlevel]/2);
blendD=d+diffD;
diffE=CLAMP(filtE-e,-QuantDivisor[qlevel]/2,
QuantDivisor[qlevel]/2);
blendE=e+diffE;
下面提供每个的预测值:
P0=CLAMP(a+blendB-blendC,MIN(a,blendB),MAX(a,blendB));
PI=CLAMP(a+blendD-blendC+R0,MIN(a,blendB,blendD),MAX(a,blendB,blendD));
P2=CLAMP(a+blendE-blendC+R0+Rl,MIN(a,blendB,blendD,blendE),MAX(a,blendB,blendD,blendE));
其中,R0和R1是组中的第一和第二样本的反向量化残差。
在第一行的切片的情况下,前一行的像素不可用。因此,每个像素的预测变成:
P0=a;
PI=CLAMP(a+R0,0,(l<<maxBpc)-1);
P2=CLAMP(a+R0+Rl,0,(l<<maxBpc)-1);
其中,maxBpc是正在预测的分量的位深度。
块预测(BP)
BP预测值是从位于当前像素的左边的某个数量的像素中提取的像素值。“块预测向量”(bpVector)是表示位于左边的像素的数量的值的负数,以用于预测。在一个实现方式中,块预测向量始终在-3与-10之间,包括-3和-10,这表示使用位于当前组的外面的样本。
BP预测值用于预测由块预测向量引用的像素的全部三个分量:
P[hPos]=recon[Pos+bpVector];
因此,3x1组的预测值与由块预测向量所指向的3x1组像素的重构像素值对应。
中点预测
中点预测值是等于或接近该范围的中点的值,并且取决于紧挨当前像素(在表2中,像素"a")左边的重构像素的值。
midpointPred=(1<<(maxBpc-1))+(a&((1<<ql_evel)-1));
其中,maxBpc是正在预测的分量的位深度,并且qLevel是应用于当前分量中的量化水平。
预测选择
块预测由编码器1300支持。通过将PPS信号中的block_pred_enable设为0,编码器1300可以选择禁止在流中进行块预测(例如,因为连接的解码器不支持块预测或者因为图片不从块预测中受益)。在这种情况下,通过块预测选择MMAP,并且不使用在这个部分中的算法。
可以使用前一行的信息,在组的基础上,做出使用BP还是MMAP的决定。这表示如果有助于实现,那么在处理当前组之前,可以对线路时间做出决定。在这个部分中提及的组从切片的最左边像素列中在hPos像素的水平位置开始。
图21示出了形成9x1SAD的3x1部分SAD的实例2100。首先,可以进行搜索,以找出最佳的块预测向量。用于SAD的参考像素可以是前一行中的9个像素的组,在hPos–6的水平位置开始。在参考像素与指向前一行的像素的9个不同块预测candidateVector’s(-1、-3、-4、-5、-6、-7、-8、-9以及-10)之间计算SAD。9像素的SAD计算为3个3像素SAD的总和(见图21)。首先,根据以下公式,在3像素SAD中计算总和之前,每个绝对差可以截断并且削减:
modifedAbsDiff=MIN(absDiff>>(maxBpc-7),0x3F);
其中,maxBpc是当前分量的位深度。
在三个相邻的样本的每组之上并且在3个分量之上,计算所产生的6比特imodifiedAbsDiff值的总和,产生10比特值,表示一个分量的3x1部分SAD;这个10比特值固定为9比特(例如,大于511的值固定为511)。计算三个9比特的3像素部分SAD的总和,以获得最终的9像素SAD,这是11比特数。在比较之前,截断每个9x1SAD的3个LSB:
bpSad[candidateVector]=MIN(511,sad3xl_0[candidateVector]+sad3xl_l[candidateVector]+sad3xl_2[candidateVector]),
9个9像素SAD彼此进行比较,并且可以选择最低的SAD,通过选择最小幅度的块预测向量,打破僵局。如果最低的SAD块预测向量是-1,那么bpCount计数器重设为0,并且为这个组选择MMAP。如果最低的SAD块预测向量并非-1,那么候选的BP向量变成具有最低SAD的向量,并且bpCount计数器增加,除非hPos<9。
如果以下条件都成立,那么可以选择BP:
bpCount值大于或等于3。
lastEdgeCount小于9。lastEdgeCount值表示经过的(由于出现“边”)像素的数量。对于任何分量,在ABS(当前样本-剩下的样本)>32<<(bits_per_component-8)时,“边”出现。
在BP/MMAP与MPP之间选择
如果选择BP/MMAP,编码器可以基于所生成的量化残差的尺寸决定是否使用BP/MMAP。例如,编码器可以为这三个分量的每个确定BP/MMAP的最大残差尺寸。如果任何分量的最大残差尺寸大于或等于这个分量的阈值,例如,maxBpc–qLevel,那么可以为这个分量选择MPP。
此外,编码器可以选择MPP,以便实施最小的数据速率,以防止下溢。
量化
从相应的输入样本中减去像素的每个样本的预测值,以形成残差样本值E,像素的每个分量具有一个值。
E=x–Px,其中,x是输入,Px是预测值。
可以使用由作为2的幂的除数截断的除法,并且使用通过小于除数的一半的四舍五入值(即,1)进行的四舍五入,量化每个残差值E。
If E<0 QE=(E-ROUND)/DIVISOR
Else QE=(E+ROUND)/DIVISOR
//"/"运算符是通过截断进行的除法,与在C语言中一样。
其中:
DIVISOR=2**qLevel=1<<qLevel
ROUND=DIVISOR/2-1
对于亮度和色度,qLevel的值可以不同,并且由速率控制(RC)函数决定。
可以检查MPP量化残差,以确保其尺寸不超过阈值,例如,maxBpc–qLevel,其中,qLevel是分量类型(亮度或色度)的量化等级,并且maxVal是分量类型的最大可能样本值。如果MPP残差超过这个尺寸,那么编码器可以将该残差变成具有maxBpc–qLevel的尺寸的最近残差。
反向量化和重构
加密器可以遵循在解码器中使用的相同过程,以得到重构像素值。对于使用MMAP、BP或MPP预测的像素,重构样本值可以是:
reconSample=CLAMP(predSample+(quantized_residual<<qLevel),0,maxVal);
其中,predSample是预测样本值,quantized_residual是量化残差,qLevel是分量类型(亮度或色度)的量化等级,并且maxVal是分量类型的最大可能样本值。
平坦度QP覆盖
图22示出了用于编码器平坦度检查的原始像素的实例2200。如果即将来临的输入像素比较平坦,以允许QP快速降低,那么编码器生成“平坦度信号”。下面描述用于在语法中确定平坦度比特的编码器算法,与编码器和解码器为了修改QP所遵循的算法一样。
编码器平坦度决定
一组4个连续的组称为超群。在编码之前,编码器检查每个超群,以便确定(如果有的话)那些组是“平坦的”。第一超群以在图22中所示的切片中的第二个组开始。可以连续地在切片内定义超群。包括一行的最后一个组的超群可以缠绕在周围,以在后续的行上包括组。
可以在超群内为每个组单独地进行平坦度决定,并且该决定包括用于每个组的“平坦度类型”(例如,略微平坦或非常平坦)的决定。使用原始的未压缩图像的像素,可以进行两个平坦度检查。
平坦度检查1在图22中所示的样本之间为每个分量确定MAX和MIN值。为每个分量确定flatQLevel值:
flatQLevel=MapQpToQlevel(MAX(0,masterQp-4));
所使用的masterQp值是用于位于正在测试的超群左边的第二组的速率控制的值。MapQptoQIevel将masterQP值映射到用于亮度和色度的qLevelY(亮度)和qLeveIC(色度)值中。例如,masterQP值0可以映射到qLeveIC和qLevelY值0中,值1和2可以分别映射到qLeveIC值1和2中,并且masterQP中的连续单元增大可以映射到在qLevelY与qLeveIC之间交替的单元增大中。
如果用于任何分量的MAX–MIN大于(2<<(bits_per_component-8)),那么非常平坦的检查未通过平坦度检查1;否则,通过该检查。如果用于任何分量的MAX–MIN大于QuantDivisor[flatQLevel],那么略平坦的检查未通过平坦度检查1;否则,通过该检查。
如果平坦度检查1指示该组略微平坦或者非常平坦,那么该结果是用于该组的最终结果。如果都未通过,那么在图22中指示的6个像素之上进行平坦度检查2。与在平坦度检查1中一样,进行相同的比较,除了在6个样本(而非4个)上计算MAX和MIN以外。然后,平坦度检查2的最终结果用作该组的最终结果。
对于规定的超群,然后,具有不平坦、略微平坦或者非常平坦的四个平坦度指示。如果先前的超群具有平坦度指示,那么prevlsFlat值初始化为1;否则,初始化为0。以下算法用于将平坦度信息提取到单个平坦度位置和类型内:
如果未选择组,那么不进行QP修改,并且在熵解码器中,将超群的flatness_flag设为0。如果选择组,那么将超群的flatness_flag设为1,并且用信号传输相应的组,与在比特流中的first_flat组及其相关的flatness_type一样。如果masterQp值在flatness_min_qp和flatness_max_qp的范围内,那么熵编码器仅仅用发信号告知flatness_flag,因此,如果相应的masterQp超出范围,那么在RC内不进行任何调整。
编码器平坦度搜索不跨越到下一行。如果在超群内的一个组落在下一行上,那么不将其视为平坦。然而,一行的第一组可以包含next_flatness_flag语法元素,假设语法允许其在这个点(见部分错误!未发现参考源(Error!Reference source not found.))。
平坦度QP调整
编码器和解码器对组做出了相同的QP调整,其中,做出了平坦度指示。RC接收与超群内的特定组对应的可以为“略微平坦”或“非常平坦”的平坦度信号。应注意的是,如果当前的masterQp小于7<<(2*(bits_per_component-8)),那么可以假设平坦度指示“略微平坦”。
对于“非常平坦”的信号,如下调整QP:
masterQp=1<<(2*(bits_per_component-8));
对于“略微平坦”的信号:
masterQp=MAX(stQp-4,0);
如果特定组没有平坦度信号,那么:
masterQp=stQp
如果平坦度QP覆盖修改masterQp,那么修改的masterQp用作在下一个RC周期上的短期速率控制的起始点。
在各种情况下的显示压缩
上面和下面描述的图像压缩技术可以用于各种背景、系统和架构中,例如,在上面图1和11中所示的示例性系统。图23示出了基于在图11中示出的实例的显示系统2300的另一个实例。
显示系统2300包括发送装置2310和接收装置2320。装置2310和2320可以采用任意数量的形式。在图23中所示的实例中,发送装置2310是机顶盒,并且接收装置2320是数字电视。发送装置2310或接收装置2320的额外实例包括媒体投影仪、内容分布服务器、数字化通用磁盘(DVD)播放器、高分辨率(例如,蓝光(TM))媒体播放器、家用媒体服务器、计算机、膝上型计算机、移动装置、蜂窝电话、平板电脑、个人数字助理、导航系统、存储装置以及其他装置。
通信链路2330耦接装置2310和2320。通信链路2330可以是在图23中所示的有线链路或者无线链路。通信链路2330可以包括多个链路,包括有线和无线链路的组合。在一些变型例中,接收装置2320从发送装置2310中接收解码器配置参数,例如,通过通信链路2330或另一个通信链路。
发送装置2310可以包括编码器104和速率缓冲器210,用于将图像的输入源数据112压缩成编码数据116。发送装置2310通过通信链路2330将编码数据116发送给接收装置2320。接收装置2320可以包括解码器106和速率缓冲器802,用于将编码数据116(例如)实时地并且按照光栅扫描的顺序解码成视频数据118,用于通过显示器110输出。
要注意的是,接收装置2320未必输出解码数据用于显示。在解码编码数据116之前或之后,例如,接收装置2320可以在存储器内储存图像数据用于后续处理,将图像数据转发给另一个装置,或者分析图像数据的内容。除了或者代替显示解码数据,接收装置2320还可以存储、分析或转发编码数据116或解码数据。
DSU-VLC预测尺寸小于尺寸的函数
如上所述,编码器可以确定单元605的预测尺寸,用于对单元605编码。编码器可以根据先前编码的样本的尺寸确定预测尺寸。在一个实现方式中,考虑到单元尺寸是2,预测尺寸是前两个样本(例如,先前单元)的相同分量的样本的尺寸的平均值(通过四舍五入)。如果单元尺寸是4,那么预测尺寸可以是先前单元的相同分量的四个样本的尺寸的平均值。如果单元尺寸是3,那么预测尺寸可以是先前单元的相同分量的最后两个样本的尺寸的平均值,从而避免除以3。
作为另一个变化,编码器可以选择性地调整预测尺寸函数的结果,例如,通过对预测尺寸函数的输出增大或减小特定值。例如,编码器可以确定预测尺寸是预测尺寸函数减去一个值的值,其中,这个值可以是1、2或某个其他可配置的预测尺寸调整参数值。预测尺寸调整参数可以是预定的设计常数。或者,预测尺寸调整参数可以取决于在压缩的比特流中的语法元素的值。编码器可以将确定的或者预先配置的预测尺寸调整参数值作为压缩比特流的一部分发送给解码器。
在某些条件下,编码器可以选择性调整(例如,减小)预测尺寸。在一些变型例中,编码器可以基于量化参数(QP)的变化改变预测尺寸调整参数。在QP增大时,编码器可以降低预测尺寸函数的结果。QP增大的程度越大,编码器可以调整预测尺寸函数的结果就越低。在QP减小时,例如,超过特定QP阈值,编码器可以对预测尺寸函数的结果降低较小量、不对预测尺寸函数结果做出调整,或者增大预测尺寸函数结果。在Δ尺寸实施为非负值并且预测尺寸大约实际尺寸时,编码器可以有利地减小预测尺寸,以防止在编码样本中使用额外比特。例如,在预测尺寸比实际尺寸大1时,在3个样本的单元中,浪费3比特。因此,编码器可以减小预测尺寸,以有效地减少比特使用。
再如,编码器可以根据在先前样本之间的尺寸变化调整预测尺寸。在样本相差特定尺寸差阈值时,编码器可以减少预测尺寸函数(例如,先前样本的平均尺寸)的结果。作为例证,编码器可以使用前两个样本的尺寸的平均值的预测尺寸函数,例如,给定单元尺寸是2。在一个先前样本需要大量比特时,平均值可能偏高,为当前样本造成浪费比特。因此,在前两个样本之间的尺寸的差超过特定阈值时,编码器可以对预测尺寸输出(在这个实例中,平均值)减少预定数。
作为另一个选择,编码器可以执行先前样本的尺寸的加权函数,例如,加权平均值。例如,通过单元尺寸3,加权平均值可以使用加权(1/4、1/4、1/2)来权衡这三个样本。作为又一个选择,编码器可以确定预测尺寸作为先前样本的中间尺寸。解码器可以应用与编码器相同的预测尺寸调整。此外/或者,解码器可以在压缩比特流中接收一个或多个样本的预测尺寸调整的显式指示(explicit indication,明确指示)。
自适应低通滤波器
在对输入图像编码之前,编码器可以将各种预先处理操作中的任一个应用于输入图像中。例如,编码器可以应用滤波器,以在输入图像中实现期望结果。例如,期望结果可以平滑的或缓和的输入图像。图24示出了基于图13的实例的编码器2400的实例。编码器2400包括自适应低通滤波器(LPF)2402,用于减少根据滤波器设计确定的高频内容,例如,截止频率的位置以及衰减的幅度。在图24中的实例中,编码器2400在颜色空间转换(例如,可逆的RGB到YCoCg转换)之后通过自适应LPF 2402对输入图像进行滤波。在其他变化中,编码器2400可以实现自适应LPF2402,以在编码器2400中在颜色空间转换或者其他处理之前对输入图像进行滤波。自适应LPF 2402可以减少在输入图像中的高频分量,这可以降低在预测之后用于编码的残差的幅度,并且减少编码器2400用于对图像输入编码的比特数。
编码器2400可以被设计或配置为满足特定比特率。根据比特率,编码器可以增大QP值,这会在编码图像内容中产生可见的伪影。通过在通过自适应LPF 2402进行量化之前对输入的图像进行滤波,编码器2400可以减少编码滤波图像所需要的比特数,同时避免可见伪影。因此,为了避免可能生成可见图像伪影的QP值,编码器可以选择性地应用滤波器2402。在某些情况下,自适应LPF 2402可以具有设计参数,这些参数被设置为使得滤波器去除图像输入中特定的(可能是预先确定的)高频噪声。然后,根据滤波频率,滤波器可以去除噪声而不降低实际图像内容。
自适应LPF 2402可以对输入图像流施加不同程度的滤波。自适应LPF 2402可以基于(例如,根据)编码器2400的目标比特率改变低通滤波的程度。例如,自适应LPF 2402可以根据在目标比特率在特定范围内时的第一组滤波参数对输入图像流滤波,并且在目标比特率过渡到更高或更低的速率范围时,使用不同的滤波参数组。作为在图24中所示的另一个实例,自适应LPF 2402从速率控制器1304接收当前QP值,并且根据当前QP值改变对图像输入流的滤波程度。当前QP值越高,自适应LPF2402可以施加低通滤波的程度就越大,反之亦然。在QP值低于阈值时,自适应LPF 2402可以不进行任何滤波。自适应LPF 2402在确定低通过滤程度时可以解释的另一个额外的或替换的参数值是缓冲器充溢度,例如,缓冲器填充的程度越高,图像输入的滤波或平缓就越大,反之亦然。
在另一个变化中,编码器2400可以包括分析图像输入流的内容的分析逻辑。编码器2400可以延迟输入图像的编码,例如,高达多个帧或行,以分析图像内容。在这方面,编码器2400可以确定在图像内的高频数据是归咎于噪音(可滤波的)还是归咎于在图像内的高细节内容(不滤波,以保留内容细节)。编码器2400同样可以确定在图像内容内的噪声或细节的程度,并且相应地设置一个或多个滤波参数(例如,滤波器的截止频率或衰减幅度)。同样,编码器2400可以确定是否根据图像分析通过自适应LPF 2402处理图像输入数据以及处理的程度。在一个变型中,位于编码器2400外面的逻辑可以进行一些或所有图像内容分析,并且编码器2400可以从外部分析逻辑中接收信号,指示对输入图像内容滤波的程度。
自适应LPF 2402可以调整任何数量的过滤参数,以说明当前QP、缓冲器填充等级、噪音对细节内容或上述任何其他因素。自适应LPF 2402可以调整影响施加到图像输入的低通滤波程度或质量的滤波器本身的任何参数。自适应LPF 2402提供编码器可以施加的预先处理的一个实例。此外/或者,编码器可以施加线性滤波器、非线性滤波器、空间滤波器、时间滤波器、时空组合、运动补偿时间滤波器等。而且,虽然在图24中的实例使用低通滤波器,但是编码器2400可以实现并且自适应地调整任何类型的处理逻辑,该逻辑选择性地衰减在输入图像内的一个或多个频率、噪音或细节分量。
调整RC参数
图25示出了用于动态调整由编码器2502、解码器2504或这两者使用的速率控制参数的系统2500的实例。编码器2502包括速率控制器2503,并且解码器2504包括速率控制器2505。在编码和解码数据时,例如,如上所述,各个速率控制器2503和2505可以应用相同的RC算法。编码器2502可以通过动态的方式确定可适用于其编码过程的RC参数。结果,在任何规定的时间使用的RC参数可以在(例如)RC参数A 2511、RC参数B 2512以及其他组RC参数之间变化。
编码器2502可以动态地调整由速率控制器2503或编码器2502的其他部分使用的一个或多个RC参数。例如,编码器2502可以根据配置编码器2502的目标比特率选择特定的一组RC参数,以供速率控制器2503使用。目标比特率越高,编码器2502可以选择使用越精细量化的一组RC参数。目标比特率越低,编码器可以选择使用越粗糙量化的一组RC参数。因此,编码器2502能够实现各种输出质量等级,包括通过较高比特率的图像数据的无损编码或者通过较低比特率的高质量有损编码。此外/或者,编码器2502可以基于其他因素的任何组合选择一组RC参数,例如,比特/像素分量、图像尺寸、图像输入流的特定内容特征(例如,具有适度噪声、高细节、光滑等)或其他因素。
在一些变型例中,编码器2502将RC参数指示2520发送给解码器2520。解码器2520可以发送RC参数指示2520作为编码数据116的比特流的一部分或者单独地,例如,通过专用控制信道。RC参数指示2520可以指定编码器2502使用的特定一组RC参数和/或提供编码器2502使用的当前一组RC参数的指示。例如,解码器2504可以同样实现或访问储存在由解码器2504实现的存储器上的相容的一组RC参数,并且由编码器2502发送的RC参数位置2520可以规定解码器2504的哪个特定的一组RC参数从存储器中检索并且应用于速率控制器2505中。在一些实现方式中,编码器2502可以不发送任何RC参数指示2520。相反,编码器2502和解码器2504可以共享相容的RC参数选择逻辑并且含蓄地选择相同的一组RC参数。
可以通过实验,确定特定RC参数的值。接下来,在表3中显示了编码器2502和解码器2504可以调整的一些示例性中间和RC参数:
表3-示例性中间速率控制参数
快速降低在比较光滑的内容上的QP
RC算法本身可以基于各种测量和参数确定QP调整,包括缓冲模式的充溢度或编码样本的活性。这个操作可以称为隐式速率控制(implicitrate control)。RC参数可以指定为各个范围的缓冲模型充溢度设置最小的QP值。在RC算法检测比较平坦的内容时,基于(例如)各种测量和参数,例如RC算法,可以逐渐地降低最小QP值。在某些情况下,快速调整(例如,降低)QP,而不进行最小QP值的逐步减小是有利地。在这方面,编码器可以选择性地调整由RC算法确定的QP值。
编码器可以从当前样本的隐式RC算法中获取QP,并且在各种情况下,确定调整QP。例如,编码器可以获得当前样本附近的任意数量的周围样本的测度。周围样本可以在当前样本的特定数量的样本内,例如,在左边、右边、顶部、左上角、右上角等。测度可以表示周围样本的任何特征,例如,平坦度指示。
编码器可以按照编码顺序获得当前样本之后的一个或多个样本的测度,这些样本可以称为“未来”样本。例如,在编码器使用光栅线顺序编码时,“未来”样本可以包括位于当前样本的右边或下面的样本。这些“未来”样本不可用于使用隐式RC算法的解码器中。在编码器基于一个或多个“未来”样本的测度确定调整根据隐式RC得到的QP时,编码器可以将显式指示提供给解码器,这可以包括编码信息,以支持解码器执行相同的QP调整。
在编码器按照编码顺序获得位于当前样本之前的样本的测度时,编码器可以调整QP,而不将显式指示发送给解码器。在解码器可以同样获得由编码器考虑的相同的一组先前样本的测度时,解码器可以确定做出与编码器相同的QP调整。这可以称为隐式QP调整的形式。
在测度满足预定标准时,编码器可以调整根据隐式RC算法确定的QP。作为一个实例,预定标准可以是高平坦度阈值,例如,指示上面在图22中描述的“非常平坦”的一组样本的阈值。
编码器可以通过各种方式调整根据隐式RC获得的当前样本的QP。在一些变型例中,编码器根据一个或或多个周围样本的测度调整QP。例如,在测度满足第一标准(例如,超过第一阈值)时,编码器可以对量化参数减少第一减少值,以及在测度满足第二标准(例如,超过第二阈值,而没有超过第一阈值)时,对量化参数减少第二减少值,第二减少值小于第一减少值。再例如,编码器可以根据测度所在的值的特定范围对QP调整特定量。
在编码器可以调整QP值时的一个特定情况是图像内容变得光滑的时间。图26示出了忙碌像素区域2610与光滑像素区域2620相邻的图像内容2600的实例。在直接沿着忙碌像素区域2610与光滑像素区域2620之间的边沿对像素编码时,编码器可以在光滑像素区域2620内识别输入像素的平坦度,并且作为响应,大幅降低由RC算法确定的QP值,例如,减少作为平坦度的函数的特定值。这样做,可以减少由于QP递减在忙碌-光滑像素边附近可能发生的条带化或其他伪影,并且可以分配额外比特,以对边之后的样本进行编码。
如上面参照图22和平坦度确定所述,编码器可以确定构成超群的多个组的平坦度的程度。编码器可以单独地确定在超群内的每个组的平坦度指示,包括每个组的“平坦度类型”确定(例如,略微平坦或非常平坦)。编码器可以进行一个或多个平坦度检查,并且在上面图22中描述的特定实例中,编码器进行两个平坦度检查,这两个检查都使用原始的未压缩图像的像素。
作为另一个选项,对于当前像素,编码器可以检查在光栅线中的多个后续像素,并且获得当前像素右边的后续像素的平坦度指示。
在一些变型例中,编码器可以获得一个或多个即将到来的(例如,“未来”)像素的测度(例如,预测平坦度),而不检查即将到来的像素。在这方面,通过检查先前编码的像素的编码历史,编码器可以预测即将到来的像素的平坦度。例如,按照光栅线编码顺序,编码器可以检查当前像素左边或上面的先前编码的像素的历史,例如,在当前像素之上的前一行像素。例如,通过检查被检查像素的残差值或重构值,编码器可以预测从忙碌像素区域2610向光滑像素区域2620过渡的边。然后,编码器可以确定基于即将到来的像素的预测平坦度,调整(例如,减少)QP。在解码器可以通过检查先前的解码历史而不从编码器中接收显式QP调整指示同样确定对QP调整(例如,减少)相同量的意义上,这个方案可以是隐式。
可选地,编码器可以分析样本值,至少一些先前未编码的样本,以获得平坦度指示。在编码器确定这组样本满足平坦度的阈值程度时,编码器可以将指示QP调整量的显式语法元素传输给解码器。在一些变型例中,显式语法元素可以指示不调整根据隐式速率算法确定的QP(例如,0QP调整)。在编码器确定这组样本不满足任何平坦度的阈值程度(例如,不是非常平坦,也不是略微平坦)时,编码器可以发送压缩比特流而无需显式语法元素,从而保存比特使用。下面还讨论混合显式-隐式参数控制。
在一些情况下,编码器可以放弃调整由隐式RC算法确定的QP。示例性场景包括当前QP小于低阈值并且图像内容是平坦或者从忙碌过渡成平坦的时间以及QP大于高阈值以免上溢的时候。在这些示例性场景中,编码器可以放弃向解码器发送显式语法元素或显式QP调整指示。
混合的显式-隐式量化和预测控制
与基于解码历史从解码过程本身隐式恢复解码器中的这些参数相比,编码器可以在编码的比特流中显式指示QP、预测或其他编码变量(例如,通过发送这些变量的值或指示符)。在编码器决定以历史不容易允许解码器确定的方式改变QP、预测向量或其他参数时,编码器可以以比特成本效率的方式将比特显式插入比特流内,以通知解码器新的QP、块预测或其他参数值。这提供了QP、预测和其他参数的一种混合的隐式/显式信令。
编码器可以将显式量化指示插入编码比特流内,显式量化指示指定调整根据隐式速率算法确定的量化参数。显式量化可以指定对量化参数调整特定值,可选地不包括特定值本身。
作为一个实例,编码器可以使用(例如)每个单元一个操作模式位来指示解码器是否应继续隐式获得参数。例如,在设置操作模式位时,解码器可以继续隐式确定参数。但是在该位被清除时,编码器可以在比特流中提供参数指示符,并且覆盖(override)该单元的解码器的隐式操作。参数指示符可以(作为实例)是显式QP值、提高或降低QP的指示、打开或关闭块预测的指示符或者预测向量的显式值。关于平坦度确定以及发送平坦度指示符(例如,flatness_flag值),上面描述了QP的混合的隐式/显式信令的另一个具体实例。
作为又一个具体实例,编码器可以使用操作模式位来指示在解码后续块时,解码器是否应继续使用显式QP调整指示(例如,显式QP值或提高或降低QP的指示)。例如,编码器可以对第一单元指示显式QP调整。例如,在为后续单元设置操作模式位时,解码器可以在解码后续单元时使用第一单元的相同显式QP调整。解码器可以继续使用第一单元的显式QP调整,直到接收到操作模式位被清除的单元。在操作模式位被清除时,解码器可以为当前单元继续隐式获得参数,而非使用先前指定的显式QP调整。
编码器可以使用单个操作模式位来指示QP、预测或另一个参数值的组合的隐式或显式控制。例如,在编码器清除操作模式位时,解码器可以隐式确定QP和预测。在编码器设置操作模式位时,编码器可以发送用于指定显式QP调整的附加位(可以是0)和/或用于指示预测类型或模式的附加位。
更高吞吐量的修改的DSU-VLC
如上所述,Δ尺寸单元可变长度编码(DSU-VLC)技术促进在硬件内高速地进行有效编码和解码。在待解码的单元内的比特数根据前缀值(计数0)和预测尺寸确定,这可以在编码或解码当前单元之前确定。每时钟编码或解码一个单元是可行,包括具有2、3、4个样本尺寸的单元。更快速的解码的方法也是可行。
作为进一步的优点,VLC可以设置多个单元,以便多个单元的Δ尺寸值连续地位于比特流内。接下来在图27中显示了单元重排工艺过程2700的实例。
图27包括具有2单元尺寸的三个单元。尤其地,图27显示了:单元Y 2710,其可以存储两个像素的Y分量样本610;以及单元Co 2720和单元Cg 2730,其可以分别存储这两个像素的Co和Cg分量样本610。单元Y 2710、单元Co 2720以及单元Cg 2730共同存储价值两个像素的图像数据。
VLC可以将单元2710、2720以及2730共同编码为组2740(或元单元),组2740储存两个像素的图像数据。VLC可以设置比特流,以便单元的2710、2720、2730的前缀612连续地形成组前缀2750。在一些实现方式中,VLC可以将组前缀2750编码为形成组的特定单元的单元前缀612的级联。在其他实现方式中,VLC可以记录前缀612,以形成组前缀2750。组前缀2750可以指示组2740内的基础(underlying)单元的Δ尺寸并且支持提取每个基础单元内的样本610。在这方面,解码器的VLD可以解释图27中所示的组2740的组前缀2750,以提取基础的Y、Co以及Cg样本。
通过均具有多个样本的多个单元的单个组前缀2750,解码器能够解码组前缀2750,并且为在一个时钟周期内的全部三个单元提取这两个样本610的比特(即,通过每个时钟2个像素的速率)。在这方面,通过多个单元(每个单元包括多个样本)的组前缀2750增大编码和解码效率,VLC和VLD可以增大像素处理吞吐量。
并行处理更高的吞吐量
一种系统可以并行执行上面描述的编码或解码过程和技术中的任一个。例如,编码系统可以并行实现多个编码器,每个编码器对输入图像的不同部分例如切片进行编码。编码系统还可以实现同步或多路复用逻辑,以确保来自多个并行编码器的编码图像数据按照相继(例如,光栅线)顺序传输。这种同步逻辑可以包括一个或多个缓冲器,用于临时存储输入多路复用器逻辑内的编码的比特流,该逻辑用于对编码比特流排序。
在相似的方面,解码系统可以实现用于解码编码比特流一个或多个并行解码器。解码系统可以包括多路分解器逻辑,该逻辑在并行解码器间划分编码比特流。解码系统还可以包括多路复用逻辑,在由多个并行解码器解码之后,该多路复用逻辑恢复图像数据的顺序。这个多路复用逻辑可以包括缓冲器,以使顺序输出的多个并行解码器的输出同步。
由编码系统执行的并行编码可以对解码系统透明,由解码系统执行的并行解码同样如此。编码系统可以使用与解码系统使用的并行解码器的数量不同的多个并行编码器,或者编码系统不使用并编码器,而解码系统可以使用并行解码器。
编码和/或解码系统可以通过多种方式分割图像数据,用于并行处理。一个实例包括将图像分成多个垂直或水平的条纹,每个条纹可以具有基本上相同的尺寸。并行编码或解码图像数据可以增大系统的图像处理吞吐量。
可以以硬件、软件或硬件和软件的多个不同组合的多种不同的方式实现上述方法、装置以及逻辑。例如,系统的全部或部分可以包括控制器、微处理器或专用集成电路(ASIC)内的电路,或者可以通过离散逻辑或元件或者其他类型的模拟或数字电路的组合实现,在单个集成电路上组合或者在多个集成电路之中分布。上述所有或部分逻辑可以作为指令实现,用于由处理器、控制器或其他处理装置执行,并且可以储存在有形的或永久的机器可读或计算机可读介质内,例如,闪速存储器、随机存取存储器(RAM)或只读存储器(ROM)、可擦可编程只读存储器(EPROM)或其他机器可读介质(例如,光盘只读存储器(CDROM)或磁盘或光盘))。因此,计算机程序产品等产品可以包括存储介质以及储存在该介质上的计算机可读指令,在端点、计算机系统或其他装置中执行时,这些指令促使装置根据任何以上描述执行操作。
系统的处理能力可以分布在多个系统元件之间,例如,在多个处理器和存储器之间,可选地包括多个分布的处理系统。参数、数据库以及其他数据结构可以单独地储存和管理,可以包含在单个存储器或数据库内,可以通过多种不同的方式在逻辑上和在物理上组织,并且可以通过多种方式实现,包括数据结构,例如,链表、哈希表或隐式存储机制。程序可以是单个程序、单独程序的一部分(例如,子程序),分布在几个存储器和处理器之上,或者通过多种不同的方式实现,例如,以程序库的方式,例如,共享库(例如,动态链接库(DLL))。例如,DLL可以储存执行上述任何系统处理的代码。
特别描述各种实现方式。然而,还能够具有很多其他实现方式。
在一些系统和方法中,显式量化指示可以被配置为通过特殊(particular)值指定量化参数的调整。
而且,显式量化指示可以被配置为通过特殊值指定量化参数的调整,不包括特殊值本身。
一种方法可以包括:
通过以下方法在编码系统中实现混合的显式/隐式编码参数控制:
通过将操作模式位插入编码数据流内,该操作模式位指定是否调整通过隐式编码参数决定所确定的编码参数;以及
在操作模式位指定调整通过隐式编码参数决定所确定的编码参数时:
将指定编码参数的特定变化的显式编码参数指示符插入编码数据流内。
在一些方法或系统中,显式编码参数指示符可以指定通过隐式编码参数决定所确定的多个编码参数的特定变化。
在一些方法和系统中,显式编码参数指示符可以指定量化参数、预测向量或这两者的特定变化。

Claims (15)

1.一种方法,包括:
根据隐式速率控制获取用于对当前样本编码的量化参数;
获得在与所述当前样本相距特定距离内的另一样本的测度;
在所述测度满足预定标准时:
调整所述量化参数;
在调整所述量化参数之后对像素编码;以及
向解码系统显式指示所述量化参数的所述调整。
2.根据权利要求1所述的方法,其中,所述测度包括平坦度指示,并且所述预定标准包括高平坦度阈值;以及
在所述平坦度指示满足所述高平坦度阈值时:
将所述量化参数减小特定值。
3.根据权利要求2所述的方法,其中,获得所述测度包括获得所述当前样本右边的预定数量的样本的平坦度指示。
4.根据权利要求2所述的方法,其中,显式指示包括:
向所述解码系统指定所述特定值。
5.根据权利要求2所述的方法,其中,显式指示包括:
向所述解码系统指示所述量化参数的所述调整,而不指定所述特定值。
6.根据权利要求1所述的方法,其中,获得所述测度包括:
确定所述当前样本周围的第一组样本是否满足高平坦度阈值;以及
在所述第一组样本满足所述高平坦度阈值时:
确定所述测度满足所述预定标准;以及
在所述第一组样本不满足所述高平坦度阈值时:
确定所述当前样本周围的第二组样本是否满足所述高平坦度阈值;以及
在所述第二组样本满足所述高平坦度阈值时:
确定所述测度满足所述预定标准;以及
在所述第二组样本不满足所述高平坦度阈值时:
确定所述测度不满足所述预定标准。
7.根据权利要求1所述的方法,其中,显式指示包括:
发送量化调整量。
8.根据权利要求1所述的方法,其中,显式指示包括:
将操作模式位设置为特殊值,以指示显式编码参数决定。
9.根据权利要求1所述的方法,其中,调整所述量化参数包括:
在所述测度满足第一标准时,将所述量化参数减小第一减小值;以及
在所述测度满足第二标准但是不满足所述第一标准时,将所述量化参数减小第二减小值;以及
其中,第一减小值大于所述第二减小值。
10.一种系统,包括:
编码器缓冲器,存储第一图像样本;以及
编码逻辑,与所述编码器缓冲器进行通信,并且被配置为:
获得用于对所述第一图像样本编码的量化参数,所述量化参数是根据隐式速率控制算法确定的;
调整所述量化参数以获得经调整的量化参数;
使用所述经调整的量化参数将所述第一图像样本编码为压缩数据流;以及
将显式量化指示插入所述压缩数据流内,所述显式量化指示指定对根据所述隐式速率控制算法确定的所述量化参数的调整。
11.根据权利要求10所述的系统,其中,所述显式量化指示包括操作模式位,所述操作模式位被配置为指定是否调整通过隐式量化参数决定所确定的量化参数值。
12.根据权利要求11所述的系统,其中,所述操作模式位还被配置为指定是否调整通过隐式预测向量决定所确定的预测向量。
13.根据权利要求10所述的系统,其中,所述编码逻辑被配置为响应于确定一组后续图像样本的测度满足预定标准,调整所述量化参数。
14.根据权利要求15所述的系统,其中,所述编码逻辑被配置为通过特殊值调整所述量化参数,所述特殊值是所述测度的函数。
15.根据权利要求10所述的系统,其中,所述编码逻辑进一步被配置为:
获取用于对第二图像样本编码的量化参数,所述量化参数是根据所述隐式速率控制算法确定的;
使用所述量化参数对所述第二图像样本编码;以及
在所述压缩数据流中指示所述量化参数的使用。
CN201380051916.3A 2012-10-03 2013-10-03 有界率近无损和无损图像压缩的方法和系统 Active CN104704828B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201261709316P 2012-10-03 2012-10-03
US61/709,316 2012-10-03
US14/044,627 2013-10-02
US14/044,627 US9883180B2 (en) 2012-10-03 2013-10-02 Bounded rate near-lossless and lossless image compression
PCT/US2013/063232 WO2014055743A1 (en) 2012-10-03 2013-10-03 Bounded rate near-lossless and lossless image compression

Publications (2)

Publication Number Publication Date
CN104704828A true CN104704828A (zh) 2015-06-10
CN104704828B CN104704828B (zh) 2018-08-21

Family

ID=49354417

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380051916.3A Active CN104704828B (zh) 2012-10-03 2013-10-03 有界率近无损和无损图像压缩的方法和系统

Country Status (5)

Country Link
US (1) US9883180B2 (zh)
EP (2) EP2940998B1 (zh)
CN (1) CN104704828B (zh)
HK (1) HK1207773A1 (zh)
WO (1) WO2014055743A1 (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107454414A (zh) * 2016-04-20 2017-12-08 联发科技股份有限公司 图像编码/解码方法及相关装置
CN108322753A (zh) * 2017-01-15 2018-07-24 上海天荷电子信息有限公司 动态调整最近编码参数数组的元素的数据压缩方法和装置
CN108881915A (zh) * 2018-07-11 2018-11-23 武汉精测电子集团股份有限公司 基于dsc编码技术视频播放的装置和方法
CN108965877A (zh) * 2018-07-04 2018-12-07 武汉精测电子集团股份有限公司 基于dsc压缩算法实现视频实时显示的装置及方法
CN109618157A (zh) * 2018-12-29 2019-04-12 东南大学 一种视频显示流压缩编码的硬件实现系统及方法
CN110139103A (zh) * 2015-10-08 2019-08-16 联发科技股份有限公司 视频编码方法/装置以及视频解码方法/装置
CN111108527A (zh) * 2017-05-19 2020-05-05 莫维迪乌斯有限公司 用于当取回像素核时降低存储器延迟的方法、系统和设备
CN112835651A (zh) * 2021-04-01 2021-05-25 中国空空导弹研究院 一种多路图像并行解码处理方法
CN116389759A (zh) * 2022-05-27 2023-07-04 上海玄戒技术有限公司 图像编码方法、装置、电子设备、芯片及存储介质

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10291915B2 (en) * 2014-03-06 2019-05-14 Samsung Electronics Co., Ltd. Video decoding method and apparatus and video encoding method and apparatus
US10271052B2 (en) * 2014-03-14 2019-04-23 Qualcomm Incorporated Universal color-space inverse transform coding
CN110971905B (zh) * 2014-03-14 2023-11-17 Vid拓展公司 编解码视频内容的方法、装置和存储介质
US9930346B2 (en) * 2014-04-15 2018-03-27 Qualcomm Incorporated System and method for flatness detection for display stream compression (DSC)
KR101663668B1 (ko) * 2014-06-27 2016-10-07 삼성전자주식회사 영상 패딩영역의 비디오 복호화 및 부호화 장치 및 방법
US10602158B2 (en) * 2015-02-11 2020-03-24 Ati Technologies Ulc Method for maximizing video slice size constraint
US10015496B2 (en) 2015-03-25 2018-07-03 Samsung Display Co., Ltd. Method and apparatus for temporal reference coding with light coding systems for display systems
US9306597B1 (en) 2015-03-30 2016-04-05 Microsoft Technology Licensing, Llc Data compression
KR20170017573A (ko) * 2015-08-07 2017-02-15 삼성전자주식회사 영상 데이터 처리 방법 및 이를 지원하는 전자 장치
US9911174B2 (en) 2015-08-26 2018-03-06 Apple Inc. Multi-rate processing for image data in an image processing pipeline
US10574988B2 (en) 2015-11-19 2020-02-25 Qualcomm Incorporated System and methods for reducing slice boundary visual artifacts in display stream compression (DSC)
US20170280139A1 (en) * 2016-03-22 2017-09-28 Qualcomm Incorporated Apparatus and methods for adaptive calculation of quantization parameters in display stream compression
US10855989B2 (en) * 2016-06-09 2020-12-01 Qualcomm Incorporated Substream multiplexing for display stream compression
US10685282B2 (en) * 2018-07-25 2020-06-16 WaveOne Inc. Machine-learning based video compression
GB2601504B (en) * 2020-12-01 2023-03-29 Imagination Tech Ltd Data compression and packing
GB2601503B (en) * 2020-12-01 2023-03-29 Imagination Tech Ltd Data compression and packing

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866298A (zh) * 2005-05-17 2006-11-22 凌阳科技股份有限公司 影像方块内物体边缘侦测及决定量化缩放参数的方法
US20070009163A1 (en) * 2005-07-11 2007-01-11 Kabushiki Kaisha Toshiba Image transmitting apparatus and image receiving apparatus
CN101416511A (zh) * 2006-04-07 2009-04-22 微软公司 基于纹理水平的量化调整
CN101931815A (zh) * 2006-04-07 2010-12-29 微软公司 基于纹理水平的量化调整
WO2012029208A1 (ja) * 2010-09-03 2012-03-08 パナソニック株式会社 画像符号化方法、画像復号化方法、画像符号化装置及び画像復号化装置
US20120114034A1 (en) * 2010-11-08 2012-05-10 Mediatek Inc. Method and Apparatus of Delta Quantization Parameter Processing for High Efficiency Video Coding

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821119A (en) 1988-05-04 1989-04-11 Bell Communications Research, Inc. Method and apparatus for low bit-rate interframe video coding
JPH0714209B2 (ja) 1989-12-20 1995-02-15 松下電器産業株式会社 動画像符号化装置
DE69230922T2 (de) 1991-01-17 2000-11-30 Mitsubishi Denki K.K., Tokio/Tokyo Videosignalkodierer mit Blockvertauschungstechnik
US5883976A (en) 1994-12-28 1999-03-16 Canon Kabushiki Kaisha Selectively utilizing multiple encoding methods
JP3749752B2 (ja) 1995-03-24 2006-03-01 アイティーティー・マニュファクチャリング・エンタープライジズ・インコーポレーテッド ブロック適応型差分パルスコード変調システム
US5650860A (en) 1995-12-26 1997-07-22 C-Cube Microsystems, Inc. Adaptive quantization
US6853385B1 (en) 1999-11-09 2005-02-08 Broadcom Corporation Video, audio and graphics decode, composite and display system
GB2346282B (en) 1999-01-28 2003-02-19 Snell & Wilcox Ltd Bit rate control in compression encoding
GB2364843A (en) 2000-07-14 2002-02-06 Sony Uk Ltd Data encoding based on data quantity and data quality
GB2387056A (en) 2002-03-28 2003-10-01 Sony Uk Ltd Differential encoding and decoding
US7383180B2 (en) 2003-07-18 2008-06-03 Microsoft Corporation Constant bitrate media encoding techniques
US8582659B2 (en) 2003-09-07 2013-11-12 Microsoft Corporation Determining a decoding time stamp from buffer fullness
US7697608B2 (en) 2004-02-03 2010-04-13 Sony Corporation Scalable MPEG video/macro block rate control
US20060227870A1 (en) 2005-03-10 2006-10-12 Tao Tian Context-adaptive bandwidth adjustment in video rate control
US8139882B2 (en) 2005-04-05 2012-03-20 Thomson Licensing Method for locally adjusting a quantization step and coding device implementing said method
JP4709900B2 (ja) 2006-05-17 2011-06-29 富士通株式会社 画像圧縮装置、圧縮方法及びプログラム並びに画像復元装置、復元方法及びプログラム
KR101312260B1 (ko) 2007-01-19 2013-09-25 삼성전자주식회사 에지 영역을 효과적으로 압축하고 복원하는 방법 및 장치
US8406314B2 (en) 2007-11-28 2013-03-26 Sharp Laboratories Of America, Inc. Two-dimensional DPCM with PCM escape mode
KR101394536B1 (ko) 2009-02-13 2014-05-15 블랙베리 리미티드 이미지 처리에서 픽셀-도메인 왜곡 분포의 균형이 맞춰진 적응적 양자화
US9774875B2 (en) 2009-03-10 2017-09-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Lossless and near-lossless image compression
CN102577379B (zh) 2009-10-05 2017-12-19 汤姆逊许可证公司 用于视频编码和译码中的嵌入量化参数调节的方法和装置
EP2317769A1 (en) 2009-11-02 2011-05-04 Panasonic Corporation Luminance dependent quantization
US9628788B2 (en) 2010-03-16 2017-04-18 Thomson Licensing Methods and apparatus for implicit adaptive motion vector predictor selection for video encoding and decoding
JP5879555B2 (ja) 2010-05-10 2016-03-08 パナソニックIpマネジメント株式会社 動画像符号化装置
US10334288B2 (en) 2010-06-15 2019-06-25 Avago Technologies International Sales Pte. Limited Method and system for zero overhead parallel entropy decoding
US20110310967A1 (en) 2010-06-22 2011-12-22 Lei Zhang Method and System for Video and Image Coding Using Pattern Matching for Intra-Prediction
BR112013023405A2 (pt) 2011-03-14 2016-12-13 Thomson Licensing método para a reconstrução e a codificação de um bloco de imagem
JP5786478B2 (ja) * 2011-06-15 2015-09-30 富士通株式会社 動画像復号装置、動画像復号方法、及び動画像復号プログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1866298A (zh) * 2005-05-17 2006-11-22 凌阳科技股份有限公司 影像方块内物体边缘侦测及决定量化缩放参数的方法
US20070009163A1 (en) * 2005-07-11 2007-01-11 Kabushiki Kaisha Toshiba Image transmitting apparatus and image receiving apparatus
CN101416511A (zh) * 2006-04-07 2009-04-22 微软公司 基于纹理水平的量化调整
CN101931815A (zh) * 2006-04-07 2010-12-29 微软公司 基于纹理水平的量化调整
WO2012029208A1 (ja) * 2010-09-03 2012-03-08 パナソニック株式会社 画像符号化方法、画像復号化方法、画像符号化装置及び画像復号化装置
US20120114034A1 (en) * 2010-11-08 2012-05-10 Mediatek Inc. Method and Apparatus of Delta Quantization Parameter Processing for High Efficiency Video Coding

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110139103A (zh) * 2015-10-08 2019-08-16 联发科技股份有限公司 视频编码方法/装置以及视频解码方法/装置
CN107454414B (zh) * 2016-04-20 2020-08-14 联发科技股份有限公司 图像编码/解码方法及相关装置
CN107454414A (zh) * 2016-04-20 2017-12-08 联发科技股份有限公司 图像编码/解码方法及相关装置
US10575000B2 (en) 2016-04-20 2020-02-25 Mediatek Inc. Method and apparatus for image compression using block prediction mode
CN108322753A (zh) * 2017-01-15 2018-07-24 上海天荷电子信息有限公司 动态调整最近编码参数数组的元素的数据压缩方法和装置
CN108322753B (zh) * 2017-01-15 2024-04-12 上海天荷电子信息有限公司 动态调整最近编码参数数组的元素的数据压缩方法和装置
CN111108527B (zh) * 2017-05-19 2023-06-30 莫维迪乌斯有限公司 用于当取回像素核时降低存储器延迟的方法、系统和设备
CN111108527A (zh) * 2017-05-19 2020-05-05 莫维迪乌斯有限公司 用于当取回像素核时降低存储器延迟的方法、系统和设备
CN108965877A (zh) * 2018-07-04 2018-12-07 武汉精测电子集团股份有限公司 基于dsc压缩算法实现视频实时显示的装置及方法
CN108881915B (zh) * 2018-07-11 2020-09-04 武汉精测电子集团股份有限公司 基于dsc编码技术视频播放的装置和方法
CN108881915A (zh) * 2018-07-11 2018-11-23 武汉精测电子集团股份有限公司 基于dsc编码技术视频播放的装置和方法
CN109618157A (zh) * 2018-12-29 2019-04-12 东南大学 一种视频显示流压缩编码的硬件实现系统及方法
CN112835651A (zh) * 2021-04-01 2021-05-25 中国空空导弹研究院 一种多路图像并行解码处理方法
CN112835651B (zh) * 2021-04-01 2023-10-20 中国空空导弹研究院 一种多路图像并行解码处理方法
CN116389759A (zh) * 2022-05-27 2023-07-04 上海玄戒技术有限公司 图像编码方法、装置、电子设备、芯片及存储介质

Also Published As

Publication number Publication date
US9883180B2 (en) 2018-01-30
EP2940998A1 (en) 2015-11-04
US20140098857A1 (en) 2014-04-10
EP2940998B1 (en) 2020-09-02
CN104704828B (zh) 2018-08-21
WO2014055743A1 (en) 2014-04-10
HK1207773A1 (zh) 2016-02-05
EP2725809A3 (en) 2014-08-27
EP2725809A2 (en) 2014-04-30
EP2725809B1 (en) 2018-07-18

Similar Documents

Publication Publication Date Title
CN104704828A (zh) 有界率近无损和无损图像压缩
US9978156B2 (en) High-throughput image and video compression
CN104718753B (zh) 利用切片速率控制的有界率压缩
US10812829B2 (en) 2D block image encoding
CN105379283B (zh) 数据编码和解码
US20140294089A1 (en) Hybrid Transform-Based Compression
US20140160139A1 (en) Fine-Grained Bit-Rate Control
US9774875B2 (en) Lossless and near-lossless image compression
CN105103548A (zh) 根据输入数据的位深选择变换数据的最大动态范围和变换矩阵的数据精度
CN101828405A (zh) 图像编码装置、图像解码装置、图像编码方法以及图像解码方法
CN105432077A (zh) 在切换色彩空间时调整量化/缩放和逆量化/缩放
CN105264888A (zh) 用于对色彩空间、色彩采样率和/或比特深度自适应切换的编码策略
CN103650496A (zh) 用于在hevc中编码的基于像素的帧内预测
CN105230023A (zh) 色彩空间、色彩采样率和/或比特深度的自适应切换
CN104185989A (zh) 用于帧内预测残差的二值化方案和hevc中无损编码中的改进帧内预测
CN104041035A (zh) 用于复合视频的无损编码及相关信号表示方法
CN103181171A (zh) 深度指示图的产生
CN105284114A (zh) 视频信号处理方法及装置
CN102740068A (zh) 图像存储器压缩方法与装置
EP2294550B1 (en) Layered texture compression architecture
CN108055538A (zh) 视频编码设备以及视频编码方法
WO2023039859A1 (zh) 视频编解码方法、设备、系统、及存储介质
WO2023236936A1 (zh) 一种图像编解码方法及装置
CN114521327A (zh) 视频译码中的残差的量化
US20230377204A1 (en) A method and an apparatus for reconstructing an occupancy map of a point cloud frame

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1207773

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20170308

Address after: Singapore Singapore

Applicant after: Avago Technologies Fiber IP Singapore Pte. Ltd.

Address before: American California

Applicant before: Zyray Wireless Inc.

GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20181022

Address after: Singapore Singapore

Patentee after: Annwa high tech Limited by Share Ltd

Address before: Singapore Singapore

Patentee before: Avago Technologies Fiber IP Singapore Pte. Ltd.

REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1207773

Country of ref document: HK