编码方法、装置、设备及存储介质

文档序号:410495 发布日期:2021-12-17 浏览:4次 >En<

阅读说明:本技术 编码方法、装置、设备及存储介质 (Encoding method, apparatus, device and storage medium ) 是由 郭鲲 于 2021-08-09 设计创作,主要内容包括:本公开提供一种编码方法、装置、设备及存储介质,涉及编码技术领域,所述方法包括将当前宏块的像素值和参考宏块中相同位置的像素值进行比较;在确定所述当前宏块中变化的像素值的数量小于第一预设阈值时,将每个变化的像素值插入多叉树中,并将每个未变化的像素值设置为零;对所述多叉树中的每个像素值进行编号;根据预设编码规则对当前宏块进行编码;所述预设编码规则为根据未变化的像素值的个数和所述多叉树中的每个像素值的编号确定的规则。本公开编码得到的码流传输的是图像像素,而不是频域变化再进行量化后的频域信号,从而能够保证微小的变化都能够在解码端显示,提高了图像的显示质量。(The present disclosure provides an encoding method, apparatus, device and storage medium, relating to the technical field of encoding, wherein the method comprises comparing a pixel value of a current macro block with a pixel value of the same position in a reference macro block; when the number of changed pixel values in the current macro block is determined to be smaller than a first preset threshold value, inserting each changed pixel value into a multi-way tree, and setting each unchanged pixel value to be zero; numbering each pixel value in the multi-way tree; coding the current macro block according to a preset coding rule; the preset encoding rule is a rule determined according to the number of unchanged pixel values and the number of each pixel value in the multi-branch tree. The code stream obtained by the coding of the method transmits image pixels instead of frequency domain signals after quantization after frequency domain change, so that the tiny change can be displayed at a decoding end, and the display quality of the image is improved.)

编码方法、装置、设备及存储介质

技术领域

本公开涉及编码技术领域,尤其涉及编码方法、装置、设备及存储介质。

背景技术

计算机合成图像是采用计算机图形学技术,通过计算机上显卡计算得到的人造图像。在对图像进行传输时,通常需要对图像进行编解码。

相关技术中,通常对计算机桌面进行采集,然后将采集到的图像划分为若干个大小相同、互不重叠的宏块。当当前帧中某个宏块相对于参考帧中相同位置的宏块发生了部分变化时,采用H264、H265等视频编码技术对宏块进行编码。

但上述技术中,H264、H265等视频编码技术采用了量化的方法,导致当前帧相对参考帧的一些微小的变化无法在解码后的图像中显现出来,从而降低了图像的显示质量。

发明内容

本公开实施例提供一种编码方法、装置、设备及存储介质,能够解决现有技术中降低了图像的显示质量的问题。所述技术方案如下:

根据本公开实施例的第一方面,提供一种编码方法,所述方法包括:

将当前宏块的像素值和参考宏块中相同位置的像素值进行比较;

在确定所述当前宏块中变化的像素值的数量小于第一预设阈值时,将每个变化的像素值插入多叉树中,并将每个未变化的像素值设置为零;

对所述多叉树中的每个像素值进行编号;

根据预设编码规则对当前宏块进行编码;所述预设编码规则为根据未变化的像素值的个数和所述多叉树中的每个像素值的编号确定的规则。

本公开实施例提供一种编码方法,在确定所述当前宏块中变化的像素值的数量小于第一预设阈值时,将每个变化的像素值插入多叉树中,并将每个未变化的像素值设置为零,还将多叉树中的每个像素值进行编号,最后采用根据未变化的像素值的个数和多叉树中的每个像素值的编号确定的预设编码规则对当前宏块进行编码。这样,编码得到的码流传输的是图像像素,而不是频域变化再进行量化后的频域信号,从而能够保证微小的变化都能够在解码端显示,提高了图像的显示质量。

在一个实施例中,所述将当前宏块的像素值和参考宏块中相同位置的像素值进行比较包括:

按照预设顺序对当前宏块中的每个像素进行扫描,计算所述当前宏块中的每个像素的像素值;

将所述当前宏块中的每个像素的像素值与参考宏块中相同位置的像素值进行比较;

在确定所述当前宏块中的目标像素的像素值与参考宏块中相同位置的像素的像素值相同时,确定所述目标像素未发生变化;

在确定所述当前宏块中的目标像素的像素值与参考宏块中相同位置的像素的像素值未相同时,确定所述目标像素发生变化。

在一个实施例中,还包括:

在将当前帧中的所有宏块扫描结束时,确定所述多叉树中的像素值的个数是否大于第二预设阈值;

在确定所述多叉树中的像素值的个数大于所述第二预设阈值时,对所述多叉树进行剪枝,直至所述多叉树中存储的像素值的个数小于所述第二预设阈值。

在一个实施例中,所述根据预设编码规则对当前宏块进行编码包括:

确定所述当前宏块中第一个变化的像素值之前的未变化的像素值的个数,记为第一数值;

在所述多叉树中查询所述当前宏块中每个变化的像素值对应的编号;

确定所述当前宏块中任意两个变化的像素值之间的未变化的像素值的个数,得到第二数值;

确定所述当前宏块中最后一个变化的像素值之后的未变化的像素值的个数,记为第三数值;

根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序;

对排序结果中的每个数值进行编码,得到编码码流。

在一个实施例中,所述对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序包括:

在确定所述第二数值大于预设步长时,将所述第二数值对应的两个变化的像素值之间的未变化的像素值的个数记录为预设步长和第四数值;所述预设步长表示有所述预设步长减一个未变化的像素值,所述第四数值与所述预设步长减一的之和等于所述第二数值;

在确定所述第二数值小于预设步长时,将所述第二数值对应的两个变化的像素值之间的未变化的像素值的个数记录为第二数值;

在每个所述第二数值均大于所述预设步长时,根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述预设步长、每个所述第四数值、以及所述第三数值进行排序。

在一个实施例中,还包括:

在每个所述第二数值均小于所述预设步长时,根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序。

在一个实施例中,在所有的所述第二数值中有大于所述预设步长的第二数值,且有小于所述预设步长的第二数值时,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、每个所述预设步长、每个所述第四数值、以及所述第三数值进行排序。

根据本公开实施例的第二方面,提供一种编码装置,包括:

比较模块,用于将当前宏块的像素值和参考宏块中相同位置的像素值进行比较;

处理模块,用于在确定所述当前宏块中变化的像素值的数量小于第一预设阈值时,将每个变化的像素值插入多叉树中,并将每个未变化的像素值设置为零;

编号模块,用于对所述多叉树中的每个像素值进行编号;

编码模块,用于根据预设编码规则对当前宏块进行编码;所述预设编码规则为根据未变化的像素值的个数和所述多叉树中的每个像素值的编号确定的规则。

在一个实施例中,所述比较模块包括扫描子模块、比较子模块、第一确定子模块和第二确定子模块;

所述扫描子模块,用于按照预设顺序对当前宏块中的每个像素进行扫描,计算所述当前宏块中的每个像素的像素值;

所述比较子模块,用于将所述当前宏块中的每个像素的像素值与参考宏块中相同位置的像素值进行比较;

所述第一确定子模块,用于在确定所述当前宏块中的目标像素的像素值与参考宏块中相同位置的像素的像素值相同时,确定所述目标像素未发生变化;

所述第二确定子模块,用于在确定所述当前宏块中的目标像素的像素值与参考宏块中相同位置的像素的像素值未相同时,确定所述目标像素发生变化。

在一个实施例中,所述装置还包括确定模块和剪枝模块;

所述确定模块,用于在将当前帧中的所有宏块扫描结束时,确定所述多叉树中的像素值的个数是否大于第二预设阈值;

所述剪枝模块,用于在确定所述多叉树中的像素值的个数大于所述第二预设阈值时,对所述多叉树进行剪枝,直至所述多叉树中存储的像素值的个数小于所述第二预设阈值。

在一个实施例中,所述编码模块包括第三确定子模块、编号子模块、第四确定子模块、第五确定子模块、排序子模块和编码子模块;

所述第三确定子模块,用于确定所述当前宏块中第一个变化的像素值之前的未变化的像素值的个数,记为第一数值;

所述编号子模块,用于在所述多叉树中查询所述当前宏块中每个变化的像素值对应的编号;

所述第三确定子模块,用于确定所述当前宏块中任意两个变化的像素值之间的未变化的像素值的个数,得到第二数值;

所述第四确定子模块,用于确定所述当前宏块中最后一个变化的像素值之后的未变化的像素值的个数,记为第三数值;

所述排序子模块,用于根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序;

所述编码子模块,用于对排序结果中的每个数值进行编码,得到编码码流。

在一个实施例中,所述排序子模块包括第一记录单元、第二记录单元和第一排序单元;

所述第一记录单元,用于在确定所述第二数值大于预设步长时,将所述第二数值对应的两个变化的像素值之间的未变化的像素值的个数记录为预设步长和第四数值;所述预设步长表示有所述预设步长减一个未变化的像素值,所述第四数值与所述预设步长减一的之和等于所述第二数值;

所述第二记录单元,用于在确定所述第二数值小于预设步长时,将所述第二数值对应的两个变化的像素值之间的未变化的像素值的个数记录为第二数值;

所述第一排序单元,用于在每个所述第二数值均大于所述预设步长时,根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述预设步长、每个所述第四数值、以及所述第三数值进行排序。

在一个实施例中,所述排序子模块还包括第二排序单元;

所述第二排序单元,用于在每个所述第二数值均小于所述预设步长时,根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序。

在一个实施例中,所述排序子模块还包括第三排序单元;

所述第三排序单元,用于在所有的所述第二数值中有大于所述预设步长的第二数值,且有小于所述预设步长的第二数值时,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、每个所述预设步长、每个所述第四数值、以及所述第三数值进行排序。

根据本公开实施例的第三方面,提供一种编码设备,包括:处理器和存储器,所述存储器中存储有至少一条计算机指令,所述指令由所述处理器加载并执行以实现第一方面以及第一方面的任一实施例所描述的编码方法中所执行的步骤。

根据本公开实施例的第四方面,提供一种计算机可读存储介质,所述存储介质中存储有至少一条计算机指令,所述指令由处理器加载并执行以实现第一方面以及第一方面的任一实施例所描述的编码方法中所执行的步骤。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本公开实施例提供的一种编码方法的流程图;

图2a是本公开实施例提供的一种编码装置的结构图;

图2b是本公开实施例提供的一种编码装置的结构图;

图2c是本公开实施例提供的一种编码装置的结构图;

图2d是本公开实施例提供的一种编码装置的结构图;

图2e是本公开实施例提供的一种编码装置的结构图;

图2f是本公开实施例提供的一种编码装置的结构图;

图2g是本公开实施例提供的一种编码装置的结构图;

图3是本公开实施例提供的一种编码设备的结构图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

本公开实施例提供一种编码方法,如图1所示,该方法包括以下步骤:

步骤101、将当前宏块的像素值和参考宏块中相同位置的像素值进行比较。

可选的,按照预设顺序对当前宏块中的每个像素进行扫描,计算所述当前宏块中的每个像素的像素值;将所述当前宏块中的每个像素的像素值与参考宏块中相同位置的像素值进行比较;在确定所述当前宏块中的目标像素的像素值与参考宏块中相同位置的像素的像素值相同时,确定所述目标像素未发生变化;在确定所述当前宏块中的目标像素的像素值与参考宏块中相同位置的像素的像素值未相同时,确定所述目标像素发生变化。

其中,预设顺序为从左到右,从上到下的顺序,即将当前宏块中的每个像素和参考宏块中相同位置的像素分别按照位置从左到右、从上到下依次进行扫描,计算出当前宏块中每个像素的像素值和参考宏块中每个像素的像素值,如果当前宏块中的某个目标像素与参考宏块中相同位置上的像素的像素值相同,说明目标像素没有发生变化,则该目标像素的位置记为0,如果像素值不同,说明目标像素发生了变化,则该目标像素的位置记为(R,G,B)像素值或者记为(Y,U,V)像素值。

步骤102、在确定所述当前宏块中变化的像素值的数量小于第一预设阈值时,将每个变化的像素值插入多叉树中,并将每个未变化的像素值设置为零。

其中,多叉树包括8叉树。

进一步的,在将当前帧中的所有宏块扫描结束时,确定所述多叉树中的像素值的个数是否大于第二预设阈值;在确定所述多叉树中的像素值的个数大于所述第二预设阈值时,对所述多叉树进行剪枝,直至所述多叉树中存储的像素值的个数小于所述第二预设阈值。

示例的,在确定当前宏块中变化的像素值的数量小于第一预设阈值时,采用本公开中的编码方法,扫描过程中,在确定当前宏块中的像素(目标像素)没有发生变化时,则该像素的位置记为0,在确定当前宏块中的像素发生变化时,则该像素的位置记为(R,G,B)像素值或者记为(Y,U,V)像素值,并将该像素的像素值插入一颗8叉树中,当当前帧的所有宏块均扫描完成后,如果8叉树中存储的不同像素值的个数大于第二预设阈值(256),则需要对这颗8叉树进行剪枝,直到8叉树中存储的不同像素值的个数小于256个。

步骤103、对所述多叉树中的每个像素值进行编号。

示例的,将8叉树中剪枝后的像素值进行编号,以备后续进行查询。

步骤104、根据预设编码规则对当前宏块进行编码。

其中,所述预设编码规则为根据未变化的像素值的个数和所述多叉树中的每个像素值的编号确定的规则。

可选的,确定所述当前宏块中第一个变化的像素值之前的未变化的像素值的个数,记为第一数值;在所述多叉树中查询所述当前宏块中每个变化的像素值对应的编号;确定所述当前宏块中任意两个变化的像素值之间的未变化的像素值的个数,得到第二数值;确定所述当前宏块中最后一个变化的像素值之后的未变化的像素值的个数,记为第三数值;根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序;对排序结果中的每个数值进行编码,得到编码码流。

示例的,在开始描述编码过程前,先定义RL代表当前宏块中两个变化像素值之间未变化的像素值(设为0)的个数,或者,第一个变化的像素值之前未变化的像素值的个数,或者,最后一个变化的像素值之后未变化的像素值的个数;VAL代表像素值在多叉树中的编号(0~255)。编码规则如下:1)编码码流以RL起始(第一个变化的像素值之前未变化的像素值的个数)并以RL结尾(最后一个变化的像素值之后未变化的像素值的个数);2)如果RL等于预设步长Lmax,意味着有Lmax-1个0(未变化的像素值的个数),同时后面还有至少一个RL;3)VAL一定出现在一个或者多个RL之后。然后对当前宏块的计算结果(中间结果)扫描,进行编码。先计算第一个变化的像素值之前的未变化的像素值的个数,也就是计算第一个变化的像素值之前的0的个数,记为第一数值RL1,然后根据(R,G,B)或者(Y,U,V)在8叉树中查询对应的编号,然后记录为VAL1,再次计算之后的所有RL和VAL,直到最后一个(R,G,B)或者(Y,U,V)被查询记录为VAL,然后记录最后一个VAL后面的0的个数,也就是最后一个RL。

其中,R表示红色,G表示绿色,B表示蓝色,Y表示亮度,U和V表示色度。

具体的,在确定所述第二数值大于预设步长时,将所述第二数值对应的两个变化的像素值之间的未变化的像素值的个数记录为预设步长和第四数值。

其中,所述预设步长表示有所述预设步长减一个未变化的像素值,所述第四数值与所述预设步长减一的之和等于所述第二数值。

在每个所述第二数值均大于所述预设步长时,根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述预设步长、每个所述第四数值、以及所述第三数值进行排序。

举例说明:假设阈值为5,最大步长为15,宏块宽和高为8。当前帧中某宏块与参考帧中相同位置的宏块对比后,得到如下结果。

示例的,如表1所示,白色的方格代表像素值与参考帧相同位置一样,黑色方格代表像素值不同。首先写出中间结果:(R1,G1,B1),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R2,G2,B2),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R3,G3,B3),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R4,G4,B4)。将变化的像素值(R1,G1,B1),(R2,G2,B2),(R3,G3,B3),(R4,G4,B4)插入8叉树中。到所有宏块扫描完后,对8叉树进行剪枝,得到256个像素值以及这些像素值对应的编号(0~255)。假设(R1,G1,B1)的编号为11,(R2,G2,B2)的编号为61,(R3,G3,B3)的编号为91,(R4,G4,B4)的编号为245。再开始对中间结果进行扫描,得到第一数值、每个变化的像素值对应的编号、每个预设步长、每个第四数值、以及第三数值排序结果为:0(RL1),11(VAL1),15(RL2),2(RL3),61(VAL2),15(RL4),5(RL5),91(VAL3),15(RL6),11(RL7),245(VAL4),0(RL8),其中,第一数值为0(RL1),第三数值为0(RL8),11(VAL1)和61(VAL2)之间的15(RL2)为预设步长,2(RL3)为第四数值,61(VAL2)和91(VAL3)之间的15(RL4)也为预设步长,5(RL5)为第四数值,以此类推。

因为预设步长Lmax等于15,需要用4bit(比特)来表示RL,所以最终的编码码流为0000 00001011 1111 0010 00111101 1111 0101 01011011 1111 1011 11110101 0000。

需要说明的是,上述排序结果中的预设步长15(RL2)、15(RL4)、15(RL6)均表示有14个0,15(RL2)和后面相邻的2(RL3)加起来等于VAL1与VAL2之间0的总数14+2=16;15(RL4)和后面相邻的5(RL5)加起来等于VAL2与VAL3之间0的总数,14+5=19;15(RL6)和后面相邻的11(RL7)加起来等于VAL3与VAL4之间0的总数,14+11=26。

表1

在确定所述第二数值小于预设步长时,将所述第二数值对应的两个变化的像素值之间的未变化的像素值的个数记录为第二数值。

在每个所述第二数值均小于所述预设步长时,根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序。

示例的,如表2所示,白色的方格代表像素值与参考帧相同位置一样,黑色方格代表像素值不同。首先写出中间结果:(R1,G1,B1),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R2,G2,B2),(0),(0),(R3,G3,B3),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R4,G4,B4),(0),(0),(0),(0),(0),(R5,G5,B5),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R6,G6,B6),(0),(0),(0),(0),(0),(0),(0),(0),(R7,G7,B7),(0),(0)。将变化的像素值(R1,G1,B1),(R2,G2,B2),(R3,G3,B3),(R4,G4,B4),(R5,G5,B5),(R6,G6,B6),(R7,G7,B7)插入8叉树中。到所有宏块扫描完后,对8叉树进行剪枝,得到256个像素值以及这些像素值对应的编号(0~255)。假设(R1,G1,B1)的编号为11,(R2,G2,B2)的编号为31,(R3,G3,B3)的编号为41,(R4,G4,B4)的编号为51,(R5,G5,B5)的编号为91,(R6,G6,B6)的编号为121,(R7,G7,B7)的编号为245。再开始对中间结果进行扫描,得到第一数值、每个变化的像素值对应的编号、每个第二数值、以及第三数值排序结果为:0(RL1),11(VAL1),14(RL2),31(VAL2),2(RL3),41(VAL3),12(RL4),51(VAL4),5(RL5),91(VAL5),14(RL6),121(VAL7),8(RL7),245(VAL8),2(RL8)。

因为预设步长Lmax等于15,需要用4bit(比特)来表示RL,所以最终的编码码流为0000 00001011 1110 00011111 0010 00101001 00001100 00110011 0101 0101101100001110 01111001 1000 11110101 0010。

表2

在所有的所述第二数值中有大于所述预设步长的第二数值,且有小于所述预设步长的第二数值时,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、每个所述预设步长、每个所述第四数值、以及所述第三数值进行排序。

示例的,如表3所示,白色的方格代表像素值与参考帧相同位置一样,黑色方格代表像素值不同。首先写出中间结果:(R1,G1,B1),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R2,G2,B2),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R3,G3,B3),(0),(0),(0),(0),(0),(0),(0),(0),(R4,G4,B4),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(0),(R5,G5,B5)。将变化的像素值(R1,G1,B1),(R2,G2,B2),(R3,G3,B3),(R4,G4,B4),(R5,G5,B5)插入8叉树中。到所有宏块扫描完后,对8叉树进行剪枝,得到256个像素值以及这些像素值对应的编号(0~255)。假设(R1,G1,B1)的编号为11,(R2,G2,B2)的编号为61,(R3,G3,B3)的编号为91,(R4,G4,B4)的编号为121,(R5,G5,B5)的编号为245。再开始对中间结果进行扫描,得到第一数值、每个变化的像素值对应的编号、每个第二数值、每个预设步长、每个第四数值、以及第三数值排序结果为:0(RL1),11(VAL1),15(RL2),2(RL3),61(VAL2),9(RL4),91(VAL3),8(RL5),121(VAL4),15(RL6),11(RL7),245(VAL4),0(RL8)。

因为预设步长Lmax等于15,需要用4bit(比特)来表示RL,所以最终的编码码流为0000 00001011 00001111 0010 00111101 1001 01011011 1000 01111001 0000111100001011 11110101 0000。

表3

本公开实施例提供一种编码方法,在确定所述当前宏块中变化的像素值的数量小于第一预设阈值时,将每个变化的像素值插入多叉树中,并将每个未变化的像素值设置为零,还将多叉树中的每个像素值进行编号,最后采用根据未变化的像素值的个数和多叉树中的每个像素值的编号确定的预设编码规则对当前宏块进行编码。这样,编码得到的码流传输的是图像像素,而不是频域变化再进行量化后的频域信号,从而能够保证微小的变化都能够在解码端显示,提高了图像的显示质量;另外,本公开在编码前可以通过一个第一预设阈值计算出压缩率,可以根据带宽动态调整这个第一预设阈值,保证宏块的压缩率。

基于上述实施例中所描述的编码方法,下述为本公开装置实施例,可以用于执行本公开方法实施例。

本公开实施例提供一种编码装置,如图2a所示,该编码装置20包括:比较模块201、处理模块202、编号模块203和编码模块204。

其中,比较模块201,用于将当前宏块的像素值和参考宏块中相同位置的像素值进行比较。

处理模块202,用于在确定所述当前宏块中变化的像素值的数量小于第一预设阈值时,将每个变化的像素值插入多叉树中,并将每个未变化的像素值设置为零。

编号模块203,用于对所述多叉树中的每个像素值进行编号。

编码模块204,用于根据预设编码规则对当前宏块进行编码;所述预设编码规则为根据未变化的像素值的个数和所述多叉树中的每个像素值的编号确定的规则。

在一个实施例中,如图2b所示,所述比较模块201包括扫描子模块2011、比较子模块2012、第一确定子模块2013和第二确定子模块2014。

其中,所述扫描子模块2011,用于按照预设顺序对当前宏块中的每个像素进行扫描,计算所述当前宏块中的每个像素的像素值。

所述比较子模块2012,用于将所述当前宏块中的每个像素的像素值与参考宏块中相同位置的像素值进行比较。

所述第一确定子模块2013,用于在确定所述当前宏块中的目标像素的像素值与参考宏块中相同位置的像素的像素值相同时,确定所述目标像素未发生变化。

所述第二确定子模块2014,用于在确定所述当前宏块中的目标像素的像素值与参考宏块中相同位置的像素的像素值未相同时,确定所述目标像素发生变化。

在一个实施例中,如图2c所示,所述装置还包括确定模块205和剪枝模块206。

其中,所述确定模块205,用于在将当前帧中的所有宏块扫描结束时,确定所述多叉树中的像素值的个数是否大于第二预设阈值。

所述剪枝模块206,用于在确定所述多叉树中的像素值的个数大于所述第二预设阈值时,对所述多叉树进行剪枝,直至所述多叉树中存储的像素值的个数小于所述第二预设阈值。

在一个实施例中,如图2d所示,所述编码模块204包括第三确定子模块2041、编号子模块2042、第四确定子模块2043、第五确定子模块2044、排序子模块2045和编码子模块2046。

其中,所述第三确定子模块2041,用于确定所述当前宏块中第一个变化的像素值之前的未变化的像素值的个数,记为第一数值。

所述编号子模块2042,用于在所述多叉树中查询所述当前宏块中每个变化的像素值对应的编号。

所述第三确定子模块2043,用于确定所述当前宏块中任意两个变化的像素值之间的未变化的像素值的个数,得到第二数值。

所述第四确定子模块2044,用于确定所述当前宏块中最后一个变化的像素值之后的未变化的像素值的个数,记为第三数值。

所述排序子模块2045,用于根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序。

所述编码子模块2046,用于对排序结果中的每个数值进行编码,得到编码码流。

在一个实施例中,如图2e所示,所述排序子模块2045包括第一记录单元20451、第二记录单元20452和第一排序单元20453。

其中,所述第一记录单元20451,用于在确定所述第二数值大于预设步长时,将所述第二数值对应的两个变化的像素值之间的未变化的像素值的个数记录为预设步长和第四数值;所述预设步长表示有所述预设步长减一个未变化的像素值,所述第四数值与所述预设步长减一的之和等于所述第二数值。

所述第二记录单元20452,用于在确定所述第二数值小于预设步长时,将所述第二数值对应的两个变化的像素值之间的未变化的像素值的个数记录为第二数值。

所述第一排序单元20453,用于在每个所述第二数值均大于所述预设步长时,根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述预设步长、每个所述第四数值、以及所述第三数值进行排序。

在一个实施例中,如图2f所示,所述排序子模块2045还包括第二排序单元20454。

其中,所述第二排序单元20454,用于在每个所述第二数值均小于所述预设步长时,根据所述当前宏块中每个像素的位置,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、以及所述第三数值进行排序。

在一个实施例中,如图2g所示,所述排序子模块2045还包括第三排序单元20455。

其中,所述第三排序单元20455,用于在所有的所述第二数值中有大于所述预设步长的第二数值,且有小于所述预设步长的第二数值时,对所述第一数值、每个变化的像素值对应的编号、每个所述第二数值、每个所述预设步长、每个所述第四数值、以及所述第三数值进行排序。

本公开实施例提供一种编码装置,在确定所述当前宏块中变化的像素值的数量小于第一预设阈值时,将每个变化的像素值插入多叉树中,并将每个未变化的像素值设置为零,还将多叉树中的每个像素值进行编号,最后采用根据未变化的像素值的个数和多叉树中的每个像素值的编号确定的预设编码规则对当前宏块进行编码。这样,编码得到的码流传输的是图像像素,而不是频域变化再进行量化后的频域信号,从而能够保证微小的变化都能够在解码端显示,提高了图像的显示质量。

参考图3所示,本公开实施例还提供了一种帧率控制设备,该帧率控制设备包括接收器301、发射器302、存储器303和处理器304,该发射器302和存储器303分别与处理器304连接,存储器303中存储有至少一条计算机指令,处理器304用于加载并执行至少一条计算机指令,以实现上述图1对应的实施例中所描述的编码方法。

基于上述图1对应的实施例中所描述的编码方法,本公开实施例还提供一种计算机可读存储介质,例如,非临时性计算机可读存储介质可以是只读存储器(英文:Read OnlyMemory,ROM)、随机存取存储器(英文:RandomAccess Memory,RAM)、CD-ROM、磁带、软盘和光数据存储装置等。该存储介质上存储有计算机指令,用于执行上述图1对应的实施例中所描述的编码方法,此处不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:图像处理方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类