提高图像获取速度的方法和装置的制造方法_2

文档序号:9730417阅读:来源:国知局
数据取出,处理器14不需要在内存中进行查找,进一步提高了图像数据存入和读取的速度,另外,为了使存入地址表在存储完图像数据后,还能够及时存储新的图像数据,将存入地址表中预先记录有至少两个能够存入图像数据的地址;
[0042]所述步骤S101进一步为:
[0043]步骤S101’:判断所述图像处理模块是否将图像数据输出完成,如果是,则将已经存入图像数据的地址从所述存入地址表中删除并添加至所述读取地址表中,执行下一步骤,如果否,则重复执行本步骤。
[0044]本步骤中,将经过图像处理模块13处理后的图像数据存储到存入地址表的对应地址中,当存入地址表的相应地址中存储的图像数据传输完成后,将该存入地址表的存储有图像数据的相应地址添加至读取地址表中,方便处理器14的使用。
[0045]本实施例中,建立有存入地址表和读取地址表,当图像数据传输完成,将已经存入图像数据的地址从存入地址表中删除并添加至读取地址表中,提高了图像数据存储和读取的便利性。
[0046]作为图4实施例的进一步改进,如图5所示,步骤S103进一步为:
[0047]步骤S1031:当需要使用图像处理模块13处理后的图像数据时,判断读取地址表是否为空,如果是,重复执行本步骤,如果否,执行下一步骤;
[0048]本步骤中,处理器14在使用图像数据时,先检测读取地址表是否为空,是为了防止读取地址表中没有图像数据而使处理器14进行获取动作,造成的浪费处理器14的资源的现象。
[0049]步骤S1032:将读取地址表中的地址中存储的图像数据取出;
[0050]步骤S1033:将已经取出图像数据的地址从读取地址表中删除并添加至存入地址表中。
[0051]本实施例,对上述实施例进行了进一步的优化,将已经取出图像数据的地址从读取地址表中删除并添加至存入地址表中,用于存储新的经过图像处理模块13处理后的图像数据,无需处理器14在存入地址表中设置新的用于存储图像数据的地址,进一步地提高了图像数据的获取速度。
[0052]作为图4和图5所示实施例的进一步改进,存入地址表和读取地址表均采用链表结构。
[0053]本实施例中,链表结构是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表结构最明显的好处就是,常规数组排列关联项目的方式不同于数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。本实施例中,使用链表结构可以充分利用内存空间,实现灵活的内存动态管理。
[0054]下面,本发明中提供了一种图像数据获取的具体的实施例,如图6所示:
[0055]步骤S1:系统上电;
[0056]步骤S2:系统初始化;
[0057]步骤S3:从内存中分配η个图像数据存储缓存;
[0058]步骤S4:将这η个图像数据存储缓存的地址挂入链表write_buf中;
[0059]步骤S5:将图像处理模块13输出图像的地址设为write_buf链表中的第一个图像数据存储缓存;
[0060]步骤S6: 一帧数据是否传输完成,如果是,则执行下一步,如果否,则重复执行本步骤;
[0061 ]步骤S7:将存储有图像数据的图像数据存储缓存从write_buf链表中移除,其余图像数据存储缓存依次向前移动一个位置;
[0062]步骤S8:将存有图像数据的图像数据存储缓存挂入链表read_buf的起始位置;[0063 ] 步骤S9:更新图像处理模块13输出图像的地址为wr i t e_buf链表中新的图像数据存储缓存。
[0064]本实施例中,步骤S3中,图像数据存储缓存为上述的实施例中的存入地址表中的缓存;步骤S4和S9中,write_buf为定义的用于存入图像数据的链表的结构体变量,read_buf为定义的用于读取图像数据的链表的结构体变量。
[0065]本实施例中,系统在上电的时候,会在内存中首先分配η个图像数据存储缓存,这个η可以根据实际应用,最少为2个,本实施例中,优选为4个,上限不限,但通常应用的时候一般不超过20个,图像数据存储缓存分配完成后,首先一个接一个挂入链表Write_bUf中,用来存储新接收的图像数据;一旦有write_buf中某个图像数据存储缓存中存储了一帧完整的图像,就将该图像数据存储缓存从write_buf中移除,并将该图像数据存储缓存挂入链表read_buf中,供处理器14使用。
[0066]下面,本发明中还提供了一种图像数据读取的具体的实施例,如图7所示:
[0067]步骤S11:开始读取图像;
[0068]步骤S12:链表read_buf是否存储有图像数据;
[0069]步骤S13:将read_buf链表中第一个图像数据存储缓存取出;
[0070]步骤S14:进行相关处理;
[0071 ]步骤S15:处理完成,将该图像数据存储缓存从read_buf链表中移除,其余图像数据缓存依次向前移动一个位置;
[0072]步骤S16:将该图像数据存储缓存挂入链表write_buf的末尾位置。
[0073]本实施例中,当处理器14需要处理图像的时候,就会检测链表read_buf中是否有图像数据存储缓存已经挂入,如果有的话,获得图像数据存储缓存的地址,然后使用其中的图像数据进行相关的处理。
[0074]图6和图7实施例中定义了如下结构体:
[0075]结构体是一种构造性数据,它是由不同类型的数据项组成的复合类型,结构体是建造动态数据结构(如链表)非常有用的工具。本实施例中的链表就是由结构体类型的数据所构成的。
[0076]以下是本实施例中定义的图像数据存储缓存的结构体:
[0077]Struct buf_info{
[0078]Unsigned int*bufaddr;
[0079]Unsigned int*list;
[0080]};
[0081 ]其中,buf adding向图像缓存区的地址;1 i st指向下一个图像数据存储缓存结构体的地址,默认值为NULL;
[0082]以下是本实施例中定义的存入地址表采用的链表结构:
[0083]Struct listbuf{
[0084]Unsigned int*listhead;
[0085]};
[0086]listhead指向第一个图像数据存储缓存结构体的地址,默认值为NULL;
[0087]本实施例定义两个链表变量,structlistbuf write_buf 和struct listbufreacLbuf,当图像数据存储缓存中没有图像数据的话,挂入Write_bUf链表,用于存放新的图像处理模块13处理完成的图像;当图像数据存储缓存中有图像数据的话,挂入reacLbuf链表,供处理器14使用。
[0088]图像数据存储缓存在被分配好后,其地址就确定了;每个图像数据存储缓存对应一个图像数据存储缓存的结构体:
[0089]Struct buf_info{
[0090]Unsigned int*bufaddr;
[0091]Unsigned int*list;
[0092]};
[0093]变量bufaddr中保存的就是图像数据存储缓存的地址;而变量1 i st保存的是下一个图像数据存储缓存所对应的struct buf_info结构体的首地址,而变量write_buf■或read_buf保存的第一个图像数据存储缓存所对应的struct buf_info结构体的首地址,这样就把多个图像数据存储缓存链接了起来,形成了一个链表。
[0094]图6和图7实施例中,仅仅操作的是图像数据存储缓存的地址,并没有拷贝图像数据存储缓存中的图像数据。当图像数据存储缓存没有图像数据的话,就将图像数据存储缓存的地址放入write_buf链表中,这样保存新图像数据的时候,图像处理模块13就能找到该图像数据存储缓存;当图像数据存储缓存有图像数据的话,就将图像数据存储缓存的地址放入reacLbuf链表中,这样处理器14处理图像的时候,就能找到该图像数据存储缓存。该实施例中,由于仅仅操作的是图像数据存储缓存的地址,而不是拷贝图像数据存储缓存,所以,加快了图像的获取速度,降低处理器14的系统消耗。
[0095]另一方面,本发明实施例还提供一种
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1