CN118075475A - 一种视频编码、解码方法及相关设备 - Google Patents

一种视频编码、解码方法及相关设备 Download PDF

Info

Publication number
CN118075475A
CN118075475A CN202211484382.0A CN202211484382A CN118075475A CN 118075475 A CN118075475 A CN 118075475A CN 202211484382 A CN202211484382 A CN 202211484382A CN 118075475 A CN118075475 A CN 118075475A
Authority
CN
China
Prior art keywords
area
image block
target image
processed
motion vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211484382.0A
Other languages
English (en)
Inventor
吕梁
陈烛稼
马霖峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202211484382.0A priority Critical patent/CN118075475A/zh
Publication of CN118075475A publication Critical patent/CN118075475A/zh
Pending legal-status Critical Current

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/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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on 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/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/57Motion estimation characterised by a search window with variable size or shape

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本申请提供了一种视频编码、解码方法及相关设备,该方法可以包括:对原始视频的图像序列中的图像帧进行分割处理,得到待处理区域,其中,待处理区域包含一个或多个图像块;确定目标图像块在参考帧中的参考区域,其中,参考帧为对图像帧进行编码时需要参考的帧,目标图像块为一个或多个图像块中的一个,参考区域所占的区域在目标图像块所属的待处理区域所占的区域内;根据参考区域对目标图像块进行编码。采用本申请能够在编解码时不需要对参考帧进行全量编解码,降低计算开销。

Description

一种视频编码、解码方法及相关设备
技术领域
本申请涉及视频编解码领域,尤其涉及一种视频编码、解码方法及相关设备。
背景技术
随着视频编解码技术的发展,视频彩铃、视频广告等业务得以广泛应用。上述业务对编码和解码的速度提出了更高的要求,为此,视频编解码标准H.264提出了并行编解码的方法来加速对视频的编码和解码。视频编解码标准H.264可以对每帧图像进行分割,将每帧图像划分为粒度更细的一个或多个条带(slice)。每一个slice是自包含的,意味着slice包含解码端所需的所有语法结构,视频帧解码时,以slice为单位独立解码。但是,这种独立指的是空间域上的slice独立,在编解码过程中,当前帧的编解码时仍需依赖参考帧上的多个slice。
在某些应用场景(比如说视频彩铃叠加宣传广告)下,需要在原始视频中叠加的部分只占图像帧画面的很小部分。但是,由于现有技术的slice编解码对参考帧的依赖限制,需要做参考帧全图像的编码和解码,从而导致计算开销极大。
发明内容
本申请实施例提供了一种视频编码、解码方法及相关设备,通过对视频的图像帧进行分割,得到待处理区域,单个待处理区域中图像块的编码依赖于参考帧中同位置的参考区域,从而在编解码时不需要进行全量编解码,可以降低计算开销。
第一方面,本申请实施例提供一种视频编码方法,该方法可以包括:对原始视频的图像序列中的图像帧进行分割处理,得到待处理区域,其中,所述待处理区域包含一个或多个图像块;
确定目标图像块在参考帧中的参考区域,其中,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述目标图像块为所述一个或多个图像块中的一个,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
根据所述参考区域对所述目标图像块进行编码。
通过该方法可以确定目标图像块(当前编码块)在参考帧中的参考区域,而参考区域所占的区域在目标图像块所属的待处理区域所占的区域内,所以对于待处理区域中目标图像块的编码仅仅依赖于参考帧中同位置的区域,不需要进行全量编码,可以降低计算开销。
结合第一方面,在第一方面的一种可能的实现方式中,所述确定目标图像块在参考帧中的参考区域,包括:
计算所述待处理区域所占的区域;
在所述目标图像块的运动矢量所指示的区域不在所述待处理区域所占的区域内的情况下,对所述目标图像块进行约束处理,得到所述目标图像块的约束运动矢量;其中,所述约束运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内;
根据所述约束运动矢量从所述的参考帧中确定所述目标图像块的参考区域。
可以看出,对参考区域所占的区域不在待处理区域所占的区域内的情况下,需要进行约束下的目标图像块的运动估计,从而使得参考区域所占的区域在待处理区域所占的区域内,保证在对待处理区内的图像块进行编码时可以只参考参考帧中同位置的区域。
结合第一方面,在第一方面的一种可能的实现方式中,所述对所述目标图像块进行约束处理,得到所述目标图像块的约束运动矢量,包括:
根据所述目标图像块的相邻块的运动矢量,分别计算所述相邻块的运动矢量所指示的区域与所述目标图像块之间的像素残差;
在存在所述像素残差为0的运动矢量的情况下,若所述像素残差为0所对应的相邻块的运动矢量所指示的区域不在所述待处理区域所占的区域内,对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量。
可以理解的是,若上述的像素残差为0,则说明目标图像块为skip宏块。因此,在上述运动矢量所指示的区域不在待处理区域所占的区域的情况下,可以将skip宏块作为普通的图像块进行约束处理。
结合第一方面,在第一方面的一种可能的实现方式中,所述约束处理包括:整像素运动估计和子像素运动估计。
结合第一方面,在第一方面的一种可能的实现方式中,所述对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量,包括:
根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点;
根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量。
可以理解的是,目标图像块的运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内,通过整像素运动估计来保证参考区域在目标图像块所属的待处理区域所占的区域内。
结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点,包括:
若存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则计算所述相邻块的运动矢量的第一码率失真代价;
根据所述第一码率失真代价中最小的第一码率失真代价所对应的运动矢量确定整像素运动搜索终点。
可以看出,整像素运动搜素起点是运动矢量中编码代价最小的一个,从而可以确定编码代价最小的参考区域。
结合第一方面,在第一方面的一种可能的实现方式中,述根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点,包括:
若不存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则根据所述待处理区域的边界信息和所述目标图像块的位置信息,将所述目标图像块的相邻块所对应的运动矢量进行等比例缩放得到缩放后的运动矢量,其中,所述缩放后的运动矢量所指示的区域在所述待处理区域的所占的区域内;
计算所述缩放后的运动矢量的第二码率失真代价;
根据所述第二码率失真代价中最小的第二码率失真代价所对应的运动矢量确定整像素运动搜索终点。
可以看出,缩放后的运动矢量所指示的区域在待处理区域的所占的区域内,而所确定的整像素运动搜索终点是编码代价最小的一个,从而保证目标图像块的参考区域在待处理区域所占的区域内。
结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量,包括:
根据子像素插值计算关系计算子像素参考区域;
若所述整像素运动搜索终点对应的运动矢量所指示的区域不在所述子像素参考区域所占的区域内,则将所述整像素运动搜索终点对应的运动矢量作为所述目标图像块的运动矢量。
可以看出,子像素参考区域是精度更高的参考区域,在参考区域不处于子像素参考区域所占的区域时,说明存在子像素插值依赖,因此可以保存整像素运动矢量。
结合第一方面,在第一方面的一种可能的实现方式中,所述根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量,包括:
若所述整像素运动搜索终点对应的运动矢量所指示的区域在所述子像素参考区域所占的区域内,则对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量。
可以看出,子像素参考区域是精度更高的参考区域,在参考区域处于子像素参考区域所占的区域时,说明不存在子像素插值依赖,需要进行子像素估计以保证参考区域在待处理区域内。
结合第一方面,在第一方面的一种可能的实现方式中,述对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量,包括:
根据所述整像素运动搜索终点对所述目标图像块进行子像素运动估计,确定子像素运动矢量,所述子像素运动矢量所指向的区域在所述子像素参考区域所占的区域内;
计算所述子像素运动矢量的第三码率失真代价;
将所述第三码率失真代价中最小的第三码率失真代价所对应的子像素运动矢量作为所述目标图像块的运动矢量。
可以理解的是,目标图像块的运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内,通过子像素运动估计可以得到精度更高的参考区域,来保证参考区域在目标图像块所属的待处理区域所占的区域内,且不存在子像素跨区域依赖风险。
结合第一方面,在第一方面的一种可能的实现方式中,所述计算所述待处理区域所占的区域,包括:
计算所述待处理区域中第一个图像块序号和最后一个图像块的序号;
计算所述待处理区域所占的区域信息,所述区域信息包含所述待处理区域的行数,所述待处理区域的第一行和最后一行是否满行;
根据所述第一个图像块的序号、所述最后一个图像块的序号和所述区域信息计算所述待处理区域所占的区域。
第二方面,本申请实施例提供一种视频解码方法,该方法可以包括:解析码流得到目标图像块在参考帧中的参考区域,其中,所述目标图像块为待处理区域所包含的一个或多个图像块中的任意一个,所述待处理区域为对原始视频的图像序列中的任意图像帧进行分割处理后得到,所述待处理区域为叠加信息的区域,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
根据所述参考区域对所述目标图像块进行预测。
通过该方法可以确定目标图像块(当前解码块)在参考帧中的参考区域,而参考区域所占的区域在目标图像块所属的待处理区域所占的区域内,所以对于待处理区域中目标图像块的解码仅仅依赖于参考帧中同位置的区域,不需要进行全量解码,可以降级计算开销。
结合第二方面,在第二方面的一种可能的实现方式中,所述根据所述参考区域对所述目标图像块进行解码之后,还包括:
对未进行解码处理区域中的码流进行复制处理,其中,所述未进行解码处理区域为所述图像帧中除所述待处理区域所占的区域以外的区域。
第三方面,本申请实施例提供一种编码器,所述编码器包括分割单元、预测单元和熵编码单元,其中:
所述分割单元,用于对原始视频的图像序列中的图像帧进行分割处理,得到待处理区域,其中,所述待处理区域包含一个或多个图像块;
所述预测单元,还用于确定目标图像块在参考帧中的参考区域,其中,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述目标图像块为所述一个或多个图像块中的一个,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
所述熵编码单元,用于根据所述参考区域对所述目标图像块进行编码。
结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:
计算所述待处理区域所占的区域;
在所述目标图像块的运动矢量所指示的区域不在所述待处理区域所占的区域内的情况下,对所述目标图像块进行约束处理,得到所述目标图像块的约束运动矢量;其中,所述约束运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内;
根据所述约束运动矢量从所述的参考帧中确定所述目标图像块的参考区域。
结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:
根据所述目标图像块的相邻块的运动矢量,分别计算所述相邻块的运动矢量所指示的区域与所述目标图像块之间的像素残差;
在存在所述像素残差为0的运动矢量的情况下,若所述像素残差为0所对应的相邻块的运动矢量所指示的区域不在所述待处理区域所占的区域内,对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量。
结合第三方面,在第三方面的一种可能的实现方式中,所述约束处理包括:整像素运动估计和子像素运动估计。
结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:根据所述目标图像块的相邻块所对应的运动矢量作为起点对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点;
根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量。
结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:若存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则计算所述相邻块的运动矢量的第一码率失真代价;
根据所述第一码率失真代价中最小的第一码率失真代价所对应的运动矢量确定整像素运动搜索终点。
结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:若不存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则根据所述待处理区域的边界信息和所述目标图像块的位置信息,将所述目标图像块的相邻块所对应的运动矢量进行等比例缩放得到缩放后的运动矢量,其中,所述缩放后的运动矢量所指示的区域在所述待处理区域的所占的区域内;
计算所述缩放后的运动矢量的第二码率失真代价;
根据所述第二码率失真代价中最小的第二码率失真代价所对应的运动矢量确定整像素运动搜索终点。
结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:根据子像素插值计算关系计算子像素参考区域;
若所述整像素运动搜索终点对应的运动矢量所指示的区域不在所述子像素参考区域所占的区域内,则将所述整像素运动搜索终点对应的运动矢量作为所述目标图像块的运动矢量。
结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:若所述整像素运动搜索终点对应的运动矢量所指示的区域在所述子像素参考区域所占的区域内,则对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量。
结合第三方面,在第三方面的一种可能的实现方式中,预测单元,具体用于:
根据所述整像素运动搜索终点对所述目标图像块进行子像素运动估计,确定子像素运动矢量,所述子像素运动矢量所指向的区域在所述子像素参考区域所占的区域内;
计算所述子像素运动矢量的第三码率失真代价;
将所述第三码率失真代价中最小的第三码率失真代价所对应的子像素运动矢量作为所述目标图像块的运动矢量。
结合第三方面,在第三方面的一种可能的实现方式中,分割单元,具体用于:计算所述待处理区域中第一个图像块序号和最后一个图像块的序号;
计算所述待处理区域所占的区域信息,所述区域信息包含所述待处理区域的行数,所述待处理区域的第一行和最后一行是否满行;
根据所述第一个图像块的序号、所述最后一个图像块的序号和所述区域信息计算所述待处理区域所占的区域。
第四方面,本申请实施例提供一种解码器,所述解码器包括熵解码单元和帧间预测单元,其中:
熵解码单元,用于解析码流得到目标图像块在参考帧中的参考区域,其中,所述目标图像块为待处区域所包含的一个或多个图像块中的任意一个,所述待处理区域为对原始视频的图像序列中的任意图像帧进行分割处理后得到,所述待处理区域为叠加信息的区域,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
帧间预测单元,用于根据所述参考区域对所述目标图像块进行预测。
结合第四方面,在第四方面的一种可能的实现方式中,帧间预测单元,还用于:
对未进行解码处理区域中的码流进行复制处理,其中,所述未进行解码处理区域为所述图像帧中除所述待处理区域所占的区域以外的区域。
第五方面,本申请实施例提供了一种编码器,该编码器包括处理器和存储器,所述处理器用于执行存储器中存储的指令,以使得编码器实现前述第一方面任一项所描述的方法。
可选的,所述编码器还包括通信接口,所述通信接口用于接收和/或发送数据,和/或,所述通信接口用于为所述处理器提供输入和/或输出。
需要说明的是,上述实施例是以通过调用计算机指定来执行方法的处理器(或称通用处理器)为例进行说明。具体实施过程中,处理器还可以是专用处理器,此时计算机指令已经预先加载在处理器中。可选的,处理器还可以既包括专用处理器也包括通用处理器。
可选的,处理器和存储器还可以集成于一个器件中,即处理器和存储器还可以被集成在一起。
第五方面,本申请实施例提供了一种解码器,该编码器包括处理器和存储器,所述处理器用于执行存储器中存储的指令,以使得解码器实现前述第二方面任一项所描述的方法。
可选的,所述解码器还包括通信接口,所述通信接口用于接收和/或发送数据,和/或,所述通信接口用于为所述处理器提供输入和/或输出。
需要说明的是,上述实施例是以通过调用计算机指定来执行方法的处理器(或称通用处理器)为例进行说明。具体实施过程中,处理器还可以是专用处理器,此时计算机指令已经预先加载在处理器中。可选的,处理器还可以既包括专用处理器也包括通用处理器。
可选的,处理器和存储器还可以集成于一个器件中,即处理器和存储器还可以被集成在一起。
第六方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法或者前述第二方面任一项所描述的方法。
第七方面,本申请提供了一种计算机程序产品,计算机程序产品包括计算机指令,当所述指令在至少一个处理器上运行时,实现前述第一方面任一项所描述的方法。
可选的,该计算机程序产品可以为一个软件安装包或镜像包,在需要使用前述方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
本申请第二至第七方面所提供的技术方案,其有益效果可以参考第一方面的技术方案的有益效果,此处不再赘述。
附图说明
以下对本申请用到的附图进行介绍。
图1A是本申请提供的一种单帧根据slice区域划分的示意图;
图1B是本申请提供的一种slice的空间域独立性的示意图;
图2A是本申请提供的一种多线程编码的示意图;
图2B是本申请实施例提供的一种编码时依赖参考帧的slice的示意图;
图2C是本申请实施例提供的一种多线程解码的示意图;
图2D是本申请实施例提供的一种解码帧时依赖参考帧的slice的示意图;
图3A是本申请实施例提供的一种在视频上叠加内容的示意图;
图3B是本申请实施例提供的一种解码错误的示意图;
图3C是本申请实施例提供的一种单个slice解码仅依参考帧同位置的slice的示意图;
图4A是本申请实施例提供的一种视频系统的框架示意图;
图4B是本申请实施例提供的一种编码器的框架示意图;
图4C是本申请实施例提供的一种解码器的框架示意图;
图5是本申请实施例提供的一种对视频局部叠加信息的场景示意图;
图6是本申请实施例提供的一种视频编码方法的流程示意图;
图7A是本申请实施例提供的一种不同类型的图像块的示意图;
图7B是本申请实施例提供的一种基于块的运动估计的示意图;
图7C是本申请实施例提供的一种为图像块确定匹配块的示意图;
图8A是本申请实施例提供的一种计算待处理区域的范围的流程示意图;
图8B是本申请实施例提供的一种图像帧的示意图;
图8C是本申请实施例提供的一种图像块的坐标示意图;
图9A是本申请实施例提供的一种子像素插值的示意图;
图9B是本申请实施例提供的一种对目标图像块进行约束处理的流程示意图;
图10A是本申请实施例提供的一种不同大小的相邻块的示意图;
图10B是本申请实施例提供的一种运动矢量进行缩放的示意图;
图11A是本申请实施例提供的一种子像素运动估计过程的示意图;
图11B是本申请实施例提供的一种子像素参考区域的示意图;
图12是本申请实施例提供的一种视频解码的流程示意图;
图13是本申请实施例提供的一种在视频上叠加信息的场景示意图;
图14是本申请实施例提供的一种译码设备的结构示意图;
图15是本申请实施例提供的一种视频译码系统的结构示意图。
具体实施方式
下面结合附图对本申请实施例进行详细介绍。
本申请实施例所涉及的技术方案不仅可以应用于现有的视频编解码标准(如H.264/高级视频编解码(advanced video coding,AVC)、H.265/高效视频编解码标准(highefficiency video coding,HEVC)、H.266等标准),还可以应用于未来的视频编解码标准中。
为了便于理解,以下示例地给出了部分与本申请实施例相关概率的说明以供参考。如下所示:
1.视频编解码
视频编解码通常是指处理形成视频或视频的图像序列。
视频编码(video encoding),指通过压缩技术,将视频文件压缩成码流的处理过程。
视频解码(video decoding),指将码流按照特定的语法规则和处理方法恢复成重建图像的处理过程。
在视频编解码领域,术语“图片(picture)”、“帧(frame)”或“图像(image)”可以用作同义词。编码部分和解码部分的组合也可以称为编解码(编码和解码)。
2.图像块(block)
在大多数的编码框架中,视频包括一系列图像,一个图像称为一帧。图像被划分为至少一个条带,每个条带又被划分为图像块(block)。视频编码或视频解码以图像块为单位,例如,可以从图像的左上角位置开始从左到右、从上到小、一行一行进行编码处理或解码处理。
图像块可以是视频编解码标准H.264/AVC中的宏块(macro block,MB),也可以是视频编解码标准H.264/AVC中的子块,还可以是高效视频编码(HEVC)标准中的编码单元(coding unit,CU)。本申请实施例对此不作具体限定。
在本申请实施例中,正在进行编码处理或解码处理的图像块称为当前图像块(current block),当前图像块所在的图像称为当前帧(当前图像)。
3.条带/切片/片(slice)
一个slice包含一帧的部分或全部数据,换言之,一帧可以编码成若干个slice。包含多个slice的结构可以称为片组(slice group)。在H.264/AVC标准中,一个slice最少包含一个宏块,最多包含整帧图像的数据。在不同的编码实现中,同一帧中所构成的slice数目不一定相同。
在H.264/AVC标准中,设计slice的目的主要在于防止误码的扩算。因为不同的slice之间,其解码操作是独立的,某一个slice解码过程所参考的数据(例如预测编码)不能超过slice的边界。
4.冗余切片
一种用于错误修复的冗余数据体。
5.双向预测内插编码帧(bi-directional interpolated prediction frame)
也称为双向预测编码帧,又称为B帧,利用源图像序列前面和后面的已编码帧之间的时间冗余信息,来压缩传输量的编码帧类型。B帧记录的是本帧与前后帧的差别,解码时不仅要需要之前的缓存画面,还要解码之后的画面,通过前后画面与本帧数据的叠加生成最终画面。
6.前向预测编码帧(predictive frame)
也称帧间预测编码帧,又称P帧,利用源图像序列前面的冗余信息,来压缩传输数据量的编码帧类型。P帧表示的是当前帧与前一帧的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。
7.序列参数集(sequence parameter set,SPS)
SPS用于描述一个连续编码视频序列的参数,SPS中保存了一组编码视频序列的全局参数(包含编码等级、分辨率等)。所谓的编码视频序列即原始视频的一帧一帧的像素数据经过编码之后的结构组成的序列。
8.图像参数集(picture parameter set,PPS)
PPS用于描述一个序列中某一幅图像或者某几幅图像的参数,也即每一帧的编码后的数据所依赖的参数保存于图像参数集中。
参数集是一个独立的数据单位,不依赖于参数集外的其他句法元素。一个参数集不对应某一个特定的图像或序列,同一序列参数集可以被多个图像参数集引用,同理,同一个图像参数集也可以被多个图像引用。
9.参考帧(reference frame)
视频编码中为了实现压缩,通过缓存部分图片,通过帧和运动矢量结合形成新帧,这些帧被叫做参考帧,参考帧作为其他帧解码时的参照的帧,
10.运动矢量(motion vector)
运动矢量是帧间预测过程中的一个重要参数,指的是当前编码块与参考区域(匹配块)之间的偏移量。
11.运动估计(motion estimation)
运动估计是从参考帧中寻找编码块的匹配块的方法,其基本思想是将图像序列的每一帧分为许多互不重叠的宏块,并认为宏块内所以像素的位移量都相同,然后对每个宏块到参考帧某一给定特定搜素范围内根据一定的匹配准则找出与当前块最相似的块,即匹配块。匹配块与当前块的相对位移即未运动矢量。
视频压缩的时候,只需要保存运动矢量和残差数据就可以完全恢复出当前块。
12.运动补偿(motion compensation)
运动补偿是用当前帧的运动矢量来合成下一帧的变换的方法,一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)差别的方法,具体来说是描述前面一帧的每个小块怎样移动到当前帧中的某个位置去。
这种方法经常被视频压缩/视频编解码器用来减少视频序列中的空域冗余。它也可以用来进行去交织(deinterlacing)与以及运动插值(motion interpolation)的操作。
13.片上下文序列(slice context list):用于接收保存一帧中所有slice数据的列表。
上述对概率的介绍可以使用在以下的实施例中。
为了提高对视频编解码的速度,视频编解码标准H.264/AVC提供了slice的分割方法,将每帧图像根据slice区域进行划分。请参见图1A,图1A是本申请实施例提供的一种单帧根据slice区域划分的示意图。从图1A可以看出,一张图像可以被分割成一个或多个slice,比如说图1A所示的单帧100被分割成slice0、slice1、slice2、slice3和slice4。每一个slice可以独立解码,不依赖于同一个图像中的其他slice。也就意味着在进行帧内预测和帧间预测的时候不能越过slice的边界。
采用slice分割的优点包含以下一种或多种:
第一,鲁棒性良好,把每个图像分为一个个独立的slice,在解码时遇到错误,也可以实现再同步,限制误码的扩散和传输。
第二,匹配最大传输单元(maximum transmission unit,MTU)大小,这涉及到网络层的概念,网络上发包时,每个包的大小受到限制。因此,slice结构编码通过提供可用于传输的可解码块以及支持任意切片顺序(ASO)、灵活宏块顺序(FMO)和冗余切片方法,提高了传输效率和容错能力。通过保持每个切片的字节数大致恒定,可以实现较小的网络数据包和固定大小的网络数据包。
第三,并行处理,由于每个slice互相独立的缘故,编码、解码以至环路滤波均可以并行处理,加快处理速度,提高处理效率。
从图1A可以看出,H.264/AVC把一张图像划分为粒度更细的一个或若干个slice。每一个slice是自包含的,表明slice包含解码端所需的所有语法结构,每一个slice总体来看都由两部分组成,一部分作为用于保存slice的总体信息(如当前slice的类型等),另一部分通常是一组连续的宏块结构(或者宏块跳过信息)。对视频进行解码时,视频中的每副图像以slice为单位独立解码,这种独立指的是空间域上的slice独立,解码时仍然需要参考前面帧的所有slice。
请参见图1B,图1B是本申请实施例提供的一种slice的空间域独立性的示意图。因为不同的slice之间,其解码操作是独立的。所以,从图1B可以看出,当码流传输中当前解码帧102中若丢失slice1和slice3,slice2在参考帧101正确解码的情况下仍然可以解码成功。
在编码阶段,编码器可以根据图像分割技术可以将当前编码帧分割为多个slice区域,并分配给多个线程进行同时编码,当一帧中所有slice编码完成后输出完整编码帧。
请参见图2A,图2A是本申请实施例提供的一种多线程编码的示意图。从图2A可以看出,当前编码帧200被分割成slice1、slice2和slice3,将当前编码帧200中的slice1分配给线程1,当前编码帧200中的slice2分配给线程2,当前编码帧中的slice3分别给线程3。线程1、线程2和线程3同时进行编码,当前编码帧200中的slice1、slice2和slice3编码完成中可以输出完整编码帧,可以将编码完成后一帧中的所有slice数据保存在片上下文序列(slice contaxt list)中。
请参见图2B,图2B是本申请实施例提供的一种编码时依赖参考帧的slice的示意图。从图2B可以看出,在编码阶段,对当前编码帧200中的slice1的编码,需要参考参考帧201中的slice2区域的像素信息;对当前编码帧200中的slice2的编码,需要参考参考帧201中的slice3区域的像素信息,对当前编码帧200中的slice3的编码,需要参考参考帧201中的slice1区域的像素信息。
请参见图2C,图2C是本申请实施例提供的一种多线程解码的示意图。从图2C可以看出,在解码阶段,解码器接收到切割为多个slice的单帧图像时,会按顺序将slice加入队列,等待单帧图像中的所有slice接收完成后,通知主线程M启动多线程解码。同时,主线程M通知多个解码线程T从slice context list中取出对应的slice进行解码。最后,等到所有线程完成任务后返回。即单帧的多个slice可以并行解码。
请参见图2D,图2D是本申请实施例提供的一种解码帧时依赖参考帧的slice的示意图。从图2D可以看出,在解码阶段,对当前解码帧202中的slice1的解码,需要参考参考帧203中的slice4区域的像素信息以及参考帧204中的slice2区域的像素信息,而不是仅仅依赖参考帧203和参考帧204中的slice1区域的像素信息。
在目前的应用实践中,由于slice的独立性仅仅是空间域上的独立。即当前图像中的多个slice独立。在编解码过程中,对于当前帧的编解码需要依赖参考帧的多个slice。因此,在实际应用中一般都是所以slice的全解码和全编码。
在某些应用场景下,比如说视频彩铃在叠加宣传广告时,需要叠加的区域只占视频画面的很小部分。
请参见图3A,图3A是本申请实施例提供的一种在视频上叠加内容的示意图。从图3A可以看出,叠加区域301位于视频300的画面底部,只占视频300的画面的一小部分。但是,由于现有技术中slice的编解码对参考帧的依赖限制,需要做全图像的解码和编码,带来的计算开销可能会很大。
综上所述,目前的方案所提供的slice在空间域上是独立的,但是由于视频是连续的图像,一般所有的视频在时间维度上都是需要参考前后帧进行编码和解码。所以,当slice只在空间域上独立时,slice的解码扔需要参考前面的全量帧的slice信息,意味着参考帧需要全解码。若强行只对单个slice进行解码,在参考帧未能正确全解码的情况下,会影响到后续图像的质量。图3B是本申请实施例提供的一种解码错误的示意图,从图3B可以看出,在解码时,视频300中的图像被分割成为slice1、slice2和slice3。因为在视频300中的图像的参考帧未能正确解码的情况,对slice2进行解码,所以产生解码错误,导致slice区域中的某些内容没有显示出来。
目前的方案在对视频中的某一帧上的slice单独解码时,需要当前帧参考帧中的全部slice解码才可以保证该slice正确解码,意味着需要进行全量解码,造成额外的性能开销。以480P全量编解码为例,单CPU核能处理3路左右H.264的解码和编码,以典型的2P20C的服务器为例,大概可以支持最大120路解码和编码。而视频彩铃等业务,需要2P20C支持1000路左右的并发,因此目前方案和机制无法满足高并发场景。
有鉴于此,本申请提供了一种视频编码、解码方法及相关设备。提出了一种在时间域内对原始视频的图像序列中的任意一帧进行分割处理,得到多个待处理区域(比如说slice),不仅可以保证单帧内的slice完全分离,同时在整个视频的播放过程中,单个slice的解码仅仅依赖前面几帧同位置的slice。请参见图3C,图3C是本申请实施例提供的一种单个slice解码仅依参考帧同位置的slice的示意图。从图3C可以看出,对当前帧303中的slice1的解码仅参考了参考帧301中的slice1和参考帧302中的slice1;对当前帧303中的slice2的解码仅参考了参考帧301中的slice2和参考帧302中的slice2;对当前帧303中的slice3的解码仅参考了参考帧301中的slice3和参考帧302中的slice3;对当前帧303中的slice4的解码仅参考了参考帧301中的slice4和参考帧302中的slice4。因此,对当前帧303中的slice1的解码不需要对参考帧301和参考帧302进行全量解码,可以降低计算开销。
图4A是本申请实施例提供的一种视频译码系统4的框架示意图。如本文所使用,术语“译码器”一般是指编码器和解码器两者。在申请中,术语“视频译码”或“译码”可一般地指代视频编码或视频译码。视频译码系统4的编码器410和解码器420用于根据本申请所提出的视频处理方法来对当前编码帧进行分割处理,得到待处理区域(例如slice),为待处理区域中的图像块(例如宏块)确定匹配块,使得匹配块的位置在待处理区域的范围内。从而,对上述待处理区域的解码可以仅仅依赖参考帧中同位置的区域,不需要对参考帧进行全量解码,可以降低计算开销。
如图4A所示,视频译码系统4包含源装置41和目的地装置42。源装置41产生经编码的视频数据。因此,源装置41可被称为视频编码装置。目的地装置42可对由源装置41所产生的经编码的视频数据进行解码。因此,目的地装置42可被称为视频解码装置。源装置41、目的地装置42或两个的各种实施方案可包含一个或多个处理器以及耦合到上述一个或多个处理器的存储器。存储器可包含但不限于RAM、ROM、EEPROM、快闪存储器或可用于以可由计算机存取的指令或数据结构的形式存储所要的程序代码的任何其它媒体,如本申请所描述。
源装置41和目的地装置42可以包括各种装置,包含桌上型计算机、移动计算装置、笔记型(例如,膝上型)计算机、平板计算机、机顶盒、例如所谓的“智能”电话等电话手持机、电视机、相机、显示装置、数字媒体播放器、视频游戏控制台、车载计算机或其类似者。
目的地装置42可经由链路43从源装置41接收经编码视频数据。链路43可包括能够将经编码视频数据从源装置41移动到目的地装置42的一或多个媒体或装置。在一个实例中,链路43可包括使得源装置41能够实时将经编码视频数据直接发射到目的地装置42的一或多个通信媒体。在此实例中,源装置41可根据通信标准(例如无线通信协议)来调制经编码视频数据,且可将经调制的视频数据发射到目的地装置42。所述一或多个通信媒体可包含无线和/或有线通信媒体,例如射频(RF)频谱或一或多个物理传输线。所述一或多个通信媒体可形成基于分组的网络的一部分,基于分组的网络例如为局域网、广域网或全球网络(例如,因特网)。所述一或多个通信媒体可包含路由器、交换器、基站或促进从源装置41到目的地装置42的通信的其它设备。
在另一实例中,可将经编码数据从输出接口411输出到存储装置44。类似地,可通过输入接口421从存储装置44存取经编码数据。存储装置44可包含多种分布式或本地存取的数据存储媒体中的任一者,例如硬盘驱动器、蓝光光盘、DVD、CD-ROM、快闪存储器、易失性或非易失性存储器,或用于存储经编码视频数据的任何其它合适的数字存储媒体。
在另一实例中,存储装置44可对应于文件服务器或可保持由源装置41产生的经编码视频的另一中间存储装置。目的地装置42可经由流式传输或下载从存储装置44存取所存储的视频数据。文件服务器可为任何类型的能够存储经编码的视频数据并且将经编码的视频数据发射到目的地装置42的服务器。实例文件服务器包含网络服务器(例如,用于网站)、FTP服务器、网络附接式存储(NAS)装置或本地磁盘驱动器。目的地装置42可通过任何标准数据连接(包含因特网连接)来存取经编码视频数据。这可包含无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、电缆调制解调器等),或适合于存取存储在文件服务器上的经编码视频数据的两者的组合。经编码视频数据从存储装置44的传输可为流式传输、下载传输或两者的组合。
本申请的运动矢量预测技术可应用于视频编解码以支持多种多媒体应用,例如空中电视广播、有线电视发射、卫星电视发射、串流视频发射(例如,经由因特网)、用于存储于数据存储媒体上的视频数据的编码、存储在数据存储媒体上的视频数据的解码,或其它应用。在一些实例中,视频译码系统4可用于支持单向或双向视频传输以支持例如视频流式传输、视频回放、视频广播和/或视频电话等应用。
图4A中所说明的视频译码系统4仅为实例,并且本申请的技术可适用于未必包含编码装置与解码装置之间的任何数据通信的视频译码设置(例如,视频编码或视频解码)。在其它实例中,数据从本地存储器检索、在网络上流式传输等等。视频编码装置可对数据进行编码并且将数据存储到存储器,和/或视频解码装置可从存储器检索数据并且对数据进行解码。在许多实例中,由并不彼此通信而是仅编码数据到存储器和/或从存储器检索数据且解码数据的装置执行编码和解码。
在图4A的实例中,源装置41包含视频源412、编码器410和视频译码系统4。在一些实例中,视频译码系统4可包含调节器/解调器(调制解调器)和/或发射器。视频源412可包括视频捕获装置(例如,摄像机)、含有先前捕获的视频数据的视频存档、用以从视频内容提供者接收视频数据的视频馈入接口,和/或用于产生视频数据的计算机图形系统,或视频数据的此些来源的组合。
编码器410可对来自视频源412的视频数据进行编码。在一些实例中,源装置41经由视频译码系统4将经编码视频数据直接发射到目的地装置42。在其它实例中,经编码视频数据还可存储到存储装置44上,供目的地装置42以后存取来用于解码和/或播放。
在图4A的实例中,目的地装置42包含输入接口421、解码器420和显示装置422。在一些实例中,输入接口421包含接收器和/或调制解调器。输入接口421可经由链路30和/或从存储装置44接收经编码视频数据。显示装置422可与目的地装置42集成或可在目的地装置42外部。一般来说,显示装置422显示经解码视频数据。显示装置422可包括多种显示装置,例如,液晶显示器(LCD)、等离子显示器、有机发光二极管(OLED)显示器或其它类型的显示装置。
尽管图4A中未图示,但在一些方面,编码器410和解码器420可各自与音频编码器和解码器集成,且可包含适当的多路复用器-多路分用器单元或其它硬件和软件,以处置共同数据流或单独数据流中的音频和视频两者的编码。在一些实例中,如果适用的话,那么MUX-DEMUX单元可符合ITU H.223多路复用器协议,或例如用户数据报协议(UDP)等其它协议。
编码器410和解码器420各自可实施为例如以下各项的多种电路中的任一者:一或多个微处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、离散逻辑、硬件或其任何组合。如果部分地以软件来实施本申请,那么装置可将用于软件的指令存储在合适的非易失性计算机可读存储媒体中,且可使用一或多个处理器在硬件中执行所述指令从而实施本申请技术。前述内容(包含硬件、软件、硬件与软件的组合等)中的任一者可被视为一或多个处理器。编码器410和解码器420中的每一者可包含在一或多个编码器或解码器中,所述编码器或解码器中的任一者可集成为相应装置中的组合编码器/解码器(编码解码器)的一部分。
本申请可大体上将编码器410称为将某些信息“发信号通知”或“发射”到例如解码器420的另一装置。术语“发信号通知”或“发射”可大体上指代用以对经压缩视频数据进行解码的语法元素和/或其它数据的传送。此传送可实时或几乎实时地发生。替代地,此通信可经过一段时间后发生,例如可在编码时在经编码位流中将语法元素存储到计算机可读存储媒体时发生,解码装置接着可在所述语法元素存储到此媒体之后的任何时间检索所述语法元素。
编码器410和解码器420可根据例如高效视频编码(HEVC)等视频压缩标准或其扩展来操作,并且可符合HEVC测试模型(HM)。或者,编码器410和解码器420也可根据其它业界标准来操作,所述标准例如是ITU-T H.264、H.265标准,或此类标准的扩展。然而,本申请的技术不限于任何特定编解码标准。
图4B是本申请实施例提供的一种编码器410的框架示意图。编码器410用于将视频输出到后处理实体413。后处理实体413表示可以处理来自编码器410的经编码视频数据的视频实体的实例,例如媒体感知网络元件(MANE)、拼接/编辑装置或视频彩铃转发平台。在一些情况下,后处理实体413可以为网络实体的实例。在一些视频编码系统中,后处理实体413和编码器410可为单独装置的若干部分,而在其他情况下,相对于后处理实体413所描述的功能性可由包括编码器410的相同装置执行。在某一实例中,后处理实体413是图4A的存储装置44的实例。
编码器410的功能组件可以包括分割单元4101、预测单元4102、残差生成单元112、变换单元4103、量化单元4104和熵编码单元4105。预测单元4102包括模式选择单元4102a、帧间预测单元4102b和帧内预测单元4102c。为了图像块重构,编码器410还可以包括反量化单元4106、反变换单元4107和求和单元111。环路滤波单元4108即表示一个或多个环路滤波单元,例如去块滤波单元、自适应环路滤波单元(ALF)和样本自适应偏移(SAO)滤波单元。在其他实现方式下,可将环路滤波单元4108实施为环路后滤波器。在一种示例下,编码器410还可以包括存储单元4109。
存储单元4109可存储待由编码器410的组件编码的视频数据。可从视频源412获得存储在存储单元4109中的视频数据。存储单元4109可为参考图像存储单元,其存储用于由编码器410在帧内、帧间编码模式中对视频数据进行编码的参考视频数据。存储单元4109可由多种存储单元装置中的任一者形成,例如包含同步DRAM(SDRAM)的动态随机存取存储单元(DRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM),或其它类型的存储单元装置。存储单元4109可由同一存储单元装置或单独存储单元装置提供。在各种实例中,存储单元4109可与编码器410的其它组件一起在芯片上,或相对于那些组件在芯片外。
请参见图4B,图4B是本申请实施例提供的一种编码器的框架示意图。如图4B中所示,编码器410接收视频数据,并将所述视频数据存储在视频数据存储单元中。分割单元将上述视频数据分割成若干待处理区域,上述待处理区域包含多个图像块,而且这些图像块可以被进一步分割为更小的块,例如基于四叉树结构或者二叉树结构的图像块分割。上述待处理区域可以是条带(slice)、片(tile)或其它较大单元。编码器410通常说明编码待编码的视频条带内的图像块的组件。上述条带(slice)可分成多个图像块(并且可能分成被称作片的图像块集合),举例来说,对于编码标准H.264/AVC来说,条带可以分成多个宏块(macro block)。
在一种可能的实施方式中,分割单元还用于计算待处理区所占的区域,具体用于计算所述待处理区域中第一个图像块序号和最后一个图像块的序号;计算所述待处理区域所占的区域信息,所述区域信息包含所述待处理区域的行数,所述待处理区域的第一行和最后一行是否满行;根据所述第一个图像块的序号、所述最后一个图像块的序号和所述区域信息计算所述待处理区域所占的区域。
预测单元4102中的模式选择单元4102a可选择用于当前图像块的多个可能的译码模式中的一者,例如多个帧内译码模式中的一者或多个帧间译码模式中的一者。预测单元4102可将所得经帧内、帧间译码的块提供给残差生成单元112以产生残差块,以及提供给求和单元111以重构用作参考图像的经编码块。在一些实施例中,模式选择单元4102a可以选择帧内预测和帧间预测模式的组合,其中预测基于帧间预测信息和帧内预测信息,模式选择单元4102a还可以在帧间预测的情况下为块选择运行向量的分辨率(例如,子像素精度或整像素精度)。
预测单元4102内的帧内预测单元4102c可相对于与待编码当前块在相同帧或条带中的一个或多个相邻块执行当前图像块的帧内预测性编码,去除空间冗余。预测单元4102中的帧间预测单元4102b可相对于一个或多个参考图像中的一个或多个匹配块执行当前图像块的帧间预测性编码以去除空间冗余。
具体的,帧间预测单元4102b可用于确定用于编码当前图像块的帧间预测模式。举例来说,帧间预测单元4102b可使用速率-失真分析来计算候选帧间预测模式集合中的各种帧间预测模式的速率-失真值,并从中选择具有最佳速率-失真特性的帧间预测模式。速率-失真分析通常确定经编码块与经编码以产生上述经编码块的原始的未经编码块之间的失真(或误差)的量,以及用于产生经编码块的位速率(也就是说,位数目)。例如,帧间预测单元4102b可确定候选帧间模式集合中编码当前图像块的码率失真代价最小的帧间预测模式为用于对当前图像块进行帧间预测的帧间预测模式。
帧间预测单元4102b用于基于确定的帧间预测模式,预测当前图像块中的一个或多个子块的运动信息(比如说运动矢量),并利用当前图像块中的一个或多个子块的运动信息(例如运动矢量)获取产生当前图像块的匹配块。帧间预测单元4102b可在参考图像列表中的任意参考帧中定位上述运动矢量指向的匹配块,其中,上述运动矢量指向的参考区域所占的区域为图像块所属的待处理区域所占的区域内。帧间预测单元4102b可以生成参考索引,该参考索引包含参考图像列表中的匹配块,以及指示当前图像块和匹配块之间的运动信息(例如运动矢量)。其中,运动矢量所指向的区域在上述待处理区域内。帧间预测单元4102b可以输出参考索引、预测方法指示符和运动矢量作为当前编码块的运动信息。以供解码器420在对条带的图像块解码时使用。
又或者,一种示例下,帧间预测单元4102b利用每个子块的运动信息执行运动补偿过程,以生成每个子块的匹配块,从而得到当前图像块的匹配块。应当可以理解的是,这里的帧间预测单元4102b执行的是运动估计和运动补偿过程。
在本申请实施例中,帧间预测单元4102b可以根据待处理区域所占的区域判断当前图像块的运动矢量是否越界。也即,若当前图像块的运动矢量所指示的区域不在待处理区域内,则说明越界。对越界的当前图像块进行约束处理,得到当前图像块的约束运动矢量,使得约束运动矢量所指的区域在待处理区域所占的区域内。可以理解的是,匹配块位于当前图像块的运动矢量所指示的区域内。
在一种可能的实施方式中,帧间预测单元4102b具体用于:根据所述目标图像块的相邻块的运动矢量,分别计算所述相邻块的运动矢量所指示的区域与所述目标图像块之间的像素残差;在存在所述像素残差为0的运动矢量的情况下,若所述像素残差为0所对应的相邻块的运动矢量所指示的区域不在所述待处理区域所占的区域内,对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量。其中,约束处理包括:整像素运动估计和子像素运动估计。
在一种可能的实施方式中,帧间预测单元4102b具体用于:根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点;根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量。
在一种可能的实施方式中,帧间预测单元4102b具体用于:若存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则计算所述相邻块的运动矢量的第一码率失真代价;根据所述第一码率失真代价中最小的第一码率失真代价所对应的运动矢量确定整像素运动搜索终点。
在一种可能的实施方式中,帧间预测单元4102b具体用于:若不存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则根据所述待处理区域的边界信息和所述目标图像块的位置信息,将所述目标图像块的相邻块所对应的运动矢量进行等比例缩放得到缩放后的运动矢量,其中,所述缩放后的运动矢量所指示的区域在所述待处理区域的所占的区域内;计算所述缩放后的运动矢量的第二码率失真代价;根据所述第二码率失真代价中最小的第二码率失真代价所对应的运动矢量确定整像素运动搜索终点。
在一种可能的实施方式中,帧间预测单元4102b具体用于:根据子像素插值计算关系计算子像素参考区域;若所述整像素运动搜索终点对应的运动矢量所指示的区域不在所述子像素参考区域所占的区域内,则将所述整像素运动搜索终点对应的运动矢量作为所述目标图像块的运动矢量。
在一种可能的实施方式中,帧间预测单元4102b具体用于:若所述整像素运动搜索终点对应的运动矢量所指示的区域在所述子像素参考区域所占的区域内,则对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量。
在一种可能的实施方式中,帧间预测单元4102b具体用于:根据所述整像素运动搜索终点对所述目标图像块进行子像素运动估计,确定子像素运动矢量,所述子像素运动矢量所指向的区域在所述子像素参考区域所占的区域内;计算所述子像素运动矢量的第三码率失真代价;将所述第三码率失真代价中最小的第三码率失真代价所对应的子像素运动矢量作为所述目标图像块的运动矢量。
帧内预测单元4102c可对当前图像块执行帧内预测。明确地说,帧内预测单元4102c可确定用来编码当前块的帧内预测模式。举例来说,帧内预测单元4102c可使用速率-失真分析来计算各种待测试的帧内预测模式的速率-失真值,并从待测试模式当中选择具有最佳速率-失真特性的帧内预测模式。在任何情况下,在为图像块选择帧内预测模式之后,帧内预测单元4102c可将指示当前图像块的所选帧内预测模式的信息提供到熵编码单元4105,以便熵编码单元4105编码指示所选帧内预测模式的信息。
在预测单元4102经由帧间预测、帧内预测产生当前图像块的匹配块之后,编码器410通过从待编码的当前图像块减去上述匹配块来形成残差图像块。残差生成单元112表示执行此减法运算的一或多个组件。上述残差块中的残差视频数据应用于变换单元4103。变换单元4103使用例如离散余弦变换(DCT)或概念上类似的变换等变换将残差视频数据变换成残差变换系数。变换单元4103可将残差视频数据从像素值域转换到变换域,例如频域。
在量化之后,熵编码单元4105对经量化变换系数进行熵编码。举例来说,熵编码单元4105可执行上下文自适应可变长度编码(CAVLC)、上下文自适应二进制算术编码(CABAC)、基于语法的上下文自适应二进制算术编码(SBAC)、概率区间分割熵(PIPE)编码或另一熵编码方法或技术。在由熵编码单元4105熵编码之后,可将经编码位流发射到解码器420,或经存档以供稍后发射或由解码器420检索。熵编码单元4105还可对待编码的当前图像块的语法元素进行熵编码。
反量化单元4106和反变换单元4107分别应用逆量化和逆变换以在像素域中重构所述残差块,例如以供稍后用作参考图像的匹配块。求和单元111将经重构的残差块添加到由帧间预测单元4102b或帧内预测单元4102c产生的匹配块,以产生经重构图像块。滤波单元4108可以适用于经重构图像块以减小失真,诸如方块效应(block artifacts)。然后,该经重构图像块作为匹配块存储在经解码图像存储单元4109中,可由帧间预测单元4102b用作匹配块以对后续视频帧或图像中的块进行帧间预测。
应当理解的是,编码器410的其它的结构变化可用于编码视频流。例如,对于某些图像块或者图像帧,编码器410可以直接地量化残差信号而不需要经变换单元4103处理,相应地也不需要经反变换单元4107处理;或者,对于某些图像块或者图像帧,编码器410没有产生残差数据,相应地不需要经变换单元4103、量化单元4104、反量化单元4106和反变换单元4107处理;或者,编码器410可以将经重构图像块作为匹配块直接地进行存储而不需要经滤波单元4108处理;或者,编码器410中量化单元4104和反量化单元4106可以合并在一起。滤波单元4108是可选的,以及针对无损压缩编码的情况下,变换单元4103、量化单元4104、反量化单元4106和反变换单元4107是可选的。应当理解的是,根据不同的应用场景,帧间预测单元和帧内预测单元可以是被选择性的启用,而在本案中,帧间预测单元被启用。
图4C为本申请实施例中所描述的一种解码器420框图。在图4C的实例中,解码器420包括熵解码单元4201、预测处理单元4202、反量化单元4203、反变换单元4204、求和单元211、滤波单元4205以及经存储单元4206。预测处理单元4202可以包括帧间预测单元4202b和帧内预测单元4202a。在一些实例中,解码器420可执行大体上与相对于来自图4B的编码器410描述的编码过程互逆的解码过程。
在解码过程中,解码器420从编码器410接收表示经编码视频条带的图像块和相关联的语法元素的经编码视频位流。解码器420可从网络实体423接收视频数据,可选的,还可以将所述视频数据存储在视频数据存储单元(图中未示意)中。视频数据存储单元可存储待由解码器420的组件解码的视频数据,例如经编码视频位流。存储在视频数据存储单元中的视频数据,例如可从存储装置44、从相机等本地视频源、经由视频数据的有线或无线网络通信或者通过存取物理数据存储媒体而获得。视频数据存储单元可作为用于存储来自经编码视频位流的经编码视频数据的经存储单元(CPB)。
因此,尽管在图4C中没有示意出视频数据存储单元,但视频数据存储单元和存储4206可以是同一个的存储单元,也可以是单独设置的存储单元。视频数据存储单元和存储4206可由多种存储单元装置中的任一者形成,例如:包含同步DRAM(SDRAM)的动态随机存取存储单元(DRAM)、磁阻式RAM(MRAM)、电阻式RAM(RRAM),或其它类型的存储单元装置。在各种实例中,视频数据存储单元可与解码器420的其它组件一起集成在芯片上,或相对于那些组件设置在芯片外。
网络实体423可例如为服务器、MANE、视频编辑器/剪接器,或用于实施上文所描述的技术中的一或多者的其它此装置。网络实体423可包括或可不包括编码器,例如编码器410。在网络实体423将经编码视频位流发送到解码器420之前,网络实体423可实施本申请中描述的技术中的部分。在一些视频解码系统中,网络实体423和解码器420可为单独装置的部分,而在其它情况下,相对于网络实体423描述的功能性可由包括解码器420的相同装置执行。在一些情况下,网络实体423可为图4A的存储装置44的实例。
解码器420的熵解码单元4201对位流进行熵解码以产生经量化的系数和一些语法元素。熵解码单元4201将语法元素转发到预测处理单元4202。解码器420可接收在视频条带层级和/或图像块层级处的语法元素。
当视频条带被解码为经帧内解码(I)条带时,预测处理单元4202的帧内预测单元4202a可基于发信号通知的帧内预测模式和来自当前帧或图像的先前经解码块的数据而产生当前视频条带的图像块的匹配块。当视频条带被解码为经帧间解码(即,B或P)条带时,预测处理单元4202的帧间预测单元4202b可基于从熵解码单元4201接收到的语法元素,确定用于对当前视频条带的当前图像块进行解码的帧间预测模式,基于确定的帧间预测模式,对所述当前图像块进行解码(例如执行帧间预测)。具体的,帧间预测单元4202b可确定是否对当前视频条带的当前图像块采用新的帧间预测模式进行预测,如果语法元素指示采用新的帧间预测模式来对当前图像块进行预测,基于新的帧间预测模式(例如通过语法元素指定的一种新的帧间预测模式或默认的一种新的帧间预测模式)预测当前视频条带的当前图像块或当前图像块的子块的运动信息,从而通过运动补偿过程使用预测出的当前图像块或当前图像块的子块的运动信息来获取或生成当前图像块或当前图像块的子块的匹配块。
这里的运动信息可以包括参考图像信息和运动矢量,其中参考图像信息可以包括但不限于单向/双向预测信息,参考图像列表号和参考图像列表对应的参考图像索引。对于帧间预测,可从参考图像列表中的一者内的参考图像中的一者产生匹配块。
在本申请实施例中,参考区域所占的区域在图像块所位于的待处理区域所占的区域内。因此,在对视频进行解码时,不需要对当前图像帧的参考帧中的全部区域进行解码。仅仅对同位置的区域进行解码即可,无需做全量解码,可以降级计算开销。
解码器420可基于存储在存储单元4206中的参考图像来建构参考图像列表,即列表0和列表1。当前图像的参考帧索引可包含于参考帧列表0和列表1中的一或多者中。在一些实例中,可以是编码器410发信号通知指示是否采用新的帧间预测模式来解码特定块的特定语法元素,或者,也可以是发信号通知指示是否采用新的帧间预测模式,以及指示具体采用哪一种新的帧间预测模式来解码特定块的特定语法元素。应当理解的是,这里的帧间预测单元4202b执行运动补偿过程。
反量化单元4203将在位流中提供且由熵解码单元4201解码的经量化变换系数逆量化,即去量化。逆量化过程可包括:使用由编码器410针对视频条带中的每个图像块计算的量化参数来确定应施加的量化程度以及同样地确定应施加的逆量化程度。反变换单元4204将逆变换应用于变换系数,例如逆DCT、逆整数变换或概念上类似的逆变换过程,以便产生像素域中的残差块。
在帧间预测单元4202b产生用于当前图像块或当前图像块的子块的匹配块之后,解码器420通过将来自反变换单元4204的残差块与由帧间预测单元4202b产生的对应匹配块求和以得到重建的块,即经解码图像块。求和单元211表示执行此求和操作的组件。在需要时,还可使用环路滤波单元(在解码环路中或在解码环路之后)来使像素转变平滑或者以其它方式改进视频质量。滤波单元4205可以表示一或多个环路滤波单元,例如去块滤波单元、自适应环路滤波单元(ALF)以及样本自适应偏移(SAO)滤波单元。
尽管在图4C中将滤波单元4205示出为环路内滤波单元,但在其它实现方式中,可将滤波单元4205实施为环路后滤波单元。在一种示例下,滤波单元4205适用于重建块以减小块失真,并且该结果作为经解码视频流输出。并且,还可以将给定帧或图像中的经解码图像块存储在经存储单元4206中,经存储单元4206存储用于后续运动补偿的参考图像。经存储单元4206可为存储单元的一部分,其还可以存储经解码视频,以供稍后在显示装置(例如图4A的显示装置422)上呈现,或可与此类存储单元分开。
应当理解的是,解码器420的其它结构变化可用于解码经编码视频位流。例如,解码器420可以不经滤波单元4205处理而生成输出视频流;或者,对于某些图像块或者图像帧,解码器420的熵解码单元4201没有解码出经量化的系数,相应地不需要经反量化单元4203和反变换单元4204处理。环路滤波单元是可选的;以及针对无损压缩的情况下,反量化单元4203和反变换单元4204是可选的。应当理解的是,根据不同的应用场景,帧间预测单元和帧内预测单元可以是被选择性的启用,而在本案中,帧间预测单元被启用。
请参见图5,图5是本申请实施例提供的一种对视频局部叠加信息的场景示意图。从图5可以看出,原始视频的图像序列中的任意一帧可以是由单个slice组成。为了提高编解码速度,在原始视频的预处理阶段,其中,预处理阶段可以是对原始视频的编码阶段。编码器可以对原始视频的图像序列中的任意一帧进行分割处理,将当前编码帧切割为多个slice区域,并对每个slice进行独立化处理。其中,根据业务场景的需求,切割方式和切割数量可以多样,比如说1大1小,N个均匀,等等。举例来说,在视频彩铃业务中,一般在图像的最下方进行叠加处理,因此可以使用一大一小的切割方式。
从图5可以看出,当前编码帧501是单slice图像,当前编码帧501被切割为6个均等大小的slice区域,包含slice1、slice2、slice3、slice4、slice5和slice6。其中,每个slice区域包含多个图像块。对于待处理区域(也即当前编码slice区域),编码器可以根据slice区域在帧间运动过程中检查图像块的运动矢量是否越界,来实现约束下的图像块运动估计。
举例来说,当前编码帧501的slice6区域为待处理区域,在运动估计过程中,根据运动估计过程中查找到的运动矢量可以计算得到当前编码帧501的slice6区域中图像块的匹配块。可以理解的是,匹配块是参考帧502上的图像块,可以按照同样的切割方式对参考帧进行切割,因此参考帧502也包含同样大小的6个slice区域。因为,查找到的运动矢量可以有多个,所以图像块在参考帧502上的匹配块也可以有多个。编码器可以从多个匹配块中选择在参考帧502的slice6区域内的匹配块作为图像块的匹配块。编码器可以生成参考索引,该参考索引包含参考帧502的slice6区域中的匹配块,以及指示当前图像块和匹配块之间的运动信息。
对原始视频预处理完成后,可以将上述内容存储到存储装置中,比如说图4A所示的存储装置44。
转码播放平台可以从存储装置中读取进行多slice分割后的视频文件,根据业务需求针对少数slice进行解码、叠加文字/图片、编码处理,其他的slice进行拷贝处理。举例来说,从图5可以看出,若对彩铃业务中的视频的最下方(比如说slice6区域)叠加内容,由于在预处理阶段,当前编码帧的slice6区域中的图像块的匹配块位于参考帧502中的slice6区域中。因此,转码播放平台可以针对slice6区域进行单独处理,对slice6区域进行解码-叠加内容-转码,对其他不需要叠加内容的slice区域(即slice1区域、slice2区域、slice3区域、slice4区域和slice5区域)进行拷贝处理,然后在显示装置上将叠加内容的视频显示出来。这样,不需要完全解码参考帧上的所有slice区域,也可以对当前解码帧上的slice6区域正确解码,从而达到高并发快速局部解码的目的。
请参见图6,图6是本申请实施例提供的一种视频编码方法的流程示意图。
在本申请实施例中,正在进行编码处理的图像块称为目标图像块,目标图像块所在的图像称为当前帧。所以,本申请提及的视频编码方法,具体可以是对视频所包括的一系列图像的编码方法。该方法包括但不限于如下步骤:
步骤S601,对原始视频的图像序列中的图像帧进行分割处理,得到待处理区域。
可以理解的是,视频包括一系列图像(picture),一个图像称为一帧(frame)。为了提高编码和解码速度,图像被分割为至少一个条带(slice),每个条带又被划分为图像块。视频编码或视频解码以图像块为单位。例如,可以从图像的左上角位置开始从左到右、从上到下、一行一行进行编码处理和解码处理。上述待处理区域具体可以是slice区域,待处理区域可以包含一个或多个图像块。图像块可以为视频编解码标准H.264中的宏块,宏块被分为的子块,也可以是HEVC标准中的编码单元(coding unit,CU)。本申请实施例对此不作具体限制。
请参见图7A,图7A是本申请实施例提供的一种不同类型的图像块的示意图。从图7A可以看出,在预处理阶段,编码器可以将原始视频的图像帧701进行N等分分割或者一大一小分割,分割为待处理区域702。具体的分割方式和分割数量可以根据业务需求来确定,本申请实施例对此不作具体限制。而每个待处理区域702可以被分割为用于编码的图像块7021,图像块7021可以是任意大小的块,包括但不限于16×16像素、8×16像素和16×8像素和8×8像素等。图像块7021可以被进一步分给为更小的块,包括但不限于4×8像素、8×4像素和4×4像素等。
引入i8和i4这两个变量来表示图像块的类型,i8作用于8×16像素和16×8像素和8×8像素这三种类型,i8作用于4×8像素、8×4像素和4×4像素这三种类型。图7A中8×16像素和16×8像素和8×8像素的分块上各块的数字代表i8的值,表示了块在当前图像块上属于第几个块。同理,4×8像素、8×4像素和4×4像素的块上各块的数字代表i4值,表示了块在当前图像块上属于第几个块。
步骤S602,确定目标图像块在参考帧中的参考区域。
可以理解的是,由于视频中连续的若干帧图像之间存在较强的时间相关性。也就是说,相邻帧之间包含了很多冗余信息。所以在进行视频编码时,常利用各个帧之间的时间相关性来减少帧间的冗余,达到压缩数据的目的。编码阶段,编码器在对当前帧中的当前图像块(也即本申请实施例中的目标图像块)进行编码时,首先从视频图像已编码的帧中任意选取一个以上参考帧,并从参考帧中确定目标图像块的参考区域。目前主要采用运动估计的技术对视频进行编码,来提高压缩比。
请参见图7B,图7B是本申请实施例提供的一种基于块的运动估计的示意图。从图7B可以看出,基于块的运动估计的基本思想是将图像序列中的每一帧分为许多互不重叠的图像块7021,这些图像块7021的大小往往固定,并认为图像块7021内所有像素的位移量都相同。因此,对当前图像帧701中的每一图像块7021来说,可以到参考帧704某一给定搜索区域703内根据一定的匹配规则找出与当前图像块7021最匹配的块,即匹配块7041。由匹配块7041与当前图像块7021的相对位置计算出运动位移,所得到的运动位移即为当前图像块7021的运动矢量。假设当前图像块7021左上角的坐标为(x1、y1),当前图像块7021的匹配块7041的左上角的坐标为(x2,y2),则当前图像块7021的运动矢量可以是(mv_x=x1-x2,mv_y=y1-y2)。
请参见图7C,图7C是本申请实施例提供的一种为图像块确定匹配块的示意图。从图7C可以看出,图像帧701被分割为三个待处理区域,分别第一待处理区域、第二待处理区域和第三待处理区域。
其中,目标图像块7011位于第二待处理区域中。在基于块的运动估计过程中,根据运动估计过程中查找到的运动矢量可以在参考帧704中为图像帧701中的目标图像块7011找出多个匹配块,分别是第一匹配块7041、第二匹配块7042和第三匹配块7043。然后,编码器可以根据目标图像块7011的位置以及第一运动矢量、第二运动矢量和第三运动矢量分别确定第一匹配块7041、第二匹配块7042和第三匹配块7043的位置。最后,编码器可以根据上述匹配块的位置找出与目标图像块7011在同一区域内的块,将与目标图像块7011在同于区域范围内的块作为目标图像块7011的匹配块。
从图7C可以看出,根据第一匹配块7041的位置可以确定第一匹配块7041在目标图像块7011所属的第二待处理区域的范围内,因此,编码器可以保存第一运动矢量,用于后续对其进行解码。
需要说明的是,匹配块所占的区域可以认为在本申请实施例所提及的参考区域所占的区域内。
在一种可能的实施方式中,为了确定目标图像块的参考区域,编码器需要计算待处理区域所占的区域范围,在目标图像块的运动矢量所指示的区域不在待处理区域的情况下,编码器对目标图像进行约束处理,得到目标图像块的约束运动矢量。而上述约束矢量所指示的区域在待处理区域所占的区域内,所以编码器可以根据约束矢量从图像帧对应的参考帧中确定目标图像块的参考区域。
请参见图8A,图8A是本申请实施例提供的一种计算待处理区域的范围的流程示意图。上述流程包括但不限于如下步骤:
步骤S801:计算待处理区域中最后一个图像块的序号(last_mb_n)。
请参见图8B,图8B是本申请实施例提供的一种图像帧的示意图。图8B所示的图像帧801是原始视频的图像序列中的任意一帧,从图8B可以看出,图像帧801包含60个图像块,一行有10个图像块,一列有6个图像块。对图像帧801进行分割处理,可以得到三个待处理区域,分别是slice1区域、slice2区域和slice3区域,每个slice区域可以包含一个或多个图像块。图像帧801的宽度可以用mb_width表示,图像帧801的高度可以用mb_height表示,单位为图像块的个数。
用first_mb_n表示第n个slice中第一个图像块的序号,用last_mb_n表示第n个slice中最后一个宏块的序号,其中,n为小于等于x的整数值,x为待处理区域的个数。
若目标图像块所在的待处理区域(slice_n)属于图像帧801中的最后一个待处理区域(slice_last),则该待处理区域的最后一个图像块的序号表示为last_mb_last。因为图8B中待处理区域的个数(x)为3个,因此上述序号可以表示为last_mb_3,其值可以为(mb_height*mb_width)-1。
若目标图像块所在的待处理区域(slice_n)不属于图像帧801中的最后一个待处理区域(slice_last),属于第l个待处理区域(slice_l),则可以根据第l+1待处理区域中的第一个图像块的序号first_mb_(l+1)得到最后一个图像块的序号last_mb_l为first_mb_(l+1)-1。其中,l的取值为小于x正整数。
步骤S802:计算待处理区域的范围信息。
根据目标图像块所属的待处理需要可以确定待处理区域中第一个图像块的序号和最后一个图像块的序号,因此可以计算目标图像块所属的待处理区域的行数,以及第一行和最后一行是否满行等信息。
若待处理区域(slice_n)中的第一个图像块的序号(first_mb_n)无法被mb_width整除,则表明待处理区域中第一行的图像块不满行,因此,设flag_first=1;若待处理区域中的第一个图像块可以被mb_width整除,则表明待处理区域中第一行的图像块满行,因此,设flag_first=0。
若待处理区域中(slice_n)的最后一个图像块的后一个图像块的序号((last_mb_x)+1)无法被mb_width整除,则表明待处理区域中最后一行的图像块不满行,因此,设flag_end=1;若待处理区域中的最后一个图像块可以被mb_width整除,则表明待处理区域中最后一行的图像块满行,因此,设flag_end=0。
若first_mb_n除以mb_width的整数部分与last_mb_n除以mb_width的整数部分相同,表明待处理区域包含一行,则待处理区域的行数line_size等于1。
若first_mb_n除以mb_width的整数部分与last_mb_n除以mb_width的整数部分不相同,表明待处理区域包含多行,则行数line_size为last_mb_x除以mb_width的整数部分减去first_mb_x除以mb_width的整数部分再加1。
因此,编码器根据上述信息,即待处理区域(slice_n)中第一个图像块的序号first_mb_n,最后一个图像块的序号last_mb_n、行数line_size、第一行是否满行flag_first、和最后一行是否满行flag_last可以计算待处理区域的范围。
请参见图8C,图8C是本申请实施例提供的一种图像块的坐标示意图。从图8C可以看出,mb_width和mb_height是图像帧801的宽度和长度。因为图像块是编码和解码的基本单元,所以可以以图像帧801的左上角为原点(0,0)建立以图像块为单位的坐标系x-y。因此,坐标的基本单位是图像块。
对于图像帧801中的任意一个图像块8011来说,图像块8011的横坐标可以是图像块8011的左上角到y轴的距离mb_x,图像块8011的纵坐标可以是图像块8011的左上角到x轴的距离mb_y。对于子块8012来说,对子块8012所属的图像块进一步分割可以得到子块8012,当确定子块8012的类型(比如说4×4)和子块8012所属的图像块的坐标(mb_x’,mb_y’)后,可以确定子块8012的坐标。需要说明的是,一般情况下,图像帧中的图像块的坐标都是从0开始的。
因此,根据图7A、图7B和图8C可以分别确定目标图像块的类型(mb_type)、运动矢量(mv_x,mv_y)和坐标(mb_x,mb_y)。编码器根据目标图像块的类型(mb_type)、运动矢量(mv_x,mv_y)和坐标(mb_x,mb_y)可以计算得到目标图像块在参考帧中的参考区域(也即,目标图像块的运动矢量所指示的区域)。接下来,编码器可以根据计算得到的目标图像块在参考帧中所参考的区域,以及计算得到的待处理区域的范围来判断参考区域是否在待处理区域范围内。
举例来说,假设目标图像块的类型(mb_type)为i8=2,i4=1,那么可以得到目标图像块左上角的坐标(mb_x+4,mb_y+8)。根据运动估计过程中得到的运动矢量(mv_x,mv_y)以及目标图像块的类型可以计算得到匹配块的左上角坐标(mb_x+4+mv_x,mb_y+8+mv_y),右上角坐标(mb_x+4+mv_x+4,mb_y+8+mv_y),左下角坐标(mb_x+4+mv_x,mb_y+8+mv_y+8)和右下角坐标(mb_x+4+mv_x+4,mb_y+8+mv_y+4)。
可以理解的是,如图7B所示,在运动估计过程中可以得到多个运动矢量,所以目标图像块存在多个匹配块。若存在匹配块的四个角的坐标在待处理区域内部,说明匹配块所在的区域在目标图像块所属的待处理区域内。若不存在匹配块的四个角的坐标在待处理区域内部,说明匹配块所在的区域不在目标图像块所属的待处理区域内,也即目标图像块的运动矢量所指示的区域不在目标图像块所属的待处理区域所占的区域内。
那么,在一种可能的实施方式中,编码器可以对目标图像块进行约束处理,得到目标图像块的约束运动矢量,其中,约束运动矢量所指示的区域在目标图像块所属的待处理区域所占的去医院内。然后,编码器可以根据约束运动矢量从图像帧对应的参考帧中确定目标图像块的参考区域。
可以理解的是,视频通常被划分为许多个图像组(group of picture,GOP),GOP是一组连续的图像。每组的第一帧在编码的时候不使用运动估计,这种帧被称为帧内编码帧(intra frame)或者I帧。每组中的其他帧使用帧间编码帧(inter frame),使用过去的帧来预测当前帧称为前向预测编码帧或P帧。使用过去的帧和未来的帧来预测当前帧称为双向预测内插编码帧或B帧。因此,在帧间运动估计过程中,图像块在其参考帧之间查找相似区域,使用运动矢量来指示图像块在其参考帧之间相似区域之间的坐标偏移量。
在一些可能的方式中,编码器可以根据目标图像块的相邻块的运动矢量来计算预测运动矢量,预测运动矢量所指向的区域与目标图像块无像素残差,使得变换系数均被量化为0,则目标图像块的类型为skip宏块。
可以理解的是,H.264/AVC编解码标准采用skip宏块类型,利用时域和空域相关性来节省码流。因此,若目标图像块的相邻已编码图像块的运动矢量,在目标图像块中所指向的区域与目标图像块无像是残差,则无需对目标图像块的像素信息进行编码,只需要根据周围已编码图像块的运动矢量及参照帧来恢复数据。
可以理解的是,现有技术在时间维度上都是需要参考前后帧进行编码和解码的,因此存在时域依赖,而影响时域依赖存在以下原因:
1)skip宏块预测运动矢量跨区域像素依赖。
对于目标图像块的类型是skip宏块来说,根据skip宏块相邻图像块可以得到运动矢量,存在所得到的运动矢量所指向的参考区域不在skip宏块所属的待处理区域内。
2)图像块运动矢量跨区域像素依赖。
对于目标图像块的类型不是skip宏块来说,根据目标图像块的相邻图像块可以得到运动搜索起点,存在后续搜索过程中所指向的参考区域不在目标图像块所属的待处理区域内。
3)待处理区域边界子像素插值依赖。
在编解码过程中,为了提高编解码精度,可以将运动矢量的精度提升到1/4像素大小,因此,采用子像素插值的方法来确定更精细的参考区域。但是当目标图像块的运动矢量所指向的区域处于待处理区域的边界时,可能存在子像素搜索参考的子像素依赖于非待处理区域的像素的风险。
需要说明的是,插值是一种在计算像素时可以增加有效像素的成像方式。插值像素是将已经形成的实际像素依照一定的运动方式进行计算,产生新的像素点,并将其插入本来像素邻近的空隙处,从而实现增加了像素总量和增大了像素密度的目的。
请参见图9A,图9A是本申请实施例提供的一种子像素插值的示意图。利用已知的离散空间点插值得到的连续空间极值点的方法叫做子像素插值,从图9A可以看出,1/2像素cc由整像素E、F、G、H、I、J计算得到;1/2像素ff由整像素A、C、G、M、Q、S计算得到;1/2像素gg由1/2像素dd、ee、ff、hh、ii、jj计算得到;1/4像素a由整像素G和1/2像素cc计算得到;1/4像素c由整像素G和1/2像素ff计算得到;1/4像素d由1/2像素cc和1/2像素ff计算得到;1/4像素f由1/2像素gg和整像素H计算得到;1/4像素k由1/2像素ff和1/2像素kk计算得到;1/4像素m由1/2像素kk和1/2像素hh计算得到。
由此可知,若目标图像块的运动矢量所指向的区域处于待处理区域的边界时,比如说指向1/2像素ff时,由于1/2像素ff由整像素A、C、G、M、Q、S计算得到,而整像素A和整像素C不在待处理区域内,所以存在子像素搜索参考的子像素依赖于非待处理区域的像素的风险。
基于上述分析,为了解决时域依赖问题,使得目标图像块的参考区域的范围在目标图像块所属的待处理区域的范围内,需要对目标图像块进行约束处理。
请参见图9B,图9B是本申请实施例提供的一种对目标图像块进行约束处理的流程示意图。从图9B可以看出,编码器需要判断目标图像块是否为skip类型宏块,编码器可以根据目标图像块的相邻块的运动矢量,分别计算相邻块的运动矢量所指示的区域与目标图像块之间的像素残差,若在某个运动矢量下,像素残差为0,说明该目标图像块是skip宏块。
编码器可以根据计算得到的该运动矢量所指示的参考区域,以及计算得到的待处理区域的范围来判断参考的区域是否在待处理区域范围内。
若像素残差为0所对应的相邻块的运动矢量所指示的区域在待处理区域内,则可以将目标图像块作为skip类型编码。
若像素残差为0所对应的相邻块的运动矢量所指示的区域不在待处理区域内,则编码器对目标图像块不作为skip类型,进行约束处理,从而可以得到目标图像块的运动矢量。
从图9B可以看出,约束处理包括:整像素运动估计和子像素运动估计。
编码器首先根据目标图像块的相邻块所对应的运动矢量作为起点对目标图像块进行整像素运动估计,得到整像素运动搜索终点。然后,编码器可以根据整像素运动搜索终点对目标图像块进行子像素运动估计,得到目标图像块的运动矢量。
1)整像素运动估计
整像素运动估计的目的是为目标图像块在待处理区域的范围内找到最佳匹配项,使得目标图像块的参考区域的范围在待处理区域的范围内。
编码器可以根据目标图像块的相邻块所对应的运动矢量来判断上述运动矢量所指向的参考区域是否在目标图像块所属的待处理区域内。
请参见图10A,图10A是本申请实施例提供的一种不同大小的相邻块的示意图。
从图10A中的(a)可以看出,目标图像块E的相邻块(块A、块B和块C)与目标图像块E的大小相同,都是16×16像素。对于目标图像块E的运动矢量可以用块大小相同的相邻块A、B和C来进行预测。
从图10A中的(b)可以看出,目标图像块E的相邻块(块A、块B和块C)与目标图像块E的大小相同,块A是8×4像素,块B是4×8像素,块C是16×8像素。对于目标图像块E的运动矢量可以用块大小不相同的相邻块A、B和C来进行预测,在处理时,可以将目标图像块E的运动矢量,取成块A、块B和块C的运动矢量的中值。
若存在目标图像块的相邻块的运动矢量所指示的参考区域在目标图像块所属的待处理区域内,则计算码率失真代价,选取码率失真代价最小的运动矢量作为整像素运动搜索终点。可以理解的是,可以存在多个运动矢量所指示的参考区域在啊目标图像块所属的待处理区域内,所以计算得到的码率失真代价也存在多个。
若不存在目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的范围内,则编码器可以根据待处理区域的范围信息和目标图像块的位置信息,将目标图像块的相邻块所对应的运行矢量进行等比例缩放得到缩放后的运行矢量,其中,缩放后的运动矢量所指示的区域在待处理区域的范围内。
请参见图10B,图10B是本申请实施例提供的一种运动矢量进行缩放的示意图。
从图10B中的(a)可以看出,运动矢量1001a是目标图像块的相邻块A的运动矢量,可以看出,当编码器将运动矢量1001a平移到目标图像块的左上角处时,得到目标图像块的运动矢量1002a。
而运动矢量1002a所指示的参考区域1003a的范围不在待处理区域的范围内,从图10B中的(b)可以看出,编码器可以根据待处理区域的范围信息和目标图像块的位置信息,将目标图像块的相邻块A的运动矢量进行等比例缩放,使得缩放后的运动矢量1002b所指示的参考区域1003b在待处理区域的范围内。
可以理解的是,目标图像块的相邻块存在多个,图10B是以相邻块A为例来举例说明的,根据对相邻块A的同样处理方式可以对相邻块B和相邻块C进行处理,从而可以得到多个缩放后的运动矢量的第二代码编码。然后,编码器可以根据第二码率失真代价中最小的第二码率失真代价所对应的运动矢量确定整像素运动搜索终点,并保存第二码率失真代价中最小的第二码率失真代价所对应的运动矢量。同时,编码器计算运动矢量为(0,0)情况下的码率失真代价,并与缩放后得到的运动矢量的第二码率失真代价进行比较,保存上述码率失真代价最小的运动矢量作为整像素运动搜索终点。
在目标图像块的运动矢量所指示的区域在待处理区域的范围内的情况下,编码器可以根据整像素运动搜索终点对目标图像块进行子像素运动估计,得到目标图像块的运动矢量。
2)子像素运动估计
子像素运动估计是对整像素运动估计的结果在1/2像素和1/4像素精度上进行优化,得到码率失真代价更小的子像素运动矢量,从而提高编码效率。本申请中采用子像素运动估计的目的,是根据子像素插值计算关系,计算目标图像块所参考的区域在待处理区域边界附近时的可用区域,得到更匹配的参考区域。从而,编码器可以根据计算得到的目标图像块所参考的区域,以及计算得到的待处理区域的范围来判断参考的区域是否在待处理区域范围内。
编码器可以根据子像素插值计算关系计算子像素参考区域,请参见图11A,图11A是本申请实施例提供的一种子像素运动估计过程的示意图,从图11A可以看出,编码器先对整像素运动估计得到的最优整像素运动矢量对应的位置(D点)周围的8个1/2像素位置进行1/2像素插值,然后计算插值得到的A点周围的这8个1/2像素点的码率失真代价和A点的码率失真代价,找到码率失真代价最小的1/2像素点作为最优的1/2像素精度运动矢量的位置(E点)。然后,在最优的1/2像素精度运动矢量对应的位置(E点)周围的8个1/4像素位置进行1/4像素插值,然后计算插值得到的E点周围的8个1/4像素点的码率失真代价和E点的码率失真代价,找到码率失真代价最小的1/4像素点作为最佳的1/4像素精度运动矢量的位置(F点)。然后,比较最优的1/2像素精度运动矢量和最优的1/4像素精度运动矢量的码率失真代价,选择码率失真代价最小的作为最优子像素运动矢量。因此,根据图11A可以计算得到子像素参考区域。
请参见图11B,图11B是本申请实施例提供的一种子像素参考区域的示意图,从图11B可以看出,当提高运动矢量精度后,子像素参考区域是远离待处理区域边界的。因此,当目标图像块的运动矢量所指向的区域在子像素参考区域边界时,不存在子像素搜索参考的子像素依赖待处理区域边界的
编码器可以判断在整像素运动估计过程中得到的整像素运动矢量所指示的参考区域是否在子像素参考区域内,若整像素运动估计过程中得到整像素运动终点所指示的参考区域不在子像素参考区域内,则不进行子像素运动估计,保存整像素运动矢量。
若整像素运动估计过程中得到的整像素运动搜索终点对应的运动矢量所指示的区域在子像素参考区域内,则按照图11A所示的方法对目标图像块进行子像素运动估计。在子像素运动估计过程中,对每一步得到的运动矢量进行判断,判断每一步得到的运动矢量所指示的区域是否在子像素参考区域内。然后,将运动矢量所指示的区域在子像素参考区域内的运动矢量作为子像素运动矢量。接下来,计算子像素运动矢量的第三码率失真代价。最后,将第三码率失真代价中最小的码率失真代价所对应的子像素运动矢量作为目标图像块的运动矢量,并保存该运动矢量。
步骤S603,根据参考区域对目标图像块进行编码。
具体地,运动估计完成后,编码器可以得到目标图像块的帧间最小码率失真代价的编码模式(包括指向参考区域的运动矢量,参考区域所在参考帧的指示信息,等等),然后计算将目标图像块作为帧内图像块的最小码率失真代价的编码模式。最后,选择帧内编码和帧间编码中码率失真代价最小的编码模式进行编码。最后,编码器可以将编码模式(包括指向参考区域的运动矢量,参考区域所在参考帧的指示信息,等等)和分割信息(比如说将图像帧)编入码流,向解码端(比如说图4A所示的目的地装置42)发送。
需要说明的是,由于待处理区域间的时域独立会造成目标图像块的可参考区域的缩小,所以当出现跨区域运动时,帧间运动在当前的待处理区域内难以找到匹配的参考区域,码率失真代价往往大于帧内模式。因此,编码器可以选择码率失真代价最小的帧内模式进行编码,从而保证视频的质量。
还需要说明的是,在定码率场景下,通过2pass编码策略可以使得编码器具有更好的分配码率,保证视频的质量。
请参见图12,图12是本申请实施例提供的一种视频解码的流程示意图,在本申请实施例中,正在进行解码处理的图像块称为目标图像块,目标图像块所在的图像称为当前帧。所以,本申请提及的视频解码方法,具体可以是对视频所包括的一系列图像的解码方法。该方法包括但不限于如下步骤:
步骤S1201:解析码流得到目标图像块在参考帧中的参考区域;
具体地,解码器在收到来自编码器的码流之后,解码该码流,可以得到目标图像块在参考帧中的参考区域。
其中,目标图像块为待处理区域所包含的一个或多个图像块中的任意一个,待处理区域为对原始视频的图像序列中的任意图像帧进行分割处理后得到,并且,待处理区域为需要叠加信息的区域。参考帧为对图像帧进行编码时需要参考的帧,而参考区域的范围在目标图像块所属的待处理区域的范围内。
步骤S1202:根据参考区域对目标图像块进行预测。
具体地,由于分割处理将图像帧分割为多个处理区域,而对待处理区域(需要叠加信息的区域)中的图像块进行编码时所参考的参考帧中区域在目标图像块所属的待处理区域的范围内。因此,在帧间预测过程中,解码器不需要解码参考帧中的其他区域,可以在解码参考帧中的参考区域的情况下,对目标图像块进行预测。
下面介绍本申请实施例的应用场景。
针对视频彩铃业务下的高并发实时转码,可以提前对原始视频进行多slice分割预处理,分割后得到的slice可以实现完全隔离。在实时播放视频彩铃时,根据在视频彩铃上的叠加位置计算所需解码的slice,由于slice分割已经实现完全隔离,可以对少数slice进行独立处理,大概处理步骤可以包括解码、叠加、编码、网络抽象层单元(networkabstraction layer unit,NALU)封装发送处理。而其他slice保持不变,可以降低实时计算开销,提升性能。
以典型的彩铃+广告业务为例,叠加信息的部分小于图像的10%,假设对1/10的slice区域进行转码叠加操作,则计算开销是全解码全编码的1/10。
请参见图13,图13是本申请实施例提供的一种在视频上叠加信息的场景示意图。从图13可以看出,原始视频的尺寸是480×640,而要叠加信息的部分为原始视频的1/10,也即叠加信息的区域的尺寸是480×64。可以理解的是,因为需要叠加信息的区域为原始视频的1/10,所以在根据图6所示的视频编码方法对原始视频的图像序列中的任意图像帧进行编码时,对图像帧进行分割处理的过程中,可以针对该需要叠加信息的区域进行分割,得到待处理区域,比如说区域slice1和区域slice2。然后,将对视频的分割信息保存到补充增强信息(Supplemental Enhancement Information,SEI)中并传送到H.264码流中。其中,H.264码流包括slice1码流和第一字段信息(first_mb_in_slice=1),slice2码流和第二字段信息(first_mb_in_slice=x),视频的分割信息,等等。
从图13可以看出,在对视频彩铃的转码阶段,解码器通过解码H.264码流(中的SEI信息可以获取对视频的分割信息。然后,根据业务需求(比如视频的哪些部分需要叠加信息)来指定需要解码的slice(比如说图13所示的slice2)得到关于slice2的原始YUV数据。由于经过slice分割处理,slice间时域独立,根据图12所示的视频解码方法对slice2进行解码时无需全解码参考帧上所有的slice即可对slice2进行解码。其他不需要解码的slice(不需要叠加信息的部分,比如说图13所示的slice1)以网络抽象层单元(networkabstraction layer unit,NALU)码流的形式进行缓存中传输。
编码器从码流中复用SPS和PPS等编码信息,将解码slice2得到的YUV数据进行叠加处理后作为编码器的输入。
此时,编码器中进行slice分割(slice数目为1),编码的图像数据为叠加后的YUV数据,保证编码时帧类型与原始码流中该slice所属帧类型一致。同时,修改输出slice类型NALU中的第二字段信息(比如说first_mb_in_slice),使得与原码流中slice1所属NALU的第二字段信息(比如说first_mb_in_slice)一致。若原码流中first_mb_in_slice=x,则编码器输出编码后的NALU,过滤SPS、PPS和SEI类型的NALU,将slice类型的NALU替换为原码流中对应slice类型的NALU。
按照之前单CPU核的2P20C服务器支持3路左右的全解码和全编码,使用slice可以达到30路,整机性能可达到1200路。实现不依赖专有硬件的实时高并发转码,单个服务器的支持可以大于1000路转码。
可以看出,基于slice时域独立的方法,可以实现slice的局部编解码,不需要完全解码参考帧的所有slice即可正常进行slice的局部解码,不需要对整个帧进行编码便可实现叠加信息(文字、图片、视频),从而达到高并发快速局部编解码的目的,而且改进集中在离线处理端与在线处理端,无需对客户端设备软件进行修改。
上面说明了本申请实施例的方法,下面提供本申请实施例的装置。
图14是本申请实施例提供的一种译码设备的结构示意图,为本申请实施例的编码设备或解码设备(简称为译码设备140)的一种实现方式的示意性框图。其中,译码设备140可以包括处理器1410、存储器1430和总线系统1450。其中,处理器和存储器通过总线系统相连,该存储器用于存储指令,该处理器用于执行该存储器存储的指令。编码设备的存储器存储程序代码,且处理器可以调用存储器中存储的程序代码执行本申请描述的各种视频编码或解码方法,尤其是在各种新的帧间预测模式下的视频编码或解码方法,以及在各种新的帧间预测模式下预测运动信息的方法。为避免重复,这里不再详细描述。
在本申请实施例中,该处理器1410可以是中央处理单元(Central ProcessingUnit,简称为“CPU”),该处理器1410还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器1430可以包括只读存储器(ROM)设备或者随机存取存储器(RAM)设备。任何其他适宜类型的存储设备也可以用作存储器1430。存储器1430可以包括由处理器1410使用总线系统1450访问的代码和数据1431。存储器1430可以进一步包括操作系统1433和应用程序1435,该应用程序1435包括允许处理器1410执行本申请描述的视频编码或解码方法(尤其是本申请描述的编码方法或解码方法)的至少一个程序。例如,应用程序1435可以包括应用1至N,其进一步包括执行在本申请描述的视频编码或解码方法的视频编码或解码应用(简称视频译码应用)。
该总线系统1450除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统1450。
可选的,译码设备140还可以包括一个或多个输出设备,诸如显示器1470。在一个示例中,显示器1470可以是触感显示器,其将显示器与可操作地感测触摸输入的触感单元合并。显示器1470可以经由总线系统1450连接到处理器1410。
图15是本申请实施例提供的一种视频译码系统的结构示意图,是根据一示例性实施例的包含图4B的编码器410和/或图4B的解码器420的视频译码系统1500的实例的说明图。视频译码系统1500可以实现本申请的各种技术的组合。在所说明的实施方式中,视频译码系统1500可以包含成像设备1501、视频编码器410、视频解码器420(和/或藉由处理单元1506的逻辑电路1507实施的视频编码器)、天线1502、一个或多个处理器1503、一个或多个存储器1504和/或显示设备1505。
如图所示,成像设备1501、天线1502、处理单元1506、逻辑电路1507、视频编码器410、视频解码器420、处理器1503、存储器1504和/或显示设备1505能够互相通信。如所论述,虽然用视频编码器410和视频解码器420绘示视频译码系统1500,但在不同实例中,视频译码系统1500可以只包含视频编码器410或只包含视频解码器420。
在一些实例中,如图所示,视频译码系统1500可以包含天线1502。例如,天线1502可以用于传输或接收视频数据的经编码比特流。另外,在一些实例中,视频译码系统1500可以包含显示设备1505。显示设备1505可以用于呈现视频数据。在一些实例中,如图所示,逻辑电路1507可以通过处理单元1506实施。处理单元1506可以包含专用集成电路(application-specific integrated circuit,ASIC)逻辑、图形处理器、通用处理器等。视频译码系统1500也可以包含可选处理器1503,该可选处理器1503类似地可以包含专用集成电路(application-specific integrated circuit,ASIC)逻辑、图形处理器、通用处理器等。在一些实例中,逻辑电路1507可以通过硬件实施,如视频编码专用硬件等,处理器1503可以通过通用软件、操作系统等实施。另外,存储器1504可以是任何类型的存储器,例如易失性存储器(例如,静态随机存取存储器(Static Random Access Memory,SRAM)、动态随机存储器(Dynamic Random Access Memory,DRAM)等)或非易失性存储器(例如,闪存等)等。在非限制性实例中,存储器1504可以由超速缓存内存实施。在一些实例中,逻辑电路1507可以访问存储器1504(例如用于实施图像缓冲器)。在其它实例中,逻辑电路1507和/或处理单元1506可以包含存储器(例如,缓存等)用于实施图像缓冲器等。
在一些实例中,通过逻辑电路实施的视频编码器410可以包含(例如,通过处理单元1506或存储器1504实施的)图像缓冲器和(例如,通过处理单元1506实施的)图形处理单元。图形处理单元可以通信耦合至图像缓冲器。图形处理单元可以包含通过逻辑电路1507实施的视频编码器410,以实施参照图4B和/或本文中所描述的任何其它编码器系统或子系统所论述的各种模块。逻辑电路可以用于执行本文所论述的各种操作。
视频解码器420可以以类似方式通过逻辑电路1507实施,以实施参照图4C的解码器420和/或本文中所描述的任何其它解码器系统或子系统所论述的各种模块。在一些实例中,逻辑电路实施的视频解码器420可以包含(通过处理单元1506或存储器1504实施的)图像缓冲器和(例如,通过处理单元1506实施的)图形处理单元。图形处理单元可以通信耦合至图像缓冲器。图形处理单元可以包含通过逻辑电路1507实施的视频解码器420,以实施参照图4C和/或本文中所描述的任何其它解码器系统或子系统所论述的各种模块。
在一些实例中,视频译码系统1500的天线1502可以用于接收视频数据的经编码比特流。如所论述,经编码比特流可以包含本文所论述的与编码视频帧相关的数据、指示符、索引值、模式选择数据等,例如与编码分割相关的数据(例如,变换系数或经量化变换系数,(如所论述的)可选指示符,和/或定义编码分割的数据)。视频译码系统1500还可包含耦合至天线1502并用于解码经编码比特流的视频解码器420。显示设备1505用于呈现视频帧。
以上方法流程的步骤中,步骤的描述顺序并不代表步骤的执行顺序,按照以上的描述顺序来执行是可行的,不按照以上的描述顺序来执行也是可行的。
本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,根据通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
作为实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
可通过例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本申请实施例还提供了一种计算机可读存储介质。该计算机可读存储介质包括指令,所述指令用于实现前述的视频编码方法,例如图6或图13实施例中的视频编码方法。还用于实现前述的视频解码方法,例如图12或图13实施例中的视频解码方法。
其中,所述计算机可读存储介质可以是计算设备能够存储的任何可用介质,或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。
本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请中实施例提到的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b、或c中的至少一项(个),可以表示:a、b、c、(a和b)、(a和c)、(b和c)、或(a和b和c),其中a、b、c可以是单个,也可以是多个。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A、同时存在A和B、单独存在B这三种情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
以及,除非有相反的说明,本申请实施例使用“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一容器存储管理装置和第二容器存储管理装置,只是为了便于描述,而并不是表示这第一容器存储管理装置和第一容器存储管理装置的装置结构、部署顺序、重要程度等的不同。
本领域普通技术人员可以理解,本申请的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本申请中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码解码器硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (19)

1.一种视频编码方法,其特征在于,所述方法包括:
对原始视频的图像序列中的图像帧进行分割处理,得到待处理区域,其中,所述待处理区域包含一个或多个图像块;
确定目标图像块在参考帧中的参考区域,其中,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述目标图像块为所述一个或多个图像块中的一个,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
根据所述参考区域对所述目标图像块进行编码。
2.根据权利要求1所述的方法,其特征在于,所述确定目标图像块在参考帧中的参考区域,包括:
计算所述待处理区域所占的区域;
在所述目标图像块的运动矢量所指示的区域不在所述待处理区域所占的区域内的情况下,对所述目标图像块进行约束处理,得到所述目标图像块的约束运动矢量;其中,所述约束运动矢量所指示的区域在目标图像块所属的待处理区域所占的区域内;
根据所述约束运动矢量从所述的参考帧中确定所述目标图像块的参考区域。
3.根据权利要求2所述的方法,其特征在于,所述对所述目标图像块进行约束处理,得到所述目标图像块的约束运动矢量,包括:
根据所述目标图像块的相邻块的运动矢量,分别计算所述相邻块的运动矢量所指示的区域与所述目标图像块之间的像素残差;
在存在所述像素残差为0的运动矢量的情况下,若所述像素残差为0所对应的相邻块的运动矢量所指示的区域不在所述待处理区域所占的区域内,对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量。
4.根据权利要求2或3所述的方法,其特征在于,所述约束处理包括:整像素运动估计和子像素运动估计。
5.根据权利要求4所述的方法,其特征在于,所述对所述目标图像块进行约束处理,得到所述目标图像块的运动矢量,包括:
根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点;
根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点,包括:
若存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则计算所述相邻块的运动矢量的第一码率失真代价;
根据所述第一码率失真代价中最小的第一码率失真代价所对应的运动矢量确定整像素运动搜索终点。
7.根据权利要求5所述的方法,其特征在于,所述根据所述目标图像块的相邻块所对应的运动矢量对所述目标图像块进行所述整像素运动估计,得到整像素运动搜索终点,包括:
若不存在所述目标图像块的相邻块的运动矢量所指示的区域在所述待处理区域的所占的区域内,则根据所述待处理区域的边界信息和所述目标图像块的位置信息,将所述目标图像块的相邻块所对应的运动矢量进行等比例缩放得到缩放后的运动矢量,其中,所述缩放后的运动矢量所指示的区域在所述待处理区域的所占的区域内;
计算所述缩放后的运动矢量的第二码率失真代价;
根据所述第二码率失真代价中最小的第二码率失真代价所对应的运动矢量确定整像素运动搜索终点。
8.根据权利要求5至7任一项所述的方法,其特征在于,所述根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量,包括:
根据子像素插值计算关系计算子像素参考区域;
若所述整像素运动搜索终点对应的运动矢量所指示的区域不在所述子像素参考区域所占的区域内,则将所述整像素运动搜索终点对应的运动矢量作为所述目标图像块的运动矢量。
9.根据权利要求8所述的方法,其特征在于,所述根据所述整像素运动搜索终点对所述目标图像块进行所述子像素运动估计,得到所述目标图像块的运动矢量,包括:
若所述整像素运动搜索终点对应的运动矢量所指示的区域在所述子像素参考区域所占的区域内,则对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量。
10.根据权利要求9所述的方法,其特征在于,所述对所述目标图像块进行子像素运动估计,得到所述目标图像块的运动矢量,包括:
根据所述整像素运动搜索终点对所述目标图像块进行子像素运动估计,确定子像素运动矢量,所述子像素运动矢量所指向的区域在所述子像素参考区域所占的区域内;
计算所述子像素运动矢量的第三码率失真代价;
将所述第三码率失真代价中最小的第三码率失真代价所对应的子像素运动矢量作为所述目标图像块的运动矢量。
11.根据权利要求2至10任一项所述的方法,其特征在于,所述计算所述待处理区域所占的区域,包括:
计算所述待处理区域中第一个图像块序号和最后一个图像块的序号;
计算所述待处理区域所占的区域信息,所述区域信息包含所述待处理区域的行数,所述待处理区域的第一行和最后一行是否满行;
根据所述第一个图像块的序号、所述最后一个图像块的序号和所述区域信息计算所述待处理区域所占的区域。
12.一种视频解码方法,其特征在于,所述方法包括:
解析码流得到目标图像块在参考帧中的参考区域,其中,所述目标图像块为待处区域所包含的一个或多个图像块中的任意一个,所述待处理区域为对原始视频的图像序列中的任意图像帧进行分割处理后得到,所述待处理区域为叠加信息的区域,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
根据所述参考区域对所述目标图像块进行预测。
13.根据权利要求12所述的方法,其特征在于,所述根据所述参考区域对所述目标图像块进行解码之后,还包括:
对未进行解码处理区域中的码流进行复制处理,其中,所述未进行解码处理区域为所述图像帧中除所述待处理区域所占的区域以外的区域。
14.一种编码器,其特征在于,所述编码器包括分割单元、预测单元和熵编码单元,其中:
所述分割单元,用于对原始视频的图像序列中的图像帧进行分割处理,得到待处理区域,其中,所述待处理区域包含一个或多个图像块;
所述预测单元,还用于确定目标图像块在参考帧中的参考区域,其中,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述目标图像块为所述一个或多个图像块中的一个,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
所述熵编码单元,用于根据所述参考区域对所述目标图像块进行编码。
15.一种解码器,其特征在于,所述解码器包括熵解码单元和帧间预测单元,其中:
所述熵解码单元,用于解析码流得到目标图像块在参考帧中的参考区域,其中,所述目标图像块为待处区域所包含的一个或多个图像块中的任意一个,所述待处理区域为对原始视频的图像序列中的任意图像帧进行分割处理后得到,所述待处理区域为叠加信息的区域,所述参考帧为对所述图像帧进行编码时需要参考的帧,所述参考区域所占的区域在所述目标图像块所属的待处理区域所占的区域内;
所述帧间预测单元,用于根据所述参考区域对所述目标图像块进行预测。
16.一种编码器,其特征在于,所述编码器包括处理器和存储器:
所述处理器用于执行所述存储器中存储的指令,以使得所述编码器实现如权利要求1-11任一项所述的方法。
17.一种解码器,其特征在于,所述解码器包括处理器和存储器:
所述处理器用于执行所述存储器中存储的指令,以使得所述解码器实现如权利要求12或13任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,使得所述计算设备实现如权利要求1-13任一项所述的方法。
19.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备执行时,使得所述计算设备实现如权利要求1-13任一项所述的方法。
CN202211484382.0A 2022-11-24 2022-11-24 一种视频编码、解码方法及相关设备 Pending CN118075475A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211484382.0A CN118075475A (zh) 2022-11-24 2022-11-24 一种视频编码、解码方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211484382.0A CN118075475A (zh) 2022-11-24 2022-11-24 一种视频编码、解码方法及相关设备

Publications (1)

Publication Number Publication Date
CN118075475A true CN118075475A (zh) 2024-05-24

Family

ID=91094335

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211484382.0A Pending CN118075475A (zh) 2022-11-24 2022-11-24 一种视频编码、解码方法及相关设备

Country Status (1)

Country Link
CN (1) CN118075475A (zh)

Similar Documents

Publication Publication Date Title
US11252436B2 (en) Video picture inter prediction method and apparatus, and codec
CN112806008B (zh) 视频解码方法、装置、计算机设备及存储介质
JP6580576B2 (ja) ビデオ情報のスケーラブルコーディングのためのデバイスおよび方法
CN110719488B (zh) 视频解码的方法和装置、计算机设备及存储介质
CN110730353B (zh) 视频解码方法和装置、计算机设备、存储介质
JP7297874B2 (ja) ビデオコーディングにおける条件付きデコーダ側動きベクトル精緻化のための装置および方法
JP6513684B2 (ja) マルチレイヤビデオコーディングにおける異なるコーデックのベースレイヤのサポート
TWI841033B (zh) 視頻數據的幀間預測方法和裝置
CN118101931B (zh) 视频译码中用于参考图像重采样的双向光流方法和设备
CN110876056B (zh) 视频解码的方法和装置、计算机设备及存储介质
CN111492661A (zh) 视频解码的方法和装置、及存储介质
CN113826399A (zh) 视频译码中用于参考图像重采样的解码器侧运动矢量修正(dmvr)译码工具的处理
CN111200735A (zh) 一种帧间预测的方法及装置
CN118844062A (zh) 使用共享插值滤波器和参考像素的解码器侧运动矢量细化(dmvr)帧间预测
CN113228631A (zh) 视频编解码的方法和装置
CN113841412B (zh) 视频编解码的方法、装置、计算机设备及存储介质
CN118075475A (zh) 一种视频编码、解码方法及相关设备
US20210185323A1 (en) Inter prediction method and apparatus, video encoder, and video decoder
HK40052003A (zh) 视频编解码的方法和装置
HK40044360B (zh) 视频解码方法、装置、计算机设备以及存储介质
HK40044360A (zh) 视频解码方法、装置、计算机设备以及存储介质
HK40027714A (zh) 视频编解码方法、装置及存储介质
WO2019227297A1 (zh) 一种视频图像的帧间预测方法、装置及编解码器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication