掌桥专利:专业的专利平台
掌桥专利
首页

数据处理的方法、装置及计算机存储介质

文献发布时间:2023-06-19 11:55:48


数据处理的方法、装置及计算机存储介质

技术领域

本发明实施例涉及数据处理领域,并且更具体地,涉及一种数据处理的方法、装置及计算机存储介质。

背景技术

在信号处理、图像处理等各个领域都会涉及数据处理,例如在对图像进行分割、识别等过程中,基于图像的像素值进行数据处理。

吉文斯旋转(Givens Rotation)算法是对数据所构成的矩阵进行数据处理的常用的算法之一,其主要在数字信号处理器(DPS)上执行。然而目前的吉文斯选择算法在运行时,需要大量的运行时间,导致性能较差。

发明内容

本发明实施例提供了一种数据处理的方法及装置,降低了模式选择的复杂度,提高了处理的效率。

第一方面,提供了一种数据处理的方法,所述方法包括:

接收由传感器获取的测量数据;

根据所述测量数据构建数据矩阵,所述数据矩阵为M行N列矩阵,M和N均为正整数;

确定关于所述数据矩阵的吉文斯变换矩阵;

利用所述吉文斯变换矩阵,对所述数据矩阵进行吉文斯变换,以使得位于所述数据矩阵的同一列上的至少两个数值同时消零;

根据所述吉文斯变换矩阵对所述测量数据进行数据处理。

第二方面,提供了一种数据处理的装置,包括接收模块、构建模块和处理模块。其中,

接收模块,用于接收由传感器获取的测量数据;

构建模块,用于根据测量数据构建数据矩阵,数据矩阵为M行N列矩阵,M和N均为正整数;

处理模块,用于确定关于数据矩阵的吉文斯变换矩阵;

处理模块,还用于利用吉文斯变换矩阵,对数据矩阵进行吉文斯变换,以使得位于数据矩阵的同一列上的至少两个数值同时消零;

处理模块,还用于根据吉文斯变换矩阵对测量数据进行数据处理。

第三方面,提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述方法的步骤。

由此可见,本发明实施例在对由传感器采集的测量数据进行数据处理时,可以通过吉文斯旋转将数据矩阵中的部分元素进行消零处理,其中,至少存在一个迭代将至少两个元素同时消零,相对于逐个元素进行消零处理的已有技术,本发明实施例的数据处理的方法能够极大地减小处理量,提升处理速度。并且在该过程中,减小了对向量存储器的空间占用,保证了传感器测量数据的存储。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是吉文斯算法“消0”的顺序的一个示意图;

图2是使用吉文斯旋转矩阵对输入矩阵中的一个元素进行消0的示意图;

图3是本发明实施例的数字信号处理器的一个示意性框图;

图4(a)和(b)分别是矩阵的行数不大于列数和行数大于列数的示意图;

图5是本发明实施例的数据处理的一个示意性流程图;

图6是顺序寻址的一个示意图;

图7是间隔寻址的一个示意图;

图8是9×7的数据矩阵在阵列0中的存储位置;

图9是对图8中的第1列进行第1次迭代消零时步骤2后阵列1中的存储数据;

图10是对图8中的第1列进行第1次迭代消零时步骤3后阵列2中的存储数据;

图11是对图8中的第1列进行第1次迭代消零时步骤4后阵列3中的存储数据;

图12是对图8中的第1列进行第1次迭代消零时步骤5后阵列4中的存储数据;

图13是对图8中的第1列进行第1次迭代消零时步骤6后阵列5中的存储数据;

图14是本发明实施例的方法占用的时钟周期与传统技术占用的时钟周期的比值的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

计算机、或计算机的处理器在对图像或信号(如音视频信号)进行处理时,针对的处理对象是数字信息。数字信息可以是图像的像素值,音视频信号的频率等等,这些都可以表示为数据的形式。因此,对图像或信号的处理均涉及数据处理的过程。

在数据处理的过程中,可以将大量的数据表示为矩阵的形式,即构建数据矩阵。对数据矩阵执行的算法可以包括吉文斯旋转算法。吉文斯旋转算法可以将数据矩阵进行简化,将其中的部分元素转化为零,简称“消0”。在对数据矩阵中的元素进行“消0”时,一般采用从下到上、从左到右的方式进行,如图1所示,这样不会再次引入非零值。

例如,在图2中,中间的矩阵表示输入矩阵,可以表示为X。左侧的矩阵表示吉文斯旋转矩阵,右侧的矩阵表示输出矩阵,可以表示为Y。在对图2中所示的输入矩阵中的x

通常,在数字信号处理器(Digital Signal Processor,DSP)上实现吉文斯旋转算法。其中,标量参数c和s通常在数字信号处理器(Digital Signal Processor,DSP)中轻量级的精简指令集计算机(Reduced Instruction Set Computing,RISC)中央处理单元(Central Processing Unit,CPU)上进行计算。图2中的输出矩阵中i和j行通常会在向量处理单元(Vector Process Unit,VPU)上进行计算。因为输入矩阵和输出矩阵通常保存在向量存储器(Vector Memory,VMEM)相同的内存空间,所以输出矩阵中的其他行无需更新,只需保持和输入矩阵一致即可。

如图3示出的是本发明实施例DSP的一个示意性框图。其中,数字信号处理器包括精简指令集计算机中央处理单元、向量处理单元以及向量存储器。另外,图3示出的数字信号处理器还包括加速器和外围设备,并且数字信号处理器中的各个组件可以通过总线进行连接。应当注意的是,图3中示出的向量存储器包括6个阵列(Array),但是本发明对此不限定,具体地可以为更多或更少的阵列,例如2个或者10个。示例性地,每个阵列中可以包含16个单口随机存取存储器(Random Access Memory,RAM),并且RAM的数据位宽可以为32比特(bit)。

对于MxN的矩阵,如图4(a)和(b)所示的,主对角线以下的元素个数为:

在精简指令集计算机支持乘法、加法和

假设向量处理单元的并行度为P,那么矢量计算总的时钟周期数为

为了至少部分地解决上述问题,本发明提出了一种数据处理的方法,该方法的一个示意性流程图如图5所示,图5所示的方法可以包括:

S110,接收由传感器获取的测量数据;

S120,根据测量数据构建数据矩阵,数据矩阵为M行N列矩阵,M和N均为正整数;

S130,确定关于数据矩阵的吉文斯变换矩阵;

S140,利用吉文斯变换矩阵,对数据矩阵进行吉文斯变换,以使得位于数据矩阵的同一列上的至少两个数值同时消零;

S150,根据吉文斯变换矩阵对测量数据进行数据处理。

示例性地,本发明实施例中的传感器可以是相机,相应地,测量数据可以是相机拍摄得到的图像的像素,并且相应地数据处理可以为关于像素的数据处理。可理解,该相机可以是数码相机,或者该相机可以搭载于其他设备上,包括但不限于:云台、移动电话、手持计算机、可穿戴设备等等。

示例性地,S150可以包括:将测量数据分解为多个子数据单元;对多个子数据单元进行数据处理。这样,能够基于多个子数据单元进行数据处理,减小了单次处理时的数据量,能够提升处理速度。

示例性地,在图5所示的数据处理的过程中,可以包括:存储吉文斯变换矩阵。其中,吉文斯变换矩阵所占用的存储空间小于数据矩阵所需的存储空间。这样,吉文斯变换矩阵(也称为吉文斯旋转矩阵)占用更小的存储空间,可以确保数据矩阵的存储空间不会被过多地占用。

本发明实施例中,可以使用吉文斯变换矩阵对数据矩阵进行“消0”处理。示例性地,通过吉文斯变换,将数据矩阵按照从左到右的顺序进行逐列地消零。

其中,如果数据矩阵的列数为N,那么从左到右的顺序可以理解为:先针对第1列进行消零,再针对第2列进行消零,……,最后针对第N列进行消零。

其中,针对数据矩阵的第i列,按照从下往上的顺序,通过P次迭代处理完成消零,其中i的取值范围为1至N。示例性地,P不大于第i列中所有待消零元素的数量。相应地,可以理解,针对数据矩阵,所有列的所有迭代次数之和小于该数据矩阵中的所有待消零元素的数量。

可选地,假设第i列需要消0的元素的数量为im个,那么针对第i列进行的迭代次数P小于或等于im。i的取值可以是从1至N,但是至少存在一个i1满足:针对第i1列的迭代次数P小于第i1列需要消0的元素的数量im1。也就是说,针对第i1列进行消零时,P次迭代中至少存在一次迭代满足:同时对两个或两个以上的元素消零。

作为一种实现方式,P次迭代处理中的第p次迭代处理消零的个数是第p-1次迭代处理消零的个数的一半,其中p的取值范围为1至P。举例来说,针对数据矩阵的第i列:第1次迭代将4个元素消零,第2次迭代将2个元素消零。

示例性地,针对数据矩阵的第i列进行的P次迭代处理中的当前迭代处理包括:确定第一集合和第二集合,其中第一集合包括第i列中的当前迭代处理同时消零的至少两个数值,第二集合包括第i列中的当前迭代处理不进行消零的数值;从第一集合选择第一数值,以及从第二集合中选择第二数值,利用第一数值和第二数值得到关于对第一数值进行消零操作的吉文斯参数,以对第一数值进行消零处理。其中,在对第i列上的至少两个数值进行同时消零的一次计算中,第一数值和第二数值仅被用于至少两个数值中的一个数值的消零操作。

具体地,基于第i列中需要消零而还未被消零的所有待消零元素,构建第一集合和第二集合,第一集合中包括当前迭代处理需要消零的元素,第二集合中包括当前迭代处理中不需要消零的元素。可见,第一集合与第二集合不存在交集,即第一集合中的元素在矩阵中的位置不同于第二集合中任一元素在矩阵中的位置。作为一例,第一集合和第二集合的全集构成所有待消零元素,或者,作为另一例,第一集合和第二集合的全集构成所有待消零元素的子集。其中,第二集合中的元素的数量等于或者大于第一集合中的元素的数量。

举例来说,假设所有待消零元素的数量为9个,那么第一集合中可以包括当前迭代处理需要同时消零的4个元素,第二集合中可以包括剩余5个元素中的4个或全部。

为了将第一集合中的第一数值进行消零,可以从第二集合中选择第二数值,并根据第一数值和第二数值来得到对第一数值进行消零操作所需的吉文斯参数。应当注意的是,不同的第一数值所对应的第二数值是不同的,这里的不同是指在矩阵中的行数不同。

换句话说,可以利用第一集合中的所有元素与第二集合中的相应数量的元素构建数值对。例如,假设第一集合中有4个元素,那么可以构建4个数值对。随后,为了将第一集合中的第一数值进行消零,可以基于第一数值所在的数值对来确定对第一数值进行消零操作所需的吉文斯参数。其中,不管是第一集合中的元素还是第二集合中的元素,任一元素最多仅存在于一个数值对中。

示例性地,假设第一数值表示为x1,第二数值表示为x2,那么对第一数值进行消零操作的吉文斯参数可以满足:

举例来说,针对第i列进行消零处理时,第1次迭代处理可以将该第i列的对角线以下的所有元素的一半同时消零。具体地,P次迭代处理中的第1次迭代处理用于将第i列的最后

作为一例,在对最后

其中,x

这样,本发明实施例中,在对数据矩阵进行处理时,尤其是通过吉文斯变换进行消零处理时,在同一个迭代处理中同时对多个元素进行消零处理,这样能够减少消零处理的迭代次数,减小计算量,提升处理效率。

另外,本发明实施例中,吉文斯算法可以在DSP上实现。具体地,结合图3,在图5所示的方法中,可以由精简指令集计算机配置向量处理单元,并向向量处理单元发送指令;向量处理单元根据配置从向量存储器读取数值,根据指令对所读取的数值进行计算并将结果写入向量存储器。

其中,配置向量处理单元包括:配置向量处理单元的如下信息:指令操作的矢量长度、指令重复执行的次数、指令执行的结果是否取反。

其中,该配置还可以包括:向量处理单元的指令所处理的数据所在的阵列,读取/写入阵列的寻址方式、起始地址等。

举例来说,可以将指令操作的矢量长度表示为vector_length。可以将指令重复执行的次数表示为iteration。可以将指令执行的结果是否取反利用取反标志invert_sign。当取反标志invert_sign=0时,表示不进行取反操作,当取反标志invert_sign=0时,表示进行取反操作。

示例性地,向量存储器可以包括6个不同的存储阵列。并且6个不同的存储阵列中的第一阵列用于存储数据矩阵。6个不同的存储阵列中的第二阵列至第六阵列用于存储进行吉文斯变换的中间参数。

可理解,第一阵列可以用于存储原始数据矩阵,即输入矩阵;还用于存储进行吉文斯旋转变换后的最终数据矩阵,即输出矩阵。并且,该第一阵列还用于存储从输入矩阵被变换为输出矩阵的过程中,该数据矩阵的中间形式。例如,经过一次或多次迭代的消零处理后,输入矩阵中的部分元素被进行消零处理,但是还没有被变换为输出矩阵。

结合图3,向量存储器所包括的6个不同的阵列依次为:阵列0、阵列1、…、阵列5。并且,如图3所示,每个阵列中包含16个单口RAM,RAM的数据位宽为32bit。并且同时支持顺序(Linear)和间隔(Stride)两种寻址模式。

其中,顺序寻址表示依次读或写数据,如图6所示。其中,RAM0至RAM15表示阵列中包含的16个单口RAM。其中,0x0000至0x017c表示存储位置。

其中,间隔寻址表示非连续地进行读或写,如图7所示。其中,RAM0至RAM15表示阵列中包含的16个单口RAM。其中,0x0000至0x017c表示存储位置。并且,在图7的示例中,假设寻址的间隔(stride_size)为5*4Byte(字节)。那么假设为读操作,第一个读取位置为0x0000,那么第二个读取位置按照5*4Byte的间隔到0x0014,具体地如图7中具有灰色底色的存储位置。

可以理解的是,关于顺序寻址或者间隔寻址可以参见现有技术中的相关描述,这里不再赘述。

可选地,指令可以包括用于执行以下至少一个运算的指令:平方运算、求和运算、求差运算、倒数运算、乘积运算。

举例来说,指令可以为如下任一个:

(1)vsqr_ff,用于计算1个浮点向量平方,输出浮点向量;

(2)vadd_fff,用于计算2个浮点向量之和,输出浮点向量;

(3)vsqrti_ff,用于计算1个浮点向量

(4)vmul_fff,用于计算2个浮点向量之积,输出浮点向量;

(5)vmuls_fff,用于计算浮点向量和浮点标量之积,输出浮点向量;

(6)vsub_fff,用于计算2个浮点向量之差,输出浮点向量。

这些指令中,每一个指令针对的输入是一个值或者两个值。如vsqr_ff和vsqrti_ff针对一个浮点向量。如vadd_fff、vmul_fff和vsub_fff针对2个浮点向量。如vmuls_fff针对1个浮点向量和1个浮点标量。并且这些指令的输出都是浮点向量。具体地,上述各个指令的名称中都包含下划线,下划线后面的ff表示一个输入和一个输出,fff表示两个输入和一个输出。

可见,指令最多针对两个输入,因此相应地,图3中的向量处理单元可以具有3个主端口(Master Port),从而能够最多同时与向量存储器中的3个阵列相连接。这3个阵列中,1个或2个阵列作为输入,即向量处理单元作为主体(Master)从向量存储器读取数据;1个阵列作为输出,即向量处理单元作为主体(Master)往向量存储器写入数据。

为了更清楚地理解图5所示的数据处理的方法在图3所示的数据信号处理器上的执行过程,以下结合具体的实例进行较为详细的阐述。

假设S120中所构建的数据矩阵为9×7的数据矩阵,即M=9,N=7。假设该数据矩阵中的元素为x

以下将结合图9至图13描述针对该数据矩阵的第1列的第1次迭代处理的过程,该过程可以对x

向量处理单元接收到vsqr_ff指令之后,从阵列0中的0x001c位置读取x

在步骤2之后,阵列1中所存储的数据可以参见图9。

向量处理单元接收到vsqr_ff指令之后,从阵列0中的0x008c位置读取x

在步骤3之后,阵列2中所存储的数据可以参见图10。应当注意的是,为了简化图示,在图10中仅示出了非空的前几个存储空间,其余位置为空,未示出。

向量处理单元接收到vadd_fff指令之后,从阵列1中的0x0000位置读取x

在步骤4之后,阵列3中所存储的数据可以参见图11。应当注意的是,为了简化图示,在图11中仅示出了非空的前几个存储空间,其余位置为空,未示出。

向量处理单元接收到vsqrti_ff指令之后,从阵列3中的0x0000位置读取x

在步骤5之后,阵列4中所存储的数据可以参见图12。应当注意,应当注意的是,为了简化图示,在图12中仅示出了非空的前几个存储空间,其余位置为空,未示出。

(1)精简指令集计算机对向量处理单元进行配置。具体地配置阵列0的寻址模式为间隔寻址(Stride),起始地址为0x001c,寻址的间隔(stride_size)为7*4Byte。配置阵列4的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置阵列5的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置向量处理单元对即将接收到的指令进行操作的矢量长度vector_length=4,该指令重复执行的次数iteration=1,以及该指令执行的结果是否取反的取反标志invert_sign=0。在配置之后,精简指令集计算机向向量处理单元发送vmul_fff指令。

向量处理单元接收到vmul_fff指令之后,从阵列0中的0x001c位置读取x

(2)精简指令集计算机对向量处理单元进行配置。具体地配置阵列0的寻址模式为间隔寻址(Stride),起始地址为0x008c,寻址的间隔(stride_size)为7*4Byte。配置阵列4的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置阵列5的寻址模式为顺序寻址(Linear),起始地址为0x0010。配置向量处理单元对即将接收到的指令进行操作的矢量长度vector_length=4,该指令重复执行的次数iteration=1,以及该指令执行的结果是否取反的取反标志invert_sign=1。即,需要进行取反操作。在配置之后,精简指令集计算机向向量处理单元发送vmul_fff指令。

向量处理单元接收到vmul_fff指令之后,从阵列0中的0x008c位置读取x

在步骤6之后,阵列5中所存储的数据可以参见图13。应当注意,应当注意的是,为了简化图示,在图13中仅示出了非空的前几个存储空间,其余位置为空,未示出。

(1)精简指令集计算机对向量处理单元进行配置。具体地配置阵列0的寻址模式为顺序寻址(Linear),起始地址为0x001c。配置阵列5的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置阵列1的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置向量处理单元对即将接收到的指令进行操作的矢量长度vector_length=7,该指令重复执行的次数iteration=4,以及该指令执行的结果是否取反invert_sign=0。在配置之后,精简指令集计算机向向量处理单元发送vmuls_fff指令。

向量处理单元接收到vmuls_fff指令之后,从阵列0的0x001c位置开始读取向量,从阵列5的0x0000位置读取标量,对读取到的值执行vmuls_fff指令,结果不取反并存储在阵列1中。并且按照iteration=4将指令重复执行4次。通过该过程能够计算得到c

(2)精简指令集计算机对向量处理单元进行配置。具体地配置阵列0的寻址模式为顺序寻址(Linear),起始地址为0x001c。配置阵列5的寻址模式为顺序寻址(Linear),起始地址为0x0010。配置阵列3的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置向量处理单元对即将接收到的指令进行操作的矢量长度vector_length=7,该指令重复执行的次数iteration=4,以及该指令执行的结果是否取反的取反操作invert_sign=0。在配置之后,精简指令集计算机向向量处理单元发送vmuls_fff指令。

向量处理单元接收到vmuls_fff指令之后,从阵列0的0x001c位置开始读取向量,从阵列5的0x0010位置读取标量,对读取到的值执行vmuls_fff指令,结果不取反并存储在阵列3中。并且按照iteration=4将指令重复执行4次。通过该过程能够计算得到s

(3)精简指令集计算机对向量处理单元进行配置。具体地配置阵列0的寻址模式为顺序寻址(Linear),起始地址为0x008c。配置阵列5的寻址模式为顺序寻址(Linear),起始地址为0x0010。配置阵列2的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置向量处理单元对即将接收到的指令进行操作的矢量长度vector_length=7,该指令重复执行的次数iteration=4,以及该指令执行的结果是否取反的取反操作invert_sign=1。在配置之后,精简指令集计算机向向量处理单元发送vmuls_fff指令。

向量处理单元接收到vmuls_fff指令之后,从阵列0的0x008c位置开始读取向量,从阵列5的0x0010位置读取标量,对读取到的值执行vmuls_fff指令,结果取反并存储在阵列2中。并且按照iteration=4将指令重复执行4次。通过该过程能够计算得到-s

(4)精简指令集计算机对向量处理单元进行配置。具体地配置阵列0的寻址模式为顺序寻址(Linear),起始地址为0x008c。配置阵列5的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置阵列4的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置向量处理单元对即将接收到的指令进行操作的矢量长度vector_length=7,该指令重复执行的次数iteration=4,以及该指令执行的结果是否取反的取反操作invert_sign=0。在配置之后,精简指令集计算机向向量处理单元发送vmuls_fff指令。

向量处理单元接收到vmuls_fff指令之后,从阵列0的0x008c位置开始读取向量,从阵列5的0x0000位置读取标量,对读取到的值执行vmuls_fff指令,结果不取反并存储在阵列4中。并且按照iteration=4将指令重复执行4次。通过该过程能够计算得到c

本发明实施例中,步骤7可以被理解为是矢量迭代化的过程。在该步骤中矢量迭代的次数为4,但是该精简指令集计算机只需配置启动1次向量处理单元,而不需要配置启动4次向量处理单元。

在步骤7中,阵列1至阵列4中所存储的数据都已经发生改变,出于简化的目的,不再在附图中逐一示出。

(1)精简指令集计算机对向量处理单元进行配置。具体地配置阵列1的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置阵列2的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置阵列0的寻址模式为顺序寻址(Linear),起始地址为0x0010。配置向量处理单元对即将接收到的指令进行操作的矢量长度vector_length=7,该指令重复执行的次数iteration=4,以及该指令执行的结果是否取反的的取反操作invert_sign=0。在配置之后,精简指令集计算机向向量处理单元发送vadd_fff指令。

向量处理单元接收到vadd_fff指令之后,从阵列1的0x0000位置开始数据,从阵列2的0x0000位置读取数据,对读取到的值执行vadd_fff指令,结果不取反并存储在阵列0中。通过该步骤,实现了[y

并且按照iteration=4将指令重复执行4次。从而能够实现将阵列0中的[x

[y

[x

[y

[x

[y

(2)精简指令集计算机对向量处理单元进行配置。具体地配置阵列3的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置阵列4的寻址模式为顺序寻址(Linear),起始地址为0x0000。配置阵列0的寻址模式为顺序寻址(Linear),起始地址为0x008c。配置向量处理单元对即将接收到的指令进行操作的矢量长度vector_length=7,该指令重复执行的次数iteration=4,以及该指令执行的结果是否取反的取反标志invert_sign=0。在配置之后,精简指令集计算机向向量处理单元发送vadd_fff指令。

向量处理单元接收到vadd_fff指令之后,从阵列3的0x0000位置开始数据,从阵列4的0x0000位置读取数据,对读取到的值执行vadd_fff指令,结果不取反并存储在阵列0中。通过该步骤,实现了[y

并且按照iteration=4将指令重复执行4次。从而能够实现将阵列0中的[x

[y

[x

[y

[x

[y

这样,通过上述的步骤1至步骤8,完成了针对第1列的第1次迭代,将x

在完成针对第1列的第1次迭代之后,第1列中待消零的元素只剩下4个,即第1列第2行至第5行的元素。在针对第1列的第2次迭代中,可以同时将2个元素消零,例如可以同时将第4行和第5行的元素消零,该过程类似于上述第1次迭代中的上述步骤1至步骤8,这里不再赘述。

以上结合图8至图13描述了对9×7的数据矩阵进行消零的过程在数字信号处理器上的实现方式。但是可理解的是,可以针对任何大小M×N的数据矩阵进行消零的过程。可以按照从左到右,从下往上的顺序进行消零。从左往右是指先针对第1列进行消零处理,再针对第2列进行消零处理,。。。。。。最后针对第N列进行消零处理。而在针对某一列进行消零处理时,可以先将多个待消零元素的行数较大的那一半消零,再将剩余的待消零元素中行数较大的一半消零,直至该列的所有待消零元素均被进行消零处理。可理解的是,不同的列中待消零的元素的数量是不同的,至少针对第1列的消零处理的迭代的次数小于第1列中待消零的元素的数量。

作为一种实现方式,通过如结合图8至图13所示的消零处理的过程,可以较优地更快地完成消零处理。针对如S120中的M×N的数据矩阵,精简指令集计算机上分发指令占用的时钟周期(clock cycle)的个数为:

而在向量处理单元上占用的时钟周期(clock cycle)的个数为:

如图14示出的是针对不同大小的数据矩阵,本发明实施例的方法占用的时钟周期与传统技术占用的时钟周期的比值。该图的纵坐标表示该比值,横坐标表示矩阵的列数N,且图中示出了针对5个不同的M(即M=100,200,300,400,500)的比值。从图14中可以看出在矩阵列数N较小时,本发明实施例的方法相比于传统方法有显著优势,在矩阵列数N较大时,本发明实施例的方法仍优于传统方法。考虑到在因为精简指令集计算机上的时钟周期(clock cycle)数是低估的,因此在实际应用中,采用本发明实施例的方法对于吉文斯旋转算法性能的提升会远远优于上图。

可见,相对于逐个元素进行消零处理的已有技术,本发明实施例的数据处理的方法能够极大地减小处理量,提升处理速度。并且在该过程中,减小了对向量存储器的空间占用,保证了传感器测量数据的存储。

另外,本发明实施例还提供了一种数据处理的装置,该装置可以包括:接收模块、构建模块和处理模块。其中,

接收模块,用于接收由传感器获取的测量数据;

构建模块,用于根据测量数据构建数据矩阵,数据矩阵为M行N列矩阵,M和N均为正整数;

处理模块,用于确定关于数据矩阵的吉文斯变换矩阵;

处理模块,还用于利用吉文斯变换矩阵,对数据矩阵进行吉文斯变换,以使得位于数据矩阵的同一列上的至少两个数值同时消零;

处理模块,还用于根据吉文斯变换矩阵对测量数据进行数据处理。

应当注意的是,接收模块、构建模块和处理模块可以是各自独立的模块,或者可以被集成在一个整体中。举例来说,处理模块可以为如图2所示的数字信号处理器。举例来说,接收模块、构建模块和处理模块共同构建为如图2所示的数字信号处理器。

在一个实施例中,传感器为相机;测量数据为相机拍摄的图像的像素;数据处理为关于像素的数据处理。其中,传感器可以为该装置的外部部件,或者,该装置可以包括传感器。

在一个实施例中,处理模块可以被配置用于:将测量数据分解为多个子数据单元;对多个子数据单元进行数据处理。

在一个实施例中,还包括存储模块可以用于:存储吉文斯变换矩阵,其中,吉文斯变换矩阵所占用的存储空间小于数据矩阵所需的存储空间。作为一例,该存储模块可以如图3中所示的向量存储器。

在一个实施例中,处理模块可以用于:通过吉文斯变换,将数据矩阵按照从左到右的顺序进行逐列地消零。

在一个实施例中,针对数据矩阵的第i列,按照从下往上的顺序,通过P次迭代处理完成消零,其中i的取值范围为1至N。

在一个实施例中,P次迭代处理中的第p次迭代处理消零的个数是第p-1次迭代处理消零的个数的一半,其中p的取值范围为1至P。

在一个实施例中,处理模块用于:针对数据矩阵的第i列进行的P次迭代处理中的当前迭代处理包括:确定第一集合和第二集合,其中所述第一集合包括所述第i列中的所述当前迭代处理同时消零的至少两个数值,所述第二集合包括所述第i列中的所述当前迭代处理不进行消零的数值;从所述第一集合选择第一数值,以及从所述第二集合中选择第二数值,利用所述第一数值和所述第二数值得到关于对所述第一数值进行消零操作的吉文斯参数,以对所述第一数值进行消零处理;其中,在对所述第i列上的所述至少两个数值进行同时消零的一次计算中,所述第一数值和所述第二数值仅被用于所述至少两个数值中的一个数值的消零操作。

在一个实施例中,假设第一数值为x1,第二数值为x2,那么对第一数值进行消零操作的吉文斯参数满足:

在一个实施例中,针对数据矩阵的第i列,P次迭代处理中的第1次迭代处理用于将第i列的最后

在一个实施例中,第二数值为第i列的第j行的数值,第一数值为第i列的第

在一个实施例中,处理模块可以包括精简指令集计算机、向量处理单元和向量存储器,其中:精简指令集计算机配置向量处理单元,并向向量处理单元发送指令;向量处理单元根据配置从向量存储器读取数值,根据指令对所读取的数值进行计算,并将结果写入向量存储器。

在一个实施例中,精简指令集计算机配置向量处理单元包括配置向量处理单元的如下信息:指令操作的矢量长度、指令重复执行的次数、指令执行的结果是否取反。

在一个实施例中,向量存储器包括6个不同的存储阵列,6个不同的存储阵列中的第一阵列用于存储数据矩阵,还用于存储吉文斯变换矩阵,6个不同的存储阵列中的第二阵列至第六阵列用于存储进行吉文斯变换的中间参数。

在一个实施例中,指令包括用于执行以下至少一个运算的指令:平方运算、求和运算、求差运算、倒数运算、乘积运算。

在一个实施例中,该装置可以为云台、移动电话、手持计算机、可穿戴设备等,相机可以装载在该装置上,以可拆卸的方式或者固接的方式等等。

可理解的是,该装置可以实现前述的数据处理的方法,具体地可以参见前面结合图3的数字信号处理器所描述的数据处理的方法。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

另外,本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序。当所述计算机程序由处理器执行时,可以实现前述图5所示的数据处理的方法的步骤。例如,该计算机存储介质为计算机可读存储介质。

在一个实施例中,所述计算机程序指令在被计算机或处理器运行时使计算机或处理器执行以下步骤:接收由传感器获取的测量数据;根据所述测量数据构建数据矩阵,所述数据矩阵为M行N列矩阵,M和N均为正整数;确定关于所述数据矩阵的吉文斯变换矩阵;利用所述吉文斯变换矩阵,对所述数据矩阵进行吉文斯变换,以使得位于所述数据矩阵的同一列上的至少两个数值同时消零;根据所述吉文斯变换矩阵对所述测量数据进行数据处理。

计算机存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。

另外,本发明实施例还提供了一种计算机程序产品,其包含指令,当该指令被计算机所执行时,使得计算机执行上述图5等所示的数据处理的方法的步骤。

在一个实施例中,当该指令被计算机所执行时,使得计算机执行:接收由传感器获取的测量数据;根据所述测量数据构建数据矩阵,所述数据矩阵为M行N列矩阵,M和N均为正整数;确定关于所述数据矩阵的吉文斯变换矩阵;利用所述吉文斯变换矩阵,对所述数据矩阵进行吉文斯变换,以使得位于所述数据矩阵的同一列上的至少两个数值同时消零;根据所述吉文斯变换矩阵对所述测量数据进行数据处理。

由此可见,本发明实施例在对由传感器采集的测量数据进行数据处理时,可以通过吉文斯旋转将数据矩阵中的部分元素进行消零处理,其中,至少存在一个迭代将至少两个元素同时消零,相对于逐个元素进行消零处理的已有技术,本发明实施例的数据处理的方法能够极大地减小处理量,提升处理速度。并且在该过程中,减小了对向量存储器的空间占用,保证了传感器测量数据的存储。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理器中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

相关技术
  • PET 数据处理方法、PET 数据处理装置、计算机可读的存储介质、以及数据处理方法
  • 数据处理方法、数据处理装置、计算机设备和存储介质
技术分类

06120113106547