一种图像数据的存储方法转让专利

申请号 : CN201010137087.9

文献号 : CN101783859B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 巨新刚刘红侠杨靓

申请人 : 中国航天科技集团公司第九研究院第七七一研究所

摘要 :

本发明公开了一种图像数据的存储方法,其特征在于,将存储阵列块划为八个子块,存储控制块将图像数据写入存储阵列块时,对紧矩阵采用逐点存储的方法,对稀疏矩阵采用CSR格式的存储方法,将参考图数据和模板图数据按照不同的四种存储模式MemMode:单元素紧矩阵00、双元素紧矩阵01、单元素稀疏矩阵10和双元素稀疏矩阵11存储到八个子块中。存储控制块对存储阵列块参考图和模板图采用相同的控制,实现了参考图和模板图图像数据的并行访问,同时实现了针对不同图像数据特点的图像数据的智能访问。

权利要求 :

1.一种图像数据的存储方法,其特征在于,将存储阵列块划为八个子块,分别为零子块Block0、第一子块Block1、第二子块Block2、第三子块Block3、第四子块Block4、第五子块Block5、第六子块Block6、第七子块Block7;存储控制块将图像数据写入存储阵列块时,对紧矩阵采用逐点存储的方法,对稀疏矩阵采用CSR格式的存储方法,将参考图数据和模板图数据按照不同的四种存储模式MemMode:单元素紧矩阵00、双元素紧矩阵01、单元素稀疏矩阵10和双元素稀疏矩阵11存储到八个子块中,其中单元素为数据的实部,双元素为数据的实部+虚部,数据分配方式如下:当存储模式MemMode=00时,Block0~Block3存储参考图数据,Block4和Block5存储模板图数据,Block6存储参考图每行非零元素个数,Block7存储模板图每行非零元素个数;

当存储模式MemMode=01时,Block0和Block2存储参考图数据实部,Block1和Block3存储参考图数据虚部,Block4存储模板图数据实部,Block5存储模板图数据虚部,Block6存储参考图每行非零元素个数,Block7存储模板图每行非零元素个数;

当存储模式MemMode=10时,Block0和Block1存储参考图非零元素,Block2和Block3存储参考图非零元素列号,Block4存储模板图非零元素,Block5存储参考图每行非零元素个数,Block6存储模板图非零元素列号,Block7存储模板图每行非零元素个数;

当存储模式MemMode=11时,Block0存储参考图非零元素实部,Block1存储参考图非零元素虚部,Block2存储参考图非零元素列号,Block3存储参考图每行非零元素个数,Block4存储模板图非零元素实部,Block5存储模板图非零元素虚部,Block6存储模板图非零元素列号,Block7存储模板图每行非零元素个数;

图像数据存储的控制步骤为:

(1)当开始存储脉冲StoreStart有效时,由数据初始地址AddrQStart产生存储阵列数据地址MemQAddr和数据列号地址MemEcolAddr,由每行非零元素个数初始地址AddrEStart产生每行非零元素个数地址MemElsAddr,同时产生数据列号初始值;

(2)当图像数据写入时,如果数据为零,只对数据列号进行累加;如果数据为非零元素,将产生存储阵列数据写信号MemQWe,该数据及列号按照以上数据分配方式写入存储阵列相应存储子块;写入完成后数据地址MemQAddr、数据列号地址MemEcolAddr、每行非零元素个数MemElsDin和数据列号加1;当一行元素写入结束后,产生每行非零元素个数写信号MemElsWe,把当前行非零元素个数写入存储阵列块相应的存储子块;

(3)下一行数据的写入重复步骤(2),直至存入全部数据;

(4)图像数据读出时,存储控制块生成对存储阵列的读信号和地址,由于存储阵列为流水读,当开始加载脉冲LoadStart有效时,由数据初始地址AddrQStart产生存储阵列数据地址MemQAddr和数据列号地址MemEcolAddr,由每行非零元素个数初始地址AddrEStart产生存储阵列每行非零元素个数地址MemElsAddr,同时产生存储阵列数据读信号MemQRd、数据列号读信号MemEcolRd和每行非零元素个数读信号MemElsRd,根据所述MemQAddr、MemEcolAddr和MemElsAddr地址信号,将存入的图像数据预先读出到存储控制块的输出缓存,当图像数据读信号ImgQRd、数据列号读信号EcolRd、每行非零元素个数读信号ElsRd到来后再从存储控制块的输出缓存中读出数据、数据列号和每行非零元素个数。

2.如权利要求1所述的图像数据的存储方法,其特征在于,所述八个子块中,零子块Block0、第一子块Block1、第二子块Block2存储容量相同,且比第三子块Block3的存储容量大1倍;第四子块Block4到第七子块Block7存储容量的大小均为第三子块Block3存储容量的1/4。

3.如权利要求1所述的图像数据的存储方法,其特征在于,存储控制块将图像数据写入存储阵列块时,对于双元素紧矩阵,数据实部MemQ0Din和数据虚部MemQ1Din并行写入,对于单元素或双元素稀疏矩阵,数据实部MemQ0Din、数据虚部MemQ1Din及其列号MemEcolDin并行写入;数据从存储阵列块读出时,对于双元素紧矩阵,数据实部MemQ0Din和数据虚部MemQ1Din并行读出,每行非零元素个数MemElsDin单独读出,对于单元素或双元素稀疏矩阵,数据实部MemQ0Din和数据虚部MemQ1Din并行读出,数据列号MemEcolDin和每行非零元素个数MemElsDin单独读出。

说明书 :

一种图像数据的存储方法

技术领域

[0001] 本发明涉及一种图像处理设备中的图像数据存储方法。

背景技术

[0002] 图像匹配是图像处理中的基本问题,它是把两幅图像(可称为参考图和模板图)按照某种算法进行运算,根据运算结果及判据,得出相应的结果和结论。其中,图像数据是以矩阵的方式进行存储和运算。这种矩阵有两种:一种是所有数据为非零的矩阵,称为紧矩阵;一种是大量元素为零的矩阵,称为稀疏矩阵。矩阵越大,需要存储的图像数据就越多,所需要的存储空间就越大。为了满足不同运算的需要,有效节省存储空间,提高数据存储访问性能,在图像处理设备中,需要一种新的图像数据的存储方法。
[0003] 传统的图像数据存储方法是逐点进行存储。这种方法可用于存储紧矩阵。对于稀疏矩阵来说,采用逐点存储,既造成存储空间的极大浪费,又造成运算单元大量的无效操作,出现运算速度下降,存储容量变大的情况。因此,这种存储方法不能很好解决对图像数据的存储,存在一定的缺点。

发明内容

[0004] 针对已有图像数据存储方法不能适用于稀疏矩阵数据存储的要求,本发明提供了一种可适应紧矩阵和稀疏矩阵的图像数据存储方法。
[0005] 为达到以上目的,本发明是采取如下技术方案予以实现的:
[0006] 一种图像数据的存储方法,其特征在于,将存储阵列块划为八个子块,分别为零子块Block0、第一子块Block1、第二子块Block2、第三子块Block3、第四子块Block4、第五子块Block5、第六子块Block6、第七子块Block7.其中零子块Block0、第一子块Block1、第二子块Block2存储容量相同,且比第三子块Block3的存储容量大1倍;第四子块Block4到第七子块Block7存储容量的大小均为第三子块Block3存储容量的1/4。
[0007] 存储控制块将图像数据写入存储阵列块存储时,对紧矩阵采用逐点存储的方法,对稀疏矩阵采用CSR格式的存储方法,将参考图数据和模板图数据按照不同的四种存储模式MemMOde:单元素紧矩阵00、双元素紧矩阵01、单元素稀疏矩阵10和双元素稀疏矩阵11存储到八个子块中,其中单元素为数据的实部,双元素为数据的实部+虚部,数据分配方式如下:
[0008] 当存储模式MemMode=00时,Block0~Block3存储参考图数据,Block4和Block5存储模板图数据,Block6存储参考图每行非零元素个数,Block7存储模板图每行非零元素个数。
[0009] 当存储模式MemMode=01时,Block0和Block2存储参考图数据实部,Block1和Block3存储参考图数据虚部,Block4存储模板图数据实部,Block5存储模板图数据虚部,Block6存储参考图每行非零元素个数,Block7存储模板图每行非零元素个数。
[0010] 当存储模式MemMode=10时,Block0和Block1存储参考图非零元素,Block2和Block3存储参考图非零元素列号,Block4存储模板图非零元素,Block5存储参考图每行非零元素个数,Block6存储模板图非零元素列号,Block7存储模板图每行非零元素个数。
[0011] 当存储模式MemMode=11时,Block0存储参考图非零元素实部,Block1存储参考图非零元素虚部,Block2存储参考图非零元素列号,Block3存储参考图每行非零元素个数,Block4存储模板图非零元素实部,Block5存储模板图非零元素虚部,Block6存储模板图非零元素列号,Block7存储模板图每行非零元素个数。
[0012] 图像数据存储的控制步骤为:
[0013] (1)当开始存储脉冲StoreStart有效时,由数据初始地址AddrQStart产生存储阵列数据地址MemQAddr和数据列号地址MemEcolAddr,由每行非零元素个数初始地址AddrEStart产生每行非零元素个数地址MemElsAddr,同时产生数据列号初始值;
[0014] (2)当图像数据写入时,如果数据为零,只对数据列号进行累加;如果数据为非零元素,将产生存储阵列数据写信号MemQWe,该数据及列号按照以上数据分配写入存储阵列相应存储子块;写入完成后数据地址MemQAddr、数据列号地址MemEcolAddr、每行非零元素个数MemElsDin和数据列号加1;当一行元素写入结束后,产生每行非零元素个数写信号MemElsWe,把当前行非零元素个数写入存储阵列块相应的存储子块;
[0015] (3)下一行数据的写入重复步骤(2),直至存入全部数据;
[0016] (4)图像数据读出时,存储控制块生成对存储阵列的读信号和地址,由于存储阵列为流水读,当开始加载脉冲LoadStart有效时,由数据初始地址AddrQStart产生存储阵列数据地址MemQAddr和数据列号地址MemEcolAddr,由每行非零元素个数初始地址AddrEStart产生存储阵列每行非零元素个数地址MemElsAddr,同时产生存储阵列数据读信号MemQRd、数据列号读信号MemEcolRd和每行非零元素个数读信号MemElsRd,根据所述MemQAddr、MemEcolAddr和MemElsAddr地址信号,将存入的图像数据预先读出到存储控制块的输出缓存,当数据读信号ImgQRd、数据列号读信号EcolRd、每行非零元素个数读信号ElsRd到来后再从存储控制块的输出缓存中读出数据、数据列号和每行非零元素个数。
[0017] 上述方案中,所述八个子块中,零子块Block0、第一子块Block1、第二子块Block2存储容量相同,且比第三子块Block3的存储容量大1倍;第四子块Block4到第七子块Block7存储容量的大小均为第三子块Block3存储容量的1/4。
[0018] 存储控制块将图像数据写入存储阵列块时,对于双元素紧矩阵,数据实部MemQ0Din和数据虚部MemQ1Din并行写入,对于单元素或双元素稀疏矩阵,数据实部MemQ0Din、数据虚部MemQ1Din及其列号MemEcolDin并行写入;数据从存储阵列块读出时,对于双元素紧矩阵,数据实部MemQ0Din和数据虚部MemQ1Din并行读出,每行非零元素个数MemElsDin单独读出,对于单元素或双元素稀疏矩阵,数据实部MemQ0Din和数据虚部MemQ1Din并行读出,数据列号MemEcolDin和每行非零元素个数MemElsDin单独读出。
[0019] 本发明通过存储控制块与存储阵列块相结合,可实现四种存储模式。存储控制块对存储阵列块参考图和模板图采用相同的控制,实现了参考图和模板图图像数据的并行访问,同时实现了针对不同图像数据特点的图像数据的智能访问。本发明适用于图像处理设备中数据存储单元部分,可以有效改善国防武器系统中计算机数据存储访问性能,有效满足弹星载多源信息融合、高速并行处理技术以及高速信息处理中对大量数据存储访问的需求,因此有着广泛的应用前景。

附图说明

[0020] 以下结合附图及具体实施方式对本发明作进一步的详细说明。
[0021] 图1为实现本发明图像数据存储的存储阵列块及存储控制块的结构示意图。图中:
[0022] 下列符号是从外部控制单元输入存储控制块的信号:
[0023] MemMOde-存 储 模式;ImgDimX-图 像 维 数;StoreStart-开 始 存 储 脉 冲;LoadStart-开始加载脉冲;AddrQStart-数据初始地址;AddrEStart-每行非零元素个数初始地址;ImgQWe-图像数据写;ImgQRd-图像数据读;QDin-图像数据输入;EcolRd-数据列号读;ElsRd-每行非零元素个数读。
[0024] 下面符号是存储阵列块对存储控制块输出的信号:
[0025] Data-存储阵列块数据输出。
[0026] 下列符号是存储控制块对存储阵列块输出的信号,也即存储阵列块的输入信号:
[0027] MemQWe-存储阵列图像数据写;MemQRd-存储阵列图像数据读;MemQAddr-存储阵列图像数据地址;MemQ0Din-存储阵列图像数据实部输入;MemQ1Din-存储阵列图像数据虚部输入;MemEcolRd-存储阵列图像数据列号读;MemEcolAddr-存储阵列图像列号地址;MemEcolDin-存储阵列图像数据列号输入;MemElsWe-存储阵列图像数据每行非零元素个数写;MemElsRd-存储阵列图像数据每行非零元素个数读;MemElsAddr-存储阵列图像数据每行非零元素个数地址;MemElsDin-存储阵列图像数据每行非零元素个数输入。
[0028] 下列符号/数字是存储控制块对外部运算单元输出的信号:
[0029] 800-存储控制块图像数据实部输出;801-存储控制块图像数据虚部输出;802-存储控制块图像数据列号输出;803-存储控制块图像数据每行非零元素个数输出。

具体实施方式

[0030] 如图1所示,在存储阵列快中存储的图像数据包括参考图数据和模板图数据。存储阵列块中,对紧矩阵图像数据采用逐点存储的方法,对稀疏矩阵图像数据的存储采用CSR格式(行格式存储法)进行存储。它的基本思想是将图像数据矩阵中所有的非零元素提取出来,按照从上到下、从左到右的顺序排成一个序列。CSR格式有4个特征向量。其中一个特征向量是每行第一个非零元素的位置索引,主要是便于对矩阵中任意行的随机访问。由于CSR对图像数据是顺序访问,因此可以不用保存该特征向量。这样,本发明方法只需要存储三个特征向量:非零元素、非零元素列号以及每行非零元素个数。
[0031] 本发明将存储阵列块划为八个子块,分别为零子块Block0、第一子块Block1、第二子块Block2、第三子块Block3、第四子块Block4、第五子块Block5、第六子块Block6、第七子块Block7。其中零子块Block0、第一子块Block1、第二子块Block2存储容量相同,且比第三子块Block3的存储容量大1倍;第四子块Block4到第七子块Block7存储容量的大小均为第三子块Block3存储容量的1/4。
[0032] 存储时,将参考图数据和模板图数据按照不同的四种存储模式MemMode:紧矩阵单元素00、紧矩阵双元素01、稀疏矩阵单元素10和稀疏矩阵双元素11存储到八个子块中,数据分配如表1所示。其中,单元素为数据实部,双元素为数据实+虚部。
[0033] 表1存储阵列块数据分配表
[0034]
[0035] 表1中,当存储模式MemMode=00时,Block0~Block3存储参考图数据,Block4和Block5存储模板图数据,Block6存储参考图每行非零元素个数,Block7存储模板图每行非零元素个数。
[0036] 当存储模式MemMode=01时,Block0和Block2存储参考图数据实部,Block1和Block3存储参考图数据虚部,Block4存储模板图数据实部,Block5存储模板图数据虚部,Block6存储参考图每行非零元素个数,Block7存储模板图每行非零元素个数。
[0037] 当存储模式MemMode=10时,Block0和Block1存储参考图非零元素,Block2和Block3存储参考图非零元素列号,Block4存储模板图非零元素,Block5存储参考图每行非零元素个数,Block6存储模板图非零元素列号,Block7存储模板图每行非零元素个数。
[0038] 当存储模式MemMode=11时,Block0存储参考图非零元素实部,Block1存储参考图非零元素虚部,Block2存储参考图非零元素列号,Block3存储参考图每行非零元素个数,Block4存储模板图非零元素实部,Block5存储模板图非零元素虚部,Block6存储模板图非零元素列号,Block7存储模板图每行非零元素个数。
[0039] 在实际工程应用中,根据目标图像存储需求,参考图矩阵最大512×512(256K);模板图矩阵最大128×128(16K)。综合芯片所需面积和适应性的考虑,存储阵列大小设定为256K×12bits,采用容量大小为4k×12bits(VeriSilicon公司存储器编译工具支持的最大存储深度为4K)的存储单元组成,共64个。四种存储模式下的存储容量大小见图1,其中零子块Block0、第一子块Block1、第二子块Block2大小均为16*4K(16个4k×12bits存储单元);第三子块Block3的大小为8*4K(8个4k×12bits存储单元);第四子块Block4到第七子块Block7的大小均为2*4K(2个4k×12bits存储单元)。
[0040] 在存储控制块中,外部控制单元写入的图像数据宽度是读入存储阵列块的图像数据宽度的2倍(24位),在单元素模式下,图像数据低12位作为存储阵列块的图像数据;在双元素模式下,图像数据高12位作为存储阵列块图像数据虚部,低12位作为存储阵列块图像数据实部。
[0041] 存储控制块将图像数据写入存储阵列之前,需要给出存储模式MemMode、图像维数ImgDimX;存储控制块将图像数据写入存储阵列块时,对于双元素紧矩阵,数据实部MemQ1Din和数据虚部MemQ1Din并行写入,对于单元素或双元素稀疏矩阵,数据实部MemQ0Din、数据虚部MemQ1Din及其列号MemEcolDin并行写入;图像数据从存储阵列块读出时,对于双元素紧矩阵,数据实部MemQ0Din、数据虚部MemQ1Din并行读出,对于单元素或双元素稀疏矩阵,数据实部MemQ0Din和数据虚部MemQ1Din并行读出,数据列号MemEcolDin和每行非零元素个数MemElsDin单独读出。图像数据存储时,紧矩阵采用逐点存储的方法,图像数据顺序存储;对于稀疏矩阵,图像数据具体的存储步骤为:
[0042] (1)当开始存储脉冲StortStart有效时,由数据初始地址AddrQStart产生存储阵列数据地址MemQAddr和数据列号地址MemEcolAddr,由每行非零元素个数初始地址AddrEStart产生存储阵列每行非零元素个数地址MemElsAddr(初始地址设置为第0个存储单元),同时产生数据列号初始值(初始值为0)。
[0043] (2)当图像数据写入时,如果数据为零,只对数据列号进行累加;如果图像数据为非零元素,将产生存储阵列数据写信号MemQWe,该数据及列号按照表1的数据分配表写入存储阵列相应存储子块;写入完成后数据地址MemQAddr、数据列号地址MemEcolAddr、每行非零元素个数MemElsDin和数据列号加1;当一行元素写入结束后,产生每行非零元素写信号MemElsWe,把当前非零元素个数写入存储阵列块相应的存储子块。
[0044] (3)下一行数据的写入重复步骤(2),直至存入全部数据。
[0045] (4)图像数据读出时,存储控制块生成对存储阵列的读信号和地址,由于存储阵列为流水读,当开始加载脉冲LoadStart有效时,由数据初始地址AddrQStart产生存储阵列数据地址MemQAddr和数据列号地址MemEcolAddr,由每行非零元素个数初始地址AddrEStart产生存储阵列每行非零元素个数地址MemElsAddr,同时产生存储阵列数据读信号MemQRd、数据列号读信号MemEcolRd和每行非零元素个数读信号MemElsRd,根据所述MemQAddr、MemEcolAddr和MemElsAddr地址信号,将存入的图像数据预先读出到存储控制块的输出缓存,当图像数据读信号ImgQRd、图像数据列号读信号EcolRd、每行非零元素个数读信号ElsRd到来后再从存储控制块的输出缓存中读出数据实部、数据虚部、数据列号和每行非零元素个数。
[0046] 实施例1
[0047] 下面以表1中的存储模式10为例来进一步说明本发明的方法:
[0048] 设外部控制单元需要存储的图像数据为参考图图像数据QDin,存储模式MemMode=10、图像维数ImgDimx=6*6的A矩阵:
[0049]
[0050] 数据写入过程:
[0051] 当存储模式MemMode=10时,由表1看出,存储阵列块数据分配为:block0和block1存储参考图非零元素;block2和block3存储参考图非零元素列号;block5存储参考图每行非零元素个数。数据和数据列号并行写入。
[0052] 1.在存储控制块,当开始存储脉冲StoreStart有效时,产生存储阵列地址(MemQAddr、MemEcolAddr和MemElsAddr:分别指向第0个地址单元),同时产生数据列号初始值(=0)。
[0053] 2.当A矩阵第0个数据(=0)写入时,不进行存储操作,只对数据列号进行累加(=1)。
[0054] 3.当A矩阵第1个数据(=5)写入时,产生存储阵列数据写信号MemQWe,此时,存储阵列数据MemQDin(=5)和该数据列号MemQEcolDin(=1)同时写入存储阵列block0和block2第0个地址单元中;写入完成后,数据地址MemQAddr、数据列号地址MemEcolAddr、每行非零元素个数MemElsDin加1,数据列号加1(=2)。
[0055] 4.随后输入的A矩阵三个数据都为0,不进行存储操作,只对数据列号进行累加(MemQEcolDin=4)。
[0056] 5.当A矩阵第5个数据(=2)写入时,将产生存储阵列数据写信号MemQWe,此时,存储阵列数据MemQDin(=2)和该元素列号MemQEcolDin(=5)同时写入block0和block2第1个地址单元中;写入完成后,数据地址MemQAddr、数据列号地址MemEcolAddr、每行非零元素个数MemElsDin加1,数据列号加1(=5);根据数据列号值(MemQEcolDin=5)产生每行非零元素个数写信号MemElsWe,此时把当前行非零元素个数MemElsDin(=2)写入block5块中,此时完成了第0行数据的写入。
[0057] 6.后面几行数据的写入重复2~5步。
[0058] 7.当数据全部存入后,对照表1所述,存储阵列块中各存储子块存储的数据如下:
[0059] block0:{5;2;1;2;1;3;1;3;3};
[0060] block2:{1;5;0;1;5;0;0;3;5};
[0061] block5:{2;1;2;1;2;1};
[0062] 数据读出过程:
[0063] 数据在存储模式MemMode=10读出时,数据、数据列号和每行非零元素个数单独读出。
[0064] 1.在存储控制块中,当开始加载脉冲LoadStart有效时,产生存储阵列的初始地址(MemQAddr、MemEcolAddr和MemElsAddr:根据计算需要进行初始化设置,本例是指向第0个存储单元);同时产生存储阵列数据读(MemQRd、MemEcolRd和MemElsRd),此时,根据初始地址(MemQAddr、MemEcolAddr和MemElsAddr),分别把数据(=5)、数据列号(=1)和非零元素个数(=2)预先读出到存储控制块中的输出缓存。
[0065] 2.当数据读信号ImgQRd、数据列号读信号EcolRd和每行非零元素个数读信号ElsRd有效时,把数据从存储控制块的输出缓存中分别输出,此时,存储控制块图像数据输出(800)为5,存储控制块图像数据列号输出(802)为1,存储控制块图像数据每行非零元素个数输出(803)为2。
[0066] 3.当数据从缓存中读出后,取下一组数据到缓存,重复第二步,直到所有数据都读出,至此完成了对存储阵列块的读出操作。
[0067] 按照本发明上述存储方法,对于上述实施例1的6*6单元素稀疏矩阵,稀疏因子为0.25。如果采用逐点存储方法,需要36个存储空间,而使用本发明的存储方法,只需要24个存储空间。因此,可节省12个存储空间。
[0068] 实施例2
[0069] 下面以表1中的存储模式MemMode=11为例进一步说明本发明的方法:
[0070] 设外部控制单元需要存储的图像数据为模板图图像数据QDin,存储模式MemMode=11、图像维数为6*6的B矩阵:
[0071]
[0072] 数据写入过程:
[0073] 当存储模式MemMode=11时,由表1看出,存储阵列块数据分配为:block4存储模板图非零元素实部;block5存储模板图非零元素虚部;block6存储模板图非零元素列号;block7存储模板图每行非零元素个数。数据实部、数据虚部和数据列号并行写入;图像数据在存储模式MemMode=11时的写入过程和实施例1图像数据的写入过程相同。
[0074] 当B矩阵第0个图像数据(=(1,2))写入时,存储控制块产生对存储阵列数据写信号MemQWe,此时,存储阵列数据实部MemQ0Din(=2)、存储阵列数据虚部MemQ1Din(=1)和该数据列号MemQEcolDin(=0)同时写入存储阵列block4、block5和block6第0个地址单元中;写入完成后,数据地址MemQAddr、数据列号地址MemEcolAddr、每行非零元素个数MemElsDin加1,数据列号加1(=1);当数据列号加到5时,产生每行非零元素个数写信号MemElsWe,此时把当前行非零元素个数MemElsDin(=1)写入block7块中,此时完成了第0行数据的写入。
[0075] 7.当数据全部存入后,对照表1所述,存储阵列块中各存储子块存储的图像数据如下:
[0076] Block4:{2;3;0;6;8;9};
[0077] Block5:{1;0;4;5;7;8};
[0078] Block6:{0;1;3;5;4;2};
[0079] Block7:{1;1;1;1;1;1};
[0080] 数据读出过程:
[0081] 图像数据在存储模式MemMode=11读出时,数据实部和数据虚部并行读出,数据列号和每行非零元素个数单独读出。图像数据在存储模式MemMode=11的读出过程和实施例1图像数据的读出过程相同。根据初始地址(MemQAddr、MemEcolAddr和MemElsAddr),同时把数据实部(=2)、数据虚部(=1)、数据列号(=0)和每行非零元素个数(=1)预先读出到存储控制块中的输出缓存。当图像数据读信号ImgQRd、图像数据列号读信号EcolRd和每行非零元素个数读信号ElsRd有效时,把数据从存储控制块中的输出缓存中分别读出,此时,存储控制块图像数据实部输出(800)为2,存储控制块图像数据虚部输出(801)为1,存储控制块图像数据列号输出(802)为0,存储控制块图像数据每行非零元素个数输出(803)为1。当数据从缓存中读出后,取下一组数据到缓存,直到所有数据都读出。
[0082] 按照本发明上述存储方法,对于上述实施例2的6*6双元素稀疏矩阵,稀疏因子为0.167。如果采用逐点存储方法,需要72个存储空间,而使用本发明的存储方法,只需要24个存储空间。因此,可节省48个存储空间。随着稀疏矩阵维数的增大和稀疏因子的减小,本发明图像数据存储实现效果会更明显。