CN113873252A - 图像处理方法及装置、电子设备和存储介质 - Google Patents
图像处理方法及装置、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113873252A CN113873252A CN202111137769.4A CN202111137769A CN113873252A CN 113873252 A CN113873252 A CN 113873252A CN 202111137769 A CN202111137769 A CN 202111137769A CN 113873252 A CN113873252 A CN 113873252A
- Authority
- CN
- China
- Prior art keywords
- coefficient
- residual
- scan
- ordinal
- indicator
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 28
- 239000011159 matrix material Substances 0.000 claims abstract description 160
- 238000012545 processing Methods 0.000 claims abstract description 25
- 238000000034 method Methods 0.000 claims description 55
- 238000004590 computer program Methods 0.000 claims description 25
- 230000015654 memory Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 13
- 238000010586 diagram Methods 0.000 description 16
- 230000008569 process Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 238000013139 quantization Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 230000009466 transformation Effects 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 230000003936 working memory Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- 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/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/43—Hardware specially adapted for motion estimation or compensation
Abstract
本公开提供了一种图像处理方法及装置、电子设备和存储介质,涉及图像及视频处理技术领域。实现方案为:获取目标图像的残差系数矩阵,其中,残差系数矩阵包括至少一个非零系数;确定用于残差系数矩阵的最大扫描序数;以水平扫描的方式依次读取残差系数矩阵中的预定数量的残差系数;对于所读取的残差系数,基于所读取的残差系数中每个残差系数的扫描序数与最大扫描序数的序数比较结果和所读取的残差系数中每个残差系数的系数值,更新用于残差系数矩阵的编码量参数,以及当读取完残差系数矩阵中所有残差系数后,基于最终编码量参数确定残差系数矩阵的编码比特数,其中,残差系数的扫描序数为基于不同于水平扫描方式的预设扫描方式来确定的。
Description
技术领域
本公开涉及图像及视频处理技术领域,具体涉及一种图像处理方法、图像处理装置、电子设备、计算机可读存储介质和计算机程序产品。
背景技术
图像、视频数据具有较强的空间相关性,在空间域存在大量的冗余信息。变换编码技术可以将图像或视频数据从空间域变换到频域,大大减少冗余信息,以实现对图像或视频数据的压缩,便于图像或视频数据的存储和传输。
在视频压缩场景中,可以在编码端对各视频帧进行预测、变换、量化、熵编码等处理,得到各视频帧的编码;然后在解码端对编码数据进行熵解码、反量化、反变换等处理,恢复出各视频帧。
在此部分中描述的方法不一定是之前已经设想到或采用的方法。除非另有指明,否则不应假定此部分中描述的任何方法仅因其包括在此部分中就被认为是现有技术。类似地,除非另有指明,否则此部分中提及的问题不应认为在任何现有技术中已被公认。
发明内容
本公开提供了一种图像处理方法、图像处理装置、电子设备、计算机可读存储介质和计算机程序产品。
根据本公开的一方面,提供了一种图像处理方法,包括:获取目标图像的残差系数矩阵,其中,所述残差系数矩阵包括至少一个非零系数;确定用于所述残差系数矩阵的最大扫描序数;以水平扫描的方式依次读取所述残差系数矩阵中的预定数量的残差系数;对于所读取的残差系数,基于所读取的残差系数中每个残差系数的扫描序数与所述最大扫描序数的序数比较结果和所读取的残差系数中每个残差系数的系数值,更新用于所述残差系数矩阵的编码量参数,以及当读取完所述残差系数矩阵中所有残差系数后,基于最终编码量参数确定所述残差系数矩阵的编码比特数,其中,残差系数的扫描序数为基于不同于水平扫描方式的预设扫描方式来确定的。
根据本公开的另一方面,还提供一种图像处理装置,包括:残差系数获取单元,配置成获取目标图像的残差系数矩阵,其中,所述残差系数矩阵包括至少一个非零系数;最大扫描序数确定单元,配置成确定用于所述残差系数矩阵的最大扫描序数;读取单元,配置成以水平扫描的方式依次读取所述残差系数矩阵中的预定数量的残差系数;更新单元,配置成对于所读取的残差系数,基于所读取的残差系数中每个残差系数的扫描序数与所述最大扫描序数的序数比较结果和所读取的残差系数中每个残差系数的系数值,更新用于所述残差系数矩阵的编码量参数;以及编码比特数生成单元,配置成当读取完所述残差系数矩阵中所有残差系数后,基于最终编码量参数确定所述残差系数矩阵的编码比特数。
根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据上述的方法。
根据本公开的另一方面,还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据上述的方法。
根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据上述的方法。
利用本公开提供的实施例,可以以水平扫描的顺序读取残差系数矩阵中的残差系数,从而克服了在非水平扫描的情况下无法连续读取数据的问题,提高了残差系数矩阵的数据读取速度。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图示例性地示出了实施例并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施例的示例性实施方式。所示出的实施例仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1示出了根据本公开的实施例的图像处理方法的流程图;
图2A和图2B示出了两种示例性的非水平扫描的扫描方式的扫描顺序示意图;
图2C示出了根据本公开的实施例的残差系数矩阵的示例;
图3示出了根据本公开的实施例的用于更新编码量参数的示例性的流程图;
图4A-图4C中示出了根据本公开的实施例的寄存器的示意图;
图5示出了根据本公开的实施例的确定补偿编码量参数的示例性的流程图;
图6示出了根据本公开的实施例的差值寄存器的示例;
图7示出了根据本公开的实施例的图像处理方法的示例性的流程图;
图8示出了根据本公开的实施例的图像处理装置的示例性框图;以及
图9示出了能够用于实现本公开的实施例的示例性电子设备的结构框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开中,除非另有说明,否则使用术语“第一”、“第二”等来描述各种要素不意图限定这些要素的位置关系、时序关系或重要性关系,这种术语只是用于将一个元件与另一元件区分开。在一些示例中,第一要素和第二要素可以指向该要素的同一实例,而在某些情况下,基于上下文的描述,它们也可以指代不同实例。
在本公开中对各种所述示例的描述中所使用的术语只是为了描述特定示例的目的,而并非旨在进行限制。除非上下文另外明确地表明,如果不特意限定要素的数量,则该要素可以是一个也可以是多个。此外,本公开中所使用的术语“和/或”涵盖所列出的项目中的任何一个以及全部可能的组合方式。
下面将结合附图详细描述本公开的实施例。
为了便于理解,首先对图像、视频的变换编码过程进行简单介绍。
视频帧可以由多种不同的通道构成,例如,YUV视频帧由亮度通道(Y)、第一色度通道(U)和第二色度通道(V)构成。相应地,视频帧可以包括不同通道的多个图像块,例如,YUV视频帧可以包括亮度图像块、第一色度图像块和第二色度图像块。
图像的编码过程大致如下:将图像切分为多个图像块,以图像块为变换单元(Transform Unit,TU)进行变换和编码。图像块例如可以是4*4、8*8、16*16、32*32、64*64等大小的正方形图像,也可以是矩形图像块,如4*8、8*4大小的矩形图像块。本领域技术人员可以根据实际情况确定图像块的尺寸。
可以对原始的视频帧的图像进行预测、变换、量化、熵编码、反量化、反变换、重建、滤波等处理,从而输出视频的编码流。在视频编码过程中,原始视频帧作为加法器的一个输入,编码帧内预测模块或编码帧间预测模块输出的预测数据为加法器的另一个输入,加法器输出预测残差矩阵。预测残差矩阵经过变换、量化处理,得到残差系数矩阵。残差系数矩阵经过反量化、反变换处理,恢复出预测残差矩阵。恢复出的预测残差矩阵可用于重构视频帧。
在视频解码过程中,可以对接收到的编码流进行熵解码,得到残差系数矩阵、帧间预测相关信息、帧内预测相关信息等。残差系数矩阵经过反量化、反变换处理之后,恢复出预测残差矩阵。重建模块将预测残差加回至相应的帧内预测数据或帧间预测数据。可以通过开关选择使用帧内预测数据或帧间预测数据,以得到重建帧。
在视频编码过程中,编码帧内预测模块可以使用不同的预测方法对原始视频帧进行处理来得到残差系数矩阵。例如,可以利用单向预测、双向预测、空间域预测、时间域预测等方式进行预测。可以理解的是,残差系数矩阵的尺寸越小,编码流的尺寸也就越小。为了对残差系数矩阵的尺寸进行优化,在获得了利用不同预测方法得到的残差系数矩阵后,可以计算编码残差系数矩阵所需的比特数,并选择编码需要的比特数最小的残差系数矩阵用于后续编码过程。
基于此,本公开提供一种改进的图像处理方法,利用本公开提供的方法,可以提高计算系数矩阵所需的比特数的速度。
下面将结合附图具体描述本公开实施例中的图像处理方法。
图1示出了根据本公开的实施例的图像处理方法100的流程图。如图1所示,方法100可以包括:
步骤S102:获取目标图像的残差系数矩阵,其中,残差系数矩阵包括至少一个非零系数。
步骤S104:确定用于残差系数矩阵的最大扫描序数。
步骤S106:以水平扫描的方式依次读取残差系数矩阵中的预定数量的残差系数。
步骤S108:对于所读取的残差系数,基于所读取的残差系数中每个残差系数的扫描序数与最大扫描序数的序数比较结果和所读取的残差系数中每个残差系数的系数值,更新用于残差系数矩阵的编码量参数。
步骤S110:当读取完残差系数矩阵中所有残差系数后,基于最终编码量参数确定残差系数矩阵的编码比特数。
其中,残差系数的扫描序数为基于不同于水平扫描方式的预设扫描方式来确定的。
利用本公开提供的图像处理方法,对于以不同于水平扫描方式进行扫描的残差系数矩阵,通过以水平扫描的方式对残差系数矩阵中的残差系数进行读取并确定所读取的扫描的残差系数的编码量参数。由于一般情况下残差系数矩阵中的残差系数是以按行存储的方式进行存储的,利用本公开提供的方法,可以以水平扫描的顺序读取残差系数矩阵中的残差系数,从而克服了在非水平扫描的情况下无法连续读取数据的问题,提高了以非水平扫描方式对残差系数矩阵进行扫描的数据读取速度。
这里所述的目标图像可以指的是上文中描述的原始视频帧,也可以是需要被编码的任何图像。
在一些实施例中,步骤S110中确定的最终编码量参数可以指示残差系数矩阵中非零系数的个数。基于最终编码量参数和每个非零系数编码需要花费的比特数,可以确定用于残差系数矩阵的编码比特数。在另一些实施例中,步骤S110中确定的最终编码量参数可以指示残差系数矩阵中非零系数的个数以及针对大于阈值的第一残差系数的补偿编码量参数。在一些实现方式中,补偿编码量参数可以指示用于特定残差系数的补偿编码量参数,并可以基于补偿编码量参数和残差系数矩阵中非零系数的个数之和确定最终编码量参数。进一步地,基于最终编码量参数和每个非零系数编码需要花费的比特数可以确定用于残差系数矩阵的编码比特数。
在一些实施例中,可以比较所述残差系数矩阵的编码比特数和所述目标图像的另一残差系数矩阵的另一编码比特数,其中所述残差系数矩阵和所述另一残差系数矩阵是通过不同的预测方法得到的。可以选择所述残差系数矩阵和所述另一残差系数矩阵中具有较小编码比特数的一者用于所述目标图像的编码。方法100中涉及的残差系数矩阵是基于第一预测方法得到的第一残差系数矩阵。还可以利用不同于第一预测方法的第二预测方法对目标图像进行处理以得到目标图像的另一残差系数矩阵,即第二残差系数矩阵。可以选择第一残差系数矩阵和第二残差系数矩阵中具有较小编码比特数的一者用于目标图像的编码。也就是说,可以基于第一残差系数矩阵和第二残差系数矩阵中具有较小编码比特数的一者,对目标图像进行编码。
本公开的实施例中涉及的残差系数矩阵的最大扫描序数是基于用于残差系数矩阵的预定扫描方式而确定的。图2A和图2B示出了两种示例性的非水平扫描的扫描方式的扫描顺序示意图。
图2A示出了z型扫描的扫描顺序表的示意图。如图2A所示,在z型扫描中,从图像块的左上角第一个像素开始,根据图2A中示出的扫描顺序以z型的方式依次读取图像块中的像素。
图2B示出了垂直扫描的扫描顺序表的示意图。如图2B所示,在垂直扫描中,从图像块的左上角第一个像素开始,根据图2B中示出的扫描顺序按列读取图像块中的像素。
在相关技术中,被扫描的残差系数矩阵中的残差系数以按行存储的方式存储在存储设备中。因此,在利用非水平扫描的扫描方式对图像块进行处理时,无法以连续的方式读取所存储的残差系数。这使得程序非常耗时,并且不利于单指令多数据流(SingleInstruction Multiple Data,SIMD优化)。
图2C示出了根据本公开的实施例的残差系数矩阵的示例。图2C中示出的残差系数矩阵是8*8的,即具有8行以及8列。在本公开中将结合图2C中示出的残差系数矩阵描述本公开的原理。然而,可以理解的是,如前文所述,残差系数矩阵的结构不限于图2C中示出的示例。在不脱离本公开原理的情况下,残差系数矩阵也可以是16*16、32*32、4*8、8*4等其他尺寸。
在量化之后可以得到残差系数矩阵中最后一个非零系数所在的位置。例如,每个被处理的图像块的变换量化系数的最后可以用块结束(End of Block,EOB)符号来标识。利用变换量化结果中的EOB符号可以确定残差系数矩阵中最后一个非零系数的位置(即所在的行和列)。可以理解的是,这里所说的“最后一个非零系数”的位置与用于图像块的扫描方式有关。也就是说,可以基于对应于预定扫描方式的用于残差系数矩阵的扫描顺序表和最后一个非零系数在残差系数矩阵中的位置确定最大扫描序数。以图2C中示出的残差系数矩阵为例,根据z型扫描的扫描方式,最后一个非零系数是第2行第5列的系数-5。如果采用其他扫描方式,如垂直扫描,则最后一个非零系数是第1行第6列的系数6。以图2C中示出的残差系数矩阵为例,在z型扫描的情况下,最后一个非零系数的最大扫描序数为17。
在一些实施例中,可以利用寄存器存储所读取的残差系数。在一些实现方式中,寄存器中能够存储的残差系数的数量可以与残差系数矩阵中一行中包括的残差系数的数量相同。在这种情况下,每次读取残差系数矩阵中的一行残差系数,并对所读取的该行残差系数进行处理以确定所读取的该行残差系数中非零系数的个数。在另一些实现方式中,寄存器中能够存储的残差系数的数量也可以不同于残差系数矩阵中一行中包括的残差系数的数量,在这种情况下,寄存器以水平扫描的方式依次读取残差系数矩阵中的系数,并对所读取的残差系数进行处理以确定所读取的残差系数中非零系数的个数。例如,寄存器可以一次读取残差系数矩阵中的两行系数或半行系数。
在下文中将以寄存器中能够存储的残差系数的数量与残差系数矩阵中一行中包括的残差系数的数量相同为例描述本公开的原理。其中,系数寄存器中的每个位置可以包括多个比特。在一些实施例中,系数寄存器中一共有128个比特,其中每16个比特可以用于表示一个残差系数,由此可以将寄存器划分成8个位置,能够残差系数矩阵中一行内的8个残差系数。在另一些实施例中,系数寄存器也可以具有64个比特、256个比特或512个比特等其他尺寸,本领域技术人员可以根据实际情况选择适合尺寸的系数寄存器。
图3示出了根据本公开的实施例的用于更新编码量参数的示例性的流程图。可以利用图3中示出的过程执行图1中示出的方法100。
在步骤S302中,基于所读取的残差系数中每个残差系数的扫描序数与最大扫描序数的序数比较结果,可以确定用于所读取的残差系数中每个残差系数的扫描指示符。其中,第一扫描指示符指示残差系数的扫描序数不大于最大扫描序数,第二扫描指示符指示残差系数的扫描序数大于最大扫描序数。
可以基于预设扫描顺序的扫描表确定所读取的各个残差系数的扫描序数。例如,可以基于残差系数矩阵的尺寸和扫描方式确定用于残差系数矩阵的扫描表。图2A中示出的z型扫描的扫描表可以用于z型扫描的图2C中的残差系数矩阵。如果对图2C中示出的残差系数矩阵采用垂直扫描,则可以使用图2B中示出的扫描表。
在一些实施例中,可以以水平扫描的方式将分别对应于预定数量的残差系数的预定数量的扫描序数读取到扫描序数寄存器中。其中,扫描序数寄存器与系数寄存器的大小是一样的。
对于扫描序数寄存器中每个位置,响应于该位置处的扫描序数不大于最大扫描序数,将扫描指示寄存器中对应于该位置的扫描指示符确定为第一扫描指示符,响应于该位置处的扫描序数大于最大扫描序数,将扫描指示寄存器中对应于该位置的扫描指示符确定为不同于第一扫描指示符的第二扫描指示符。
在一些示例中,可以将最大扫描序数存入与扫描序数寄存器具有相同大小的比较寄存器中。其中比较寄存器中的每个位置都存有最大扫描序数,可以通过将扫描序数寄存器和比较寄存器中对应位置的值进行比较来并行获取所读取的残差系数的扫描序数与最大扫描序数的序数比较结果,从而可以实现对所读取的系数进行并行处理。
图4A中示出了根据本公开的实施例的扫描序数寄存器410和扫描指示寄存器420的示意图。如图4A所示,在要对残差系数矩阵的第一行进行处理的情况下,扫描序数寄存器中存储了残差系数矩阵第一行各个位置的扫描序数,分别为1、2、5、6、15、16、28、29。在一些实现方式中,可以通过读取图2A中示出的扫描表中的第一行数据来读取扫描序数。可以将扫描序数寄存器410中各个位置读取的扫描序数和最大扫描序数17进行比较。其中,扫描序数寄存器中第一个到第六个位置存储的扫描序数不大于最大扫描序数17,因此,可以将扫描指示寄存器420中对应的第一个到第六个位置存储的扫描序数确定为第一扫描指示符。扫描序数寄存器中第七个和第八个位置存储的扫描序数大于最大扫描序数17,因此,可以将扫描指示寄存器中对应的第七个和第八个位置存储的扫描序数确定为不同于第一扫描指示符的第二扫描指示符。在一些示例中,第一扫描指示符可以被表示为二进制全一,第二扫描指示符可以被表示为二进制全零。在图4A中以十进制的方式示出了第一扫描指示符(-1)和第二扫描指示符(0)。
在步骤S304中,基于所读取的残差系数中每个残差系数的系数值和零值的系数比较结果,可以确定用于所读取的残差系数中每个残差系数的系数指示符。其中,第一系数指示符指示残差系数的系数值不为零,第二系数指示符指示残差系数的系数值为零。
在一些实施例中,可以以水平扫描的方式将预定数量的残差系数读取到系数寄存器中。
对于系数寄存器中每个位置,响应于该位置处的残差系数的系数值不等于零,可以将系数指示寄存器中对应于该位置的系数指示符确定为第一系数指示符,响应于该位置处的残差系数的系数值等于零,可以将系数指示寄存器中对应于该位置的系数指示符确定为不同于第一系数指示符的第二系数指示符。
如图4B中示出的系数寄存器430所示,可以将图2C中示出的残差系数矩阵中的第一行残差系数读入系数寄存器。在另一些实现方式中,也可以将残差系数矩阵中的残差系数的绝对值读入系数寄存器,如图4B中示出的系数寄存器440。
可以将系数寄存器中存储的系数值与零值进行比较,并基于系数比较结果确定系数指示寄存器中的系数指示符。
对于系数寄存器430,可以通过确定系数寄存器430中存储的系数值是否等于零来确定系数指示符。在对于系数寄存器430中的每个位置的系数值,在确定该位置处的系数值等于零的情况下,可以将系数指示寄存器中相应位置的系数指示符确定为第二系数指示符。在确定该位置处的系数值不等于零的情况下,可以将系数指示寄存器中相应位置的系数指示符确定为第一系数指示符。
对于系数寄存器440,可以通过确定系数寄存器440中存储的系数值是否大于零来确定系数指示符。在对于系数寄存器440中的每个位置的系数值,在确定该位置处的系数值大于零的情况下,可以将系数指示寄存器中相应位置的系数指示符确定为第一系数指示符。在确定该位置处的系数值不大于零的情况下,可以将系数指示寄存器中相应位置的系数指示符确定为第二系数指示符。
在一些示例中,第一系数指示符可以被表示为二进制全一,第二系数指示符可以被表示为二进制全零。在图4B中以十进制的方式示出了第一系数指示符(-1)和第二系数指示符(0)。
在步骤S306中,针对所读取的残差系数中的每个残差系数,响应于用于该残差系数的扫描指示符指示该残差系数的扫描序数不大于最大扫描序数以及用于该残差系数的系数指示符指示该残差系数的系数值不为零,可以增加编码量参数。
编码量参数可以指示残差系数矩阵中的残差系数的编码量。在一些实施例中,残差系数矩阵中每个非零系数需要512个比特进行编码,而零系数无需编码。因此,可以通过统计残差系数矩阵中非零系数的数量作为编码量参数,以指示残差系数矩阵编码需要花费的比特数。
编码量参数可以包括存储在编码量系数寄存器中的预定数量的编码量系数,其中,编码量系数寄存器的大小与系数寄存器的大小是相同的,并且编码量系数寄存器中每个位置处的编码量系数可以用于系数寄存器中对应位置的残差系数。编码量参数可以是编码量系数寄存器中所有编码量系数的总和。
对系数指示寄存器中各个位置存储的系数指示符和扫描指示寄存器中相应位置存储的扫描指示符进行与(AND)操作,以得到编码量系数寄存器中各个位置存储的编码量系数的递增量。可以利用递增量更新编码量系数寄存器中的各个编码量系数。
图4C中示出了根据本公开的实施例的递增量寄存器和编码量系数寄存器的示例。
通过对图4A中示出的扫描指示寄存器和图4B中示出的系数指示寄存器进行与操作,可以得到图4C中示出的递增量寄存器中的结果。其中,递增量寄存器中每个位置的数可以指示系数寄存器中对应位置的系数的编码量系数的递增量。如图4C所示,递增量寄存器中的第1、2、4、5、6个位置的结果为-1,这指示系数寄存器中第1、2、4、5、6个位置处的残差系数的扫描序数小于最大扫描序数,并且系数值非零。也就是说,系数寄存器中第1、2、4、5、6个位置处的残差系数是需要被扫描的非零系数。
在第一次读取残差系数矩阵中的残差系数值前,可以初始化编码量系数寄存器并将编码量系数寄存器中各个位置初始化为零。
在确定了用于当前系数寄存器中读取的残差系数的递增量后,可以将编码量系数寄存器中各个位置的值减去递增量寄存器中各个位置的值,以更新编码量系数寄存器中的各个编码量系数。由于递增量-1指示该位置处的残差系数是需要被扫描的非零系数,因此用编码量系数寄存器减去递增量寄存器后,可以将当前被扫描的残差系数中需要被扫描的非零系数的个数累积到编码量系数寄存器中,从而实现编码量参数的递增。
可以通过统计残差系数矩阵中非零系数的数量作为编码量参数,并且可以利用“编码量参数*每个系数编码所需的比特数”的结果计算对残差系数矩阵中非零系数进行编码需要花费的比特数。在一些示例中,对于残差系数矩阵中的直流(DC)系数,可以基于DC系数的符号(正或负)来确定该DC系数编码需要花费的比特数。其中,DC系数可以指的是残差系数矩阵第一行第一列的系数。在残差系数矩阵中存在DC系数的情况下,可以将结合图3描述的过程得到的编码量参数减去一,并利用“(编码量参数-1)*每个系数编码所需的比特数+DC系数编码比特数”来计算对残差系数矩阵中非零系数进行编码需要花费的比特数。
在例如AOMedia Video 1(AV1)的编码格式中,对于绝对值不大于14的系数,每个非零系数的编码需要花费512个比特。因此,对于绝对值不大于14的系数,可以利用“编码量参数*512比特数”的结果计算对残差系数矩阵中非零系数进行编码需要花费的比特数。对于绝对值大于14的系数,需要更多的比特数对系数进行编码。因此,在所读取的残差系数中存在绝对值大于14的第一残差系数的情况下,需要确定用于第一残差系数的补偿编码量参数。
根据AV1编码标准,可以基于(2*(msb(abs_level-14)+1)–1)来计算用于第一残差系数的补偿编码量参数。其中abs_level指的是第一残差系数的系数值的绝对值,msb(x)是x的二进制表达的最高有效位。例如,当第一残差系数的系数值是15时,可以基于(2*(msb(1)+1)–1)来计算第一残差系数的补偿编码量参数。当第一残差系数的系数值是-17时,可以基于(2*(msb(3)+1)–1)来计算第一残差系数的补偿编码量参数。
通过调用汇编语言中的“bsr”指令,可以获取任一二进制表达的最高有效位的值。例如,可以通过“bsr”指令确定二进制表达“0101”的最高有效位的值是3。然而,在汇编语言中的bsr指令只能依次处理一个数据,无法实现多个数据的并行处理。因此,无法通过并行处理的方式获取第一残差系数的补偿编码量参数。
为了解决上述问题,本公开提供了一种新的能够以并行处理的方式确定二进制表达的最高有效位的方法。
对于系数寄存器中读取的残差系数,响应于所读取的残差系数中存在大于预定阈值的一个或多个第一残差系数,可以执行图5中示出的方法500来确定第一残差系数的补偿编码量参数。对于AV1编码格式,预定阈值可以是14。
图5示出了根据本公开的实施例的确定补偿编码量参数的示例性的流程图。
在步骤S502中,针对一个或多个第一残差系数中的每一个第一残差系数,可以确定第一残差系数与预定阈值的差值的二进制表示的最高有效位。
在一些实施例中,可以将系数寄存器中所读取的所有残差系数与预定阈值的差值存入与系数寄存器具有相同大小的差值寄存器。
图6示出了根据本公开的实施例的差值寄存器的示例。
如图6所示,对于系数寄存器610中读取的残差系数,可以在差值寄存器620中存储系数寄存器610中各个位置的残差系数的系数值与预定阈值14的差值。在一些实现方式中,由于只需要针对大于预定阈值的第一残差系数计算补偿编码量参数,因此,在差值寄存器620中,可以只保留大于零的差值,并将小于零的差值都确定为零。在另一些实现方式中,可以基于系数寄存器中的残差系数的系数值确定阈值掩模,其中阈值掩模指示了系数寄存器中哪些位置的残差系数的系数值大于预定阈值。在对差值寄存器中的所有位置的数值进行并行处理后,可以利用阈值掩模从所有位置的结果筛选出需要作为补偿编码量参数的结果。
可以理解的是,在差值寄存器中,各个差值是以二进制的方式进行存储的,因此可以对利用差值寄存器620进行处理以得到其中至少一个差值的二进制表示的最高有效位。
在一些实施例中,对于需要确定其最高有效位的二进制表示,可以将二进制表示划分为多个子序列。对于划分得到的多个子序列中的每个子序列,基于该子序列中包括的至少一个比特序列的值查找预先构造的查找表,以确定该子序列中最高有效位的值。基于各个子序列的最高有效位和各个子序列在二进制表示中的位置,确定二进制表示的最高有效位。
以残差系数是由16个比特的二进制表示为例,残差系数与预定阈值的差值也可以由16个比特的二进制表示。
在一些实施例中,可以将待处理的差值的16位二进制表示划分成两个子序列,其中每个子序列的长度为8比特。在另一些实施例中,也可以根据实际情况确定子序列的长度和子序列的数量。例如,可以将16位二进制表示划分成四个子序列,其中每个子序列的长度为4比特。又例如,可以将32位二进制表示划分成两个子序列,其中每个子序列的长度为16比特。
针对划分得到的多个子序列,可以基于该子序列中包括的至少一个比特序列的值查找预先构造的查找表,以确定该子序列中最高有效位的值。例如,比特序列的长度可以是4比特。对于8比特长度的子序列,可以将该子序列划分成两个4比特长度的比特序列。对于16比特长度的子序列,可以将该子序列划分成四个4比特长度的比特序列。可以理解的是,比特序列的长度不限于是4比特。在不脱离本公开原理的情况下,也可以将比特序列的长度确定为其他的值,如2比特、8比特等。
可以为子序列中的至少一个比特序列预先构造查找表。以8比特长度的子序列被划分成4比特长度的第一比特序列和第二比特序列为例,可以为高四位的第一比特序列构造第一查找表,为低四位的第二比特序列构造第二查找表。
由此,可以基于第一比特序列的值查找第一查找表,以确定第一比特序列的最高有效位。可以基于第二比特序列的值查找第二查找表,以确定第二比特序列的最高有效位。基于第一比特序列的最高有效位和第二比特序列的最高有效位中的较大值确定该子序列中的最高有效位。
可以基于以下结构构造第一查找表High4bits_Last1_Pos和第二查找表Low4bits_Last1_Pos:
Low4bits_Last1_Pos[16]={0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4};
High4bits_Last1_Pos[16]={0,5,6,6,7,7,7,7,8,8,8,8,8,8,8,8}。
其中,第一查找表和第二查找表中都包括16个参数,每个参数对应于一个比特序列的最高有效位。
图6中示出了差值3的16位二进制表示630。利用本公开提供的方法,可以将二进制表示630划分成高8位的第一子序列631和低8位的第二子序列632。
对于第一子序列631,可以基于其高四位的第一比特序列0000的值在查找表High4bits_Last1_Pos中进行查找,并确定High4bits_Last1_Pos中第[0000]个位置存储的数值(即0)为第一比特序列0000的最高有效位。类似地,可以基于第一子序列631的第二比特序列0000的值在查找表Low4bits_Last1_Pos中进行查找,并确定Low4bits_Last1_Pos第[0000]个位置存储的数值(即0)为第二比特序列0000的最高有效位。由于第一子序列631中的第一比特序列和第二比特序列的最高有效位均为零,因此第一子序列631中的第一比特序列和第二比特序列的最高有效位中的较大值也为零。由此,可以确定第一子序列631的最高有效位为0。
类似地,对于第二子序列632,可以基于其高四位的第一比特序列0000的值在查找表High4bits_Last1_Pos中进行查找,并确定High4bits_Last1_Pos中第[0000]个位置存储的数值(即0)为第一比特序列0000的最高有效位。可以基于第二子序列632的第二比特序列0101的值在查找表Low4bits_Last1_Pos中进行查找,并确定Low4bits_Last1_Pos第[0101]个位置存储的数值(即2)为第二比特序列0101的最高有效位。由于第二子序列632中的第一比特序列和第二比特序列的最高有效位分别为0和2,因此第二子序列632中的第一比特序列和第二比特序列的最高有效位的较大值为2。由此,可以确定第二子序列632的最高有效位为2。
在一些示例中,可以利用中央处理器(CPU)的shuffle命令来执行基于比特序列的值查找预先构造的查找表的操作。
利用上述方法可以确定二进制表示中每个子序列的最高有效位。进一步地,可以基于每子序列在二进制表示中的位置确定用于该子序列的补偿有效位。例如,针对第一子序列631和第二子序列632,由于在二进制表示630中第一子序列631属于高八位,第二子序列632属于低八位,因此,第一子序列631的补偿有效位为8,第二子序列632的补偿有效位为0。
对于每个子序列,可以利用该子序列的补偿有效位和该子序列的最高有效位确定该子序列的实际最高有效位。例如,对于第一子序列631来说,在基于第一比特序列和第二比特序列的值确定的其最高有效位不为零(如2)的情况下,可以通过加上补偿有效位8的方法对第一子序列的最高有效位进行补偿,并得到第一子序列的经补偿的实际最高有效位为2+8=10。又例如,在基于第一比特序列和第二比特序列的值确定的其最高有效位为零(如图6中示出)的情况下,可以省略利用补偿有效位对最高有效位进行补偿,并将第一子序列的实际最高有效位确定为零。对于第二子序列632来说,由于其补偿有效位为0,基于第一比特序列和第二比特序列的值确定的其最高有效位可以被确定为第二子序列的实际最高有效位。
可以基于各个子序列的实际最高有效位的最大值确定二进制表示的最高有效位。以图6中示出的二进制表示630为例,可以利用上述方法确定第一子序列631的实际最高有效位为0,第二子序列632的实际最高有效位为3,因此第一子序列631和第二子序列632的实际最高有效位的最大值为3。由此可以确定二进制表示630的最高有效位为3。
通过对差值寄存器620中的各个位置的差值并行进行上述处理,可以得到用于各个位置的第一残差系数和预定阈值的差值的二进制表达的最高有效位。
在步骤S504中,基于相应的最高有效位,可以确定分别用于一个或多个第一残差系数的补偿编码量参数。
例如,对于AV1编码格式,可以基于(2*(二进制的最高有效位+1)–1)确定第一残差系数的补偿编码参数。又例如,也可以根据实际编码情况而基于其他计算方法确定第一残差系数的补偿编码参数。
在步骤S506中,可以利用一个或多个第一残差系数的补偿编码量参数更新编码量参数。
例如,可以将步骤S504中得到的补偿编码量参数与图4C中示出的编码量系数寄存器中对应位置的编码量系数相加,从而更新编码量系数。又例如,可以利用单独的补偿编码量变量对各个第一残差系数的补偿编码量参数进行累加,并在残差系数矩阵中的所有行被处理完毕后,利用最终的补偿编码量变量对编码量系数寄存器的总和进行更新,以得到最终的编码量参数。
图7示出了根据本公开的实施例的图像处理方法的示例性的流程图。
如图7所示,在框701中,可以对编码量系数寄存器进行初始化,以将编码量系数寄存器中所有位置处的值都初始化为零。
在框702中,可以将扫描顺序表中的扫描序数读取到扫描序数寄存器中。这里所使用的扫描顺序表可以使非水平扫描的预设扫描方式的扫描顺序表,如z型扫描或垂直扫描。这里所读取的扫描序数是对应于此次流程要处理的残差系数的扫描序数。根据本公开的原理,可以以水平扫描的方式读取扫描顺序表。
在框703中,可以确定扫描序数寄存器各个位置的扫描序数是否大于最大扫描序数的扫描指示符。其中,第一扫描指示符指示残差系数的扫描序数不大于最大扫描序数,第二扫描指示符指示残差系数的扫描序数大于最大扫描序数。
在框704中,可以框703中确定的扫描指示符存入扫描指示寄存器中的对应位置。
在框705中,可以将残差系数矩阵中的残差系数读取到系数寄存器中,其中系数寄存器中各个位置处的残差系数与框702中扫描序数寄存器中相应位置的扫描顺序一一对应。
在框706中,可以确定指示系数寄存器中各个位置的系数值是否为零的系数指示符。其中,第一系数指示符指示残差系数的系数值不为零,第二系数指示符指示残差系数的系数值为零。
在框707中,可以将框706中确定的系数指示符存储系数指示寄存器中的对应位置。
在框708中,可以基于扫描指示寄存器和系数指示寄存器中各个位置的值的与操作,确定递增量寄存器中各个位置的值。其中递增量寄存器中各个位置的值指示系数寄存器中该位置读取的残差系数是否为要扫描的非零系数。
在框709中,可以利用递增量寄存器中的值更新编码量系数寄存器。在第一扫描指示符被表示为二进制全一的,第二扫描指示符被表示为二进制全零,第一系数指示符被表示为二进制全一,第二系数指示符被表示为二进制全零的情况下,其扫描序数小于最大扫描序数并且系数值非零的残差系数的递增量被确定为-1。通过利用编码量系数寄存器中各个位置的值减去递增量寄存器中相应位置的值,可以将当前读取的残差系数中扫描序数小于最大扫描序数并且系数值非零的残差系数的数量统计到编码量系数寄存器中。
在框710中,将判断系数寄存器中是否存在绝对值大于14的残差系数。在系数寄存器中不存在绝对值大于14的残差系数的情况下,将跳过框711-716的执行。在系数寄存器中存在绝对值大于14的残差系数的情况下,将执行框711-716。
在框711中,对于系数寄存器中绝对值大于14的第一残差系数,将确定该残差系数的绝对值和14之间的差值的二进制表示。
在框712中,将该差值的二进制表示划分成多个子序列。在该差值的二进制表示包括16比特的情况下,可以将二进制表示划分成高8位的第一子序列和低8位的第二子序列。
在框713中,可以基于各个子序列中包括的比特序列的值查找预先构造的查找表,以确定各个子序列的最高有效位。例如,可以将第一子序列中的高四位和低四位分别确定为第一比特序列和第二比特序列,并可以基于第一比特序列的值查找上文中示出的第一查找表High4bits_Last1_Pos,以得到第一比特序列的最高有效位。类似地,可以基于第二比特序列的值查找上文中示出的第二查找表Low4bits_Last1_Pos的值。可以基于第一比特序列的最高有效位和第二比特序列的最高有效位中的较大值确定第一子序列的最高有效位。基于类似的方法,可以对第二子序列中的第一比特序列和第二比特序列进行查表以确定第二子序列的最高有效位。
在框714中,可以基于各个子序列的位置和各个子序列的最高有效位确定二进制表示的最高有效位。例如,在高8位的第一子序列的最高有效位不为0的情况下,可以将位于高8位的第一子序列的最高有效位的值加8以得到用于的第一子序列的实际最高有效位。在高8位的第一子序列的最高有效位为0的情况下,可以将0作为第一子序列的实际最高有效位。低8位的第二子序列的最高有效位无需进行调整,可以将框713确定的第二子序列的最高有效位确定为第二子序列的实际最高有效位。可以将第一子序列和第二子序列中实际最高有效位的较大值确定为二进制表达的最高有效位。
在框715中,可以基于二进制表示的最高有效位确定第一残差系数的补偿编码量。在AV1编码格式中,可以基于(2*(msb(abs_level-14)+1)–1)来计算用于第一残差系数的补偿编码量参数。其中(msb(abs_level-14)是框714中得到的二进制表达的最高有效位的值。
在框716中,可以利用第一残差系数的补偿编码量更新编码量系数寄存器。例如,可以在编码量系数寄存器中与第一残差系数对应的位置加上框715中得到的补偿编码量。
在框717中,可以确定残差系数矩阵中是否还有未读取的残差系数。如果判断结果为是,则表示残差系数矩阵中的残差系数尚未读取完毕,可以返回框712并以水平扫描的方式继续处理后面的残差系数。如果判断结果为否,则表示残差系数矩阵中的残差系数都已经被处理,可以前进到框718。
在框718中,可以基于最终编码量参数确定残差系数矩阵的编码比特数。可以将残差系数矩阵中所有残差系数被处理后得到的编码量系数寄存器中各个位置的值进行求和以得到最终编码量参数,并可以将最终编码量参数和单位编码比特数(如512)的乘积作为残差系数矩阵的编码比特数。
图8示出了根据本公开的实施例的图像处理装置的示例性框图。
如图8所示,图像处理装置800可以包括残差系数获取单元810、最大扫描序数确定单元820、读取单元830、更新单元840以及编码比特数生成单元850。
残差系数获取单元810可以配置成获取目标图像的残差系数矩阵,其中,残差系数矩阵包括至少一个非零系数。最大扫描序数确定单元820可以配置成确定用于残差系数矩阵的最大扫描序数。读取单元830可以配置成以水平扫描的顺序依次读取残差系数矩阵中的预定数量的残差系数。更新单元840可以配置成对于所读取的残差系数,基于所读取的残差系数中每个残差系数的扫描序数与最大扫描序数的序数比较结果和所读取的残差系数中每个残差系数的系数值,更新用于残差系数矩阵的编码量参数。编码比特数生成单元850可以配置成当读取完残差系数矩阵中所有残差系数后,基于最终编码量参数确定残差系数矩阵的编码比特数。
利用本公开提供的图像处理装置,对于以不同于水平扫描方式进行扫描的残差系数矩阵,通过以水平扫描的方式对残差系数矩阵中的残差系数进行读取,并获取所读取的残差系数对应的扫描序数与用于残差系数矩阵的最大扫描序数的序数比较结果,可以确定所读取的残差系数是否属于要扫描的残差系数,并进一步可以通过要扫描的残差系数的系数值确定该残差系数的编码量参数。由于一般情况下残差系数矩阵中的残差系数是以按行存储的方式进行存储的,利用本公开提供的方法,可以以水平扫描的顺序读取残差系数矩阵中的残差系数,从而克服了在非水平扫描的情况下无法连续读取数据的问题,提高了残差系数矩阵的数据读取速度。
应当理解,图8中所示装置800的各个单元可以与参考图1描述的方法100中的各个步骤相对应。由此,上面针对方法100描述的操作、特征和优点同样适用于装置800及其所包括的单元。为了简洁起见,某些操作、特征和优点在此不再赘述。
还应当理解,本文可以在软件硬件元件或程序模块的一般上下文中描述各种技术。上面关于图8描述的各个单元可以在硬件中或在结合软件和/或固件的硬件中实现。例如,这些单元可以被实现为计算机程序代码/指令,该计算机程序代码/指令被配置为在一个或多个处理器中执行并存储在计算机可读存储介质中。可替换地,这些单元可以被实现为硬件逻辑/电路。例如,在一些实施例中,残差系数获取单元810、最大扫描序数确定单元820、读取单元830、更新单元840以及编码比特数生成单元850中的一个或多个可以一起被实现在片上系统(System on Chip,SoC)中。SoC可以包括集成电路芯片(其包括处理器(例如,中央处理单元(Central Processing Unit,CPU)、微控制器、微处理器、数字信号处理器(Digital Signal Processor,DSP)等)、存储器、一个或多个通信接口、和/或其他电路中的一个或多个部件),并且可以可选地执行所接收的程序代码和/或包括嵌入式固件以执行功能。
根据本公开的另一方面,还提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中所述存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据上述的方法。
根据本公开的另一方面,还提供一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据上述的方法。
根据本公开的另一方面,还提供一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据上述的方法。
参见图9,现将描述可以作为本公开的服务器或客户端的电子设备900的结构框图,其是可以应用于本公开的各方面的硬件设备的示例。电子设备可以是不同类型的计算机设备,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图9所示,电子设备900可以包括能够通过系统总线903彼此通信的至少一个处理器901、工作存储器902、输入单元904、显示单元905、扬声器906、存储单元907、通信单元908以及其它输出单元909。
处理器901可以是单个处理单元或多个处理单元,所有处理单元可以包括单个或多个计算单元或者多个核心。处理器901可以被实施成一个或更多微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或基于操作指令来操纵信号的任何设备。处理器901可以被配置成获取并且执行存储在工作存储器902、存储单元907或者其他计算机可读介质中的计算机可读指令,诸如操作系统902a的程序代码、应用程序902b的程序代码等。
工作存储器902和存储单元907是用于存储指令的计算机可读存储介质的示例,指令由处理器901执行来实施前面所描述的各种功能。工作存储器902可以包括易失性存储器和非易失性存储器二者(例如RAM、ROM等等)。此外,存储单元907可以包括硬盘驱动器、固态驱动器、可移除介质、包括外部和可移除驱动器、存储器卡、闪存、软盘、光盘(例如CD、DVD)、存储阵列、网络附属存储、存储区域网等等。工作存储器902和存储单元907在本文中都可以被统称为存储器或计算机可读存储介质,并且可以是能够把计算机可读、处理器可执行程序指令存储为计算机程序代码的非暂态介质,计算机程序代码可以由处理器901作为被配置成实施在本文的示例中所描述的操作和功能的特定机器来执行。
输入单元906可以是能向电子设备900输入信息的任何类型的设备,输入单元906可以接收输入的数字或字符信息,以及产生与电子设备的用户设置和/或功能控制有关的键信号输入,并且可以包括但不限于鼠标、键盘、触摸屏、轨迹板、轨迹球、操作杆、麦克风和/或遥控器。输出单元可以是能呈现信息的任何类型的设备,并且可以包括但不限于显示单元905、扬声器906以及其它输出单元909,其它输出单元909可以但不限于包括视频/音频输出终端、振动器和/或打印机。通信单元908允许电子设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据,并且可以包括但不限于调制解调器、网卡、红外通信设备、无线通信收发机和/或芯片组,例如蓝牙TM设备、1302.6设备、WiFi设备、WiMax设备、蜂窝通信设备和/或类似物。
工作寄存器902中的应用程序902b可以被加载执行上文所描述的各个方法和处理,例如图1中的步骤S102-步骤S110。例如,在一些实施例中,上文描述的方法100可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元907。在一些实施例中,计算机程序的部分或者全部可以经由存储单元907和/或通信单元908而被载入和/或安装到电子设备900上。当计算机程序被加载并由处理器901执行时,可以执行上文描述的方法100的一个或多个步骤。备选地,在其他实施例中,处理器901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法100。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行、也可以顺序地或以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
虽然已经参照附图描述了本公开的实施例或示例,但应理解,上述的方法、系统和设备仅仅是示例性的实施例或示例,本发明的范围并不由这些实施例或示例限制,而是仅由授权后的权利要求书及其等同范围来限定。实施例或示例中的各种要素可以被省略或者可由其等同要素替代。此外,可以通过不同于本公开中描述的次序来执行各步骤。进一步地,可以以各种方式组合实施例或示例中的各种要素。重要的是随着技术的演进,在此描述的很多要素可以由本公开之后出现的等同要素进行替换。
Claims (19)
1.一种图像处理方法,包括:
获取目标图像的残差系数矩阵,其中,所述残差系数矩阵包括至少一个非零系数;
确定用于所述残差系数矩阵的最大扫描序数;
以水平扫描的方式依次读取所述残差系数矩阵中的预定数量的残差系数;
对于所读取的残差系数,基于所读取的残差系数中每个残差系数的扫描序数与所述最大扫描序数的序数比较结果和所读取的残差系数中每个残差系数的系数值,更新用于所述残差系数矩阵的编码量参数,以及
当读取完所述残差系数矩阵中所有残差系数后,基于最终编码量参数确定所述残差系数矩阵的编码比特数,
其中,残差系数的扫描序数为基于不同于水平扫描方式的预设扫描方式来确定的。
2.如权利要求1所述的图像处理方法,其中,更新用于所述残差系数矩阵的编码量参数包括:
基于所读取的残差系数中每个残差系数的扫描序数与所述最大扫描序数的序数比较结果,确定用于所读取的残差系数中每个残差系数的扫描指示符,其中,第一扫描指示符指示残差系数的扫描序数不大于所述最大扫描序数,第二扫描指示符指示残差系数的扫描序数大于所述最大扫描序数,
基于所读取的残差系数中每个残差系数的系数值和零值的系数比较结果,确定用于所读取的残差系数中每个残差系数的系数指示符,其中,第一系数指示符指示残差系数的系数值不为零,第二系数指示符指示残差系数的系数值为零,
针对所读取的残差系数中的每个残差系数,响应于用于该残差系数的扫描指示符指示该残差系数的扫描序数不大于所述最大扫描序数以及用于该残差系数的系数指示符指示该残差系数的系数值不为零,增加所述编码量参数。
3.如权利要求2所述的图像处理方法,其中,基于所读取的残差系数中每个残差系数的扫描序数与所述最大扫描序数的序数比较结果,确定用于所读取的残差系数中每个残差系数的扫描指示符包括:
以水平扫描的方式将分别对应于所述预定数量的残差系数的预定数量的扫描序数读取到扫描序数寄存器中;
对于所述扫描序数寄存器中每个位置,
响应于该位置处的扫描序数不大于所述最大扫描序数,将扫描指示寄存器中对应于该位置的扫描指示符确定为第一扫描指示符,
响应于该位置处的扫描序数大于所述最大扫描序数,将扫描指示寄存器中对应于该位置的扫描指示符确定为不同于所述第一扫描指示符的第二扫描指示符。
4.如权利要求2所述的图像处理方法,其中,基于所读取的残差系数中每个残差系数的系数值和零值的系数比较结果,确定用于所读取的残差系数中每个残差系数的系数指示符包括:
以水平扫描的方式将所述预定数量的残差系数读取到系数寄存器中,
对于所述系数寄存器中每个位置,
响应于该位置处的残差系数的系数值不等于零,将系数指示寄存器中对应于该位置的系数指示符确定为第一系数指示符,
响应于该位置处的残差系数的系数值等于零,将系数指示寄存器中对应于该位置的系数指示符确定为不同于所述第一系数指示符的第二系数指示符。
5.如权利要求2所述的图像处理方法,其中,所述第一扫描指示符被表示为二进制全一,所述第二扫描指示符被表示为二进制全零,所述第一系数指示符被表示为二进制全一,所述第二系数指示符被表示为二进制全零。
6.如权利要求5所述的图像处理方法,其中,所述编码量参数包括存储在编码量系数寄存器中预定数量的编码量系数,并且每个编码量系数用于所述系数寄存器中对应位置的残差系数,
响应于用于所读取的残差系数中每个残差系数的扫描指示符指示该残差系数的扫描序数不大于所述最大扫描序数以及用于该残差系数的系数指示符指示该残差系数的系数值不为零,递增所述编码量参数包括:
对所述系数指示寄存器中各个位置存储的系数指示符和所述扫描指示寄存器中相应位置存储的扫描指示符进行与操作,以得到所述编码量系数寄存器中各个位置存储的编码量系数的递增量;
利用所述递增量更新所述编码量系数寄存器中的各个编码量系数。
7.如权利要求2所述的图像处理方法,其中,更新用于所述残差系数矩阵的编码量参数还包括:
响应于所读取的残差系数中存在大于预定阈值的一个或多个第一残差系数,
针对一个或多个第一残差系数中的每一个第一残差系数,确定所述第一残差系数与所述预定阈值的差值的二进制表示的最高有效位;
基于相应的所述最高有效位,确定分别用于所述一个或多个第一残差系数的补偿编码量参数;
利用所述一个或多个第一残差系数的补偿编码量参数更新所述编码量参数。
8.如权利要求7所述的图像处理方法,其中,确定所述第一残差系数与所述预定阈值的差值的二进制表示的最高有效位包括:
将所述二进制表示划分为多个子序列;
对于所述多个子序列中的每个子序列,基于该子序列中包括的至少一个比特序列的值查找预先构造的查找表,以确定该子序列中最高有效位的值;
基于各个子序列的最高有效位和各个子序列在所述二进制表示中的位置,确定所述二进制表示的最高有效位。
9.如权利要求8所述的图像处理方法,其中,对于所述多个子序列中的每个子序列,基于该子序列的值查找预先构造的查找表,以确定该子序列中最高有效位的值包括:
将该子序列划分成第一比特序列和第二比特序列;
基于第一比特序列的值查找第一查找表,以确定第一比特序列的最高有效位;
基于第二比特序列的值查找第二查找表,以确定第二比特序列的最高有效位;
基于所述第一比特序列的最高有效位和所述第二比特序列的最高有效位中的较大值确定该子序列中的最高有效位。
10.如权利要求8或9所述的图像处理方法,其中基于各个子序列的最高有效位和各个子序列在所述二进制表示中的位置,确定所述二进制表示的最高有效位包括:
对于每个子序列,基于该子序列在所述二进制表示中的位置确定用于该子序列的补偿有效位;
对于每个子序列,利用该子序列的补偿有效位和该子序列的最高有效位确定该子序列的实际最高有效位,
基于各个子序列的实际最高有效位的最大值确定所述二进制表示的最高有效位。
11.如权利要求9所述的图像处理方法,其中所述多个子序列中的每个子序列的长度是8比特,所述第一比特序列长度是4比特,所述第二比特序列长度是4比特。
12.如权利要求1-11任一项所述的图像处理方法,其中,确定用于所述残差系数矩阵的最大扫描序数包括:
基于用于所述残差系数矩阵的预定扫描方式确定所述最大扫描序数。
13.如权利要求12所述的图像处理方法,其中所述预定扫描方式是垂直扫描或z型扫描。
14.如权利要求12或13所述的图像处理方法,其中,基于用于所述残差系数矩阵的预定扫描方式确定所述最大扫描序数包括:
基于块结束指示标识确定所述残差系数矩阵中最后一个非零系数在所述残差系数矩阵中的位置;
基于对应于所述预定扫描方式的用于所述残差系数矩阵的扫描顺序表和所述最后一个非零系数在所述残差系数矩阵中的位置确定所述最大扫描序数。
15.如权利要求1-14中任一项所述的图像处理方法,还包括:
比较所述残差系数矩阵的编码比特数和所述目标图像的另一残差系数矩阵的另一编码比特数,其中所述残差系数矩阵和所述另一残差系数矩阵是通过不同的预测方法得到的;
基于所述残差系数矩阵和所述另一残差系数矩阵中具有较小编码比特数的一者,对所述目标图像进行编码。
16.一种图像处理装置,包括:
残差系数获取单元,配置成获取目标图像的残差系数矩阵,其中,所述残差系数矩阵包括至少一个非零系数;
最大扫描序数确定单元,配置成确定用于所述残差系数矩阵的最大扫描序数;
读取单元,配置成以水平扫描的方式依次读取所述残差系数矩阵中的预定数量的残差系数;
更新单元,配置成对于所读取的残差系数,基于所读取的残差系数中每个残差系数的扫描序数与所述最大扫描序数的序数比较结果和所读取的残差系数中每个残差系数的系数值,更新用于所述残差系数矩阵的编码量参数;以及
编码比特数生成单元,配置成当读取完所述残差系数矩阵中所有残差系数后,基于最终编码量参数确定所述残差系数矩阵的编码比特数。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中
所述存储器存储有计算机程序,所述计算机程序在被所述至少一个处理器执行时实现根据权利要求1-15中任一项所述的方法。
18.一种存储有计算机程序的非瞬时计算机可读存储介质,其中,所述计算机程序在被处理器执行时实现根据权利要求1-15中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,其中,所述计算机程序在被处理器执行时实现根据权利要求1-15中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111137769.4A CN113873252B (zh) | 2021-09-27 | 2021-09-27 | 图像处理方法及装置、电子设备和存储介质 |
PCT/CN2022/098753 WO2023045420A1 (zh) | 2021-09-27 | 2022-06-14 | 图像处理方法及装置、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111137769.4A CN113873252B (zh) | 2021-09-27 | 2021-09-27 | 图像处理方法及装置、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113873252A true CN113873252A (zh) | 2021-12-31 |
CN113873252B CN113873252B (zh) | 2023-12-19 |
Family
ID=78991372
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111137769.4A Active CN113873252B (zh) | 2021-09-27 | 2021-09-27 | 图像处理方法及装置、电子设备和存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113873252B (zh) |
WO (1) | WO2023045420A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023045420A1 (zh) * | 2021-09-27 | 2023-03-30 | 上海哔哩哔哩科技有限公司 | 图像处理方法及装置、电子设备和存储介质 |
CN116156170A (zh) * | 2023-04-24 | 2023-05-23 | 北京中星微人工智能芯片技术有限公司 | 数据流的发送方法、装置、电子设备和存储介质 |
US11818191B1 (en) * | 2021-11-11 | 2023-11-14 | Two Six Labs, LLC | Stateless lossless compression |
CN117156069A (zh) * | 2023-11-01 | 2023-12-01 | 南通环典计算机技术有限公司 | 一种软件图像数据加密传输方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116452647B (zh) * | 2023-06-15 | 2023-12-08 | 广州安特激光技术有限公司 | 一种基于匹配追踪的动态图像配准方法、系统及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101682770A (zh) * | 2007-06-15 | 2010-03-24 | 高通股份有限公司 | 视频块预测模式的自适应译码 |
CN102625096A (zh) * | 2011-01-28 | 2012-08-01 | 联合信源数字音视频技术(北京)有限公司 | 基于avs的并行预编码设备 |
US20180288409A1 (en) * | 2015-09-30 | 2018-10-04 | Lg Electronics Inc. | Method and device for coding residual signal in video coding system |
WO2019127003A1 (zh) * | 2017-12-26 | 2019-07-04 | 富士通株式会社 | 图像编码方法、装置以及电子设备 |
US20200021855A1 (en) * | 2018-07-12 | 2020-01-16 | Google Llc | Context Derivation for Coefficient Coding |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039430B (zh) * | 2007-05-08 | 2011-01-12 | 清华大学 | 一种视频编码中对残差矩阵的快速扫描方法 |
JP4998276B2 (ja) * | 2008-01-15 | 2012-08-15 | コニカミノルタビジネステクノロジーズ株式会社 | 固体撮像装置及びその駆動方法 |
US9747255B2 (en) * | 2011-05-13 | 2017-08-29 | Texas Instruments Incorporated | Inverse transformation using pruning for video coding |
US10382758B2 (en) * | 2017-12-15 | 2019-08-13 | Google Llc | Transform block-level scan order selection for video coding |
CN113873252B (zh) * | 2021-09-27 | 2023-12-19 | 上海哔哩哔哩科技有限公司 | 图像处理方法及装置、电子设备和存储介质 |
-
2021
- 2021-09-27 CN CN202111137769.4A patent/CN113873252B/zh active Active
-
2022
- 2022-06-14 WO PCT/CN2022/098753 patent/WO2023045420A1/zh unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101682770A (zh) * | 2007-06-15 | 2010-03-24 | 高通股份有限公司 | 视频块预测模式的自适应译码 |
CN101743751A (zh) * | 2007-06-15 | 2010-06-16 | 高通股份有限公司 | 视帧内预测模式而定的残差块的自适应变换 |
CN102625096A (zh) * | 2011-01-28 | 2012-08-01 | 联合信源数字音视频技术(北京)有限公司 | 基于avs的并行预编码设备 |
US20180288409A1 (en) * | 2015-09-30 | 2018-10-04 | Lg Electronics Inc. | Method and device for coding residual signal in video coding system |
WO2019127003A1 (zh) * | 2017-12-26 | 2019-07-04 | 富士通株式会社 | 图像编码方法、装置以及电子设备 |
CN110731081A (zh) * | 2017-12-26 | 2020-01-24 | 富士通株式会社 | 图像编码方法、装置以及电子设备 |
US20200021855A1 (en) * | 2018-07-12 | 2020-01-16 | Google Llc | Context Derivation for Coefficient Coding |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023045420A1 (zh) * | 2021-09-27 | 2023-03-30 | 上海哔哩哔哩科技有限公司 | 图像处理方法及装置、电子设备和存储介质 |
US11818191B1 (en) * | 2021-11-11 | 2023-11-14 | Two Six Labs, LLC | Stateless lossless compression |
CN116156170A (zh) * | 2023-04-24 | 2023-05-23 | 北京中星微人工智能芯片技术有限公司 | 数据流的发送方法、装置、电子设备和存储介质 |
CN116156170B (zh) * | 2023-04-24 | 2024-04-16 | 北京中星微人工智能芯片技术有限公司 | 数据流的发送方法、装置、电子设备和存储介质 |
CN117156069A (zh) * | 2023-11-01 | 2023-12-01 | 南通环典计算机技术有限公司 | 一种软件图像数据加密传输方法 |
CN117156069B (zh) * | 2023-11-01 | 2024-01-09 | 南通环典计算机技术有限公司 | 一种软件图像数据加密传输方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113873252B (zh) | 2023-12-19 |
WO2023045420A1 (zh) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113873252B (zh) | 图像处理方法及装置、电子设备和存储介质 | |
WO2016138779A1 (zh) | 帧内编解码方法、编码器和解码器 | |
JP2020174374A (ja) | デジタルイメージ再圧縮 | |
TW201826786A (zh) | 用於視訊寫碼之低複雜度符號預測 | |
US8902994B1 (en) | Deblocking filtering | |
CN111182303A (zh) | 共享屏幕的编码方法、装置、计算机可读介质及电子设备 | |
CN113068040A (zh) | 一种图像压缩方法、装置、电子设备及可读存储介质 | |
CN103650490A (zh) | 用于运动补偿预测的方法和设备 | |
CN112543337B (zh) | 视频解码方法、装置、计算机可读介质及电子设备 | |
US10897635B2 (en) | Memory compression systems and methods | |
US6614942B1 (en) | Constant bitrate algorithm for block based image compression | |
CN110738666A (zh) | 一种基于离散余弦变换的图像语义分割方法及装置 | |
JP2011234363A (ja) | 画像処理システム及び方法 | |
KR20210044746A (ko) | 비디오 코딩 방법, 장치, 전자 기기 및 컴퓨터 판독 가능한 저장 매체 | |
CN110740324B (zh) | 编码控制方法及相关装置 | |
CN110944212A (zh) | 一种视频帧重构方法、装置及终端设备 | |
KR101172983B1 (ko) | 화상 압축 장치, 화상 복원 장치, 화상 압축 방법, 화상 복원 방법 및 프로그램을 기록한 컴퓨터 판독 가능한 기록 매체 | |
CN108028938A (zh) | 视频编码方法及装置 | |
CN113613022B (zh) | 一种jpeg图像的压缩方法、装置、设备及可读介质 | |
CN111836051B (zh) | 一种桌面图像编码、解码方法及相关装置 | |
CN113068037A (zh) | 用于样点自适应补偿的方法及装置、设备和介质 | |
CN102948147A (zh) | 基于变换系数直方图的视频速率控制 | |
CN110545435B (zh) | 一种基于概率模型的桌面像素编码方法、装置及存储介质 | |
CN114079769A (zh) | 视频编码方法、装置、设备及计算机可读存储介质 | |
CN111083500A (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 |