并行图像处理方法及系统
技术领域
本发明提供了一种并行图像处理方法及系统,特别是一种能利用计算机空余资源的并行图像处理方法及系统。
背景技术
在图像处理过程中,一般会对采集到的原始图像数据进行若干处理,以消除噪声,提高对比度,或者提取关键信号,以满足不同行业的具体应用。每个处理过程可以称为一个算法,一般均是多个算法顺序执行,产生最终供显示的图像。
假定算法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时刻采集的图像数据传送至待机的第n个处理线程;
处理线程按算法的排列顺序依次调用算法对第n时刻采集的图像数据进行处理;
若第一时刻采集的图像处理完毕,则停止采集图像数据,并将图像进行显示;
任意两个时刻之间的时间长度均小于每一处理线程的处理时间总长,n为≥1的整数。
作为本发明一实施例的进一步改进,所述算法包括时间相关算法及非时间相关算法。
作为本发明一实施例的进一步改进,若算法为非时间相关算法,所述“处理线程按算法的排列顺序依次调用算法对第n时刻采集的图像数据进行处理”包括:处理线程直接执行该处理算法。
作为本发明一实施例的进一步改进,若算法为时间相关算法,所述“处理线程按算法的排列顺序依次调用算法对第n时刻采集的图像数据进行处理”包括:
执行完该时间相关算法时,查看第n-1个处理线程中该时间相关算法的执行情况;
若第n-1个处理线程中该时间相关算法还没执行完,则阻塞当前线程,直至第n-1个处理线程的该时间相关算法已经执行完,第n个处理线程中该时间相关算法即执行完毕。
作为本发明一实施例的进一步改进,所述第一时刻、第二时刻至第n时刻相邻时刻之间间隔的时间长度一致。
为实现上述目的,本发明提供了一种并行图像处理系统,包括:
图像采集模块,用以在不同时刻采集图像;
任务调度模块,用以传送采集图像;
处理线程模块,包括n个处理线程,用以接收采集图像,并对采集图像进行处理;
算法模块,用以被所述处理线程模块调用并对采集图像进行处理,所述处理线程模块包括至少一个图像处理算法模块;
显示模块,用以显示最终图像。
作为本发明一实施例的进一步改进,所述并行图像处理系统还包括:时间同步器,用以对线程中的算法模块的处理时间进行控制。
本发明的有益效果:本发明可以在不改变具体算法内部执行逻辑的情况下,充分利用计算机的多线程空闲资源,简单稳定。并且可容许一个线程内所有算法总花费时间为数据采集时间的N倍,这样即可在处理链上增加更多的处理算法,或者使用更耗时但效果更好的算法,而无需担心系统的显示帧频降低。
附图说明
图1为本发明并行图像处理方法的流程图;
图2为本发明并行图像处理方法一种实施情况下的示意图;
图3为本发明并行图像处理方法另一种实施情况下的示意图。
具体实施方式
以下将结合附图所示的各实施例对本发明进行详细描述。但这些实施例并不限制本发明,本领域的普通技术人员根据这些实施例所做出的结构或功能上的变换均包含在本发明的保护范围内。
如图1至图3所示,本发明提供了一种并行图像处理方法,具体的,包括:
于第一时刻采集图像数据;
调度第一时刻采集的图像数据传送至待机的第一个处理线程;
处理线程按算法的排列顺序依次调用算法对第一时刻采集的图像数据进行处理;
在第二时刻判断第一时刻采集的图像数据是否处理完毕;
若未处理完毕,则继续采集图像数据;
调度第二时刻采集的图像数据传送至待机的第二个处理线程;
处理线程按算法的排列顺序依次调用算法对第二时刻采集的图像数据进行处理;
在第n时刻判断第一时刻采集的图像数据是否处理完毕;
若第一时刻采集的图像未处理完毕,则继续采集图像数据;
调度第n时刻采集的图像数据传送至待机的第n个处理线程;
处理线程按算法的排列顺序依次调用算法对第n时刻采集的图像数据进行处理;
若第一时刻采集的图像处理完毕,则停止采集图像数据,并将图像进行显示;
若第一时刻采集的图像还未处理完毕,则继续采集图像数据,并对图像继续进行处理;
其中,任意两个时刻之间的时间长度均小于每一处理线程的处理时间总长,n为≥1的整数。
并且,上述所述第一时刻、第二时刻至第n时刻相邻时刻之间间隔的时间长度一致,即图像采集的频率稳定。且每一线程中所采取的算法的种类和顺序均完全相同。
所述算法包括时间相关算法及非时间相关算法。若算法为非时间相关算法,所述“处理线程按算法的排列顺序依次调用算法对第n时刻采集的图像数据进行处理”包括:处理线程直接执行该处理算法。若算法为时间相关算法,所述“处理线程按算法的排列顺序依次调用算法对第n时刻采集的图像数据进行处理”包括:执行完该时间相关算法时,查看第n-1个处理线程中该时间相关算法的执行情况;若第n-1个处理线程中该时间相关算法还没执行完,则阻塞当前线程,直至第n-1个处理线程的该时间相关算法已经执行完,第n个处理线程中该时间相关算法即执行完毕。
即,当处理线程执行完某个时间相关算法时,需要监控上一个处理线程中该时间相关算法的执行情况,若还未执行结束,则等待至上一个处理线程中该时间相关算法执行完毕后,才算执行完毕。从而,可确保图像的处理顺序和显示顺序,防止后采集的图像在先显示的情况发生。
本发明还提供了一种并行图像处理系统,包括:
图像采集模块,用以在不同时刻采集图像;
任务调度模块,用以传送采集图像;
处理线程模块,包括n个处理线程,用以接收采集图像,并对采集图像进行处理;
算法模块,用以被所述处理线程模块调用并对采集图像进行处理,所述处理线程模块包括至少一个图像处理算法模块;
显示模块,用以显示最终图像。
并且,当所采用的算法为时间相关算法时,所述并行图像处理系统还包括:时间同步器,用以对线程中的算法模块的处理时间进行控制。
具体的,如图2至图3所示,首先,为了方便叙述,将采集图像的时间点定为t1,t2,t3,t4……,其中t1早于t2,依次类推,并且采集图像的时间间隔相等且均为T,从而采集的频帧为1/T。再将算法A的耗时记为为TA,算法B的耗时记为TB,算法C的耗时记为TC。
具体的,如图2所示,若所采用的算法为非时间相关性算法,所述并行图像处理方法包括:
在t1时刻,将采集的图像分配给线程1执行;
在t2时刻,将采集的图像分配给线程2执行;
在t3时刻,将采集的图像分配给线程3执行;
在t4时刻,由于线程1中的图像处理已经完成,则线程1空闲,从而将采集到的图像重新分配给线程1执行。
在t1至t3时间段,不同算法按照顺序在不同的线程上并行运行。甚至同一算法也可以同时在不同的线程上运行,如图2中线程1的算法B还未执行完,线程2的算法B已经开始执行了。
在t4时刻,由于线程1已经完成工作,所以任务调度模块将采集的图像分配给线程1执行。
此过程依次重复。
从而,即使算法A、算法B、算法C的时间即TA+TB+TC>T(T=t2-t1),但是由于多个线程的参与,如本实施例中有3个线程,那么平均下来单位时间内的图像显示速度还是1/T。仅仅是图像显示的延时变为了TA+TB+TC。从而在不影响显示频帧的基础上,既可以利用计算机的空余资源,又可以采用需要时间更长的更难的算法模块。
但是由于计算机的线程调度并非严格和时间先后相关,很可能发生线程2执行的比线程1快的现象,因此,若采用的算法为时间相关算法,本发明通过时间同步器来解决这个问题。
具体的,如图3所示,以算法C为例,若算法C标记为“时间相关”的算法,当线程2的算法C执行时,它需要线程1的算法C提供输出图像,那么由“时间同步器”来确保就算线程1的算法C由于某种原因没有计算完,线程2的算法C也会等待直到线程1的算法C完成,然后使用将此结果应用到自己的算法逻辑中,完成线程2的算法C的输出。
类似的,图像显示也必须严格按照时间先后进行显示,在图3中,线程2的图像由“时间同步器”确保它会在线程1的图像显示后才显示。
综上,本发明可以在不改变具体算法内部执行逻辑的情况下,充分利用计算机的多线程空闲资源,简单稳定。并且可容许一个线程内所有算法总花费时间为数据采集时间的N倍(N为设定的并行计算线程数),这样即可在处理线程上增加更多的处理算法,或者使用更耗时但效果更好的算法,而无需担心系统的显示帧频降低。
以上实施方式仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施方式对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施方式技术方案的精神和范围。