一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于JND算法的视频编码方法、装置、介质及计算设备与流程

2022-03-16 03:14:02 来源:中国专利 TAG:

一种基于jnd算法的视频编码方法、装置、介质及计算设备
技术领域
1.本公开的实施方式涉及视频编码领域,更具体地,本公开的实施方式涉及一种基于jnd算法的视频编码方法、装置、介质及计算设备。


背景技术:

2.本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.视频编码是指,通过压缩技术,将原始视频格式的文件转换成另一种视频格式文件。其中,视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像。由于连续的帧之间相似性极高,为便于储存传输,我们需要对原始的视频进行编码压缩,以去除视频数据中的冗余信息。
4.传统的视频编码技术主要针对空间域冗余、时间域冗余以及统计冗余进行压缩编码,很少考虑到人眼视觉系统特性和心理效应,因此存在大量的视觉冗余。


技术实现要素:

5.在本上下文中,本公开的实施方式期望提供一种基于jnd算法的视频编码方法及装置。
6.在本公开实施方式的第一方面中,提供了一种基于jnd算法的视频编码方法,包括:
7.计算视频中待编码的视频帧中的各个待编码的编码单元的残差;
8.获取所述待编码的视频帧之前的任一视频帧的编码结果;其中,所述任一视频帧的编码结果至少包括第一编码数据,所述第一编码数据包括基于非jnd算法,使用与所述任一视频帧对应的参数,对所述任一视频帧中的各个待编码的编码单元的残差进行编码,得到的编码数据;所述参数包括基于预设的码率控制算法计算出的用于编码的参数;
9.将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数;
10.基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,并将所述第二编码数据作为实际编码数据进行输出;以及,基于非jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第三编码数据;其中,所述第三编码数据用于作为所述预设的码率控制算法的输入,计算与所述视频帧的之后的任一视频帧对应的编码参数。
11.在本公开的一个实施例中,所述计算视频中待编码的视频帧中的各个待编码的编码单元的残差,包括:
12.获取所述视频中待编码的视频帧,确定所述待编码的视频帧中的各个待编码的编码单元;
13.计算所述各个待编码的编码单元与所述视频帧之前的任一视频帧中已完成编码的编码单元的残差。
14.在本公开的一个实施例中,所述编码单元包括宏块或ctu编码树单元。
15.在本公开的一个实施例中,所述预设的jnd算法包括应用于像素域的jnd算法;
16.基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,包括:
17.基于所述像素域的jnd算法,计算所述视频帧中的各个待编码的编码单元的jnd系数;
18.计算所述视频帧中的各个待编码的编码单元的残差与所述jnd系数的差值,并使用与所述视频帧对应的参数,对所述差值进行变换、量化和熵编码,确定出与所述视频帧中的各个待编码的编码单元对应的编码数据。
19.在本公开的一个实施例中,所述预设的jnd算法包括应用于变换域的jnd算法;
20.基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,包括:
21.对所述视频帧中的各个待编码的编码单元的残差进行dct离散余弦变换,确定所述视频帧中的各个待编码的编码单元对应的dct系数;
22.基于所述变换域的jnd算法,根据所述dct系数确定所述视频帧中的各个待编码的编码单元对应的jnd系数;
23.计算所述视频帧中的各个待编码的编码单元对应的所述dct系数与所述jnd系数的差值,并使用与所述视频帧对应的参数,对所述差值进行量化和熵编码,确定出与所述视频帧中的各个待编码的编码单元对应的编码数据。
24.在本公开的一个实施例中,所述参数包括量化参数;
25.所述将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数,包括:
26.获取所述待编码的视频帧的之前的任一视频帧的第一编码数据,将所述第一编码数据作为所述预设的码率控制算法的输入,以由所述预设的码率控制算法预测所述待编码的视频帧的编码数据;
27.根据所述预测的待编码的视频帧的编码数据计算与所述视频帧对应的量化参数。
28.在本公开实施方式的第二方面中,提供了一种基于jnd算法的视频编码装置,包括:
29.残差计算模块,计算视频中待编码的视频帧中的各个待编码的编码单元的残差;
30.获取模块,获取所述待编码的视频帧之前的任一视频帧的编码结果;其中,所述任一视频帧的编码结果至少包括第一编码数据,所述第一编码数据包括基于非jnd算法,使用与所述任一视频帧对应的参数,对所述任一视频帧中的各个待编码的编码单元的残差进行编码,得到的编码数据;所述参数包括基于预设的码率控制算法计算出的用于编码的参数;
31.码率控制模块,将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数;
32.编码模块,基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,并将所述第二编码数据作
为实际编码数据进行输出;以及,基于非jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第三编码数据;其中,所述第三编码数据用于作为所述预设的码率控制算法的输入,计算与所述视频帧的之后的任一视频帧对应的编码参数。
33.在本公开实施方式的第三方面中,提供了一种存储介质;其上存储有计算机指令,该指令被处理器执行时实现如下所述方法的步骤:
34.计算视频中待编码的视频帧中的各个待编码的编码单元的残差;
35.获取所述待编码的视频帧之前的任一视频帧的编码结果;其中,所述任一视频帧的编码结果至少包括第一编码数据,所述第一编码数据包括基于非jnd算法,使用与所述任一视频帧对应的参数,对所述任一视频帧中的各个待编码的编码单元的残差进行编码,得到的编码数据;所述参数包括基于预设的码率控制算法计算出的用于编码的参数;
36.将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数;
37.基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,并将所述第二编码数据作为实际编码数据进行输出;以及,基于非jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第三编码数据;其中,所述第三编码数据用于作为所述预设的码率控制算法的输入,计算与所述视频帧的之后的任一视频帧对应的编码参数。
38.在本公开实施方式的第四方面中,提供了一种计算设备,包括:
39.处理器;以及,用于存储处理器可执行指令的存储器;
40.其中,所述处理器通过运行所述可执行指令以实现如下所述方法的步骤:
41.计算视频中待编码的视频帧中的各个待编码的编码单元的残差;
42.获取所述待编码的视频帧之前的任一视频帧的编码结果;其中,所述任一视频帧的编码结果至少包括第一编码数据,所述第一编码数据包括基于非jnd算法,使用与所述任一视频帧对应的参数,对所述任一视频帧中的各个待编码的编码单元的残差进行编码,得到的编码数据;所述参数包括基于预设的码率控制算法计算出的用于编码的参数;
43.将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数;
44.基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,并将所述第二编码数据作为实际编码数据进行输出;以及,基于非jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第三编码数据;其中,所述第三编码数据用于作为所述预设的码率控制算法的输入,计算与所述视频帧的之后的任一视频帧对应的编码参数。
45.本公开以上的实施方式,至少具有如下的有益效果:
46.一方面,由于在输出实际编码数据时,使用了基于jnd算法得到的编码数据,因此可以减少视觉冗余,降低视频帧的编码数据量;另一方面,由于将基于非jnd算法得到的编码数据作为码率控制算法的输入,因此可以避免码率控制算法导致jnd算法失效的问题,同
时,通过码率控制算法可以确定之后的视频帧对应的编码参数,从而将码率控制在一定范围内。
附图说明
47.通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
48.图1示意性地示出了根据本公开实施方式的一种码率控制过程的示意图;
49.图2示意性地示出了根据本公开实施方式的一种基于jnd算法的视频编码方法的流程图;
50.图3示意性地示出了根据本公开实施方式的一种基于jnd算法的视频编码装置的框图;
51.图4示意性地示出了根据本公开实施方式的一种基于jnd算法的视频编码介质的示意图;
52.图5示意性地示出了根据本公开实施方式的一种能够实现上述方法的电子设备的示意图。
53.在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
54.下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
55.本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机可读存储介质。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
56.根据本公开的实施方式,提出了一种基于jnd算法的视频编码方法、装置、介质和计算设备。
57.在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
58.下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
59.发明概述
60.本发明人发现,在采用jnd算法进行视频编码时,虽然可以减少视觉冗余,降低视频帧的编码数据量,但由于码率控制算法的存在,会使得视频数据按指定的输出码率进行编码,因此,当码率控制算法发现编码数据量小于指定的输出码率时,会将编码数据量增大到指定的输出码率,以实现对输出码率自适应调整。可见,码率控制算法的自适应调整会导致jnd算法失效。
61.有鉴于此,本说明书提供一种在对视频帧进行编码时进行两次计算,一次基于jnd算法进行编码,得到用于作为实际编码数据进行输出的编码数据,另一次基于非jnd算法进
行编码,得到用于作为码率控制算法的输入的编码数据,以确定针对之后的视频帧进行编码时使用的编码参数,从而避免因码率控制算法的存在导致jnd算法失效,实现了利用jnd算法减少视觉冗余,降低编码数据量的技术方案。
62.本说明书的核心技术构思在于:
63.由于使用基于jnd算法进行编码得到的编码数据,作为码率控制算法的输入时,会导致码率控制算法进行自适应调整,因此,可以额外增加一次基于非jnd算法的编码,将基于非jnd算法进行编码得到的编码数据,作为码率控制算法的输入,这样就可以避免原本码率控制算法对基于jnd算法进行编码得到的编码数据进行调整后产生的失效问题。而引入jnd算法是为了有效减小视觉冗余,降低视频帧的编码数据量,因此,可以将基于jnd算法进行编码得到的编码数据作为实际编码数据进行输出。
64.通过以上技术方案,一方面,由于在输出实际编码数据时,使用了基于jnd算法得到的编码数据,因此可以减少视觉冗余,降低视频帧的编码数据量;另一方面,由于将基于非jnd算法得到的编码数据作为码率控制算法的输入,因此可以避免码率控制算法导致jnd算法失效的问题,同时,通过码率控制算法可以确定之后的视频帧对应的编码参数,从而将码率控制在一定范围内。
65.在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。
66.应用场景总览
67.在传输压缩编码视频时,需要考虑视频质量和传输带宽,如果带宽大,那么要尽可能传输质量更高的视频,则可以加大码率;如果带宽低,则需要提高压缩比从而减小码率;如果带宽动态变化,那么码率也需要动态变化以适应带宽的变化。可见,受到传输带宽的限制,需要对编码码率进行码率控制,使得编码后的码率与传输带宽上限匹配,同时保证对视频进行编码后的失真尽可能的小。
68.而编码码率的影响因素主要可以包括两个方面,一是视频本身的特征,如空间分辨率和视频内容等,二是编码参数,如量化参数和编码结构等。
69.因此,在一个例子中,可以通过改变量化参数来对编码码率进行控制。请参见图1,图1是一示例性实施例提供的一种码率控制过程的示意图。
70.如图1所示,在将量化参数输入至编码器之后,编码器可以根据量化参数对当前视频帧进行编码,输出编码后的实际编码数据;再将实际编码数据作为码率控制算法的输入,预测为下一视频帧分配的目标编码数据量,并根据目标编码数据量计算下一视频帧对应的量化参数;然后再将下一视频帧对应的量化参数输入至编码器,以使编码器根据下一视频帧对应的量化参数对下一视频帧进行编码,输出下一视频帧编码后的实际编码数据。如此进行循环控制,使得对视频帧进行编码后的实际编码数据量与目标编码数据量尽可能接近。
71.例如,当实际编码数据量少于目标编码数据量时,码率控制算法会增大实际编码数据量,反之则会减少实际编码数据量。
72.其中,在初始化时,码率控制算法可以根据输入视频的内容、传输信道中带宽的上限以及缓冲器的状态估计一个量化参数,并将该量化参数输入至编码器,然后执行如图1所示的循环。
73.目前,为了进一步提高编码的效率,可以针对人类视觉系统(hvs,human vision system)的一些特性,将感知编码技术(pvc,perceptual video coding)引入传统的视频编码技术,通过挖掘人眼对于图像的主观感知状态和人类天生的视觉选择性注意机制等来消除人类主观视觉冗余。
74.其中,用来度量人眼对图像中不同区域失真的敏感性的最小可觉察误差(jnd,just noticeable distortion)是当前研究的热点,jnd用于表示人眼不能察觉的最大图像失真,即人眼不能感知的变化,体现了人眼对图像改变的容忍度。换句话说,由于人眼的各种屏蔽效应,人眼只能觉察超过某一阈值的噪声,该阈值就是人眼的最小可觉察误差。常见的jnd算法主要可以分为两类:基于像素域的jnd算法和基于变换域的jnd算法。
75.由于jnd算法的引入,可以减少视频帧的视觉冗余,降低视频帧的编码数据量。
76.举例来说,在普通的视频编码中,编码码率=e(dct(x,y)),其中,dct(x,y)表示将二维图像从空间域(在图像也可称为像素域)转换到频域后的计算结果,又称为离散余弦变换(dct,discrete cosine transform)系数,代表了频率为(x,y)的二维波的振幅;x表示二维波的水平方向频率,y表示二维波的垂直方向频率;e表示对dct系数进行熵编码以得到二进制的编码码率。
77.继续举例,当引入基于变换域的jnd算法之后,针对每个dct系数,可以计算出一个jnd的值,此时编码码率=e(dct(x,y)-jnd),所以编码码率减少,即编码数据量降低。
78.而根据前述可知,由于编码中使用码率控制算法,虽然当前帧的实际编码数据量通过引入jnd算法减少,但通过jnd算法降低后的当前帧的实际编码数据量会作为码率控制算法的输入,导致码率控制算法发现实际编码数据量少于目标编码数据量,从而通过计算出的量化参数将之后的视频帧的实际编码数据量再次增大至指定的编码数据量,最终导致jnd算法失效。
79.需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
80.示例性方法
81.下面将通过具体的实施例对本说明书的技术构思进行详细描述。
82.本公开旨在提供一种在对视频帧进行编码时进行两次计算,一次基于jnd算法进行编码,得到用于作为实际编码数据进行输出的编码数据,另一次基于非jnd算法进行编码,得到用于作为码率控制算法的输入的编码数据,以确定针对之后的视频帧进行编码时使用的编码参数,从而避免因码率控制算法的存在导致jnd算法失效,实现了利用jnd算法减少视觉冗余,降低编码数据量的技术方案。
83.在实现时,可以计算视频中待编码的视频帧中的各个待编码的编码单元的残差;
84.例如,可以获取所述视频中待编码的视频帧,确定所述待编码的视频帧中的各个待编码的编码单元;再计算所述各个待编码的编码单元与所述视频帧之前的任一视频帧中已完成编码的编码单元的残差。
85.然后可以获取所述待编码的视频帧之前的任一视频帧的编码结果;
86.其中,所述任一视频帧的编码结果至少包括第一编码数据,所述第一编码数据包括基于非jnd算法,使用与所述任一视频帧对应的参数,对所述任一视频帧中的各个待编码
的编码单元的残差进行编码,得到的编码数据;所述参数包括基于预设的码率控制算法计算出的用于编码的参数;
87.接着可以将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数;
88.例如,可以所述第一编码数据作为所述预设的码率控制算法的输入,以由所述预设的码率控制算法预测所述待编码的视频帧的编码数据;并根据所述预测的待编码的视频帧的编码数据计算与所述视频帧对应的量化参数。
89.再基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,并将所述第二编码数据作为实际编码数据进行输出;
90.以及,基于非jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第三编码数据;其中,所述第三编码数据用于作为所述预设的码率控制算法的输入,计算与所述视频帧的之后的任一视频帧对应的编码参数。
91.通过以上技术方案,一方面,由于在输出实际编码数据时,使用了基于jnd算法得到的编码数据,因此可以减少视觉冗余,降低视频帧的编码数据量;另一方面,由于将基于非jnd算法得到的编码数据作为码率控制算法的输入,因此可以避免码率控制算法导致jnd算法失效的问题,同时,通过码率控制算法可以确定之后的视频帧对应的编码参数,从而将码率控制在一定范围内。
92.请参见图2,图2是一示例性实施例提供的一种基于jnd算法的视频编码方法的流程图,所述方法包括以下步骤:
93.步骤201,计算视频中待编码的视频帧中的各个待编码的编码单元的残差。
94.由前述可知,一段视频由连续的视频帧构成,每个视频帧为一幅图像,在对视频进行编码时,可以分为帧内编码和帧间编码两种。
95.其中,编码单元为进行编码处理的最基本单元。由于图像由像素构成,因此一个像素可以是一个编码单元,但如果按照像素来对编码单元进行编码,数据量会较大,所以一般可以把图像分割为包含多个像素的块。
96.优选的,在示出的一种实施方式中,所述编码单元包括宏块或ctu编码树单元。
97.例如,在h264标准中,一个宏块大小为16*16,包含一个16*16的亮度块,而对于常用的4:2:0采样格式来说还包含两个8*8的色度块。
98.又如,在hevc标准中,与宏块类似的结构为编码树单元(ctu,coding tree unit),其尺寸可以由编码器指定,最大可以是64*64,最小可以是16*16。
99.具体的,在确定出视频中待编码的视频帧中的各个编码单元之后,可以计算各个待编码的编码单元的残差。
100.在示出的一种实施方式中,可以获取所述视频中待编码的视频帧,确定所述待编码的视频帧中的各个待编码的编码单元;然后计算所述各个待编码的编码单元与所述视频帧之前的任一视频帧中已完成编码的编码单元的残差。
101.例如,对于帧间编码来说,可以获取视频中待编码的视频帧,确定待编码的视频帧中的各个待编码的编码单元;然后获取视频帧之前的任一已完成编码的视频帧,确定之前的任一已完成编码的视频帧中的编码单元;将待编码的编码单元与已完成编码的编码单元
的差值作为残差。
102.值得说明的是,对于视频帧之前的任一视频帧的选取方法,本领域技术人员可以根据需要自行确定。
103.另外,对于帧内编码来说,可以获取视频帧中各个待编码的编码单元,以及已完成编码的编码单元,将待编码的编码单元与已完成编码的编码单元的差值作为残差。
104.若要对上述步骤201获得的残差进行编码,还需要根据以下步骤202和步骤203确定与视频帧对应的参数。
105.步骤202,获取所述待编码的视频帧之前的任一视频帧的编码结果。
106.其中,所述任一视频帧的编码结果至少包括第一编码数据,所述第一编码数据包括基于非jnd算法,使用与所述任一视频帧对应的参数,对所述任一视频帧中的各个待编码的编码单元的残差进行编码,得到的编码数据;所述参数包括基于预设的码率控制算法计算出的用于编码的参数。
107.具体的,所述待编码的视频帧之前的任一视频帧为已完成编码的视频帧。已完成编码的视频帧的编码结果包括两部分,一是基于非jnd算法,使用与视频帧对应的参数,对视频帧中的各个待编码的编码单元的残差进行编码,得到的编码数据;二是基于预设的jnd算法,使用与视频帧对应的参数,对视频帧中的各个待编码的编码单元的残差进行编码,得到的又一编码数据。其中,上述与视频帧对应的参数包括基于预设的码率控制算法计算出的用于编码的参数。
108.由前述可知,为了避免出现因码率控制算法的存在导致jnd算法失效的问题,需要将基于非jnd算法计算出的编码数据,作为所述预设的码率控制算法的输入,取代基于预设的jnd算法计算出的编码数据,计算与所述视频帧对应的参数。
109.步骤203,将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数。
110.具体的,可以将第一编码数据作为所述预设的码率控制算法的输入,以由所述预设的码率控制算法预测所述待编码的视频帧的目标编码数据量;再根据所述预测的待编码的视频帧的目标编码数据量计算与所述视频帧对应的量化参数。
111.其中,关于上述过程可以参见图1的相关描述,在此不再赘述。
112.优选的,在示出的一种实施方式中,所述参数包括量化参数;
113.进一步的,可以获取所述待编码的视频帧的之前的任一视频帧的第一编码数据,将所述第一编码数据作为所述预设的码率控制算法的输入,以由所述预设的码率控制算法预测所述待编码的视频帧的编码数据;根据所述预测的待编码的视频帧的编码数据计算与所述视频帧对应的量化参数。
114.需要说明的是,视频编码至少包括变换、量化和熵编码三个过程,通过从时域到频域的变换,可以去除相邻数据之间的相关性,即去除空间冗余;而通过在不降低视觉效果的前提下减少图像编码长度,减少视觉恢复中不必要的信息,即量化过程,可以减少视觉冗余;而熵编码可以根据待编码数据的概率特性,减少编码冗余。
115.其中,量化过程可以根据量化参数来执行,量化参数qp是量化步长qstep的序号。对于亮度编码而言,量化步长qstep共有52个值,qp取值为0~51,而对于色度编码而言,量化步长qstep共有40个值,qp的取值为0~39。
116.接下来可以根据上述确定出的与视频帧对应的参数,对视频帧中的各个待编码的编码单元的残差进行编码。
117.步骤204,基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,并将所述第二编码数据作为实际编码数据进行输出;以及,基于非jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第三编码数据。其中,所述第三编码数据用于作为所述预设的码率控制算法的输入,计算与所述视频帧的之后的任一视频帧对应的编码参数。
118.具体的,可以对视频帧中的各个待编码的编码单元的残差进行以下的两次编码计算;
119.一是基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据;
120.二是基于非jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第三编码数据。
121.由前述可知,第二编码数据用于作为实际编码数据进行输出,而第三编码数据用于作为所述预设的码率控制算法的输入,计算与所述视频帧的之后的任一视频帧对应的编码参数。
122.其中,预设的jnd算法、预设的码率控制算法以及非jnd算法可以由本领域技术人员自行选择,本公开对具体何种算法不做限定。
123.需要说明的是,由于jnd算法主要可以分为应用于像素域的jnd算法和应用于变换域的jnd算法,因此对于视频编码来说,两种算法的区别点主要体现在变换过程,采取的步骤也有所差异。
124.在示出的一种实施方式中,所述预设的jnd算法包括应用于像素域的jnd算法;
125.进一步的,可以基于所述像素域的jnd算法,计算所述视频帧中的各个待编码的编码单元的jnd系数;
126.计算所述视频帧中的各个待编码的编码单元的残差与所述jnd系数的差值,并使用与所述视频帧对应的参数,对所述差值进行变换、量化和熵编码,确定出与所述视频帧中的各个待编码的编码单元对应的编码数据。
127.具体的,可以先基于像素域的jnd算法,计算视频帧中的各个待编码的编码单元的jnd系数;再计算视频帧中的各个待编码的编码单元的残差与jnd系数的差值;然后,使用与视频帧对应的参数,对上述残差与jnd系数的差值进行变换、量化和熵编码;最终,确定出与各个待编码的编码单元对应的编码数据。
128.而在示出的另一种实施方式中,所述预设的jnd算法包括应用于变换域的jnd算法;
129.进一步的,可以对所述视频帧中的各个待编码的编码单元的残差进行dct离散余弦变换,确定所述视频帧中的各个待编码的编码单元对应的dct系数;基于所述变换域的jnd算法,根据所述dct系数确定所述视频帧中的各个待编码的编码单元对应的jnd系数;计算所述视频帧中的各个待编码的编码单元对应的所述dct系数与所述jnd系数的差值,并使用与所述视频帧对应的参数,对所述差值进行量化和熵编码,确定出与所述视频帧中的各
个待编码的编码单元对应的编码数据。
130.具体的,可以先进行变换,即对各个待编码的编码单元的残差进行dct离散余弦变换,并确定各个待编码的编码单元对应的dct系数;再基于变换域的jnd算法,根据dct系数确定各个待编码的编码单元对应的jnd系数;然后,计算各个待编码的编码单元对应的dct系数与jnd系数的差值,并使用与视频帧对应的参数,对dct系数与jnd系数的差值进行后续的量化和熵编码;最终,确定出与各个待编码的编码单元对应的编码数据。
131.其中,dct变换主要用于数据或图像的压缩,能够将空间域的信号转换到频域上,具有良好的去相关性的性能。另外,上述dct系数以及jnd系数的确定公式,与本公开发明点无关,在此不做赘述。
132.在以上实施例中,对视频帧进行编码时进行两次计算,一次基于jnd算法进行编码,得到用于作为实际编码数据进行输出的编码数据,另一次基于非jnd算法进行编码,得到用于作为码率控制算法的输入的编码数据,以确定针对之后的视频帧进行编码时使用的编码参数。通过以上技术方案,一方面,由于在输出实际编码数据时,使用了基于jnd算法得到的编码数据,因此可以减少视觉冗余,降低视频帧的编码数据量;另一方面,由于将基于非jnd算法得到的编码数据作为码率控制算法的输入,因此可以避免码率控制算法导致jnd算法失效的问题,同时,通过码率控制算法可以确定之后的视频帧对应的编码参数,从而将码率控制在一定范围内。
133.示例性装置
134.在介绍了本公开示例性实施方式的方法之后,接下来,请参见图3,图3是一示例性实施例提供的一种基于jnd算法的视频编码装置的框图。
135.下述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。
136.如图3所示,基于jnd算法的视频编码装置300可以包括:残差计算模块301、获取模块302、码率控制模块303和编码模块304。其中:
137.残差计算模块301被配置为计算视频中待编码的视频帧中的各个待编码的编码单元的残差;
138.获取模块302被配置为获取所述待编码的视频帧之前的任一视频帧的编码结果;其中,所述任一视频帧的编码结果至少包括第一编码数据,所述第一编码数据包括基于非jnd算法,使用与所述任一视频帧对应的参数,对所述任一视频帧中的各个待编码的编码单元的残差进行编码,得到的编码数据;所述参数包括基于预设的码率控制算法计算出的用于编码的参数;
139.码率控制模块303被配置为将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数;
140.编码模块304被配置为基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,并将所述第二编码数据作为实际编码数据进行输出;以及,基于非jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第三编码数据;其中,所述第三编码数据用于作为所述预设的码率控制算法的输入,计算与所述视频帧的之后的
任一视频帧对应的编码参数。
141.在一实施例中,所述残差计算模块301进一步:
142.获取所述视频中待编码的视频帧,确定所述待编码的视频帧中的各个待编码的编码单元;
143.计算所述各个待编码的编码单元与所述视频帧之前的任一视频帧前向视频帧中已完成编码的编码单元的残差。
144.在一实施例中,所述编码单元包括宏块或ctu编码树单元。
145.在一实施例中,所述预设的jnd算法包括应用于像素域的jnd算法;
146.所述编码模块304进一步:
147.基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,包括:
148.基于所述像素域的jnd算法,计算所述视频帧中的各个待编码的编码单元的jnd系数;
149.计算所述视频帧中的各个待编码的编码单元的残差与所述jnd系数的差值,并使用与所述视频帧对应的参数,对所述差值进行变换、量化和熵编码,确定出与所述视频帧中的各个待编码的编码单元对应的编码数据。
150.在一实施例中,所述预设的jnd算法包括应用于变换域的jnd算法;
151.所述编码模块304进一步:
152.基于预设的jnd算法,使用与所述视频帧对应的参数,对所述视频帧中的各个待编码的编码单元的残差进行编码,得到第二编码数据,包括:
153.对所述视频帧中的各个待编码的编码单元的残差进行dct离散余弦变换,确定所述视频帧中的各个待编码的编码单元对应的dct系数;
154.基于所述变换域的jnd算法,根据所述dct系数确定所述视频帧中的各个待编码的编码单元对应的jnd系数;
155.计算所述视频帧中的各个待编码的编码单元对应的所述dct系数与所述jnd系数的差值,并使用与所述视频帧对应的参数,对所述差值进行量化和熵编码,确定出与所述视频帧中的各个待编码的编码单元对应的编码数据。
156.在一实施例中,所述编码参数包括量化参数;
157.所述码率控制模块303进一步:
158.所述将所述第一编码数据作为所述预设的码率控制算法的输入,计算与所述视频帧对应的参数,包括:
159.获取所述待编码的视频帧的之前的任一视频帧的第一编码数据,将所述第一编码数据作为所述预设的码率控制算法的输入,以由所述预设的码率控制算法预测所述待编码的视频帧的编码数据;
160.根据所述预测的待编码的视频帧的编码数据计算与所述视频帧对应的量化参数。
161.上述基于jnd算法的视频编码装置300的各个模块的具体细节已经在之前描述基于频域变换的词向量压缩方法流程中进行了详细的描述,因此,此处不再赘述。
162.应当注意,尽管在上文详细描述中提及基于jnd算法的视频编码装置300的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两
个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
163.示例性介质
164.在介绍了本公开示例性实施方式的装置之后,接下来,请参见图4,图4是一示例性实施例提供的一种基于jnd算法的视频编码介质的示意图。
165.在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施例的步骤。
166.参考图4所示,描述了根据本公开的实施例的用于实现上述方法的可读存储介质40,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的可读存储介质不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
167.所述可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
168.计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
169.可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
170.可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
171.示例性计算设备
172.在介绍了本公开示例性实施方式的方法、介质和装置之后,接下来,请参见图5,图5是一示例性实施例提供的一种能够实现上述方法的电子设备的示意图。
173.下面参照图5来描述根据本公开的这种实施例的电子设备500。图5显示的电子设备500仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
174.如图5所示,电子设备500以通用计算设备的形式表现。电子设备500的组件可以包括但不限于:上述至少一个处理单元501、上述至少一个存储单元502、连接不同系统组件(包括存储单元502和处理单元501)的总线503。
175.其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元501执行,使得所述处理单元501执行本说明书上述各种实施例的步骤。
176.存储单元502可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)5021和/或高速缓存存储单元5022,还可以进一步包括只读存储单元(rom)5023。
177.存储单元502还可以包括具有一组(至少一个)程序模块5025的程序/使用工具5024,这样的程序模块5025包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包含网络环境的现实。
178.总线503可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
179.电子设备500也可以与一个或多个外部设备504(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备500交互的设备通信,和/或与使得该电子设备500能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口505进行。并且,电子设备500还可以通过网络适配器506与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器506通过总线503与电子设备500的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备500使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
180.通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是cd-rom,u盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
181.应当注意,尽管在上文详细描述中提及了装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
182.此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
183.虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能
组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献