一种图像并行处理方法、装置和计算机存储介质与流程

文档序号:17149768发布日期:2019-03-19 23:19阅读:155来源:国知局
一种图像并行处理方法、装置和计算机存储介质与流程

本发明涉及图像处理技术领域,更具体地说,涉及一种图像并行处理方法、装置和计算机存储介质。



背景技术:

大部分移动终端、电子设备、以及各类强、弱电装备内部的控制单元都包含印刷电路板(printedcircuitboard,pcb)。随着这些控制单元集成的电子元器件越来越多,功能越来越复杂,pcb上内嵌的铜线电路不但越来越细,而且铜线间的距离也越来越小,因而pcb整体的线密度越来越高。由于pcb上的铜线是通过刻蚀工艺附着在底板上的,刻蚀工艺过程中可能产生与标准设计图(通常称作pcb模板)不一致的地方,从而形成各种各样的缺陷。典型的缺陷包括短路、断路、残铜、凸铜、缺口、孔破、孔塞、针孔等。这些缺陷必须加以识别以避免整个线路板报废。目前流行的方法是通过光学设备(如多个相机阵列)结合机器视觉算法加以甄别。

最近几年来,pcb缺陷光学检测已经从离线逐步转向在线的方式进行。在线检测要求整个光学检测设备的处理速度跟pcb产线上游的刻蚀pcb的速度相一致,即达到6-8s/板。

然而,由于pcb光学图像的尺寸通常在40000*40000像素左右,终端(例如电脑)在进行pcb缺陷光学检测时所需的时间过长。为了达到在线处理速度要求,现有技术通过增加处理终端的数量来提高单位时间内处理pcb的数量,但是这样所需增加的终端较多,导致成本过高。



技术实现要素:

针对上述现有技术中需要增加终端进行pcb缺陷光学检测,而导致成本过高的缺陷,本发明提供了一种图像并行处理方法、装置和计算机存储介质。

第一方面,本发明提供了一种图像并行处理方法,应用于pcb缺陷光学检测上,包括:

将pcb缺陷光学检测任务分解为多个图像处理任务,所述多个图像处理任务为连续的任务;

创建多个线程,并为每个图像处理任务配置至少一个线程;

对所述多个图像处理任务进行多线程并行处理。

第二方面,本发明提供了一种图像并行处理装置,包括:

分解模块,用于将pcb缺陷光学检测任务分解为多个图像处理任务,所述多个图像处理任务为连续的任务;

创建模块,用于创建多个线程,并为每个图像处理任务配置至少一个线程;

处理模块,用于对所述多个图像处理任务进行多线程并行处理。

第三方面,本发明提供了一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储装置中存储的计算机程序时实现如第一方面所述的图像并行处理方法。

第四方面,本发明提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的图像并行处理方法。

本发明具有以下有益效果:

本发明中将pcb缺陷光学检测任务分解为多个图像处理任务,并且通过多线程进行多个图像处理任务的并行处理,加快了终端处理pcb缺陷光学检测任务的速度,避免了增加大量的终端进行运算处理,有效节省了成本。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1为本发明实施例提供的一种图像并行处理方法的流程示意图;

图2为本发明实施例提供的一种图像并行处理方法的另一流程示意图;

图3为本发明实施例提供的10种缺陷的示意图;

图4为本发明实施例提供的一种图像并行处理装置的结构示意图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

在进行正常的pcb光学检测过程中,通常需要对采集得到的pcb图像进行预处理后,将pcb图像与模板图像进行对位识别得到pcb图像上的缺陷,整个pcb光学检测过程是一个连续的处理过程。通常,在终端上进行pcb光学检测的过程为处理完一个pcb图像后再进行下一个pcb图像的处理,由于pcb图像的尺寸通常在40000*40000像素左右,终端在进行一个pcb图像的缺陷光学检测时所需的时间通常较长,主要由pcb图像可能存在的缺陷的数量而定,其整体检测时间可能达到几秒到几百秒,在pcb图像存在的缺陷较多时,终端处理pcb图像的处理速度大大降低,远远无法跟得上pcb刻蚀的速度,造成pcb刻蚀和pcb检测无法完美衔接,影响了pcb后续的处理流程。为解决上述问题,现有技术中通常采用多台终端进行pcb图像的同步处理。由于在采集pcb图像时,通常由多个相机拍摄同一张pcb得到多张pcb图像,并在终端处进行拼接后形成一张完整的pcb图像,因此现有技术中增加多台终端,每台终端处理一个相机传输过来的pcb图像,最终在某台终端上进行图像片段的拼接,得到最终的结果。采用多台终端进行pcb图像的处理,不仅增加了成本,还需要由于需要对pcb图像片段进行拼接,必须考虑多台终端之间的任务同步问题,且在某个终端的处理进程出现问题时,难以保证缺陷检测任务能够不受影响而继续处理。另外,采用多台终端进行同步处理时,终端间的接线复杂,整体可靠性下降。有鉴于此,本发明中提供一种图像并行处理方法,对pcb图像处理过程进行任务拆解,并进行多任务并行处理,加快了pcb图像处理的速度,并且无需增加多台终端同时进行pcb图像处理,降低了成本。

如图1所示,图1为本发明实施例提供的一种图像并行处理方法的流程示意图。本发明实施例提供的一种图像并行处理方法,应用于pcb缺陷光学检测上,其包括:

s101、将pcb缺陷光学检测任务分解为多个图像处理任务,所述多个图像处理任务为连续的任务;

pcb缺陷光学检测任务实质上为一个连续的过程,其包括有pcb图像预处理,pcb图像对位、pcb图像缺陷识别等步骤,因此在本发明实施例中可以把pcb缺陷光学检测任务分解为多个连续的图像处理任务。

s102、创建多个线程,并为每个图像处理任务配置至少一个线程;

s103、对所述多个图像处理任务进行多线程并行处理。

在终端的处理能力足够的情况下,终端上的处理资源通常较多,而在进行单一的pcb缺陷光学检测任务时,往往不需要占用终端所有的处理资源。在此情况下,可以将终端上的处理资源进行分割,即创建多个线程,以使得终端可以同时并行处理多个任务。需要说明的是,由于本发明实施例中所述的图像处理任务为连续的,例如有a、b、c三个图像处理任务,终端在处理b图像处理任务时,必须依靠a图像处理任务完成后所获得的处理数据;同理,终端在处理c图像处理任务时,必须依靠b图像处理任务完成后所获得的处理数据。即针对同一个pcb图像,a、b、c三个图像处理任务无法同时进行处理,但是终端可以实现对不同的pcb图像,同时处理其对应的图像处理任务。例如,终端可以同时处理第一个pcb图像的c图像处理任务、第二个pcb图像的b图像处理任务和第三个pcb图像的a图像处理任务。可以理解的是,终端在刚开始处理pcb缺陷光学检测任务时,多个线程之间无法同步并行处理,当所有线程均开始进行处理后,终端上的线程开始真正意义上的并行处理。即如同流水线一般,在流水线的最末端开始了运作后,整条流水线均处于同步处理中,完成单个任务实质上所需的时间没有变化,而完成多个任务的总时间则减小了,任务处理的效率大大提高。

此外,在终端的处理资源较多的情况下,本发明实施例中还可以设置多组线程,每组线程中包括有多个线程,每组线程处理同一个pcb图像中不同的pcb图像片段,并在每组线程完成对应的pcb图像片段的处理后,将处理结果进行拼接,获得最终的pcb图像缺陷检测结果。

本发明实施例中将pcb缺陷光学检测任务分解为多个图像处理任务,并且通过多线程进行多个图像处理任务的并行处理,可以加快终端处理pcb缺陷光学检测任务的速度,避免了增加大量的终端进行运算处理,有效节省了成本。

可以参阅图2,图2为本发明实施例提供的一种图像并行处理方法的另一流程示意图。

s201、将pcb缺陷光学检测任务分解为多个图像处理任务,所述多个图像处理任务为连续的任务;

由于在进行每个图像处理任务的处理时,所依赖的数据都来自于上一个图像处理任务处理获得的数据,因此,为了保证所有的图像处理任务均可以较好地衔接上而不出现有线程处于空闲的状态。在本发明实施例中,可以对所述pcb缺陷光学检测任务进行预运算,并根据预运算结果将所述pcb缺陷光学检测任务分解为多个图像处理任务,所述多个图像处理任务之间单独运算的时间差不超过预设时间差。例如,在将pcb缺陷光学检测任务分解为a、b、c三个图像处理任务时,a图像处理任务所需的处理时间为2秒,b图像处理任务所需的处理时间为4秒,c图像处理任务所需的处理时间为2秒,则在线程c完成一个c图像处理任务后,线程b还需要2秒才能完成当前的b图像处理任务,即线程c需要等待2秒才可以获取得处理下一个c图像处理任务的数据,线程c在完成每个任务后均有2秒的空闲时间,延长了整个pcb缺陷光学检测任务的完成时间。在进行了预运算之后,可以大致获得完成每个pcb缺陷光学检测任务所需要的时间以及其中每个步骤的时间,根据预运算的结果,可以按照步骤完成的时间将其中的步骤进行拆解。例如将pcb缺陷光学检测任务分解为a、b、c、d四个图像处理任务,a、b、c、d四个图像处理任务的处理时间均为2秒,此时每个线程则可以进行同步并行处理工作,而不会处于空闲状态,缩短了整个pcb缺陷光学检测任务的完成时间。

具体地,在本发明实施例中可以将pcb缺陷光学检测任务分解为图像采集、图像预处理、图像对位、可疑窗口确定、局部缺陷对比检测和缺陷数据库处理这几个任务。其中,图像预处理具体为对图像进行插值化等处理,图像对位则是通过模板匹配算法将pcb图像和模板图像进行对位,得到最佳的对位变换。进行图像对位后,模板图像和pcb图像作差之后会得到很多白色区域(即不吻合的区域),每个白色区域都可以用一个长方形窗口框起来,这个窗口就是疑似缺陷窗口,该步骤即为可疑窗口确定。局部缺陷对比检测则为在得到可疑窗口之后,验证可疑窗口中是否包含10种可能缺陷之一或10中可能缺陷的任意组合,以检测pcb上各处对应的缺陷类型。如图3所示,图3为本发明实施例提供的10种缺陷的示意图。其中,10种缺陷分别为1、贴装缺陷;2、过孔;3、破孔;4、短路;5、开路;6、残铜;7、线孔;8、少铜;9、毛刺;10、缺口。在一个pcb上,其可疑窗口可达几百到几千个,每个窗口必须对所有10种缺陷类型进行筛选;除此之外每个窗口还需对10种缺陷类型的局部组合类型进行筛选。每个可疑窗口的筛选过程大概需要几十到几百毫秒,光整个局部缺陷对比检测就有可能达几秒到几百秒。因此,在本发明实施例中还可以配置多个线程来进行局部缺陷对比检测,以使得局部缺陷对比检测这一任务的处理时间可疑控制于6-8秒内。缺陷数据库处理为将每块pcb上的缺陷数据、缺陷类型、缺陷位置以及局部图像都保存在数据库中,并以pcb板的板号作为索引。

s202、根据所述多个图像处理任务建立多个数据排序缓冲区,每个图像处理任务对应一个数据排序缓冲区;

其中,每个图像处理任务运算完毕后获得的数据存储于对应的数据排序缓冲区中,以使得下一个图像处理任务从所述数据排序缓冲区中按数据的队列顺序读取数据进行处理。可以理解的是,在采用多个线程对多个图像处理任务进行处理时,由于每个pcb上的缺陷数量不一样,不同的pcb所对应的每个图像处理任务所耗费的时间并不是恒定的(即存在波动情况),且每个图像处理任务所耗费的时间也不一定完全相等,一旦出现前一个任务所耗费的时间长于后一个任务所耗费的时间则容易导致有线程存在空闲的状态,影响整体的处理效率。通过设置数据排序缓冲区,可以将每个图像处理任务完成后所获得的数据存储于数据排序缓冲区中,通过利用数据排序缓冲区进行数据的缓冲保存,可以在前一个任务的处理时间小于后一个任务的处理时间时,将前一个任务处理得到的数据存储于数据排序缓冲区中,可以避免在处理不同的pcb时,由于pcb上的缺陷数量不一样而容易导致图像处理任务的处理时间发生波动而使得某些线程处于空闲状态。

s203、创建多个线程,并为每个图像处理任务配置至少一个线程;

需要说明的是,针对局部缺陷对比检测等耗时较长的任务,可以配置多个线程同时进行缺陷比对检测,以降低整个任务所耗费的时间。

s204、对所述多个图像处理任务进行多线程并行处理。

进一步地,在本发明实施例中,还可以将部分图像处理任务中的部分图像处理算法分配至图形处理器(graphicsprocessingunit,gpu)中进行运算,所述图像处理算法包括图像对位任务中的模板匹配算法和局部缺陷对比检测任务中的局部筛选算法(即验证可疑窗口中所包含的缺陷)。其中,gpu与cpu性能类似,只不过gpu是专为执行复杂的数学和几何计算而设计的,这些计算是图形渲染所必需的,因此对于较为复杂的图像处理算法,gpu处理的速度要更优于cpu。在本发明实施例中,将模板匹配算法和局部筛选算法这些较为耗时的图像处理算法从cpu中移至gpu中进行处理,可以大大降低整体的运算时间,提升效率。

进一步地,在本发明实施例中,还可以包括有:对所述多个图像处理任务进行for循环检测,并检测每个for循环中的循环次数;若所述for循环中的循环次数大于预置数值,则为所述for循环配置多个线程进行并行循环运算。由于在某些图像处理任务中可能存在循环次数达上百次甚至上千次的for循环,此类for循环若按顺序进行循环运算,则其运算速度较低,因此可以对循环次数较多的for进行并列循环运算,最后再将循环结果进行汇总得到最终结果。其中,预置数值可以根据终端的处理资源进行确定,在终端处理能力较强、处理资源较多的情况下,可以适当将预置数值调低,例如100;当终端处理能力较低时,可以适当将预置数值调高,例如调为500。

进一步地,在本发明实施例中,在检测到所述for循环中的循环次数大于预置数值之后还包括:

检测到所述for循环所对应的所有输入数据是以连续存储的方式合并于一块连续的cpu内存中时,将所述for循环所对应的所有输入数据拷贝到gpu显存中;调用gpu核函数运算所述for循环,并将运算结果从gpu显存中拷贝至所述cpu内存。可以理解的是,对for循环,除了可以采用cpu进行并行运算,还可以采用gpu进行并行运算。但是,为了确保gpu在运算for循环时,其运算速度足够快,可以先检测到所述for循环所对应的所有输入数据是以连续存储的方式合并于一块连续的cpu内存中,若for循环所对应的所有输入数据并非以连续存储的方式合并于一块连续的cpu内存中,则在cpu中运算该for循环。因为,若for循环所对应的所有输入数据并非以连续存储的方式合并于一块连续的cpu内存中,gpu在读取for循环数据时需要耗费大量的时间,读取数据的时间甚至可能超过运算for循环的时间,从而浪费大量的运算资源。

其中,所述将所述for循环所对应的所有输入数据拷贝到gpu显存中具体为:通过调用运算平台cuda的内存拷贝接口将所述for循环所对应的所有输入数据拷贝到gpu显存中;所述cuda的内存拷贝接口一次拷贝的数据量小于预置量值。由于输入数据需要先拷贝到gpu显存中,在gpu中运算完毕后再拷贝回cpu中,因此输入数据和输出数据不能太大,否则数据在gpu和cpu之间拷贝本身就会占用很多时间。在本发明实施例中可以预先检测待拷贝的数据,若数量大于预置量值,则在cpu中进行for循环运算,若数量小于预置量值,则调用运算平台cuda的内存拷贝接口将所述for循环所对应的所有输入数据拷贝到gpu显存中进行运算。

可以参阅图4,图4为本发明实施例提供的一种图像并行处理装置的结构示意图。本发明实施例提供的一种图像并行处理装置,包括:

分解模块401,用于将pcb缺陷光学检测任务分解为多个图像处理任务,所述多个图像处理任务为连续的任务;

创建模块402,用于创建多个线程,并为每个图像处理任务配置至少一个线程;

处理模块403,用于对所述多个图像处理任务进行多线程并行处理。

进一步,还包括:建立模块,用于根据所述多个图像处理任务建立多个数据排序缓冲区,每个图像处理任务对应一个数据排序缓冲区;

每个图像处理任务运算完毕后获得的数据存储于对应的数据排序缓冲区中,以使得下一个图像处理任务从所述数据排序缓冲区中按数据的队列顺序读取数据进行处理。

进一步地,还包括:预运算模块,用于对所述pcb缺陷光学检测任务进行预运算,并根据预运算结果将所述pcb缺陷光学检测任务分解为多个图像处理任务,所述多个图像处理任务之间单独运算的时间差不超过预设时间差;

所述多个图像处理任务包括图像采集、图像预处理、图像对位、可疑窗口确定、局部缺陷对比检测和缺陷数据库处理。

进一步地,还包括:分配模块模块,用于将部分图像处理任务中的部分图像处理算法分配至图形处理器gpu中进行运算,所述图像处理算法包括图像对位任务中的模板匹配算法和局部缺陷对比检测任务中的局部筛选算法。

进一步地,还包括:检测模块,用于对所述多个图像处理任务进行for循环检测,并检测每个for循环中的循环次数;

若所述for循环中的循环次数大于预置数值,则为所述for循环配置多个线程进行并行循环运算。

进一步地,,所述检测模块在检测到所述for循环中的循环次数大于预置数值之后还用于:

检测到所述for循环所对应的所有输入数据是以连续存储的方式合并于一块连续的cpu内存中时,将所述for循环所对应的所有输入数据拷贝到gpu显存中;

调用gpu核函数运算所述for循环,并将运算结果从gpu显存中拷贝至所述cpu内存。

所述将所述for循环所对应的所有输入数据拷贝到gpu显存中具体为:

通过调用运算平台cuda的内存拷贝接口将所述for循环所对应的所有输入数据拷贝到gpu显存中;

所述cuda的内存拷贝接口一次拷贝的数据量小于预置量值。

本发明实施例还提供了一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储装置中存储的计算机程序时实现上述的图像并行处理方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

上述计算机可读存储介质用于存储本发明实施例所提供的图像并行处理方法的程序(指令),其中执行该程序可以执行本发明实施例所提供的图像并行处理方法,具备执行方法相应有益效果。可参照上述方法实施例中的描述,此处不再进行赘述。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

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