具体实施方式
说明本发明的过程与设备之前,在此声明,为使问题更易理解,这里有时作出对于某些对象的检验或特殊应用领域的检验的参考。这些参考及附带的示例只用于帮助对本发明的理解,不应看作将这里所说明的概念局限为仅能用于这里所说明的类型的系统。实际上,如前所述,本发明可用于多种不同的领域,经常用于对象识别或检测。本发明能用于识别对象,如人脸;或检测对象,如晶片瑕疵。其它应用领域包括图像数据库索引、医疗图像分析以及用于监督或监控应用。
在下面的说明书中,对于具有特殊成像系统、成像系统组件、特殊照明系统、照明系统组件、以特定频率特性或温度工作的光的系统也作出参考。当然,本领域一般技术人员都会注意,此处说明的概念同样应用于带有任何类型的成像或照明系统(包括应用于很宽频带的照明系统)或组件,只要该系统或组件具有期望的操作与功能特征。对带有处于特殊拓扑结构中的光的照明系统也作出参考。本领域一般技术人员也会知道,本发明的原理可以用很多的光拓扑结构实现,而且,此处讲到的仅作为例子,并不作为限定。
这里有时也参考了对某些对象的检验,如印刷电路板和印刷电路板上的电路元件。此处讲的电路元件,或更简单讲元件,是指一个器件,例如安装或连接到印刷电路板(PCB)的集成电路。该对象也可以是印刷电路板的瑕疵。PCB可以是任何类型。
本领域一般技术人员可以看出,本发明原理有很多应用,包括印刷电路板和元件检验及任何其它类型对象的检验,但不仅限于此。例如,本发明可用于如下场合:某对象放置在另一对象之上,并可能与其接触或十分接近;某对象嵌入另一对象之内;或者需要在一幅图像中将前景对象从背景中鉴别出来。同样,此技术可用于任何类型的印刷电路板或电路板元件,而与其本身功能无关。
因此,本领域一般技术人员可以理解,此处描述的发生在“印刷电路板”和“元件”上的说明书和处理一样可以用于人脸、指纹、公司标识或任何其它图像。同样,下面讲述的处理器可能包含任何种类的硬件连线或程序控制的集成电路,用来执行特殊任务或功能。
现在参考图1,用于执行印刷电路板(PCB)检验的处理系统10包括一个存储了封装库14的数据库组件12,封装库14中包含关于某个对象的详细信息。例如,一个PCB检验系统中,封装库14包含关于集成电路形状、大小的详细信息,不包含任何关于如何将器件放置到PCB上的信息。数据库12还包括一个检验计划库16,该检验计划库与一个为特定PCB生成检验计划并将检验计划结果存入检验计划库16的检验计划发生器18连在一起。
一个连接到数据库12的图像处理系统20包括一个图像捕获系统22、一个图像处理器24和一个图像接口单元25。图像捕获系统22可以是例如一个或多个捕获待检对象图像的照相机或传感器。在一个优选实施例中,照相机对应于彩色照相机。图像捕获后,对数据进行处理,如Bayer颜色恢复、白平衡、增强对比度等。图像接口单元25可以是例如图形用户接口(GUI),用户可以通过它与图像处理系统20进行交互。
图像捕获系统22捕获的图像被传递给一个实时运行系统26。该实时运行系统26根据检验计划16,决定对于一特定的板类型,选择哪些器件要在一个照相机的视觉场中检验。它也会判断哪些器件需要在多个照相机的视场检验(例如,如果与照相机框架边交叉的器件或器件对于一个照相机框架过大)。
为检验一个特定的器件,实时运行系统26调用一个检验器模块28。该检验器模块28包括一个封闭检测器30、一个θ评估器32、一个学习与调试系统34,一个图像模型处理器36,一个结构模型处理器38,一个几何模型处理器40和一个定向标志检测器42。实时运行系统26可以调用“检验模式”、“学习模式”或“调试模式”中的检验器模块28。在学习与调试模式中,系统10会学习并保存关于器件形状的属性,并更新或增加相关图像、结构及几何模型。实时运行系统26能通过用户接口模块接收用户输入。例如,调试过程中,能通过该用户接口向系统用户询问问题。
当实时运行系统调用检验模式中的检验器模块28时,检验过程被初始化。下面结合图5详细介绍检验过程。检验过程中检验系统10使用了多个模块。一个实例中,检验模块28为完成检验,按特定顺序使用了图像模型36、结构模型38和几何模型40。因此,检验系统10使用了图像模型、结构模型和几何模型来检验对象。
这三种模型类型通过使用每种模型类型的优点的方式结合在一起。图像模型36首先被用于PCB上一个较大的关心区域,以判断这个较大的关心区域内是否存在与正被检验对象的图像模型内存储的图片十分相似的对象,以判断被检器件是否与图像模型“相象”。这种使用与传统的图像模型使用不同,传统方式中图像模型被用来判断被检对象是否在一个图像中存在。按照本发明使用图像模型能提供一种相对较快的鉴别相似对象的技术。图像模型中包含的属性可以为颜色、亮度等。应该注意,图像模型通常都是二进制亮度颜色像素的固定模式。这些像素与对象的图像视图通常是一一对应的。然而,图像模型也可以是经处理的图像特征(诸如梯度或纹理特征)的固定模式。图像模型也可以具有许多不同的分辨率。图像模型的缺点是裸板或焊剂板上的许多特征与对象的特征可能很相象。
图像模型36被应用于被检对象的图像后,使用结构模型38。特别地,结构模型38用来判断对象是否真正在关心区域内。如果图像模型指示它认为器件在某一个特定位置,结构模型就会检查这个指示的器件是否具有该器件应具有的所有结构特征。结构模型可以用于提供与对象位置更加接近的近似值。如果图像模型指示它认为ROI中不存在与其内部图像相似的器件,结构模型在整个区域查找看起来与图像模型不同但具有正确的结构元件的器件。
图像与结构匹配步骤的输出指出1)没有器件,或2)器件大致在位置<x,y>,估计旋转r度。如果器件存在,几何模型就可用来精确定位被检器件或对象。
最后,几何模型40用来精确定位被检器件或对象。几何模型在按照边缘与“最高级别”模型规格相匹配的原则同时充分地搜索对象所有的边缘。使用几何模型的前提是器件或对象已经在某个已知的特定位置,几何模型40确定器件或对象放置的具体细节。几何模型利用亮度、颜色等的明显梯度来精确定位被检器件或对象。应当理解,几何模型除了能使用明显的梯度外,也能使用其它特征。例如,它能为包含变形点、其它几何特征以及甚至图像特征的区域分析图像,比如一个明显的精确定位的标记。所以,检验系统10中多个模型的使用使得系统10提高速度、减少错误,并能做出比以前系统更高的测量分辨率。
图2-6B、15、17和17A是一系列流程图,显示了一个处理设备执行的处理,该设备可作为例如检验系统10(图1)的一部分来检验印刷电路板(PCB)。或者,处理步骤可以由一个图像处理系统实现,此系统只需要简单的匹配一个非PCB检验过程中的图像。矩形元素(图2中元素54表示)在此表示“处理模块”,代表计算机软件指令或指令集。菱形元素(图2中元素50表示)在此表示“决策模块”,代表计算机软件指令或指令集,该指令或指令集影响处理模块表示的计算机软件指令的执行。
或者,处理与决策模块表示由相同功能的电路(例如数字信号处理器(DSP)电路或特定用途集成电路(ASIC))所执行的步骤。流程图没有描述任何特定编程语言的语法。流程图说明了本领域一般技术人员制造电路或生成计算机软件以执行特定设备所需处理所必需的功能信息。应当注意,很多常规的程序元素没有在图中表示,例如循环和变量的初始化以及临时变量的使用。对于本领域一般技术人员可以理解,除非具体指出,此处说明的步骤的特定顺序仅用于说明,并且在不脱离本发明精神的前提下可以改变。
下面的流程图2-6B中的一些步骤是作为非板特定的(non-boardspecific)而描述的,亦即无需任何特定印刷电路板的信息就可以执行这些步骤。流程图中其它一些步骤是作为板特定(board specific)的而描述的,亦即执行这些步骤至少需要一些关于一个或多个特定印刷电路板(或特定类型的印刷电路板)的信息。尤其是当检验印刷电路板的过程中特定元素或执行的步骤被表述成非板特定的,就表示这些元素的应用与正被制造的板无关。非板特定信息的例子包括器件的大小、特定器件的快照、默认的结构模型与几何模型。板特定的信息主要用于训练步骤,在训练步骤中,模型学习关心区域内焊剂上器件的实例与具有涂覆了焊剂或裸露的焊盘的关心区域之间的区别。任何需要有关板上器件的情况信息的步骤都是板特定的。
现在参考图2,显示了PCB检验过程。在检验过程中,处理从步骤50开始执行,在此处判断封装库是否被组装。如果封装库被组装,则处理转到步骤52,在这里,为特定PCB生成检验计划。如果封装库未被组装,则处理转到步骤54,在这里,封装库被组装后再转到步骤52,为特定PCB生成检验计划。
标注封装库以它包含一个视觉类类型。在一个特定的PCB检验应用中,定义了11个视觉类类型。应该理解,有些应用需要多于11个视觉类类型,而另一些则需要少于11个视觉类类型。任何特定应用中使用的视觉类的特定数量要根据该应用的需要选择。被划分为一个特定视觉类的器件都有相同的结构。例如,所有带金属端盖的个体都在彩色主体的两侧具有两个金属端盖。因此,一个大小为60×30密耳的电容(称为封装类型CC0603)和一个大小为120×60密耳的电阻(称为封装类型RC1206)即使大小、功能都不同,也属于相同的视觉类。
器件库一般将器件描述为具有优质尺寸和功能值的一个特定的封装类型。器件号常用来表示一个有特定功能值的封装类型。在这些库中,没有表明器件外观或怎样通过视觉特征分组。而图像处理系统,例如图像处理系统20(图1),期望将器件按照结构或外观分组。所以,用视觉类的定义标注任一器件库是很有用的。
应该注意,如果一个库已经被组装了(即如果被检对象的数据已存储在数据库)或能从计算机数据库或其它存储设备读出,则组装步骤就不再需要了,这样处理是从标注库开始的。实际当中,库中没有器件存储是很少发生的,并且作出检查以判断库中是否存在板上所有器件的条目。
封装库中包含如下信息:(1)器件尺寸;(2)器件名称;(3)指定的器件编号;(4)厂商;(5)主体大小;(6)器件是否含引线;(7)引线的大小;(7A)引线的类型;(8)引线的斜度;(9)器件是否有定向标记;(10)定向标记应在器件的什么位置。在一实施例中,类的类型应该是11种视觉类之一:(1)带金属端盖的离散个体;(2)鸥翼状(gull wing)集成电路(IC);(3)J型引线集成电路;(4)钽电容;(5)扁平引线;(6)CAP;(7)离散阵列;(8)MELF;(9)SOT;(10)二极管,和(11)球栅阵列(BGA)。
应当理解,可以根据需要加入其它视觉类。而且在某些应用中也需要包含不是器件视觉类的类的类型。例如,期望在特定瑕疵周围生成一组视觉类,如墓板(tombstoning)或锚板(billboarding)(一侧接触板而另一侧在空中抬起的器件)、受损器件和受涂污焊剂。封装库优选地作为可以根据需要由检验系统的不同器件访问的数据库而提供。器件库组装/标注步骤是非板特定的。
在某些应用中也期望将快照放入库中。现在认为,快照与板是相互独立的。然而有些测试显示,亮板上的器件比暗板上的器件显得明亮。
如步骤52所述,组装封装库后,生成检验计划。检验计划是通过获取板特定的信息而生成的。板特定信息可以是计算机辅助设计(CAD)数据、挑选和放置(pick&place)数据或/和PCB布局数据(例如Gerber数据)等形式。检验计划描述PCB上每个元件的位置,说明器件类型和其应有的方位。检验计划也描述板上基准点和过孔的位置。检验计划还描述用来检验每个器件的模型。检验计划由每个元件类型的默认模型初始化。
基本检验计划一生成,处理就前进到步骤56,步骤56对应于一个板特定的学习过程,基本检验计划中的信息在此被增强。这个板特定的学习过程将计划中已知的器件信息,如几何信息,与它观察到的视觉特征关联在一起。下面将联系图3A,3B,4A,4B,14A和14B详细介绍该学习过程。所以,前面讲的步骤50-56对应于在执行检验步骤之前发生的建立和学习的过程。
生成检验计划并完成板特定的学习过程后,处理进行到步骤58,执行检验步骤。该检验步骤是板特定的步骤,在下面的介绍中联系图5,6A和6B进行了详细讲解。在步骤58,检验在一个测试数据集中执行。一般来讲,首次安装或训练时,我们只希望得到三个训练板。首先是裸板,第二个是焊剂板,第三个是放置板。对于板上每种器件类型,我们都希望训练模型使其能检测出什么时候器件存在或不存在。通常,板上的器件都有不止一个实例。我们可将这些实例分成两组,学习组与测试组。每组都应有标记为肯定(器件存在)和为否定(器件不存在)的示例。系统训练学习组的模型,并确保它们正常工作于测试集。(测试集与学习集不可能有共同元素)
在步骤58完成测试数据集的检验后,处理进行到步骤60,此处决定调试模式是否应初始化。该决策主要取决于步骤58中测试数据集检验的结果。特别是如果步骤58的结果表明模型对整个PCB所有元件都有良好的效果,那么步骤60就会决定直接转到步骤62,在步骤62判断是否还有其它板需要检验。另一方面,如果步骤58的结果显示模型对于一个或多个元件或者整个PCB得不到良好的效果,步骤60就会决定转到步骤64,实现另一个学习步骤。这个学习步骤会采用其它的训练数据以及新的假肯定与假否定,并修正模型。除了重新训练假肯定与假否定外,用户或系统还可以修改图像模型中的快照、调整器件尺寸使其与数据对应更好、增加特定类型的模型、改变模块调用顺序,以及改变判断器件存在与否的决策功能。
应该注意,用户可以在任何时间将系统设为调试模式。同时也应注意,调试模式主要用于纠正检验计划中任何模型的错误。如果决定进入调试模式,那么处理转到步骤64,66的调试学习过程。如果在背景模式中学会了一个元件的一种新模型,就应用它替换检验计划中的已有模型。否则,一个特定模型的学习步骤就会在一个不同的图像集上重复进行。然后处理转到更新检验计划步骤,在这里,用新的“经调试的”模型代替问题元件的模型。
对于接下来是否进入调试处理步骤的判断可以通过两个方法中的任何一个来考虑。一种方法,检验系统在检验特定器件时自己发现问题(或者说,检验系统自己识别特定模型的问题-例如,模型检验特定器件时输出不良结果)。这种情况下,自身作为调试学习过程一部分的检验系统可以向用户询问一系列问题,例如:(1)有问题的器件与这种类型的其它器件在形状上有很大不同,这是正常变化吗?以及(2)系统检验该器件有困难,系统损坏了吗?
调试和随后的学习过程得到对于系统认为是问题器件的器件的经修改的特定模型或模型集。生成新模型或模型集后,问题元件的检验计划会被更新。
第二种方法是,系统不知道正确检验器件中存在问题(即系统未意识到正使用的模型正在产生错误的检验结果)。例如,系统不知道它正在给出假肯定(即将坏器件标为好器件,或将一个空的位置标记为有器件存在)和假否定(即将好器件标为坏器件,或错误地指示器件不存在)。在这种情况,需要外部干预(例如,用户或系统外的其它事物必须知道系统识别一器件时存在问题)。一旦确定问题就通知系统,并指导系统修改模型,以减少假肯定与假否定的数量。系统执行调试模式过程、学习并更新检验计划来响应手动指令,以达到减少假肯定与假否定数量的目的。在调试与随后的学习过程中,例如用户也可能给系统提供导致假肯定和假否定结果的图像。
注意,调试过程可以在任何时间执行(例如,检验完单个元件或板后,或者检验完一百个元件或板后)。
处理随后进入决策步骤,判断是否还有板需要处理。
完成学习步骤64后,为问题元件或PCB更新检验计划。即,学习步骤64生成的新模型与导致不良检验结果的器件或PCB有关。因此,下次检验那个特定器件时,检验过程使用新的模型。注意,所有检验计划都是板特定的。
然后处理重新回到步骤62,决定检验其它的PCB。如果还有PCB待处理,过程转到步骤68,检验下一个板。
下一个板检验完,处理转到步骤70,执行可选背景模型建立过程步骤。因此,常规检验中,可以执行背景模型学习步骤。
执行背景模型学习的步骤与学习步骤相同。背景模型学习能处理许多板的数据,因此包括的数据量相对于步骤56初始学习过程中用到的数据量很大。
如上所述,如决定不进行调试,处理就直接转到判断是否有其它板需要处理的决策步骤。
所以,如果步骤62判断没有其它的板需要检验,则处理结束。但如果有其它待检验的板,就会进入一个循环,在循环中下一个待检验的板被确认并检验,并重复建立背景模型和调试的可选步骤。应当理解,在一些实施例中,优选地不总是执行背景模型学习或调试。应当注意,如果与计划关联的板被重建,器件计划能够被保存并在后面使用。
图3A,3B,4A和4B说明了一个学习过程的元素。模型可能需要在板的特定图像上训练。对一个器件类型,模型需要知道如下示例:(1)没有任何围绕且旋转至正确方位的器件的严格修剪的图像;(2)焊剂上的器件及其围绕(称为“放置”图像);(3)无器件的焊盘及围绕的示例(称为“焊剂”图像);(4)无器件的裸露焊盘及围绕的示例(称为“裸露”图像)。因此,一个特定的实施例最少需要四个示例图像来为一个器件训练模型。然而在一些应用中,例子的最少数量可以小于四个。例如,在一些应用中(如一些印刷电路板检验应用),裸板并不重要。优选地,上面的图像(2)-(4)从同一个参考标志选取(即从PCB上同一位置的相同器件选取),图像(1)从一个不同的参考标志选取(即从PCB上与例子(2)-(4)不同位置的相同器件选取)。图像(1)也可以用非板特定的技术(例如,它可以在没有板的情况下单独成像)单独获得。
学习怎样检验一个器件时会发生几种不同的变化,包括:器件颜色/亮度的可变性、器件大小变化、照明不一致、或多或少的金属氧化、不同类型的焊剂以及多种的裸板的特征。裸板的特征包括:同一板上的不同颜色、厚度与光洁度的变化、过孔、线路和丝印。对比同一参考标志的裸露、焊剂和放置图像,至少能在学习中排除板的变化。快照应取自不同的参考标志,甚至不同的板,这点很重要,因为这关系到图像模型怎样完成匹配。图像模型检查是否有与关心区域中保存的快照完全相同的器件。如果该快照与位置图像源自同一参考标志,它就会与器件很好地匹配(差异为0)。器件的形状在各实例间相差很大,我们试图在学习过程中将这种变化量化。与本身匹配的快照不能告诉系统器件形状变化的数量。
我们希望系统在必要时能自动修剪示例的快照。可供选择的办法是:使用户导入一幅包括器件的板的图像或一幅背景上器件的图像,用橡皮圈圈住器件,将器件拷贝并粘贴到一幅新图像,将修剪的图像旋转到适当方位并保存。当有许多器件时,这种用户干预的方法是很麻烦的。
图3A表示一个自动获得旋转到默认方位的元件的快照的过程。因此,图3A中的方法描述了怎样自动获得一个器件的修剪的图像。
参考图3A,处理从步骤72开始,在此处得到被检对象的一个“默认快照”。获得一个器件真实快照的最好方法是使用前面定义了的检验系统在一个关心区域内定位需要的器件。如果器件能被很好地定位,器件的图像就很容易被旋转到默认的方位并修剪。现在,图像模型和结构模型都需要一个快照来进行检验。为打断该问题的循环特性,我们可以用具有与期望元件有相同的几何形状且具有器件的几个关键的视觉特征的合成快照来引导系统。也可以用相似器件的快照。例如,假设我们需要一个编号为123-000-000的器件CC0805的快照,我们可以使用前面捕获的一个封装类型同为CC0805,但器件编号为123-000-001的快照。默认快照可能存储在数据库12或检验计划自身。
无论默认快照怎样获得,处理过程都转到步骤74,在此处,用快照来建立一个默认的图像模型和一个默认的结构模型。由于没有任何板特定的信息,步骤74生成的图像与结构模型被称为“默认”模型。
处理过程随后执行步骤76,生成或建立纯几何信息(例如封装库中的几何信息)的几何模型。所以,直接使用封装库中器件的信息就可以建立几何模型。
接下来,如步骤78所示,确定待测PCB上的一个关心区域(ROI)。这个ROI应该包含正被考虑的对象(如待检验电路元件等器件)。在步骤80,对ROI使用默认的图像模型和默认的结构模型,判断器件是否在此ROI内。处理过程随后执行步骤82,对器件是否在此ROI内做出结论。所以,图像与结构模型是用来判断器件是否在ROI内部的。
如果在决策模块82中判断器件不存在,处理过程就会跳回步骤78,在步骤78输入一个新的ROI,在步骤80时这个新的ROI提供给图像与结构模型使用。循环重复下去,直到图像和结构模型指出器件在某个ROI内或所有的ROI都被扫描过但器件并不存在,循环结束。
如果在决策模块82中判断器件存在,处理过程就会执行步骤78。在步骤84,结构模型向几何模型提供在ROI内PCB上器件的大概位置。结构模型的输出包括位于ROI内的器件的中心<dx,dy>(期望位置的δ方位)和对器件怎样旋转的大概估计。结构模型可能更进一步将<dx,dy>和θ转换到被认为是集合模型的器件的每条边的位置。
几何模型将(即找到)器件的边界和任何旋转角度(θ)定位到子像素量级(例如一个像素的几十分之一)的精确程度。
如步骤86所示,一旦知道了器件的具体边界和它的旋转角,它就能被旋转到默认方位。器件旋转等于旋转角负数(-θ)的一个角度,获得一个“额定角度”,额定角度是在器件库中定义的(即,器件库有一个零度旋转角的定义,这与特定印刷电路板上的事物相关)。例如,如果系统知道器件逆时针旋转1度而器件的默认方位在顺时针90度的位置,系统就能将器件图像顺时针旋转91度,将它转到正确的方位。
如步骤88所示,一旦找到并修剪了快照,参考标志就可能被随机选取来提供放置、焊剂和裸露的示例。
图3B讨论了如何训练快照和板特定示例上的模型,它与图2中步骤56对应。
现在参考图3B,它讲述了结构模型内图像的学习过程。处理过程从步骤90开始,在步骤90,结构与图像模型被导入并被用于修剪、焊剂、放置和裸露的示例ROI。应该注意到,在图3B的流程中,图像是随机选取的。然而,某些情况下需要选择最优的示例图像集用于学习过程。这种技术将在后面结合图4介绍。
处理过程随后执行步骤92,结构模型默认质量和数量的性质或属性被将结构模型用于图像所学习到的值代替。在一个实施例中,使用四种图像——亦即修剪、焊剂、放置和裸露的图像。然而,可以看出,本发明不必局限于这四种图像,因为这只是普通的学习流程。结构模型的属性可以在几个不同的层次修改。在高层次,结构模型可能只需记录它在焊剂与放置图像上执行的好坏程度。性能可以被存储为一个分数集合,集合中至少有一个焊剂图像分和一个放置图像分。
结构模型也可以在较低层次修改。我们可以指导结构模型改变它的数量与质量的关系,以最好的符合放置图像并能最好地将其自身与焊剂图像区分开。
处理过程接下来执行步骤94,图像模型的默认属性被将图像模型用于这四幅图像(修剪、焊剂、放置和裸露图像)所学习到的值替换。
与结构模型相似,图像模型也可以在不同层次修改。首先,快照与模型关联;接下来可以存储焊剂与放置图像上的图像模型分数。而且,图像模型内的其它属性也可以被修改,以最大限度的适应放置图像并尽可能使图像模型与放置模型不同。例如,可以获悉在(x1,y1)和(x2,y2)处的焊剂图像内,图像模型匹配很好。这表示裸板上存在与器件非常相象的特征。我们可以生成一种计分功能,如果图像模型已知的最好匹配位置在(x1,y1)和(x2,y2),那么每当用于一个新的区域,图像模型就会给出较低的置信度匹配分数。
处理过程随后执行步骤95,用将几何模型施加于那四种模型所学习到的值替换几何模型的默认属性。例如,几何模型可以通过放置图像和快照测量器件及其子器件的真实尺寸。默认几何模型内存储的尺寸是所有厂商该器件类型期望尺寸的平均值。几何模型也能知道器件和板边界之间梯度的强度以及子器件边界之间梯度的强度。如果图像是彩色的,几何模型也可以知道计算梯度的最佳颜色通道。
处理过程到这里就结束了。
应当理解,选择一个随机的裸露、焊剂、放置图像的集合来进行训练(如图3B所示)可能不是最优过程。理想情况下,系统应该浏览所有不同类型的板(例如裸露、焊剂、放置)、查看所有参考标志,从而选择性能最好的示例图像。
所以,现在参考图4A和4B,它显示了如果希望选择在上述结合图3B的学习过程中使用的最佳的修剪、焊剂、放置和裸露图像,应执行哪些步骤。
处理从步骤96开始,导入:(1)板类型(裸露、焊剂、放置);(2)检验计划。示例放置板一般是指“铜板”,因为在这种板上放置器件可能有错误或遗漏。
处理过程中,步骤98生成与每个器件类型相关的默认模型;在步骤100,对一个特定的器件类型,默认模型在一个参考标志上训练,并应用于其它每个与这种器件类型相关的参考标志。应该注意,印刷电路板上要放置元件的每个位置(或板的位置)都被分配一个唯一的参考标志。所以,在检验计划中,每个参考标志都表示印刷电路板上一个特定的且唯一的位置以及放在板上那个位置的一个特定器件。
在步骤102,对一个特定的参考标志,用特定器件类型的默认图像和结构模型先来检查器件是否在“铜”板内,并且不在该参考标志处的焊剂和放置板内。
处理随后前进到步骤104,一旦步骤102的结论集被确认,就用从示例参考标志导出的三个图像训练模型(注意,不一定要用全部三个图像训练,有些实施例中裸板是没有用的)。如步骤106所示,随后就可以用学习模型检验与“铜”放置板和焊剂、裸板上器件类型都相关的其它参考标志。
如步骤108所示,在某个特定参考标志上训练的模型可以按照它们区分真肯定示例(“器件存在”)和真否定示例(“器件不存在”)的好坏程度来划分等级。对每个用作训练范例的参考标志,可以评价它提供这种区分的有效性。如步骤110所示,能给出最佳区分的示例图像集应作为训练范例用于全部成品板检验。
如步骤112所示,一个训练图像集有可能不满足一个器件类型模型实现区分真肯定和真否定。举例来说,对一个器件类型,板上可能既有棕色实例又有白色实例。与其只能在棕色或白色范例间选择,倒不如训练两组模型,一组用于棕色器件,另一组用于白色器件。可以用一种计算图像和结构模型分数输出的简单集群算法来判断是否需要多于一个的参考标志。该集群算法可以算出需要多少个参考标志示例。
在步骤114为每个集群选择图像的参考标志集。为每个集群生成默认的图像与结构模型。随后,为每个<模型,参考标志>组合执行学习过程。
处理随后转到步骤116,将学习后的模型保存回检验计划。处理结束。
应当理解,图4A和4B介绍了一种只有一个三图像组合(例如,裸露、焊剂和放置图像)被用于训练的方案。其它的N-1个图像用于测试,判断或测量模型工作的好坏程度。然而,应当理解,在一些应用中可能有超过一个参考标志用于步骤104的训练,因此需要选择能给模型提供对测试集(即余下的集合)有最佳区分能力的一个或多个最优参考标志集。
例如,假设有两个参考标志,一个用来提供快照,另一个用于训练焊剂和放置图像内的模型。再比如,给定三个参考标志,第一个用于快照;其它两个用于训练。推广到一般情况,共有N个参考标志,其中M(M<N)个用于训练,余下N-M个用于测试。最后要提醒的是,这个处理过程能用于选择最佳快照和ROI的最佳训练集。
应当理解,前面的说明中没有区分选择快照和选择焊剂、放置和裸露训练图像。最不理想的情况下需要将每个参考标志作为快照的候选而检查。但实际上,这会浪费太多的时间。
生成每个器件类型的模型并用一组示例图像训练这些模型后,系统就准备检验板了。图5说明了利用多个模型的检验过程的步骤。
现在参考图5,处理从步骤118开始,首先捕获一幅应包含特定器件类型的板上的关心区域的图像。处理随后转到步骤120,获得与该器件类型相关的模型。
接下来,如步骤122所示,将图像模型用于捕获的图像。对任何一个模型,都期望将其用于所有可能旋转角处的所有可能的中心区域,以确定器件的中心和旋转角。很明显,这是穷举搜索方法,它能保证如果存在与图像模型中快照相似的器件,图像模型就能发现它。对于速度问题,图像模型能在搜索ROI时采样中心及可能的旋转角的集合。采样越多,执行越快。然而,随着采样数量的增多,模型找到器件的可能性就会减小。为了使速度和效率都能够最大化,采用一种近似的精简策略:首先粗略地采样;再在最有可能成为器件真实中心和旋转角的区域周围进行细致采样。这种方案可用于任何模型,不仅是图像模型。
处理过程随后就进入决策模块124,判断图像模型是否指出了器件存在。
如果图像模型认为器件存在,处理转到步骤126,用结构模型在图像模型找到器件的相对较小的区域周围搜索;如果图像模型不能确定器件是否存在,处理过程转到步骤128,结构模型用于执行ROI的全面搜索。当结构模型搜索整个ROI时,它可能采用近似来精简搜索方法。
接下来,在步骤130,基于结构模型的结论,最终确定器件是否存在。(注意,在判断器件是否存在时,结构模型可能使用图像模型分数作为决策功能的一部分)如果认为器件不存在,处理过程结束。
反之,如果认为器件存在,处理接下来执行步骤132,用几何模型精确定位器件,同时也给出有关器件的更具体的旋转角信息。然后处理结束。
图6A和6B说明了特定参考标志处的特定器件的检验过程的更加详尽的步骤。不应用这三个模型的步骤是一样的。还说明了确定图像和结构模型是否指示器件存在的决策过程。
在步骤134,模型为一个器件类型载入检验计划。随后,如步骤136所示,系统为一个特定的参考标志得到一幅该器件和其围绕的图像。这幅图像标记为“关心区域”或ROI。该ROI可以是从一个较大的已经获得的板的图像修剪得来,或者是几个照相机画面整合在一起。根据器件类型、大小、用户输入的位置公差、模型内任何的围绕区域的大小来判断ROI的大小。
第一个可选的步骤138用于检验该ROI是否有这样的特征:显露在裸露和放置板上但当存在器件时就会封闭。这些特征包括过孔、线路和通常隐藏于类似集成电路等大器件或球栅阵列等隐藏了连线的器件下面的焊盘(涂覆焊剂的或裸露的)。该步骤的一种应用是寻找某种期望尺寸的圆形的、矩形的或线性的特征。另一种应用是将当前ROI与学习过的焊剂板上相同的ROI进行对比。如果步骤140指出很可能存在封闭特征,处理过程就会结束,因为这表示器件不存在。
如果步骤140指出封闭特征的不存在,就假设图像中存在某物(例如正确的器件或其它事物)。处理过程就会执行第二个可选步骤142处理ROI,寻找主要的角度特征。一种实现方法是计算梯度方向并在图像内每个点处放大。根据角度特征,系统计算图像内对象的主要角度。如果器件不存在,板上线路和焊盘的背景会产生0、90、180或360度的主要角度。这是因为这些特征通常与照相机画面成一条直线或垂直。如果器件存在,它的特征就会影响这组主要角度。最主要的角度θ不是0、90、180或360度,它被记录下来在后面使用。这能给系统提供器件旋转程度的一个估计值,但不能给出器件位置。
下一步,如步骤144所示,图像模型应用于这个ROI图像。图像模型主要观察这个ROI是否包含一个与修剪的快照相似但与裸露或放置图像完全不同的图案。它使用学习数据来计算正确器件存在的可能性或置信度。图像模型搜索整个ROI。该图像模型应该与图像中多个位置处多个旋转角的快照匹配,以防止器件本身是从期望位置迁移过来的并旋转超过期望旋转角。为增加速度,图像模型可以不在ROI内的每个位置检查该器件。现在是由器件大小和类型决定图像模型对图像空间采样的粗略程度。另外,为增加速度,图像模型仅检查两个旋转角,期望旋转角和θ。粗略搜索后,图像模型可以在最可能成为该器件中心位置的周围进行一次精确搜索。图像模型为ROI内的该器件输出最佳位置<x1,y1>和假设的角度θ2。它也输出一个器件存在的概率φ。
随后,在步骤146,判断图像模型是否指示器件存在。这是根据一个第一阈值决定的,该阈值用φ表示。应该注意,虽然此处使用了一个相对简单的阈值,但有些情况下,使用一个相对复杂的函数提供阈值会比较有利。例如,一个比较复杂函数可以使用已经计算的概率φ、图像快照和器件候选位置的实际匹配分数、候选位置和图像不是焊剂的概率来决定器件是否真的存在。
如果图像模型确定器件存在并看起来很像它学习到的,处理过程就会流转到步骤148,用结构模型验证器件的存在。它试图通过搜索图像模型发现器件位置的周围一个相对较小的范围来增加定位的分辨率。这种情况下,它只在位置<x1,y1>和角θ2周围按诸如1或2个像素这样的小节距检查器件。
如果图像模型不确定器件存在,处理过程流转到步骤150,结构模型对ROI进行完全搜索。同样,为了提高速度,结构模型不在ROI内每个位置和旋转角处检查器件。当前,器件大小决定这个粗略的结构模型怎样对ROI采样。此外,为进一步提高速度,结构模型只检查两个可能的器件旋转角,期望旋转角和θ。
结构模型最终决定器件是否存在。如果在这两种情况下结构模型都判断该器件在这个ROI内,它返回最佳位置<x2,y2>和角θ3,如步骤152所示。这些信息被送到几何模型,然后几何模型定位器件到子像素精度并将θ的估计值精确化,如步骤156所示。几何模型返回标记“存在”、最后的中心位置<x3,y3>和角θ4,如步骤158所示。
如果结构模型判断器件不存在,系统终止并返回标记“不存在”。
图6A和6B的流程是速度优化的。前面比较裸板的特征和计算θ估计值的可选的步骤可以省略。在最彻底的模式中,图像和结构模型能在ROI内的每个可能位置搜索该器件。它们也可以在多个角度搜索器件。另外,它们也可以采用由粗略到精确的方式搜索位置和旋转角。
通过学习和调试是可以指定一个可替换的图像或结构模型的。如果真是这样,这两个都会在适当的时间被使用。如果任一个匹配,处理过程就会如图4所示的那样继续。
应该注意,图6A和6B中的决策函数可以建立在其它比“概率>φ?”更复杂的其它因素或表达式上。这里仅是一个示例。模型分数的混合组合也可用于决策函数,例如用在结构模型决策函数。
也应注意,虽然图6A和6B显示仅输出“存在”和“不存在”,但存在一个中间情况。在该情况,图像中存在事物,尽管不是正确的器件。这种情况下,在结构模型阶段,使用第二决策函数。如果器件存在的概率居中,系统会分支到另一个分析过程,执行诊断并输出结果,如“器件损坏”、“错误器件”、“涂污焊剂”、“器件墓板”等。
最后,工作目标集中到印刷电路板检验,但这种策略可以在图像处理领域中应用。同样的策略可用于人脸识别、人物识别以及图像数据库实例搜索。
现在参考图7A和7B,额定方向内显示的一个图像模型160、一个结构模型162和一个几何模型164在捕获的图像区域166、168进行训练。图像区域166、168对应一个PCB的一部分。图像区域166是一个所谓的“焊剂”图像,表示这个PCB在电路元件即将被安装的区域存在焊剂(如焊料)。因此,区域166没有显示电路元件。图像区域168是一个所谓的“放置”图像,表示在区域168内的一个特定位置应存在一个电路元件170。
预定的视觉类都有这三种类型的模型的每一个。前面联系图2列出了一个印刷电路板检验的实施例所使用的11种类类型。如上所述,可以使用少于或多于11种的类的类型,而且类的类型的特定数量和类的类型本身应按照特定应用的需要选择。
为确定视觉类的数量,我们要考虑表面安装的印刷电路板的所有典型的元件类型。我们主要收集器件基于元件的通用视觉特征,目标是生成跨越所有典型器件类型的最少的视觉类。对PCB元件来讲,我们发现元件的引线类型能表示元件的视觉特征。例如,带端盖的元件一般都是电阻或电容,这两种元件都有两个金属端盖和一个彩色主体。带鸥翼状引线的元件通常是集成电路,它们通常是黑色的、矩形的、金属引线从本身伸出,元件在Z轴弯曲,随后伸直。在任何情况下,甚至虽然整个封装和其子器件的大小都可以改变,但元件整体结构保持不变。这就是结构模型适合于表示这些类的原因。
将视觉刺激源聚集到视觉类的技术不是印刷电路板检验所独有的,它可用于大多数的计算机视觉应用程序,用来生成一组覆盖应用的视觉刺激源类的模型。例如,应用于面部识别领域。不同性别、年龄的人,在不同亮度条件下、不同表情的面容可以根据视觉相似性归结分组。举例来说,以前与面部图像处理相关的工作可以将脸的正面归结为六种视觉类。虽然这些视觉类对人来讲没有名称或语义含义,但这种分组确实对面部识别问题有很大帮助。当处理一幅新的图像时,如果可以将它转变为这些视觉聚类之一,那么就可以将它看作一张脸;如果将它归类为不属于这个聚类,它就不是一张脸。一种诊断置信度的衡量标准是这个新图像与某一个面部聚类相近的程度。
视觉类聚集普遍应用于其它场合,例如医疗成像(如使用传感器将肿瘤外形特征化并聚类)、军事应用(如将合成光圈雷达检测的对象的图像分类),甚至用于交通流监控(如将交通流的不同模式分类)。
在这个特殊例子中,模型160-164中的每个都属于被称为离散(DISCRETES)的视觉类的类型。这11个视觉类的类型的每一个都包括全面匹配方法的9个元素:(1)封闭特征;(2)θ估计器区域;(3)图像模型属性;(4)结构模型属性;(5)几何模型属性;(6)方位标志类型;(7)备用模型;(8)学习参数;(9)决策函数。
封闭属性表示可能在ROI中存在的封闭特征;θ估计器属性表示该θ估计器应被使用的区域;结构模型属性描述了组成模型的区域、区域属性和关系;几何模型属性描述了高梯度或边缘属性的组成;定向标志属性表示器件本身可能存在的标志类型。
备用模型属性表示可用作每个器件在此特定类的类型内可以替换的模型。例如,备用模型可能包括一幅器件被倒置时的图像模型。学习属性包括有关每个类的类型内的每个模型的哪些特征应该被学习并保存的信息。最后一个属性表示确定器件是否存在的决策函数。决策函数可以使用一个或多个模型类型的输出作为输入。
下面的表1表示的是一个印刷电路板应用中的离散视觉类的视觉类信息示例。
表1视觉类:离散
封闭 |
θ估计器 |
图像模型 |
结构模型 |
几何模型 |
定向标志 |
备用模型 |
学习记录 |
备注 |
焊盘 |
在整个ROI或误差边界矩形内应用 |
使用端盖电位加重的完全图像 |
3个主体区域2个焊剂区域2个背景区域 |
操作的多线顺序法:1)θ2)Dx Dy3)先修改θ符合端盖的外部边框;使用主体边框验证结果;修改原始规格的尺寸,尽可能适合器件。 |
多数情况下没有定向标志;少数情况下定向标志是一个条纹。 |
翻转器件应该存在模型 |
几何模型说明真实主体大小及端盖。保存所有结构模型的所有参数,包括:-端盖和焊剂之间决定率。-主体和背景。 |
结构模型最终判断存在/不存在 |
图像模型160相当于一幅修剪图像,比如按照前面描述的技术得到的修剪图像。此处的结构模型162相当于在视觉类离散中一个已经确定的元件的一个结构模型。因此,这个结构模型包括代表离散器件主体的第一部分162a;表示“端盖”的最接近末端的部分162b、162c(即一个离散元件的引线);代表板背景部分的侧面部分162d、162e;以及代表焊盘区的末梢部分162f、162g。几何模型164包括端盖区域164a、164b和主体区域164c。
在一个实施例中,系统在两个不同的旋转角处训练。所以,图7B给出了图像模型和几何模型160’、162’、164’的第二方位。模型160’、162’、164’基本与模型160、162、164相同,只是简单的旋转了一个与模型160、162、164不同的角度。
在图7A中,模型160-164和区域166、168表示的是对应0度和180度的旋转角。如图所示,结构模型部分被旋转,使之与有一般方位的电路元件匹配。在图7B中,图像、结构、几何模型,以及区域160’-170’表示的是额定值等于±90度的情况。图7B也表示的是PCB的一个焊剂和一个放置部分。这些模型用在区域166、166’、168、168’内正被检验的PCB的一个实时处理部分中,进行比较和鉴别。前面的描述将这些看作在这两/四个不同方位的真肯定与真否定的ROI实例。
现在参考图8,图像、结构、几何模型160-164从期望的0度角放大。放大一个模型就是指生成不同的、但可能是原始模型变化的过程。例如,器件实际上可以在一个关心区域内被旋转超过标定旋转角。器件大小实际上也可以与数据库中默认的大小有细微的差别。我们可以通过建立模型的不同实例对这些变化预先考虑。实际当中,我们不可能在每一个可能的旋转角或大小都生成、存储并匹配一个模型。在放大阶段,我们采样不同可能的变化来生成一些能跨越每个变化空间的模型。在这个特殊示例中,生成两个额定角度等于±10度的新模型。对每个空间的采样,比如可能旋转角的空间,都可以按照器件类型、器件大小和已知的器件公差来改变。
现在参考图9A-9D,其中图像、结构和几何模型160-164用于三个不同的检验场合,分别表示在图9B-9D中。注意,图像模型160包含一个黑色的、具有白色记录和灰色端盖的快照。第一种情况中,如图9B,图像模型160和由检验设备生成或捕获的图像170的子区域匹配很好。图像170中的器件也是黑色的、具有白色记录和灰色端盖。图像模型160与捕获图像170的一个子区域匹配完后,这个子区域的中心(x,y),相当于该器件的中心,就被保存到图像处理系统中(注意,我们可以用很多不同的方法参考一个子区域,比如其左上角)。图像处理系统的当前状态是它粗略假设正确的器件在图像170内的位置(x,y)的周围。结构模型162(图9A)现在就被用来验证元件172是在标出的位置(用圆标记),并精确定位。
在一个实施例中,结构模型162采用将其收集的区域放进位置(x,y)周围的一个刚性空间结构中的方法验证元件在标出的位置存在。如果满足区域与区域间的关系属性,结构模型就指示器件存在。在有时间限制的应用中可能会更倾向于使用这个实施例。
在另一个实施例中,结构模型实际可能改变其元件器件162a-162g的形状和空间位置,来与元件的区域对齐。如果结构模型能将其区域162a-162g对齐且任何一个区域162a-162g的形状改变都未超过可接收的限度,那么就会给出器件存在的指示。然而,如果结构模型不能在不使其任一区域162a-162g超过可接收限度地变形的同时将区域162a-162g对齐,那么就会指出器件不存在。
应该注意到,在一个包含(x,y)的相对较小的区域周围执行搜索需要结构模型。采用这种方法有两个原因:(1)图像模型运行于粗略模式,即它在图像中每隔N个像素检查一次;和(2)即使图像模型运行于精确模式,图像模型也对器件上诸如记录这样的高对比度区域极其敏感。如果记录不是正好在器件中间,图形模型就不会匹配到器件的中心,而匹配到记录的中心。
一旦结构模型确认元件存在于在(x,y)周围的ROI内并精确定位了它的中心位置,就使用几何模型166。如前面联系图1-6B描述的那样,几何模型本质上是一个精确的边缘定位器。几何模型用于为元件172计算精确的dx,dy值和θ值。dx,dy和θ值表示图像中正被检验的元件172偏离该元件通过检验计划计算的期望或理想位置值的距离和角度。应该注意,dx,dy和θ值都是参照元件172的中心计算的。可以理解,对于不同类型的器件,元件的中心计算是不同的。对于分类为离散的电路元件来讲,这就是电路元件主体与端盖的中心。对于分为类为IC的电路元件来讲,只有引线决定dx,dy和θ(主体是不可控的)。
图9C所示的示例中,图像模型160与一个在检验过程中由检验系统捕获的元件182的图像180相匹配。如上所述,在这个特殊的例子中,图像模型160是黑色的并带有灰色的端盖,元件182的图像是绿色的而且非常明亮(饱和端盖)。所以,图像模型160与元件182的图像匹配的并不好。在这个实例中,用结构模型162搜索一个关心区域(ROI)184来定位该电路元件182。如果发现电路元件182,就使用几何模型计算这个特定电路元件的精确的dx,dy和θ值。同样要注意,此处的dx,dy和θ值都是参照元件182的中心计算的。
在图9D所示的第三个示例中,图像模型仍然与图像检验设备捕获的图像匹配不好。此处图像模型匹配不好的原因是电路元件不存在,而且图像186内的焊盘和电路板背景在颜色和亮度上与图像模型有很大的不同。这就告诉系统元件不存在,或者存在一个与图像模型不同的元件。所以,如图9D所示,再次使用结构模型162搜索整个关心区域186寻找这个元件。在这个特定的示例中,结构模型162没有在关心区域188内发现这个电路元件,检验系统由此确定,器件未在印刷电路板上它本应存在的位置。
注意,有些情况下,图像模型可能与一幅没有器件的图像匹配很好。这种情况下,焊盘和背景可能与图像模型的快照非常相似。图9B中描述的同样的过程就会发生。结构模型会在器件最有可能的中心位置周围执行一次搜索,这个中心位置是由图像模型提供的。这个图像不太可能与结构模型中严格的规范相匹配。所以,结构模型会声明器件不存在。
现在参考图10A-10E,这是一个特定封装类型-CC0805的器件的结构模型分数相对焊剂和放置图像的实例变化的坐标图。该坐标图也表明了这个实例是被确定为含有该器件还是不含该器件。坐标图中显示了两个标识点分组,190和192。分组190表示器件不存在,而分组192表示器件存在。在这个特定的示例中,分数和实例对表示模型能精确地区分开放置器件与焊剂图像。组190内的点都是真否定,组192内的点都是真肯定。例如,在图10B和10C中,系统分析图像196和图像198并正确地标记它们为器件不存在,因为它们含有组190中的分数。在图10D和10E中,系统分析图像200和202并正确地标记它们为器件存在,因为它们含有组192中的分数。如图10A所示,共分析了197个焊剂实例和788个放置实例。焊剂和放置实例190、192间较宽的间距194表示系统能确定地区分开这两个组。
现在参考图11A和11B,它显示了封装类型RC1206的一系列放置器件和焊剂器件的结构模型分数对实例的坐标图。如图11A所示,一个放置器件分组204被明显地与一个焊剂器件分组206分开。而另一个放置器件分组208位于一个与焊剂器件分组206和放置器件分组204没有明显分开的区域中。结果分组208内的元件是结构模型不能确定为放置图像的元件。
在下面区域204与上面区域206之间的区域208出现的结果相当于结构模型不能确定是焊剂还是放置器件的元件。在这个特定的示例中,封装类型是RC1206;一个大小为120×60密耳的电阻。所以,封装类型RC1206正在使用的这个特定的结构模型没有准确地识别出来组208中的器件集合。
组208内表示的图像是用来分析并寻找任何共性的。从结果分析中发现,组208中所有的图像都来源于印刷电路板不同实例上的特定参考标志R29。
由于封装类型RC1206正在使用的结构模型不能准确识别出参考标志R29的一个特殊器件,就会在板上这个特定位置为这个特定器件生成一个新的结构模型。这个为封装类型RC1206和参考标志R29生成的新模型一经使用,如图11B所示,就会获得放置与焊剂器件之间充分的间距,图中由分组210位置表示。组210显示了为参考标志R29处的放置器件的图像产生的新结构模型所生成的分数。所以,图11B表示,R29模型(组210)和非R29模型(用于焊剂图像的组206和用于放置图像的组204)的识别分数都在焊剂和放置器件间产生充分的间距。
图11A和11B说明,通过检查示例图像的聚集,有可能鉴别出需要专业化或特殊训练的模型的元件,这些专业化或特殊训练的模型用于检验和识别。例如,前面联系图4介绍的步骤100-108说明了一种生成间距坐标图的技术,该技术是描述模型为一组焊剂与放置图像鉴别肯定与否定实例的能力的一种衡量方法。图4讨论了怎样选择最好的模型集合,使这组模型能在焊剂与放置模型之间给出充分的间距。
注意图11A中处理过程结束的位置,我们给器件类型RC1206增加了一个新的结构模型。这表示有两个结构模型与这个器件类型关联。可以使用同样的过程决定我们是否需要建立一个新的图像或几何模型。
现在参考图12,它显示了一个与RC0805类型元件相匹配的图像模型。同样,在这个特定的示例中,焊剂和放置器件分组214,216之间也存在充分的间距,因此表示图像模型可以正确地区分一个焊剂和一个放置器件。分析表明,对这个器件类型,匹配方法最有可能遵循如图9A中所描述的流程。在图9B中,结构模型更多地用于验证而不是器件检测和位置识别。
图13表示类型RC1206的焊剂与放置图像的图像模型分数。焊剂分数显示在组218,放置分数在图13中用短线表示。根据本发明的技术得到的结果并参考图13,可以发现,使用现有技术时(亦即,只使用一幅图像模型识别并区分一个印刷电路板的放置与焊剂区域),焊剂与放置图像之间只有很小的或没有间距,如图13所示。本发明中描述的过程能够用结构模型补偿图像模型的局限。已如图11B所示,结构模型确实能在焊剂和放置图像间提供充分的间距。
分析表明,对这个器件类型,匹配方法最有可能遵循如图9C和9D中所描述的流程。在图9C和9D中,结构模型被用来进行器件检测和位置识别。
现在参考图14A-14C,它显示了一种学习某个模型的技术,该技术能为一种器件类型的图像提供良好的分类。处理过程从步骤230开始,从模型类型集中为器件类型选择一个模型。该模型可以是一个图像模型、结构模型或几何模型。尽管这些模型中的每一个都可以被独立地学习,我们现在却同时学习一个图像和一个结构模型。
如步骤232所示,模型被用于同一器件类型所有的“放置图像”。“放置”图像就是指正被检验的对象位于其内期望位置处的某一个范围内的图像。处理过程随后转到步骤234,在已选择的模型与关心区域(ROI)内每个“放置图像”之间计算一个“放置图像分数”。每个“放置图像分数”都是一个代表或象征模型与某个特定放置图像之间匹配质量的值。
处理过程再转到步骤235和238,同一个模型再用于相同器件类型的所有焊剂图像,并在已选择的模型与关心区域(ROI)内每个“焊剂图像”之间计算一个“焊剂图像分数”。
放置图像分数和焊剂图像分数计算完后被保存,在后面的处理中使用。接下来,在步骤242执行一次“局外分数”(或更简单讲“局外值”)检查。名词“局外值”是指那些看上去在放置图像分数和焊剂图像分数的典型值域外部的放置与焊剂图像分数。如过一个局外值已经确定,那么就应该确定这个局外值的原因。亦即,如果局外分数是由于一种不会重复的反常形势或者特征导致的,那么这个局外点就不应被包括在分数分布的计算中。反之,如果局外分数是由于一种有望重复的反常形势或者特征导致的,那么这个局外点就应该被包括在分数分布的计算中。例如,一个端盖上带有焊剂的独立元件就会给出一个局外的分数。我们希望从有效的放置分数集合中排除这个局外分数,因为它实际上是一种故障。同样,如果一个放置图像标记不准确,即期望的对象不在图像中,我们也希望从放置分数集合中排除与这种图像相关的分数。另一方面,如果一个独立元件通常具有黑色主体,却发现该器件的一个有效实例的主体是白色的时(或者某种完全不同的外观),我们希望将这个有效的实例包括到有效放置分数的分布中。
例如,现在简单简要参考图14C,它显示的是两个分数发生次数的柱状图。X轴的每个元素代表一个分数域,Y轴表示该分数或分数域发生的次数。曲线254符合高斯分布,拟合放置图像分数的柱状图;曲线256也符合高斯分布,拟合焊剂图像分数的柱状图。点258表示一个放置图像分数的局外值。亦即,点258相当于一个不包括在用于生成曲线254的计算之中的一个点。类似地,点260表示一个焊剂图像分数的局外值,所以点260相当于一个不包括在用于生成曲线256的计算之中的一个点。
现在再参考图14A和14B,处理过程进行到步骤244,计算一个间距函数。该间距函数的计算方式由多种因素决定,包括步骤230内选择的模型的类型、放置与焊剂图像的特征和正在使用的模型的特定应用类型,但并不仅限于此。举例来讲,在类似于印刷电路板检验处理的应用中,模型相当于图像模型,间距函数可以由一个相关函数的分数产生。这个分数可以由任何模型匹配方法生成。例如,模型可以是一张带有一个复杂匹配函数的脸,结果分数可以输入同一个过程,从而生成一个如步骤244所述的间距函数。
这里的间距函数试图拟合一个肯定示例的高斯曲线和一个否定示例的高斯曲线。一个高斯曲线可能不足以实现充分的曲线拟合,因此需要几条高斯曲线来逼近每个类中的数据。例如,如果PCB有两种完全不同的背景颜色,焊剂示例就可能产生一种双模式分布。对于一般技术人员来讲,存在几种合适的集群算法,比如K-平均值法。另一种计算间距函数的方法是找到与数据拟合最好的曲线,这是以我们不知道或者没有利用分布函数为前提的。
给定一个新的数据点,可以查看在该点处的曲线值。根据计算的值和分布的性质,可以计算该数据点属于某个类的概率或可能性。有些情况下,该点可能在两个或更多的分布的交集内,这时可计算该点属于每个分布的可能性。最简单的情况下,我们可以将这个点标记为属于有最高可能性的分布。然而,我们可以报告这个具有较低置信度的诊断。
计算完间距函数,处理过程流转到决策模块246,判断该间距函数是否可以接收。同样,判断的方式和判断要考虑的因素也是由多种原因决定。举例说明,在一个类似于印刷电路板检验过程的应用中,模型相当于图像模型,间距函数包括相关函数,通过计算最小与最大相关值之间的差异并将这个差异与一个预定的阈值相比较,进而决定间距函数是否可以接收。
然而,在其它应用中,间距函数应体现区域和区域属性之间的相对关系与结构模型的匹配程度,或者梯度图案与边缘模型的匹配程度。
应该理解,对任何为肯定和否定示例生成分数的应用来讲,处理过程大致相同。但有可能有多个分数输出。在这种情况,需要用一个更高维度的高斯曲线逼近数据。
如果在决策模块246中判断间距函数可以接收,处理过程就会转到步骤248,在此保存模型,用于后面使用。另一方面,如果决策模块246中判断间距函数不能接收,处理过程就会转到步骤250,在此将模型标记为不可使用(或简单的将该其标记为要被处理掉的模型)。这个“坏”模型可以用作后面模型的基准。
处理过程随后转到步骤252,判断是否有需要评估的同一类型的其它模型存在。如果没有,处理过程结束;相反,如果步骤252判断存在这种模型,处理过程流转到步骤253选择下一个模型类型,随后再流转回步骤232。在步骤232,如上所述的处理步骤再次重复执行。
对于是否存在任何其它模型的问题可以有几种理解的方法。在最狭义的范围内,就是问是否有同一类型的任何其它模型存在。例如,如果模型类型是图像模型,问题就成为是否存在任何其它相关的、需要尝试去推翻所有数据的图像。如果问题变成是否有该器件或器件类型的任何其它的模型存在,那么接下来的模型类型就会是一个结构或几何模型。
图14A-14C所说明的学习方法或决策函数发生器是一种使用所有可用的真肯定和真否定的方法。决策函数可以随着新示例的应用不时的改善。模型的改善可能发生在,例如在图2中模块70的背景学习步骤中。
这里的学习方法与图3B和4A、4B中所描述的不同。这个方法使用所有可能的数据生成模型;图3B和4A、4B集中于获得最具代表性的数据训练模型。
应该注意,在图1和14B中,假设只可用两种类型的诊断结论:器件存在、器件不存在。然而,我们可能需要其它的类来表示器件损坏、错误器件、焊剂涂污等。如果新测量的图像介于真放置和真放置之间,我们就可以为每个标记的图像计算分数分布,或者生成一个更加复杂的函数来对新图像分类。
介绍本发明的技术和系统之前,先对一些介绍性的概念和术语进行解释。名词“未组装”下面将用于表示一个没有使用电路元件的电路板。这里使用的未组装电路板或者包含焊料或者不包含焊料。焊料可以理解成一种液体焊剂,只用于印刷电路板上特定的焊盘或区域。焊料经常通过丝印处理使用。焊剂区域是指电路元件先被放入其内的、并随后在制造阶段焊接的区域。尽管后面介绍的是使用焊料的表面安装的电路板,但应注意,本发明同样可以很好地用于使用不同焊接过程的穿孔电路板。
相反,名词“组装”和“部分组装”用于表示使用了电路元件的电路板。
动态颜色辨认过程利用一种识别,即一个未组装电路板在板表面上存在有限数量的不同颜色分布。许多情况下,这个不同颜色的数量的有限值是一个相对较小的数字。随着科技的发展,未组装电路板可以采用多种材料、应用多种工艺制造。例如,未组装电路板可以用纸质合成物、玻璃纤维和聚四氟乙烯(PTFE)制造。未组装电路板显示的颜色经常与一个阻焊层相关,制造过程中,该阻焊层被放在未组装电路板的每个外表面上。阻焊层有多种颜色,包括蓝色、绿色,但不仅限于此。阻焊层被用于未组装电路板的大多数外表面,包括该未组装电路板所有未使用焊料的地方。阻焊不用于未组装电路板上使用了焊料的地方,使用了焊料的位置是用来连接电路元件的。阻焊也不用于未组装电路板上必须裸露的区域,如连接元件的焊盘。除了上述颜色外,丝印经常用于未组装电路板表面的阻焊面。丝印有一个α-数字参考标志,有时主体外形也与电路元件对应。丝印一般为白色,但也可以是多种颜色。
印刷电路板上的颜色可以分成有限数量的颜色种类。所以,无论电路板的材料、阻焊的颜色、使用了焊料的位置的颜色、裸露位置的颜色、丝印的颜色是什么,与一个特定的未组装电路板表面相关的颜色都能被分成相对较少的颜色类。例如,对于一个有绿色阻焊和白色丝印的玻璃纤维未组装电路板来说,在电路板表面上使用了阻焊的位置一般都是绿色的。对于一些裸露的区域,铜导体或者焊层可以是铜色的;焊接电镀导体或焊层可以是银色的;连接元件的焊盘或类似物可以是金色的。使用了阻焊的区域一般有两种绿色阴影。第一种绿色阴影对应于亮板的颜色,用于未组装电路板表面的某个区域,该区域内使用铜的或焊接电镀的导体或者焊层,这个绿色阴影在阻焊下面是可见的。第二种绿色阴影对应于暗板的颜色,用于未组装电路板表面的某个区域,该区域内未使用铜的或焊接电镀的导体或焊层,此绿色阴影在阻焊下面也是可见的。未组装电路板颜色的变化与“颜色种类”一致。
可以看出,与一个特定电路板对应的某个特殊颜色种类可以在电路板表面变化。例如,有些情况下,阻焊被用于一个丝印过程中。应该注意,阻焊的丝印过程与前面介绍的、连接在印刷电路板上给参考标志或电路元件提供线路的丝印过程是不同的。使用丝印阻焊时,阻焊的厚度可能发生变化,导致颜色变化。但这种颜色变化通常都比较小。
示例的玻璃纤维未组装电路板有绿色阻焊和白色丝印,对于不同的电路板,尤其是不同的生产批量,它可以有不同的颜色。例如,相同的未组装电路板的同一生产批量中,不同的未组装电路板的阻焊可以是不同的绿色阴影。尽管设计者通常都说明未组装电路板的材料,此处是玻璃纤维,但阻焊一般都不标明。因此,在其它示例中,不同批量的未组装电路板的阻焊可能改变。举例说明,某个生产批量的阻焊是绿色的,除非特别声明,相同的未组装电路板的另一个生产批量的阻焊就是蓝色的。只不过,无论制造电路板的材料是何种颜色,可用于任何未组装电路板的颜色数量相对较少。
本领域普通技术人员了解的未组装电路板制造技术包括多种工艺步骤和多种材料。可以期望未组装电路板制造技术的未来发展能生产出颜色也相对较少的电路板。动态颜色识别过程并不仅局限于当前的未组装电路板制造方法或材料。
现在参考图15,一种处理印刷电路板的技术包括一组步骤302。在步骤302中,选择了一个被称为调色板区域的电路板上的区域,并且测量、采样或者捕获这个被选择区域的特征。应该注意,在后面的介绍中,电路板关心的特征是颜色。而且,为使描述清楚,后面的处理有时将调色板区域特别的引用为“颜色调色板区域”,电路板特征的处理过程也会按照颜色特征的内容来讲解。但应了解,包括结构、亮度但又不仅限于此的其它电路板特征也可以代替或与颜色关联使用。
从后面的讨论中可以知道,颜色调色板区域内的电路板颜色可被用于后面的多个电路板检验模型,包括前面联系图1-14C介绍的所有模型,而且不仅仅局限于这些。这当中的某些模型可以例如判断电路元件是否被放置于电路板上每个电路元件应该存在的位置,而且有些情况下判断电路元件是否被正确的放置在印刷电路板上。被处理的电路板可以是一个焊剂、放置、未组装或回流电路板。
在步骤308,电路板上的颜色调色板区域被标明。每个调色板区域都是优选的,保证每个调色板区域都对应电路板上多个不同颜色中的一个。图16A中显示了颜色调色板区域的一个特定示例。然而,可以确保每个颜色调色板区域对应于电路板上一个相对较小的区域。优选地,每个颜色调色板区域都被选择,使得每个区域是一种不同的颜色。用这种方法,多个颜色调色板区域中的每一个都有一种对应于前面介绍的颜色种类中的一种不同的颜色。在一个优选实施例中,颜色调色板区域要选在后面组装步骤中不装配电路元件的位置内。能保证这个目标的一种方法是在组装的电路板上选择颜色调色板区域。
在关于电路板检验的一个特殊的实施例中选择了5个颜色调色板区域。这5个颜色调色板区域中的每个都可以对应下列颜色种类之一:(1)裸露焊盘的颜色;(2)暗板的颜色;(3)亮板的颜色;(4)丝印颜色;和(5)焊剂的颜色。从前面的讨论可以看出,裸露焊盘的颜色对应未组装电路板上裸露的和没有覆盖阻焊的区域。也应了解,暗板相当于未组装电路板表面上或周围没有铜的或者焊接电镀的导体的区域,这种区域在阻焊下面可见。同样要注意,亮板的颜色对应未组装电路板表面上或周围有铜的或者焊接电镀的导体或焊层的区域,这种区域在阻焊下面可见。丝印颜色对应于丝印的颜色,焊剂的颜色对应于焊料的颜色。
尽管前面介绍了与5个颜色调色板区域对应的5种颜色,然而本发明仍可以使用少于或多于5种颜色种类,每个颜色种类都要与一个颜色调色板区域关联。同样,尽管也只介绍了对应于裸露焊盘的颜色、暗板的颜色、亮板的颜色、丝印颜色和焊剂颜色的颜色调色板区域,颜色调色板区域仍可使用任何能与未组装电路板相关颜色区分开的颜色种类。
应理解,一个特定的应用中使用的颜色种类数量和调色板区域数量是由多种因素决定,包括但不仅限于:被检物中不同颜色的数目、不同颜色以及颜色阴影的变化(例如颜色间的阴影)和重要性。
在作为可选步骤而提供的步骤310中,颜色调色板区域被一个图像处理系统扫描,该图像处理系统可能例如类似于图1中的图像处理系统20。这个图像处理系统光学扫描电路板,由此提供与每个颜色调色板区域相关的一个或多个像素值。根据这些像素值,图像处理系统生成一个与每个颜色调色板区域相关的初始调色板值。每个单独的初始调色板值都可对应一个带有传统的红、绿、蓝(RGB)颜色值的颜色矢量。本领域技术人员熟悉的其它颜色坐标系统当然也可以使用。所以,步骤310给出了与每个颜色调色板区域相关的调色板值。
应当理解,颜色调色板区域有一个颜色调色板区域的大小,它可以包含与该图像处理系统相关的一个或多个像素。还应当理解,这一个或多个像素中的每一个都与对应于具有传统红、绿、蓝(RGB)色值的颜色矢量的像素值相关联。在一个示范实施例中,每个单独的初始调色板值都是相关颜色调色板区域上像素值的平均值。
每个带有初始特征调色板值的颜色调色板区域都被分配了一个颜色种类,这些颜色种类对应于类似前面介绍的亮板的颜色、暗板的颜色、丝印、裸露焊盘的颜色和焊剂颜色。所有这些选择的颜色调色板区域都必须在处理过程继续前与一个颜色种类关联。每个与相应颜色种类相关的初始调色板值都应包括一个集合,保证仅使用这个颜色集合就能重现电路板的精确图像。
在步骤312,图像处理系统扫描一个对应于上面有焊料的未组装电路板的“焊剂”电路板。在步骤308中选择的调色板区域(本例中是颜色调色板区域)被用于动态地生成另一组调色板值,此处就是焊剂调色板值(即,从一个涂覆了焊剂的电路板得到的调色板值)。可以看出,焊剂调色板值不必与步骤310中生成的初始调色板值相同。然而,在步骤308确定的颜色调色板区域的位置和大小保持不变。每一个焊剂调色板值都与步骤310分配的颜色种类相关联。
在步骤314中,一个涂覆了焊剂的电路板“被学习”。在用于涂覆了焊剂的电路板时,术语“被学习”用于表示一个图像处理系统检查电路板以在对应于关心区域(ROI)的特殊区域建立电路板颜色的过程,其中ROI对应于电路板上随后会放置电路元件的位置。步骤312和步骤314的过程,共同标记为步骤304,将会联系图17进一步进行讨论。可以说,在步骤314,检查ROI来判断ROI处的颜色,其中ROI没有电路元件。同样在步骤314,“焊剂网格值”被与每个ROI关联。
在步骤316,图像处理系统扫描一个“放置”电路板。放置电路板(也称为组装电路板)就是电路元件放置在电路板上它们各自位置的电路板。电路元件可以使用前面曾用于电路元件安装的焊接焊盘处的焊剂固定,或者另外使用曾在装配步骤用于电路板的环氧树脂固定。放置电路板还没到加热焊料的制造步骤,因此是由焊剂将电路元件连接在电路板上。尽管后面介绍的是焊剂与放置电路板,但应该知道,此处讲解的技术也可以用于一个焊接后回流的电路板。
步骤308选择的颜色调色板区域再次被用于动态生成另一组调色板值,此处是放置调色板值。可以看出,放置调色板值既不需要与步骤310生成的初始调色板值相同,也不需要与步骤312产生的焊剂调色板值相同。然而如前所述,步骤308所确定的颜色调色板区域的位置和大小保持不变。每一个放置调色板值都与步骤310分配的颜色种类相关联。
在步骤318中,这个放置电路板被学习。与用于放置电路板一样,术语“被学习”用于表示一个检查组装电路板以在前面步骤314中创建的关心区域(ROI)内建立电路板颜色的过程。在步骤318,这些ROI对应到电路板上已放置元件的位置。所以步骤318中检查ROI来判断ROI处的颜色值,其中ROI具有电路元件。同样在步骤318,“放置网格值”被与每个ROI关联。
在步骤320中,一个电路板被检验,这里指图像处理系统扫描一个检验电路板。一个检验电路板可对应于一个焊剂、放置、未组装或回流电路板。步骤308中选择的颜色调色板区域还要再次被用于动态生成另一组调色板值,此处是“检验调色板值”。可以看出,检验调色板值不需要与步骤310中生成的初始调色板值相同,也不需要与步骤312中生成的焊剂调色板值相同,还可以不同于步骤316中产生的放置调色板值。然而如前所述,步骤308中确定的颜色调色板区域的位置和大小保持不变。每个检验调色板值都与步骤310中建立的颜色种类相关联。
在步骤322中,产生的调色板值用于一个检验过程,尤其适用于利用了图像模型、结构模型和几何模型中的一个或多个的检验过程,前面联系图1-14C介绍过这些模型。调色板值也可以用于“否定模型”图,“否定模型”图明确地使用了调色板值来判断元件是否存在,后面联系图17A对此作了介绍。
决策模块324完成了一个循环,其中重复步骤320和322直至所有电路板都被检验过。
现在参考图16和16A,其中提供了将有相似参考标志的相似元素,一个传统的放置电路板320包括:一个具有裸露焊盘颜色的裸露焊盘区域322;一个具有暗板颜色的暗板区域324;一个具有亮板颜色的亮板区域326;一个具有焊剂颜色的焊剂区域328;一个具有电路元件的颜色的电路元件330。在图16A中包含了一个丝印334用于帮助说明。
颜色调色板区域350a-350e对应于电路板320上的选中区域。在一个实施例中,颜色调色板区域由正在观察印刷电路板并确认代表板上每种颜色位置的印刷电路板上的位置的用户手动选择。因此,选出的颜色调色板区域350a-350e提供了与电路板320关联的所有颜色的标识。
在这个特定示例中,颜色调色板区域350a对应于具有裸露焊盘颜色的裸露焊盘区域322;颜色调色板区域350b对应于具有暗板颜色的暗板区域324;颜色调色板区域350c对应于具有亮板颜色的亮板区域326;颜色调色板区域350d对应于具有丝印颜色的丝印334。电路元件334与一种没有标明的“其它”颜色关联。
应该理解,虽然此处的颜色调色板区域350a-350e被表示成矩形,但是颜色调色板区域350a-350e可以有不同的大小和形状。也应理解,虽然此处的颜色调色板区域显示在印刷电路板上特定的位置,但是只要电路板上每种颜色都被一个颜色调色板区域表示,颜色调色板区域就可以位于电路板上的任何位置。还要注意,虽然在本范例中显示了6个颜色调色板区域,但是任何特定应用中颜色调色板区域的数量都要根据必须被表示的颜色的数量确定。因此,少于或多于6个颜色区域都有可能采用。
特别地,与颜色种类对应的颜色调色板区域350a-350e的数目是根据多种因素选择的,包括但不仅限于:与未组装电路板关联的不同颜色的数量;随之的处理负载;某个特定电路板上的一种特殊颜色种类的变化,上面介绍过,这种变化通常较小。尽管本实施例中显示了对应于5种颜色种类的5个颜色调色板区域350a-350e,但在其它实施例中,可以有多于或少于5个颜色调色板区域与各个颜色种类关联。可以看出,颜色种类“其它”可以对应于与未组装电路板无关的任一颜色。
颜色调色板区域350a-350N的形状根据多种因素选择,包括但不仅限于图像处理系统的机械特征。颜色调色板区域形状的选择应能保证该区域能够装入一个单一板颜色类型。
颜色调色板区域350a-350N的大小的选择也要根据多种因素,包括但不仅限于使用颜色调色板区域的电路板零件的大小。颜色调色板区域350a-350N的尺寸必须足够小,以保证只包含需要某种颜色的特殊电路板零件。颜色调色板区域350a-350N也要足够大,以保证颜色的平均出现在与颜色调色板区域350a-350N相关的像素之中。调色板区域大小的选择互相之间可以不同,以保证选择的颜色调色板区域只包含一种单一的颜色种类,并确保颜色调色板区域足够大,能获得一个或多个像素采样的平均颜色。
颜色调色板区域的位置要根据能够特征化每个颜色种类的电路板零件的位置来选择,颜色种类联合起来能表示与未组装电路板相关联的颜色的完整范围。
颜色调色板区域350a-350e按照图15中步骤304-308所描述的方法处理。特别地,在图15的步骤306,给每个单独的颜色调色板区域350a-350e测量一颜色调色板值。如前所述,每个颜色调色板区域内的颜色调色板值都能被表示成一个RGB颜色矢量。
所以,颜色调色板区域350a-350e对应于印刷电路板上的位置,在这些位置处,期望未组装电路板或者组装电路板320的未组装部分显现前面介绍的颜色种类所代表的颜色。如前所述,应当理解,只存在相对较少的颜色种类,因此,只有相对较少的颜色调色板区域350a-350e与组装电路板320关联。还应当理解,如前所述,颜色种类的特定颜色对本发明的目标无关紧要。
现在参考图17,显示了一个使用动态生成的调色板特征(例如调色板颜色)在每个ROI处学习未组装/涂覆焊剂的板的颜色布局的过程。然后这个被学习的颜色布局被用于图17A中所描述的检验。处理从处理模块406开始,在处理模块406,在印刷电路板上的调色板区域处进行动态测量。应当理解,术语“动态”在此用来描述某种技术,该技术通过测量/生成与颜色调色板区域相关的特征调色板值而将每个电路板分别特征化,并且其中对于一个给定类型的印刷电路板,板与板之间颜色调色板区域的大小、位置和数量恒定。
应注意,颜色调色板区域的大小、形状和位置可以按照前面结合图15介绍的方法选择。在一个优选实施例中,图像处理系统在每个调色板区域内动态地测量未组装印刷电路板的电路板特征(例如颜色)。但应该知道,尽管本实施例中测量是在未组装印刷电路板上进行的,但也可以在一个裸露电路板上甚至一个组装电路板上进行同样的测量。在具体的实施例中,得到印刷电路板的图像(例如,通过一个类似于前面结合图1所介绍的图像处理系统20),并对图像进行测量。
在处理模块410,生成特征调色板值。在一个将颜色作为关心特征的实施例中,调色板值通过将像素数据表示成颜色矢量而生成。例如,动态获得的颜色调色板值可以表示成传统的红、绿、蓝(RGB)颜色值。所以,调色板值可以通过将像素数据转换或变形为颜色空间值(例如,RGB颜色空间的值)而生成。
一旦确定了调色板值,就给每个调色板区域分配一语义标签(例如,“裸露焊盘的颜色”、“暗板的颜色”、“亮板的颜色”、“丝印”、“焊剂”)。如果关心的特征是颜色,而且测量在例如图16A的电路板上进行,那么区域350a(图16A)就会被分配语义标签“裸露焊盘的颜色”;区域350b(图16A)就会被分配语义标签“暗板的颜色”;区域350c(图16A)就会被分配语义标签“亮板的颜色”;区域350d(图16A)就会被分配语义标签“丝印”;区域350e(图16A)就会被分配语义标签“焊剂”。
处理模块412得到印刷电路板上关心区域(ROI)的一幅图像。一个关心区域相当于印刷电路板上的一个器件和围绕该器件的区域的一幅图像。也可以说,一个关心区域是一个待检验器件在印刷电路板上将被放置的位置和其周围区域的一幅图像。
在处理模块414,确定网格区域。网格区域对应于一关心区域(ROI)内的特定位置或区域。每个网格区域都带有一个或多个网格带,后面会结合图18进行介绍。
网格区域的位置确定后,图像处理系统就测量这个网格区域内每个网格带的期望的特征(例如颜色),如处理模块416所示。随后,在处理模块418生成网格带的值。一般情况下,网格带的值是通过将在模块416中得到的网格带的值与在模块410中得到的调色板值相比较而得到的。就颜色来讲,是通过判断调色板内那种颜色与网格带的颜色值最相近来分配语义标签的。在一个期望特征是颜色的具体实施例中,网格带的值可以通过将像素数据表示为颜色矢量来产生。举例来讲,每一个动态获得的网格带的值都可以用传统的红、绿、蓝(RGB)颜色值表示。也可以说,动态获得的网格带的值可以被表示成一种用一般技术分析的颜色分布。RGB值随后就可用于比较。亦即,任何一般技术人员都熟悉的技术也都可以用来表示和比较网格带的值。所以,在颜色是关心特征的情况下,网格带的值可以通过将网格带内的像素数据转换或变换成颜色空间值(例如RGB颜色空间值)产生。
网格带的值确定后,就会给每个调色板区域分配语义标签(例如“裸露焊盘的颜色”、“暗板的颜色”、“亮板的颜色”、“丝印”、“焊剂”)。举例来说,如果在图18的ROI 450上进行测量,区域452a就会被分配语义标签“亮板的颜色”;区域452b就会被分配语义标签“丝印”;区域452c-452e就会被分配语义标签“暗板的颜色”;区域452f-452g就会被分配语义标签“丝印”。
应当理解,印刷电路板上可以有一个或多个网格区域,每个网格区域可以有一个或多个网格带。也应理解,每个网格带都有一个网格带大小,这个大小可以包含与图像处理系统相关的一个或多个像素。还应理解,这一个或多个像素的每一个都与一个带颜色矢量的像素值相关,此处的颜色矢量可以用传统技术(例如RGB值)表示。在一个示范的实施例中,网格带的值是作为该网格带内所有像素值的平均值而计算的。但要理解,也可以使用任何传统技术给一网格带分配值。
决策模块420执行一个循环,在该循环中对于正被学习的印刷电路板上所有的ROI重复执行模块412-418。
如前所述,特定电路板结构的每个电路板都有或多或少的不同颜色。举例来讲,如果两个电路板有相同的电路板结构,一个电路板用有第一种颜色的阻焊制造,而另一个电路板用有第二种颜色的阻焊制造,那么这两个电路板颜色就会不同。然而两个电路板都能用图17的过程进行处理,因为这个过程动态地调整到第一和第二种阻焊的颜色,并且给出在任何特定电路板、甚至颜色不同的电路板之间都变化很小的结果。
图17A描述了检验一组装印刷电路板的过程。但应了解,同样的过程也适用于裸露电路板甚至未组装电路板的检验。也要理解,图17A的检验过程为每个正被检验的印刷电路板都重复执行。
现在参考图17A,检验组装印刷电路板的处理过程始于处理模块422和424,在这两个模块中,得到一幅印刷电路板的图像,并在被检印刷电路板上的调色板区域动态进行测量。应理解,调色板区域的大小、形状和位置按照前面结合图15所描述的方法选择。调色板区域也要按照已联系图17介绍过的处理过程进行学习。在一个优选实施例中,图像处理系统在每个调色板区域内动态地测量组装印刷电路板的颜色(或其它期望的特征)。
在处理模块426,生成这个特定的印刷电路板的特征调色板值(例如调色板区域处的像素值)。当使用的印刷电路板的特征是颜色时,调色板值可以通过将像素数据表示成颜色矢量来生成。例如,动态获得的特征调色板值可以表示成具有传统的红、绿、蓝(RGB)颜色值。所以,调色板值就是通过将像素数据转换或变换成颜色空间值(例如RGB颜色空间值)来生成的。
确定调色板值以后,就给每个调色板区域分配语义标签。同样,如果颜色是电路板使用的特征,相应的语义标签就是“裸露焊盘的颜色”、“暗板的颜色”、“亮板的颜色”、“丝印”和“焊剂”。举例来说,如果在图16A进行测量,区域350a就分配语义标签“裸露焊盘的颜色”;区域350b就分配语义标签“暗板的颜色”;区域350c就分配语义标签“亮板的颜色”;区域350d就分配语义标签“丝印”;区域350e就分配语义标签“焊剂”。
如前所述,一种特定电路板结构的每个电路板都有或多或少的不同特征。举例来讲,如果两个电路板有相同的电路板结构,一个电路板用有第一种颜色的阻焊制造,另一个用有第二种颜色的阻焊制造,那么这两个电路板就有不同的颜色。但是,两个电路板都可以用图17A中的处理过程检验,因为该过程能动态地调整为第一种和第二种阻焊的颜色,并给出在任何两个特定的印刷电路板、甚至不同颜色的电路板之间变化很小的结果。
接下来,在处理模块428,获得印刷电路板上一关心区域(ROI)的图像。这个关心区域对应印刷电路板上一器件及围绕该器件的区域的一幅图像。或者,这个关心区域也可以对应印刷电路板上某个位置及围绕该位置的区域的一幅图像,这个位置是待检验器件被期望放置的位置。
随后,在处理模块430,确定网格区域。网格区域对应于一个关心区域(ROI)内的特定位置或区域。每个网格区域都有一个或多个网格带,后面会结合图18进行介绍。
如处理模块432所示,一旦确定了网格区域的位置,图像处理系统就测量该网格区域内每个网格带的颜色。然后,在处理模块432,生成网格带的值。网格带的值可以通过将像素数据表示为颜色矢量来产生。例如,这些动态获得的网格带的值每个都可以用传统的红、绿、蓝(RGB)颜色值表示。或者,动态获得的网格带的值也可以用一种颜色分布表示,随后可以用标准技术对这种颜色分布进行分析。再或者,可以使用任何一种本领域一般技术人员熟悉的技术。所以,网格带的值就是通过将网格带内的像素数据转换或变换成颜色空间值(例如RGB颜色空间值)来生成的。
如步骤434所示,确定网格带的值以后,就为每个网格带分配一个语义标签(例如“裸露焊盘的颜色”、“暗板的颜色”、“亮板的颜色”、“丝印”、“焊剂”)。举例来讲,如果在图18中的ROI450进行测量,那么带452a就会分配语义标签“亮板的颜色”;带452b就会分配语义标签“丝印”;带452c-452e就会分配语义标签“暗板的颜色”;带452f-452g就会分配语义标签“丝印”。
应理解,可以(而且一般是)存在一个或多个网格区域,每个网格区域都有一个或多个网格带。还应理解,网格带有一个可以包含与图像处理系统相关的一个或多个像素的网格带的大小。还应理解,这一个或多个像素的每一个都与具有可用任何传统技术(例如RGB值)表示的颜色矢量的像素值相关。在一个示范的实施例中,网格带的值是用作为该网格带内所有像素值的平均值而计算的。然而,需要理解,任何一种传统技术都可用于给一个网格带分配值。
可以看出,在步骤434,可以将一个与未组装电路板无关的语义值或者颜色种类分配给一网格带,这个网格具有在步骤432确定的未知的网格带的值。例如,语义值“其它”可用来表示一个网格带的值,该值不属于与未组装电路板相关的特征调色板值。
在说明步骤436-440之前,应当注意,这些处理步骤与一个使用了否定模型的检验过程相关。应当理解,否定模型并未试图将电路元件分类。而是,否定模型仅将网格区域分类为具有与焊剂电路板相关的特征或者具有干扰颜色的特征。
在步骤436,将测量到的网格带的值与从一个未组装电路板获得且已经保存的网格带的值相比较。当如图17所示的检验过程在一个组装电路板上执行时,比较从组装印刷电路板得到的网格带的值与从未组装印刷电路板得到的网格带的值,结果就会指出在组装印刷电路板上存在一个有故障的电路元件。
如果决策模块436判断测量到的网格带的值与从未组装印刷电路板得到且保存的网格带的值一致时,处理过程就会执行处理模块440,指出器件不存在或当前电路板是一个未组装电路板。
如果决策模块436判断测量到的网格带的值与从未组装印刷电路板得到且保存的网格带的值不一致时,处理过程就会执行处理模块438,指出存在某物遮掩了未组装印刷电路板。所以,如果网格带的值不匹配,就给出ROI内有某物使涂覆焊剂的网格带的值被遮掩的指示。这个遮掩的对象最有可能是元件。否定模型判断这个“不是”焊剂ROI。
可以看到,在一个实施例中,在步骤432为正被检验电路板生成的网格带的值与为一个焊剂电路板在图17中的步骤416产生的网格带的值在步骤436进行比较。在一个优选实施例中,为检验电路板在步骤434提供的语义调色板标签与为这个涂覆焊剂的板在图17中的步骤418提供的语义标签在步骤436进行比较。第三个实施例中,为检验电路板在步骤432生成的网格带的值与为检验电路板在步骤426产生的特征调色板值在步骤436进行比较。第四个实施例中,为检验电路板在步骤434提供的语义调色板标签与为这个焊剂电路板在步骤410生成的语义调色板标签在步骤436进行比较。
应该注意,虽然涂覆焊剂的和检验的板之间与单独颜色调色板区域相关的特征调色板值可以不同,但是为焊剂电路板的颜色调色板区域分配的语义调色板标签或颜色种类却与为检验电路板的颜色调色板区域分配的语义标签相同。举例来讲,某种情况下,一个对应于颜色种类“暗板”的语义值就可以在一个电路板上是蓝色,而在另一个电路板上是绿色,相当于两种不同的特征调色板值。绝对颜色不影响否定模型。
决策模块442执行一个循环,模块428-422在循环内为正被检验的印刷电路板上所有的ROI重复执行。一旦不再有需要考虑的关心区域,这个印刷电路板的处理过程就结束,在处理模块422中可以重新开始另一个印刷电路板的处理过程。
现在参考图18,焊剂电路板450的一个ROI包含一个示范的网格区域452,它有7个网格带452a-452g。尽管显示的是7个网格带,但应理解,网格区域452可以包含任何数量的网格带(一个或多个),而且网格带可以具有任意的大小、形状和相对位置。涂覆焊剂的网格带的数量、大小、形状和位置要根据多种因素选择,包括但不仅限于:对应于该网格区域的ROI内的电子元件的大小;该电子元件的可接收的放置位置的容许限度;一个网格带内可以被平均来提供该涂覆焊剂的网格带的值的像素数量。
电路板450也包含两个焊盘454a,454b,以及两条线路区域455a,455b。电路板450还包括:一个板区域456,该区域的颜色已经用一个第二动态调色板值分类为亮板的颜色;一个板区域458,该区域的颜色已经用一个第三动态调色板值分类为暗板的颜色;丝印460a,460b,它们的颜色已经用一个第四动态调色板值分类为丝印的颜色。
网格带452a内的颜色种类对应于亮板的颜色;网格带452b对应于丝印颜色;网格带452c对应于暗板的颜色;网格带452d对印于暗板的颜色;网格带452e对应于暗板的颜色;网格带452f对应于丝印颜色;网格带452g对应于丝印颜色。如前所述,颜色种类是图像处理系统从与颜色调色板区域相关的颜色种类中选取的,此处的颜色调色板区域在图15中的步骤308确定。与涂覆焊剂的网格带452关联的特定颜色种类是在图17中的步骤414生成的。
注意,网格带452a-452g中的一个或多个可能覆盖有不同颜色特征的电路零件。举例来说,网格带452f覆盖亮板区域456、暗板区域458和丝印460b。然而,图像处理系统的一种相关处理算法可以用来判断网格带452f最有可能属于那种颜色种类。这个处理算法计算网格带内不同颜色的分布。该算法也计算颜色的统计信息,如网格带内的平均值和方差。为“焊剂”/“未组装”电路板计算并储存颜色的属性,并将这些属性在检验时与“放置”电路板相比较,进而判断元件是否存在。颜色属性的比较可以用很多种从颜色分布中导出的标准颜色矩阵来完成。此处的网格带452f与丝印颜色种类相关。
现在参考图18A,一放置的电路板550的一个ROI包含一个示范的网格区域552,它有7个网格带552a-552g。电路板550也包含两个焊盘554a,554b和相关线路555a,555b,它们都有一个已经确定了的颜色种类。在此,焊盘554a,554b和线路555a,555b都是焊剂颜色。电路板550还包含:一个板区域556,该区域的颜色已经分类为亮板的颜色;一个板区域458,该区域的颜色已经分类为暗板的颜色;丝印560a,560b,它们的颜色已经分类为丝印的颜色。此处,ROI 550也包括电路元件570。所以,网格带552a内的颜色种类对应于亮板的颜色;网格带552b内的颜色种类对应于丝印颜色;网格带552c内的颜色种类对应于暗板的颜色;网格带552d内的颜色种类对应于“其它”的颜色;网格带552e内的颜色种类对应于“其它”的颜色;网格带552f内的颜色种类对应于丝印颜色;网格带552g内的颜色种类对应于丝印颜色。
如前所述,图像处理系统从与颜色调色板区域相关的颜色种类中选择这些颜色,此处的颜色调色板区域在图15中的步骤308确定。此处,网格位置552d,552e没有与颜色调色区域相关、并在图17中的步骤420测量的动态特征调色板值当中的电路板颜色相对应。与网格带552相关的特定颜色种类在图17中的步骤414生成。
应注意前面提到,该检验系统可以使用一种“否定模型”。这个“否定模型”在元件焊盘之间、板的围绕区域内使用如图18和18A所描述的固定网格模拟裸板。这个否定模型基于的论据有:(1)板上每个网格带都可用一个颜色较少的集合描述(对应于焊盘、焊剂、铜上的阻焊、衬底上的阻焊和丝印);(2)即使集合内的绝对颜色在板上变化,PCB某部分的特定位置处的颜色构成也保持不变;(3)即使元件外形在板上变化,它也与裸露电路板的颜色和结构不同。当元件在焊盘上没有清晰的引线、并且元件主体能与未组装的板区分开时,用这个模型判断元件是否存在是很有效的。一般来讲,判断电路元件不存在主要通过判断网格区域内网格带的相关颜色是否与未组装电路板颜色种类相匹配来完成。
现在参考图19和19A,一焊剂电路板的一部分的光学图像600包含了一幅没有焊剂的图像部分602。理想情况下,固定焊剂充分地用于电路板所有部分,而图像部分602的存在表明焊剂仅被用于相应焊盘的一部分。可以看出,在执行图15-18所描述的处理过程之前,需要修改图像,以电子地填充未涂覆焊剂的图像部分602。否则,处理时该未涂覆焊剂的图像部分602就会被分类为错误的颜色种类。因此,在图19A中,这个未涂覆焊剂的图像部分602已经被电子地填充了,以提供一致的焊盘图像606。
现在参考图20和20A,一焊剂电路板的一部分的ROI图像610包括了一个未涂覆焊剂的图像部分612,表明焊剂还没有用于任一对应的焊盘。对本发明来讲,在执行图15-18介绍的处理过程之前,需要电子地填充这个未涂覆焊剂的焊盘图像612。否则,处理时这个未涂覆焊剂的焊盘图像612就会被分类为错误的颜色种类。因此,在图19A中,这个未涂覆焊剂的焊盘图像612已经被电子地填充了,以提供具有焊剂的焊盘图像616。
现在参考图21,放置电路板650的一个ROI包含一个示范的网格区域652,这个网格区域有21个网格带652aa-652gc。这些网格带表示为652xy,x代表网格区域652中的一行,y代表网格区域652中的一列。举例来讲,网格带652aa对应位于第一列、第一行的一个网格带。电路板650也包含两个焊盘654a,654b和两个线路区域655a,655b。线路区域的颜色已经被测量过,并保存为一个第一动态调色板值。线路区域一般都被归类为亮板的颜色(覆盖铜的阻焊层)。电路板650还包括:一个板区域656,其颜色已经归类为亮板的颜色;一个板区域658,其颜色已经归类为暗板的颜色;已经归类为丝印颜色的区域660a,660b。因此,网格带652aa-652gc内的颜色就与下面的表2中所描述的颜色种类分别对应。
表2
网格带 |
颜色种类 |
网格带 |
颜色种类 |
网格带 |
颜色种类 |
652aa |
亮板颜色 |
652ab |
亮板颜色 |
652ac |
亮板颜色 |
652ba |
丝印 |
652bb |
丝印 |
652bc |
丝印 |
652ca |
焊剂颜色 |
652cb |
暗板颜色 |
652cc |
焊剂颜色 |
652da |
其它 |
652db |
其它 |
652dc |
其它 |
652ea |
焊剂颜色 |
652eb |
其它 |
652ec |
焊剂颜色 |
652fa |
丝印 |
652fb |
丝印 |
652fc |
丝印 |
652ga |
丝印 |
652gb |
丝印 |
652gc |
丝印 |
如上所述,图像处理系统从与颜色调色板区域相关的颜色种类中选择颜色,此处的颜色调色板区域在图15中的步骤302中确定。与放置元件的网格带652相关的特定颜色种类在图17中的步骤414测量/生成。
应该注意,电路元件670要正确放置,保证它相对于焊盘654a,654b完全对称地定向。所以,当给电路板加热使焊盘654a,654b上的焊剂熔化时,电路元件被完全焊接到焊盘654a,654b上的可能性就很高。
可以看出,由于在这个特定的示例中电路元件670是对称放置的,所以网格区域652的每一列a,b,c中的颜色种类就都相对于中间列(即网格区域652的列b)对称地定向。
尽管显示的是21个网格带652aa-652gc,应当理解,可以使用多于或少于21个网格带。网格带的大小和位置可以根据多种因素选择,包括但不仅限于电路元件的大小和电路元件放置的容许偏差。
现在参考图21A,一放置电路板750的一个ROI包含一个示范的网格区域752,这个网格区域有21个网格带752aa-752gc。这些网格带表示为752xy,x代表网格区域752中的一行,y代表网格区域752中的一列。举例来讲,网格带752aa对应位于第一列第一行的网格带。电路板750也包含两个焊盘754a、754b和两个线路区域755a、755b。线路区域的颜色已在前面被测量过,并保存为一个第一动态调色板值。电路板750还包括:一个板区域756,其颜色已经归类为亮板的颜色;一个板区域758,其颜色已经归类为暗板的颜色;区域760a,760b,其颜色已经归类为丝印颜色。因此,网格带752aa-752gc内的颜色就与下面的表3中所描述的颜色种类分别对应。
表3
网格带 |
颜色种类 |
网格带 |
颜色种类 |
网格带 |
颜色种类 |
752aa |
亮板颜色 |
752ab |
亮板颜色 |
752ac |
亮板颜色 |
752ba |
丝印 |
752bb |
丝印 |
752bc |
丝印 |
752ca |
焊剂颜色 |
752cb |
其它 |
752cc |
焊剂颜色 |
752da |
焊剂颜色 |
752db |
其它 |
752dc |
焊剂颜色 |
752ea |
其它 |
752eb |
其它 |
752ec |
焊剂颜色 |
752fa |
丝印 |
752fb |
丝印 |
752fc |
丝印 |
752ga |
丝印 |
752gb |
丝印 |
752gc |
丝印 |
如上所述,图像处理系统从与颜色调色板区域相关的颜色种类中选择颜色种类,此处的颜色调色板区域在图15中的步骤302确定。与放置元件的网格带752相关的特定的颜色种类在图17中的步骤414测量/生成。
应该注意,电路元件770未正确放置,这使得它相对于焊盘754a,754b方位不对称。所以,当给电路板加热使焊盘754a,754b上的焊剂熔化时,电路元件被完全焊接到焊盘754a,754b上的可能性就很小。
尽管显示的是21个网格带752aa-752gc,应当理解,可以使用多于或少于21个网格带。网格带的大小和位置可以根据多种因素选择,包括电路元件(例如电路元件770)的大小,以及电路元件放置的容许偏差。
如前所述,图像处理系统能判断元件是否位于与网格区域752对应的一个ROI。而且,由于有了具有充足数量和空间的网格带752aa-752gc的网格区域752,这个光学检验系统就可以确定元件,例如元件770,未正确放置在焊盘754a、754b上。
可以看出,与电路元件670的不对称放置相对应,每个列a,b,c中的颜色种类都未相对中间列(即列b)对称定向。仅从这个信息,光学系统就能确定电路元件在焊盘754a、754b上是倾斜的。
除了检查颜色种类,光学系统也使用这些已经测量并为同样结构的另一个放置电路板保存的颜色种类,来更精确地确定一个未正确放置的电路元件。
现在参考图22,在模块780中,上面带有蚀刻、沉积或其它方式的电子电路线路的未组装印刷电路板被输出给一个如模块782所示的焊剂工作站。这个焊剂应用工作站可以是一个丝印印刷机或任何一般技术人员都熟悉的设备,它将焊剂应用于印刷电路板。某些实施例中,焊剂可以手工处理。无论采用何种方式或技术将焊剂应用于印刷电路板,焊剂都是被用于预先决定该印刷电路板区域的。焊剂应在给定范围内按预定数量使用。处理过程随后流转到模块784,一个焊剂检验系统检验已用于印刷电路板预定位置的焊剂。由此可以确定在模块782中使用的焊剂是否被正确地用在印刷电路板上每个恰当的区域内。如果确定焊剂在某个或多个检查位置没有被正确应用,那么该印刷电路板就返回到模块782,将焊剂重新用于每个它在第一次应用中未被正确使用的位置。所以,模块782和784重复执行,直到贴料检验系统确认焊剂已被正确地用于每个适当位置。
处理过程再流转到模块786,焊剂已被正确应用的印刷电路板被提供给一个元件放置工作站。这个元件放置工作站包含一个被称为挑选与放置的机器,或者说这个放置工作站包括手动放置印刷电路板上的电路元件。选择自动的或手动的元件放置技术要根据多种因素,包括但不仅限于:电路元件的复杂性;电路元件对手动或机器处理的敏感性;自动系统处理特殊大小和形状的电路元件时的技术局限性;自动系统相对手动系统的成本效率。
一旦电路元件放置在印刷电路板上,处理就通过模块788,在模块788中,一个放置检验工作站对放置的电路元件执行检验。响应于模块788处来自放置检验工作站的指令,处理可以根据模块788内放置检验工作站的结果,返回到处理模块782或处理模块786。
一旦在模块788中确定电路元件放置正确而且没发现其它瑕疵,处理过程就流转到模块790,在模块790,一个焊剂回流工作站将回流焊剂,从而将电路元件连接到印刷电路板。焊剂回流工作站可以是自动工作站或手动工作站。在模块790的焊剂回流后,处理过程流转到模块800,在模块800,一个放置与焊接接头检验工作站检验每个电路元件及关心的焊接接头。如果未发现问题,处理过程就流转到模块802,在模块802,得到一个组装印刷电路板。
应当注意,在上面的描述中,前面曾介绍过的包括使用调色板区域的那些检验过程可被用于前面提及的任何或所有的检验步骤784,788,780。
介绍过本发明一些优选实施例以后,本领域一般技术人员都可以很明显地发现,其它体现了优选实施例概念的实施例也可以使用。因此可以知道,这些实施例不应仅限于公开的实施例,而仅应由所附权利要求的本质和范围所限定。