视频编码、解码方法、装置、电子设备及存储介质与流程

文档序号:27677126发布日期:2021-11-30 12:44阅读:107来源:国知局
视频编码、解码方法、装置、电子设备及存储介质与流程
本申请涉及视频处理
技术领域
,尤其涉及一种视频编码、解码方法、装置、电子设备及存储介质。
背景技术
近年来,随着深度学习技术的发展,已经有不少研究尝试采用深度学习模型替代传统视频编码框架中的部分模块或提出基于深度学习的端到端编码框架,尤其是在环路滤波工具上,相比于传统滤波工具能明显提升编码性能。但是,基于深度学习的环路滤波工具的使用,会增加视频解码端的解码复杂度,目前的一种处理方式是通过RDO(Ratedistortionoptimization,率失真优化)筛选出滤波后的视频帧中有增益提升的CTU(CodingTreeUnit,编码树单元),并在视频解码端对这部分CTU进行滤波。技术实现要素:但是,即便整个CTU存在增益,CTU中仍然会有部分像素点存在损失,导致整个CTU的总增益并不明显,将过多的计算资源用于增益并不明显的CTU,将极大地增加解码复杂度,且并不能大幅提高滤波后的图像质量。基于此,本申请实施例提供一种视频编码、解码方法、装置、电子设备及存储介质,可筛选出增益较大的区块进行滤波,提升滤波效率。一方面,本申请一实施例提供了一种视频编码方法,包括:从视频帧的编码数据中获得重建的视频帧,所述视频帧包括至少一个区块;对重建的视频帧进行滤波处理,获取重建的视频帧中的各个像素点在滤波处理后获得的增益;针对所述至少一个区块中的每一区块,根据所述每一区块中各个像素点的增益分布,确定对所述编码数据进行解码时是否需要对所述每一区块进行滤波处理;发送所述视频帧的编码数据,所述编码数据中包含需要进行滤波处理的区块的指示信息。一方面,本申请一实施例提供了一种视频解码方法,包括:获取视频帧的编码数据,所述视频帧包括至少一个区块,所述编码数据中包含需要进行滤波处理的区块的指示信息,每个区块的指示信息是根据所述每个区块中的像素点在滤波处理后获得的增益的增益分布确定的;从所述编码数据中获得重建的视频帧;基于所述指示信息,对所述重建的视频帧中需要进行滤波处理的区块进行滤波处理。一方面,本申请一实施例提供了一种视频编码装置,包括:解码模块,用于从视频帧的编码数据中获得重建的视频帧,所述视频帧包括至少一个区块;滤波模块,用于对重建的视频帧进行滤波处理,获取重建的视频帧中的各个像素点在滤波处理后获得的增益;筛选模块,用于针对所述至少一个区块中的每一区块,根据所述每一区块中各个像素点的增益分布,确定对所述编码数据进行解码时是否需要对所述每一区块进行滤波处理;发送模块,用于发送所述视频帧的编码数据,所述编码数据中包含需要进行滤波处理的区块的指示信息。可选地,所述筛选模块,具体用于:根据所述每一区块中各个像素点的增益分布,确定正增益的占比值;若所述正增益的占比值小于增益占比阈值,则确定对所述编码数据进行解码时不需要对所述每一区块进行滤波处理,否则确定对所述编码数据进行解码时需要对所述每一区块进行滤波处理。可选地,所述筛选模块,具体用于:将所述每一区块中增益为正的像素点的增益之和的绝对值,确定为正增益;将所述每一区块中增益为负的像素点的增益之和的绝对值,确定为负增益;将所述正增益和所述负增益之和,确定为增益总和;根据所述正增益与所述增益总和的比值,获得正增益的占比值。可选地,所述筛选模块还用于:根据所述每一区块中各个像素点的增益分布,获得增益统计特征值;根据所述增益统计特征值,确定增益占比阈值。可选地,所述筛选模块具体用于:根据预设的增益统计特征值与增益占比阈值之间的映射关系,获得所述增益统计特征值对应的增益占比阈值。可选地,所述视频编码装置还包括视频筛选模块,用于:在执行发送模块之前,基于率失真优化算法,根据所述指示信息的数据量和基于所述指示信息对所述视频帧滤波后获得的增益,确定是否需要在解码时对所述视频帧进行滤波处理;若需要,则将所述指示信息写入所述编码数据,并执行发送模块对应的功能;若不需要,则在视频帧的编码数据中写入不需要对该视频帧进行滤波处理的帧级开关信息,并则执行发送模块对应的功能。一方面,本申请一实施例提供了一种视频解码装置,包括:获取模块,用于获取视频帧的编码数据,所述视频帧包括至少一个区块,所述编码数据中包含需要进行滤波处理的区块的指示信息,每个区块的指示信息是根据所述每个区块中的像素点在滤波处理后获得的增益的增益分布确定的;视频解码模块,用于从所述编码数据中获得重建的视频帧;视频滤波模块,用于基于所述指示信息,对所述重建的视频帧中需要进行滤波处理的区块进行滤波处理。可选地,每个区块的指示信息是通过如下方式确定的:根据所述每一区块中各个像素点的增益分布,确定正增益的占比值;若所述正增益的占比值小于增益占比阈值,则确定对所述编码数据进行解码时不需要对所述每一区块进行滤波处理,否则确定对所述编码数据进行解码时需要对所述每一区块进行滤波处理。可选地,所述正增益的占比值是通过如下方式确定的:将所述每一区块中增益为正的像素点的增益之和的绝对值,确定为正增益;将所述每一区块中增益为负的像素点的增益之和的绝对值,确定为负增益;将所述正增益和所述负增益之和,确定为增益总和;根据所述正增益与所述增益总和的比值,获得正增益的占比值。可选地,所述增益占比阈值是通过如下方式确定的:根据所述每一区块中各个像素点的增益分布,获得增益统计特征值;根据所述增益统计特征值,确定增益占比阈值。可选地,所述增益占比阈值是根据预设的增益统计特征值与增益占比阈值之间的映射关系确定的。可选地,所述编码数据中还包括帧级开关信息,所述帧级开关信息是:基于率失真优化算法,根据所述指示信息的数据量和基于所述指示信息对所述视频帧滤波后获得的增益,确定的是否需要在解码时对所述视频帧进行滤波处理的指示信息。一方面,本申请一实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行计算机程序时实现上述任一种方法的步骤。一方面,本申请一实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时实现上述任一种方法的步骤。一方面,本申请一实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时实现上述任一种方法的步骤。本申请实施例提供的视频编码、解码方法、装置、电子设备及存储介质,在视频编码端完成对视频帧的编码后,从视频帧的编码数据中获得重建的视频帧,对重建的视频帧进行滤波处理,并获得视频帧中各个像素点因滤波处理带来的增益,然后,针对每个区块中像素点的增益分布,确定是否需要对该区块进行滤波处理,从而筛选出增益较大的区块进行滤波,使得视频解码端在解码时仅对增益较大的区块进行滤波处理,对增益较小的区块不进行滤波处理,将视频解码端的计算资源投入到产生增益更加明显的区块上,降低解码复杂度,提升滤波效率。附图说明为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为视频编码器的基本流程图;图2为经过CNNLF处理后的视频帧中各个像素点的增益分布情况;图3为本申请实施例提供的视频编码方法的应用场景示意图;图4A为本申请一实施例提供的视频编码方法的流程示意图;图4B为本申请一实施例提供的视频编码方法的流程示意图;图5为本申请一实施例提供的视频解码方法的流程示意图;图6为本申请一实施例提供的视频编码装置的结构示意图;图7为本申请一实施例提供的视频解码装置的结构示意图;图8为本申请一实施例提供的电子设备的结构示意图。具体实施方式为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。需要说明的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。YUV是编译true-color颜色空间(colorspace)的种类,“Y”表示明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。视频信号:从信号的获取方式看,可以分为摄像机拍摄到的以及计算机生成的两种方式。由于统计特性的不同,其对应的压缩编码方式也可能有所区别。参考图1,现代主流视频编码技术,以国际视频编码标准HEVC,VVC,以及中国国家视频编码标准AVS为例,采用了混合编码框架,对输入的原始视频信号,进行了如下一系列的操作和处理:(1)块划分结构(blockpartitionstructure):根据输入图像的大小,划分成若干个不重叠的处理单元,每个处理单元将进行类似的压缩操作。这个处理单元被称作CTU,或者LCU(largestcodingunit,最大编码单元)。每一个CTU还可以继续进行更加精细的划分,得到一个或多个基本编码的单元,称之为CU(CodingUnit编码单元),每个CU是一个编码环节中最基本的元素。以下描述的是对每一个CU可能采用的各种编码方式。对视频帧进行块划分后获得的每个区域可作为一个区块,例如一个CTU可作为一个区块,一个CU也可以作为一个区块。(2)预测编码(PredictiveCoding):包括了帧内预测和帧间预测等方式,原始视频信号经过选定的已重建视频信号的预测后,得到残差视频信号。视频编码端需要为当前CU决定在众多可能的预测编码模式中,选择最适合的一种,并告知视频解码端。帧内预测(intra-pictureprediction):预测的信号来自于同一图像内已经编码重建过的区域,即从参考帧中找出与当前块最匹配的位置,参考的是时域上信息,包括:运动估计(MotionEstimation,ME)和运动补偿(MotionCompensation,MC)。其中,运动估计是指,确定当前待编码的CU在已编码的图像(参考帧)中的最佳对应图像块,并且计算出对应块的偏移(运动矢量)。帧间预测(intra-pictureprediction):预测的信号来自已经编码过的,不同于当前图像的其他图像(称之为参考图像),即参考周围像素来插值出预测像素,参考的是空域上信息。I帧(Iframe),即参考帧,又称为内部画面(intrapicture),I帧通常是每个GOP(MPEG所使用的一种视频压缩技术)的第一个帧。I帧法是帧内压缩法,也称为“关键帧”压缩法,是基于离散余弦变换DCT(DiscreteCosineTransform)的压缩技术,这种算法与JPEG压缩算法类似。在编码的过程中,部分视频帧序列压缩成为I帧,部分压缩成P帧,还有部分压缩成B帧,解码时仅用I帧的数据就可重构一帧完整的图像,即I帧不需要参考其他视频帧即可完成重构,其它视频帧可基于I帧实现重构。(3)变换编码及量化(Transform&Quantization):残差视频信号经过DFT(DiscreteFourierTransform,离散傅里叶变换)、DCT(DiscreteCosineTransform,离散余弦变换)等变换操作,将信号转换到变换域中,称之为变换系数。在变换域中的信号,进一步的进行有损的量化操作,丢失掉一定的信息,使得量化后的信号有利于压缩表达。在一些视频编码标准中,可能有多于一种变换方式可以选择,因此,视频编码端也需要为当前编码CU选择其中的一种变换,并告知视频解码端。量化的精细程度通常由量化参数(QP)来决定,QP取值较大大,表示更大取值范围的系数将被量化为同一个输出,因此通常会带来更大的失真,及较低的码率;相反,QP取值较小,表示较小取值范围的系数将被量化为同一个输出,因此通常会带来较小的失真,同时对应较高的码率。(4)熵编码(EntropyCoding)或统计编码:量化后的变换域信号,将根据各个值出现的频率,进行统计压缩编码,最后输出二值化(0或者1)的压缩码流。同时,编码产生其他信息,例如选择的模式,运动矢量等,也需要进行熵编码以降低码率。统计编码是一种无损编码方式,可以有效的降低表达同样的信号所需要的码率。常见的统计编码方式有变长编码(VLC,VariableLengthCoding)或者基于上下文的二值化算术编码(CABAC,ContentAdaptiveBinaryArithmeticCoding)。(5)环路滤波(LoopFiltering):已经编码过的图像,经过反量化,反变换及预测补偿的操作(上述2~4的反向操作),可获得重建的解码图像。重建的解码图像与原始图像相比,由于存在量化的影响,部分信息与原始图像有所不同,产生失真(Distortion),因此需要对重建图像进行滤波处理,例如去块效应滤波(deblocking)、SAO(SampleAdaptiveOffset,样点自适应补偿)或者ALF(AdaptiveLoopFilter,自适应环路滤波)等滤波器,可以有效地降低量化所产生的失真程度。由于这些经过滤波后的重建图像,将做为后续编码图像的参考,用于对将来的信号进行预测,所以上述的滤波操作也被称为环路滤波,即在编码环路内的滤波操作。图1展示了一个视频编码器的基本流程图。根据上述视频编码过程可以看出,在视频解码端,对于每一个CU,解码器获得压缩码流后,先进行熵解码,获得各种模式信息及量化后的变换系数。各个系数经过反量化及反变换,得到残差信号。另一方面,根据已知的编码模式信息,可获得该CU对应的预测信号,两者相加之后,即可得到重建信号。最后,解码图像的重建值,需要经过环路滤波的操作,产生最终的输出信号。近年来,随着深度学习技术的发展,已经有不少研究尝试采用深度学习模型替代传统视频编码框架中的部分模块或提出基于深度学习的端到端编码框架,尤其是在环路滤波工具上,相比于传统滤波工具能明显提升编码性能。基于深度学习的环路滤波工具主要思路是通过神经网络学习重建图像到原始图像的映射关系,通常用来替换或帮助传统滤波工具修复有损编码带来的信息损失、抑制编码噪声,从而提升重建帧质量,提升编解码器性能。基于深度学习的方法能有效修复有损编解码方法中引入的噪声和信息损失、提升编解码器性能,但高性能的同时也带来了高复杂度,严重影响了基于深度学习的环路滤波工具在实际中的推广和应用,因此需要在尽可能保留高性能前提下降低深度学习滤波工具的复杂度。目前已经有AVS3提案进行CNNLF(ConvolutionalNeuralNetworkLoopFilter,基于深度学习的环路滤波)模型复杂度简化研究,标准提案M5016仅对I帧开启CNNLF,标准提案M5129根据RA(RandomAccess)测试中CTU上命中率呈现的规律性,提出时域层(temporallayer)并关闭CTU上命中率不高的4和5级时域层,如表1所示,表1为不同时域帧CNN环路滤波的开关情况。在720p和1080p序列上,RA配置下相比于未开启复杂度优化的方案,标准提案M5016将复杂度降低为22%,但存在3.47%的BD-rate损失,标准提案M5129将复杂度降低为77%,但存在0.75%的BD-rate损失。表1时域层包含的帧是否打开CNN环路滤波00(Iframe)开116开28开34,12开42,6,10,14关51,3,5,7,9,11,13,15关虽然上述两种方案(标准提案M5016和标准提案M5129)带来了不同程度的时间节省和性能损失,但与复杂度降低的程度相比,BD-rate的损失均较为明显。并且,即使CNNLF已经设置了CTU级的开关flag,这两种方案都只能从帧级上判断是否使用CNNLF滤波工具,这种“一刀切”的判断方法是导致性能损失过大的主要原因。以一个视频帧为例,本申请对视频帧中的各个像素点在滤波后获得的增益进行了分析,其中,图2为一个视频帧内各个像素上的增益情况,每个像素点的增益可采用欧式距离衡量,其计算方法如下:Disti=(Ii,REC-Ii,org)2-(Ii,CNN-Ii,org)2其中,i表示视频帧内的像素序号,Ii,CNN为经过CNNLF处理后的视频帧内的第i个像素点对应的像素参数值,Ii,REC为未经过CNNLF处理的视频帧内的第i个像素点对应的像素参数值,Ii,org为未经过压缩编码的CTU内的第i个像素点对应的像素参数值,Disti为正数则说明经过CNNLF处理后该像素点上存在增益,且Disti越大代表增益越大,Disti为负数则说明经过CNNLF处理后该像素点上存在损失,Disti越小代表损失越大。图2表示各个像素点按增益从大到小的排序结果,基于图2可知,即使整个视频帧或CTU存在增益,仍然会有部分像素点存在损失,导致整个视频帧或CTU的总增益并不明显,将过多的计算资源用于增益并不明显的视频帧或CTU,将极大地增加解码复杂度,且并不能大幅提高滤波后的图像质量。基于此,本申请提出了一种视频编码方法,在视频解码端完成对视频帧的编码后,从视频帧的编码数据中获得重建的视频帧,并对重建的视频帧进行滤波处理,获得重建的视频帧中的各个像素点在滤波处理后获得的增益,并根据每个区块中的像素点的增益分布,确定解码时是否需要对该区块进行滤波处理,将视频帧的编码数据发送至视频解码端,该编码数据中包含解码时需要进行滤波处理的区块的指示信息,这样,视频解码端在对视频帧进行解码时,可根据编码数据中的指示信息,仅对视频帧中需要进行滤波处理的区块进行滤波处理,在几乎不影响视频质量或视频质量下降不明显的情况下,降低解码复杂度,提升滤波效率。其中,视频帧可划分成多个区块,本申请实施例中的区块可以是CTU,也可以是比CTU定义更小的区域(如CU),或者一个可包含多个CTU的区域,或者帧内部其他划分方法得到的区域等等,当然也可以直接将整个视频帧作为一个区块,即根据视频帧中各个像素点的增益分布,确定在解码时是否需要对该视频帧进行滤波处理。上述视频编码方法,可根据滤波后的区块中的像素点的增益分布,确定是否需要对该区块进行滤波处理,解码时仅对增益较大的区块进行滤波处理,对增益较小的区块不进行滤波处理,将视频解码端的计算资源投入到产生增益更加明显的区块上,以达到提升滤波效率的目的。需要说明的是,本申请实施例的视频编码方法,不涉及编解码过程中使用的滤波模型本身,因此,本申请实施例的视频编码方法可适用于任何滤波模型,可以应用到使用了基于深度学习的滤波模型的视频编解码器或视频压缩的后处理产品中。在介绍完本申请实施例的设计思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。参考图3,其为本申请实施例提供的视频编码方法的应用场景示意图。该应用场景包括终端设备301(包括终端设备301-1、终端设备301-2、……终端设备301-n)和服务器302。其中,终端设备301和服务器302之间可通过无线通信网络或有线通信网络连接,终端设备301包括但不限于桌面计算机、移动电话、移动电脑、平板电脑、媒体播放器、智能可穿戴设备、智能电视、车载设备、个人数字助理(personaldigitalassistant,PDA)等电子设备。服务器302可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。当终端设备301的用户想观看某一视频时,可通过终端设备301向服务器302发送视频获取请求,服务器302基于视频获取请求查找对应的视频,对该视频进行编码以得到编码后的视频流,并将视频流传输给终端设备301,终端设备301对接收到的视频流进行解码和滤波处理,以实现该视频在终端设备301-2上的正常播放。此时,服务器302相当于视频编码端,而终端设备301相当于视频解码端。当终端设备301-1的用户想将某一视频上推送给其它用户(如终端设备301-2)时,终端设备301-1对该视频进行编码以得到编码后的视频流,将视频流传输给服务器302,服务器302再将该视频流转发给终端设备301-2,终端设备301-2对接收到的视频流进行解码和滤波处理,以实现该视频在终端设备301-2上的正常播放。此时,终端设备301-1相当于视频编码端,而终端设备301-2相当于视频解码端。当然,本申请实施例提供的方法并不限用于图3所示的应用场景中,还可以用于其它可能的应用场景,本申请实施例并不进行限制。对于图3所示的应用场景的各个设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。下面结合图3所示的应用场景,对本申请实施例提供的技术方案进行说明。需要说明的时,本申请实施例提供任一视频编码方法,可应用任一视频编码端,如图3所示的终端设备或服务器;本申请实施例提供任一视频解码方法,可应用任一视频解码端,如图3所示的终端设备或服务器。参考图4A,本申请实施例提供的一种视频编码方法,包括以下步骤:S401、从视频帧的编码数据中获得重建的视频帧,视频帧包括至少一个区块。其中,区块是对视频帧进行块划分后获得的一个区域。实际应用中,区块可以是视频帧中的CTU,也可以是比CTU定义更小的区域(如CU),或者一个可包含多个CTU的区域,或者通过其他区块划分方法对视频帧内部进行划分后得到的区域,本申请实施例不作限定。当然,也可以直接将整个视频帧作为一个区块(即帧级区块),即根据视频帧中各个像素点的增益分布,确定在解码时是否需要对该视频帧进行滤波处理。因此,当区块为比视频帧更小的区域时,如CTU或CU时,一个视频帧中包括两个或两个以上的区块。具体实施时,从视频帧的编码数据中获得重建的视频帧的过程,即为对编码数据进行反量化、反变换及预测补偿的操作,不再赘述。S402、对重建的视频帧进行滤波处理,获取重建的视频帧中的各个像素点在滤波处理后获得的增益。其中,步骤S402中采用的滤波方法与视频解码端采用的滤波方法相同,本申请实施例对视频解码端采用的滤波处理方法不作限定,可以是采用CNNLF模型进行滤波,也可以是其它的滤波模型。具体实施时,视频编码端先对原始视频进行编码处理,获得编码数据,再从每一视频帧的编码数据中获得重建的视频帧。然后,视频编码端对每个重建的视频帧进行滤波处理,获得每个重建的视频帧对应的滤波图像。接着,视频编码端基于一定的评价标准,获得重建的视频帧中的各个像素点在滤波处理后获得的增益,像素点的增益越大,表明滤波处理对该像素点的质量的提升效果越明显,反之,像素点的增益越小,表明滤波处理对该像素点的质量的提升效果越不明显。具体地,可通过如下方式获得重建的视频帧中的每个像素点在滤波处理后获得的增益:针对重建的视频帧中的每一像素点,基于该像素点对应的编码前的像素参数值和解码后的像素参数值之间的第一差异度,以及该像素点对应的编码前的像素参数值和滤波后的像素参数值之间的第二差异度,获得该像素点在滤波处理后获得的增益。例如,可采用如下公式计算视频帧中的每一像素点的增益:Disti=(Ii,REC-Ii,org)2-(Ii,CNN-Ii,org)2其中,i表示视频帧内的像素序号,Ii,CNN为经过滤波处理后的视频帧内的第i个像素点对应的像素参数值,Ii,REC为未经过滤波处理的视频帧内的第i个像素点对应的像素参数值,Ii,org为未经过压缩编码的视频帧内的第i个像素点对应的像素参数值,Disti为正数则说明经过滤波处理后该像素点上存在增益,且Disti越大代表增益越大,Disti为负数则说明经过滤波处理后该像素点上存在损失,Disti越小代表损失越大。实际应用中,像素参数值可以是以下至少一种:Y分量、U分量和V分量,像素参数也可以是灰度值、RGB值等。S403、针对至少一个区块中的每一区块,根据每一区块中各个像素点的增益分布,确定对编码数据进行解码时是否需要对每一区块进行滤波处理。具体实施时,可通过如下方式确定出每个视频帧中需要进行滤波处理的区块:根据各个区块的增益分布,确定出增益阈值;将增益大于增益阈值的区块,确定为对编码数据进行解码时需要进行滤波处理的区块。这样,可基于视频帧内的区块的增益分布确定出合适的增益阈值,并基于增益阈值筛选出增益较大的区块,从而在解码时,对筛选出的增益较大的区块进行滤波,对增益较小的区块不进行滤波,以将计算资源用于对提升图像质量帮助较大的区块,从而降低解码复杂度,提升滤波效率。具体实施时,当基于步骤S403确定解码时需要对某一区块进行滤波处理时,可将该区块的开关信息设置为“开”;当基于步骤S403确定解码时不需要对某一区块进行滤波处理时,可将该区块的开关信息设置为“关”。例如,可通过一个flag标识表示区块的开关信息,当区块的flag=1时,表示“开”,即解码时需要对该区块进行滤波处理,当区块的flag=0时,表示“关”,即解码时不需要对该区块进行滤波处理。此外,针对每个层级的区块,可分别设置对应的开关。例如,整个视频帧对应一个帧级开关,当帧级开关frame_flag=0时,表示不需要对该视频帧进行滤波处理,当帧级开关frame_flag=1时,表示需要对该视频帧进行滤波处理。例如,一个视频帧可被划分为多个CTU,因此还可以设置CTU级开关,每个CTU对应一个CTU开关,当某个CTU的CTU级开关CTU_flag=0时,表示不需要对该CTU进行滤波处理,当某个CTU的CTU级开关CTU_flag=1时,表示需要对该CTU进行滤波处理。只有当视频帧的帧级开关frame_flag=1时,才需要根据CTU级开关,判断视频帧中的各个CTU是否需要滤波;当视频帧的帧级开关frame_flag=0时,无需考虑CTU级开关。S404、发送视频帧的编码数据,编码数据中包含需要进行滤波处理的区块的指示信息。具体实施时,每一视频帧的编码数据中均携带有指示信息,该指示信息用于指示该视频帧中的哪些区块需要进行滤波处理。例如,指示信息可包括视频帧中每个区块对应的flag标识,当区块的flag=1时,表示解码时需要对该区块进行滤波处理,当区块的flag=0时,表示解码时不需要对该区块进行滤波处理。再如,指示信息可包括视频帧中需要进行滤波处理的区块的序号,例如指示信息中包含序号1、4、5,则需要对视频帧中的第1、4、5个区块进行滤波处理。具体实施时,视频编码端将指示信息写入编码数据中,并发送给视频解码端。视频解码端从视频帧的编码数据中获得重建的视频帧,基于编码数据中的指示信息,对重建的视频帧中需要进行滤波处理的区块进行滤波处理,获得滤波后的视频帧并播放。本申请实施例的视频编码方法,在视频编码端完成对视频帧的编码后,从视频帧的编码数据中获得重建的视频帧,对重建的视频帧进行滤波处理,并获得视频帧中各个像素点因滤波处理带来的增益,然后,针对每个区块中像素点的增益分布,确定是否需要对该区块进行滤波处理,从而筛选出增益较大的区块进行滤波,使得视频解码端在解码时仅对增益较大的区块进行滤波处理,对增益较小的区块不进行滤波处理,将视频解码端的计算资源投入到产生增益更加明显的区块上,降低解码复杂度,提升滤波效率。具体实施时,可根据每一区块中各个像素点的增益分布,确定正增益的占比值,若正增益的占比值小于增益占比阈值,则确定对编码数据进行解码时不需要对每一区块进行滤波处理,否则确定对编码数据进行解码时需要对每一区块进行滤波处理。具体地,可通过如下方式确定正增益的占比值:将每一区块中增益为正的像素点的增益之和的绝对值,确定为正增益;将每一区块中增益为负的像素点的增益之和的绝对值,确定为负增益;将正增益和负增益之和,确定为增益总和;根据正增益与增益总和的比值,获得正增益的占比值。以图2为例,区块中增益为正的像素点的增益之和为SumA,即对应图2中的A区域所覆盖的面积,区块中增益为负的像素点的增益之和为SumB,即对应图2中的B区域所覆盖的面积,则正增益的占比值其中,|SumA|表示区块滤波后增益增加的部分,即正增益,|SumB|表示区块滤波后增益损失的部分,即负增益。当r大于0.5时,表示整个区块滤波后获得的总增益大于0,即区块整体上存在质量的提升。根据该区块中像素点的增益增加的部分和增益损失的部分的占比情况,确定在解码时是否需要对该区块进行滤波处理,以筛选出增益较大的区块进行滤波处理,提升解码时的滤波效率。具体实施时,可预先设定一个增益占比阈值,即每个区块对应相同的增益占比阈值。具体实施时,还可通过如下方式确定每一区块所对应的增益占比阈值:根据每一区块中各个像素点的增益分布,获得增益统计特征值;根据增益统计特征值,确定增益占比阈值。实际应用中,增益统计特征值包括但不限于:平均值、中位值、标准差等。可对视频帧内所有像素点的增益进行统计,获得增益统计特征值,也可以仅对增益为正的像素点的增益进行统计,获得增益统计特征值。以平均值为作为增益统计特征值例,可计算区块中增益为正的像素点的增益平均值其中,N为该区块中增益为正的像素点的数量,Disti为该区块中第i个增益为正的像素点的增益,将V作为该区块的增益统计特征值。或者,可计算区块中所有像素点的增益平均值其中,N为该区块包含的像素点的总数量,Disti为该区块中第i个像素点的增益,将V作为该区块的增益统计特征值。具体地,可根据预设的增益统计特征值与增益占比阈值之间的映射关系,获得增益统计特征值对应的增益占比阈值。实际应用中,增益统计特征值D与增益占比阈值G之间的映射关系可以通过如下分段函数表示:其中,分段数n、范围an以及对应的gn均根据经验取值,0≤an,gn≤1。进一步地,可限定a0<a1<a2<…<an-1<an,g1<g2<…<gn,即增益统计特征值D越大,增益占比阈值G越大。具体实施时,还可以限定增益占比阈值G与增益统计特征值D正相关,例如,D与G之间的映射关系也可以是:G=k×D+b,其中,k和b可根据经验取值。当增益占比阈值较小时,能够在较为明显的降低复杂度的情况下,获得一定的增益提升;当增益占比阈值较大时,能够在性能下降不明显的情况下,降低解码复杂度。因此,实际应用中,可根据滤波效率的优化需求,对增益占比阈值进行调整,具体地,可通过修改映射关系中的参数的方式,便捷地对增益占比阈值进行调整。例如,当需要大幅度的降低滤波复杂度时,可通过调整映射关系中的参数,选择较小的增益占比阈值;当需要获得明显的增益时,可通过调整映射关系中的参数,选择较大的增益占比阈值。具体实施时,一个视频帧可被划分成多个层级的区块,例如,整个视频帧可作为一个帧级的区块,一个视频帧可被划分为多个CTU,每个CTU又可以被划分为多个CU,以此类推,可划分出多个层级。基于此,视频编码端可以确定出视频帧中多个层级的区块所对应的指示信息,从而在解码时逐级确定各个层级的区块是否需要进行滤波。例如,基于根据视频帧中各个像素点的增益分布,确定在解码时是否需要对该视频帧进行滤波处理,并将视频帧是否需要进行滤波的指示信息写入该视频帧的编码数据中,本申请实施例中,将视频帧对应的指示信息称为帧级开关信息。同时,视频编码端还可以确定视频帧中各个区块对应的滤波开关,例如,基于CTU中各个像素点的增益分布,确定在解码时是否需要对该CTU进行滤波处理,并将CTU是否需要进行滤波的指示信息写入该视频帧的编码数据中,本申请实施例中,将CTU对应的指示信息称为CTU级开关信息。在上述任一实施方式的基础上,在步骤S404之前,本申请实施例的视频编码方法还包括如下步骤:基于率失真优化算法,根据所述指示信息的数据量和基于所述指示信息对所述视频帧滤波后获得的增益,确定需要在解码时对所述视频帧进行滤波处理。具体地,参考图4B,本申请实施例提供的另一种视频编码方法,包括以下步骤:S411、从视频帧的编码数据中获得重建的视频帧。步骤S411中的视频帧中包括至少两个区块,此处的区块不包含帧级区块。S412、对重建的视频帧进行滤波处理,获取重建的视频帧中的各个像素点在滤波处理后获得的增益。S413、针对至少一个区块中的每一区块,根据每一区块中各个像素点的增益分布,确定对编码数据进行解码时是否需要对每一区块进行滤波处理。基于步骤S413即确定出视频帧中哪些区块需要进行滤波,将这些需要滤波的区块所对应的开关信息设为“开”,即获得针对区块(此处不包含帧级区块)的指示信息。S414、基于率失真优化算法,根据指示信息的数据量和基于指示信息对视频帧滤波后获得的增益,判断是否需要在解码时对视频帧进行滤波处理;若需要,则执行步骤S416;若不需要,则执行步骤S415。步骤S414中的指示信息,即为基于步骤S413获得的针对区块的指示信息。其中,率失真优化是一种提高视频压缩视频质量的方法,该名称是指针对视频编码所需的数据量(速率)优化失真量(视频质量损失),速率失真优化可在提高视频编码的质量的同时减少编码后视频的数据量,即平衡视频大小和视频质量,作出最优的编码决策。通过编解码器或编解码标准中现有的率失真优化算法判断是否需要在解码时对重建的视频帧进行滤波处理,即根据对视频帧进行滤波处理带来的增益,以及在编码数据中写入指示信息所增加的数据量,判断是否值得对该视频帧进行滤波处理。实际应用中,可基于通过步骤S413确定出的需要进行滤波的区块数量,确定需要在编码数据中增加指示信息的数据量,例如,每一区块的指示信息需要占用m比特的数据量,若有T个区块需要进行滤波,则增加T×m比特的数据量。可从视频帧的编码数据中获得重建的视频帧,基于指示信息对重建的视频帧中需要进行滤波处理的区块进行滤波处理,获取视频帧中各个像素点在滤波处理后获得的增益,累加各个像素点的增益,获得基于指示信息对视频帧滤波后获得的增益。S415、在视频帧的编码数据中写入不需要对该视频帧进行滤波处理的帧级开关信息,并执行步骤S417。当在视频帧的编码数据中写入不需要对该视频帧进行滤波处理的帧级开关信息时,表示不对该视频帧进行滤波处理时,此时不需要将指示信息写入编码数据中。具体实施时,若确定不需要对该视频帧进行滤波处理,则该视频帧对应的帧级开关frame_flag=0,将帧级开关的信息作为针对帧级的指示信息写入该视频帧的编码数据内。当视频帧对应的帧级开关frame_flag=0时,视频解码端不会对该视频帧进行滤波处理。S416、在视频帧的编码数据中写入指示信息和需要对该视频帧进行滤波处理的帧级开关信息,并执行步骤S417。具体实施时,若确定需要对该视频帧进行滤波处理,则该视频帧对应的帧级开关frame_flag=1,将帧级开关的信息作为针对帧级的指示信息写入该视频帧的编码数据内,同时,将基于步骤S413确定的针对区块的指示信息也写入编码数据。S417、发送视频帧的编码数据。基于确定出的指示信息和因指示信息带来的增益,进一步判断是否要对视频帧进行滤波,提高针对视频帧的判断准确率。参考图5,本申请实施例还提供了一种视频解码方法,具体包括如下步骤:S501、获取视频帧的编码数据,视频帧包括至少一个区块,编码数据中包含需要进行滤波处理的区块的指示信息,每个区块的指示信息是根据每个区块中的像素点在滤波处理后获得的增益的增益分布确定的。具体实施时,每个区块的指示信息是通过如下方式确定的:根据每一区块中各个像素点的增益分布,确定正增益的占比值;若正增益的占比值小于增益占比阈值,则确定对编码数据进行解码时不需要对每一区块进行滤波处理,否则确定对编码数据进行解码时需要对每一区块进行滤波处理。具体实施时,正增益的占比值是通过如下方式确定的:将每一区块中增益为正的像素点的增益之和的绝对值,确定为正增益;将每一区块中增益为负的像素点的增益之和的绝对值,确定为负增益;将正增益和负增益之和,确定为增益总和;根据正增益与增益总和的比值,获得正增益的占比值。具体实施时,增益占比阈值是通过如下方式确定的:根据每一区块中各个像素点的增益分布,获得增益统计特征值;根据增益统计特征值,确定增益占比阈值。具体地,增益占比阈值可根据预设的增益统计特征值与增益占比阈值之间的映射关系确定的。实际应用中,确定出指示信息的具体实施方式可参考视频编码端的实施方式,不再赘述。S502、从编码数据中获得重建的视频帧。S503、基于指示信息,对重建的视频帧中需要进行滤波处理的区块进行滤波处理。具体实施时,每一视频帧的编码数据中均携带有指示信息,该指示信息用于指示该视频帧中的哪些区块需要进行滤波处理。例如,指示信息可包括视频帧中每个区块对应的flag标识,当区块的flag=1时,表示解码时需要对该区块进行滤波处理,当区块的flag=0时,表示解码时不需要对该区块进行滤波处理。再如,指示信息可包括视频帧中需要进行滤波处理的区块的序号,例如指示信息中包含序号1、4、5,则需要对视频帧中的第1、4、5个区块进行滤波处理。具体实施时,视频编码端将指示信息写入编码数据中,并发送给视频解码端。视频解码端对编码数据进行解码,获得重建的视频帧,基于编码数据中的指示信息,对重建的视频帧中需要进行滤波处理的区块进行滤波处理,获得滤波后的视频帧并播放。本申请实施例的视频解码方法,可基于视频解码端根据区块中像素点的增益分布确定的指示信息,对增益较大的区块进行滤波处理,对增益较小的区块不进行滤波处理,将视频解码端的计算资源投入到产生增益更加明显的区块上,降低解码复杂度,提升滤波效率。具体实施时,视频解码端可以基于各个视频帧的帧级开关信息,确定在解码时是否需要对该视频帧进行滤波处理,例如,若视频帧对应的帧级开关frame_flag=0,则表示不需要对该视频帧进行滤波处理;若视频帧对应的帧级开关frame_flag=1,则表示需要对该视频帧进行滤波处理。当视频帧对应的帧级开关frame_flag=1时,再根据下一层级的各个区块的指示信息进行滤波处理,例如,若CTU对应的CTU级开关CTU_flag=0,则表示不需要对该CTU进行滤波处理,若CTU对应的CTU级开关CTU_flag=1,则表示需要对该CTU进行滤波处理。如图6所示,基于与上述视频编码方法相同的发明构思,本申请实施例还提供了一种视频编码装置60,包括解码模块601、滤波模块602、筛选模块603和发送模块604。解码模块601,用于从视频帧的编码数据中获得重建的视频帧,视频帧包括至少一个区块。滤波模块602,用于对重建的视频帧进行滤波处理,获取重建的视频帧中的各个像素点在滤波处理后获得的增益。筛选模块603,用于针对至少一个区块中的每一区块,根据每一区块中各个像素点的增益分布,确定对编码数据进行解码时是否需要对每一区块进行滤波处理。发送模块604,用于发送视频帧的编码数据,编码数据中包含需要进行滤波处理的区块的指示信息。可选地,筛选模块603,具体用于:根据每一区块中各个像素点的增益分布,确定正增益的占比值;若正增益的占比值小于增益占比阈值,则确定对编码数据进行解码时不需要对每一区块进行滤波处理,否则确定对编码数据进行解码时需要对每一区块进行滤波处理。可选地,筛选模块603,具体用于:将每一区块中增益为正的像素点的增益之和的绝对值,确定为正增益;将每一区块中增益为负的像素点的增益之和的绝对值,确定为负增益;将正增益和负增益之和,确定为增益总和;根据正增益与增益总和的比值,获得正增益的占比值。可选地,筛选模块603还用于:根据每一区块中各个像素点的增益分布,获得增益统计特征值;根据增益统计特征值,确定增益占比阈值。可选地,筛选模块603具体用于:根据预设的增益统计特征值与增益占比阈值之间的映射关系,获得增益统计特征值对应的增益占比阈值。可选地,视频编码装置60还包括视频帧筛选模块,用于:在执行发送模块604之前,基于率失真优化算法,根据指示信息的数据量和基于指示信息对视频帧滤波后获得的增益,确定是否需要在解码时对视频帧进行滤波处理,若需要,则在视频帧的编码数据中写入指示信息和需要对该视频帧进行滤波处理的帧级开关信息,并执行发送模块604对应的功能;若不需要,则在视频帧的编码数据中写入不需要对该视频帧进行滤波处理的帧级开关信息,并执行发送模块604对应的功能。本申请实施例提的视频编码装置与上述视频编码方法采用了相同的发明构思,能够取得相同的有益效果,在此不再赘述。如图7所示,基于与上述视频解码方法相同的发明构思,本申请实施例还提供了一种视频解码装置70,包括获取模块701、视频解码模块702和视频滤波模块703。获取模块701,用于获取视频帧的编码数据,视频帧包括至少一个区块,编码数据中包含需要进行滤波处理的区块的指示信息,每个区块的指示信息是根据每个区块中的像素点在滤波处理后获得的增益的增益分布确定的。视频解码模块702,用于从编码数据中获得重建的视频帧。视频滤波模块703,用于基于指示信息,对重建的视频帧中需要进行滤波处理的区块进行滤波处理。可选地,每个区块的指示信息是通过如下方式确定的:根据每一区块中各个像素点的增益分布,确定正增益的占比值;若正增益的占比值小于增益占比阈值,则确定对编码数据进行解码时不需要对每一区块进行滤波处理,否则确定对编码数据进行解码时需要对每一区块进行滤波处理。可选地,正增益的占比值是通过如下方式确定的:将每一区块中增益为正的像素点的增益之和的绝对值,确定为正增益;将每一区块中增益为负的像素点的增益之和的绝对值,确定为负增益;将正增益和负增益之和,确定为增益总和;根据正增益与增益总和的比值,获得正增益的占比值。可选地,增益占比阈值是通过如下方式确定的:根据每一区块中各个像素点的增益分布,获得增益统计特征值;根据增益统计特征值,确定增益占比阈值。可选地,增益占比阈值是根据预设的增益统计特征值与增益占比阈值之间的映射关系确定的。可选地,编码数据中还包括帧级开关信息,帧级开关信息是:基于率失真优化算法,根据指示信息的数据量和基于指示信息对视频帧滤波后获得的增益,确定的是否需要在解码时对视频帧进行滤波处理的指示信息。本申请实施例提的视频解码装置与上述视频解码方法采用了相同的发明构思,能够取得相同的有益效果,在此不再赘述。基于与上述视频编码方法相同的发明构思,本申请实施例还提供了一种电子设备,该电子设备具体可以为图3所示的终端设备或服务器等。如图8所示,该电子设备80可以包括处理器801和存储器802。处理器801可以是通用处理器,例如中央处理器(CPU)、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、现场可编程门阵列(FieldProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(RandomAccessMemory,RAM)、静态随机访问存储器(StaticRandomAccessMemory,SRAM)、可编程只读存储器(ProgrammableReadOnlyMemory,PROM)、只读存储器(ReadOnlyMemory,ROM)、带电可擦除可编程只读存储器(ElectricallyErasableProgrammableRead-OnlyMemory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。本申请实施例提供了一种计算机可读存储介质,用于储存为上述电子设备所用的计算机程序指令,其包含用于执行上述视频编码方法或视频编码方法的程序。上述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。以上,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本申请实施例的方法,不应理解为对本申请实施例的限制。本
技术领域
的技术人员可轻易想到的变化或替换,都应涵盖在本申请实施例的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1