一种视频解码相关信息存储方法和装置与流程

文档序号:12628349阅读:279来源:国知局
一种视频解码相关信息存储方法和装置与流程

本发明涉及图像处理领域,尤其涉及一种视频解码相关信息存储方法和装置。



背景技术:

在视频图像处理领域,需要实时对图像进行解码。解码图像的一般方法是逐点解码。当解码到图像中某一像素点时,若知道该像素点左方、左上方、上方和右上方的像素点信息时,就可以对像素点进行预测,便可以减少解码工作量,加快解码的进度。解码时,解码区中的像素点会从左到右进行解码,解码完一行后回到下一行的第一个像素点进行解码。

这就导致了已解码像素点信息的存取是个问题,若采取二维方法记录该图像上所有已解码点信息,则需要过大缓存,若采用横纵方向记录点位(一维数组记录),则会遇到已解码像素点信息被覆盖的问题。



技术实现要素:

为此,需要提供一种视频解码相关信息存储方法和装置,解决在解码图像时像素点信息被覆盖的问题。

为实现上述目的,发明人提供了一种视频解码相关信息存储方法,包括如下步骤:

开辟一维存储空间;

对图像上的解码单元进行解码,获得解码结果;

获取解码结果中后续解码需要使用的信息,根据该解码单元所在坐标计算出对应的一维空间位置值,存储该信息到一维存储空间中一维空间位置值对应的存储空间中;

对图像上新的解码单元进行解码,获取解码时需要使用的边界相邻解码 单元的坐标,根据该坐标计算出对应的一维空间位置值,从一维存储空间获取该一维空间位置值对应的信息,根据该信息完成该解码单元的解码并获得解码结果;

重复上述后面两步骤,直到解码完成。

具体的,所述一维存储空间中存储的解码单元信息的位置与该解码单元所在的坐标的横向坐标与纵向坐标的差值同比增长或同比减小。

进一步的,所述一维存储空间长度为图像上横向解码单元个数和纵向解码单元个数之和减一。

进一步的,还包括步骤:还包括步骤:检测判断新的解码单元左下方或右上方是否有已解码单元,并通过周围已解码单元的信息对新的解码单元的信息进行预测推导。

一种视频解码相关信息存储装置,包括如下模块:

存储空间开辟模块:用于开辟一维存储空间;

图像解码模块:用于对图像上的解码单元进行解码,获得解码结果;

结果存储模块:获取解码结果中后续解码需要使用的信息,根据该解码单元所在坐标计算出对应的一维空间位置值,存储该信息到一维存储空间中一维空间位置值对应的位置中;

图像解码模块还用于对图像上新的解码单元进行解码,获取解码时需要使用的边界相邻解码单元的坐标,根据该坐标计算出对应的一维空间位置值,从一维存储空间获取该一维空间位置值对应的信息,根据该信息完成该解码单元的解码并获得解码结果;

重复解码模块:用于重复使能图像解码模块和结果存储模块。

具体的,所述一维存储空间中存储的解码单元信息的位置与该解码单元所在的坐标的横向坐标与纵向坐标的差值同比增长或同比减小。

进一步的,所述存储空间长度为图像上横向解码单元个数和纵向解码单元个数之和减一。

进一步的,还包括检测推导模块,所述检测推导模块用于检测判断新的解码单元左下方或右上方是否有已解码单元,并通过周围已解码单元的信息对新的解码单元的信息进行预测推导。

区别于现有技术,上述技术方案通过设置一维空间存储模块,使得在解码图像的同时,能使必要的像素点信息不被覆盖,解决在解码图像时必要的像素点信息被覆盖的问题。

附图说明

图1为本发明装置模块图;

图2为本发明方法流程图;

图3-A和图3-B为本发明某实施例解码示意图;

图4为本发明某实施例图像中解码单元示意图。

附图标记说明:

110、图像;

130、解码装置;

131、存储空间开辟模块;

133、图像解码模块;

135、结果存储模块;

137、重复解码模块;

139、检测推导模块;

150、存储模块;

A、未解码单元;

B、已解码单元;

C、已解码单元;

D、已解码单元;

E、已解码单元;

F、已解码单元;

G、已解码单元;

H、已解码单元。

具体实施方式

为详细说明技术方案的技术内容、构造特征、所实现目的及效果,以下结合具体实施例并配合附图详予说明。

图1是一种视频解码装置130的模块构造示意图,包括存储空间开辟模块131、图像解码模块133、结果存储模块135和重复解码模块137。本方案可以用于普通视频的解码,也可以用于H.265视频的解码工作。

图2是一个视频解码方法的流程图。在一些实施例中,图1的视频解码装置130可用来实施图2所描述的视频解码方法。请参阅图2,本方法开始后,解码装置执行步骤S201:开辟一维存储空间;“一维存储空间”是指可以用一个地址(或者位置值)变量来存取数据的计算机存储空间。一个线性数据结构(比如串、队列、栈、数组等)可视为一个一维存储空间。所述一维存储空间可以用多个可随机访存的“存储单元”来实现。每个在一维存储空间里的存储单元都有一个固定的或者浮动的存储量(比如1K bytes)。并可以用一个与之相对应的位置值来读取或存储图像解码信息。所述图像(如图1的图像110)是输入到解码装置中的单张图片或者视频数据中的单帧画面。所述图像解码信息包括但不限于像素的RGB值,以及部分图像区块的编码方式、预测方向、运动矢量、像素值等信息。在一些实施例中,解码装置可以根据需要解码的图像的大小来计算出一维存储空间所需的存储单元的数量(又称存储空间的长度),并根据此存储空间的长度来开辟一维存储空间。之后将详细描述如何计算存储空间长度。

解码装置随后进行步骤S202:对图像上的一个解码单元进行解码,并获 得解码结果;所述解码单元的大小可以根据需要设置,可以是一个包含多像素点的解码单元,也可以是单一像素点的解码单元。当某个解码单元比一个基本/标准解码单元大时,对该解码单元内可以划分更小的次级解码单元(与基本/标准解码单元相同或者更小的单元),进一步递归应用本方法,在此不赘述。具体的,该解码单元可为一个位于图像左上方的一个需被解码的图像单元。解码装置将按照从左到右,从上到下的顺序对图像进行解码。先选择图像最左上方(比如先最上然后最左的解码单元,或者先最左然后最上的解码单元)未被解码的一个解码单元进行解码,后续再逐渐对已解码单元的下方及右方的解码单元进行解码。

解码装置再进行步骤S203:获取解码结果中后续解码需要使用的信息,根据该解码单元所在坐标计算出对应的一维空间位置值,存储该后续解码信息到一维存储空间中与一维空间位置值对应的存储单元中;对于已解码的像素点,可以根据同样操作,根据其坐标位置,计算出其一维空间位置值,并将该像素点解码结果的后续解码信息存储到与一维空间位置值对应的存储单元中。

在一些实施例中,步骤S202所获取的解码结果可被用于解码后续的一些解码单元。因此,需要将从解码结果中提取的“后续解码信息”存储在一维存储空间里的一个存储单元中,以便后续解码能够读取利用。后续解码信息存储在一维存储空间的具体位置值可以根据解码单元在原图像上的具体坐标来计算出。“坐标”指原图像按照解码单元来划分后,解码单元的坐标,非像素坐标。所述一维空间位置值与解码单元所在坐标的对应关系如下述:

在某些具体的实施例中,所述在一维存储空间中存储的某解码单元的后续解码信息的位置,与该解码单元所在的横向坐标与纵向坐标的差值同比增长或同比减小。假设划分n*n个像素点为一个解码单元,并对需解码的图像坐标化,那么对于高H个解码单元,宽W个解码单元,大小为H*W的图像进行解码的时候,(如某像素区域示意图,图4所示),对于任意解码单元(x, y),都有x-y=c;c∈[-(h-1),w-1]。该c值就是所述“该解码单元所在的横向坐标与纵向坐标的差值”。如果以c值作为一维空间位置值,就可根据c值的计算结果不同分配一维存储空间中存储单元的存储位置。另外,一维存储空间中存储单元的位置可以按照c值升序排列,也可以按照c值降序排列,即所述解码单元的后续解码信息在一维存储空间的存储位置与c值同比增长或减小。因此具有相同c值的像素点,在一维存储空间中会分配相同储存位置的特点。这样设计的好处是按序排列解码单元信息,便于数据的整合与管理。同时最大限度的减少了参考信息存储的数据量,并且由于其参考的边界单元信息在存储器中属于一个连续存储的空间,可以便于读取及总线缓存。

在另一些实施例中,所述一维存储空间的空间长度为图像上横向解码单元个数和纵向解码单元个数之和减一。在对高(纵向)H个解码单元,宽(横向)W个解码单元,大小为H*W的图像进行解码的时候,c值的计算结果有H+W-1种可能,因此在上述S201开辟一维存储空间时,只需要建立H+W-1长度的一维存储空间。该长度的一维存储空间在一般情况下远远小于二维图像存储空间,对于解码一张1080p的二维图像,所需的一维存储空间长度仅约3k个存储单元。而存储该二维图像所需的存储量则要高达2000k个存储单元。因此,本发明的设计大大缩小了数据量的需求。该长度的一维存储空间如何行使功能并减少无用数据的原理将进一步在下文中论述。

再进行步骤S204,对图像上新的解码单元进行解码,获取解码时需要使用的边界相邻解码单元的坐标,根据该相邻解码单元的坐标计算出对应的一维空间位置值,从一维存储空间获取该一维空间位置值对应的解码信息,根据该解码信息完成该解码单元的解码并获得解码结果;所述边界可以理解为已解码单元和未解码单元的分界,所述需要使用的边界相邻解码单元的坐标即该边界上相邻已解码单元的坐标,并根据已解码单元的坐标计算对应的一维空间位置值,提取对应信息。

在一些实施例中,解码新的解码单元需要用到与之相邻的解码单元的解 码结果(即之前已经解码并储存在一维存储空间的“后续解码信息”)。因为每个相邻解码单元的后续解码信息都与该相邻解码单元的一维空间位置值相对应,所以解码装置在解码新的解码单元时,只要获取相邻解码单元的坐标,就能够根据这些坐标,计算出与相邻解码单元对应的一维空间位置值,并用此位置值来从一维存储空间中找到与位置值相对应的存储单元,再从该存储单元里提取之前存储的后续解码信息。

在图4所示的某些实施例中,图像解码一般从图像的左上方开始,逐步向右方及下方的未解码单元进行解码。所述新的解码单元即图中的,坐标位置为(x1,y1)的未解码单元。将(x1,y1)解码单元进行解码时,需要其边界相邻的左上方(x1-1,y1-1)、上方(x1,y1-1)、左方(x1-1,y1)的解码单元的解码结果。在部分优选方案中还需要其右上方(x1+1,y1-1)或左下方(x1-1,y1+1)的解码单元解码结果。参考上述解码结果对(x1,y1)解码单元的值进行推导,以提高解码效率,减少解码时间。存储相邻解码单元信息的一般做法是根据横和纵两个方向进行存储,这样会导致在解码当前解码单元时,左上方解码单元的数据不是被上方解码单元覆盖,就是被左方解码单元覆盖了,损失左上方解码单元的解码结果对推导当前解码单元(x1,y1)极为不利。另一些做法采用二维存储空间记录已解码的解码单元信息,这样会导致消耗过多存储空间。

我们再看图4,左下方解码单元(x1-1,y1+1)、左方解码单元(x1-1,y1)、左上方解码单元(x1-1,y1-1)、上方解码单元(x1,y1-1)、右上方解码单元(x1+1,y1-1)五个解码单元坐标值中的x-y=c值依次增大,由于前述的c值与一维空间存储位置的关系,c值不相同,在一维数组中将分别占不同的存储单元位置。之所以在解码到解码单元(x1,y1)时,能够获取到左上方解码单元的解码结果,这是因为采用了上述一维存储空间使得左上方解码单元的数据不会被覆盖而导致的。另一方面,由于当前解码单元(x1,y1)与其左上方的区块具有相同的c值,因此,在当前解码单元解码完后,其解码结果 将会覆盖其左上方解码单元的数据。就是说,解码单元(x1,y1)的后续解码信息将用其c值来存入一维存储空间。因为解码单元(x1,y1)和解码单元(x1-1,y1-1)有相同的c值,所以它们的后续解码信息会占用一维存储空间里的同一个存储单元。一旦解码单元(x1,y1)的后续解码信息存入一维存储空间,将会覆盖掉解码单元(x1-1,y1-1)的后续解码信息。但是由于解码单元(x1-1,y1-1)不再是任何未解码单元的相邻解码单元。就是说,此时与左上方解码单元相邻的解码单元都已经解码完毕,左上方解码单元和与之相关的后续解码信息也不会再被调用。将其数据覆盖,恰恰也达到了节省内存的效果。

还包括步骤:检测判断新的解码单元左下方或右上方是否有已解码单元,并通过周围已解码单元的信息对新的解码单元的信息进行预测推导。在某些具体的实施例中,上述步骤S203“根据该解码单元所在坐标计算出对应的一维空间位置值,存储该后续解码信息到一维存储空间中一维空间位置值对应的存储单元”时,还可将该解码单元在图像中的位置的纵向坐标的“位置标记”记录到一维存储空间中与该解码单元相对应的存储单元中的信息标记位上,作为该解码单元的纵坐标标记信息,用于随后对当前解码单元的左下方与右上方是否已经被解码进行判断。在一实施例中,“位置标记”可为解码单元在图像中的纵向坐标。这样,当两个解码单元的位置标记相同时,表明该两个解码单元在图像中处于同一行;当两个解码单元的位置标记不同时,表明该两个解码单元在图像中不处于同一行。在另一实施例中,“位置标记”可记录解码单元在图像中是处于奇数行或者偶数行。同样,当相邻的两个解码单元的位置标记相同时,表明该两个解码单元在图像中处于同一行;当相邻的两个解码单元的位置标记不同时,表明该两个解码单元在图像中处于上下行的关系。

左下方信息的判断方法如图3-A所示,当前解码单元为A,即如前所述的新的解码单元。而当前解码单元A左边相邻的最小解码单元最靠下一个位 置是解码单元C。而在一维存储空间里,假设存储单元是按照解码单元的横向坐标与纵向坐标的差值从小到大排列,与解码单元C相对应的存储单元(简称M1)的前一个位置值的存储单元(简称M2)里可能已经存储了解码单元B的信息。但是由于图3-A中的解码单元B与图3-B中的解码单元B有相同的横向坐标与纵向坐标的差,因此存储单元M2中的解码信息有可能是图3-A中的B或者图3-B中的B。如果存储单元M2对应于图3-A中的解码单元B,则存储单元M2中的解码信息可用于解码单元A的解码。如果存储单元M2对应于图3-B中的解码单元B,则存储单元M2中的解码信息不能用于解码单元A的解码。

为了判断储单元M2对应的解码单元是图3-A中的B,还是图3-B中的B,可以将存储在M2单元的B的位置标记与存储在M1单元里的C的位置标记对比。如果M1和M2单元中的位置标记不同,则如图3-A所描述的状况,B位于C下方,即当前解码单元A的左下方检测判断到有已解码的单元B。如果M1和M2单元中的位置标记相同,则如图3-B所描述的状况,则如同图3-B一样,B点位于C点左方,说明B,C属于同一横向行上。这时候当前解码单元A的左下信息不存在。

在另一些实施例中,右上方信息的判断方法如图3-B所示,当前解码单元为A,即如前所述的新的解码单元。而当前解码单元A上边相邻的最小解码单元最靠右位置是解码单元G。而在一维存储空间里,假设存储单元是按照解码单元的横向坐标与纵向坐标的差值从小到大排列,与解码单元G相对应的存储单元(简称M3)的后一个位置值的存储单元(简称M4)里可能已经存储了解码单元H的信息。但是由于图3-A中的解码单元H与图3-B中的解码单H有相同的横向坐标与纵向坐标的差,因此存储单元M4中的解码信息有可能是图3-A中的H或者图3-B中的H。如果存储单元M4对应于图3-A中的解码单元H,则存储单元M4中的解码信息不能用于解码单元A的解码。如果存储单元M4对应于图3-B中的解码单元H,则存储单元M4中的解码信 息可以用于解码单元A的解码。

为了判断储单元M4对应的解码单元是图3-A中的H,还是图3-B中的H,可以将存储在M4单元的H的纵向坐标与存储在M3单元里的G的位置标记对比。如果M3和M4单元中的位置标记相同,则如图3-B所描述的状况,H位于G右方,即当前解码单元A的右上方检测判断到有已解码单元H。如果M3和M4单元中的位置标记不同,则如图3-A所描述的状况,H点位于G点上方,说明G,H属于同一纵向行上。

因此在解码单元A就可以根据其周围已解码单元进行推导预测获得预测结果,所述周围已解码单元包括左下方、右上方以及周边相邻的左方、上方、左上方位置,(即包括图3-A中的B,C,D,E,F,G,再加上图3-B中的H)。当所述预测结果与实际结果不相同时,再使用编码进行修正。编码修正包括重新编码,差值编码等。在某些实施例中,并不存在判断左上角与右下角是否存在已解码单元并进行推导的步骤。设计上述步骤的好处在于使得结果更加精确,也使得解码更有效率。

重复上述后面两步骤S203和步骤S204,直到解码完成。如图2所示,可以添加一个判断步骤S205,判断是否解码完成,若判断未是,则S206结束本方法,否则返回步骤S203。综上,本方法通过设置一维数组,开辟一维存储空间,使得在解码新的解码单元时,其左上角的数据都能够得到保存,并可以被调用。直到该解码单元被解码完毕时才会覆盖左上角解码单元的数据。解决了图像在解码时必要解码单元数据丢失,以及采用二维存储空间占据太大缓存的问题。

本发明还提供了一种视频解码相关信息存储装置130,如图1所示,包括如下模块:

存储空间开辟模块131:用于开辟一维存储空间;

图像解码模块133:用于对图像上的解码单元进行解码,获得解码结果;

结果存储模块135:获取解码结果中后续解码需要使用的信息,根据该解 码单元所在坐标计算出对应的一维空间位置值,存储该信息到一维存储空间中一维空间位置值对应的位置中;

图像解码模块还用于对图像上新的解码单元进行解码,获取解码时需要使用的边界相邻解码单元的坐标,根据该坐标计算出对应的一维空间位置值,从一维存储空间获取该一维空间位置值对应的信息,根据该信息完成该解码单元的解码并获得解码结果;

重复解码模块137:用于重复使能图像解码模块和结果存储模块。在某些实施例中,还包括存储模块150,用于存储完全解码后的图像信息,方便进一步的调用。通过设置上述模块,本装置解决了图像在解码时必要解码单元数据丢失,以及采用二维存储空间占据太大缓存的问题。

在一些具体的实施例中,所述一维存储空间中存储的解码单元信息的位置与该解码单元所在的坐标的横向坐标与纵向坐标的差值同比增长或同比减小。这样设计的好处是按序排列解码单元信息,便于数据的整合与管理。

进一步的,所述存储空间长度为图像上横向解码单元个数和纵向解码单元个数之和减一。本装置的存储空间长度的设计大大缩小了数据量大小。

在另一些实施例中,还包括还包括检测推导模块139,所述检测推导模块用于检测判断新的解码单元左下方或右上方是否有已解码单元,并通过周围已解码单元的信息对新的解码单元的信息进行预测推导。该模块的作用在于好处在于使得结果更加精确,也使得解码更有效率。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括……”或“包含……” 限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的要素。此外,在本文中,“大于”、“小于”、“超过”等理解为不包括本数;“以上”、“以下”、“以内”等理解为包括本数。

本领域内的技术人员应明白,上述各实施例可提供为方法、装置、或计算机程序产品。这些实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。上述各实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,包括但不限于:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。

上述各实施例是参照根据实施例所述的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到计算机设备的处理器以产生一个机器,使得通过计算机设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机设备以特定方式工作的计算机设备可读存储器中,使得存储在该计算机设备可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机设备上,使得在计算机设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机设备上执行的指 令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已经对上述各实施例进行了描述,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改,所以以上所述仅为本发明的实施例,并非因此限制本发明的专利保护范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1