一种基于运动估计的数据存储方法、终端设备及存储介质与流程

文档序号:18329880发布日期:2019-08-03 12:00阅读:175来源:国知局
一种基于运动估计的数据存储方法、终端设备及存储介质与流程

本发明涉及数字视频压缩技术领域,尤其涉及一种基于运动估计的数据存储的方法、终端设备及存储介质。



背景技术:

在工业和学术领域,都有多种运动估计解决方案。光栅扫描策略通过参考帧中搜索块,以预测当前块的最小速率失真。它通常是计算最密集的函数,高效的实现是非常理想的。内存访问的数量是实现中的一个关键因素。

在现有的基于光栅扫描的运动估计算法中,列序号相同的像素元素被写入共同的内存。这种存储方式会导致运动估计算法在访问内存时的效率低下。以图1所示为例,一维像素阵列按照列序号相同的方式存放在内存中,此时,基于光栅扫描策略的运动估计算法需要以3×3大小的窗口从左到右连续扫描一行,并在达到右边界时将窗口向下移动一个像素点的距离,再从右往左连续扫描一行,并以此方式完成整个6×6像素阵列的遍历。如果按照列序号相同的方式存储像素点,3×3大小的窗口在每次向左或向右移动一个像素点距离时都需要从同一个内存中读取3个像素元素。然而,因为内存在通常情况下仅有一个或两个读端口,读取3个像素元素就需要花费至少两个时钟周期,这将使得处理模块中的流水线至少花费额外的一个周期等待内存提供数据。如果3×3大小的窗口在初始移动的方向不是从左向右而是从上向下,此问题仍然存在。当3×3大小的窗口按照从上向下的顺序扫描至下边界时,窗口需要向右移动一个像素点距离,此时就需要从同一个内存中顺序读取3个像素元素。这种顺序读取行为增加了内存访问的数量,并减少了计算吞吐量。



技术实现要素:

为了解决上述问题,本发明提出了一种基于运动估计的数据存储方法、终端设备及存储介质,以加快扫描速度。

具体方案如下:

一种基于运动估计的数据存储方法,包括:将图像划分为多个一维像素阵列,并按序将每个一维像素阵列中的各元素存放入不同的存储模块内,且图像中同一行或列的相邻的多个元素分别存储于不同的存储模块内。

进一步的,具体包括以下步骤:

s1:设定p个用于存储图像数据的存储模块,并依序对其进行编号;

s2:计算图像中每一行或列中包含元素的个数,判断每一行或列中包含元素的个数是否为p的整数倍,如果不是,将元素的行或列中包含元素的个数补足为p的整数倍后,进入s3,否则,直接进入s3;

s3:将图像划分为多个一维像素阵列;

s4:将所有一维像素阵列中的各元素均保存至p个存储模块内,具体过程为:将第n行或列的一维像素阵列中的第i个元素存入第s个存储模块内,其中:s=i%p,其中%表示求余数。

进一步的,所述一维像素阵列按照从上到下、从左到右的顺序存入存储模块内。

一种基于运动估计的数据存储终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述的方法的步骤,所述存储器至少包括p个存储模块。

进一步的,存储模块均至少包含一个写数据端口、一个写地址端口、一个读数据端口和一个读地址端口。

进一步的,写数据端口的宽度等于图像数据中单个像素数据的位宽度。

进一步的,读数据端口的宽度等于图像数据中单个像素数据的位宽度。

进一步的,写数据端口的宽度等于读数据端口的宽度,且两者均等于图像数据中单个像素数据的位宽度。

一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现本发明实施例上述的方法的步骤。

本发明采用如上技术方案,使得扫描过程中需要读取的各元素可以通过对不同的存储模块在同一个周期内进行并行读取,消除了顺序读取的弊端,加快了扫描速度。

附图说明

图1所示为传统的像素元素存入存储模块的示意图。

图2所示为本发明实施例一中一维像素阵列在图像中的示意图。

图3所示为该实施例中一维像素阵列之间的垂直邻接关系。

图4所示为该实施例中一维像素阵列之间的水平邻接关系。

图5所示为该实施例中存储模块的示意图。

图6所示为该实施例中像素元素存入存储模块的示意图。

图7所示为该实施例中从存储模块中读取像素元素的示意图。

图8所示为该实施例中像素元素存入存储模块的另一个示意图。

具体实施方式

为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。

现结合附图和具体实施方式对本发明进一步说明。

实施例一:

本发明实施例一提供了一种基于运动估计的数据存储方法,包括:将图像划分为多个一维像素阵列,并按序将每个一维像素阵列中的各元素存放入不同的存储模块内,且图像中同一行或列的相邻的多个元素分别存储于不同的存储模块内。

该实施例中,所述图像为m×n(m水平像素和n垂直像素)的二维像素阵列,该方法主要分为三个过程:数据预处理过程、分布式存储过程和处理过程。

在数据预处理过程中,将图像分割成固定数量的p×1(p水平像素和1垂直像素)的一维像素阵列,如图2、3和4所示;

在分布式存储过程中,依照一定的顺序将每个一维像素阵列存入分布式存储模块内,如图5所示,一维像素阵列的存储是有顺序关系的,即前一个存入的一维像素阵列与当前要存入的一维像素阵列相邻,即呈“s”型顺序存入,如果前一个存入的一维像素阵列与m×n二维像素阵列的下水平边界对齐,则当前存入的一维像素阵列必须与前一个存入的一维像素阵列的同一列的上所有的一维像素阵列的右边缘对齐;

在处理过程中,将进一步计算一维像素阵列中每个像素元素的内存地址,并将像素元素存入对应的内存地址内。

具体过程如下:

s1:设定p个用于存储图像数据的存储模块,并依序对其进行编号;

s2:计算图像中每一行或列中包含元素的个数,判断每一行或列中包含元素的个数是否为p的整数倍,如果不是,将元素的行或列中包含元素的个数补足为p的整数倍后,进入s3,否则,直接进入s3;

s3:将图像划分为多个一维像素阵列;

s4:将所有一维像素阵列中的各元素均保存至p个存储模块内,具体过程为:将第n行或列的一维像素阵列中的第i个元素存入第s个存储模块内,其中:s=i%p,其中%表示求余数。

需要说明的是,所述补足为p的整数倍的含义为:将图像中不足p的整数倍的行或列中的像素元素固定设为“0”或“1”,即如果p=4,而图像只有11列时,将第12列全部填“0”或“1”。

该实施例中设定一维像素阵列中的所有像素元素均存储于不同的存储模块中,并且,不同行的一维像素阵列中的各像素元素存入存储模块的序号是不同的,如图6所示,将像素元素(0,0)、(0,1)和(0,2)都分别存入ram-1、ram-2和ram-3的地址0。在第二行的像素元素中,像素元素(1,0)不再像以前的那样存入ram-1,而是存入ram-2;同理,像素元素(1,1)存入ram-3;像素元素(1,3)存入ram-1。

如图7所示,当需要不同的一维像素阵列时,均可以从ram-1、ram-2和ram-3中并行读取出来。

如图8所示,3×3大小的窗口在每次向左或向右移动一个像素点距离时将从三个不同的存储模块中分别读取3个像素元素。以左上角的窗口为例,当该窗口向右移动一个像素元素的距离,像素(0,3)、(1、3)和(2、3)需要被读取。此时,如图4右图所示,像素(0,3)、(1、3)和(2、3)分别存放于ram-1、ram-2和ram-3当中,这就避免了从同一个存储模块中顺序读取多个像素点。通过观察图8中数据在存储模块的物理布局方式可见,逻辑布局上任意横向或纵向的三个连续的像素点在物理布局上都是存放与完全不同的内存上。因此,通过本实施例中的方法,可以消除基于光栅扫描策略的运动估计算法在移动窗口过程中从同一个内存中顺序读取多个像素点,从而加快读取效率。

需要说明的是该实施例中的应用场景为连续光栅扫描中,即运动估计窗口必须能够扫描:(a)从左到右水平扫描,(b)从右到左水平扫描,(c)从上到下垂直扫描,以及(d)从下到上垂直扫描,以完成“弓”字形的扫描,在传统的光栅扫描或其他的连续扫描方式中也可以适用。

为了满足连续光栅扫描的方式,该实施例中,优选设置所述一维像素阵列按照从上到下、从左到右的顺序存入存储模块内。

该实施例中实施上述方法的具体方式为使用一个移位器,在将像素元素存入存储模块之前,通过移位器周期性地移动一维像素数组中的像素元素。

具体过程如下:

假设一维像素阵列[p(x1,y1),p(x2,y2),...p(xn,yn)]应写入分布式存储模块[ram-1,ram-2,...,ram-n],其中x1=x2=...=xn,则一维像素阵列需要首先进行循环移位,移位的大小shift_amount的计算公式为:

shift_amount=(x1modulo分布式内存数量p)

然后使用循环移位对一维像素整列进行移位:

[p(x1,y1),p(x2,y2),...p(xn,yn)]<<shift_amount|[p(x1,y1),p(x2,y2),...p(xn,yn)]>>(p-shift_amount)

或:

[p(x1,y1),p(x2,y2),...p(xn,yn)]>>shift_amount|[p(x1,y1),p(x2,y2),...p(xn,yn)]<<(p-shift_amount)

实施例二:

本发明实施例二还提供一种基于运动估计的数据存储终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。

所述存储器至少包括p个存储模块,用于存储图像数据,每个存储模块均至少包含一个写数据端口、一个写地址端口、一个读数据端口和一个读地址端口,如图5所示,优选的,所述写数据端口的宽度等于图像数据中单个像素数据的位宽度,所述读数据端口的宽度等于图像数据中单个像素数据的位宽度,通过该设置可以最大限度地利用存储模块的读写带宽,且避免将单个数据通过两个或多个时钟周期读出而出现的数据错误。

进一步地,作为一个可执行方案,所述基于运动估计的数据存储终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述基于运动估计的数据存储终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述基于运动估计的数据存储终端设备的组成结构仅仅是基于运动估计的数据存储终端设备的示例,并不构成对基于运动估计的数据存储终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述基于运动估计的数据存储终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。

进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述基于运动估计的数据存储终端设备的控制中心,利用各种接口和线路连接整个基于运动估计的数据存储终端设备的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述基于运动估计的数据存储终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。

所述基于运动估计的数据存储终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)以及软件分发介质等。

尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。

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