CN103916666A - 视频编码方法、解码方法、编码器及解码器 - Google Patents
视频编码方法、解码方法、编码器及解码器 Download PDFInfo
- Publication number
- CN103916666A CN103916666A CN201310008086.8A CN201310008086A CN103916666A CN 103916666 A CN103916666 A CN 103916666A CN 201310008086 A CN201310008086 A CN 201310008086A CN 103916666 A CN103916666 A CN 103916666A
- Authority
- CN
- China
- Prior art keywords
- image
- present image
- reference picture
- level
- buffering area
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明提供了一种视频编码方法、解码方法、编码器及解码器,获取当前图像和当前图像的序号,根据该序号和预设的图像层次结构,确定当前图像所处的图像层次,并生成当前图像的层次标识,其中,预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,当前图像的层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式,参考参考图像缓冲区中的参考图像,对当前图像进行编码,得到当前图像的编码比特流,该编码比特流包括该层次标识,根据该层次标识所标识的目标管理方式,对参考图像缓冲区进行管理。本发明通过预设的图像层次结构,对参考图像缓冲区进行管理,以较少缓存单元个数实现图像间灵活的参考关系,提高视频编解码性能。
Description
技术领域
本发明涉及视频编解码技术,尤其涉及一种视频编码方法、解码方法、编码器及解码器。
背景技术
在多媒体技术领域,多媒体文件的存储和传输是该技术领域发展的关键。但是由于多媒体源文件所需的资源都比较大,这使得多媒体源文件存在不易存储和传输等问题。为了更好地完成多媒体文件的存储和传输,在多媒体文件进行存储和传输之前,需要采用编解码技术对多媒体源文件进行压缩,以使得多媒体文件的所需资源变小。
目前,现有的视频编解码技术中,由于每一幅图像均可以将自身的重建图像作为后续图像的的参考图像,需要将每一幅图像的重建图像存储在参考图像缓冲区的缓存单元中,作为后续图像的的参考图像,因此不能动态调整该图像的编码参数,而且若实现参考距离较远图像,需要参考图像缓冲区的缓存单元的个数较多,导致了资源的浪费。
发明内容
本发明提供一种视频编码方法、解码方法、编码器及解码器,用以解决现有技术中参考图像缓冲区的缓存单元的个数较多的问题。
本发明一方面提供的视频编码方法,包括:
获取当前图像和所述当前图像的序号;
根据所述当前图像的序号和预设的图像层次结构,确定所述当前图像所处的图像层次,并生成所述当前图像的层次标识;其中,所述预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,所述层次标识用于标识与所述当前图像对应的编码参考图像缓冲区的目标管理方式;
参考所述参考图像缓冲区中的参考图像,对所述当前图像进行编码,得到所述当前图像的编码比特流;其中,所述编码比特流包括当前图像的层次标识;
使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
本发明另一方面提供的视频解码方法,包括:
接收当前图像的编码比特流;其中,所述编码比特流中包括所述当前图像的层次标识,所述当前图像的层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式;
对所述当前图像的编码比特流进行解码,得到所述当前图像的图像比特流和所述层次标识;
根据所述图像比特流和所述参考图像缓冲区中的参考图像,获取所述当前图像的重建图像;
使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
本发明另一方面提供的编码器,包括:
获取模块,获取当前图像和所述当前图像的序号;
确定模块,用于根据所述当前图像的序号和预设的图像层次结构,确定所述当前图像所处的图像层次,并生成所述当前图像的层次标识;其中,所述预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,所述层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式;
编码模块,用于参考所述参考图像缓冲区中的参考图像,对所述当前图像进行编码,得到所述当前图像的编码比特流;其中,所述编码比特流包括当前图像的层次标识;
管理模块,用于使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
本发明另一方面提供的解码器,包括:
接收模块,用于接收当前图像的编码比特流;其中,所述编码比特流中包括所述当前图像的层次标识,所述当前图像的层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式;
解码模块,用于对所述当前图像的编码比特流进行解码,得到所述当前图像的图像比特流和所述层次标识,根据所述图像比特流和所述参考图像缓冲区中的参考图像,获取所述当期图像的重建图像;
管理模块,用于使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
本发明提供的视频编码方法、解码方法、编码器及解码器,在进行编码前,预先设置图像层次结构,该图像层次结构包括图像层次间的参考关系和各图像层次的构成,获取当前图像和当前图像的序号,根据当前图像的序号和预设的图像层次结构,确定当前图像所处的图像层次,生成当前图像的层次标识,其中,当前图像的层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式,参考参考图像缓冲区中的参考图像,对当前图像进行编码,得到当前图像的编码比特流,该编码比特流包括当前图像的层次标识,根据当前图像的层次标识所标识当前图像的目标管理方式,对参考图像缓冲区进行管理。本发明通过预设的图像层次结构,可对参考图像的缓冲区进行管理,以较少缓存单元个数实现图像间灵活的参考关系,从而克服了现有技术中存在的参考图像缓冲区中的缓存单元的个数较多的问题,避免了资源的浪费。
附图说明
图1为本发明实施例提供的一种视频编码方法示意图;
图2为本发明实施例提供的一种预设的图像层次结构的示意图;
图3为本发明实施例提供的一种参考图像缓冲区管理过程示意图;
图4为本发明实施例提供的一种视频解码方法示意图;
图5为本发明实施例提供的一种基于IPPP图像结构与预设的图像层次进行编码的示意图;
图6为本发明实施例提供的一种视频解码方法示意图;
图7为本发明实施例提供的一种编码器结构示意图;
图8为本发明实施例提供的一种解码器结构示意图;
图9为本发明实施例提供的一种视频编解码系统结构示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
在实际应用中,由于视频的原始文件较大,存在不易存储和传输等问题,为了更好地实现视频文件的存储和传输,在视频的原始文件进行存储和传输之前,多采用视频编码技术对视频的原始文件进行压缩,使视频文件变小,以便于存储和传输。
图1为本发明实施例提供的一种视频编码方法示意图。本实施例中该视频编码方法的执行主体可以为编码器,如图1所示,该方法包括以下步骤:
101、获取当前图像和所述当前图像的序号。
本实施例中,在步骤101之前,预先设置待编码的视频文件的图像层次结构。具体地,确定视频文件的图像层次结构的层数,即视频文件的图像层次结构共有多少层,设定每个图像层次间的参考关系,并预设每个图像层次的构成。
图2为本发明实施例提供的一种预设的图像层次结构示意图。如图2所示,将图像层次结构设置为三层的结构,分别为底层(L0层)、中间层(L1层)和顶层(L2层),设置各图像层次之间的参考关系:L0层可以被L0层、L1层和L2层参考,L1层可以被L0层和L2层参考,L2层不能被L0和L层参考。进一步地,设置每个图像层次的构成,具体地,设置第一幅图像为L0层,第二图像为L2层,第三幅图像为L1层,第四幅图像为L2层。此处需要说明,在该预设的图像层次结构中第一幅图像、第二幅图像、第三幅图像以及第四幅图像并不是实际的图像,只是表示图像在视频文件中所处的位置。其中,为了便于理解,将第一幅图像、第二幅图像、第三幅图像和第四幅图像分别命名为:I0帧、P1帧、P2帧和P3帧。图2所示的预设的图像层次结构示意图仅为示例,以便于更好的理解本发明,本领域技术人员应该知道预设的图像层次结构并不仅限于此。
当设置完图像层次结构后,可以选取编码参考图像缓冲区的大小,即参考图像缓冲区中缓存单元(RefBuffer)的个数。结合图2所示的预设的图像层次结构,在本实施例中,选取参考图像缓冲区中RefBuffer的数量为2个,分别记为RefBuffer0和RefBuffer1。
在设置完视频文件的图像层次结构后,编码器获取当前图像和当前图像的序号。编码器实际获取的是当前图像的YUV数据。
102、根据所述当前图像的序号和预设的图像层次结构,确定所述当前图像所处的图像层次,并生成所述当前图像的层次标识;其中,所述预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,所述层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式。
具体地,编码器在获取到当前图像之后,根据当前图像的序号和预设的图像层次结构,确定出当前图像所处的图像层次。结合图2所示的预设的图像层次结构,对当前图像所处的图像层次的确定进行说明。例如,编码器接收到当前图像的序号为0,得知当前图像为视频文件的第一幅图像。进一步地,在预设的图像层次结构中规定第一幅图像为L0层,编码器可以确定出当前图像所处的图像层次为L0层,当前图像的序号为2时,得知当前图像为视频文件的第三幅图像。根据预设的图像层次结构中规定第三幅图像为L1层,编码器可以确定出当前图像所处的图像层次为L1层。在本实施例中,优选地,可以将视频文件设置为以4帧为一个单位依次对图像进行编码处理。具体地,编码器接收到当前图像的序号为4K时,相当于当前图像为第一幅图像,可以确定出当前图像所处的图像层次为L0层,而当前图像的序号为4K+1时,可以确定出当前图像所处的图像层次为L2层,依次类推,当前图像的序号为4K+2时,可以确定出当前图像所处的图像层次为L1层,当前图像的序号为4K+3时,可以确定出当前图像所处的图像层次为L2层。其中,K=0,1,2……,M,M为自然数。
在确定出当前图像所处的图像层次后,生成当前图像的层次标识,该层次标识用于标识出与当前图像对应的参考图像缓冲区的目标管理方式。在本实施例中,结合图2所示的预设的图像层次结构,对当前图像层次标识进行说明。编码器为确定出的处于L0层的各图像,生成的层次标识为“0”;编码器为确定出的L1层的各图像,生成的层次标识为“1”,编码器为确定出的L2层的各图像,生成的层次标识为“2”。本实施例中编码器生成的的层次标识“0”、“1”和“2”仅为示例,以便于更好的理解本发明,本领域技术人员应该知道层次标识并不仅限于此。进一步地,视频文件设置为以4帧为单元时,序号为4K的当前图像的层次标识为“0”,序号为4K+1的当前图像的层次标识为“2”,依次类推,序号为4K+2的当前图像的层次标识为“1”,序号为4K+3的当前图像的层次标识为“2”。
进一步地,当前图像的层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式。可选地,在本实施中,参考图像缓冲区的管理方式包括:编码器使用当前图像的重建图像替换参考图像缓冲区中预先指定的缓冲缓存单元中的参考图像。其中,当前图像的重建图像为编码器对当前图像进行编码后,将当前图像的编码比特流发送给与编码器相应的解码器,解码器对编码比特流进行解码,就得到当前图像的重建图像。关于解码器对当前图像的编码比特流进行解码,得到当前图像的重建图像的过程,可以参见下面的相关实施例中记载。可选地,编码器可以根据预设的移位策略,将参考图像缓冲区中至少一个缓存单元中的参考图像进行移位处理,并根据预设的移位策略将当前图像的重建图像存入预设指定的缓存单元中。可选地,编码器可以将参考图像缓冲区中预先指定的至少两个缓存单元中的参考图像进行交换。本领域技术人员应该知道,此处仅为示例,以便于对本发明进行说明和理解,预设的移位策略不仅限于此。
具体地,结合图2所示的预设的图像层次结构进行说明,在本实施例中,预先设定处于L0层的当前图像对应的参考图像缓冲区的目标管理方式为:使用当前图像的重建图像替换参考图像缓冲区中预先指定的RefBuffer0中的参考图像。此处RefBuffer0为本实施例中预先指定的缓冲单元的具体实例。
预先设定处于L1层的当前图像对应的参考图像缓冲区的目标管理方式为:编码器可以根据预设的移位策略,将参考图像缓冲区中至少一个缓存单元中的参考图像进行移位处理,并根据预设的移位策略将当前图像的重建图像存入预设指定的缓存单元中。在本实施例中,预设的移位策略为:将参考图像缓冲区中的RefBuffer0中存储的参考图像移入到预先指定的RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。例如,当RefBuffer的个数为4个是,可以预设移位策略为:将RefBuffer3中参考图像移出,依次RefBuffer2中参考图像移入RefBuffer3,RefBuffer1中参考图像移入RefBuffer2,RefBuffer0中参考图像移入RefBuffer1,然后将当前图像的重建图像移入RefBuffer0中。或者,将RefBuffer0中的图像移入RefBuffer2,将RefBuffer1中的参考图像移入RefBuffer3,然后将当前图像的重建图像移入RefBuffer0和RefBuffer1中。
进一步地,预先设定处于L2层的当前图像对应的参考图像缓冲区的目标管理方式为:当前图像的重建图像不能作为参考图像存入参考图像缓冲区中,即编码器对缓冲区不进行管理和操作。
根据图2所示的预设的图像层次结构,对本发明进行说明和理解的示例中,对参考图像缓冲区进行管理的方式在本实施例中为上述三种,但是本领域技术人员应该知道,对参考图像缓冲区的管理方式不仅限于上述三种,在编码过程中可以根据需要灵活地预先设置对参考图像缓冲区的管理方式。
结合图2所示的预设的图像层次结构,在本实施例中,当前图像的层次标识可以标识出与当前图像对应的参考图像缓冲区的目标管理方式。例如,层次标识“0”标识出将当前图像的重建图像替换RefBuffer0中的参考图像。层次标识为“1”标识出将参考图像缓冲区中RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。而层次标识为“2”标识出当前图像的重建图像不能作为参考图像存入参考帧缓冲区。
103、参考所述参考图像缓冲区中的参考图像,对所述当前图像进行编码,得到所述当前图像的编码比特流;其中,所述编码比特流包括当前图像的层次标识。
在步骤102之后,编码器参考存储在参考图像缓冲区中的参考图像,根据预设的编码参数对当前图像进行编码处理,得到当前图像的编码比特流。进一步地,编码器将在步骤102中生成的当前图像的层次标识写入该编码比特流中。在编码比特流中携带当前图像的层次标识,可以使得解码器在接收到当前图像的编码比特流后,得到当前图像的层次标识,然后解码器根据当前图像的层次标识所标识的目标管理方式,对解码器端的参考图像缓冲区进行管理。
104、使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
编码器根据当前图像的层次标识,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式。在确定出当前图像的目标管理管理方式后,编码器根据该目标管理方式对参考图像缓冲区进行管理。
在本实施例中,结合图2所示的预设的图像层次结构进行说明,预先设定的参考图像的缓冲区管理方式参见步骤102中的介绍,此处不再赘述。
当前图像的序号为4K时,生成的当前图像的层次标识为“0”,编码器根据层次标识“0”,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式为:当前图像的重建图像可以替换RefBuffer0中存储的参考图像。编码器根据该目标管理方式,将当前图像的重建图像替换RefBuffer0中存储的参考图像。
当前图像的序号为4K+1时,生成的当前图像的层次标识为“2”,编码器根据层次标识“2”,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式为:当前图像的重建图像不能作为参考图像存入参考图像缓冲区中,即编码器对参考图像缓冲区不进行操作。
当前图像的序号为4K+2时,生成的当前图像的层次标识为“1”,编码器根据层次标识“1”,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式为:将参考图像缓冲区中RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。编码器根据该目标管理方式,将RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的参考图像存入到RefBuffer0中。
当前图像的序号为4K+3时,生成的当前图像的层次标识为“2”,编码器根据层次标识“2”,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式为:当前图像的重建图像不能作为参考图像存入参考图像缓冲区中,即编码器对参考图像缓冲区不进行操作。
本实施提供的视频编码方法,对视频文件在进行编码前,预先设置图像层次结构,获取当前图像和当前图像的序号,根据该序号和预设的图像层次结构,确定当前图像所处的图像层次,生成当前图像的层次标识,其中,预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式,参考参考图像缓冲区中的参考图像,对当前图像进行编码,得到当前图像的编码比特流,该编码比特流包括该层次标识,根据该层次标识所标识的目标管理方式,对参考图像缓冲区进行管理。本发明通过预设的图像层次结构,可对参考图像的缓冲区进行管理,以较少缓存单元个数实现图像间灵活的参考关系,克服了现有技术中参考图像缓冲区缓存单元个数较多的问题。
结合图2所示的预设的图像层次结构,对视频文件进行编码处理的过程如下:视频文件包括9帧图像,将该视频文件中的这9帧图像分别命名为:I0帧、P1帧、P2帧、P3帧、P4帧、P5帧、P6帧、P7帧和P8帧。I0帧的序号为“0”,P1帧的序号为“1”,P2帧的序号为“2”,P3帧的序号为“3”,P4帧的序号为“4”,P5帧的序号为“5”,P6帧的序号为“6”,P7帧的序号为“7”,P8帧的序号为“8”。
图3为本发明实施例提供的一种参考图像缓冲区管理过程示意图。编码器依次接收视频文件中的9帧图像,当前图像为I0帧时,编码器根据I0帧的序号“0”,确定出当前图像为第一幅图像,编码器根据预设的图像层次结构中规定第一幅图像为L0层,确定出I0帧所处的图像层次为L0层,并为I0帧生成层次标识为“0”。编码器参考RefBuffer0和RefBuffer1中的初始参考帧即参考图像,对I0帧进行编码,得到I0帧的编码比特流,并将I0帧的层次标识“0”写入编码比特流中。进一步地,编码器根据I0帧的层次标识“0”所标识出的与I0帧对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理,即编码器使用I0帧的重建帧即重建图像替换RefBuffer0中的初始参考帧。在对参考图像缓冲区进行管理后,RefBuffer0参考帧为I0帧,RefBuffer1中的参考帧仍为初始参考帧。
当前图像为P1帧,编码器根据P1帧的序号“1”,确定出当前图像为第二幅图像,编码器根据预设的图像层次结构中规定第二幅图像为L2层,确定出P1帧所处的图像层次为L2层,并为P1帧生成层次标识为“2”。编码器参考RefBuffer0中的I0帧和RefBuffer1中的初始参考帧,对P1帧进行编码,得到P1帧的编码比特流,并将P1帧的层次标识“2”写入编码比特流中。进一步地,编码器根据P1帧的层次标识“2”所标识出的与P1帧对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理。由于层次标识“2”标识出P1帧的重建帧不能作为参考帧存入RefBuffer中,编码器不对参考图像的缓冲区进行操作。RefBuffer0和RefBuffer1中的参考帧不变,RefBuffer0参考帧为I0帧,RefBuffer1中的参考帧仍为初始参考帧。
当前图像为P2帧,编码器根据P2帧的序号“2”,确定出当前图像为第三幅图像,编码器根据预设的图像层次结构中规定第三幅图像为L1层,确定出P2帧所处的图像层次为L1层,并为P2帧生成层次标识为“1”。编码器参考RefBuffer0中的I0帧和RefBuffer1中的初始参考帧,对P2帧进行编码,得到P2帧的编码比特流,并将P2帧的层次标识“1”写入编码比特流中。进一步地,编码器根据P2帧的层次标识“1”所标识出的与P2帧对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理,即编码器将RefBuffer0中的参考帧,移入RefBuffer1中,并将P2帧的重建帧存入RefBuffer0。在对参考图像缓冲区进行管理后,RefBuffer0中的参考帧为P2帧,RefBuffer1中的参考帧为I0帧。
当前图像为P3帧,编码器根据P3帧的序号“1”,确定出当前图像为第二幅图像,编码器根据预设的图像层次结构中规定第二幅图像为L2层,确定出P3帧所处的图像层次为L2层,并为P3帧生成层次标识为“2”。编码器参考RefBuffer0中的P2帧和RefBuffer1中的I0帧,对P3帧进行编码,得到P3帧的编码比特流,并将P3帧的层次标识“2”写入编码比特流中。进一步地,编码器根据P3帧的层次标识“2”所标识出的与P3帧对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理。编码器不对参考图像的缓冲区进行操作。RefBuffer0中的参考帧为P2帧,RefBuffer1中的参考帧为I0帧。
进一步地,设置该视频文件中图像以4帧为一个单位依次进行编码处理。当前图像为P4帧,P4帧的序号“4”,编码器确定出P4帧所处的图像层次为L0层,并为P4帧生成层次标识为“0”。编码器参考RefBuffer0中的P2帧和RefBuffer1中的I0帧,对P4帧进行编码,得到P4帧的编码比特流,并将P4帧的层次标识“0”写入编码比特流中。进一步地,编码器根据P4帧的层次标识“0”所标识出的与P4帧对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理,即编码器将RefBuffer0中的参考帧,移入RefBuffer1中,并将P4帧的重建帧存入RefBuffer0。在对参考图像缓冲区进行管理后,RefBuffer0中的参考帧为P4帧和RefBuffer1中的参考帧为P2帧。
当前图像为P5帧,P5帧的序号“5”,编码器确定出P5帧所处的图像层次为L2层,并为P5帧生成层次标识为“2”。编码器参考RefBuffer0中的P4帧和RefBuffer1中的P2帧,对P5帧进行编码,得到P5帧的编码比特流,并将P5帧的层次标识“2”写入编码比特流中。进一步地,编码器根据P5帧的层次标识“2”所标识出的与P5帧对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理,即编码器不对参考图像的缓冲区进行操作。RefBuffer0和RefBuffer1中的参考帧不变,RefBuffer0参考帧为P4帧,RefBuffer1中的参考帧为P2帧。
当前图像为P6帧,P6帧的序号“6”,编码器确定出P6帧所处的图像层次为L1层,并为P6帧生成层次标识为“1”。编码器参考RefBuffer0中的P4帧和RefBuffer1中P2帧,对P6帧进行编码,得到P6帧的编码比特流,并将P6帧层次标识“1”写入编码比特流中。进一步地,编码器根据P6帧的层次标识“1”所标识出的与P6帧对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理。编码器将RefBuffer0中的参考帧,移入RefBuffer1中,并将P6帧的重建帧存入RefBuffer0。在对参考图像缓冲区进行管理后,RefBuffer0中的参考帧为P6帧,RefBuffer1中的参考帧为P4帧。
当前图像为P7帧,P5帧的序号“7”,编码器确定出P7帧所处的图像层次为L2层,并为P5帧生成层次标识为“2”。编码器参考RefBuffer0中的P6帧和RefBuffer1中的P4帧,对P7帧进行编码,得到P7帧的编码比特流,并将P7帧的层次标识“2”写入编码比特流中。进一步地,编码器根据P7帧的层次标识“2”所标识出的与P7帧对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理,即编码器不对参考图像的缓冲区进行操作。RefBuffer0和RefBuffer1中的参考帧不变,RefBuffer0参考帧为P6帧,RefBuffer1中的参考帧为P4帧。
依次进行,当前图像为P8帧,编码器对P8帧进行编码处理过程与I0帧和P4帧的过程类似,此处不再赘述。编码器根据与P8帧对应的参考图像缓冲区的目标管理方式对参考图像缓冲区进行管理后,RefBuffer0中的参考帧为P8帧,RefBuffer1中的参考帧为P6帧。
进一步地,当前图像的序号为4K时,编码器确定出当前图像所处的图像层次为L0层,其编码过程与I0帧和P4帧的过程类似。当前图像的序号为4K+1时,编码器确定出当前图像所处的图像层次为L2层,其编码过程与P1和P5帧的过程类似。依次类推,当前图像的序号为4K+2时,当前图像所处的图像层次为L1层,其编码过程与P2帧和P6帧的过程类似。当前图像的序号为4K+3时,当前图像所处的图像层次为L2层,其编码过程与P3帧和P7帧的过程类似。
表1为采用本发明实施例提供的视频编码方法对不同视频文件进行编码,得到视频文件的Y,U,V平面的码率(BD-rate)的测试结果。对表1的测试结果进行分析,可以得出对于A类型中的序列,在Y,U,V平面上分别有2.6%,7.8%,9.0%的性能增益,对于B类型中的序列,在Y,U,V平面上分别有4.9%,11.6%,12.6%的性能增益,对于C类型中的序列,在Y,U,V平面上分别有8.3%,17.5%,17.7%的性能增益。对于所有测试序列,在Y,U,V平面上分别平均有5.3%,12.3%,13.1%的性能增益。由此得出,利用本实施例提供的视频编码方法对视频文件进行编码处理时,可以提供视频文件的编码性能。
表1
图4为本发明实施例提供的一种视频文件编码方法示意图。如图4所示,该方法包括以下步骤:
401、获取当前图像和所述当前图像的序号。
在本实施例中,在步骤401之前预先设置待编码的视频文件的图像层次结构。关于预设的图像层次结构的内容参见上述实施例中相关内容的记载以及图2所示的预设的图像层次结构。此处不再赘述。
402、获取所述当前图像的特征参数。
编码器从当前图像中获取当前图像的特征参数,例如,当前图像的运动幅度值、当前图像的预测模式中采用的预测块的数量和当前图像的背景宏块与总宏块的比例值等特征参数。
403、根据所述当前图像的特征参数,判断是否对所述当前图像使用所述预设的图像层次结构进行编码处理。如果判断结果为是,执行步骤404;如果判断结果为否,执行步骤405。
可选地,编码器获取当前图像的运动幅度值与当前图像前一幅图像的运动幅度值,根据当前图像的运动幅度值与当前图像的参考图像的运动幅度值,得到当前图像的相对运动幅度值,将该相对运动幅度值与预设的第一阈值进行比较,如果当前图像的相对运动幅度值小于该第一阈值,判定对当前图像可以使用预设的图像层次结构进行编码处理,即编码器可以对当前图像执行步骤404,否则执行步骤405。当前图像的相对运动幅度小于预设的相对运动幅度时,说明当前图像的运动幅度较小,不是剧烈运动的图像。
可选地,编码器获取当前图像预测模式中采用的预测块的数量与预设的第二阈值进行比较,如果当前图像的预测模式中采用的预测块的数量大于该第二阈值,判定对当前图像可以使用预设的图像层次结构进行编码处理,即编码器可以对当前图像执行步骤404,否则步骤405。
可选地,编码器获取当前图像的背景宏块与总宏块的比例值,将当前图像的背景宏块与总宏块的比例值与预设的第三阈值进行比较,如果当前图像的背景宏块小于该第三阈值,判定对当前图像可以使用预设的图像层次结构进行编码处理,即编码器可以对当前图像执行步骤404,否则步骤405。
404、根据所述当前图像的序号和预设的图像层次结构,确定所述当前图像所处的图像层次,并生成所述层次标识。
在判断出当前图像可以使用预设的图像层次结构进行编码处理后,编码器根据当前图像的序号和预设的图像层次结构,确定出当前图像所处的图像层次。例如,编码器接收到当前图像的序号为2,根据当前图像的序号2,得知当前图像为视频文件的第2幅图像。在预设的图像层次结构中规定第二幅图像为L1层,编码器可以确定出当前图像所处的图像层次为L1层。关于编码器确定当前图像所处的图像层次的介绍参见上述实施例中相关内容的记载,此处不再记载。在本实施例中,在确定出当前图像所处的图像层次,编码器生成当前图像的层次标识。该层次标识用于标识出与当前图像相应的参考图像缓冲区的目标管理方式。关于当前图像的层次标识的设置过程、参考图像缓冲区的管理方式以及层次标识所标识出的目标管理方式的介绍参见上述实施例中相关内容的记载,此处不再赘述。
405、生成所述当前图像的所述层次标识。
在本实施例中,当编码器根据当前图像的特征参数判断出不能使用预设的图像层次结构对当前图像进行编码处理,编码器生成该当前图像的层次标识。该层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式。在本实施例中,该当前图像的目标管理方式为:将RefBuffer0中的参考图像移入RefBuffer1中,并将当前图像的重建图像存入RefBuffer0中。在本实施例中,编码器可以将该当前图像的层次标识设置为“1”。
406、参考所述参考图像缓冲区中的参考图像,对当前图像进行编码,得到所述当前图像的编码比特流。
在本实施例中,编码器可以将当前图像所处的图像层次与预设的门限值进行比较,如果当前图像所处的图像层次小于预设的门限值,调整预设的编码参数中至少一个参数,得到第一目标编码参数,编码器根据第一目标编码参数和参考图像缓冲区中的参考图像对当前图像进行编码,得到图像比特流。例如,编码器可以减小编码参数中的量化参数(Quantization Parameter,简称为QP)值、增大运动矢量的搜索范围、减小预测模式中采用的预测块的大小、减小块变换编码中块的大小或者降低环路滤波强度等。而如果当前图像所处的图像层次大于或等于预设的门限值,调整预设的编码参数中至少一个参数,得到第二目标编码参数,编码器根据第二目标编码参数和参考图像缓冲区中的参考图像对当前图像进行编码,得到图像比特流。例如,编码器可以增大编码参数中的QP值、减小运动矢量的搜索范围、增大预测模式中采用的预测块的大小、增大块变换编码中块的大小和提高环路滤波强度等。
可选地,在本实施例中可以根据预设的图像层次结构,预先设定编码参数的调整规则。根据图2所示的预设的图像层次结构,可以预设降低处于L0层的当前图像的QP值,增大处于L0层的当前图像运动矢量的搜索范围、减小处于L0层的当前图像预测模式中采用的预测块的大小、减小处于L0层的当前图像块变换编码中块的大或者降低处于L0层的当前图像环路滤波强度等;可以预设增大处于L1层或L2层的当前图像的QP值,减小处于L1层或L2层的当前图像的运动矢量的搜索范围、增大处于L1层或L2层的当前图像的预测模式中采用的预测块的大小、增大处于L1层或L2层的当前图像的块变换编码中块的大小或提高处于L1层或L2层的当前图像的环路滤波强度。具体地,在编码器获取到当前图像后,根据当前图像的层次标识,可以确定出当前图像所处的图像层次,根据当前图像所处的图像层次以及预设的编码参数调整规则,调整当前图像的编码参数。例如,当前图像处于L0层时,编码器根据预设的编码参数调整规则,可以减小当前图像的QP值。
进一步地,在获取到图像比特流之后,编码器将当前图像的层次标识写入当前图像的图像比特流,得到当前图像的编码比特流。在本实施例中,在进行编码的过程中,根据预设的图像层次结构,可以动态地调整当前图像的编码参数,提高了视频文件的编码性能。
407、使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
编码器根据当前图像的层次标识,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式。在确定出当前图像的目标管理管理方式后,编码器根据该目标管理方式对参考图像缓冲区进行管理。关于编码器根据层次标识所标识的目标管理方式,对参考图像缓冲区进行管理的过程参见上述实施例中相关内容的记载,此处不再赘述。
本实施提供的视频编码方法,对视频文件在进行编码前,预先设置图像层次结构,获取当前图像和当前图像的序号,根据该序号和预设的图像层次结构,确定当前图像所处的图像层次,生成当前图像的层次标识,其中,预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式,参考参考图像缓冲区中的参考图像,对当前图像进行编码,得到当前图像的编码比特流,该编码比特流包括该层次标识,根据该层次标识所标识的目标管理方式,对参考图像缓冲区进行管理。本发明通过预设的图像层次结构,可对参考图像的缓冲区进行管理,以较少缓存单元个数实现图像间灵活的参考关系,克服了现有技术中参考图像缓冲区缓存单元个数较多的问题。
进一步地,通过预设的图像层次结构,可以避免现有技术中当某幅图像存在错误时,仍作为后一幅图像的参考图像,在编码过程中使得错误进一步扩散的问题,而且在编码的过程中,可以调整当前图像的编码参数,进一步提高了视频文件的编码性能。
在实际应用中,由于视频文件之间的连续性,编码器并不需要对每一幅图像都进行判断,可以将编码器设置成以4帧为单位进行判断当前图像是否可以采用预设的图像层次结构进行编码。即编码器只需要判断序号为“4K”的当前图像是否可以使用预设的图像层次结构进行编码处理,以达到提高编码效率的目的。具体地,仍然以上述实施例中包括9帧图像的视频文件为例进行说明,当前图像为I0帧时,编码器对I0帧进行判断,如果判断出当前图像I0帧可以使用预设的图像层次结构时,编码器根据I0帧的序号和预设的图像层次结构,生成I0帧的层次标识为“0”,编码器对I0帧进编码,并根据I0帧的层次标识所标识的目标管理方式对参考图像缓冲区进行管理。编码器依次生成P1帧的层次标识为“2”,以及对P1帧进行编码和根据P1帧对应的目标管理方式对参考图像缓冲区进行管理,依次对P2帧和P3帧进行编码和对参考图像缓冲区进行管理。在完成对I0帧至P3帧的编码后,编码器获取到的当前图像为P4帧,编码器对P4帧判断是否可以使用预设的图像层次结构进行编码处理,当判断出P4帧可以使用预设的图像层次结构时,类似与I0帧至P3帧的过程,编码器依次对P4帧、P5帧、P6帧和P7帧进行编码和对参考图像缓冲区进行管理。具体的编码器的编码过程和对参考图像缓冲区的管理过程,可参见上述实施例中相关内容的记载,此处不再赘述。在编码器的编码过程中,参考图像缓冲区的管理过程可参见如图3所示的管理过程示意图,此处不再赘述。
图5为本发明实施例提供的一种基于IPPP图像结构与预设的图像层次结构进行编码的示意图。如图5所示,编码器根据I0帧的特征参数判断出不能采用预设的图像层次结构进行编码处理,根据步骤405可知,编码器将I0帧的层次标识设置为“1”。在对I0帧进行编码时,编码器将RefBuffer0中的参考帧移入RefBuffer1中,并将I0帧的重建帧存入RefBuffer0中。编码器将P1帧的层次标识设置为“1”,在对P1帧进行编码时,编码器将RefBuffer0中的参考帧移入RefBuffer1中,并将P1帧的重建帧存入RefBuffer0中。编码器将P2帧的层次标识设置为“1”。在对P1帧进行编码时,编码器将RefBuffer0中的参考帧移入RefBuffer1中,并将I0帧的重建帧存入RefBuffer0中。编码器将P3帧的层次标识设置为“1”。在对P3帧进行编码时,编码器将RefBuffer0中的参考帧移入RefBuffer1中,并将I0帧的重建帧存入RefBuffer0中。也就是说,每一幅图像均作为后续图像的参考图像存入Refbuffer0中。IPPP技术可以参见现有技术中的相关内容的记载,此处不再赘述。
进一步地,编码器获取P4帧的特征参数,根据P4帧的特征参数判断出可以采用预设的图像层次结构进行编码处理。编码器为P4帧、P5帧、P6帧和P7帧生成层次标识。其中,P4帧、P5帧、P6帧和P7帧的层次标识可以参见本实施例中上述相关内容的记载,此处不再赘述。进一步地,编码器依次对P4帧、P5帧、P6帧和P7帧进行编码和对参考图像缓冲区进行管理。具体的编码器的编码过程和对参考图像缓冲区的管理过程,可参见上述实施例中相关内容的记载,此处不再赘述。
图6为本发明实施例提供的一种视频解码方法示意图。该视频解码方法的执行主体为解码器,该方法包括以下步骤:
601、接收当前图像的编码比特流;其中,所述编码比特流中包括所述当前图像的层次标识,所述当前图像的层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式。
在本实施例中,预先设置待编码的视频文件的图像层次结构,关于预设的图像层次结构的具体实现方式,可参见上述实例中相关内容的记载以及上述实施例中提供的图2所示的视频文件的图像层次结构示意图,在此不在赘述。
当设置完图像层次结构后,选择参考图像缓冲区的大小,即参考图像缓冲区中RefBuffer的个数。在本实施例中为解码器选取的参考图像缓冲区中RefBuffer的数量与编码器选取的参考图像缓冲区中RefBuffer的数量相同。根据图2所示的预设的图像层次结构,优选地,解码器选取的参考图像缓冲区中RefBuffer的数量为2个,分别为RefBuffer0和RefBuffer1。
编码器根据预设的图像层次结构,采用上述实施例提供的视频编码方法对当前图像进行编码处理,得到当前图像的编码比特流,并在该编码比特流中携带当前图像的层次标识。进一步地,编码器将当前图像的编码比特流发送给解码器。解码器接收当前图像的编码比特流。
在本实施例中,当前图像的层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式。该当前图像的层次标识由上述实施例提供的视频编码方法的执行主体编码器根据预设的图像层次结构生成的。关于当前图像的层次标识的生成过程可参见上述实施例中相关内容的记载,此处不再赘述。结合图2所示的预设的图像层次结构示意图,在本实施例中,当前图像的层次标识可以为“0”、“1”或“2”。
在本实施中,解码器对参考图像缓冲区的管理方式与上述实施例中编码器对参考图像缓冲区的管理方式是对应的。关于解码器对参考图像缓冲区的管理方式可以参见上述实施例中编码器对参考图像缓冲区的管理方式的相关内容的记载,此处不再赘述。
602、对所述当前图像的编码比特流进行解码,得到所述当前图像的图像比特流和所述层次标识。
603、根据所述图像比特流和所述参考图像缓冲区中的参考图像,获取所述当前图像的重建图像。
解码器参考参考图像缓冲区中的参考图像对当前图像的图像比特流进行重建,得到当前图像的重建图像。具体地,解码器参考RefBuffer0和RefBuffer1中存储的参考图像对当前图像的比特流进行重建,得到当前图像的重建图像。
604、使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
解码器根据步骤602中获取到的当前图像的层次标识可以得到与当前图像对应的参考图像缓冲区的目标管理方式,然后解码器根据该目标管理方式,对参考图像缓冲区进行管理。结合图2所示的预设的图像层次结构,层次标识“0”标识出的目标管理方式为:使用当前图像的重建图像替换RefBuffer0中的参考图像。层次标识为“1”标识出的目标管理方式为:将参考图像缓冲区中RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。而层次标识为“2”标识出目标管理方式为:当前图像的重建图像不能作为参考图像存入参考帧缓冲区。
具体地,当前图像的层次标识为“0”时,解码器使用当前图像的重建图像替换RefBuffer0中的参考图像,而当前图像的层次标识为“1”,解码器将参考图像缓冲区中RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。而当前图像的层次标识为“2”时,解码器确定出当前图像的重建图像不能作为参考图像存入参考帧缓冲区,即解码器对参考图像缓冲区不进行操作。
本实施提供的视频解码方法,接收当前图像的编码比特流,在该编码比特流中包括当前图像的层次标识,该层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式,对该编码比特流进行解码,得到当前图像的图像比特流和当前图像的层次标识,根据当前图像的图像比特流和参考图像缓冲区中参考图像,获取当前图像的重建图像,并根据当前图像的层次标所标识的与当前图像对应的参考图像缓冲区的目标管理方式,对所述参考图像缓冲区进行管理。在本实施例中通过在编码时预设的图像层次结构,根据该预设的图像层次结构,对参考图像缓冲区进行管理,以较少缓存单元个数实现图像间灵活的参考关系,克服了现有技术中存在的参考图像缓冲区的缓冲单元的个数较多的问题,避免了资源浪费。
图7为本发明实施例提供的一种编码器结构示意图。如图7所示,该编码器包括:获取模块71、确定模块72、编码模块73和管理模块74。
其中,获取模块71用于获取当前图像和当前图像的序号。确定模块72用于根据当前图像的序号和预设的图像层次结构,确定当前图像所处的图像层次,并生成当前图像的层次标识。其中,该预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,当前图像的层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式。编码模块73用于参考参考图像缓冲区中的参考图像,对当前图像进行编码,得到当前图像的编码比特流,其中,该编码比特流包括当前图像的层次标识。管理模块74用于使用当前图像的层次标识所标识与当前图像对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理。
在本实施例中,编码器还可以包括一个预设模块70。在对待编码的视频文件进行编码前,该预设模块70预先设置该视频文件的图像层次结构。具体地,预设模块70设置图像层次结构的过程和内容,可参见上述实例中相关内容的记载以及上述实施例中提供的图2所示的预设的图像层次结构,在此不再赘述。可选地,预设模块50还可以选取参考图像缓冲区的大小,即参考图像缓冲区中RefBuffer的个数。根据图2所示的预设的图像层次结构,预设模块50选取2个RefBuffer,分别为RefBuffer0和RefBuffer1。
具体地,获取模块71获取当前图像和当前图像的序号。在获取模块71获取到当前图像之后,确定模块72根据当前图像的序号和预设的图像层次结构,确定出当前图像所处的图像层次。结合图2所示的预设的图像层次结构,对当前图像所处的图像层次的确定进行说明。例如,确定模块72接收到当前图像的序号为0,得知当前图像为视频文件的第一幅图像。进一步地,确定模块根据预设的图像层次结构中规定第一幅图像为L0层,可以确定出当前图像所处的图像层次为L0层,当前图像的序号为2时,得知当前图像为视频文件的第三幅图像,确定模块72根据预设的图像层次结构中规定第三幅图像为L1层,可以确定出当前图像所处的图像层次为L1层。在本实施例中,优选地,可以将视频文件设置为以4帧为一个单位依次对图像进行编码处理。例如,当前图像的序号为4K时,相当于当前图像为第一幅图像,确定模块72根据序号4K,可以确定出当前图像所处的图像层次为L0层,而当前图像的序号为4K+1时,可以确定出当前图像所处的图像层次为L2层,依次类推,当前图像的序号为4K+2时,可以确定出当前图像所处的图像层次为L1层,当前图像的序号为4K+3时,可以确定出当前图像所处的图像层次为L2层。其中,K=0,1,2……,M,M为自然数。
在确定出当前图像所处的图像层次后,确定模块72生成当前图像的层次标识。结合图2所示的预设的图像层次结构,确定模块72生成当前图像的层次标识的过程,可以参见上述实施例中相关内容的记载,此处不再赘述。
当前图像的层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式。在本实施中,参考图像缓冲区的管理方式可以参见上述实施例中相关内容的记载,此处不再赘述。
结合图2所示的预设的图像层次结构,在本实施例中,当前图像的层次标识可以标识出与当前图像对应的参考图像缓冲区的目标管理方式。例如,层次标识“0”标识出的目标管理方式为:使用当前图像的重建图像替换RefBuffer0中的参考图像。层次标识为“1”标识出的目标管理方式为:将参考图像缓冲区中RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。而层次标识为“2”的目标管理方式为:标识出当前图像的重建图像不能作为参考图像存入参考帧缓冲区。
进一步地,编码模块73参考存储在参考图像缓冲区中的参考图像,根据预设的编码参数对当前图像进行编码处理,得到当前图像的编码比特流。进一步地,编码模块73将在确定模块72生成的当前图像的层次标识写入该编码比特流中。在编码比特流中携带当前图像的层次标识,可以使得解码器在接收到当前图像的编码比特流后,得到当前图像的层次标识,然后解码器根据当前图像的层次标识所标识的目标管理方式,对解码器端的参考图像缓冲区进行管理。
管理模块74根据当前图像的层次标识,确定出与当前图像对应的参考图像缓冲区的目标管理方式,在确定出当前图像的目标管理管理方式后,管理模块74根据该目标管理方式对参考图像缓冲区进行管理。
在本实施例中,结合图2所示的预设的图像层次结构进行说明,预先设定的参考图像的缓冲区管理方式参见上述实施例中相关内容的记载,此处不再赘述。
具体地,当前图像的序号为4K时,确定模块72生成的当前图像的层次标识为“2”,管理模块74根据层次标识“0”,确定出与当前图像对应的参考图像缓冲区的目标管理方式为:使用当前图像的重建图像可以替换RefBuffer0中存储的参考图像。管理模块74根据该目标管理方式,将当前图像的重建图像替换RefBuffer0中存储的参考图像。
当前图像的序号为4K+1时,确定模块72生成的当前图像的层次标识为“2”,管理模块74根据层次标识“2”,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式为:当前图像的重建图像不能作为参考图像存入参考图像缓冲区中,即管理模块74对参考图像缓冲区不进行操作。
当前图像的序号为4K+2时,确定模块72生成的当前图像的层次标识为“1”,管理模块74根据层次标识“1”,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式为:将参考图像缓冲区中RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。管理模块74根据该目标管理方式,将RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的参考图像存入到RefBuffer0中。
当前图像的序号为4K+3时,确定模块72生成的当前图像的层次标识为“2”,管理模块74根据层次标识“2”,可以确定出与当前图像对应的参考图像缓冲区的目标管理方式为:当前图像的重建图像不能作为参考图像存入参考图像缓冲区中,即管理模块74对参考图像缓冲区不进行操作。
在本实施例中,结合图2所示的预设的图像层次结构,以上述实施例中提供的包括9帧图像的视频文件为例对本实施例提供的编码器进行说明。关于编码器对视频文件的编码处理过程可参见上述实施例中相关内容的记载,此处不再赘述。进一步地,编码器对参考图像缓冲区的管理过程可参见上述实施例的相关内容的记载和图3所示的参考图像缓冲区的管理过程,此处不再赘述。
本实施提供的编码器,对视频文件在进行编码前,预先设置图像层次结构,获取当前图像和当前图像的序号,根据该序号和预设的图像层次结构,确定当前图像所处的图像层次,生成当前图像的层次标识,其中,预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式,参考参考图像缓冲区中的参考图像,对当前图像进行编码,得到当前图像的编码比特流,该编码比特流包括该层次标识,根据该层次标识所标识的目标管理方式,对参考图像缓冲区进行管理。本发明通过预设的图像层次结构,可对参考图像的缓冲区进行管理,以较少缓存单元个数实现图像间灵活的参考关系,克服了现有技术中参考图像缓冲区缓存单元个数较多的问题。
可选地,本实施例提供的解码器还可以包括一个判断模块75。该判断模块用于在获取模块71获取到当前图像后,获取该当前图像的特征参数,当前图像的特征参数可以为当前图像的相对运动幅度值、当前图像的预测模式中采用的预测块的数量、当前图像的背景宏块与总宏块的比例值等特征参数。判断模块75根据当前图像的上述特征参数,判断是否可以使用预设的图像层次结构对当前图像进行编码处理的过程,可参见上述实施例中的相关内容的记载,此处不再赘述。
在实际应用中,由于视频文件之间的连续性,判断模块75并不需要对每一幅图像都进行判断,可以设置成以4帧为一个单位判断当前图像是否可以使用预设的图像层次结构进行编码。即判断模块75只需要判断序号为“4K”的当前图像进行判断,判断是否可以使用预设的图像层次结构对当前图像进行编码处理,以达到提高编码效率的目的。具体地可参见上述实施例中相关内容的记载,以及图5所示的编码过程,此处不再赘述。
在判断模块75根据初始图像判断出可以使用预设的图像层次结构对当前图像进行编码处理后,确定模块72根据当前图像的序号和根据预设的图像层次结构,确定当前图像所处的图像层次,并生成当前图像的层次标识。
可选地,在本实施例中,编码模块73的一种结构实现方式包括:比较单元731和调整单元732和编码单元733。比较单元731将当前图像所处的图像层次与预设的门限值进行比较,如果当前图像所处的图像层次小于预设的门限值,调整单元732调整预设的编码参数中至少一个参数,得到第一目标编码参数,编码单元733根据第一目标编码参数和参考图像缓冲区中的参考图像对当前图像进行编码,得到图像比特流。而如果当前图像所处的图像层次大于或等于预设的门限值,调整单元732调整预设的编码参数中至少一个参数,得到第二目标编码参数,编码单元733根据第二目标编码参数和参考图像缓冲区中的参考图像对当前图像进行编码,得到图像比特流。调整单元732调整编码参数的过程可参见上述实施例中相关内容的记载,此处再赘述。
可选地,在本实施例中可以根据预设的图像层次结构,预先设定编码参数的调整规则。调整单元732可以根据预设编码参数调整规则,对预设的编码参数进行调整。在本实施例中,根据图2所示的预设的图像层次结构,预先设定的编码参数调整规则可参见上述实施例中相关内容的记载,此处不再赘述。
进一步地,在获取到图像比特流之后,编码单元733将当前图像的层次标识写入当前图像的图像比特流,得到当前图像的编码比特流。在本实施例中,在进行编码的过程中,根据预设的图像层次结构,可以动态地调整当前图像的编码参数,提高了视频文件的编码性能。
进一步地在本实施例中,通过预设的图像层次结构,可以避免现有技术中当某幅图像存在错误时,仍作为后一幅图像的参考图像,在编码过程中使得错误进一步扩散的问题,而且在编码的过程中,可以调整当前图像的编码参数,提高了视频文件的编码性能。
图8为本发明实施例提供的一种解码器结构示意图。如图8所示,该解码器包括:接收模块81、解码模块82和管理模块83。
其中,接收模块81用于接收当前图像的编码比特流;其中,编码比特流中包括当前图像的层次标识,当前图像的层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式。解码模块82用于对当前图像的编码比特流进行解码,得到当前图像的图像比特流和当前图像的层次标识,根据图像比特流和参考图像缓冲区中的参考图像,获取当期图像的重建图像。管理模块83用于使用当前图像的层次标识所标识的与当前图像对应的参考图像的缓冲区的目标管理方式,对参考图像缓冲区进行管理。
具体地,在本实施例中,在编码之前预先设置待编码的视频文件的图像层次结构,关于预设的图像层次结构的具体实现方式,可参见上述实例中相关内容的记载以及上述实施例中提供的图2所示的视频文件的图像层次结构示意图,在此不在赘述。
当设置完图像层次结构后,选择参考图像缓冲区的大小,即参考图像缓冲区中RefBuffer的个数。在本实施例中为解码器选取的参考图像缓冲区中RefBuffer的数量与编码器选取的参考图像缓冲区中RefBuffer的数量相同。根据图2所示的预设的图像层次结构,优选地,解码器选取的参考图像缓冲区中RefBuffer的数量为2个,分别为RefBuffer0和RefBuffer1。
编码器根据预设的图像层次结构,采用上述实施例提供的视频编码方法对当前图像进行编码处理,得到当前图像的编码比特流,并在该编码比特流中携带当前图像的层次标识。进一步地,编码器将当前图像的编码比特流发送给解码器。解码器中的接收模块81接收当前图像的编码比特流。
在本实施例中,当前图像的层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式。该当前图像的层次标识由上述实施例提供的编码器根据预设的图像层次结构生成的。关于当前图像的层次标识的生成过程可参见上述实施例中相关内容的记载,此处不再赘述。结合图2所示的预设的图像层次结构示意图,在本实施例中,当前图像的层次标识可以为“0”、“1”或“2”。
在本实施中,解码器端的参考图像缓冲区的管理方式与上述实施例中编码器端的参考图像缓冲区的管理方式是对应的。关于参考图像缓冲区的管理方式可以参见上述实施例中参考图像缓冲区的管理方式的相关内容的记载,此处不再赘述。
在接收模块81接收到当前图像的编码比特流后,解码模块82对当前图像的编码比特流进行解码,得到该当前图像的图像比特流和当前图像的层次标识。进一步地,解码模块82根据当前图像的图像比特流和参考图像缓冲区中的参考图像,获取当前图像的重建图像。具体地,解码模块82参考RefBuffer0和RefBuffer1中存储的参考图像对当前图像的比特流进行重建,得到当前图像的重建图像。
进一步地,管理模块83根据解码模块82获取到的当前图像的层次标识可以确定出与当前图像对应的参考图像缓冲区的目标管理方式,然后管理模块83根据该目标管理方式,对参考图像缓冲区进行管理。结合图2所示的预设的图像层次结构,层次标识“0”标识出的目标管理方式为:使用当前图像的重建图像替换RefBuffer0中的参考图像。层次标识为“1”标识出的目标管理方式为:将参考图像缓冲区中RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。而层次标识为“2”标识出目标管理方式为:当前图像的重建图像不能作为参考图像存入参考帧缓冲区。
具体地,当前图像的层次标识为“0”时,管理模块83使用当前图像的重建图像替换RefBuffer0中的参考图像,而当前图像的层次标识为“1”,管理模块83将参考图像缓冲区中RefBuffer0中的参考图像移入到RefBuffer1中,并将当前图像的重建图像存入到RefBuffer0中。而当前图像的层次标识为“2”时,管理模块83确定出当前图像的重建图像不能作为参考图像存入参考帧缓冲区,即管理模块83对参考图像缓冲区不进行操作。
本实施提供的解码器,接收的当前图像的编码比特流,在该编码比特流中包括当前图像的层次标识,该层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式,对该编码比特流进行解码,得到当前图像的图像比特流和当前图像的层次标识,根据当前图像的图像比特流和参考图像缓冲区中参考图像,获取当前图像的重建图像,并根据当前图像的层次标所标识的与当前图像对应的参考图像缓冲区的目标管理方式,对所述参考图像缓冲区进行管理。在本实施例中通过在编码时预设的图像层次结构,根据该预设的图像层次结构,对参考图像缓冲区进行管理,以较少缓存单元个数实现图像间灵活的参考关系,克服了现有技术中存在的参考图像缓冲区的缓冲单元的个数较多的问题,避免了资源浪费。
图9本发明实施例提供的一种视频编解码系统,该视频编解码系统包括:上述实施例提供的编码器91和上述实施例提供的解码器92。关于编码器91和解码器92的相关介绍参见上述实例中相关内容的记载,此处不再赘述。
本实施例提供的视频编解码系统,编码器在进行编码前,预先设置视频文件的图像层次结构,获取当前图像和当前图像的序号,根据该序号和预设的图像层次结构,确定当前图像所处的图像层次,生成当前图像的层次标识,其中,预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,层次标识用于标识与当前图像对应的参考图像缓冲区的目标管理方式,参考参考图像缓冲区中的参考图像,对当前图像进行编码,得到当前图像的编码比特流,该编码比特流包括该层次标识,根据该层次标识所标识的目标管理方式,对参考图像缓冲区进行管理。解码器接收当前图像的编码比特流,在该编码比特流中包括当前图像的层次标识,对该编码比特流进行解码,得到当前图像的图像比特流和当前图像的层次标识,根据当前图像的图像比特流和参考图像缓冲区中参考图像,获取当前图像的重建图像,并使用当前图像的层次标所标识与当前图像对应的参考图像缓冲区的目标管理方式,对参考图像缓冲区进行管理。在本实施例中通过在编码时预设的图像层次结构,根据该预设的图像层次结构,对参考图像缓冲区进行管理,以较少缓存单元个数实现图像间灵活的参考关系,克服了现有技术中存在的参考图像缓冲区的缓冲单元的个数较多的问题,避免了资源浪费。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种视频编码方法,其特征在于,包括:
获取当前图像和所述当前图像的序号;
根据所述序号和预设的图像层次结构,确定所述当前图像所处的图像层次,并生成所述当前图像的层次标识;其中,所述预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,所述层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式;
参考所述参考图像缓冲区中的参考图像,对所述当前图像进行编码,得到所述当前图像的编码比特流;其中,所述编码比特流包括当前图像的层次标识;
使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
2.根据权利要求1所述的视频编码方法,其特征在于,所述参考图像缓冲区的管理方式包括:
使用所述当前图像的重建图像替换所述参考图像缓冲区中预先指定的缓存单元中的参考图像;
或者,根据预设的移位策略,将所述参考图像缓冲区中至少一个缓存单元中的参考图像进行移位处理,并根据所述移位策略将所述当前图像的重建图像存入缓存单元中;
或者,将所述参考图像缓冲区中预先指定的至少两个缓存单元中的参考图像进行交换。
3.根据权利要求1所述的视频编码方法,其特征在于,所述根据所述序号和预设的图像层次结构,确定所述当前图像所处的图像层次,并生成所述当前图像的层次标识包括:
获取所述当前图像的特征参数;
根据所述当前图像的特征参数,判断是否对所述当前图像使用所述预设的图像层次结构进行编码处理;
如果判断结果为是,根据所述当前图像的序号和预设的图像层次结构,确定所述当前图像所处的图像层次,并根据所述当前图像所处的图像层次生成所述层次标识。
4.根据权利要求3所述的视频编码方法,其特征在于,所述根据所述当前图像的特征参数,判断是否使用所述预设的图像层次结构对所述当前图像进行编码处理包括:
获取所述当前图像与所述初始图像的前一幅图像之间的相对运动幅度值,将所述相对运动幅度值与预设的第一阈值进行比较,如果所述相对运动幅度值小于所述第一阈值,判定使用所述预设的图像层次结构对所述视频文件进行编码处理;
或者,
获取所述初始图像的预测模式中采用的预测块的数量,将所述预测块的数量与预设的第二阈值进行比较,如果所述预测块的数量大于所述第二阈值,判定使用所述预设的图像层次结构对所述视频文件进行编码处理;
或者,
获取所述初始图像的背景宏块与总宏块的比例值,将比例值与预设的第三阈值进行比较,如果所述比例值小于所述第三阈值,判定使用所述图像层次结构对所述初始图像进行编码处理。
5.根据权利要求3所述的视频编码方法,其特征在于,还包括:
如果判断结果为否,生成所述当前图像的层次标识。
6.根据权利要求1-5任一项所述的视频编码方法,其特征在于,所述参考所述参考图像缓冲区中的参考图像,对所述当前图像进行编码,得到所述当前图像的编码比特流包括:
将所述当前图像所处的图像层次与预设的门限值进行比较;
如果所述当前图像所处的图像层次小于所述门限值,调整预设的编码参数中至少一个参数,得到第一目标编码参数,根据所述第一目标编码参数和所述参考图像对所述当前图像进行编码,得到图像比特流;如果所述当前图像所处的图像层次大于或等于所述门限值,调整所述预设的编码参数中至少一个参数,得到第二目标编码参数;根据所述第二目标编码参数和所述参考图像对所述当前图像进行编码,得到所述图像比特流;
将所述当前图像的层次标识写入所述图像比特流,得到所述编码比特流。
7.一种视频解码方法,其特征在于,包括:
接收当前图像的编码比特流;其中,所述编码比特流中包括所述当前图像的层次标识,所述当前图像的层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式;
对所述当前图像的编码比特流进行解码,得到所述当前图像的图像比特流和所述层次标识;
根据所述图像比特流和所述参考图像缓冲区中的参考图像,获取所述当前图像的重建图像;
使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
8.根据权利要求7所述的视频编码方法,其特征在于,所述参考图像缓冲区的管理方式包括:
使用所述当前图像的重建图像替换所述参考图像缓冲区中预先指定的缓存单元中的参考图像;
或者,根据预设的移位策略,将所述参考图像缓冲区中至少一个缓存单元中的参考图像进行移位处理,并根据所述移位策略将所述当前图像的重建图像存入缓存单元中;
或者,将所述参考图像缓冲区中预先指定的至少两个缓存单元中的参考图像进行交换。
9.一种编码器,其特征在于,包括:
获取模块,获取当前图像和所述当前图像的序号;
确定模块,用于根据所述当前图像的序号和预设的图像层次结构,确定所述当前图像所处的图像层次,并生成所述当前图像的层次标识;其中,所述预设的图像层次结构包括图像层次间的参考关系和各图像层次的构成,所述层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式;
编码模块,用于参考所述参考图像缓冲区中的参考图像,对所述当前图像进行编码,得到所述当前图像的编码比特流;其中,所述编码比特流包括当前图像的层次标识;
管理模块,用于使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
10.一种解码器,其特征在于,包括:
接收模块,用于接收当前图像的编码比特流;其中,所述编码比特流中包括所述当前图像的层次标识,所述当前图像的层次标识用于标识与所述当前图像对应的参考图像缓冲区的目标管理方式;
解码模块,用于对所述当前图像的编码比特流进行解码,得到所述当前图像的图像比特流和所述层次标识,根据所述图像比特流和所述参考图像缓冲区中的参考图像,获取所述当期图像的重建图像;
管理模块,用于使用所述层次标识所标识的所述目标管理方式,对所述参考图像缓冲区进行管理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310008086.8A CN103916666B (zh) | 2013-01-09 | 2013-01-09 | 视频编码方法、解码方法、编码器及解码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310008086.8A CN103916666B (zh) | 2013-01-09 | 2013-01-09 | 视频编码方法、解码方法、编码器及解码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103916666A true CN103916666A (zh) | 2014-07-09 |
CN103916666B CN103916666B (zh) | 2017-07-14 |
Family
ID=51042010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310008086.8A Active CN103916666B (zh) | 2013-01-09 | 2013-01-09 | 视频编码方法、解码方法、编码器及解码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103916666B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1535029A (zh) * | 2003-12-31 | 2004-10-06 | 中国科学院计算技术研究所 | 一种参考图像缓冲区管理方法 |
CN101065780A (zh) * | 2004-10-14 | 2007-10-31 | 诺基亚公司 | 视频编码中的参考图像管理 |
CN101189881A (zh) * | 2005-04-13 | 2008-05-28 | 诺基亚公司 | 可分级视频编码中的帧号编码 |
WO2013002700A1 (en) * | 2011-06-30 | 2013-01-03 | Telefonaktiebolaget L M Ericsson (Publ) | Reference picture signaling |
-
2013
- 2013-01-09 CN CN201310008086.8A patent/CN103916666B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1535029A (zh) * | 2003-12-31 | 2004-10-06 | 中国科学院计算技术研究所 | 一种参考图像缓冲区管理方法 |
CN101065780A (zh) * | 2004-10-14 | 2007-10-31 | 诺基亚公司 | 视频编码中的参考图像管理 |
CN101189881A (zh) * | 2005-04-13 | 2008-05-28 | 诺基亚公司 | 可分级视频编码中的帧号编码 |
WO2013002700A1 (en) * | 2011-06-30 | 2013-01-03 | Telefonaktiebolaget L M Ericsson (Publ) | Reference picture signaling |
Non-Patent Citations (1)
Title |
---|
RICKARD SJöBERG等: "Overview of HEVC High-Level Syntax and Reference Picture Management", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》 * |
Also Published As
Publication number | Publication date |
---|---|
CN103916666B (zh) | 2017-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104718756B (zh) | 利用经修改的参考的内容自适应预测性图片和功能预测性图片进行下一代视频译码 | |
KR101941955B1 (ko) | 재귀적 블록 파티셔닝 | |
CN100415002C (zh) | 多模式多视点视频信号编码压缩方法 | |
CN105684409A (zh) | 在视频和图像编码和解码中使用散列值来表示各块 | |
CN106031177A (zh) | 用于硬件加速的视频编码的主编码器 | |
CN110149513A (zh) | 选择运动向量精度 | |
KR20200122416A (ko) | 이미지 인코딩 방법 및 장치, 그리고 이미지 디코딩 방법 및 장치 | |
CN103124349A (zh) | 多级有效图扫描 | |
WO2011002914A1 (en) | System and method for providing high throughput entropy coding using syntax element partitioning | |
CN101883284B (zh) | 基于背景建模和可选差分模式的视频编/解码方法及系统 | |
CN102857746A (zh) | 环路滤波编解码方法及装置 | |
Xiao et al. | Fast hash-based inter-block matching for screen content coding | |
CN114501010A (zh) | 图像编码方法、图像解码方法及相关装置 | |
WO2023082834A1 (zh) | 视频压缩方法、装置、计算机设备和存储介质 | |
CN110225343A (zh) | 一种视频编码的码率控制方法及装置 | |
CN106791850A (zh) | 视频编码方法及装置 | |
KR20230070492A (ko) | 피처 맵 데이터의 시그널링으로 디코딩 | |
CN104506866A (zh) | 一种适用于多码流的视频编码处理方法和视频编码器 | |
Hadizadeh et al. | Learned Scalable Video Coding For Humans and Machines | |
CN103916666A (zh) | 视频编码方法、解码方法、编码器及解码器 | |
CN112954350B (zh) | 一种基于帧分类的视频后处理优化方法及装置 | |
CN112468826B (zh) | 一种基于多层gan的vvc环路滤波方法及系统 | |
CN103716627B (zh) | 分层编解码方法及装置 | |
CN108600751A (zh) | 基于jnd的多边信息分布式视频编码、解码的方法及系统 | |
US20240137502A1 (en) | Systems and methods for encoding and decoding video with memory-efficient prediction mode selection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |