一种并行图像处理方法及系统与流程

文档序号:14121449阅读:1620来源:国知局
一种并行图像处理方法及系统与流程

本发明提供了一种并行图像处理方法及系统。



背景技术:

在图像处理过程中,一般会对采集到的原始图像数据进行若干处理,以消除噪声,提高对比度,或者提取关键信号,以满足不同行业的具体应用。每个处理过程可以称为一个算法,一般均是多个算法顺序执行,产生最终供显示的图像。

假定算法a的耗时为ta,算法b的耗时为tb,算法c的耗时为tc,采集的时间点为t1,t2,t3等,平均采集一副图像的时间间隔为t,则系统的采集帧频为1/t。那么如果要按照图像采集的速度显示最终图像,则要求图像处理的总耗时ta+tb+tc≤t。也就是说,“显示帧频”不能低于“采集帧频”,否则就会产生丢帧现象。为了达到这个目的,就需要对具体的算法进行优化,以确保所有算法的处理时间之和不能超出数据采集间隔。

另一个显而易见的要求为:图像必须按照采集时的时间顺序显示,比如t1时刻的图像必须比t2时刻的图像显示的早,否则图像显示不符合客观逻辑。

现有技术中,对于某个算法,会在算法内部对图像进行分块,每个小块交由一个处理线程或者gpu进行计算,加快处理速度。或者更简单的就是将图像逐行或者逐列分配给不同的处理线程或者gpu,任务调度模块等待所有行或者列处理完成后继续下个算法。

假设对于算法b进行了优化,使用3个线程并行计算,则理论上总耗时降低为ta+tb/3+tc。但是,不是所有的算法内部都能并行执行,这些算法在运行时只能使用一个cpu核心,用遍历的方式处理所有像素点。并且有些算法每个像素点是需要和像素点周围若干像素点进行平均,分块并行计算时边界处容易形成不连续的分界线。为了解决不连续现象,分块的图像就需要若干宽度或者高度的重叠,意思就是边界处重复计算,然后在合并时丢弃掉重叠部分,以消除或者减少分界线现象,随之带来的是计算资源的扩大和最终合成时的复杂。



技术实现要素:

本发明针对现有技术存在的问题,其目的之一在于提供一种并行图像处理方法及系统。

为实现上述目的,本发明一实施例提供了一种并行图像处理方法,包括:于某时刻采集图像数据;调度该图像数据给待机的处理线程;处理线程按顺序依次调用算法对图像数据进行处理并显示;在下一时刻采集图像数据;调度该图像数据给下一个待机的处理线程;处理线程按照顺序依次调用算法对图像数据进行处理并显示;循环上述步骤直至第一个处理线程的算法执行完毕并对最终图像进行显示。

作为本发明一实施例的进一步改进,所述算法包括时间相关算法及非时间相关算法。

作为本发明一实施例的进一步改进,若算法为非时间相关算法,所述“处理线程按顺序依次调用算法对图像数据进行处理并显示”包括:处理线程直接执行该处理算法。

作为本发明一实施例的进一步改进,若算法为时间相关算法,所述“处理线程按顺序依次调用算法对图像数据进行处理并显示”包括:开始执行该算法时,查看前个线程的该算法的执行情况,若前个线程的算法还没执行完,则阻塞当前线程;直至前个线程的该算法已经执行完,再将前个线程的算法的处理结果和当前线程的图像都输入当前算法,再在当前线程执行该算法。

为实现上述目的,本发明一实施例提供了一种并行图像处理系统,包括:图像采集模块,用以采集图像;任务调度模块,用以传递采集图像;处理线程模块,包括多个处理线程,用以接收采集图像,并对采集图像进行处理;图像处理算法模块,被所述处理线程模块调用并对采集图像进行处理,并包括有至少一个图像处理算法模块;显示模块,用以显示最终图像;时间同步器,用以对线程中的算法进行控制。

本发明的有益效果:本发明可以在不改变具体算法内部执行逻辑的情况下,充分利用计算机的多线程空闲资源,简单稳定。并且可容许一个线程内所有算法总花费时间为数据采集时间的n倍(n为设定的并行计算线程数),这样从理论上讲就可以在处理链上增加更多的处理算法,或者使用更耗时但效果更好的算法,而无需担心系统的显示帧频(dr)降低。

附图说明

图1为本发明的流程图;

图2为本发明一种状态下的流程图;

图3为本发明另一种状态下的流程图。

具体实施方式

以下将结合附图所示的各实施例对本发明进行详细描述。但这些实施例并不限制本发明,本领域的普通技术人员根据这些实施例所做出的结构或功能上的变换均包含在本发明的保护范围内。

如图1至图3所示,首先,为了方便叙述,将采集图像的时间点定为t1,t2,t3,t4……,其中t1早于t2,依次类推,并且采集图像的时间间隔相等且均为t,从而采集的频帧为1/t。再将算法a的耗时记为为ta,算法b的耗时记为tb,算法c的耗时记为tc。

所述并行图像处理方法包括:

于某时刻采集图像数据;

调度该图像数据给待机的处理线程;

处理线程按顺序依次调用算法对图像数据进行处理并显示;

在下一时刻采集图像数据;

调度该图像数据给下一个待机的处理线程;

处理线程按照顺序依次调用算法对图像数据进行处理并显示;

循环上述步骤直至第一个处理线程的算法执行完毕并对最终图像进行显示。

具体的,如图1所示,所述并行图像处理方法包括:

在t1时刻,将采集的图像分配给线程1执行。

在t2时刻,将采集的图像分配给线程2执行。

在t3时刻:将采集的图像分配给线程3执行。

在t1至t3时间段,不同算法按照顺序在不同的线程上并行运行。甚至同一算法也可以同时在不同的线程上运行,如上图线程1的算法b还未执行完,线程2的算法b已经开始执行了。

在t4时刻,由于线程1已经完成工作,所以任务调度模块将采集的图像分配给线程1执行。

此过程依次重复。

这样就算ta+tb+tc>t(t=t2-t1),但是由于多个线程的参与,如本实施例中有3个线程,那么平均下来单位时间内的图像显示速度dr还是1/t。仅仅是图像显示的延时变为了ta+tb+tc。

由于计算机的线程调度并非严格和时间先后相关,很可能发生线程2执行的比线程1快的现象,本发明通过时间同步器来解决这个问题。

具体的,如图2所示,以算法c为例,若算法c标记为“时间相关”的算法,当线程2的算法c执行时,它需要线程1的算法c提供输出图像,那么由“时间同步器”来确保就算线程1的算法c由于某种原因没有计算完,线程2的算法c也会等待直到线程1的算法c完成,然后使用将此结果应用到自己的算法逻辑中,完成线程2的算法c的输出。

类似的,图像显示也必须严格按照时间先后进行显示,在图2中,线程2的图像由“时间同步器2”确保它会在线程1的图像显示后才显示。

本申请的所述并行图像处理系统包括:

图像采集模块,用以采集图像;

任务调度模块,用以传递采集图像;

处理线程模块,包括多个处理线程,用以接收采集图像,并对采集图像进行处理;

图像处理算法模块,被所述处理线程模块调用并对采集图像进行处理,通常包括有多个图像处理算法模块,处理线程模块调用该图像处理算法模块时,即开始执行该图像处理算法模块的算法;

显示模块,用以显示最终图像;

时间同步器,用以对线程中的算法进行控制。

具体的,所述图像处理系统的工作步骤包括:

图像采集模块将某时刻采集到的数据传递给任务调度模块;

任务调度模块将数据传递给一个待执行的处理线程;

处理线程按设定的顺序调用每个图像处理算法模块对数据进行处理;

对于非“时间相关”的算法,处理线程直接执行该处理算法;

对于“时间相关”的算法,开始执行该算法时,时间同步器查看前个线程的该算法的执行情况,若前个线程的算法还没执行完,则阻塞当前线程;直至前个线程的该算法已经执行完,再将前个线程的算法的处理结果和当前线程的图像都输入当前算法,再在当前线程执行该算法;

所有算法执行完毕,调用显示模块显示图像。

本发明可以在不改变具体算法内部执行逻辑的情况下,充分利用计算机的多线程空闲资源,简单稳定。并且可容许一个线程内所有算法总花费时间为数据采集时间的n倍(n为设定的并行计算线程数),这样从理论上讲就可以在处理链上增加更多的处理算法,或者使用更耗时但效果更好的算法,而无需担心系统的显示帧频(dr)降低。

以上实施方式仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施方式技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1