CN113068037A - 用于样点自适应补偿的方法及装置、设备和介质 - Google Patents
用于样点自适应补偿的方法及装置、设备和介质 Download PDFInfo
- Publication number
- CN113068037A CN113068037A CN202110287404.3A CN202110287404A CN113068037A CN 113068037 A CN113068037 A CN 113068037A CN 202110287404 A CN202110287404 A CN 202110287404A CN 113068037 A CN113068037 A CN 113068037A
- Authority
- CN
- China
- Prior art keywords
- sideband
- preset
- value
- pixel
- target
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/132—Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/124—Quantisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/182—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a pixel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开提供了一种用于样点自适应补偿的方法及装置、设备和介质,涉及视频处理技术领域,尤其涉及视频编解码技术领域。实现方案为:获取目标图像的多个目标像素中每一目标像素的残差,所述残差以第一预设数量的比特来表示;确定所述目标图像的多个残差是否位于预设数值范围内,所述预设数值范围为第二预设数量的比特所能表示的数值范围,并且所述第二预设数量小于所述第一预设数量;以及响应于确定所述多个残差位于所述预设数值范围内,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示。
Description
技术领域
本公开涉及视频处理技术领域,尤其涉及视频编解码技术领域,具体涉及一种用于样点自适应补偿的方法、装置、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
相关技术中,视频编码过程可以对视频帧进行预测、变换、量化、反量化、反变换、重建、熵编码等处理,视频解码过程可以对视频帧进行熵解码、反量化、反变换等处理。对于视频帧中像素值剧烈变化的边界区,由于高频分量在编码过程中丢失,会使重建帧在边界区产生波纹现象,这种失真称为振铃效应。
样点自适应补偿算法(Sample Adaptive Offset,简称“SAO”)可以对重建帧进行补偿,用以减缓甚至去除重建帧中出现的波纹现象。为了减缓甚至去除重建帧中出现的波纹现象,在编码端可以进行反量化、反变换、重建得到重建帧。可以将重建帧划分为多个图像块,基于重建帧和原始的视频帧之间的残差,可以确定每个图像块分别相应的SAO信息。编码端可以对每个图像块的SAO信息进行熵编码,通过编码流发送至解码端,以使得解码端可以对接收到的编码流进行熵解码,得到SAO信息,从而能够对重建帧中对应的图像块进行补偿,以减缓甚至去除重建帧中出现的波纹现象。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
本公开提供了一种用于样点自适应补偿的方法、装置、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的一方面,提供了一种用于样点自适应补偿的方法,包括:获取目标图像的多个目标像素中每一目标像素的残差,所述残差以第一预设数量的比特来表示;确定所述目标图像的多个残差是否位于预设数值范围内,所述预设数值范围为第二预设数量的比特所能表示的数值范围,并且所述第二预设数量小于所述第一预设数量;以及响应于确定所述多个残差位于所述预设数值范围内,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示。
根据本公开的另一方面,还提供一种用于样点自适应补偿的装置,包括:获取单元,被配置用于获取目标图像的多个目标像素中每一目标像素的残差,所述残差以第一预设数量的比特来表示;确定单元,被配置用于确定所述目标图像的多个残差是否位于预设数值范围内,所述预设数值范围为第二预设数量的比特所能表示的数值范围,并且所述第二预设数量小于所述第一预设数量;以及修改单元,被配置用于响应于确定所述多个残差位于所述预设数值范围内,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示。
根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据上述的方法。
根据本公开的另一方面,还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据上述的方法。
根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据上述的方法。
根据本公开的一个或多个实施例,可以响应于确定图像的多个残差均位于预设数值范围内,对所述多个残差中每一个残差进行截断,以减少残差的比特数量,从而能够减少占用的内存,提升算法效率。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1a示出了根据本公开的实施例的编码端的结构示意图;
图1b示出了根据本公开的实施例的解码端的结构示意图;
图1c示出了根据本公开的实施例的图像的残差示意图;
图2示出了根据本公开的实施例的用于样点自适应补偿的方法的流程图;
图3a示出了根据本公开的实施例的待编码视频帧的示意图;
图3b示出了根据本公开的实施例的重构帧的一个图像块的示意图;
图3c示出了计算得到的图3b中的图像块中每一像素的边带值;
图3d示出了根据本公开的实施例的重构帧的另一个图像块的示意图;
图3e示出了计算得到的图3d中的图像块中每一像素的边带值;
图4示出了根据本公开的实施例每一像素组的边带信息的计算方法流程图;
图5示出了根据本公开的实施例的获取多个目标像素的最大边带值和最小边带值的方法流程图;
图6示出了根据本公开的实施例的获取多个目标像素的最大边带值和最小边带值的原理示意图;
图7示出了根据本公开的实施例的针对预设边带值的边带信息的计算方法流程图;
图8示出了根据本公开的实施例的确定边带掩模的原理示意图;
图9示出了根据本公开的实施例的针对预设边带值的残差累加和的计算原理示意图;
图10a示出了根据本公开的实施例的残差累加矩阵的示意图;
图10b示出了根据本公开的实施例的数量累加矩阵的示意图;
图11a示出了根据本公开的实施例的目标图像的局部示意图;
图11b示出了根据本公开的实施例的残差累加矩阵的计算原理示意图;
图12示出了根据本公开的实施例的样点自适应补偿方法的流程图;
图13示出了根据本公开的实施例的用于样点自适应补偿装置的结构框图;
图14示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
下面将结合附图详细描述本公开的实施例。
为了便于理解,首先对视频编码过程进行简单介绍。
视频编码过程大致如下:原始的视频帧被切分成多个图像块,以图像块为编码单元进行编码。图像块例如可以是16×16、32×32、64×64大小的正方形图像,也可以为矩形图像。如图1a所示,编码端可以对原始的视频帧进行预测、变换、量化、熵编码、反量化、反变换、重建、滤波等处理。相应地,编码端可以包括编码帧内预测模块、编码帧间预测模块、变换模块、量化模块、熵编码模块、反量化模块、反变换模块、重建模块、滤波模块、参考图像缓冲模块。
编码帧内预测模块和编码帧间预测模块可以分别确定帧内预测数据、帧内预测相关信息、帧间预测数据、帧间预测相关信息。可以通过开关选择使用编码帧内预测模块或编码帧间预测模块,被选择的预测模块输出的预测数据作为加法器的其中一个输入,原始的视频帧作为加法器的另一个输入,加法器输出预测残差。预测残差经过变换、量化处理,得到量化系数。量化系数、帧内预测相关信息和帧间预测相关信息等输入至熵编码模块,经过熵编码后得到编码流以发送至解码端。编码端的重建模块可以将预测残差加回至相应的帧内预测数据或帧间预测数据,以得到重建帧。
需要说明的是,此处的预测残差是基于预测帧和原始的视频帧计算得到,不同于下面内容中基于重建帧和原始的视频帧计算得到的残差。
视频解码过程大致如下:如图1b所示,首先对接收到的编码流进行熵解码,得到量化系数(例如可以包括图1b中的预测残差)、帧间预测相关信息、帧内预测相关信息等。量化系数经过反量化、反变换处理之后,恢复预测残差。重建模块将预测残差加回至相应的帧内预测数据或帧间预测数据。可以通过开关选择使用帧内预测数据或帧间预测数据,以得到重建帧。相应地,解码端可以包括解码帧内预测模块、解码帧间预测模块、熵解码模块、反量化模块、反变换模块、重建模块、滤波模块、参考图像缓存模块、视频播放缓存模块。
由于在解码端进行变换和量化的过程中会存在丢失高频分量的问题,从而导致重建帧因振铃效应出现波纹现象。
为了解决上述技术问题,如图1a所示,编码端可以对重建帧进行滤波处理,滤波处理可以包括去块滤波(Deblocking Filter,简称“DF”)处理、样点自适应补偿(SampleAdaptive Offset,简称“SAO”)处理,SAO处理用于获取SAO信息,SAO信息经过熵编码后发送至解码端。相应地,编码端还可以包括DF模块和SAO补偿模块。解码端可以对所接收的编码流进行熵解码,得到SAO信息。
SAO可以对重建帧进行补偿,用以减缓甚至去除重建帧中出现的波纹现象。为了减缓甚至去除重建帧中出现的波纹现象,在编码端将重建帧划分为多个图像块,可以依次确定每个图像块对应的SAO信息。编码端可以向解码端发送每个图像块的SAO信息,以使得解码端可以根据对应的SAO信息分别对重建帧中的每一图像块进行补偿,从而减缓甚至去除重建帧中出现的波纹现象。
对于任一视频帧,可以由三种不同的分量构成,例如YUV视频帧,由亮度分量(Y)、第一色度分量(U)和第二色度分量(V)构成。因此,SAO信息也可以包括三种不同的分量信息,例如,亮度分量信息、第一色度分量信息和第二色度分量信息。
视频帧可以包括不同分量的多个图像块,例如,YUV视频帧可以包括亮度图像块、第一色度图像块和第二色度图像块。可以通过SAO处理对重建帧中不同分量的图像块均进行补偿。
SAO可以但不限于适用于高性能视频编解码(High Efficient Video Coding,简称“HEVC”)中。HEVC相较之前几代编码技术能够提供更高的压缩效率。HEVC能够用比H.264少一半的码率提供相同清晰度的视频,可以节省大量的存储空间、视频传输带宽。
相关技术中,SAO可以包括边缘补偿(Edge Offset,简称“EO补偿”)和边带补偿(Band Offset,简称“BO补偿”)。
EO补偿的大致过程可以为:通过比较当前像素的重建像素值和与当前像素相邻的像素的重建像素值,来对当前像素进行分类。根据相邻像素的位置可以分为四种模式:水平、垂直、135°方向、45°方向。对于任一种EO补偿模式,可以基于当前像素的重建像素值与相邻的两个像素的重建像素值,将当前像素分为以下5类:第一类、当前像素的重建像素值小于相邻的两个像素的重建像素值;第二类、当前像素的重建像素值小于其中一个相邻的像素的重建像素值,并且等于另一个相邻的像素的重建像素值;第三类、当前像素的重建像素值大于其中一个相邻的像素的重建像素值,并且等于另一个相邻的像素的重建像素值;第四类、当前像素的重建像素值大于相邻的两个像素的重建像素值;第五类、当前像素的重建像素值等于相邻的两个像素的重建像素值。针对任一种EO补偿模式,可以将属于第一类的像素的类值设定为0,可以将属于第二类的像素的类值设定为1,将属于第三类的像素的类值设定为2,将属于第四类的像素的类值设定为3,将属于第五类的像素的类值设定为4。
针对任一种EO补偿模式,若当前像素的类值为0或1,补偿值大于0;若当前像素的类值为2或3,补偿值小于0,从而达到平滑效果。若当前像素的类值为4,补偿值等于0,不进行补偿。编码器可以只传输补偿值的绝对值,在解码端可以根据当前像素的EO补偿模式的类值,确定补偿值大于0或小于0。
BO补偿的大致过程可以为:根据像素值进行归类,将像素值范围等分为多条边带。例如,以8比特图像为例,像素值范围为[0,255],可以设定每条边带包含8个像素值,第k条边带的像素值范围为[8k,8k+7],类似于一种量化技术。在编码过程中,需要统计当前图像块(CTB)中0~31边带的残差和像素点的数量。对于BO补偿,SAO信息具体为边带信息,可以包括当前图像块中0~31边带的残差和像素点的数量。
无论是EO补偿还是BO补偿,都需要计算像素的残差,像素的残差为该像素在重建帧中的重建像素值和该像素在原始视频帧中的原始像素值之间的差值。为了防止像素的残差出现溢出错误,设置像素的残差的比特数量大于重建像素值和原始像素值的比特数量,比如,针对8比特图像,像素的像素值用8比特表示,像素的残差用16比特表示,这样却会导致占用内存较大,降低算法效率。
然而,经过研究发明人发现,像素的重建像素值和该像素在原始视频帧中的原始像素值之间的差值(即残差)一般较小,如图1c所示。
基于此,本公开提供一种用于样点自适应补偿的改进方法。该方法在计算得到目标图像的多个残差之后,确定多个残差是否位于预设数值范围内。可以响应于确定多个残差均位于预设数值范围内,对所述多个残差中每一个残差进行截断,以减少残差的比特数量,从而能够减少占用的内存,提升算法效率。
视频帧即为图像,本公开实施例中视频帧和图像可以混合使用。本公开实施例中的目标图像可以是整个视频帧,也可以是视频帧的一部分。
本公开的技术方案既适用于EO补偿也适用于BO补偿,并且也适用于其它涉及残差计算的方法,例如,预测残差的变换处理方法等。
下面将结合附图具体描述本公开实施例中的用于样点自适应补偿的方法。
对于用于样点自适应补偿的方法,该方法本身不一定是在做自适应补偿,但是是用于自适应补偿,例如可以是自适应补偿的准备工作。
图2示出了根据本公开的实施例的用于样点自适应补偿的方法的流程图。如图2所示,该方法可以包括:步骤S201、获取目标图像的多个目标像素中每一目标像素的残差,所述残差以第一预设数量的比特来表示;步骤S202、确定所述目标图像的多个残差是否位于预设数值范围内,所述预设数值范围为第二预设数量的比特所能表示的数值范围,并且所述第二预设数量小于所述第一预设数量;以及步骤S203、响应于确定所述多个残差位于所述预设数值范围内,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示。由此,可以响应于确定图像的多个残差均位于预设数值范围内,对所述多个残差中每一个残差进行截断,以减少残差的比特数量,从而能够减少占用的内存,提升算法效率。
以8比特图像为例,目标像素的原始像素值和重建像素值均用8比特表示,计算得到目标像素的残差用16比特表示。可以响应于确定目标图像的每一目标像素的残差均位于[-128,127]区间内,对残差进行截断,以将残差修改为用8比特来表示。可以理解的是,在此仅是以8比特图像为例来描述本公开的具体原理,并不限定本公开的技术方案仅适用于8比特图像。
目标图像可以但不限于为视频帧的一个图像块。目标图像例如可以为视频帧的亮度图像块,也可以为其它分量的图像块,例如,针对YUV视频帧,目标图像也可以为第一色度图像块或第二色度图像块。
目标图像可以为编码端进行重建所得到的重建帧中的一个图像块,可以基于重建帧和原始的视频帧计算目标图像中每一目标像素的残差。重建帧和原始的视频帧的大小相同,两者所包括的像素数量相同。重建帧中像素的值为原始的视频帧中位置对应的像素的重建像素值,具体的重建过程已在上面内容中描述。
为了便于描述和理解,本公开实施例中将重建帧和原始的视频帧中位置对应的两个像素称为同一像素。
像素的残差可以为重建帧中该像素的重建像素值和原始视频帧中该像素的原始像素值之间的差值。像素的残差可以为正数,也可以为0或负数。
根据一些实施例,步骤S202、确定所述目标图像的多个残差是否位于预设数值范围内可以包括:确定所述多个残差中的最大残差和最小残差。在这种情况下,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示可以是响应于确定所述最大残差和最小残差位于所述预设范围内而执行的。由于只要最大残差和最小残差位于预设数值范围内,则可以确定多个残差均位于预设数值范围内,从而能够提升算法效率。
根据一些实施例,该方法还可以包括:响应于确定所述多个残差位于所述预设范围内,至少基于所述第二预设数量,将所述目标图像的多个目标像素划分为多个像素组,每一像素组包括相邻的多个目标像素。由此,可以分别计算每个像素组的补偿信息,能够实现指令集优化,提升算法效率,并且可以基于多个像素组的补偿信息来确定目标图像的补偿信息。对于如何计算每个像素组的补偿信息,具体的实现方案将在下面内容中详细描述。
示例性的,可以但不限于将目标图像中每一行的多个像素划分为至少一个像素组,即每一像素组所包括的多个目标像素位于同一行中。可以理解的是,每一像素组所包括的多个目标像素也可以分布在目标图像的多行像素(包括两行像素)中。每一像素组所包括的多个目标像素例如可以呈矩阵分布。以图3d示意的重建帧的一个图像块为例,例如可以将每一行的多个像素中确定为一个像素组,则每一像素组包括位于同一行的16个像素。也可以将图3d中的图像块划分成多个呈2*8矩阵分布的多个像素组,即每一像素组包括两行像素,每一行像素包括8个像素。在此不限定目标图像划分为多个像素组的具体方式,可以根据实际需求进行划分。
根据一些实施例,该方法还可以包括:确定所述目标图像的补偿类别,所述补偿类别包括多个类值;获取目标图像的每一目标像素的类值;以及针对每一像素组,基于相邻的多个目标像素的残差和类值,计算补偿信息。
进一步地,该方法还可以包括:基于所述多个像素组各自相应的多个补偿信息确定所述目标图像的补偿信息;以及对所述目标图像的补偿信息进行编码,以用于发送至解码端。由此,以像素组为单位细化目标图像的补偿信息的计算过程,能够实现指令集优化,从而能够简化目标图像的补偿信息的计算复杂度。对于如何基于多个像素组各自相应的多个补偿信息来确定目标图像的补偿信息,具体的实现方案将在下面内容中详细描述。
针对样点自适应补偿技术,补偿类别例如可以包括EO补偿和BO补偿。任一种EO补偿模式可以包括5个类值(参见上面内容),补偿信息为边缘信息。BO补偿的类值即为边带值,补偿信息为边带信息。
针对BO补偿,可以基于目标图像的多个目标像素的边带值和残差来计算边带信息。
以8比特图像为例像素值范围为[0,255],可以设定每条边带包含8个像素值,第k条边带的像素值范围为[8k,8k+7]。可以将像素值除以8并取整,例如,像素值为15,该像素的边带值为2。需要说明的是,在此只是举例说明如何计算像素的边带值,并不限定边带的划分方式仅局限于上述一种,可以根据实际需求,基于像素值范围来设定像素值范围划分方式,以确定像素的边带值。
由于BO补偿中存在32个边带,超出了矢量寄存器的个数,相关技术中,可以基于C语言来统计当前图像块(CTB)中0~31边带的残差和像素点的数量,具体可以为:针对当前图像块,定义两个临时数组stats[32]和count[32],初始值为0;计算当前像素的边带值bt,比如,针对8比特像素,重建像素值为15,则,bt=15/8=1;计算当前重建像素和原始像素的差,也就是残差diff;累加残差和像素数量,stats[bt]+=diff;count[bt]++。由此可见,针对每个像素都需要分别计算残差并将该残差累加至相应的边带值的残差累加和,并且将相应的边带值的像素数量加1,计算复杂度非常高。
基于此,经过研究发明人发现,针对每个图像块,对于相邻的多个重建像素的像素值虽然大多不同,但大部分属于同一边带,但又不完全属于同一边带。对于一些特殊区域,比如平坦区域,相邻的多个重建像素大多处于连续的几个边带内。
以8比特图像为例,图3a为本公开的实施例的待编码视频帧;图3b为图3a中虚线框301所限定的亮度CTB的重建像素的像素值,为了便于展示,图3b中仅示出一个16×16的区域;图3c为图3b所示意的亮度CTB中每一重建像素的边带值。
从图3b可以看出,虚线框201所限定的亮度CTB中重建像素的像素值(例如,亮度分量)大多不同。但是,从图3c中可以看出,相邻的多个重建像素大部分属于同一边带,但又不完全属于同一边带。例如,第2行、第3行重建像素大部分属于同一边带26,但又不完全属于同一边带。
图3d为图3a中虚线框302所限定的亮度CTB的重建像素的像素值,同样地,为了便于展示,图3d中仅示出一个16×16的区域;图3e为图3d所示意的亮度CTB中每一重建像素的边带值。
从图3e可以看出,虚线框201所限定的亮度CTB中相邻的多个重建像素的大多处于连续的几个边带内。
上述仅是以重建帧的亮度分量为例来说明相邻的多个重建像素的边带值的分布特点,容易理解的是,重建帧的其它分量(例如第一色度分量、第二色度分量)的边带值也具有上述分布特点。
基于此,根据一些实施例,如图4所示,针对每一像素组,基于相邻的多个目标像素的残差和边带值,计算补偿信息可以包括:步骤S401、获取所述多个目标像素的最大边带值和最小边带值;步骤S402、基于所述最大边带值和最小边带值,确定多个预设边带值;以及步骤S403、对于所述多个预设边带值中的每一个预设边带值,基于所述多个目标像素的边带值和残差,计算针对该预设边带值的边带信息。由此,通过确定相邻的多个像素的最大边带值和最小边带值,并基于最大边带值和最小边带值确定多个预设边带值,从而只需统计针对多个预设边带值的边带信息,无需统计针对所有边带值的边带信息,大大减少计算复杂度,显著提升算法效率。另外,通过将目标图像预先划分为多个像素组,能够以像素组为单位细化目标图像的边带值区间,提升算法效率。进一步地,可以对每一像素组所包括的相邻的多个目标像素均执行边带信息计算操作。
根据一些实施例,针对BO补偿,该方法还可以包括:基于所述多个像素组各自相应的多个边带信息确定所述目标图像的边带信息;以及对所述目标图像的边带信息进行编码,以用于发送至解码端。由此,以像素组为单位细化目标图像的边带信息的计算过程,而利用本公开的技术方案能够简化每一像素组的边带信息的计算复杂度,从而能够简化目标图像的计算复杂度。对于如何基于多个像素组各自相应的多个边带信息来确定目标图像的边带信息,具体的实现方案将在下面内容中详细描述。
在将目标图像划分为多个像素组之后,可以针对每一像素组中相邻的多个目标像素,执行以下边带信息计算操作。
根据一些实施例,每一像素组中相邻的多个目标像素的个数可以为偶数。在这种情况下,如图5所示,步骤S401、获取所述多个目标像素的最大边带值和最小边带值可以包括:步骤S501、将所述多个目标像素等分为第一部分和第二部分;步骤S502、将所述第一部分中的每个目标像素和所述第二部分中的相应的目标像素之间执行取最大值运算,得到多个第一像素值;步骤S503、将所述第一部分中的每个目标像素和所述第二部分中的相应的目标像素之间执行取最小值运算,得到多个第二像素值;步骤S504、基于所述多个第一像素值,确定所述多个目标像素的最大边带值;以及步骤S505、基于所述多个第二像素值,确定所述多个目标像素的最小边带值。由此,通过将多个目标像素等分为两部分,并对等分得到的两部分中相应的两个目标像素分别执行取最大值运算和取最小值运算,从而能够实现基于减半的像素数量获取最大边带值和最小边带值,减少获取最大边带值和最小边带值的计算量,进而能够快速确定相邻的多个目标像素的最大边带值和最小边带值,进一步提升算法效率。
例如,以相邻的多个目标像素位于同一行中为例,可以将多个目标像素的前半部分作为第一部分,而将后半部分作为第二部分。在图6示意的实施例中,相邻的多个目标像素600为图3e中的最后一行像素,获取多个目标像素600的最大边带值和最小边带值的过程可以为:对多个目标像素进行等分,得到第一部分601和第二部分602;将第一部分601中的每个目标像素和第二部分602中相应的目标像素之间执行取最大值运算,得到8个第一像素值26、27、28、27、27、26、26和26;将第一部分601中的每个目标像素和第二部分502中相应的目标像素之间执行取最小值运算,得到8个第二像素值19、24、27、26、26、26、26和26;基于8个第一像素值,确定多个目标像素的最大边带值max为28;以及基于8个第二像素值,确定多个目标像素的最小边带值min为19。
可以理解的,并不限定相邻的多个目标像素的个数必须为偶数,也可以为奇数。示例性的,在相邻的多个目标像素的个数为奇数的情况下,获取多个目标像素的最大边带值和最小边带值的方法与上述类似,例如可以为:将相邻的多个目标像素划分为第一部分和第二部分,第一部分的像素数量和第二部分的像素数量之间的差值可以但不限于为1。同样地,可以将第一部分中的每个目标像素和所述第二部分中的相应的目标像素之间执行取最大值运算,得到多个第一像素值,并且将所述第一部分中的每个目标像素和所述第二部分中的相应的目标像素之间执行取最小值运算,得到多个第二像素值。与上述不同的是,可以基于多个第一像素值,以及第一部分中多余的一个目标像素(该目标像素在第二部分中没有相应的目标像素),确定所述多个目标像素的最大边带值,并且基于所述多个第二像素值,以及第一部分中多余的一个目标像素,确定所述多个目标像素的最小边带值。
在确定相邻的多个目标像素的最大边带值和最小边带值之后,可以执行步骤S402、基于最大边带值和最小边带值确定多个预设边带值。
根据一些实施例,步骤S402中所确定的多个预设边带值可以包括多个目标像素的最大边带值max和最小边带值min,以及位于最大边带值max和最小边带值min之间的一个或多个边带值。例如,多个预设边带值可以包括[min,max]这个区间内的所有整数。
在基于相邻的多个目标像素的最大边带值和最小边带值确定多个预设边带值之后,可以执行步骤S403,以计算针对多个预设边带值中每一预设边带值的边带信息。
根据一些实施例,如图7所示,步骤S403、对于所述多个预设边带值中的每一个预设边带值,基于所述多个目标像素的边带值和残差,计算针对该预设边带值的边带信息可以包括:步骤S701、确定所述多个目标像素的与该预设边带值对应的边带掩模,所述边带掩模能够表征所述多个目标像素中边带值为所述预设边带值的目标像素的位置;以及步骤S702、基于所述多个目标像素和与该预设边带值对应的所述边带掩模,对该预设边带值和所述多个目标像素进行计算,以得到针对该预设边带值的边带信息。由此,基于预设边带值对应的边带掩模能够实现同时对预设边带值和多个目标像素进行计算,实现指令集优化,相对于相关技术中针对每一像素均独立进行计算,能够大大减少内存存取的次数和计算复杂度,显著提升算法效率。
示例性的,每一预设边带值对应的边带掩模所包括的多个掩模像素可以与相邻的多个目标像素一一对应,并且边带掩模的与多个目标像素中边带值为该预设边带值的目标像素对应的掩模像素的值为设定值,并且与多个目标像素中边带值不为该设定边带值的目标像素对应的掩模像素的值为零。所述设定值例如可以但不限于为1,以简化边带信息的计算,参见图8中的边带掩模801。
根据一些实施例,每一个像素组中相邻的多个目标像素可以呈矩阵分布,在这种情况下,步骤S701、确定所述多个目标像素的与该预设边带值对应的边带掩模可以包括:构建与所述多个目标像素的矩阵大小相同的带矩阵,所述带矩阵的元素的值均为该预设边带值;以及基于所述多个目标像素的边带值和所述带矩阵的相应的元素的比较结果,确定所述边带掩模。由此,通过构建元素值均为预设边带值的带矩阵,并且将所述多个目标像素的值与带矩阵中对应的元素的值进行比较,从而能够确定是否具有边带值为预设边带值的目标像素,并且能够同时确定边带值为预设边带值的至少一个目标像素的位置,进而能够快速确定预设边带值对应的边带掩模,提升算法效率。
示例性的,基于上述方案得到的边带掩模可以呈矩阵分布,并且可以与多个目标像素的矩阵大小相同,以便于计算,具体原理将在下面内容中描述。
仍以图6示意的实施例为例,相邻的多个目标像素为图3e中的最后一行像素,在确定多个目标像素的最大边带值28和最小边带值19(具体的方法参见上面内容)之后,可以确定多个预设边带值为[19,28]这个区间内的所有整数19、20、21、…、26、27、28。
在图8示意的示例中,以预设边带值26为例,可以构建带矩阵800,带矩阵800为行矩阵,包括16个元素并且16个元素的值均为预设边带值26,带矩阵800与多个目标像素600的矩阵大小相同。将多个目标像素600的边带值(为了便于描述和理解,在图8中仍用附图标记600示意)和带矩阵800的相应的元素一一进行比较,基于比较结果确定该预设边带值对应的边带掩模801的掩模像素的值。例如,当多个目标像素600中某一目标像素的边带值为26,则可以将边带掩模801的相应掩模像素的值设置为设定值(例如,1);而当多个目标像素600中另一目标像素的边带值不为26,则可以将边带掩模800的相应掩模像素的值设置为0。边带掩模801也可以呈行矩阵分布,包括16个元素,每一元素的值为掩模像素的值。
示例性的,针对每一预设边带值的边带信息可以包括残差累加和以及像素数量。目标图像可以为编码端得到的重建帧中的一个图像块。目标图像中目标像素的值为重建像素值,原始的视频帧中像素的值和目标图像中目标像素的值之间的差值即为残差。
根据一些实施例,在边带信息包括残差累加和以及像素数量的情况下,步骤S403、对于所述多个预设边带值中的每一个预设边带值,基于所述多个目标像素的边带值和残差,计算针对该预设边带值的边带信息可以包括:基于所述多个目标像素的残差和对应的边带掩模,对该预设边带值和所述多个目标像素进行计算,以得到针对该预设边带值的残差累加和。由于边带掩模能够表征多个目标像素中边带值为该预设边带值的目标像素的位置,从而能够实现指令集优化,同时对多个目标像素进行计算,以得到针对该预设边带值的残差累加和,简化计算复杂度,提升算法效率。
在一个示例性实施例中,对该预设边带值和所述多个目标像素进行计算,以得到针对该预设边带值的残差累加和可以包括:构建残差矩阵;对所述多个目标像素中每一个目标像素的残差与对应的边带掩模中与该目标像素位置对应的掩模像素的像素值执行相乘计算;以及将所述计算得到的结果存入所述残差矩阵。从而能够通过残差矩阵来存储同时对多个目标像素进行计算所得到的残差,并且还能够基于残差矩阵进行残差和的累加,便于算法的实现。另外,通过相乘计算能够使得残差矩阵的元素值的二进制表示长度相对每个目标像素的残差的二进制表示长度翻倍,避免出现溢出问题。
在图9示意的示例中,相邻的16个目标像素呈行矩阵分布,即位于同一行中。为了便于计算,可以设置预设边带值对应的边带掩模801也呈行矩阵分布,元素的值为1表示多个目标像素中相应的目标像素的边带值为该预设边带值,元素的值为0表示多个目标像素中相应的目标像素的边带值不为该预设边带值。对多个目标像素中每一个目标像素的残差diff与对应的边带掩模801中与该目标像素位置对应的掩模像素的像素值执行相乘计算,以得到残差矩阵901中相应的元素的值。由于边带掩模801中与边带值不为该预设边带值的目标像素相应的元素的值为0,因此边带掩模801中该元素的值与该目标像素的残差diff相乘为0,不被计入针对该预设边带值的残差累加和。另外,由于边带掩模801中与边带值为该预设边带值的目标像素相应的元素的值为1,因此边带掩模801中该元素的值与该目标像素的残差diff相乘仍为diff,能够将该目标像素的残差累加至针对该预设边带值的残差累加和。
可以理解的,步骤S403并不局限于采用上述一种方式来计算多个目标像素的针对预设边带值的残差累加。例如,也可以不构建残差矩阵,而是直接述多个目标像素中每一个目标像素的残差与对应的边带掩模中与该目标像素位置对应的掩模像素的像素值执行相乘计算,然后对多个目标像素通过所述相乘计算所得到的多个乘积进行求和,得到多个目标像素的针对预设边带值的残差累加和。
根据一些实施例,如图9所示,每一个像素组中相邻的多个目标像素的个数可以为偶数,并且将所述计算得到的结果存入所述残差矩阵可以包括:针对所述多个目标像素中每两个相邻的目标像素,对其中一个目标像素的通过所述相乘计算得到的乘积和另一个目标像素的通过所述相乘计算得到的乘积进行求和,以得到多个求和值;将得到的多个求和值存入所述残差矩阵。由此,通过求和计算能够减少残差矩阵的元素的数量,减少占用内存。
可以理解的,相邻的多个目标像素的个数也可以为奇数,在这种情况下,例如可以将第一个目标像素或最后一个目标像素的像素值直接存入残差矩阵,剩余的数量为偶数的目标像素可以采用上述技术方案进行求和,以减少占用内存。
根据一些实施例,可以累加多个像素组中相同预设边带值所对应的残差累加和,即对多个像素组中相同预设边带值所对应的残差累加和进行求和,以得到目标图像的针对每一预设边带值的残差累加和,从而能够减少目标图像的边带信息的计算复杂度。
在一个示例性实施例中,当通过构建残差来得到预设边带值的残差累加和的情况下,可以通过累加多个像素组中的相同预设边带值所对应的残差矩阵的元素的值,来累加所述多个像素组中所述相同预设边带值所对应的残差和。由于通过残差矩阵能够存储同时对多个目标像素进行计算所得到的残差,并且还能够基于残差矩阵进行残差和的累加,从而能够便于算法的实现,减少目标图像的边带信息的计算复杂度。
示例性的,参见图10a所示,可以构建多个边带值对应的残差累加矩阵,残差累加矩阵可以与残差矩阵的大小相同,并且残差累加矩阵的元素的初始值均为0。针对每一像素组,在计算得到相应的多个预设边带值中每一预设边带值对应的残差矩阵之后,可以将残差矩阵的每一元素的值累加至该预设边带值对应的残差累加矩阵中相应的元素,即,该预设边带值对应的残差累加矩阵中某一元素的值为针对多个像素组所确定的该预设边带值对应的残差矩阵中相应的元素的值之和。在统计完成多个像素组的针对相应的多个预设边带值的残差累加和之后,可以对每一预设边带值对应的残差累加矩阵的所有元素的值进行求和,以得到目标图像的针对该预设边带值的残差累加和。
可以依次基于每一像素组的最大边带值和最小边带值构建多个预设边带值对应的残差累加矩阵,从而能够根据实际需要构建所需的残差累加矩阵。
下面以8比特图像为例来说明可以利用8比特来表示像素的残差。
针对一个64x64的CTB,为了便于展示,图11a中仅示意了5×64的像素区域。以8比特来存储残差,当使用指令集优化可以同时处理256比特时,那么一次可以处理32个像素。因此,可以将每一行像素等分为两部分,以划分为两个像素组,每一像素组包括相邻的32个像素。可以理解的,若以16比特来存储残差,那么一次只能处理16个像素,因此,通过利用本公开的技术方案能够提升一倍的吞吐量,减少一半的处理时间。
在图11b示意的示例中,假设所有目标像素的边带值相同,针对每一像素组的多个目标像素中每两个相邻的目标像素,通过对应的边带掩模可以实现对其中一个目标像素的残差diff和另一个目标像素的残差diff进行求和(具体的原理参见图9以及上面内容,不同的是边带掩模的元素值均为1),以得到多个求和值,并且将得到的多个求和值存入残差矩阵。每一残差diff用8比特来存储(即用8比特来表示),针对该边带值的残差累加矩阵1102,每一元素(元素的值为相邻两个像素的残差和)用16比特来表示。残差累加矩阵1102的各元素的值如下:
s1=d1+d2+d33+d34+d65+d66+d97+d98+…(一共有256差值相加);
s2=d3+d4+d35+d36+d67+d68+d99+d100+…(一共有256个差值相加);
…
由于s1~s16中每一元素由256个残差相加而得到,需要占用8个比特(28=256),每个残差用8比特表示,所以s1~s16正好可以用16比特表示,即216=28×28。8比特可以表示的有符号数的范围是-128~127,因此,只要当前CTB中目标像素的残差位于[-128,127]区间内,那么当前CTB中所有的残差都可以用8比特来表示,从而能够提升一倍的吞吐量,减少一半的处理时间。可以理解的,所有目标像素的边带值相同所计算得到的残差累加和矩阵的元素可以用8比特表示,而对于多个目标像素的边带值不同的情况,由于每一边带值对应的像素的数量较少,则针对每一边带值所计算得到的残差累加和矩阵的元素一定可以用8比特表示。
以上内容介绍了如何基于对应的边带掩模计算针对预设边带值的残差累加和,同样地,也可以基于对应的边带掩模计算针对预设边带值的像素数量。
根据一些实施例,步骤S403、对于所述多个预设边带值中的每一个预设边带值,基于所述多个目标像素的边带值和残差,计算针对该预设边带值的边带信息可以包括:基于对应的边带掩模,计算针对该预设边带值的像素数量。由于边带掩模能够表征所述多个目标像素中边带值为所述预设边带值的目标像素的位置,从而能够基于对应的边带掩模计算针对预设边带值的像素数量。
示例性的,每一预设边带值对应的边带掩模所包括的多个掩模像素可以与相邻的多个目标像素一一对应,并且边带掩模的与多个目标像素中边带值为该预设边带值的目标像素对应的掩模像素的值为设定值,并且与多个目标像素中边带值不为该设定边带值的目标像素对应的掩模像素的值为零。所述设定值例如可以但不限于为1,以简化边带信息的计算。当相邻的多个目标像素包括至少一个目标像素的边带值为该预设边带值,可以对边带掩模所包括的多个掩模像素的值进行求和,以得到所述至少一个目标像素的数量(即多个目标像素的针对该预设边带值的像素数量)。可以理解的,若相邻的多个目标像素不包括边带值为该预设边带值的目标像素,则该预设边带值对应的边带掩模的元素的值均为0,并且针对该预设边界值的像素数量为0。
可以理解的,步骤S403并不局限于采用上述一种方式来计算多个目标像素的针对预设边带值的像素数量。例如,也可以设置一初始值为0的变量i,并依次判断多个目标像素中每一个目标像素的边带值是否等于该预设边带值,若是,则执行i++,若否,则继续执行判断下一个目标像素边带值是否等于该预设边带值,直至完成多个目标像素的判断,并将最终的i值作为个目标像素的针对预设边带值的像素数量。
根据一些实施例,所述方法还可以包括:累加所述多个像素组中相同预设边带值所对应的像素数量,以得到所述目标图像的边带信息,从而能够减少目标图像的边带信息的计算复杂度。
示例性的,可以通过累加多个像素组中的相同预设边带值所对应的边带掩模的多个掩模像素的像素值,来累加所述多个像素组中所述相同预设边带值所对应的总像素数量。
参见图10b所示,在多个目标像素呈矩阵分布的情况下,可以构建多个边带值对应的数量累加矩阵,数量累加矩阵可以与多个目标像素的矩阵大小相同,并且数量累加矩阵的元素的初始值均为0。针对每一像素组,在计算得到多个预设边带值中每一预设边带值对应的边带掩模之后,可以将边带掩模中的每一元素的值累加至该预设边带值对应的数量累加矩阵中相应的元素,即,该预设边带值对应的数量累加矩阵中某一元素的值为针对多个像素组所得到的该预设边带值对应的边带掩模中相应的掩模像素的值之和。在统计完成多个像素组的针对相应的多个预设边带值的像素数量之后,可以对每一预设边带值对应的数量累加矩阵的所有元素的值进行求和,以得到目标图像的针对该预设边带值的像素数量。
可以依次基于每一像素组的最大边带值和最小边带值构建多个预设边带值对应的数量累加矩阵,从而能够根据实际需要构建所需的数量累加矩阵。
如图12所示,下面将结合示例性实施例来具体描述样点自适应补偿方法的过程,具体可以如下:
步骤S1201、以8比特视频帧为例,针对重建帧中的每一图像块(即目标图像),获取多个目标像素的多个残差,并且残差用16比特来表示(即用16比特来存储);
步骤S1202、确定多个残差中的每一个残差是否均位于[-128,127]区间内,即,多个残差中的每一个残差是否可以用8比特来表示(即用8比特来存储);
步骤S1203、若多个残差中的每一个残差均位于[-128,127]区间内,将多个残差中每一个残差修改为以8比特来表示,即用8比特来存储;而若并不是多个残差中的每一个残差均位于[-128,127]区间内,直接执行步骤S1204;
步骤S1204、将重建帧中的每一图像块划分为多个像素组;
步骤S1205、针对每一像素组,获取该像素组所包括的多个目标像素中每一目标像素的边带值;
步骤S1206、确定该像素组所包括的多个目标像素的最大边带值max和最小边带值min;
步骤S1207、确定位于多个预设边带值的取值区间为[min,max];
步骤S1208、计算该像素组的针对预设边带值min的边带信息;
步骤S1209、预设边带值+1;
步骤S1210、确定预设边带值是否不大于max,若否,则结束,若是,则执行步骤S1211;
步骤S1211、计算该像素组的针对预设边带值的边带信息,并循环执行步骤S1209-步骤S1210,直至预设边带值大于max。
本公开的技术方案可以但不限于应用于直播或点播的视频编码。
在视频编码过程中,通常8比特图像或者10比特图像的残差都可以使用8比特来表示。由此,通过对16比特的残差进行截断,以修改为用8比特来表示,能够实现吞吐量提升一倍,大大减少SAO信息统计过程中的计算量。经实验统计,上述技术方案能够使SAO信息计算量减少40%,从而实现直播和点播的视频编码加速4%左右,进而能够降低功耗。因此,本公开的技术方案非常具有实际价值。
根据本公开的另一方面,还提供一种用于样点自适应补偿的装置。如图13所示,该装置1300可以包括:获取单元1301,被配置用于获取目标图像的多个目标像素中每一目标像素的残差,所述残差以第一预设数量的比特来表示;确定单元1302,被配置用于确定所述目标图像的多个残差是否位于预设数值范围内,所述预设数值范围为第二预设数量的比特所能表示的数值范围,并且所述第二预设数量小于所述第一预设数量;以及修改单元1303,被配置用于响应于确定所述多个残差位于所述预设数值范围内,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示。
根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据上述的方法。
根据本公开的另一方面,还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据上述的方法。
根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据上述的方法。
参见图14,现将描述可以作为本公开的服务器或客户端的电子设备1400的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备可以是不同类型的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图14所示,电子设备1400可以包括能够通过***总线1403彼此通信的至少一个处理器1401、工作存储器1402、输入单元1404、显示单元1405、扬声器1406、存储单元1407、通信单元1408以及其它输出单元1409。
处理器1401可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器11401可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。处理器1401可以被配置成获取并且执行存储在工作存储器1402、存储单元1407或者其他计算机可读介质中的计算机可读指令,诸如操作***1402a的程序代码、应用程序1402b的程序代码等。
工作存储器1402和存储单元1407是用于存储指令的计算机可读存储介质的示例,指令由处理器1401执行来实施前面所描述的各种功能。工作存储器1402可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,存储单元1407可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。工作存储器1402和存储单元1407在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,计算机程序代码可以由处理器1401作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
输入单元1406可以是能向电子设备1400输入信息的任何类型的设备,输入单元1406可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出单元可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示单元1405、扬声器1406以及其它输出单元1409,其它输出单元1409可以但不限于包括视频/音频输出终端、振动器和/或打印机。通信单元1408允许电子设备1400通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、1302.11设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
工作寄存器1402中的应用程序1402b可以被加载执行上文所描述的各个方法和处理,例如图2中的步骤S201-步骤S203。例如,在一些实施例中,样点自适应补偿方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1407。在一些实施例中,计算机程序的部分或者全部可以经由存储单元1407和/或通信单元1408而被载入和/或安装到电子设备1400上。当计算机程序被加载并由处理器1401执行时,可以执行上文描述的样点自适应补偿方法的一个或多个步骤。备选地,在其他实施例中,处理器1401可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行样点自适应补偿方法。
本文中以上描述的***和技术的各种实施方式可以在数字电子电路***、集成电路***、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上***的***(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程***上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储***、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储***、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的***和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的***和技术实施在包括后台部件的计算***(例如,作为数据服务器)、或者包括中间件部件的计算***(例如,应用服务器)、或者包括前端部件的计算***(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的***和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算***中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将***的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机***可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、***和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。
Claims (24)
1.一种用于样点自适应补偿的方法,包括:
获取目标图像的多个目标像素中每一目标像素的残差,所述残差以第一预设数量的比特来表示;
确定所述目标图像的多个残差是否位于预设数值范围内,所述预设数值范围为第二预设数量的比特所能表示的数值范围,并且所述第二预设数量小于所述第一预设数量;以及
响应于确定所述多个残差位于所述预设数值范围内,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示。
2.如权利要求1所述的方法,其中,确定所述多个残差是否位于预设范围内包括:
确定所述多个残差中的最大残差和最小残差,
其中,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示是响应于确定所述最大残差和最小残差位于所述预设范围内而执行的。
3.如权利要求1所述的方法,还包括:
响应于确定所述多个残差位于所述预设范围内,至少基于所述第二预设数量,将所述目标图像的多个目标像素划分为多个像素组,每一像素组包括相邻的多个目标像素。
4.如权利要求3所述的方法,还包括:
确定所述目标图像的补偿类别,所述补偿类别包括多个类值;
获取目标图像的每一目标像素的类值;以及
针对每一像素组,基于相邻的多个目标像素的残差和类值,计算补偿信息。
5.如权利要求4所述的方法,还包括:
基于所述多个像素组各自相应的多个补偿信息确定所述目标图像的补偿信息;以及
对所述目标图像的补偿信息进行编码,以用于发送至解码端。
6.如权利要求5所述的方法,其中,所述补偿类别为边带补偿,所述类值为边带值,所述补偿信息为边带信息。
7.如权利要求6所述的方法,其中,针对每一像素组,基于相邻的多个目标像素的残差和边带值,计算补偿信息包括:
获取所述多个目标像素的最大边带值和最小边带值;
基于所述最大边带值和最小边带值,确定多个预设边带值;以及
对于所述多个预设边带值中的每一个预设边带值,基于所述多个目标像素的边带值和残差,计算针对该预设边带值的边带信息。
8.如权利要求7所述的方法,其中,
其中,获取所述多个目标像素的最大边带值和最小边带值包括:
将所述多个目标像素等分为第一部分和第二部分;
将所述第一部分中的每个目标像素和所述第二部分中的相应的目标像素之间执行取最大值运算,得到多个第一像素值;
将所述第一部分中的每个目标像素和所述第二部分中相应的目标像素之间执行取最小值运算,得到多个第二像素值;
至少基于所述多个第一像素值,确定所述多个目标像素的最大边带值;以及
至少基于所述多个第二像素值,确定所述多个目标像素的最小边带值。
9.如权利要求7所述的方法,其中,所述多个预设边带值包括所述多个目标像素的所述最大边带值和所述最小边带值,以及位于所述最大边带值和所述最小边带值之间的一个或多个边带值。
10.如权利要求7所述的方法,其中,对于所述多个预设边带值中的每一个预设边带值,基于所述多个目标像素的边带值和残差,计算针对该预设边带值的边带信息包括:
确定所述多个目标像素的与该预设边带值对应的边带掩模,所述边带掩模能够表征所述多个目标像素中边带值为所述预设边带值的目标像素的位置;以及
基于所述多个目标像素和与该预设边带值对应的所述边带掩模,对该预设边带值和所述多个目标像素进行计算,以得到针对该预设边带值的边带信息。
11.如权利要求10所述的方法,其中,所述边带掩模所包括的多个掩模像素与所述相邻的多个目标像素一一对应,所述边带掩模的与所述多个目标像素中边带值为所述预设边带值的目标像素对应的掩模像素的值为设定值,并且与所述多个目标像素中边带值不为所述设定边带值的目标像素对应的掩模像素的值为零。
12.如权利要求10所述的方法,其中,所述多个目标像素呈矩阵分布,
其中,确定所述多个目标像素的与该预设边带值对应的边带掩模包括:
构建与所述多个目标像素的矩阵大小相同的带矩阵,所述带矩阵的元素的值均为该预设边带值;以及
基于所述多个目标像素的边带值和所述带矩阵的相应的元素的比较结果,确定所述边带掩模。
13.如权利要求10所述的方法,其中,所述边带信息包括残差累加和以及像素数量。
14.如权利要求13所述的方法,其中,对于所述多个预设边带值中的每一个预设边带值,基于所述多个目标像素的边带值和残差,计算针对该预设边带值的边带信息包括:
基于所述多个目标像素的残差和对应的边带掩模,对该预设边带值和所述多个目标像素进行计算,以得到针对该预设边带值的残差累加和。
15.如权利要求14所述的方法,其中,对该预设边带值和所述多个目标像素进行计算,以得到针对该预设边带值的残差累加和包括:
构建残差矩阵;
对所述多个目标像素中每一个目标像素的残差与对应的边带掩模中与该目标像素位置对应的掩模像素的像素值执行相乘计算;以及
将所述计算得到的结果存入所述残差矩阵。
16.如权利要求15所述的方法,其中,且将所述计算得到的结果存入所述残差矩阵包括:
针对所述多个目标像素中每两个相邻的目标像素,对其中一个目标像素的通过所述相乘计算得到的乘积和另一个目标像素的通过所述相乘计算得到的乘积进行求和,以得到多个求和值;
至少将得到的多个求和值存入所述残差矩阵。
17.如权利要求15所述的方法,还包括:
累加所述多个像素组中相同预设边带值所对应的残差累加和,以得到所述目标图像的边带信息。
18.如权利要求13所述的方法,其中,对于所述多个预设边带值中的每一个预设边带值,基于所述多个目标像素的边带值和残差,计算针对该预设边带值的边带信息包括:
基于对应的边带掩模,计算针对该预设边带值的像素数量。
19.如权利要求18所述的方法,还包括:
累加所述多个像素组中相同预设边带值所对应的像素数量,以得到所述目标图像的边带信息。
20.如权利要求19所述的方法,其中,通过累加多个像素组中的相同预设边带值所对应的边带掩模的掩模像素的像素值,来累加所述多个像素组中所述相同预设边带值所对应的像素数量。
21.一种用于样点自适应补偿的装置,包括:
获取单元,被配置用于获取目标图像的多个目标像素中每一目标像素的残差,所述残差以第一预设数量的比特来表示;
确定单元,被配置用于确定所述目标图像的多个残差是否位于预设数值范围内,所述预设数值范围为第二预设数量的比特所能表示的数值范围,并且所述第二预设数量小于所述第一预设数量;以及
修改单元,被配置用于响应于确定所述多个残差位于所述预设数值范围内,将所述多个残差中每一个残差修改为以所述第二预设数量的比特来表示。
22.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中
所述存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据权利要求1-20中任一项所述的方法。
23.一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据权利要求1-20中任一项所述的方法。
24.一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据权利要求1-20中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110287404.3A CN113068037B (zh) | 2021-03-17 | 2021-03-17 | 用于样点自适应补偿的方法及装置、设备和介质 |
PCT/CN2022/077212 WO2022193916A1 (zh) | 2021-03-17 | 2022-02-22 | 用于样点自适应补偿的方法及装置、设备和介质 |
EP22770271.9A EP4246972A4 (en) | 2021-03-17 | 2022-02-22 | METHOD AND APPARATUS FOR SAMPLE-ADAPTIVE OFFSET, APPARATUS AND MEDIUM |
US18/211,790 US20230336747A1 (en) | 2021-03-17 | 2023-06-20 | Sample Adaptive Offset |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110287404.3A CN113068037B (zh) | 2021-03-17 | 2021-03-17 | 用于样点自适应补偿的方法及装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113068037A true CN113068037A (zh) | 2021-07-02 |
CN113068037B CN113068037B (zh) | 2022-12-06 |
Family
ID=76561039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110287404.3A Active CN113068037B (zh) | 2021-03-17 | 2021-03-17 | 用于样点自适应补偿的方法及装置、设备和介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230336747A1 (zh) |
EP (1) | EP4246972A4 (zh) |
CN (1) | CN113068037B (zh) |
WO (1) | WO2022193916A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113592966A (zh) * | 2021-08-04 | 2021-11-02 | 上海哔哩哔哩科技有限公司 | 图像处理方法及装置、电子设备和存储介质 |
WO2022193916A1 (zh) * | 2021-03-17 | 2022-09-22 | 上海哔哩哔哩科技有限公司 | 用于样点自适应补偿的方法及装置、设备和介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113068036B (zh) * | 2021-03-17 | 2022-10-28 | 上海哔哩哔哩科技有限公司 | 用于样点自适应补偿的方法及装置、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101335892A (zh) * | 2008-04-25 | 2008-12-31 | 太原科技大学 | 基于帧内模式决策的混合分布式视频编码方法 |
AU2015202844A1 (en) * | 2011-01-12 | 2015-06-11 | Ntt Docomo, Inc. | Image predict coding method, image predict coding device, image predict coding program, image predict decoding method, image predict decoding device, and image predict decoding program |
CN106998470A (zh) * | 2016-01-25 | 2017-08-01 | 华为技术有限公司 | 解码方法、编码方法、解码设备和编码设备 |
CN109040759A (zh) * | 2018-07-27 | 2018-12-18 | 西安空间无线电技术研究所 | 一种图像并行压缩装置及方法 |
CN110490214A (zh) * | 2018-05-14 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 图像的识别方法及***、存储介质及处理器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012134046A2 (ko) * | 2011-04-01 | 2012-10-04 | 주식회사 아이벡스피티홀딩스 | 동영상의 부호화 방법 |
GB201119206D0 (en) * | 2011-11-07 | 2011-12-21 | Canon Kk | Method and device for providing compensation offsets for a set of reconstructed samples of an image |
WO2013095047A1 (ko) * | 2011-12-22 | 2013-06-27 | 삼성전자 주식회사 | 최대 부호화 단위 별로 픽셀 분류에 따른 오프셋 조정을 이용하는 비디오 부호화 방법 및 그 장치, 비디오 복호화 방법 및 그 장치 |
CN105472389B (zh) * | 2015-12-01 | 2018-11-16 | 上海交通大学 | 一种用于超高清视频处理***的片外缓存压缩方法 |
EP3280143A1 (en) * | 2016-08-04 | 2018-02-07 | Thomson Licensing | A method and an apparatus for image block encoding and decoding |
CN109618155B (zh) * | 2018-10-26 | 2021-03-12 | 上海本趣网络科技有限公司 | 压缩编码方法 |
CN113068036B (zh) * | 2021-03-17 | 2022-10-28 | 上海哔哩哔哩科技有限公司 | 用于样点自适应补偿的方法及装置、设备和介质 |
CN113068037B (zh) * | 2021-03-17 | 2022-12-06 | 上海哔哩哔哩科技有限公司 | 用于样点自适应补偿的方法及装置、设备和介质 |
-
2021
- 2021-03-17 CN CN202110287404.3A patent/CN113068037B/zh active Active
-
2022
- 2022-02-22 EP EP22770271.9A patent/EP4246972A4/en active Pending
- 2022-02-22 WO PCT/CN2022/077212 patent/WO2022193916A1/zh unknown
-
2023
- 2023-06-20 US US18/211,790 patent/US20230336747A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101335892A (zh) * | 2008-04-25 | 2008-12-31 | 太原科技大学 | 基于帧内模式决策的混合分布式视频编码方法 |
AU2015202844A1 (en) * | 2011-01-12 | 2015-06-11 | Ntt Docomo, Inc. | Image predict coding method, image predict coding device, image predict coding program, image predict decoding method, image predict decoding device, and image predict decoding program |
CN106998470A (zh) * | 2016-01-25 | 2017-08-01 | 华为技术有限公司 | 解码方法、编码方法、解码设备和编码设备 |
CN110490214A (zh) * | 2018-05-14 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 图像的识别方法及***、存储介质及处理器 |
CN109040759A (zh) * | 2018-07-27 | 2018-12-18 | 西安空间无线电技术研究所 | 一种图像并行压缩装置及方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022193916A1 (zh) * | 2021-03-17 | 2022-09-22 | 上海哔哩哔哩科技有限公司 | 用于样点自适应补偿的方法及装置、设备和介质 |
CN113592966A (zh) * | 2021-08-04 | 2021-11-02 | 上海哔哩哔哩科技有限公司 | 图像处理方法及装置、电子设备和存储介质 |
CN113592966B (zh) * | 2021-08-04 | 2024-04-30 | 上海哔哩哔哩科技有限公司 | 图像处理方法及装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP4246972A4 (en) | 2024-05-01 |
CN113068037B (zh) | 2022-12-06 |
WO2022193916A1 (zh) | 2022-09-22 |
US20230336747A1 (en) | 2023-10-19 |
EP4246972A1 (en) | 2023-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113068037B (zh) | 用于样点自适应补偿的方法及装置、设备和介质 | |
EP3560198B1 (en) | Low-complexity sign prediction for video coding | |
CN110662034B (zh) | 自适应性滤波方法和使用该方法的视频编码及解码装置 | |
US11451835B2 (en) | Method and device for entropy coding and decoding using mapping of matching relationship parameters | |
WO2023045420A1 (zh) | 图像处理方法及装置、电子设备和存储介质 | |
US9756347B2 (en) | Screen content coding systems and methods | |
US20230336733A1 (en) | Sample Adaptive Offset | |
CN111131828B (zh) | 一种图像压缩方法、装置、电子设备和存储介质 | |
KR102565840B1 (ko) | 이미지 코딩 처리 방법, 장치, 기기 및 매체 | |
CN115606175B (zh) | 用于视频流的环路内滤波的方法和装置 | |
CN110545417A (zh) | 一种桌面场景的图像编码、解码方法及相关装置 | |
EP3332552A1 (en) | Mixed boolean-token ans coefficient coding | |
CN114303380B (zh) | 用于几何划分标志的索引的cabac译码的编码器、解码器及对应方法 | |
WO2012160626A1 (ja) | 画像圧縮装置、画像復元装置、及びプログラム | |
CN110545435B (zh) | 一种基于概率模型的桌面像素编码方法、装置及存储介质 | |
WO2023055300A2 (en) | Improved residual sign prediction of transform coefficients in video coding | |
US9756344B2 (en) | Intra refresh method for video encoding and a video encoder for performing the same | |
JP6649184B2 (ja) | 線形予測係数出力装置、線形予測係数出力方法及び線形予測係数出力プログラム | |
CN114885160A (zh) | 视频编解码方法、装置、计算机可读介质及电子设备 | |
KR20170103401A (ko) | 영상 부호화 장치의 부호화 방법 | |
RU2787217C1 (ru) | Способ и устройство интерполяционной фильтрации для кодирования с предсказанием | |
JP6581043B2 (ja) | 予測器割当装置、予測器割当方法及び予測器割当プログラム | |
JP5644987B1 (ja) | 映像符号化装置、映像符号化方法および映像符号化プログラム | |
CN118301365A (zh) | 基于二次运动搜索的视频编码方法、装置和电子设备 | |
CN116389722A (zh) | 一种图像解码方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |