适用于科学级相机图像高速传输的方法及存储介质

文档序号:34181665发布日期:2023-05-17 09:19阅读:35来源:国知局
适用于科学级相机图像高速传输的方法及存储介质

本发明涉及计算机技术和设备控制,具体涉及一种适用于科学级相机图像高速传输的方法。


背景技术:

1、科学级相机的图像传输过程涉及到大量的数据输入/输出,随着成像面尺寸的扩大、读出通道的增加、读出速度的上升以及读出帧率的增加,相机与控制系统之间的数据传输速度也在快速升高。例如,成像面4k x 4k的成像探测器,每个像素按16bit采样,的在以10fps工作时,传输速率就会达到2.5gbps,以25fps工作时,传输速率为6.4gbps。这些数据包通过光纤网卡传输到上位机时,如果不对传输过程进行恰当的设计、匹配传输速度,就会导致缓冲区占满,频繁发生丢包,进而导致无法收取完整的图像数据,使系统性能和可靠性受到损害。

2、不管使用何种通信栈(例如linux的内核网络栈,基于libusb的usb通信栈),高吞吐量、高传输速率下的io的过程都涉及到将数据从通信栈的私有内存空间拷贝到传输进程的内存空间的过程。例如,对于使用linux网络内核栈的网络传输过程来说,这一过程是从linux内核缓冲区拷贝到用户态内存空间;而由于数据量非常巨大,因此总是需要使用到堆内存(heap),而不可能将传输的数据存储在栈内存(stack)上,这就涉及到内存的动态分配与释放过程。长期以来,通用的内存分配与释放库是计算机体系结构的热点领域,例如通用的slab算法,tcmalloc库,都提高了通用环境下的内存分配与释放效率。

3、此外,科学级相机的图像传输必须考虑的一个问题是,科学级相机的图像依照传感器的不同,通常为了加快读出速度,将图像输出由多个读出通道并行读出:各个读出通道的像素数据因此会交织在一起;而各个读出通道在物理上通常对应于不同的传感器片区,这些片区实际上并不交织在一起,因此图像数据在传输到上位机后需要经历数据的重新格式化之后形成一个完整图像的过程(此过程我们定义为图像拼接),即将交织在一起的各个通道数据派发到对应的物理位置,形成按照先行后列依次排列的顺序,再进行存储落盘。此过程会消耗大量的计算力,频繁访问内存,进行大量的磁盘读写操作,因此较为费时;与之矛盾的是,图像的传输过程需要软件尽快将数据从内核缓冲区取出,避免堆积、耗尽缓冲区导致丢包,因而传输任务首先需要保证响应速度。这两个需求之间存在矛盾。

4、考虑到科学级相机的图像传输过程中数据包通常尺寸固定,总的内存消耗往往可以根据图像传输速率预先得知,因此可以根据图像数据包信息的特点,设计专用的传输过程框架,配套对应的内存管理机制,提高传输与内存管理效率。


技术实现思路

1、本发明提出的一种适用于科学级相机图像高速传输的方法,可至少解决上述技术问题之一。

2、为实现上述目的,本发明采用了以下技术方案:

3、一种适用于科学级相机图像高速传输的方法,包括三个方面的内容:

4、异步编程方案,信息传输方案和图像缓存方案;

5、异步编程方案的意义在于为了保证传输任务与数据处理任务的执行效率,将此二者分别使用不同的线程实现,从而避免图像处理任务影响到传输任务的实时性,而这种使用不同线程支持不同行为的异步编程范式需要对应的技术方案支撑;

6、信息传输方案的意义在于应对不同线程之间传递的数据量大(通常多达数百兆字节)、对这些数据进行复制会产生较高的开销的问题,通过轮转、预缓冲的方式,实现了更高效率的内存管理;

7、最后,图像缓存方案提供了将数据在磁盘上暂存的标准,方便分块、按位置访问图像的内容;该发明对于科学级相机控制软件中经常需要使用多线程并发、线程间需要大量数据交换的场合其适用性尤为突出。

8、为了支持上述设计,开发了一套配套的软件包。在此软件包中,将用于存放图像数据包的内存的首地址、数据包的元信息、一个互斥量以及一组控制标识统一起来,形成一个结构体,称之为令牌。在64位系统上令牌的大小是64字节,对令牌进行拷贝的过程的开销可以忽略。每个令牌与一片预先分配好的、大小与数据包大小的整数倍一致的堆内存关联。这些堆内存在软件初始化时通过申请内存malloc调用预先完成分配,并通过禁止页交换mlock系统调用禁止对这部分内存进行页交换。自此开始,框架全权操控这部分堆内存的管理。

9、本发明将这段内存按照数据包大小分为若干段,分别记录其首地址,使用分布在系统堆内存上的令牌与之相对应。同时,使用区别于一般的申请内存malloc调用和free调用来申请与释放内存的模式,采用了两个队列管理这些令牌,这两个队列分别成为处理队列与回收队列。传输线程在调用从缓冲区读的系统调用时,优先从回收队列中取出令牌并将数据写入对应缓冲区,一旦完成缓冲,将令牌压入处理队列(等于释放这片内存);处理线程在处理队列中有令牌时从其中取出令牌,并将数据依次处理,最后将令牌压入回收队列。在整个传输过程中,只有令牌的内容被复制,而实际存储图像数据的内存空间从未被复制,因此节省了时间。

10、为了避免回收队列中没有令牌可用而影响到传输线程的响应速度,会在开始曝光前根据经验值进行预缓冲,将一部分令牌先压入回收队列。通过上述方案,即可在避免在传输过程中使用操作系统的内存分配与释放调用,因而避免了上述过程带来的执行时间上的不确定性。

11、传输任务根据数据包的头部信息计算传输流程的执行状态,由于头部信息非常短,因此计算过程通常不复杂,进行这些简单计算的时间消耗对传输流程的响应时间消耗可以忽略不计。令牌中的标志位信息可以帮助传输任务向处理任务发送一些特殊信息,例如停止处理流程等消息。

12、由上述技术方案可知,本发明的适用于科学级相机图像高速传输的方法在于传输过程和数据处理过程的解耦。传输流程必须尽快处理,以避免缓冲区溢出;而处理过程则需要完成对数据流分拣处理,因此比较耗时;使用异步方式将此两者分离,则可以避免处理流程阻塞传输过程。此外,通过预缓冲的方式,避免了传输过程中在传输线程内执行耗时不稳定的内存空间申请操作,对系统的可预测性有显著提高。利用共享内存的方式在异步任务中传输信息,避免了拷贝,因此提高了效率。此外,利用令牌封装使得结构清晰,且允许传输任务与处理任务相互传输重要的控制信息。

13、本发明的适用于科学级相机图像高速传输的方法,针对科学级相机的图像传输过程的流量特点,结合具体的使用场景,设计专用的传输机制,从而降低分配、释放内存的开销对传输过程带来的影响。



技术特征:

1.一种适用于科学级相机图像高速传输的方法,其特征在于,包括以下步骤,

2.根据权利要求1所述的适用于科学级相机图像高速传输的方法,其特征在于:还包括将用于存放图像数据包的内存的首地址、数据包的元信息、一个互斥量以及一组控制标识统一起来,形成一个结构体,称之为令牌;

3.根据权利要求2所述的适用于科学级相机图像高速传输的方法,其特征在于:还包括为了避免回收队列中没有令牌可用而影响到传输线程的响应速度,会在开始曝光前根据经验值进行预缓冲,将一部分令牌先压入回收队列。

4.根据权利要求3所述的适用于科学级相机图像高速传输的方法,其特征在于:所述令牌中的标志位信息帮助传输任务向处理任务发送一些设定的特殊信息。

5.根据权利要求3所述的适用于科学级相机图像高速传输的方法,其特征在于:还包括以下步骤,

6.根据权利要求5所述的适用于科学级相机图像高速传输的方法,其特征在于:步骤s4中pdump缓冲区的结构约定如下:首先根据数据包的逻辑位置信息将数据包根据读出通道分离,每个通道的数据在磁盘上处于相邻的空间中,先行后列按序存储。

7.根据权利要求5所述的适用于科学级相机图像高速传输的方法,其特征在于:步骤s5中tt可通过将令牌c的同步缓冲区控制位c.flush置为1要求tp立即同步缓冲区。

8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。


技术总结
本发明的一种适用于科学级相机图像高速传输的方法及存储介质,其方法包括以下步骤,通过异步编程使信息传输任务与数据处理任务分别进行;通过轮转、预缓冲的方式进行信息传输;将数据在磁盘上暂存,方便分块、按位置访问图像。本发明在于传输过程和数据处理过程的解耦,传输流程必须尽快处理,以避免缓冲区溢出;使用异步方式将此两者分离,则可以避免处理流程阻塞传输过程。通过预缓冲的方式,避免了传输过程中在传输线程内执行耗时不稳定的内存空间申请操作,对系统的可预测性有显著提高。利用共享内存的方式在异步任务中传输信息,避免了拷贝,提高了效率。利用令牌封装使得结构清晰,且允许传输任务与处理任务相互传输重要的控制信息。

技术研发人员:王坚,王之越,耿哲,郑圳昊,张鸿飞
受保护的技术使用者:中国科学技术大学
技术研发日:
技术公布日:2024/1/12
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1