工件检测方法及其系统的制作方法
【专利摘要】本发明的实施方式总体上涉及检测,本发明的实施方式涉及工件检测方法及其系统。为了在保证目标检测质量的同时降低直线检测的复杂度,从而提高检测的速度和效率。本发明创造性的提出了一种工件检测方案。具体而言,本发明提出了一种工件检测方法,包括:生成工件的检测区域的边缘图;将所述边缘图划分为多个网格;对网格中的边缘点进行局部方向拟合以获得所述网格中的边缘点的局部主方向;对所述多个网格的局部主方向进行聚类;以及对聚类后的边缘点进行全局直线拟合以便对所述工件进行定位。
【专利说明】工件检测方法及其系统
【技术领域】
[0001]本发明的实施方式总体上涉及检测(detection),进一步本发明的实施方式涉及工件检测(artifact detection)方法及其系统。
【背景技术】
[0002]在计算机视觉和图像处理领域,边缘检测(edge detection)是指给定一幅图片,从里面自动抽取出边缘的位置,往往生成一幅由边缘点构成的灰度图像(颜色深浅代表边缘的强度)。边缘检测的挑战在于如何设计一个自适应的检测器,既能提取出真实的边缘点,又能避免提取噪声导致的虚假边缘。边缘检测最经典和常用的方法是CANNY算子方法(CANNY 算子方法的具体内容可以参见 http://en.wikipedia.0rg/wiki/Canny_edge_detector)。还有一些现有技术提出对CANNY算子方法的改进。然而CANNY算子方法仅仅对图像中的基本象素的边缘点(edge point)进行检测,并不能直接用于分辨图像中的形状。
[0003]为了进一步分辨图像中的具体形状,在边缘检测的基础上,提出了直线检测(line detection)的概念。在计算机视觉和图像处理领域,直线检测也有广泛的应用。相比边缘检测,是更高一级的应用。对于任意直线的检测,一种常用的方法是LSD算法(参见LSD:带有错误检测控制的快速线段检测器,LSD:A Fast Line SegmentDetector with a False DetectionControl, IEEE Transactions on Pattern Analysisand MachineIntelIigence, Author: Rafael Grompone von Gioij Je f re f mieJakubowicz,Jean—Michel Morel, and Gregory Randall, Volume:32, Issue:4, Page:722 -732,以下简称LSD技术)。然而,这种方法理论上虽然可以用来进行直线检测,但是计算量相对较大,而且经常将一条直线检测成多条。
[0004]直线检测的应用之一就是进行目标检测(object detection)。目标检测是指利用物体的某种视觉特征,在图像或者视频中对物体进行检测与进行定位。目标检测所面临的挑战之一就是如何在保证检测质量的同时提高检测效率,从而实现对物体的实时检测与定位。
【发明内容】
[0005]为了在保证目标检测质量的同时降低直线检测的复杂度,从而提高检测速度与效率。本发明创造性的提出了一种工件检测方案。
[0006]具体而言,本发明提出了一种工件检测方法,包括:生成工件的检测区域(detection area)的边缘图,其中所述边缘图(edge map)包括边缘点;将所述边缘图划分为多个网格;对网格中的边缘点进行局部方向拟合(localorientation fitting)以获得所述网格中的边缘点的局部主方向(localdominant orientation);对所述多个网格的局部主方向进行聚类(clustering);以及对聚类后的边缘点进行全局直线拟合(globalstraight linefitting)以便对所述工件进行定位。
[0007]本发明还提出了一种工件检测系统,包括:生成装置,被配置为生成工件的检测区域的边缘图,其中所述边缘图包括边缘点;划分装置,被配置为将所述边缘图划分为多个网格;第一拟合装置,被配置为对网格中的边缘点进行局部方向拟合以获得所述网格中的边缘点的局部主方向;聚类装置,被配置为对所述多个网格的局部主方向进行聚类;以及第二拟合装置,被配置为对聚类后的边缘点进行全局直线拟合以便对所述工件进行定位。
[0008]利用本发明可以对流水线上的工件(artifact)进行准确、实时定位,从而对定位后的工件准确、快速的采取相应处理措施。
【专利附图】
【附图说明】
[0009]通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0010]图1示出了适于用来实现本发明实施方式的示例性计算系统100的框图;
[0011]图2示出了按照本发明的一个实施例的工件检测方法流程图;
[0012]图3示出了按照本发明的另一个实施例的工件检测方法流程图;
[0013]图4A示出了按照本发明的一个实施例的工件示意图;
[0014]图4B示出了按照本发明的一个实施例的工件的检测区域的示意图;
[0015]图4C示出了按照本发明的一个实施例的工件边缘图的示意图;
[0016]图4D示出了按照本发明的一个实施例的划分了网格的工件边缘图的示意图;
[0017]图4E不出了按照本发明的一个实施例的拟合出的一个网格中的一条直线的不意图;
[0018]图4F示出了按照本发明的一个实施例的利用柱状图对多个网格的局部主方向进行聚类的示意图;
[0019]图4G示出了按照本发明的一个实施例的去噪后的边缘图的示意图;
[0020]图4H示出了按照本发明的一个实施例的进行直线拟合后的边缘图示意图;
[0021]图5A示出了按照本发明的一个实施例的工件在流水线上位置发生倾斜的示意图;
[0022]图5B示出了按照本发明的一个实施例的工件在流水线上位置发生偏移的示意图;
[0023]图5C示出了按照本发明的另一个实施例的工件在流水线上位置发生偏移的示意图;
[0024]图示出了按照本发明的又一个实施例的工件在流水线上位置发生偏移的示意图;
[0025]图6示出了按照本发明的一个实施例的工件检测系统框图;
[0026]图7示出了按照本发明的另一个实施例的工件检测系统框图。
【具体实施方式】
[0027]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整的传达给本领域的技术人员。通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
[0028]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
[0029]下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
[0030]所属【技术领域】的技术人员知道,本发明可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
[0031]可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是一但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(DPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0032]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
[0033]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括一但不限于一无线、电线、光缆、RF等等,或者上述的任意合适的组合。
[0034]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0035]下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0036]也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
[0037]也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0038]图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
[0039]如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
[0040]总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VDSA)局域总线以及外围组件互连(PCI)总线。
[0041]计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
[0042]系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如⑶-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
[0043]具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
[0044]计算机系统/服务器12也可以与一个或多个外部设备14 (例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口 22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[0045]附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0046]图2示出了按照本发明的一个实施例的工件检测方法流程图。图2所示的工件检测方法,包括:步骤201,生成工件的检测区域的边缘图,其中所述边缘图包括边缘点;步骤203,将所述边缘图划分为多个网格;步骤205,对网格中的边缘点进行局部方向拟合以获得所述网格中的边缘点的局部主方向;步骤207,对所述多个网格的局部主方向进行聚类;以及步骤209对聚类后的边缘点进行全局直线拟合以便对所述工件进行定位。
[0047]所述工件可以是任何有固定形状的物体,比如芯片、其它货物、或货物的包装等。图2所示的方法通过对工件上的特定线条的检测从而可以实现对工件进行定位。对流水线上的工件进行实时定位可以便利后续对工件进行相应处理操作,比如在发现芯片在流水线上的位置发生偏移后,机械手臂可以根据偏移的工件位置对工件进行抓取,也可以通过机械手臂纠正芯片的位置。流水线上的工件传送速度直接影响流水线的生成效率,而工件的快速定位直接影响流水线的速度。并且工件定位是流水线上其他作业的一个基础,其决定了后续其他操作是否能够成功(比如机械手臂对物件的操作)。通过应用本发明,可以实现工件的快速、有效定位。虽然在后续实施例中主要以流水线(pipeline)上的工件为例进行说明,但是本发明并不只限于应用于流水线上的工件,而是可以应用于对任何工件进行定位。所述检测区域可以包括工件的一角、工件中的某一边的至少一部分、或者工件中的一个特定区域等。
[0048]下面对图2中的各个步骤进行详细说明。在步骤201,生成工件的检测区域的边缘图,其中所述边缘图包括边缘点。步骤201可以利用任何已知的或未知的边缘检测技术生成边缘图。所述边缘图例如可以包括由边缘点与非边缘点构成的灰度图像。在一个实施例中所述边缘图为二值图像,并且所述边缘点和非边缘点分别用不同的颜色表示。图4A示出了按照本发明的一个实施例的工件示意图。图4A中示意性的标出了三个区域,分别为区域A、B、C。假设区域A为检测区域。图4B示出了检测区域A的示意图。图4C示出了检测区域A的边缘图,其中用白色表示边缘点,黑色表示非边缘点。比如现有的CANNY算子方法可以实现对原始图像进行平滑处理,然后对平滑后的图像进行阈值分割以生成二值化的图像。进行边缘检测的计算量相对较小(比如对于20*20像素的区域利用canny算子方法进行边缘检测,只需要0.5ms左右的时间),因此进行边缘检测的速度不会对工件实时定位产生实质性影响。
[0049]接下来,在步骤203将所述边缘图划分为多个网格。将所述边缘图划分为多个网格并不改变二值图像中边缘点的位置,而是在原有边缘图的基础上进行网格划分。图4D示出了将图4C中的边缘图划分为多个网格(23X28)的示意图。划分网格是为了在后续的局部方向拟合的步骤中减少计算量,从而提高工件定位速度。本发明对网格的划分粒度不做限定,其可以按照实际需要进行划分。
[0050]接下来,在步骤205中对网格中的边缘点进行局部方向拟合以获得所述网格中的边缘点的局部主方向。在图4D的例子中,步骤205为每个网格确定一个倾斜角或斜率,作为局部方向。进一步,步骤205包括根据网格中的所有边缘点的坐标拟合出网格中的一条局部直线使得网格中的各个边缘点到所述局部直线的距离总和最小。例如,在一个网格中拟合出一条局部直线,并且使得这条局部直线的方向代表这个网格中所有边缘点的方向。图4E不出了按照本发明的一个实施例的拟合出的一个网格中的一条局部直线的不意图。在图4E所示的网格中,存在三个边缘点,分别是O、P、Q。拟合出的局部直线L使得网格中的三个边缘点到直线L的距离总和最小。假设一个网格中存在Z个边缘点,每个边缘点的坐标表示为X1、yi,其中i为I到Z的整数。那么该网格中的所有边缘点的局部主方向的倾斜角α和斜率k可以用下述公式I表示。通过计算公式I可以得到每个网格中的边缘点的局部主方向。
[0051 ]
【权利要求】
1.一种工件检测方法,包括: 生成工件的检测区域的边缘图,其中所述边缘图包括边缘点; 将所述边缘图划分为多个网格; 对网格中的边缘点进行局部方向拟合以获得所述网格中的边缘点的局部主方向; 对所述多个网格的局部主方向进行聚类;以及 对聚类后的边缘点进行全局直线拟合以便对所述工件进行定位。
2.如权利要求1所述的方法,其中所述边缘图为二值图像,并且所述边缘图中的边缘点和非边缘点分别用不同的颜色表示。
3.如权利要求1所述的方法,其中所述对网格中的边缘点进行局部方向拟合进一步包括: 根据网格中的所有边缘点的坐标拟合出网格中的一条局部直线使得网格中的各个边缘点到所述局部直线的距离总和最小。
4.如权利要求1所述的方法,其中所述对所述多个网格的局部主方向进行聚类进一步包括: 确定所述边缘图的全局主方向;以及 按照所述全局主方向对所述边缘图中的边缘点进行去噪。
5.如权利要求1所述的方法,其中所述对聚类后的边缘点进行全局直线拟合以便对所述工件进行定位进一步包括:计算拟合出的全局直线的倾斜程度以便根据所述倾斜程度确定所述工件在流水线上的位置倾斜情况。
6.如权利要求1所述的方法,其中所述对聚类后的边缘点进行全局直线拟合以便对所述工件进行定位进一步包括:计算拟合出的全局直线的截距以便根据所述截距确定所述工件在流水线上的位置偏移情况。
7.如权利要求1所述的方法,进一步包括: 获得工件的目标区域;以及 根据工件在流水线上的移动速度对工件的目标区域进行拍摄以获得检测区域的图形。
8.如权利要求7所述的方法,其中所述工件包括训练工件,并且所述获得工件的目标区域进一步包括: 以训练工件的整个区域作为检测区域执行权利要求1中的方法; 确定拟合出的全局直线中包含的边缘点的数量;以及 根据所述数量确定工件的目标区域。
9.如权利要求1所述的方法,进一步包括: 根据拟合出的全局直线所表示的图形判断所述检测区域是否是目标区域。
10.如权利要求9所述的方法,其中所述检测区域中包括至少两条交叉线,并且所述对所述工件进行定位进一步包括: 根据所述图形以及所述交叉线的交叉点的坐标确定所述工件在流水线上的位置偏移。
11.一种工件检测系统,包括: 生成装置,被配置为生成工件的检测区域的边缘图,其中所述边缘图包括边缘点; 划分装置,被配置为将所述边缘图划分为多个网格; 第一拟合装置,被配置为对网格中的边缘点进行局部方向拟合以获得所述网格中的边缘点的局部主方向; 聚类装置,被配置为对所述多个网格的局部主方向进行聚类;以及 第二拟合装置,被配置为对聚类后的边缘点进行全局直线拟合以便对所述工件进行定位。
12.如权利要求11所述的系统,其中所述边缘图为二值图像,并且所述边缘图的边缘点和非边缘点分别用不同的颜色表示。
13.如权利要求11所述的系统,其中所述第一拟合装置进一步被配置为: 根据网格中的所有边缘点的坐标拟合出网格中的一条局部直线使得网格中的各个边缘点到所述局部直线的距离总和最小。
14.如权利要求11所述的系统,其中所述聚类装置进一步包括: 第一确定子装置,被配置为确定所述边缘图的全局主方向;以及 去噪子装置,被配置为按照所述全局主方向对所述边缘图中的边缘点进行去噪。
15.如权利要求11所述的系统,其中所述第二拟合装置进一步被配置为:计算拟合出的全局直线的倾斜程度以便根据所述倾斜程度确定所述工件在流水线上的位置倾斜情况。
16.如权利要求11所 述的系统,其中所述第二拟合装置进一步被配置为:计算拟合出的全局直线的截距以便根据所述截距确定所述工件在流水线上的位置偏移情况。
17.如权利要求11所述的系统,进一步包括: 获得装置,被配置为获得工件的目标区域;以及 拍摄装置,被配置为根据工件在流水线上的移动速度对所述工件的目标区域进行拍摄以获得检测区域的图形。
18.如权利要求17所述的系统,其中所述工件包括训练工件,并且所述获得装置进一步包括: 应用子装置,被配置为以训练工件的整个区域作为检测区域应用权利要求11中的系统; 第二确定子装置,被配置为确定拟合出的全局直线中包含的边缘点的数量;以及 第三确定子装置,被配置为根据所述数量确定工件的目标区域。
19.如权利要求11所述的系统,进一步包括: 判断装置,被配置为根据拟合出的全局直线所表示的图形判断所述检测区域是否是目标区域。
20.如权利要求19所述的系统,其中所述检测区域中包括至少两条交叉线,并且所述对所述工件进行定位进一步包括: 根据所述图形以及所述交叉线的交叉点的坐标确定所述工件在流水线上的位置偏移。
【文档编号】G06T7/00GK103837135SQ201210490612
【公开日】2014年6月4日 申请日期:2012年11月27日 优先权日:2012年11月27日
【发明者】严骏驰, 王宜敏, 朱俊, 田春华 申请人:国际商业机器公司