CN101755464B - 基于行的视频码率控制和压缩 - Google Patents

基于行的视频码率控制和压缩 Download PDF

Info

Publication number
CN101755464B
CN101755464B CN2007800450590A CN200780045059A CN101755464B CN 101755464 B CN101755464 B CN 101755464B CN 2007800450590 A CN2007800450590 A CN 2007800450590A CN 200780045059 A CN200780045059 A CN 200780045059A CN 101755464 B CN101755464 B CN 101755464B
Authority
CN
China
Prior art keywords
row
low pass
video
coding
high pass
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.)
Expired - Fee Related
Application number
CN2007800450590A
Other languages
English (en)
Other versions
CN101755464A (zh
Inventor
F·C·费尔南德斯
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101755464A publication Critical patent/CN101755464A/zh
Application granted granted Critical
Publication of CN101755464B publication Critical patent/CN101755464B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • 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/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/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/147Data rate or code amount at the encoder output according to rate distortion criteria
    • 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/152Data rate or code amount at the encoder output by measuring the fullness of 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/18Methods 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 set of transform coefficients
    • 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/187Methods 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 scalable video layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/37Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability with arrangements for assigning different transmission priorities to video input data or to video coded data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets

Abstract

本发明提供了一种基于行的视频压缩方法。该方法包括算术编码器的基本元件来改进Golomb编码性能。通过对基于行的压缩方法中的操作进行逆操作,可以获得对应的解码器。该方法还提供了一种用于根据量化后的数据生成预测残差的经验驱动的方法,其中预测是在最大相关方向上驱动的,从而不必向解码器提供用于在每个阵列元素上指示该方向的额外数据。还提供了一种基于行的视频码率控制方法。所述基于行的视频码率控制方法包括用于逐个分组地以及逐行地改变系统操作参数的系统反馈。

Description

基于行的视频码率控制和压缩
技术领域
本发明一般涉及无线通信,并且更具体而言涉及用于无线视频数据传输的基于行的码率控制。
背景技术
超宽带(UWB)无线通信允许以空前的高码率来进行数据传输。视频传输受益于这些高码率,因为如今可以以比从前所允许的压缩比更低的压缩比来传输高分辨率视频格式。现有技术的系统依赖于基于帧或基于块的压缩方案,这些压缩方案分成两大类。
为了在具有指定容量的信道上传输视频,不可伸缩的码率控制法(non-scalable rate-control method)采用复杂的方法来选择用于压缩视频帧的块的量化参数以使得平均比特率接近信道容量。然而,因为瞬时比特率可能大大超过信道容量,所以这些方法使用大的缓冲器来防止数据丢失。
当用可缩放码率控制来传输视频时,将每个视频帧或块编码成可缩放的(或嵌入式的)比特流,可以在任意断点截取该比特流以保证瞬时比特率永远不超过信道容量。然而,这些方法使用足够的存储器来缓存整个帧或块,使得复杂、多通道、面向比特平面的处理可以生成可缩放的比特流。
通常,视频码率控制方法应用码率失真理论,通过使给定码率的失真最小化来优化质量。在实践中,基于帧和基于块的视频编码器使用多通道方法或高价搜索来进行码率受限的失真最小化。
与基于帧和基于块的系统不同,所提出的基于行的码率控制逐行地调整视频压缩以改变系统条件,例如缓冲器状态和信道容量。随着无线视频系统从基于帧和基于块的码率控制变成基于行的码率控制,在本领域中需要确定用于基于行的码率控制的最小量化参数,使得在变化的信道容量下无需缓冲器溢出就能获得最大的视频质量。
附图说明
当结合附图来阅读以下详细描述时可以最好地理解本发明的方案,其中:
图1是可以在其中实现本发明的实施例的典型的无线视频系统的方框图;
图2根据本发明的实施例示出了视频帧的格式;
图3根据本发明的实施例示出了用于描绘视频帧的每一行的RGB分量的数据流的方框图;
图4是示出了用于定义与通过高通子带或低通子带预测残差得到的整数相关的指数Golomb码的过程的流程图;
图5根据本发明的实施例示出了一对打包器;
图6根据本发明的实施例示出了输入,视频码率控制(Video Rate Control)使用所述输入来生成控制输出以优化视频编码使得失真最小并且没有缓冲器溢出;
图7示出了在水平消隐周期期间为了确定最优低通量化设置而执行的过程的流程图;
图8示出了计算行的低通部分的编码后长度的流程图;
图9示出了计算来自行的低通部分的方差的流程图;
图10示出了在水平消隐周期期间为了确定最优高通量化设置而执行的过程的流程图;
图11示出了计算行的高通部分的编码后长度的流程图;
图12示出了计算来自行的高通部分的方差的流程图;
图13示出了优化的低通子带码率计算的过程;
图14描述了用于在所有量化等级下优化计算低通子带项x的残差码长的OptimizedLPrates过程;
图15描述了用于将来自当前行的低通子带项与来自当前低通子带行的x的非量化左侧邻居相加的过程;
图16示出了用于量化输入估计的校正过程;
图17示出了用于在像素量化后确定像素之间的距离的过程;
图18示出了用于计算与指定的量化等级上的低通子带项x相对应的残差的过程;
图19示出了如JPEG-2000图像压缩标准所定义的用于使用floor(x’+2)的LeGall-(5,3)小波变换的整数实现的舍入方法;
图20根据本发明的实施例示出了用于使用fix(x’+2)的LeGall-(5,3)小波变换的整数实现的舍入方法;
图21描述了用于视频码率控制信号的压缩比的曲线图;
图22根据本发明的实施例示出了用于改进的视频码率控制的固件实现法的流程图;
图23根据本发明的实施例示出了用于改进的视频码率控制的硬件实现法的流程图;
图24描述了用于剪辑寄存器中的未使用比特的剪辑功能;
图25示出了在水平消隐周期期间为了确定最优低通量化设置而执行的过程的流程图,作为图7所示的过程的替换;
图26示出了在水平消隐周期期间为了确定最优高通量化设置而执行的过程的流程图,作为图10所示的过程的替换。
具体实施方式
图像/视频编码器一般包括两个组件,压缩引擎和码率控制。码率控制从编码器所位于的系统接收输入,并且然后生成用于控制压缩引擎的操作的参数,使得可以由系统发送输出比特流。本发明的一个实施例提供了一种低复杂度低成本的码率控制方法。
考虑从潜在系统接收以下反馈的图像/视频编码器:
(a)初始吞吐量估计,
(b)分组大小,
(c)分组重传反馈,
(d)对即将到来的视频禁用时隙的通知,以及
(e)发送缓冲器满。
本发明的另一个实施例提供了一种低成本的固件可实现的方法,用于通过使用上述反馈经由码率控制,逐个分组地、自适应地改变操作点,来改进解码后的图像/视频质量。
在另一个变形中,图像/视频编码器从潜在系统接收以下反馈:
(a)初始吞吐量估计,
(b)压缩后的行大小,
(c)分组重传反馈,
(d)对即将到来的视频禁用时隙的通知,以及
(e)发送缓冲器满。
该可替换的实施例提供了一种低成本的、硬件可实现(与固件相对)的方法,用于通过使用上述反馈经由码率控制,逐行地、自适应地改变操作点,来改进解码后的图像/视频质量。
如上所述,图像/视频编码器一般包括两个组件,压缩引擎和码率控制。码率控制从编码器所位于的系统接收输入,并且然后生成用于控制压缩引擎的操作的参数,使得可以由系统发送输出比特流。对应于编码器的解码器包括解压缩引擎,其执行压缩引擎的操作的逆操作,使得从比特流重构原图像/视频数据。本发明的一个实施例提供了一种低复杂度、低成本、基于行的压缩引擎。通过执行压缩引擎的操作的逆操作,获得对应的解码器。
本发明的进一步的实施例包括导致更高的无损或有损压缩比的舍入方法。通常使用小波变换来对图像/视频数据解相关,并且从而提高无损和有损压缩比。为了降低实现成本,使用舍入运算来实现小波变换的整数形式。
在一种图像/视频编码器中使用多分辨率变换,多分辨率变换之后是熵编码,在熵编码中将较长的代码分配给与原始数据中的边缘相对应的大的高通系数。本发明的另一个实施例提供了一种用于提高压缩比的方法。
本发明的进一步的实施例包含用于提高失真估计准确性的方法。在具有基于小波变换的压缩引擎的图像/视频编码器中,码率控制对来自小波域失真的像素域失真进行估计。不幸的是,由于舍入噪声,当使用低复杂度的整数小波变换时,降低了像素域失真估计的准确性。
在压缩引擎用包含强垂直和/或水平相关的本地化的区域来对量化后的二维阵列进行编码的图像/视频编码器中,如果在每个阵列元素的最大相关方向上生成预测残差,则可以获得更高的压缩比。本发明的一个实施例提供了一种用于根据量化后的数据生成预测残差的经验驱动的方法。经验使得能够在最大相关的方向上进行预测,从而不必向解码器提供用于在每个阵列元素上指示该方向的额外数据。
该编码器的码率控制对全部量化等级上的编码后阵列的比特消耗进行估计。本发明的进一步的实施例提供了一种用于对各个指定量化等级上的熵编码的残差的确切比特消耗进行预测的低复杂度的方法。
在图像/视频编码器中,压缩引擎包括用于创建比特流的熵编码器。可以用Golomb码来实现有效、低复杂度、低成本的熵编码器。本发明的实施例提供了一种用于生成用于图像/视频编码器的Golomb码的成本降低的方法。该方法的逆转指明了用于对应的图像/视频解码器的熵解码过程。此外,可以使用算术编码器的基本元件来改进Golomb编码性能。
图1是可以在其中实现本发明的实施例的典型的无线视频系统的方框图。视频数据流从视频源100无线地传递到视频宿110(例如,计算机监视器、电视等等)。无线视频输入设备101和输出设备111提供该无线连接。
图2根据本发明的实施例示出了视频帧的格式。每个视频帧由有效(active)和消隐(blanking)行组成。每个有效行由有效和消隐像素组成。显示视频帧的有效视频部分期间的数据,并且该数据包括红绿蓝(RGB)或者YUV 4:2:2格式的三个彩色分量。(在YUV彩色模型中,Y表示亮度信号,U和V表示色差信号)。
图3根据本发明的实施例示出了用于描绘视频帧的每一行的RGB分量的数据流的方框图。RGB到YUV(RGB-to-YUV)块302使用色彩空间转换,将每个像素的红绿蓝分量映射成对应的4:4:4格式的YUV分量。如果断言了旁路控制(Bypass control)301,则绕过RGB到YUV块302。
选择YUV控制(Select YUV control)303确定是否绕过YUV格式转换(YUV Format Conversion)块304,或者低通滤波器和下采样器将YUV 4:4:4格式转换成YUV 4:2:2格式还是YUV 4:1:1格式。
将YUV格式转换块304所产生的YUV分量进行独立的小波变换306(Y)、307(U)和308(V)。SelectTfm控制305确定是使用Daubechies(7,9)还是LeGall(5,3)小波变换的二级整数形式来生成每个彩色分量的低通和高通子带。因为使用二级小波变换,所以对于给定行,低通(高优先级)小波系数的数量组成了该行中25%的像素,并且高通(低优先级)小波系数组成了该行中75%的像素。
对于Y分量,低通子带被标记为LpY,高通子带被标记为HpY。类似地,U和V分量的对应子带分别被标记为LpU、HpU、LpV、HpV。将给定行的LpY、HpY、LpU、HpU、LpV、HpV子带存储在RAM 309中,向给定行的全部子带提供视频码率控制接入以确定用于这些子带的最佳量化设置。
一旦完成小波变换后,视频码率控制就确定各个子带LpY、HpY、LpU、HpU、LpV、HpV的最佳量化等级qLY、qHY、qLU、qHU、qLV、qHV(以下详细解释)。将各对子带系数和量化等级(例如LpY/qLY、HpY/qHY等)送入量化器310-315,其通过以下过程计算量化后的系数xq
xq=x>>q,
If(x<0)AND(x的q个LSB不全为0)AND(q<>0)
xq=xq+1
以上伪代码示出了量化器通过右移来估计x的q个最不重要比特以得到xq。为了获得更短的熵编码,增加负值的xq,使得该负数向零舍入。
在量化后,调节该数据以符合指数分布,因为熵编码器对于大部分样本聚集在零附近的指数分布的数据最佳地输出短代码。
量化后的高通子带HpY’、HpU’、HpV’已经是指数分布的,并且不需要调节。(见“Noise Removal via Bayesian Wavelet Coring”,E.P.Simoncelli,E.H.Adelson,Proceedings of 3rd IEEE International Conference on ImageProcessing”,Vol.1,pp.379-382,September 1996,通过引用的方式将该内容并入本文。)
对于量化后的低通子带LpY’、LpU’和LpV’,本发明的一个实施例应用预测过程316、317、318来分别创建指数分布的预测残差ResY、ResU、ResV。该预测过程利用前一像素行的低通部分。以下的表1示出了量化后的低通子带的第n行和第n-1行。
Figure G2007800450590D00071
表1
对于以下输入,输出包括用于第n行的每个量化后的项xq的LP残差dx:
1)量化后的LP子带的第n行(Row n)和第n-1行(Row n-1),
2)Qn,Qn-1:分别用于第n行和第n-1行的量化等级,
注意:因为第1行是量化后的LP子带的首行,所以未定义并且以下未使用第0行和Q0
3)预测模式:行间预测或者行内预测。
注意:相同的预测模式应用于第n行中的全部项。
行间预测包括使用第n-1行来预测第n行。(显然,该预测模式对于n=1无效。)在该预测过程中,缩放第n-1行的项,使得它们与第n行的项具有相同的量化等级。考虑以下4种情况:
情况1:n>1,m>1,Q n-1 >=Q n
aq=aq<<(Qn-1-Qn),
bq=bq<<(Qn-1-Qn),
情况2:n>1,m>1,Q n-1 <Q n
aq=aq>>(Qn-Qn-1),
bq=bq>>(Qn-Qn-1),
情况3:n>1,m=1,Q n-1 >=Q n
bq=bq<<(Qn-1-Qn),
情况4:n>1,m=1,Q n-1 <Q n
bq=bq>>(Qn-Qn-1).
在适当缩放第n-1行的项之后,使用以下预测过程来生成对应于xq的残差dx:
对于情况1和2:
If|aq-cq|<=|aq-bq|
     dx=xq-bq
Else
     dx=xq-cq
对于情况3和4,dx=xq-bq
对于行内预测,不使用第n-1行来预测第n行。当希望与第n-1行独立地编码第n行时,对于n=1该预测模式是强制的,并且对于n>1该预测模式是可选的。与行间预测不同,行内预测不需要缩放。根据以下两种情况得出对应于xq的残差dx:
情况5:m>1:dx=xq-cq
情况6:m=1:dx=xq.
在预测过程之后,现在残差ResY、ResU、ResV和高通子带HpY’、HpU’、HpV’是指数分布的。这允许本发明的实施例在熵编码器319-324中使用极其简单却有效的指数Golomb码。(指数Golomb码的描述见:“ACompression Method for Clustered Bit-Vectors”,J.Teuhola,InformationProcessingLetters,Vol.7,pp.308-311,October 1978,将其内容以引用方式并入本文。)
现有技术的系统使用指数Golomb码来对小波系数游程进行编码。(见″Generalized Golomb Codes and Adaptive Coding of Wavelet-TransformedImage Subbands″,A.Kiely,and M.Klimesh,IPN PR 42-154,Jet-PropulsionLaboratory,California Institute of Technology,April-June 2003,pp.1-14,August 15,2003。)相反,本发明的一个实施例使用这些码来对高通子带和低通子带预测残差进行编码。用简单的预测残差来调节用于指数Golomb编码的数据能够获得用于视频码率控制的有效却精确的码率估计技术(将在下面说明)。
图4示出了用于定义与根据高通子带或低通子带预测残差得到的整数X相关的指数Golomb码G的过程的流程图。第一步是确定整数X的符号(步骤401)。
如果X=0,则将Golomb码设置为1(G=1)(步骤402)。对于正的X(>0),B是X左移1位的二进制表示(步骤403)。对于负的X(<0),该过程相同,除了X的绝对值生成B,并且设置B的最不重要比特(步骤404)。
L是B之前的前导零的数量,并且其是由floor(log2B)定义的(步骤405)。L的比特长度比B小1。
因此,对于正整数和负整数的X,Golomb码G包括L个前导零以及紧跟的B,其中B用最重要比特设置为1的二进制来表示(步骤406)。
为了说明指数Golombb编码过程,以下列表显示了X∈[-10,10]时的Golomb码G以及码长。
X=-10,G=000010101,长度=9
X=-9,G=000010011,长度=9
X=-8,G=000010001,长度=9
X=-7,G=0001111,长度=7
X=-6,G=0001101,长度=7
X=-5,G=0001011,长度=7
X=-4,G=0001001,长度=7
X=-3,G=00111,长度=5
X=-2,G=00101,长度=5
X=-1,G=011,长度=3
X=0,G=1,长度=1
X=1,G=010,长度=3
X=2,G=00100,长度=5
X=3,G=00110,长度=5
X=4,G=0001000,长度=7
X=5,G=0001010,长度=7
X=6,G=0001100,长度=7
X=7,G=0001110,长度=7
X=8,G=000010000,长度=9
X=9,G=000010010,长度=9
X=10,G=000010100,长度=9
本发明的一个实施例中的Golomb码的实现极其有效,因为它不需要任何算术。具体地,虽然使用floor(log2B)来简便地定义上述实施例中的L,但是另一个实施例使用简单逻辑来找出最重要比特并且从而找出B的比特长度。
最后,回到图3,本发明的一个实施例将熵编码后的ResY、ResU、ResV、HpY’、HpU’和HpV’标记为HiPriY、HiPriU、HiPriV、LoPriY、LoPriU、LoPriV。
图5根据本发明的实施例示出了一对打包器。独立的打包器501、502分别将HiPriY、HiPriU、HiPriV汇聚成高优先级分组,将LoPriY、LoPriU、LoPriV汇集成低优先级分组。进行该优先化,使得与包含高通子带的分组相比,向包含残差数据的分组提供更多的保护。因为来自一个行的残差数据被用于下一行的行间预测,所以残差数据丢失可能导致错误传播到后面的行。相反地,因为给定行的高通数据独立于其它行,所以高通数据丢失不会影响后面的行。应该注意到,打包器一般将来自多个行的数据打包成一个分组。
图3所示的基于行的编码器的操作的关键组成部分是视频码率控制(Video Rate-Control,VRC)方法,VRC方法确定在变化的信道容量下获得最大视频质量而不产生缓冲器溢出所需的每行的最小量化参数(qLY、qHY、qLU、qHU、qLV、qHV)。本发明的一个实施例使用小型缓冲器和单路扫描,其与使用大型缓冲器和包括复杂搜索的多路、面向比特平面的现有技术的基于帧或块的技术相比,复杂度低得多。
图6根据本发明的实施例示出了输入,VRC使用所述输入来生成控制输出以优化视频编码使得失真最小并且没有缓冲器溢出。在本发明的优选实施例中,用硬件来实现VRC。从时序的角度来看,在给定行的有效像素可用之前不久,介质访问控制器(MAC)指定maxLsize 601和maxHsize 602,其中maxLsize 601和maxHsize 602分别指示当前行的低通和高通部分的最大编码后行大小。
根据物理层(PHY)所提供的信道容量估计,可以容易地计算这些最大行大小。maxLsize和maxHsize索引到一个表格,该表格指定对指定的最大行大小提供好的压缩结果的Bypass 603、SelectYUV 604和SelectTfm 605值。
一旦给定行的有效像素变得可用,那么通过编码器使用所选择的Bypass 603、SelectYUV 604和SelectTfm 605值来对它们进行时钟同步。VRC600对存储在RAM中的LpY、HpY、LpU、HpU、LpV和HpV子带进行采样(图3所示)。同时,VRC 600使用所述子带采样,对量化值的所有允许的组合的码率和失真信息进行编辑。在水平消隐周期紧接着该行的最后一个有效像素开始之后不久(见图2),码率和失真信息分别可用作为高优先级和低优先级的编码后行大小和量化值的所有允许的组合的方差。
在一些时钟循环中,VRC 600执行与所有qHY、qHU、qHV组合相对应的高优先级的编码后行大小的单路扫描。在该扫描期间,考虑与小于maxHsize的编码后行大小相关联的qHY、qHU、qHV组合。在完成该扫描之后,qHY、qHU、qHV被设置为具有最小方差的所考虑的组合。在水平消隐周期结束前类似地确定控制值qLY、qLU、qLV。
量化器现在可以使用最佳量化设置qHY、qHU、qHV、qLY、qLU和qLV来开始量化RAM中的全部LpY、HpY、LpU、HpU、LpV和HpV子带。该定时调度确保在需要存储下一行的子带采样之前释放足够的RAM空间。
为了简化以下对VCR的解释,将qHY、qHU、qHV限制为集合{0,2,4,6}并且将qLY、qLU、qLV限制为集合{0,1,2,3}。经验证据还表明qHU通常等于qHV并且qLU通常等于qLV。因此,为了本讨论的目的,可以通过从HpU、HpV确定qHUV并且然后设置qHU=qHV=qHUV,来简化VRC方法。类似地,从LpU、LpV获得qLUV。最后一步设置qLU=qLV=qLUV。
这些限制产生极好的结果并且可以用优选实施例来实现。然而,根据本发明,可替换的实施例不需要以上要求。
图7示出了在水平消隐周期期间为了确定最优低通量化设置而执行的过程的流程图。这些量化设置(qLY,qLUV)是从输入maxLsize、RL ij和DL ij得到的,其中i,j={0,1,2,3}。下标i表示Y的量化等级,j表示UV的量化等级。RL表示码率,DL表示失真。因此,RL ij表示当分别用i个比特来量化LpY子带并且用j个比特来量化LpU、LpV子带时,行的低通部分的编码后长度。类似地,DL ij表示当分别用i个比特来量化LpY子带并且用j个比特来量化LpU、LpV子带时,行的低通部分的方差。
步骤701将最小失真初始化为一个较大值。在当前实例中,将量化等级qLY和qLUV设置为15。步骤702、703开始嵌套环,其在4个qLY量化等级和4个qLUV量化等级之间循环。因此,在嵌套环中检查qLY和qLUV的全部16个组合。
对于16个组合中的每一个,步骤704确定当前行的低通部分的编码后长度是否小于量化等级的特定组合的maxLsize。如果不小于,则检查下一个组合。
如果低通部分不小于maxLsize,则步骤705确定与该组合相关联的失真是否是至今遇到的最小失真。如果不是,则检查下一个组合。
如果与该组合相关联的失真是至今遇到的最小失真,则步骤706存储qLY和qLUV的量化组合。更新可变的minD,以保持与当前量化组合相关联的DL ij,因为其是目前为止遇到的最小失真。在完成该嵌套环后,qLY和qLUV保持该量化组合,其中该量化组合在maxLsize以下以最小失真来编码低通子带。
然而,如果步骤707确定qLY仍然保留15,那么不执行步骤706,这意味着对于全部量化组合,步骤704决定编码后的低通子带长度大于可允许的最大值maxLsize。在这种情况下,这16个量化组合不足以在可允许的最大值之下对行进行编码。
应该注意到,当进行预测过程时,不能保证组合qLY=qLUV=15以在maxLsize内对低通子带进行编码。因此,不发送当前行。改为在步骤708设置控制比特,以强制解码器用前一行替换当前行。
图25和26示出了可用来代替图7中用于确定水平消隐周期期间的最佳低通量化设置的流程图的可替换的流程图。该可替换的流程图改进了图7的过程,因为如下所述,它允许直接控制压缩后的行的视觉质量。
步骤2501将meetsRateMaxAcceptableMse初始化为最大负值,同时将meetsRateMinUnAcceptableMse、meetsRateMaxAcceptableMseQy、meetsRateMinAcceptableMseQy中的每一个初始化为大的正值。步骤2502开始嵌套环,其在4个qLY量化等级和4个qLUV量化等级之间循环。因此,在嵌套环中检查qLY和qLUV的全部16个组合。
对于16个组合中的每一个,步骤2503确定当前行的低通部分的编码后长度是否大于qLY和qLUV的特定量化等级组合(QLC)的maxLsize。如果大于,则检查下一个QLC,因为当前QLC超过了最大可允许值,或者换句话说当前QLC不满足希望的比特率要求。
如果该低通部分不大于maxLsize,则步骤2504确定与该QLC相关联的失真是否大于acceptableLpMse。如果大于,则我们知道当前QLC满足希望的比特率要求但是相关的失真太大而不能接受。在这种情况下,步骤2505测试当前QLC在已遇到的满足比特率要求但是导致不可接受的大的失真的全部QLC中是否具有最小失真。如果是,则步骤2508将当前QLC和相关失真存储在meetsRateMinUnAcceptableMseQy、meetsRateMinUnAcceptableMseQuv和meetsRateMinUnAcceptableMse中。
如果步骤2504确定与QLC相关联的失真很小可以接受,那么步骤2506测试当前QLC在满足比特率要求并且具有可接受的小失真的全部QLC中是否具有最大失真。如果是,那么步骤2507将当前QLC和相关失真存储在meetsRateMaxAcceptableMseQy、meetsRateMaxAcceptableMseQuv和meetsRateMaxAcceptableMse中。观察到步骤2504、2505、2506、2507、2508确保在满足希望的比特率的全部QLC中,相关失真最接近acceptableLpMse的QLC将被存储在meetsRateMinUnAcceptableMseQy、meetsRateMinUnAcceptableMseQuv中或存储在meetsRateMaxAcceptableMseQy、meetsRateMaxAcceptableMseQuv中。
在完成步骤2502开始的嵌套环后,就对全部QLC进行了检测,并且控制走到图26中的步骤2601。该步骤确定是否任意QLC满足比特率并具有可接受的失真。如果是(meetsRateMaxAcceptableMseQy不等于7F...F),那么在QLy和QLuv中,步骤2602返回满足比特率并且具有最接近acceptableLpMse的失真的QLC。然而,如果步骤2601确定没有QLC满足比特率并且具有可接受的失真(meetsRateMaxAcceptableMseQy等于7F...F),则步骤2603检查是否任意QLC满足比特率兵具有不可接受的大的失真。如果是(meetsRateMinUnAcceptableMseQy不等于7F...F),那么在QLy和QLuv中,步骤2604返回满足比特率并且失真最接近acceptableLpMse的QLC。最后,如果步骤2603确定没有QLC满足比特率并且具有不可接受的大MSE(meetsRateMinUnAcceptableMseQy等于7F...F),那么我们知道全部QLC都超过比特率要求。在这种情况下,步骤2605设置控制比特,以强制解码器用前一行替换当前行,如步骤708中所做的那样。
图8示出了用于计算行的低通部分的编码后长度(RL ij)的流程图。在当前实例中,Y量化等级是i={0,1,2,3},UV量化等级是j={0,1,2,3}。由于有效像素是通过小波变换来时钟同步并且被写入RAM的,所以随着小波系数wy、wu、wv分别在LpY、LpU和LpV子带中变得可用,从小波系数wy、wu、wv并行地汇聚RL ij的16个值。
在步骤801中,将全部16个RL ij寄存器初始化为零。步骤802表示随着低通子带LpY的每个小波系数wy被写入图3中的RAM 309,码率计算考虑低通子带LpY的每个小波系数wy
步骤803表明考虑全部4个Y量化等级,并且步骤804说明对于每个Y量化等级,根据应用于wy的量化、LP预测和Golomb编码处理,计算Golomb码长Ry
步骤805和806指明通过Ry来更新与不同的UV量化等级而与相同的Y量化等级相关联的4个码率寄存器。
在硬件实现中,并行地执行步骤804的全部4个实例,如同步骤806的全部16个实例那样。
步骤807到811与其对应的步骤802到806类似,并行地在LpU子带上执行。类似地,步骤812到816应用于LpV子带。
图9示出了用于计算行的低通部分的方差(DL ij)的流程图。Y量化等级是i={0,1,2,3},UV量化等级是j={0,1,2,3}。随着小波系数wy、wu、wv分别在LpY、LpU和LpV子带中变得可用,从小波系数wy、wu、wv并行地汇聚DL ij的16个值。
在步骤901中,将全部16个DL ij寄存器初始化为零。步骤902、903表示随着低通子带LpY的每个小波系数wy被写入图3中的RAM 309,失真估计考虑低通子带LpY的每个小波系数wy的绝对值。
步骤904表明考虑全部4个Y量化等级,并且步骤905说明对于每个Y量化等级,相关小波域失真等于在该Y量化等级上截断的比特的小数数值。然而因为目的是为了最小化像素域失真而不是小波域失真,所以步骤906将该失真乘方,因为对于近似正交的小波变换(见“Wavelets and FilterBanks”by G.Strang and T.Nguyen,Wellesley Cambridge Press,1996)来说,乘方后的小波域失真约等于乘方后的像素域失真。
接下来步骤907和908指明通过Dy来更新与不同的UV量化等级而与相同的Y量化等级相关联的4个失真寄存器。
在硬件实现中,并行地执行步骤905、906的全部4个实例,如同步骤908的全部16个实例那样。
步骤909到915与其对应的步骤902到908类似,并行地在LpU子带上执行。类似地,步骤916到922应用于LpV子带。
图10示出了在水平消隐周期期间为了根据输入maxLsize、RL mn、DL mn(其中m,n={0,2,4,6})确定最优高通量化设置qHY、qHUV而执行的过程的流程图。下标m表示Y量化等级,n表示UV量化等级。RH表示码率,DH表示失真。因此RH mn表示当分别用m比特来量化HpY子带并且用n比特来量化HpU、HpV子带时,行的高通部分的编码后长度。类似地,DH mn表示当分别用m比特来量化HpY子带并且用n比特来量化HpU、HpV子带时,来自行的高通部分的方差。
步骤1001到步骤1006分别类似于图7中的步骤701到706。然而,在该过程中,不需要与步骤707相似的步骤,因为如果没有满足maxHsize目标的量化组合,那么该过程使用默认的qHY=qHUV=15的设置,其在该情况中无疑满足maxHsize目标。
与图7中的过程不同,高通编码不包括预测过程。因此,量化组合qHY=qHUV=15将使所有高通子带项都强制变成0。因此,用该组合进行处理就足够了,因为编码器将通过用单个控制比特发送全零高通子带来满足maxHsize目标,这使得编码器生成对应于qHY=qHUV=15的全零高通子带。
图27和28示出了可用来代替图10中用于确定水平消隐周期期间的最佳高通量化设置的流程图的可替换的流程图。该可替换的流程图改进了图10的过程,因为如下所述,它能够直接控制压缩后的行的视觉质量。注意,该可替换的流程图完全类似于图25和26的流程图,其中图25和26的流程图指定了用于确定最佳低通量化设置并可直接控制视频质量的可替换的过程。图27和28的可替换的流程图接受输入参数maxHsize和acceptableHpMse,它们分别指定最大可允许大小和压缩后的行的高通部分的可接受失真。在进行完与图25和26中的步骤完全类似的步骤后,该过程返回qHY和qHUV以及量化等级组合,其中该量化等级组合满足希望的比特率要求并且具有最接近可接受的阈值acceptableHpMse的失真。如果不存在这样的量化等级组合(meetsRateMaxAcceptableMseQy等于7F...F并且meetsRateMinUnAcceptableMseQy等于7F...F),那么,步骤2805如前面说明图10时所述的,设置qHY=qHUV=15。
图25、26、27、28的可替换的过程允许直接控制视觉质量。在实践中,如果有必要则指定的阈值acceptableLpMse和acceptableHpMse致使量化等级升高,使得造成的失真逼近该指定的阈值。我们现在说明如何确定这些阈值,使得它们对应于公知的峰值信噪比(PSNR)质量度量。
如下定义PSNR质量度量:
PSNR(dB)=10log102552/(MSEperPixel),                    (1)
(见“Video Coding-An Introduction to Standard Codecs”by M.Ghanbari,IEE1999,Pg.19),其中MSEperPixel是每个像素的均方差。因此,
MSEperPixel=65025(PSNR/10)-10,                        (2)
totMSEperLine=(numPixelsPerLine)(MSEperPixel),        (3)
totMSEperLine=(numPixelsPerLine)(65025)(PSNR/10)-10,  (4)
其中,numPixelsPerLine和totMSEperLine分别是每行的像素数量和一行中全部像素的均方差。根据方程(4),我们可以计算与指定的PSNR质量相关的总均方差。现在,如果使用近似正交的小波变换将输入行分割成低通和高通子带,那么
totMSEperLine=acceptableLpMse+acceptableHpMse,       (5)
其中,acceptableLpMse和acceptableHpMse分别是低通和高通子带中的可接受均方差。经验结果显示,当acceptableHpMse比acceptableLpMse大100到1000倍时,能够获得好的质量。因此,我们组合方程(4)和(5)得到
(numPixelsPerLine)(65025)(PSNR/10)-10
acceptableLpMse+R(acceptableLpMse),                (6)
其中,100<R<1000。这样,指定的失真阈值如下直接与PSNR质量度量相关:
numPixelsPerLine)(65025)(PSNR/10)-10(R+1)-1=acceptableLpMse,  (7)
numPixelsPerLine)(65025)(PSNR/10)-10R(R+1)-1=acceptableHpMse.  (8)
最后,我们说明如何使用PSNR质量设置来进行不同的操作模式。如果预计信道条件良好并且预计视频内容易于压缩,那么我们可以得到PSNR=40dB的acceptableLpMse和acceptableHpMse,其中PSNR=40dB能产生极好的质量。可替换地,通过设置PSNR=无限大,我们可以获得acceptableLpMse=acceptableHpMse=0。在这种情况下,图25、26、27、28中的可替换的过程的操作与图7和10中的相同,因为总是选择具有最低失真的量化等级组合。但是,在实际操作中,信道条件通常恶化并且视频内容可能难以压缩。因此,要谨慎地使用略低的PSNR(比如35dB)来得到acceptableLpMse和acceptableHpMse。利用该设置,尽管量化设置将略高于可容易压缩的行但是视觉质量仍然很好,因为这些可容易压缩的行通常在低量化等级具有低均方差。因此,与PSNR=35dB相关的acceptableLpMse和acceptableHpMse的较大值将致使较高的量化将失真增大到与35dB相关的可接受阈值。当与用于图23中的改进的视频码率控制的硬件实现的方法结合时,该操作模式产生更高性能,原因如下。当遇到可容易压缩的行时,较高的量化等级导致较小的压缩后行大小。因此在步骤2306,向寄存器unused_bytes_accumulator分配更多的未使用比特。因此,难以压缩的后续行更有可能使用低量化等级并且具有良好视频质量,因为unused_bytes_accumulator更不可能耗尽。
图11示出了计算行的高通部分的编码后长度(RH mn)的流程图。Y量化等级是m={0,2,4,6},UV量化等级是n={0,2,4,6}。由于通过小波变换来对有效像素进行时钟同步,所以随着小波系数wy、wu、wv分别在HpY、HpU和HpV子带中变得可用,从小波系数wy、wu、wv并行地汇聚RH mn的16个值。
步骤1101到步骤1116类似于图8中的各个步骤801到816。主要的区别在于步骤1104、1109和1114不包括预测过程,因为如以上图3中所说明的,高通子带编码不使用预测。
图12示出了计算行的高通部分的方差(DH mn)的流程图。Y量化等级是m={0,2,4,6},UV量化等级是n={0,2,4,6}。
在该实例中,随着Daubechies-(7,9)第一级小波系数wy、wu、wv和第二级小波系数wwy、wwu、wwv分别在HpY、HpU和HpV子带中变得可用,从这些小波系数并行地汇聚16个DH mn值。对于Daubechies-(7,9),第二级系数相对于第一级系数缩放到了3/4倍。使用该缩放使得Daubechies-(7,9)小波域平方失真近似于像素域平方失真。对于LeGall-(5,3)变换,该缩放是不必要的。
图12中的详细过程类似于图9中的过程。步骤1201将全部16个高通失真寄存器初始化为0。步骤1202到1208在Daubechies-(7,9)第一级小波系数wy上进行操作,并且类似于步骤902到908,其中区别是在步骤1206中缩放到4倍。
对于Daubechies-(7,9)第二级小波系数wwy,步骤1209到1215类似于步骤1202到1208,除了步骤1213将第二级小波域失真缩放到3倍。因此相对于第一级系数,步骤1206和1213将第二级系数缩放到了3/4倍。
步骤1216到1229在LpU子带上进行操作,并且类似于步骤1202到步骤1215。类似地,步骤1230到1243在LpV子带上进行操作并且类似于步骤1216到1229。
因为对于LeGall-(5,3)变换来说缩放是不必要的,所以图12还可以用于使用以下修改在这种小波变换下进行失真估计。将步骤1206和1213改为“Dy=(Dy)2”。将步骤1220和1227改为“Du(Du)2”。将步骤1234和1241改为“Dv=(Dv)2”。
以下描述是用于一种降低了低通子带码率计算的复杂度的优化。低通码率计算比高通码率计算更复杂,因为对于前者的计算,在每个量化等级都重复预测过程。
为了理解该重复的影响,可以修改用于以上使用的预测过程的记号,使得an、bn、cn和xn分别表示用n比特量化a、b、c和x。应该注意,a0、b0、c0和x0表示an、bn、cn和xn的原始未量化值。
通过定义dn(p,q)=pn-qn,其中p,q∈{a,b,c,x}来开始该过程。
在量化等级(Quantization-Level,QL)n的预测过程期间,第一步是计算dn(a,c),dn(a,b)并且然后定义
minn=bn,如果|dn(a,c)|≤|dn(a,b)|,
=cn,否则,
其中,minn是QLn上与a距离最近的邻居。
最后将QLn残差定义为:
dxn=d(xn,minn)。
以前,通过评估全部QLn的dn(a,c)、dn(a,b)、minn和dxn来重新计算dxn的码长。这些评估包括an、bn、cn和xn之间的每个可以长达14比特的二个补码相加。
以下优化演示了通常仅需要评估d0(a,c)、d0(a,b)、min0和dx0。据此可以推导出n>0时的dn(a,c)、dn(a,b)、minn和dxn。该推导包括2比特数字的相加,并且因此降低了低通子带码率计算的复杂度。
图13示出了优化的低通子带码率计算的过程。该过程是图8中所示的过程的修改,并且依赖于以下说明的OptimizedLPrates过程。
图14中的流程图描述了在从0到N的所有量化等级之下,用于低通子带项x的残差码长的优化计算的OptimizedLPrates过程。该过程使用以下输入:
·x,来自当前行的低通子带项,
·an、bn,来自前一低通子带行的x的量化后的左上方和上方邻居,
·c,来自当前低通子带行的x的量化后的左侧邻居,
·prevQL,前一低通子带行中用于量化an和bn的量化等级,
·row、col,低通子带中的x的坐标,
·N,用于当前行的最大量化等级。
该过程的输出是向量codeLength,其包含从0到N的全部量化等级之下与x相对应的残差的码长。最初,步骤1401确定x是否是低通子带的第一行和第一列。如果是,那么在全部量化等级上,直接从量化后的值x获得残差而无需从任何邻居进行预测。
因此,步骤1403、1404将QLn上的码长计算为将x右移QL的Golomb码长。注意该Golomb码长是由用于确定最重要比特的位置的简单逻辑而获得的。步骤1402使得重复步骤1403、1404以便获得在从0到N的全部量化等级之下的x的码长。
如果步骤1401确定x不是在低通子带的第一行和第一列上,那么步骤1406检查x是否在低通子带的第一行上。如果是,那么在全部量化等级上,根据x的量化后的值及其量化后的左侧邻居cn来预测残差。
步骤1407调用图15中所述的加法过程,以将-c与x相加并且获得d0(x,c)以及该计算的进位(carry),所述进位用于从d0(x,c)推导出dn(x,c)。
接下来,步骤1408到1411的循环计算在从0到N的全部量化等级之下与x相对应的残差的码长。为了从d0(x,c)推导出dn(x,c),步骤1409将d0(x,c)右移QLn,并且步骤1410调用图16中的applyCorrection过程,该过程通过增加校正项来校正dn(x,c)。
图16中的applyCorrection过程接受以下输入:
·p、q,整数,
·QLn,量化等级,
·dn(p,q),在QLn上从p到q的估计的距离。假设该估计是通过将d0(p,q)简单地右移QLn计算的,其中通过将加法过程(图15)应用于p和-q来获得d0(p,q)。
·进位(carries),从前述的计算d0(p,q)的加法过程得到的进位向量。applyCorrection过程的输出是:
·dn(p,q),在QLn上从p到q的校正后的距离估计。可以通过从pn减去qn获得该校正后的距离估计。但是,该减法包括将两个14比特数相加并且因此比所建议的仅将2比特的校正项加到dn(p,q)的方法更复杂。
·codeLen,dn(p,q)的Golomb码长,
·校正(correction),加到输入dn(p,q)的校正项。
最初,步骤1601将校正初始化为0。注意量化过程有区别地处理特定负数以获得更短的熵编码。为了校正输入估计,该过程通过检测该量化过程是否将有区别地处理p(步骤1602)和-q(步骤1604)来说明,并且因此步骤1603和1605更新该校正项。
步骤1606确定输入估计dn(p,q)是否包含来自最不重要比特的进位,其中将在生成qn和pn时丢弃该最不重要比特。如果是,那么应该将该进位合并入校正项(步骤1607),因为由于这些量化后的值将不具有会产生进位的最不重要比特,所以该进位将不会出现在从pn减去qn的减法中。
最后,步骤1608将2比特的校正项与输入估计dn(p,q)相加,以得到校正后的距离估计。还计算校正后的估计的Golomb码长。
回到图14,步骤1412确定x0是否是在第一列上但不在第一行上。如果是,那么在全部量化等级上,根据x的量化后的值及其量化后的上方邻居bn来预测残差。在这种情况下,步骤1413首先左移bn以得到全精度b,b用于计算与x的距离。然后步骤1413到1418执行类似于步骤1407到1410的动作除了用b来代替c。
如果步骤1412确定x0既不在第一行也不在第一列上,那么在全部量化等级上根据x的量化后的值及其量化后的上方邻居bn或量化后的左侧邻居cn来预测残差。
在这种情况下,步骤1419首先左移an和bn,以得到全精度值,所述全精度值用于计算在QL0上与x的距离。接下来,步骤1420使用getUnquantData过程(见图17)来收集与根据未量化的项x、a、b、c计算的残差相关的数据。
步骤1421、1423的循环重复derivePostQuantResidual过程(步骤1422和图18),以从getUnquantData过程所返回的数据推导出在QLn上的残差的码长。
为了能够通过derivePostQuantResidual过程(以下说明)来有效地确定dxn的码长,图17中所示的getUnquantData过程接受未量化的子带项x以及x的各个左上方、上方和左侧邻居a、b、c,并输出以下数据:
·d0(a,b)和d0(a,c):b和c与a的距离;以及abCarries和acCarries:从这些计算得出的各自的进位向量,
·d0(x,b)和d0(x,c):b和c与x的距离;以及xbCarries和xcCarries:从这些计算得出的各自的进位向量,
·min0,从{b,c}选择的最接近a的邻居。如果b和c与a等距离,那么选择c作为等距离情况下的选择(tie-breaker),
·tie0表示b和c是否与a等距离。如果是则将其置位为1。否则将其复位为0,
·oppSides表示b和c在数轴上是否是在a的相对侧。如果是则将其置位为1。否则oppSides=0,
·constMinC表示c是否在全部量化等级上都是最接近a的邻居。如果是则将其置位为1。否则将其复位为0。
·diffDist0是d0(a,b)和d0(a,c)之间的差,而diffDistCarries是在计算diffDist0时产生的进位。
首先,步骤1701调用图15的加法过程,以计算未量化的与a的距离d0(a,b)、d0(a,c)以及相关的进位abCarries和acCarries。该步骤还将constMinC、oppSides和tie0初始化为0。
步骤1702检查d0(a,b)和d0(a,c)的符号。如果这些符号不同,那么b和c在数轴的相对侧。步骤1703设置oppSides以存储该信息。接下来,步骤1704调用加法过程,以计算d0(a,b)和d0(a,c)之间的差以及在计算diffDist0时产生的进位diffDistCarries。
步骤1705确定b、c是否在a的相对侧。如果是,那么步骤1706检查b和c与a是否等距离。如果是,那么步骤1707置位tie0并且将等距离情况下的选择c分配给min0
如果步骤1706确定b和c与a不是等距离,那么步骤1708检查diffDist0和d0(a,c)的符号。如果这些符号相同,那么c更接近a并且将min0设置为c(步骤1709)。否则b更接近a并且在步骤1710中将b分配给b。
回到步骤1705,如果b、c在a的同侧,那么步骤1715到1719使用类似于步骤1706到1710的逻辑来设置tie0和min0。在该逻辑中的实质差别是步骤1708和1717中的符号测试。该测试是不同的,因为符号的极性取决于b、c是在a的同侧还是相对侧。
在步骤1707、1709、1710、1716、1718或1719中的任意一个之后,恰当地设置变量tie0和min0,并且用步骤1711和1714来推断getUnquantData过程,其中步骤1711和1714调用图15的加法过程来计算d0(x,b)和d0(x,c)、b和c与x的距离以及从这些计算得出的各自的进位向量xbCarries和xcCarries。
应该注意,如果步骤1712确定b、c在a的同侧并且量化前的最接近a的邻居是在等距离情况下进行的选择(tie-breaking choice),那么无需计算d0(x,c)。这是保留顺序属性(order-preservation property)的结果,其中保留顺序属性指明右移量化是保留顺序映射。
因此,对于任意整数x、y和自然数n,
x≤y=>(x>>n)≤(y>>n)。
具体而言,这意味着,在指明的条件下,在全部量化等级上,a、b、c的相对次序保持不变或者退化,使得b、c变得与a等距离。在任意情况下,因为c是等距离情况下的选择,所以最接近的a的邻居是c并且因此在全部量化等级上保持c。因此,步骤1713设置constMinC来指示该情况。
图18示出了用于基于getUnquantData过程所提供的数据来计算与指定的QLn上的低通子带项x相对应的残差的derivePostQuantResidual过程。
使用以下输入:
·d0(a,b)和d0(a,c):b和c与a的距离;以及abCarries和acCarries:从这些计算得出的各自的进位向量,
·d0(x,b)和d0(x,c):b和c与x的距离;以及xbCarries和xcCarries:从这些计算得出的各自的进位向量,
·min0,从{b,c}选择的最接近a的邻居。如果b和c与a等距离,那么选择c作为等距离情况下的选择,
·tie0表示b和c是否与a等距离。如果是则将其置位为1。否则将其复位为0,
·oppSides表示b和c在数轴上是否是在a的相对侧。如果是则将其置位为1。否则oppSides=0,
·constMinC表示c是否在全部量化等级上都是最接近a的邻居。如果是则将其置位为1。否则将其复位为0。
·diffDist0是d0(a,b)和d0(a,c)之间的差,而diffDistCarries是在计算diffDist0时产生的进位。
·QLn,指定的量化等级。
这些输入用于生成以下输出:
·dxn,在指定QLn上与低通子带项x相对应的残差,
·codeLength,dxn的Golomb码长。
步骤1800首先检查constMinC以确定是否保证c在全部量化等级上都是最接近a的邻居。如果是,那么在QLn上将从bn预测残差。这在步骤1805中通过右移d0(x,b)并且调用图16中的applyCorrection过程来完成而无需直接相减。
如果步骤1800确定不保证c是最接近a的邻居,那么步骤1801将未量化的与a的距离右移并且校正该结果以获得量化后的与a的距离而无需对量化后的数据直接相减。根据这些量化后的与a的距离,该过程首先确定量化后的最接近a的邻居minn
如果步骤1802确定dn(a,b)和dn(a,c)的绝对值相等,那么bn和cn与an等距离。在这种情况下,步骤1803将等距离情况下的选择c分配给minn。否则,bn和cn与an不等距离
如果步骤1802确定在量化后与a距离不相等,并且步骤1807确定b和c在a的同侧并且在量化之前在确定最接近a的邻居时没有出现等距离情况(tie),那么不改变量化后的最接近a的邻居并且因此将min0分配给minn(步骤1808)。这是前述保留顺序属性的另一个结果。
然而,如果步骤1807中的测试失败,则存在两种可能性:1)量化前所计算的与a的距离相等并且现在不相等,或者2)量化前b和c在a的相对侧。在第一种情况下,该过程必须明确地确定最接近a的邻居,因为它不能假设这是来自未量化数据的等距离情况下的选择c。在第二种情况下,保留顺序足以保证量化后不改变最接近a的邻居。因此在该情况下也明确地确定最接近a的邻居。
在这两种情况下,都无需从dn(a,c)减去dn(a,b)就可以有效地确定最接近a的邻居。为了完成这一目的,步骤1809将diffDist0右移从未量化的像素所计算的与a的距离之间的差,并且获得dn(a,b)与dn(a,c)之间的差的估计。通过首次增加来自步骤1801的校正因子corrAc和corrAb,将该估计校正成确切的值diffDistn。然后如果从d0(a,c)-d0(a,b)丢弃的最不重要比特将会在全精度diffDist0计算中产生进位(步骤1810),则降低diffDistn(步骤1811)。
在步骤1810之后,diffDistn包含量化后的与a的距离之间的差。如果步骤1812确定该差为0,那么bn、cn与an等距离,并且步骤1813将等距离情况下的选择c分配给minn。否则因为bn、cn在an的相对侧,diffDistn和dn(a,b)的符号显示bn还是cn是最接近an的邻居(步骤1814)。因此步骤1815或1816将正确的值分配给minn
最后在步骤1803、1808、1813、1815或1816中的任意一个之后,结果是量化后的最接近an的邻居minn。该过程现在可以通过根据minn的预测而不使用直接相减来推导出与xn相对应的残差。
具体而言,如果步骤1804确定minn是c,那么步骤1805右移d0(x,b)并且调用applyCorrection过程(图16)来得到dxn和codeLength中的Golomb码长。如果minn是b,那么步骤1806使用d0(x,c)代替d0(x,b)执行相同的动作。
为了示出图14中的OptimizedLPrates过程的优点,以下实例将其与未优化的预测过程进行比较,其中需要对每个QLn,其中n属于{0,...,N-1},来重复该未优化的预测过程。
将输入比特宽度为m、n比特的加法器表示为(m+n)加法器((m+n)-adder),在QLn上,未优化的过程包括4个[(N-n)+(N-n)]加法器。因此对于n属于{0,...,N-1}的整个预测过程将包括以下每一个中的4个:(1+1)加法器、(2+2)加法器、......(N+N)加法器。
相反,在图14中,步骤1403、1404、1407、1413、1416和1417可以使用复用器来共享步骤1412和1420中所包括的逻辑。因此,其足以分析步骤1412和1420的硬件要求。
图17中的getUnquantData过程包括4个(N+N)加法器(步骤1701、1702、1704、1711和1714)。图18的derivePostQuantResidual过程在QLn上包括4个[(N-n)+(N-n)]加法器(步骤1801、1809、1805和1806)。
因此对于n属于{0,...,N-1}的全部QLn,优化后的过程包括5个(N+N)加法器和以下每一个中的4个:(1+1)加法器、(2+2)加法器、(3+2)加法器、......((N-1)+2)加法器。假设对这两个实现都使用串行加法器,则(N+N)加法器比(N+2)加法器多4N-8个门。对于N=14,优化后的实现包括1320个门,而未优化的实现包括2296个门。因此,该优化至少节省了42.51%的逻辑门。
以下描述了如图9和12中所述的用于改进行的低通和高通部分的失真估计的方法。注意这些失真实际上是小波域失真。
小波变换的整数实现是近似正交的,使得小波域失真近似等于实际的像素域失真。(见“Optimal Quantized Lifting Coefficients for the 9/7 Wavelet”-S.Barua,K.A.Kotteri,A.E.Bell and J.E.Carletta,Proceedings of the 2004 IEEEInternational Conference on Acoustics,Speech and Signal Processing。)但是,小波逆变换的整数实现所引入的舍入噪声降低了图9和12中所计算的小波域失真估计的准确性。
为了减轻该问题,首先要观察到舍入噪声主要影响小波系数的最不重要比特(LSB),因为它们是在整数小波逆变换中舍入的比特。因此,在解码过程期间,本发明的实施例通过在小波逆变换前将逆量化后的小波系数左移N(N=1,2或3)比特,来统一地缩放所述逆量化后的小波系数。这将N个LSB设置为0并且在整数小波逆变换中抑制舍入噪声,从而提高了小波域失真估计的准确性。在小波逆变换后,应该将重构的像素右移N比特以对统一的缩放进行逆缩放。
对于qHpY属于{3,4,5,6,7}的Daubechies-(7,9)和LeGall-(5,3)小波变换,通过测量具有和不具有缩放的标准移动视频序列的第一帧的每行上的Y分量失真估计百分比误差来确认改进的失真估计的准确性。接下来,计算全部行上的平均和最大百分比误差。表2显示了表格化的百分比误差降低。
qHpY 小波%     缩放后平均误差降低    %缩放后的最大误差降低
3    D79        5                     5
4    D79        2                     2
5    D79        0                     2
6    D79        0                     -1
7    D79        0                     0
3    L53        9                     10
4    L53        5                     7
5    L53        1                     0
6    L53        0                     1
7    L53        0                     1
表2
从该表可以看出,该缩放降低了失真估计误差,尤其是在较低的量化等级上,其中在较低的量化等级上舍入噪声往往比量化噪声更大。
使用以下方法来改进图3中所示的熵编码器319-334的性能。注意熵编码器是使用简单但有效的Golomb码来实现的,其中Golomb码假设数据是指数分布的。如果已知数据的真实分布,则算术编码器实现比Golomb编码更高的压缩比。(见“Elements of Information Theory”-T.Cover and J.Thomas,Wiley 1991,Pg.104)
在现有技术中,算术编码器和解码器采用数据分布的估计。通常将这些估计初始化为均匀分布并且逐渐地朝实际的总体分布会聚。因为该会聚很慢,所以所实现的平均压缩比不会比从Golomb编码器得到的压缩比好太多。事实上,为了获得最高性能,算术编码器一般采用计算复杂的上下文自适应方法(例如,见“Study of final committee draft of joint video specificationITU-T Rec.H.264|ISO/IEC 14496-10 AVC”-T.Wiegand,Dec.2002,AwajiMPEG Meeting)。然而,以下所述的方法显示了如何使用算术编码来改进基于Golomb码的熵编码器的性能。
在第一行上,如上所述,编码器使用Golomb编码来对该行进行编码。因此,解码器使用Golomb解码来对该行进行解码。在第n行上,其中n>1,编码器将第(n-1)行的直方图计算为第n行上的数据的分布的估计。使用该估计来对第n行进行算术编码,该算术编码使用Ba个比特。
同时,编码器还生成第n行的Golomb编码,该编码使用Bg个比特。如果Ba<Bg,那么解码器置位控制位,并发送第n行的算术编码。否则,复位控制位,并且发送该行的Golomb编码。
因此,对于第n行来说,解码器检查编码器所发送的控制位。如果置位了控制位,则解码器使用第(n-1)行的直方图作为第n行的算术解码的估计分布。如果复位了控制位,那么解码器应用Golomb解码来恢复第n行。
该方案所实现的压缩比通常大于或等于Golomb编码器的压缩比。实践中,第(n-1)行的直方图通常是对于第1行的分布的良好估计,因为视频数据沿垂直轴是高度相关的。该相关性在水平边缘上减少,但是在这些行上,编码器将自动切换到Golomb编码。
以下的优化减少了图5中所述的低优先级分组中的比特数量。注意这些分组是通过对图3中的量化后的高通信道HpY、HpU、HpV进行熵编码所获得的。如果潜在数据是指数分布的,使得大部分小波系数聚集在零周围同时小部分小波系数具有较大值,那么Golomb编码器执行良好。这些大系数将具有长的Golomb码并且因此降低了压缩比。
高通信道HpY、HpU、HpV中的大的小波系数对应于各个Y、U、V信道中在对应位置上的垂直边缘。这些垂直边缘还导致各个低通信道LpY、LpU、LpV中的不连续性。因此,通过用垂直边缘检测器来处理低通信道,可以对高通信道中的垂直边缘进行预测(见“Digital Image Processing usingMatlab”by R.Gonzalez,R.Woods and S.Eddins,Prentice Hall 2004)。从高通信道中减去所预测的垂直边缘将产生残差高通信道,在残差高通信道中垂直边缘被抑制。因此,残差高通信道具有更少的大值小波系数,并且所产生的低优先级分组耗费较少的比特数。
为了对这些低优先级分组进行解码,解码器首先对LpY、LpU和LpV信道以及残差高通信道进行解码。接下来,用垂直边缘检测器来处理LpY、LpU和LpV信道,并且将所预测的垂直边缘与残差高通信道相加以获得高通信道HpY、HpU和HpV。该解码过程然后如前所述继续。
以下描述了用于图3中的LeGall-(5,3)小波变换的整数实现的新的舍入方法。如JPEG-2000图像压缩标准中所定义的,LeGall-(5,3)小波变换的更新步骤使用floor(x+0.5)来舍入x,其中x是0.25的整数倍,并且floor(y)返回小于实数y的最大整数。(见“An Overview of the JPEG-2000 Still ImageCompression Standard”by M.Rabbani and R.Joshi,Signal Processing:ImageCommunication 17(2002)3-48中的公式16.)。通过floor(x+0.5)将[-0.5,0.5)之间的x值映射为0。在硬件实现中,通过将x和0.5与4相乘来将它们转化成整数,得到x’=4x以及2=4*0.5。利用该表示,图19示出了如何实现JPEG-2000图像压缩标准中所定义的floor(x’+2)。
现在考虑fix(x+0.5)所描述的舍入方法,其中fix(y)返回最接近y并且在y和0之间的整数。可以看出,利用fix(x+0.5)将(-1.5,0.5)之间的x值映射为0。在硬件实现中,通过将x和0.5与4相乘来将它们转化成整数,得到x’=4x以及2=4*0.5。利用该表示,图20示出了如何实现fix(x’+2)。在小波逆变换中,通过一般的逆提升过程,很容易对图20进行逆操作。
图20还额外检查和的符号以及额外地加1。然而,如前所述,fix(x+0.5)将(-1.5,0.5)映射到0,而floor(x+0.5)将[-0.5,0.5)映射到零。因此,fix(x+0.5)将值{-1.25,-1.0,-0.75,-0.5,-0.25,0,0.25}都映射到零,而floor(x+0.5)将值{-0.5,-0.25,0,0.25}都映射到零。注意图4中的熵编码器将最短长度为1的码分配给零值。因此,在更新步骤之后使用JPEG-2000 floor(x+0.5)来进行舍入的小波变换将4个值映射到长度为1的码。与之不同的是,所建议的fix(x+0.5)舍入将7个值映射到长度为1的码。因为fix(x+0.5)舍入将更多的值映射到长度为1的最短的熵编码,所以使用利用fix(x+0.5)舍入的小波变换的无损编码比使用JPEG-2000 floor(x+0.5)舍入的小波变换提供更大的压缩比。
表3证实了该预期。第一列显示了用fix(x+0.5)舍入来无损压缩的38个不同图像的压缩比,第二列显示了使用floor(x+0.5)舍入时获得的压缩比。对于全部38个图像,fix(x+0.5)舍入比floor(x+0.5)舍入提供更大的压缩比。如以上所指出的,与floor(x+0.5)舍入相比,fix(x+0.5)的额外硬件成本非常小。应该强调的是,fix(x+0.5)舍入的好处不是由于死区量化(deadzonequantization)效果(见“Video Coding-An Introduction to Standard Codecs”byM.Ghanbari,IEE 1999,Pg.26)。具体而言,在有损编码中使用死区来增加量化器的零频带带宽。然而,fix(x+0.5)舍入发生在小波变换中并且即使对于不使用量化器的无损编码也具有好处。
  fix(x+0.5)   floor(x+0.5)
  1.5424   1.5406
  1.6538   1.6515
  1.8659   1.8628
  2.0042   1.9997
  2.0772   2.0722
  1.431   1.4282
  1.9745   1.9683
  1.9566   1.9529
  1.3535   1.3527
  2.293   2.2872
  1.2679   1.2658
  2.211   2.2068
  1.7756   1.7728
  1.7979   1.7954
  1.5603   1.5573
  5.7696   5.7608
  5.0637   5.0536
  4.5117   4.501
  2.3584   2.3559
  2.0432   2.0413
  1.8649   1.8627
  1.8429   1.8413
  2.7209   2.7166
  2.5593   2.5568
  2.4541   2.4509
  2.4208   2.4187
  3.6332   3.6242
  3.367   3.3621
  3.2681   3.2629
  3.178   3.175
  2.8535   2.8471
  2.4386   2.4333
  2.2138   2.2087
  2.2368   2.2322
  3.7582   3.7466
  3.4464   3.4363
  3.3439   3.3355
表3
最后的优化涉及用于提高视频码率控制性能的方法。以上图6的描述指出使用信道容量估计来获得maxLsize 601、maxHsize 602、ByPass 603、SelectYuv 604和SelectTfm 605,以将它们索引到提供这些控制信号的值的表中。在实践中,信道容量估计有时候是不可靠的,并且可以通过不使用直接用于视频码率控制的信道容量估计来改进健壮性。
索引  低通CR  高通CR   SelectYuv  SelectTfm  ByPass   最坏情况CR
1     1       1        4:4:4      L53        1        1
2     1       2        4:4:4      L53        0        1.6
3     1       3        4:4:4      L53        0        2
4     1       2        4:2:2      L53        0        2.4
5     1       3        4:2:2      L53        0        3
6     1       2        4:1:1      L53        0        3.2
7     1       3        4:1:1      L53        0        4
8     1       4        4:1:1      L53        0        4.57142857
9     1       5        4:1:1      L53        0        5
10    1.5     6        4:1:1      D79        0        6.85714286
11    1.5     7        4:1:1      D79        0        7.30434783
12    1.5     8        4:1:1      D79        0        7.68
表4
为了说明该方法,表4显示了用于视频码率控制信号的12个设置。低通CR和高通CR是指用于低通和高通子带的目标压缩比。这些量涉及通过以下公式得出的maxLsize和maxHsize:
maxLsize=uncompressed_lowpass_subband_size/LowpassCR,
maxHsize=uncompressed_highpass_subband_size/HighpassCR,
其中,可以使用输入分辨率和低通和高通子带大小之间的1∶3比来直接计算未压缩的子带大小。
最坏情况CR列显示了通过考虑低通和高通压缩比以及YUV格式,使用给定的设置所得到的最小压缩比。在图21中在曲线2160上用点2161-2172来绘制最坏情况CR,其中具有任意的峰值信噪比(PSNR)值。然而,当使用该12个设置来处理实际图像时,压缩比和PSNR通常高于最坏情况下的曲线。例如,在标准移动图像上,点2141-2152所表示的12个设置产生图21中的曲线2140。类似地,将该12个设置应用到gfx(点2121-2132)和wq图像(点2101-2112)分别产生图21中的曲线2120和2100。与曲线2100对应的图像比与曲线2140相关的图像更易于压缩,因此,曲线2100上的点的PSNR和CR高于曲线2140上对应的点。
以下实例示出了以上视频码率控制方法,并且假设要发送的是SXGA视频(1024×76860Hz)。该视频格式要求大约1132Mbps的原始比特率。当传输开始时,来自MAC的吞吐量估计是515Mbps。因此,初始CR应该大于1132/525=2.16。
从最坏情况CR设置#4开始需要获得大于初始CR的最小的最坏情况CR。然而,如果视频内容类似于gfx图像,那么设置#4将使得系统在图21的gfx曲线2120上的点2124进行操作。因此,平均CR将大于3.5,这比初始CR=2.16大得多。
通过监测压缩后的视频分组的大小,本发明的一个实施例可以检测该条件并且知道由于内容相对易于压缩所以该压缩高于必要要求。检测到该条件时,将设置索引(setting index)减为3,使得其在CR>3的gfx曲线2120上的点2123进行操作。本发明的一个实施例将重复检测过压缩条件并且继续减小设置索引直到到达CR>2.5的gfx曲线2120上的点2121为止。在gfx曲线2120上从点2124移动到点2121将PSNR从大约38dB增加到大约57dB,同时确保CR大于初始CR。
前面的描述包含使用对实际的压缩后分组的大小的反馈来提高PSNR。在本发明的另一个实施例中可以使用其它反馈来改变信道条件,以防止发射缓冲器溢出,其中该缓冲器在无线传输之前保持分组。
如果请求接收器对全部分组进行确认,那么可以对未确认的分组进行重传。在重传期间,可以增加设置索引以提高CR并且防止由于发射缓冲器在重传期间不会排出而导致的缓冲器溢出。WiMedia MAC规范允许具有协商的时隙,在该时隙期间禁止视频传输(见“WiMedia MAC 0.99 RC1”byMultiband OFDM Alliance Special Interest Group,2005)。因为这些时隙是预先已知的,所以可以在这种时隙之前、期间和之后立即增加设置索引。并且,该动作也能防止缓冲器溢出,因为在禁止时隙期间发射缓冲器不会排出。最后,可以增加设置索引以防止当缓冲器填充度超过预定义的阈值(例如缓冲器容量的65%)时缓冲器溢出。当没有关于重传、禁止时隙和缓冲器填充度的反馈时,该码率控制方法回到前述操作,在该操作中检测过压缩并且减小设置索引以增加PSNR同时在大于初始CR进行操作。
图22根据本发明的实施例示出了用于改进的视频码率控制的固件实现法的流程图。该方法使用对压缩后的分组大小的反馈,以通过检测过压缩来提高码率控制性能。
可以通过传输XGA视频(1024×76860Hz)的实例来说明图22中所述的过程。该视频格式要求1132Mbps的原始比特率。当传输开始时,系统从MAC获得525Mbps的吞吐量估计。因此,初始CR应该大于1132/525=2.16(步骤2201)。对于最坏情况CR,选择设置#4来获得最小的最坏情况CR,其大于初始CR(步骤2202)。利用以设置#4操作的码率控制来生成下一个视频分组(步骤2203)。
如果视频内容类似于gfx图像,那么设置#4将使得系统在图21的gfx曲线2120上的点2124进行操作。因此,平均CR将大于3.5,这比初始CR=2.16大得多。通过监测压缩后的视频分组的大小(步骤2204),可以检测到该条件(步骤2205)以证实由于该内容相对易于压缩所以压缩高于必要要求。检测到该条件时,将设置索引减为3,使得其在CR>3的gfx曲线2120上的点2123进行操作(步骤2206)。
该过程将重复检测过压缩条件(步骤2207)并且继续减小设置索引直到其到达图21中CR>2.5的gfx曲线2120上的点2121为止。在gfx曲线2120上从点2124移动到2121将PSNR从大约38dB增加到大约57dB,同时确保CR大于初始CR。
图23根据本发明的实施例示出了用于改进的视频码率控制的可替换的硬件实现法的流程图。该方法使用对压缩后的行大小的反馈来检测过压缩。与如上所述的固件实现相比,该硬件实现确保更快速的响应并且因此具有更好的性能。
通过清除寄存器unused_bytes_accumulator来开始该过程(步骤2301)。再次参考XGA实例,为了在525Mbps信道上维持传输,目标CR应该是2.16(步骤2302)。因此,理想地,每一行应该最多占用1024*3/2.16=1423字节。
当传输开始时,系统选择设置#4,设置#4保证最坏情况CR=2.4(步骤2303)。该设置以4:2:2数据、低通CR=1、高通CR=2来进行视频码率控制,这意味着:
maxLsize=1024*3*0.25/1.5=512字节
maxHsize=1024*3*0.75*0.5/1.5=768字节
使用指定的maxLsize和maxHsize码率控制参数对第一行进行编码(步骤2304),在该步骤之后Lsize和Hsize表示压缩后的行的低通和高通子带的实际大小(步骤2305)。在当前实例中,假设Lsize=300、Hsize=400字节:
(maxLsize+maxHsize)-(Lsize+Hsize)=1280-700=580字节
这表示,压缩后的行比最大可允许大小短580字节。换句话说,该行可以比实际再多使用580字节,而不会违反与设置#4相关的最大1280字节。因此,在步骤2306中,系统将580个未使用的字节分配给寄存器unused_bytes_accumulator,使得它们可以被后续行回收利用。步骤2307使用图24中定义的剪辑功能,将unused_bytes_accumulator剪辑成32K字节。
接下来,系统设置ΔL=256字节(步骤2308)、ΔH=368字节(步骤2309)。因此,当在步骤2304中对下一行进行编码时,视频码率控制将允许其使用:
对于低通子带,maxLsize+ΔL=512+256=768字节,并且
对于高通子带,maxHsize+ΔH=768+368=1136字节。
因为通过回收利用前面行的部分未使用字节增加了用于该行的有效的最大行大小,所以视频码率控制可以对该行选择较不严格的量化设置。这产生更好的视频质量。
不会随着时间而违反525Mbps的吞吐量限制,因为回收利用来自大于2.4的CR的行的未使用字节,使得瞬时带宽要求低于525Mbps。将这些未使用字节分配给将利用更低的CR来压缩的后续行,使得瞬时带宽要求大于525Mbps。然而,能够保证平均带宽要求低于525Mbps,因为系统回收利用未使用字节,使得行小于可允许的最大大小maxLsize+maxHsize=1280字节。(注意1280字节小于保证525Mbps吞吐量的1423字节限制)
在实践中,在某些行上瞬间超过525Mbps的带宽限制并不是非常严重的问题,因为在传输之前高优先级和低优先级分组都放在发射缓冲器中。在525Mbps的恒定码率下将会排出足够大的缓冲器而不会溢出,只要分组到达的平均码率不超过525Mbps。
前述说明显示,如果有足够大的发射缓冲器,那么瞬间大带宽要求将不会导致缓冲器溢出。为了降低与大缓冲器相关的成本,本发明的一个实施例使用以下技术,用成本低廉大小适中的缓冲器防止缓冲器溢出。
1)设置#4在与吞吐量1132/2.4=472Mbps相对应的CR=2.4上进行操作。因此,回收利用的字节将使得平均带宽要求达到472Mbps,但是瞬时带宽要求可以超过472Mbps。然而,瞬时带宽要求不可能在一个持续时间段上超过525Mbps而导致缓冲器溢出。
2)步骤2307使用图24中所定义的剪辑功能将unused_bytes_accumulator剪辑成32K字节。通过使该寄存器充满32K字节,本发明的一个实施例对可以回收利用未使用字节的连续行的数量设置了上限。因此,瞬时带宽要求超过525Mbps的连续行的数量也被设置了上限。这降低了缓冲器溢出的可能性。
3)步骤2308和2309分别将ΔL和ΔH剪辑成256字节和768字节。这将最大压缩后行大小的上限设置为maxLsize+256+maxHsize+768=2304字节,其对应于瞬时带宽要求2304*8*768*60=849Mbps。因为当瞬时带宽要求超过525Mbps时其上限被限制为849Mbps,所以较不可能导致缓冲器溢出。
以上所述的固件和硬件方法涉及基于关于压缩后的分组或行大小的反馈所进行的视频质量改进。然而,可以用其它反馈来对信道条件改变做出反应,以防止在无线传输之前保持分组的发射缓冲器溢出。
如果请求接收器对全部分组进行确认,那么可以重传未确认的分组。在重传期间,可以增加设置索引以增加CR并且防止由于发射缓冲器在重传期间不排出而导致缓冲器溢出。
WiMedia MAC规范(见“WiMedia MAC 0.99 RC1”by Multiband OFDMAlliance Special Interest Group,2005)允许具有协商的时隙,在所述时隙期间禁止视频传输。因为这些时隙是预先已知的,所以可以在这种时隙之前、期间和之后立即减少设置索引。并且,这个动作将防止由于发射缓冲器在禁止时隙期间不排出而导致缓冲器溢出。
最后,可以增加设置索引以防止当缓冲器填充度超过预定义的阈值(例如缓冲器容量的65%)时缓冲器溢出。当没有关于重传、禁止时隙和缓冲器填充度的反馈时,该码率控制方法回到前述操作,在该操作中检测过压缩并且减小设置索引以增加PSNR同时在大于初始CR进行操作。
虽然详细描述了本公开的实施例,但是本领域技术人员应该理解,可以在不超出本发明的精神和范围的情况下对这些实施例进行各种修改、替换和改变。

Claims (28)

1.一种用于视频码率控制的方法,包括步骤:
接收视频帧的第一有效行;
确定用于与所述第一有效行相关的有效视频数据的多个量化参数;
向编码系统提供所述多个量化参数,其中,所述多个量化参数用于对所述第一有效行的至少一部分进行编码,以使得编码后的第一有效行的视频码率不超过最大视频码率;以及
接收所述视频帧的第二有效行,
其中,所述确定用于与所述第一有效行相关的有效视频数据的多个量化参数的步骤至少部分地在所述视频帧的所述第二有效行的水平消隐部分期间并在确定用于与所述第二有效行相关的有效视频数据的另外多个量化参数之前执行。
2.如权利要求1所述的方法,其中,所述接收第一有效行的步骤包括:接收所述第一有效行的低通部分以及接收所述第一有效行的高通部分。
3.如权利要求2所述的方法,其中,所述确定用于与所述第一有效行相关的有效视频数据的多个量化参数的步骤包括:确定用于所述第一有效行的所述低通部分的至少一个低通量化参数,以及确定用于所述第一有效行的所述高通部分的至少一个高通量化参数。
4.如权利要求3所述的方法,还包括:接收用于所述第一有效行的所述高通部分的高通最大编码后行大小,以及接收用于所述第一有效行的所述低通部分的低通最大编码后行大小,并且其中
确定用于所述第一有效行的所述低通部分的所述低通量化参数的步骤包括:比较所述第一有效行的所述低通部分的低通编码后长度是否小于所述低通最大编码后行大小,并且其中
确定用于所述第一有效行的所述高通部分的所述高通量化参数的步骤包括:比较所述第一有效行的所述高通部分的高通编码后长度是否小于所述高通最大编码后行大小。
5.如权利要求1所述的方法,其中确定所述多个最佳量化参数的步骤包括:
接收所述第一有效行的比特率要求;
接收初始吞吐量估计;
确定初始压缩比;
确定大于所述初始压缩比的第二压缩比;以及
检测过压缩。
6.如权利要求5所述的方法,还包括:
接收压缩后的视频分组大小;
其中所述检测过压缩的步骤包括:监测所接收的压缩后的视频分组大小。
7.如权利要求5所述的方法,还包括:
接收压缩后的行大小;
其中所述检测过压缩的步骤包括:监测所述压缩后的行大小。
8.如权利要求5所述的方法,其中,检测过压缩的步骤包括:
确定实际编码后低通行大小;
确定实际编码后高通行大小;
将所述实际编码后低通行大小与之前的编码后低通行大小进行比较;以及
将所述实际编码后高通行大小与之前的编码后高通行大小进行比较。
9.如权利要求8所述的方法,其中,所述之前的编码后低通行大小包括最大编码后低通行大小,并且其中所述之前的编码后高通行大小包括最大编码后高通行大小。
10.如权利要求2所述的方法,还包括:
估计与所述第一有效行的所述低通部分相关的低通像素域失真;以及
估计与所述第一有效行的所述高通部分相关的高通像素域失真。
11.如权利要求10所述的方法,还包括:
提供高通变换系数;以及
提供低通变换系数,
其中,估计所述低通像素域失真的步骤包括:缩放所述低通变换系数,并且在执行低通逆变换后进行所述缩放的逆缩放;以及
其中,估计所述高通像素域失真的步骤包括:缩放所述高通变换系数,并且在执行高通逆变换后进行所述缩放的逆缩放。
12.如权利要求2所述的方法,还包括:通过预测用于至少一个量化等级的数据,来确定所述第一有效行的所述低通部分的低通编码后长度。
13.如权利要求12所述的方法,其中,所述预测用于所述至少一个量化等级的数据的步骤包括:基于所述第一有效行的所述低通部分的邻居来进行预测。
14.一种基于行的视频压缩方法,包括:
基于视频帧的行来选择视频格式;
基于所述视频帧的所述行来选择小波变换;
基于所选择的小波变换来提供所述视频帧的所述行的低通部分和高通部分;
接收用于所述视频帧的所述行的所述低通部分和所述高通部分的量化参数,其中,所述量化参数是针对所述视频帧的每一行确定的;
将所述量化参数应用到所述视频帧的所述行的所述低通部分和所述高通部分。
15.如权利要求14所述的方法,还包括:
调节所述低通部分以符合指数分布;以及
对所生成的所述低通部分和所述高通部分进行编码。
16.如权利要求14所述的方法,其中,所述视频格式包括RGB格式和YUV格式中的一种。
17.如权利要求16所述的方法,其中,所述YUV格式包括4:4:4格式、4:2:2格式和4:1:1格式中的一种。
18.如权利要求14所述的方法,其中,所述选择小波变换的步骤包括:选择Daubechies-(7,9)小波变换和LeGall-(5,3)小波变换中的一种。
19.如权利要求14所述的方法,其中,所述选择小波变换的步骤包括:所述小波变换使用预定的图像压缩标准。
20.如权利要求19所述的方法,其中,所述选择小波变换的步骤包括:使用舍入方法来选择所述小波变换,以提供比使用所述预定的图像压缩标准的所述小波变换更大的压缩比。
21.如权利要求15所述的方法,其中,所述编码包括:使用基于所述视频帧的所述行在算术编码和Golomb编码之间选择性地进行切换的编码器。
22.如权利要求21所述的方法,其中,编码包括:使用不利用算术编码所实现的Golomb编码器。
23.如权利要求14所述的方法,还包括:
预测所述高通部分中的垂直边缘;以及
通过抑制所述高通部分中的所述垂直边缘,来获得残差高通部分;
其中,编码包括对所述残差高通部分进行编码。
24.如权利要求23所述的方法,其中,预测所述高通部分中的所述垂直边缘的步骤包括:用垂直边缘检测器处理所述低通部分,并且
其中,抑制所述高通部分中的所述垂直边缘包括:从所述高通部分中减去所预测的垂直边缘。
25.如权利要求14所述的方法,还包括:
生成至少一个高通小波系数;以及
生成至少一个低通小波残差。
26.如权利要求25所述的方法,还包括:
对至少一个高通小波系数进行编码;以及
对至少一个低通小波残差进行编码。
27.如权利要求26所述的方法,其中对所述至少一个高通小波系数进行编码包括Golomb编码。
28.如权利要求26所述的方法,其中对所述至少一个低通小波残差进行编码包括Golomb编码。
CN2007800450590A 2006-12-07 2007-12-07 基于行的视频码率控制和压缩 Expired - Fee Related CN101755464B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US86907106P 2006-12-07 2006-12-07
US60/869,071 2006-12-07
PCT/US2007/086811 WO2008070843A2 (en) 2006-12-07 2007-12-07 Line-based video rate control and compression

Publications (2)

Publication Number Publication Date
CN101755464A CN101755464A (zh) 2010-06-23
CN101755464B true CN101755464B (zh) 2012-07-11

Family

ID=39493099

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800450590A Expired - Fee Related CN101755464B (zh) 2006-12-07 2007-12-07 基于行的视频码率控制和压缩

Country Status (6)

Country Link
US (2) US8208554B2 (zh)
EP (1) EP2103147A4 (zh)
JP (2) JP5221557B2 (zh)
KR (1) KR101065520B1 (zh)
CN (1) CN101755464B (zh)
WO (1) WO2008070843A2 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8355434B2 (en) * 2005-01-10 2013-01-15 Qualcomm Incorporated Digital video line-by-line dynamic rate adaptation
CN101142821B (zh) * 2005-02-28 2011-06-15 Nxp股份有限公司 新压缩格式和用其在帧存储器中暂存图像数据的设备
US8208554B2 (en) * 2006-12-07 2012-06-26 Qualcomm Incorporated Line-based video compression
US7825835B2 (en) * 2008-12-15 2010-11-02 Nvidia Corporation Method and system for encoded video compression
US8798140B2 (en) * 2009-01-27 2014-08-05 Nvidia Corporation Encoding video frames in a video encoder
US8259816B2 (en) * 2009-03-12 2012-09-04 MIST Innovations, Inc. System and method for streaming video to a mobile device
US8767820B2 (en) * 2009-11-11 2014-07-01 Dell Products, Lp Adaptive display compression for wireless transmission of rendered pixel data
JP5665508B2 (ja) * 2010-11-30 2015-02-04 キヤノン株式会社 画像処理装置及び方法、並びにプログラム及び記憶媒体
JP5101728B1 (ja) * 2011-05-12 2012-12-19 シャープ株式会社 出力システムおよび表示システム
KR101718953B1 (ko) 2011-10-17 2017-03-22 주식회사 케이티 영상 부호화/복호화 방법 및 그 장치
KR20150054554A (ko) * 2013-11-12 2015-05-20 삼성전자주식회사 영상 처리장치 및 방법
EP3185554A1 (en) * 2015-12-21 2017-06-28 Alcatel Lucent Devices for video encoding and reconstruction with adaptive quantization
CN114710677B (zh) * 2022-01-12 2023-07-18 华芯算科学技术(苏州)有限公司 图像压缩方法、装置、存储介质及终端

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1251725A (zh) * 1996-10-11 2000-04-26 夸尔柯姆股份有限公司 用于数码视频压缩的自适应速率控制
US6973127B1 (en) * 1999-12-23 2005-12-06 Xvd Corporation Apparatus and method for memory saving wavelet based video coding

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5193003A (en) * 1989-08-15 1993-03-09 Sony Corporation Apparatus for decoding digital video data with small memory requirement
JP3251002B2 (ja) 1989-08-15 2002-01-28 ソニー株式会社 画像データの受信装置及び方法
US5682152A (en) 1996-03-19 1997-10-28 Johnson-Grace Company Data compression using adaptive bit allocation and hybrid lossless entropy encoding
US6157746A (en) * 1997-02-12 2000-12-05 Sarnoff Corporation Apparatus and method for encoding wavelet trees generated by a wavelet-based coding method
JPH10336682A (ja) * 1997-04-02 1998-12-18 Canon Inc 符号化装置及び方法及び方法を記憶した記憶媒体
EP0899960A3 (en) * 1997-08-29 1999-06-09 Canon Kabushiki Kaisha Digital signal coding and decoding
US6256350B1 (en) * 1998-03-13 2001-07-03 Conexant Systems, Inc. Method and apparatus for low cost line-based video compression of digital video stream data
US6215907B1 (en) * 1998-06-26 2001-04-10 Fisher-Rosemont Systems, Inc. Recursive on-line wavelet data compression technique for use in data storage and communications
KR100327368B1 (ko) * 1998-07-10 2002-03-06 구자홍 영상 부호화 및 복호화 방법
JP2000115782A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
KR100295228B1 (ko) 1998-10-13 2001-07-12 윤종용 통합테스트시스템과그를이용한통합테스트공정수행방법
TW444495B (en) * 1998-10-15 2001-07-01 Winbond Electronics Corp Digital video process method and multi-purpose data process method
EP1188244B1 (en) 1999-03-26 2004-11-10 Microsoft Corporation Lossless adaptive encoding of finite alphabet data
WO2002023475A2 (en) 2000-09-12 2002-03-21 Koninklijke Philips Electronics N.V. Video coding method
JP4372327B2 (ja) * 2000-09-18 2009-11-25 株式会社メガチップス 画像符号化装置および画像符号化方法並びに復号化装置および復号化方法
US6891974B1 (en) * 2001-01-08 2005-05-10 Microsoft Corporation System and method providing improved data compression via wavelet coefficient encoding
US7062445B2 (en) * 2001-01-26 2006-06-13 Microsoft Corporation Quantization loop with heuristic approach
JP4859368B2 (ja) 2002-09-17 2012-01-25 ウラディミール・ツェペルコヴィッツ 高圧縮比を提供する要求資源最小の高速コーデック
US7912291B2 (en) * 2003-11-10 2011-03-22 Ricoh Co., Ltd Features for retrieval and similarity matching of documents from the JPEG 2000-compressed domain
KR100664932B1 (ko) 2004-10-21 2007-01-04 삼성전자주식회사 비디오 코딩 방법 및 장치
US7477789B2 (en) * 2004-11-24 2009-01-13 Pixart Imaging Inc. Video image capturing and displaying method and related system
US8355434B2 (en) * 2005-01-10 2013-01-15 Qualcomm Incorporated Digital video line-by-line dynamic rate adaptation
JP4822396B2 (ja) * 2005-03-29 2011-11-24 株式会社メガチップス 画像強調装置
US8208554B2 (en) 2006-12-07 2012-06-26 Qualcomm Incorporated Line-based video compression

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1251725A (zh) * 1996-10-11 2000-04-26 夸尔柯姆股份有限公司 用于数码视频压缩的自适应速率控制
US6973127B1 (en) * 1999-12-23 2005-12-06 Xvd Corporation Apparatus and method for memory saving wavelet based video coding

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CHRYSAFIS et al.Line-Based,Reduced Memory,Wavelet Image Compression.《IEEE TRANSACTIONS ON IMAGE PROCESSING》.2000,第9卷(第3期),378-389. *
ORDENTLICH,ERIC et al.Memory Efficient Scalable Line-based Image Coding.《Hewlett-Packard Laboratories》.1999, *

Also Published As

Publication number Publication date
JP2010512692A (ja) 2010-04-22
US20080137738A1 (en) 2008-06-12
KR101065520B1 (ko) 2011-09-19
JP5425865B2 (ja) 2014-02-26
WO2008070843A2 (en) 2008-06-12
EP2103147A4 (en) 2011-01-19
US8208554B2 (en) 2012-06-26
JP2012085313A (ja) 2012-04-26
KR20090096516A (ko) 2009-09-10
JP5221557B2 (ja) 2013-06-26
US8165203B2 (en) 2012-04-24
EP2103147A2 (en) 2009-09-23
WO2008070843A9 (en) 2008-08-28
WO2008070843A3 (en) 2008-10-09
CN101755464A (zh) 2010-06-23
US20080137737A1 (en) 2008-06-12

Similar Documents

Publication Publication Date Title
CN101755464B (zh) 基于行的视频码率控制和压缩
RU2446615C2 (ru) Адаптивное сканирование коэффициентов для кодирования видео
CN111819852B (zh) 用于变换域中残差符号预测的方法及装置
RU2533196C2 (ru) Кодирование видео при помощи больших макроблоков
JP5590133B2 (ja) 動画像符号化装置、動画像符号化方法、動画像符号化用コンピュータプログラム、動画像復号装置及び動画像復号方法ならびに動画像復号用コンピュータプログラム
EP1512115B1 (en) Spatial prediction based intra coding
CN101098473B (zh) 一种图像编码方法及装置
EP3284253B1 (en) Rate-constrained fallback mode for display stream compression
JP5545783B2 (ja) 画像シーケンスを表す符号化されたデータのストリームを復号する方法および画像シーケンスを符号化する方法
US20060188165A1 (en) Spatial prediction based intra-coding
CN103782598A (zh) 用于无损编码的快速编码方法
EP2036358A1 (en) Image encoding/decoding method and apparatus
US11563965B2 (en) Method and apparatus for color transform in VVC
CN101946515A (zh) Cabac译码器的二回合量化
CN112673633B (zh) 合并模式的编码器、解码器及对应方法
US20180352259A1 (en) Video Compression Techniques for High Dynamic Range Data
US20120008686A1 (en) Motion compensation using vector quantized interpolation filters
CN103004196A (zh) 在经压缩位流中包含切换式内插滤波器系数
US20220345727A1 (en) Color transform for video coding
US10812832B2 (en) Efficient still image coding with video compression techniques
US20120008687A1 (en) Video coding using vector quantized deblocking filters
CN114125468A (zh) 帧内预测方法和装置
TWI686078B (zh) 用於在顯示串流壓縮(dsc)中計算失真之系統及方法
EP2196031B1 (en) Method for alternating entropy coding
CN103959786B (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
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120711

Termination date: 20141207

EXPY Termination of patent right or utility model