一种红外实时成像系统的帧缓存调度装置及调度方法

文档序号:6362914阅读:568来源:国知局
专利名称:一种红外实时成像系统的帧缓存调度装置及调度方法
技术领域
本发明涉及红外图像采集技术领域,尤其涉及一种红外实时成像系统中帧缓存的调度装置及相应的调度方法。
背景技术
红外实时成像系统所采集的红外图像数据通常都未经压缩,数据量大,并且还需通过校正、拉伸等进一步处理才能显示视频图像;因此红外图像的读取、处理过程非常耗费系统的硬件资源。一种红外成像系统设计方案是通过FPGA采集非制冷焦平面的红外数据, 然后由上位机(比如ARM芯片)提供的参数在FPGA内进行非均勻矫正、拉伸等图像处理, 最后通过中断告知上位机,由上位机读取数据并显示;上位机从FPGA读取原始红外图像数据,计算参数再传回FPGA。该方案中上位机通常须要在内存中开辟空间用于缓存两种红外数据。现有的红外图像缓存空间的调度方法通常是将帧缓存抽象成基于数组的队列,通过调度队列元素,来实现调度帧缓存;现有技术存在如下问题
(1)由于原始红外数据和处理后的红外数据类型不同,对于传统的基于数组的队列,须要为两种类型红外数据分别开辟独立的缓存块分别管理。这种方案虽然简单,但需要为两类红外帧分别分配缓存,由于通常不会同时采集两类红外帧图像,因此这种分配缓存的方法未能高效利用内存。因此需要设计一种方法,使两种类型的红外数据可以共同使用一组缓存块。(2)当没有空闲图像缓存时,传统的基于数组的队列调度算法无法保证最新的红外帧数据总是能够替换还未被读取的旧红外数据。

发明内容
针对上述现有技术,本发明要解决的技术问题是提供一种红外实时成像系统的帧缓存调度方法及调度装置,其根据缓存的状态来管理缓存,当存在可写入红外帧数据的缓存时,新的帧缓存总是被写入。为了解决上述技术问题,本发明采用如下技术方案一种红外实时成像系统的帧缓存调度装置,包括
调度装置初始单元,用于为每个系统已分配的帧缓存分配一个对应的链表结点,以及根据帧缓存的状态分配五个管理缓存的链表,初始化操作包括初始化空闲状态对应的链表List_I、正在写入原始红外帧数据的状态对应的链表List_B、原始红外帧数据写入完成状态对应的链表List_R、正在写入处理后的红外帧数据的状态对应的链表List_B、处理后红外帧数据写入完成状态对应的链表List_R,并将所有链表结点均挂载到List_I链表上; 读缓存调度单元,用于为读操作分配可读缓存,将读操作缓存对应的链表结点信息返回给申请者;
写缓存调度单元,用于为写操作分配缓存,将分配的缓存对应的链表结点信息返回申请者;
调度装置回收单元,用于将已经读或写完毕的缓存对应的链表结点插入到正确的链表中。—种使用上述调度装置的红外实时成像系统的帧缓存调度方法,包括如下步骤 A 首先,系统在分配了缓存之后,调用调度装置初始单元,该单元为缓存初始化对应的
调度装置单元,使该调度装置投入使用; 其中读缓存操作包括如下步骤
IA 读进程调用所述调度装置的读缓存调度单元申请可读缓存,读缓存调度单元将可读的缓存信息返回给读进程,
IB 读进程根据获得的缓存信息,通过读缓存调度单元进行读缓存调度,
IC 在完成读缓存调度后,读进程通过调用调度装置回收单元处理完成一次读缓存操
作;
写缓存操作包括如下步骤
2A:写过程调用所述调度装置的写缓存调度单元申请可写缓存,写缓存调度单元将可写的缓存信息返回给写过程,
2B:写过程根据获得的缓存信息,通过写缓存调度单元进行写缓存调度,
2C 在完成写缓存调度后,写过程通过调用调度装置回收单元处理完成一次写缓存操作。进一步地,所述读缓存调度单元的读缓存调度包括如下步骤
步骤200 执行读操作的过程调用该单元申请读η个缓存的某类红外帧数据,并进入步骤210,某类红外帧数据为原始红外帧数据和处理后的红外帧数据;
步骤210 该单元查询该类红外帧对应的List_R是否为空,如不为空,则跳至220 ;否则跳至240,
步骤220 当该类红外帧对应的List_R链表中包含m个链表结点,调度装置将该链表中的前min (m, η)个链表结点取出,并跳至步骤230,
步骤230 调度成功,将步骤220中取出的min(m,n)个链表结点的信息返回给申请者, 步骤MO 调度失败,返回失败信息。更进一步地,所述调度装置回收单元的处理包括如下步骤
申请者在完成k个缓存读操作之后,将该k帧缓存对应的链表结点,归还调度装置,调度装置再将k个链表结点依次插入List_I链表尾,其中0<k<=min(m,η)。进一步地,所述写缓存调度单元的写缓存调度包括如下步骤
步骤100 当写操作向该单元申请缓存用于写入某类红外帧数据时,跳至步骤110,某类红外帧数据为原始红外帧数据和处理后的红外帧数据;
步骤110 该单元判断该类红外帧对应的表是否为空,若不为空则跳至步骤 140,否则跳至步骤120,
步骤120 该单元判断List_I是否为空,若为空则跳至步骤121,否则跳至步骤130, 步骤121 该单元判断另一类红外帧对应的List_R是否为空,若为空则跳至122,否则跳至步骤130,
步骤122 该单元判断该类红外帧对应的List_R是否为空,若为空则跳至步骤140,否则跳至步骤130,
步骤130 取出上一步骤的链表的链表首结点,并插入至该类红外帧对应的List_B链表尾,然后跳至步骤150,
步骤140 退出调度,返回调度失败信息, 步骤150 调度成功,将调度信息返回申请者。更进一步地,所述调度装置回收单元的处理包括如下步骤
申请者在完成写缓存操作之后,告知调度装置,调度装置将会将该类帧缓存对应的 List_B链表中唯一的链表结点取出,并插入到该类帧缓存对应的List_R链表尾。进一步地,对调度装置初始单元、读缓存调度单元、写缓存调度单元均进行加锁保护。与现有技术相比,本发明具有以下有益效果①每个帧缓存由一个链表结点缓存, 在调度器的生命周期内,链表结点不会被删除,只是从一个链表到转移到另一个链表,或者由读进程(线程)管理;②可以保证当存在可写入红外帧数据的缓存时,新的帧缓存总是被
写入;:,Σ当申请缓存用于写入某类红外帧数据时,此类红外帧对应的List_R的优先级低于
另一类型红外帧缓存对应的List_R链表,因此该调度器算法会优先将另一类红外帧对应的List_R中的链表结点取出,这样可以保证缓存优先用于存储当前申请的红外帧类型的红外帧数据,并且该算法还可以防止另一类红外帧数据长期占有帧缓存,以达到提高帧缓存使用效率的目的。


图1是写红外帧缓存的调度步骤流程图; 图2是读红外帧缓存的调度步骤流程图3是调度器单元操作说明图; 图4是帧缓存的状态转移图。
具体实施例方式下面将结合附图及具体实施方式
对本发明作进一步的描述。本发明根据红外帧缓存所处的状态分为六类空闲状态、正在写入原始红外帧数据、原始红外帧数据写入完成状态、正在写入处理后的红外帧数据、处理后红外帧数据写入完成状态、正在读取状态。空闲状态的缓存由List_I管理,根据红外帧类型的不同,正在写入原始红外帧数据、原始红外帧数据写入完成状态、正在写入处理后的红外帧数据、处理后红外帧数据写入完成状态的缓存分别由原始红外帧类型对应的List_B、原始红外帧类型对应的List_R、 处理后的红外帧类型对应的List_B、处理后的红外帧类型对应的List_R管理,正在读取状态的缓存由读进程(线程)管理。每个帧缓存由一个链表结点缓存,在调度器的生命周期内, 链表结点不会被删除,只是从一个链表到转移到另一个链表,或者由读进程(线程)管理。首先定义本发明红外实时成像系统的帧缓存调度装置,其包括
调度装置初始单元,用于为每个系统已分配的帧缓存分配一个对应的链表结点,以及初始化上述的所有链表,并将所述链表结点挂载到List_I链表上;
读缓存调度单元,用于为读操作分配可读缓存,将读操作缓存对应的链表结点信息返回给申请者;
写缓存调度单元,用于为写操作分配缓存,将分配的缓存对应的链表结点信息返回申请者;
调度装置回收单元,用于将已经读或写完毕的缓存对应的链表结点插入到正确的链表中。如图3所示使用上述调度装置的红外实时成像系统的帧缓存调度方法,包括如下步骤
A 首先,系统在分配了缓存之后,调用调度装置初始单元,该单元为缓存初始化对应的调度装置单元,使该调度装置投入使用; 其中读缓存操作包括如下步骤
IA 读进程调用所述调度装置的读缓存调度单元申请可读缓存,读缓存调度单元将可读的缓存信息返回给读进程,
IB 读进程根据获得的缓存信息,读取缓存中的红外数据,
IC 在完成读缓存调度后,读进程通过调用调度装置回收单元处理完成一次读缓存操
作;
写缓存操作包括如下步骤
2A 写过程调用所述调度装置的写缓存调度单元申请可写缓存,写缓存调度单元将可写的缓存信息返回给写过程,
2B 写过程根据获得的缓存信息,想缓存中写入红外数据,
2C 在完成写缓存调度后,写过程通过调用调度装置回收单元处理完成一次写缓存操作。如图2所示所述读缓存调度单元的读缓存调度包括如下步骤
步骤200 执行读操作的过程调用该单元申请读η个缓存的某类红外帧数据,并进入步骤210,某类红外帧数据为原始红外帧数据和处理后的红外帧数据;
步骤210 该单元查询该类红外帧对应的List_R是否为空,如不为空,则跳至220 ;否则跳至240,
步骤220 当该类红外帧对应List_R链表中包含m个链表结点,调度装置将该链表中的前min (m, η)个链表结点取出,并跳至步骤230,
步骤230 调度成功,将步骤220中取出的min(m,n)个链表结点的信息返回给申请者, (min (m, η)取m和η中的最小);
步骤MO 调度失败,返回失败信息。申请者在完成k个缓存读操作之后,将该k帧缓存对应的链表结点,归还调度装置,调度装置再将k个链表结点依次插入List_I链表尾,其中0<k<=min (m, η)。如图1所示所述写缓存调度单元的写缓存调度包括如下步骤
步骤100 执行写操作的过程调用该单元申请一个缓存用于写入某类红外帧数据,然后跳至步骤110,某类红外帧数据为原始红外帧数据和处理后的红外帧数据;
步骤110 该单元判断该类红外帧对应的List_B链表是否为空,若不为空则跳至步骤CN 102541660 A
140,否则跳至步骤120,
步骤120 该单元判断List_I是否为空,若为空则跳至步骤121,否则跳至步骤130, 步骤121 该单元判断另一类红外帧对应的List_R是否为空,若为空则跳至122,否则跳至步骤130,
步骤122 该单元判断该类红外帧对应的List_R是否为空,若为空则跳至步骤140,否则跳至步骤130,
步骤130 取出上一步骤的链表的链表首结点,并插入至该类红外帧对应的List_B链表尾,然后跳至步骤150,
步骤140 退出调度,返回调度失败信息, 步骤150 调度成功,将调度信息返回申请者。写缓存操作的申请者在完成写缓存操作之后,告知调度装置,调度装置会将该类帧缓存对应的List_B链表中唯一的链表结点取出,并插入到该类帧缓存对应的List_R链表尾。优选地,对调度装置初始单元、读缓存调度单元、写缓存调度单元均进行加锁保护。调度器回收单元的实现方案是基于以下方法
读缓存操作和写缓存操作在调用该单元时,会传递给该单元不同的标识字,比如读缓存操作传递的标识字为1,而写缓存操作传递的是2。对于写缓存操作的调用情况,该单元将该类帧缓存对应的List_B链表中唯一的链表结点取出,并插入到该类红外帧对应的List_R链表尾。对于读缓存操作的调用情况,调用者除了传递标识字参数外,还需传递已读取缓存对应的链表结点给该单元,该单元再将链表结点依次插入List_I链表尾。
权利要求
1.一种红外实时成像系统的帧缓存调度装置,其特征在于,包括调度装置初始单元,用于为每个系统已分配的帧缓存分配一个对应的链表结点,以及根据帧缓存的状态分配五个管理缓存的链表,初始化操作包括初始化空闲状态对应的链表List_I、正在写入原始红外帧数据的状态对应的链表List_B、原始红外帧数据写入完成状态对应的链表List_R、正在写入处理后的红外帧数据的状态对应的链表List_B、处理后红外帧数据写入完成状态对应的链表List_R,并将所有链表结点均挂载到List_I链表上; 读缓存调度单元,用于为读操作分配可读缓存,将读操作缓存对应的链表结点信息返回给申请者;写缓存调度单元,用于为写操作分配缓存,将分配的缓存对应的链表结点信息返回申请者;调度装置回收单元,用于将已经读或写完毕的缓存对应的链表结点插入到正确的链表中。
2.一种使用权利要求1所述的调度装置的红外实时成像系统的帧缓存调度方法,其特征在于,包括如下步骤A 首先,系统在分配了缓存之后,调用调度装置初始单元,该单元为缓存初始化对应的调度装置单元,使该调度装置投入使用; 其中读缓存操作包括如下步骤IA 读进程调用所述调度装置的读缓存调度单元申请可读缓存,读缓存调度单元将可读的缓存信息返回给读进程,IB 读进程根据获得的缓存信息,从申请到的缓存内读取红外帧数据,IC 在完成读缓存操作后,读进程通过调用调度装置回收单元完成一次读缓存操作;写缓存操作包括如下步骤2A 写过程调用所述调度装置的写缓存调度单元申请可写缓存,写缓存调度单元将可写的缓存信息返回给写过程,2B 写过程根据获得的缓存信息,向申请到的缓存内写入红外帧数据,2C 在完成写缓存操作后,写过程通过调用调度装置回收单元完成一次写缓存操作。
3.根据权利要求2所述的红外实时成像系统的帧缓存调度方法,其特征在于,所述读缓存调度单元的读缓存调度包括如下步骤步骤200 执行读操作的过程调用该单元申请读η个缓存的某类红外帧数据,并进入步骤210,某类红外帧数据为原始红外帧数据和处理后的红外帧数据;步骤210 该单元查询该类红外帧对应的List_R是否为空,如不为空,则跳至220 ;否则跳至240,步骤220 当该类红外帧对应的List_R链表中包含m个链表结点,调度装置将该链表中的前min (m, η)个链表结点取出,并跳至步骤230,步骤230 调度成功,将步骤220中取出的min(m,n)个链表结点的信息返回给申请者, 步骤MO 调度失败,返回失败信息。
4.根据权利要求2所述的红外实时成像系统的帧缓存调度方法,其特征在于,所述写缓存调度单元的写缓存调度包括如下步骤步骤100 当写操作向该单元申请缓存用于写入某类红外帧数据时,跳至步骤110,某类红外帧数据为原始红外帧数据和处理后的红外帧数据;步骤110 该单元判断该类红外帧缓存对应的List_B链表是否为空,若不为空则跳至步骤140,否则跳至步骤120,步骤120 该单元判断List_I链表是否为空,若为空则跳至步骤121,否则跳至步骤\130,步骤121 该单元判断另一类红外帧对应的表是否为空,若为空则跳至122, 否则跳至步骤130,步骤122 该单元判断该类红外帧对应的List_R是否为空,若为空则跳至步骤140,否则跳至步骤130,步骤130 取出上一步骤的链表的链表首结点,并插入至该类红外帧对应的List_B链表尾,然后跳至步骤150,步骤140 退出调度,返回调度失败信息, 步骤150 调度成功,将调度信息返回申请者。
5.根据权利要求3所述的红外实时成像系统的帧缓存调度方法,其特征在于,所述调度装置回收单元的处理包括如下步骤申请者在完成k个缓存读操作之后,将该k帧缓存对应的链表结点归还调度装置,调度装置再将k个链表结点依次插入List_I链表尾,其中0<k<=min(m,η)。
6.根据权利要求4所述的红外实时成像系统的帧缓存调度方法,其特征在于,所述调度装置回收单元的处理包括如下步骤申请者在完成写缓存操作之后,告知调度装置,调度装置将会将该类帧缓存对应的 List_B链表中唯一的链表结点取出,并插入到该类帧缓存对应的List_R链表尾。
7.根据权利要求2飞任一项所述的红外实时成像系统的帧缓存调度方法,其特征在于对调度装置初始单元、读缓存调度单元、写缓存调度单元均进行加锁保护。
全文摘要
本发明公开了一种红外实时成像系统的帧缓存调度装置及调度方法,装置包括调度装置初始单元,用于为缓存初始化对应的调度装置单元,使该调度装置投入使用;读缓存调度单元,用于为读操作分配可读缓存,将读操作缓存对应的链表结点信息返回给申请者;写缓存调度单元,用于为写操作分配缓存,将分配的缓存对应的链表结点信息返回申请者;调度装置回收单元,用于将已经读或写完毕的缓存对应的链表结点插入到正确的链表中。本发明能根据缓存的状态来管理缓存,当存在可写入红外帧数据的缓存时,新的帧缓存总是被写入。
文档编号G06F9/50GK102541660SQ20121000617
公开日2012年7月4日 申请日期2012年1月6日 优先权日2012年1月6日
发明者刘子骥, 劳常委, 杨书兵, 蒋亚东, 蔡贝贝, 郑兴 申请人:电子科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1