CN110895679B - 机器视觉图像数据处理方法和装置 - Google Patents

机器视觉图像数据处理方法和装置 Download PDF

Info

Publication number
CN110895679B
CN110895679B CN201910865951.8A CN201910865951A CN110895679B CN 110895679 B CN110895679 B CN 110895679B CN 201910865951 A CN201910865951 A CN 201910865951A CN 110895679 B CN110895679 B CN 110895679B
Authority
CN
China
Prior art keywords
data
image data
dimensional
pose
testing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910865951.8A
Other languages
English (en)
Other versions
CN110895679A (zh
Inventor
Z·H·刘
N·博甘
A·赫尔舍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Cognex Corp
Original Assignee
Cognex Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/129,148 external-priority patent/US10825199B2/en
Priority claimed from US16/129,121 external-priority patent/US10846563B2/en
Priority claimed from US16/129,170 external-priority patent/US10878299B2/en
Application filed by Cognex Corp filed Critical Cognex Corp
Publication of CN110895679A publication Critical patent/CN110895679A/zh
Application granted granted Critical
Publication of CN110895679B publication Critical patent/CN110895679B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/75Determining position or orientation of objects or cameras using feature-based methods involving models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/25Determination of region of interest [ROI] or a volume of interest [VOI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/50Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)
  • Length Measuring Devices By Optical Means (AREA)

Abstract

本文描述的技术涉及用于执行各种方面的方法、装置和计算机可读介质,所述各种方面包括对图像数据测试模型姿态,例如测试三维数据模型姿态。接收物体的三维数据,所述三维数据包括一组数据输入项;将所述三维数据转换为包括一组胞元(各自具有关联值)的字段,所述转换过程包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定每个胞元值的代表性数据。使用所述字段测试所述模型的姿态,以确定所述姿态的分数。

Description

机器视觉图像数据处理方法和装置
技术领域
本文描述的技术大体上涉及用于机器视觉的方法和装置,包括用于处理图像数据和用于搜索图像中图案的技术。
背景技术
机器视觉系统通常执行的一项任务是尝试搜索和识别图像中感兴趣图案的位置和方向。一些技术使用模型表示感兴趣图案,其中可以包括多个探针。每个探针是感兴趣点和关联数据(例如,位置和向量)。例如,每个探针可用于确定运行时图像特征或区域与特定位置的图案特征或区域的相似性度量。多个探针可以以多种姿态应用于运行时图像,并且来自每个姿态的探针的信息可用于确定运行时图像中图案的最可能姿态。
为了加快图案识别过程,一些技术使用多步骤方法进行图案搜索过程。例如,第一步可以包括一个粗略搜索,尝试在图像中找到可能包含图案的一个或多个大致区域。第二步(和/或多个其它步骤)可用于通过搜索一个或多个大致区域中的每个大致区域来优化搜索。例如,算法可使用多个不同模型,其中系统使用每个模型来获得图像的不同关联分辨率。因此,在图案识别过程中,最初可以使用粗略分辨率和关联模型识别图像中图案实例的粗略近似姿态。此后,可以使用相对较精细的分辨率和关联模型更精确地识别图像中图案实例的姿态。此迭代过程持续到使用最精细的分辨率模型并识别出模式实例的精确姿态。
发明内容
根据所公开的主题,提供了用于改进机器视觉技术,特别是用于提高搜索图像中图案的速度和精度的改进机器视觉技术的装置、系统和方法。
一些方面涉及一种用于测试三维数据模型姿态的计算机化方法。所述方法包括:接收物体的三维数据,所述三维数据包括一组数据输入项;将所述三维数据转换为包括一组胞元(cell)(各自具有关联值)的字段,所述转换过程包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定每个胞元值的代表性数据;以及使用所述字段测试所述模型的姿态,以确定所述姿态的分数。
在一些示例中,将所述三维数据转换为字段包括生成一组值的三维阵列。
在一些示例中,将所述三维数据转换为字段包括生成密集填充格,其中所述密集填充格包括所述格的每个胞元的数据。
在一些示例中,所述三维数据的一组数据输入项包括点列表;根据一个或多个数据输入项确定每个胞元值的代表性数据包括基于所述点列表中的一个或多个关联点确定向量。确定所述一个或多个关联点的向量包括基于所述点列表确定所述胞元与所述物体的内部关联;确定所述向量包括将所述向量设置为零。使用字段测试所述模型的姿态以确定分数包括对所述字段测试所述模型的一组探针以确定所述分数,包括对每个探针和所述字段中的关联向量的点积进行求和。
在一些示例中,将所述三维数据转换为包括一组胞元(各自具有关联值)的字段,所述转换过程包括确定每个胞元值的代表性向量,其包括生成累加矩阵,所述矩阵包括计算一组向量的每个向量与自身的外积,其中,所述一组向量是基于来自所述三维数据的一组数据输入项的一个或多个数据输入项确定的数据;以及从所述累加矩阵中提取特征向量、特征值或两者,以确定所述代表性向量。
一些方面涉及一种用于测试三维数据模型姿态的系统。所述系统包括一个或多个处理器,用于:接收物体的三维数据,所述三维数据包括一组数据输入项;将所述三维数据转换为包括一组胞元(各自具有关联值)的字段,所述转换过程包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定每个胞元值的代表性数据;以及使用所述字段测试所述模型的姿态,以确定所述姿态的分数。
在一些示例中,将所述三维数据转换为字段包括生成一组值的三维阵列。
在一些示例中,将所述三维数据转换为字段包括生成密集填充格,其中所述密集填充格包括所述格的每个胞元的数据。
在一些示例中,所述三维数据的一组数据输入项包括点列表;根据一个或多个数据输入项确定每个胞元值的代表性数据包括基于所述点列表中的一个或多个关联点确定向量。确定所述一个或多个关联点的向量包括基于所述点列表确定所述胞元与所述物体的内部关联;确定所述向量包括将所述向量设置为零。使用字段测试所述模型的姿态以确定分数包括对所述字段测试所述模型的一组探针以确定所述分数,包括对每个探针的点积和所述字段中的关联向量求和。
在一些示例中,将所述三维数据转换为包括一组胞元(各自具有关联值)的字段,所述转换过程包括确定每个胞元值的代表性向量,其包括生成累加矩阵,所述矩阵包括计算一组向量的每个向量与自身的外积,其中,所述一组向量是基于来自所述三维数据的一组数据输入项的一个或多个数据输入项确定的数据;以及从所述累加矩阵中提取特征向量、特征值或两者,以确定所述代表性向量。
一些方面涉及至少一个存储处理器可执行指令的非瞬时性计算机可读存储介质,当所述处理器可执行指令由至少一个计算机硬件处理器执行时,使所述至少一个计算机硬件处理器执行接收物体三维数据的动作,所述三维数据包括一组数据输入项;将所述三维数据转换为包括一组胞元(各自具有关联值)的字段,所述转换过程包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定每个胞元值的代表性数据;以及使用所述字段测试所述模型的姿态,以确定所述姿态的分数。
在一些示例中,将所述三维数据转换为字段包括生成一组值的三维阵列。
在一些示例中,将所述三维数据转换为字段包括生成密集填充格,其中所述密集填充格包括所述格的每个胞元的数据。
在一些示例中,所述三维数据的一组数据输入项包括点列表;确定每个胞元值的代表性数据包括基于所述点列表中的一个或多个关联点确定向量。
在一些示例中,确定所述一个或多个关联点的向量包括基于所述点列表确定所述胞元与所述物体的内部关联;确定所述向量包括将所述向量设置为零。
在一些示例中,将所述三维数据转换为包括一组胞元(各自具有关联值)的字段,所述转换过程包括确定每个胞元值的代表性向量,其包括生成累加矩阵,所述矩阵包括计算一组向量的每个向量与自身的外积,其中,所述一组向量是基于来自所述三维数据的一组数据输入项的一个或多个数据输入项确定的数据;以及从所述累加矩阵中提取特征向量、特征值或两者,以确定所述代表性向量。
一些方面涉及一种用于测试图像数据模型姿态的计算机化方法。所述方法包括接收物体的图像数据,所述图像数据包括一组数据输入项。所述方法包括确定所述图像数据的一组区域,其中,所述一组区域中的每个区域包括所述一组数据输入项中关联的一组相邻数据输入项。所述方法包括生成处理后的图像数据,其中所述处理后的图像数据包括一组胞元,每个胞元具有关联值;生成所述处理后的图像数据包括为所述一组区域中的每个区域确定所述图像数据中关联的一组相邻数据输入项中每个数据输入项的最大可能分数。所述方法包括基于所述确定的最大可能分数设置所述一组值的一个或多个值。所述方法包括使用所述处理后的图像数据测试所述模型的姿态。
在一些示例中,接收图像数据包括接收2D图像数据,其中,每个数据输入项包括2D向量;确定所述一组值中每个处理后的图像数据值的最大可能分数包括基于所述值关联区域中的2D向量来确定标量值。
在一些示例中,使用所述处理后的数据测试所述模型姿态包括:确定所述姿态分数未超过预定阈值,该过程包括对所述处理后的数据的关联标量值测试所述模型的多个探针;以及消除用于从进一步测试中确定关联标量值的与每个区域关联的一组姿态。
在一些示例中,接收图像数据包括接收3D图像数据,其中,每个数据输入项包括3D向量;确定所述一组值的每个处理后的图像数据值的最大可能分数包括基于所述值关联区域中的3D向量来确定标量值。使用所述处理后的数据测试所述模型的姿态可包括:确定所述姿态分数未超过预定阈值,该过程包括对所述处理后的数据的关联标量值测试所述模型的多个探针;以及消除用于从进一步测试中确定关联标量值的与每个区域关联的一组姿态。
在一些示例中,所述方法包括:将所述三维数据转换为包括第二组胞元(各自与第二值关联)的第二字段,所述转换过程包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定每个第二胞元值的代表性数据;以及基于使用所述字段对所述模型姿态的测试,使用所述第二字段来测试所述模型的姿态。
一些方面涉及一种用于对图像数据测试模型姿态的系统,所述系统包括一个或多个处理器用于接收物体的图像数据,所述图像数据包括一组数据输入项。所述一个或多个处理器用于确定所述图像数据的一组区域,其中,所述一组区域中的每个区域包括所述一组数据输入项中关联的一组相邻数据输入项。所述一个或多个处理器用于生成处理后的图像数据,其中,所述处理后的图像数据包括一组胞元,每个胞元具有关联值;生成所述处理后的图像数据包括为所述一组区域中的每个区域确定所述图像数据中关联的一组相邻数据输入项中每个数据输入项的最大可能分数。所述一个或多个处理器用于基于所述确定的最大可能分数设置所述一组值的一个或多个值。所述一个或多个处理器用于使用所述处理后的图像数据测试所述模型的姿态。
在一些示例中,接收图像数据包括接收2D图像数据,其中,每个数据输入项包括2D向量;确定所述一组值中每个处理后的图像数据值的最大可能分数包括基于所述值关联区域中的2D向量来确定标量值。使用所述处理后的数据测试所述模型的姿态可包括:确定所述姿态分数未超过预定阈值,该过程包括对所述处理后的数据的关联标量值测试所述模型的多个探针;以及消除用于从进一步测试中确定关联标量值的与每个区域关联的一组姿态。
在一些示例中,接收图像数据包括接收3D图像数据,其中,每个数据输入项包括3D向量;确定所述一组值中每个处理后的图像数据值的最大可能分数包括基于所述值关联区域中的3D向量来确定标量值。使用所述处理后的数据测试所述模型的姿态可包括:确定所述姿态分数未超过预定阈值,该过程包括对所述处理后的数据的关联标量值测试所述模型的多个探针;以及消除用于从进一步测试中确定关联标量值的与每个区域关联的一组姿态。
在一些示例中,所述一个或多个处理器还用于将所述三维数据转换为包括第二组胞元(各自与第二值关联)的第二字段,所述转换过程包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定每个第二胞元值的代表性数据;以及基于使用所述字段对所述模型姿态的测试,使用所述第二字段来测试所述模型的姿态。
一些方面涉及至少一个存储处理器可执行指令的非瞬时性计算机可读存储介质,所述处理器可执行指令由至少一个计算机硬件处理器执行时,使所述至少一个计算机硬件处理器执行以下动作:接收物体的三维数据,所述三维数据包括一组数据输入项。所述指令使所述至少一个计算机硬件处理器确定所述图像数据的一组区域,其中,所述一组区域中的每个区域包括所述一组数据输入项中关联的一组相邻数据输入项。所述指令使所述至少一个计算机硬件处理器生成处理后的图像数据,其中所述处理后的图像数据包括一组胞元,每个胞元具有关联值;生成所述处理后的图像数据包括为所述一组区域中的每个区域确定所述图像数据中关联的一组相邻数据输入项中每个数据输入项的最大可能分数。所述指令使所述至少一个计算机硬件处理器基于所述确定的最大可能分数设置所述一组值的一个或多个值。所述指令使所述至少一个计算机硬件处理器使用所述处理后的图像数据测试所述模型的姿态。
在一些示例中,所述指令使所述至少一个计算机硬件处理器执行以下动作:接收图像数据,包括2D图像数据,其中,每个数据输入项包括2D向量;确定所述一组值中每个处理后的图像数据值的最大可能分数包括基于所述值关联区域中的2D向量来确定标量值。使用所述处理后的数据测试所述模型的姿态可包括:确定所述姿态分数未超过预定阈值,该过程包括对所述处理后的数据的关联标量值测试所述模型的多个探针;以及消除用于从进一步测试中确定关联标量值的与每个区域关联的一组姿态。
在一些示例中,接收图像数据包括接收3D图像数据,其中,每个数据输入项包括3D向量;确定所述一组值的每个处理后的图像数据值的最大可能分数包括基于所述值关联区域中的3D向量来确定标量值。
在一些示例中,使用所述处理后的数据测试所述模型姿态包括:确定所述姿态分数未超过预定阈值,该过程包括对所述处理后的数据的关联标量值测试所述模型的多个探针;以及消除用于从进一步测试中确定关联标量值的与每个区域关联的一组姿态。
在一些示例中,所述指令使所述至少一个计算机硬件处理器执行以下动作:将所述三维数据转换为包括第二组胞元(各自与第二值关联)的第二字段,所述转换过程包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定每个第二胞元值的代表性数据;以及基于使用所述字段对所述模型姿态的测试,使用所述第二字段来测试所述模型的姿态。
一些方面涉及一种用于测试三维模型姿态的计算机化方法,所述方法包括:存储三维模型,所述三维模型包括一组探针;接收物体的三维数据,所述三维数据包括一组数据输入项;将所述三维数据转换为一组字段,包括:生成包含第一组值的第一字段,其中,所述第一组值的每个值指示所述一组数据输入项中关联的一个或多个数据输入项的第一特征;生成包含第二组值的第二字段,其中,所述第二组值中的每个第二值指示来自所述数据输入项的关联的一个或多个数据输入项的第二特征,其中,所述第二特征不同于所述第一特征;使用所述一组字段测试所述三维模型的姿态,包括对所述一组字段测试所述一组探针,以确定所述姿态的分数。
在一些示例中,生成所述第一字段和所述第二字段包括为每个字段生成三维阵列,其中每个三维阵列包括一组三个索引,其包括每个维度的索引;每个三维阵列用所述一组三个索引表示所述关联的第一值和第二值的x、y和z位置。
在一些示例中,所述探针、所述第一字段的第一组值和所述第二字段的第二组值包括表面法线数据、边缘边界数据、强度数据或其某种组合。
在一些示例中,测试所述姿态以确定所述姿态的分数包括对每个探针和相关值的点积进行求和。
在一些示例中,所述方法包括测试多个姿态以确定多个关联分数;确定所述多个姿态中的哪些姿态包括使用高于预定阈值的分数生成一组姿态;为后续处理存储所述一组姿态。所述一组姿态中的每个姿态表示所述关联分数的局部峰值,所述方法还包括细化所述一组姿态以确定所述模型的顶部姿态。
一些方面涉及一种用于确定图像采集参数的系统,所述系统包括一个或多个处理器,用于:存储三维模型,所述三维模型包括一组探针;接收物体的三维数据,所述三维数据包括一组数据输入项;将所述三维数据转换为一组字段,该过程包括:生成包含第一组值的第一字段,其中,所述第一组值的每个值指示所述一组数据输入项中关联的一个或多个数据输入项的第一特征;生成包含第二组值的第二字段,其中,所述第二组值中的每个第二值指示来自所述数据输入项的关联的一个或多个数据输入项的第二特征,其中,所述第二特征不同于所述第一特征;使用所述一组字段测试所述三维模型的姿态,包括对所述一组字段测试所述一组探针,以确定所述姿态的分数。
在一些示例中,生成所述第一字段和所述第二字段包括为每个字段生成三维阵列,其中每个三维阵列包括一组三个索引,其包括每个维度的索引;每个三维阵列用所述一组三个索引表示所述关联的第一值和第二值的x、y和z位置。
在一些示例中,所述探针、所述第一字段的第一组值和所述第二字段的第二组值包括表面法线数据、边缘边界数据、强度数据或其某种组合。
在一些示例中,测试所述姿态以确定所述姿态的分数包括对每个探针和相关值的点积进行求和。
在一些示例中,所述一个或多个处理器还用于测试多个姿态以确定多个关联分数;确定所述多个姿态中的哪些姿态包括使用高于预定阈值的分数生成一组姿态;为后续处理存储所述一组姿态。
在一些示例中,所述一组姿态中的每个姿态表示所述关联分数的局部峰值,所述方法还包括细化所述一组姿态以确定所述模型的顶部姿态。
一些实施例涉及至少一个存储处理器可执行指令的非瞬时性计算机可读存储介质,所述处理器可执行指令由至少一个计算机硬件处理器执行时,使所述至少一个计算机硬件处理器执行以下动作:存储三维模型,所述三维模型包括一组探针;接收物体的三维数据,所述三维数据包括一组数据输入项;将所述三维数据转换为一组字段,包括生成包含第一组值的第一字段,其中,所述第一组值的每个值指示所述一组数据输入项中关联的一个或多个数据输入项的第一特征;生成包含第二组值的第二字段,其中,所述第二组值中的每个第二值指示来自所述数据输入项的关联的一个或多个数据输入项的第二特征,其中,所述第二特征不同于所述第一特征;使用所述一组字段测试所述三维模型的姿态,包括对所述一组字段测试所述一组探针,以确定所述姿态的分数。
在一些示例中,生成所述第一字段和所述第二字段包括为每个字段生成三维阵列,其中每个三维阵列包括一组三个索引,其包括每个维度的索引;每个三维阵列用所述一组三个索引表示所述关联的第一值和第二值的x、y和z位置。
在一些示例中,所述探针、所述第一字段的第一组值和所述第二字段的第二组值包括表面法线数据、边缘边界数据、强度数据或其某种组合。
在一些示例中,测试所述姿态以确定所述姿态的分数包括对每个探针和相关值的点积进行求和。
在一些示例中,所述指令还使所述一个或多个处理器测试多个姿态以确定多个关联分数;确定所述多个姿态中的哪些姿态包括使用高于预定阈值的分数生成一组姿态;为后续处理存储所述一组姿态。
在一些示例中,所述一组姿态中的每个姿态表示所述关联分数的局部峰值,所述指令还包括细化所述一组姿态以确定所述模型的顶部姿态。
因此,对于所公开的主题已经进行了相当广泛的论述,以更好地理解下列详细描述以及更好地理解本发明对所述领域做出的贡献。当然,下文还将描述所公开主题的其它特征,这些特征将构成所附权利要求的主题。应当理解的是,本文使用的措辞和术语是为了描述的目的,而不应当被认为是限制性的。
附图说明
在附图部分,在各附图中示出的每个相同或几乎相同的组件由相同的参考字符表示。为清楚起见,可能并非每个组件都在各附图中标记。附图不一定是按比例绘制的,而是将重点放在本文所述技术和设备的各个方面。
图1示出了根据一些实施例的示例性机器视觉系统。
图2A示出了根据一些实施例的用于生成字段和使用字段测试模型的示例性方法。
图2B示出了根据一些实施例的用于生成字段的示例性方法。
图3示出了根据一些实施例的示例性三维图像数据和关联字段。
图4示出了根据一些实施例的用于为粗略搜索生成处理后的图像数据的示例性方法。
图5示出了根据一些实施例的示例性二维图像数据和关联的处理后的图像数据。
图6示出了根据一些实施例的在粗略搜索期间示例性地消除所述二维图像数据的一组姿态和关联数据输入项。
图7示出了根据一些实施例的示例性三维图像数据和关联的处理后的图像数据。
图8示出了根据一些实施例的在粗略搜索期间示例性地消除所述三维图像数据的一组姿态和关联数据输入项。
图9示出了根据一些实施例的初始姿态搜索的示例方法。
具体实施方式
在以下描述中,详细介绍了关于所述公开主题的系统和方法以及此类系统和方法可以运行的环境,以便透彻了解所述公开主题。此外,应当理解的是,下面提供的示例是示例性的,预计所述公开主题还包括其它系统和方法。
图1示出了根据一些实施例的示例性机器视觉系统100。示例性机器视觉系统100包括摄像头102(或其它成像获取设备)和计算机104。计算机104包括一个或多个处理器和计算机显示器形式的人机界面以及可选的一个或多个输入设备(例如,键盘、鼠标、轨迹球等)。摄像头102还包括镜头106和摄像头传感器元件(未示出)。镜头106包括视字段108,镜头106将来自视字段108的光线聚焦到传感器元件上。所述传感器元件生成摄像头视字段108的数字图像,并将所述图像提供给构成计算机104一部分的处理器。如图1的示例所示,物体112沿着传送器110进入摄像头102的视字段108。如本文进一步讨论的,摄像头102可以在物体112处于视字段108中进行处理时生成一个或多个数字图像。在运行中,所述传送器可以包含多个物体。这些物体可以,例如在检测过程中,依次通过摄像头102的视字段108。因此,摄像头102可以获取每个观察物体112的至少一个图像。
在一些实施例中,摄像头102是二维成像设备,例如二维(two-dimensional,简称2D)CCD或CMOS成像阵列。在一些实施例中,二维成像设备生成二维亮度值阵列。在一些实施例中,机器视觉系统可以通过生成二维梯度字段图像等来处理2D数据。例如,梯度字段图像可包括一组具有关联长度和方向的胞元。例如,梯度字段可以包含向量(x,y)的笛卡尔分量,这可以表示长度和方向,梯度字段可以存储实际(r,theta)值等。在一些实施例中,摄像头103是三维(three-dimensional,简称3D)成像设备。3D成像设备可以生成一组(x,y,z)点(例如,z轴添加第三维度,例如与3D成像设备的距离)。3D成像设备可以使用各种3D图像生成技术,例如明暗恢复形状、立体成像、飞行时间技术、基于投影仪的技术和/或其它3D生成技术。
在一些实施例中,机器视觉系统处理来自摄像头103的3D数据。从摄像头103接收的3D数据可包括点云和/或距离图像等。点云可包括一组位于或靠近固体物体表面的3D点。例如,这些点可以通过它们在直线坐标系或其它坐标系中的坐标表示。在一些实施例中,其它信息(例如,指示物体表面相邻点的网状结构或格结构)也可以选择性地存在。在一些实施例中,可在输入点云中包括有关表面特征的信息,包括曲率、表面法线、边缘和/或颜色和反照率信息(源自传感器测量值或先前计算的信息)。在一些实施例中,可以从2D和/或3D传感器、CAD或其它实体模型和/或通过预处理距离图像、2D图像和/或其它图像获得2D和/或3D数据。
计算机104的示例可包括但不限于单台服务器计算机、一系列服务器计算机、单台个人计算机、一系列个人计算机、小型计算机、大型计算机和/或计算云。计算机104的各种组件可以执行一个或多个操作系统,包括但不限于:Microsoft Windows ServerTM、NovellNetwareTM、Redhat LinuxTM、Unix和/或自定义操作系统。计算机104的一个或多个处理器可用于处理存储在与一个或多个处理器连接的存储器中的操作。存储器可包括但不限于硬盘驱动器、闪存驱动器、磁带驱动器、光驱、RAID阵列、随机存取存储器(random accessmemory,简称RAM)和只读存储器(read-only memory,简称ROM)。
如本文所述,为了在物体的图像中搜索模型,可以将这些技术用于执行两个(或更多)阶段,包括确定图像中模型的近似或粗略位置的第一阶段,以及细化粗略位置以确定模型的特定位置的第二阶段。使用多个阶段是有益的,例如,因为不同阶段可以使用不同的技术方法执行搜索,以提高搜索速度、效率等。例如,对于2D图案搜索方法,这些技术可包括训练包含一组探针的物体的模型。2D探针中的每个探针都可包括(x,y)位置和方向。机器视觉系统存储经过训练的模型,用于搜索随后捕获的字段景的运行时图像(例如,图1中所示的沿着传送带110移动的物体112的字段景)。机器视觉系统可以捕获字段景的图像,例如具有像素值的2D图像,这些像素值表示每个胞元中累积的光。机器视觉系统可以将2D图像转换为密集梯度字段,其中每个胞元包括反映特定图像数据变化的单个梯度值(例如,对于恒定区域,梯度可能接近零,并且边缘较大)。梯度值可以是向量、标量值(例如长度或方向角)等。例如,如果每个胞元包含向量,则该向量的长度可以为零。机器视觉系统可以测试2D模型的不同转换(例如,平移、旋转、缩放、偏斜、方位、透视等)来计算特定位置的分数。分数可以反映探针与2D图像的向量匹配的程度等(例如,向量是输入2D信息的梯度,如本文进一步讨论)。例如,一些技术可以逐个测试模型,并获取最高评分位置以进行后续改进。一些技术可用于关注局部峰值,因为附近的搜索将是类似的,并且系统可尽量避免将附近的所有匹配标记为候选状态。例如,在3D环境中,图像可以是距离图像、点云等。作为一般事项,如本文进一步讨论的,机器视觉系统可以训练包含一组探针的物体的3D模型。机器视觉系统可以使用3D模型在运行的3D图像中搜索3D模型的姿态。如本文所述,机器视觉系统可以处理3D图像以生成一个或多个3D字段,以便于搜索3D模型的姿态。所述字段可以包含一组向量。可以存储向量(x,y,z)的笛卡尔分量,这可以表示长度和方向,所述字段可以存储实际(r,lat,long)值等。
此处讨论的实施例可用于各种不同的应用中,其中一些应用可包括但不限于视觉引导机器人中的部分拾取、三维检查、汽车配件、模制塑料和铸件体积检查以及组装检查。此类应用可包括搜索和识别图像中感兴趣图案的位置和方向(例如,引导机器人抓取器或检查物体)。在一些实施例中,训练步骤用于开发模型以表示感兴趣的图案,该图案可包括多个探针。每个探针都是感兴趣点和关联数据(例如,位置和向量),并且可以用于确定运行时图像特征或区域与特定位置的图案特征或区域的相似度等。多个探针可以以多种姿态应用于运行时图像,并且来自每个姿态的探针的信息可用于确定运行时图像中图案的最可能姿态。
本发明人已经发现,当使用传统的3D数据时,现有的机器视觉技术可能存在显著的低效率。特别地,本发明人已经发现,通过在3D数据中搜索点的相邻点(例如,通过在点云中搜索附近的点)经常消耗大量的处理时间。例如,虽然机器视觉系统可以有效地处理连续数据,但机器视觉系统搜索和随机访问数据的效率却大大降低。特别是,计算设备通常包括经过优化的硬件,用于对连续存储器位置上重复的任务进行大规模并行化。使用条件分支中断此类并行可能会显著降低性能(例如,由于分支通常需要停止并行活动、花费时间执行分支/跳转,然后重新启动并行活动)。本发明人已经开发了对机器视觉技术的技术改进,以解决这些和其它低效率问题。如本文进一步讨论的,这些技术包括从3D数据开发密集字段,其中密集字段包括根据3D数据确定的每个字段值的数据。本发明人已经发现,因为每个值都包括数据,所以机器视觉技术可以使用字段值作为过程的一部分,以避免搜索如上所述的相邻点,这可以显着地减少现有机器视觉技术的处理时间。此处公开的技术通过在字段或格的每个输入项处创建数据并连续处理这些数据,可以避免中断并行化的耗时分支,从而显著提高性能。
图2A示出了根据一些实施例的用于从3D图像生成字段以测试3D模型的示例性方法200。在步骤202中,机器视觉系统接收物体的三维数据(例如点云、密集3D图像等)。三维数据包括一组数据输入项,例如距离图像(例如,其每个胞元具有高度)、点云和/或有关3D数据的其它信息。在步骤204中,机器视觉系统将三维数据转换为字段。所述字段包含一组值。所述方法包括为字段的每个值确定从3D数据导出的代表性数据。代表性数据可包括数据输入项的向量和/或其它代表性信息等,例如仅向量长度和/或方向,而不是完整向量、矩阵(例如,本文进一步讨论的vvT)等。所述方法可包括基于一个或多个数据输入项从三维数据的一组数据输入项中确定代表性数据。在步骤206中,机器视觉系统使用字段测试模型的姿态,以确定姿态的分数。在步骤208中,机器视觉系统确定姿态是可接受的,还是应跳过姿态(例如,忽略、丢弃等)。例如,机器视觉系统可以对3D模型对字段的姿态进行评分,并确定分数是否高于阈值。作为另一个示例,如本文进一步讨论的,机器视觉系统可以对3D模型对多个字段的姿态进行评分。如果分数满足阈值(例如,高于阈值),则方法继续到步骤210,并且机器视觉系统存储姿态(例如,用于后续细化,如本文所讨论)。如果评分不满足阈值,则方法继续执行步骤212,并确定是否有其它3D模型的姿态要测试。如果存在更多姿态,方法继续返回步骤206,以测试3D模型的另一姿态。如果不存在更多姿态,则方法转到步骤214并结束。
参考步骤204,将三维数据转换为字段可包括生成一组值的三维阵列。例如,这三个维度可以表示3D数据的x、y和z轴。值集中的每个值都可以是向量。向量可以通过各种方式表示。例如,在一些实施例中,每个向量可以存储为x、y和z分量,其中每个分量可以使用一定数量的比特(例如,签名的8位整数)表示,其中的值可以在-127到127之间。作为另一个示例,在一些实施例中,可以使用长度和两个角度来表示每个向量。在一些实施例中,将三维数据转换为字段可包括生成密集填充格。密集填充格可包括,例如,格中每个可能点的值。格中的点可以或不可以连接到3D数据中数据输入项的原始位置。例如,可以使用内核或过滤器,以使格点具有不同于3D数据的格。此过程可包括将点云转换为密集字段,其中密集字段包括密集字段的每个可能位置处的向量。
在一些实施例中,这些技术可包括在生成字段之前对3D数据应用转换。例如,这些技术可包括在生成字段之前应用刚性转换、线性转换和/或非线性转换。在一些实施例中,这些技术可包括应用一个或多个转换以考虑失真。例如,可以通过延迟获取点云,从而使值在一个或多个轴上偏斜,并且点云可以转换为考虑偏斜。在一些实施例中,这些技术可包括在搜索模型的姿态时搜索模型的失真。例如,可以通过测试模型的各种转换来搜索自由的失真程度。
进一步参考步骤204,图2B示出了根据一些实施例的用于生成字段的示例性方法250。例如,在一些实施例中,这些技术可用于将3D点云转换为密集字段。密集字段包括在每个字段值处的数据,如本文进一步讨论的(例如,点云仅列出有点的位置,而附近位置没有点则表示没有点)。如上所述,数据可以包含向量。字段单元(x,y,z)表示向量出现在字段中的位置。在一些实施例中,3D数据中三维物体内部的字段值可设置为零。因此,在某些实现中,与3D数据相比(例如,与点云相比),该字段可以提供更容易的信息访问。在一些实施例中,该字段可以使3D数据看起来更加统一,而其它3D数据(例如点云)可能突出显示特定区域。作为另一个示例,在一些实施例中,这些技术可用于将密集型3D图像转换为密集字段。例如,系统可以确定密集型3D图像的每个点处的梯度,并应用方法250,如本文进一步讨论的。
在步骤252中,机器视觉系统为每个3D数据输入项(例如,3D点)确定一组向量。例如,机器视觉系统可以使用相邻3D数据点位置和/或来自3D传感器的信息来确定每个3D数据输入项的表面法向量和边向量。任何向量的长度都可以为零(0),例如,表示特定的数据输入项没有明确的法线或边缘。
在步骤254中,对于每个3D数据输入项(例如,点),机器视觉系统确定包含每个3D数据输入项的字段单元(例如,体素)。在步骤256中,机器视觉系统确定与每个字段单元相关联的累计数据。在一些实施例中,这些技术包括确定与每个字段单元相关联的输入向量。在一些实施例中,系统可以累积有关与位于该字段单元中的所有3D数据点相关联的向量的概要信息。例如,概要概要信息可包括向量分量本身(例如,极性为有意义时)和/或其它信息,例如由每个向量的外积与自身vvT形成的矩阵分量(例如,当极性为无意义时可使用)。在一些实施例中,这些技术可包括扩展每个点的影响范围,以模糊或增厚3D数据的特征等。在一些实施例中,系统可以在每个3D数据点周围的预定图案中进行复制。例如,预定图案可以相对于向量的方向。例如,这些技术可以使表面增厚(例如,通过复制上方和下方的法线)、边缘增厚(例如,通过复制折痕向量周围的圆柱体中的边缘)等。预定图案可能因向量所代表的内容而有所不同,例如,向量表示法线还是边缘。
在步骤258中,机器视觉系统根据步骤256的累积数据确定每个字段单元的代表性数据。在一些实施例中,如果字段单元未与任何累积数据相关联(例如,未与任何3D数据输入项相关联,例如,没有任何向量落入字段单元中),则可以将字段单元设置为零(例如,当字段包括向量时,零用于指零向量)。
在一些实施例中,这些技术可包括基于在步骤254中确定的该字段单元的累积数据来确定每个字段单元的代表性向量。例如,可以通过从累加矩阵中提取特征向量(例如,通过将每个向量的外积与自身vvT相累加而形成)等计算逐个分量的平均值来确定代表性向量。在一些实施例中,可以将正则化常数添加到分母中,例如,防止除数为零,以在相关数据较少的情况下或类似的情况下减少代表性向量的长度。例如,通过正则化常数k以及以下等式,可以为一组n个向量v计算矩阵M,该向量v包括向量v1至vn(虽然为简单起见在等式中未示出,但是对于i=1-n,求和是在所有向量vi上进行的):
在一些实施例中,机器视觉系统可以在生成字段时存储矩阵M(例如,用于姿态测试)。在一些实施例中,可以存储矩阵M的代表性数据,例如,仅存储矩阵中的六个唯一值、代表六个唯一值的信息(例如,六个值中只有五个(或更少),因为可以加上单位矩阵的常数倍数以使其中一个值为零)等等。
在一些实施例中,机器视觉系统可以使用矩阵M确定代表性向量。例如,机器视觉系统可以使用特征分解来确定代表性向量,如上所述。可以使用特征值、特征向量和/或两者计算代表性向量。在一些实施例中,特征值可用于确定代表性向量的长度。例如,最大特征值可用于表示最大长度。作为另一个示例,一个或多个其它特征值可以与最大特征值结合使用(例如,为了考虑代表性向量中向量的潜在不一致)。在一些实施例中,特征向量可用于确定代表性向量的方向。例如,与最大特征值关联的特征向量可用于表示主要方向。特征值可与特征向量相乘,以确定代表性向量。例如,与最大特征值关联的特征向量可以仅与最大特征值相乘,与第二大特征值与最大特征值的差相乘(例如,当最大和第二大特征值具有相同的值时,该值可以为零),等等。在一些实施例中,特征向量可以与特征值的平方根相乘,例如,以便从vvT中删除长度的平方。例如,与最大特征值关联的特征向量可以与最大特征值的平方根相乘,与第二大特征值与最大特征值的差的平方根相乘,等等。
在一些实施例中,该字段可以归一化。例如,系统可以通过映射每个向量的长度(例如通过sigmoid函数)来归一化字段,而无需更改方向。例如,可以使用归一化来调整相对于阈值的姿态分数响应。例如,一些实施例可以简单地将分数结果分为通过(例如,高于阈值)或失败(例如,低于阈值)。在一些实施例中,可以更稳定地对字段进行归一化(例如,使用sigmoid函数来输出0和1之间的长度)。
在一些实施例中,该字段未归一化。例如,在一些实施例中,原始数据(例如,向量长度)在没有归一化的情况下可能是有意义的。例如,向量长度越短,对法线或边缘的置信度/一致性就越小,而向量长度越长,置信度就越高。在一些实施例中,评分技术(例如,如本文所述的点积)可包括来自字段(例如,长度)的此类数据,且因此可期望使用非归一化字段。
在一些实施例中,每个字段单元值可以基于3D数据中的一个关联数据输入项、3D数据中的多个数据输入项和/或所有数据输入项。在一些实施例中,这些技术可包括确定每个字段单元值的向量。例如,三维数据的数据输入项可包括点列表,并且这些技术可以根据点列表确定每个字段单元的向量。在一些实施例中,如上所述,这些技术可以确定3D数据中物体内部的字段的值。例如,机器视觉系统可以根据点云确定一个或多个字段单元与物体的内部部分关联,并将值设置为零。
参考步骤206至212,如上所述,方法200可用于在3D图像中执行3D模型对齐搜索的粗略阶段。在一些实施例中,方法200可以在字段中搜索3D模型的近似姿态,该姿态可以通过后续步骤进一步细化。该近似姿态可包括,例如,包括(x,y,z)位置的3D位置以及方向数据,例如滚动、俯仰和/或偏航。参考步骤206,在一些实施例中,测试包括将3D模型的一组探针测试到字段。例如,机器视觉系统可以通过将每个探针和字段中的关联向量的点积进行相加,对所述字段测试模型的一组探针以确定分数。在一些实施例中,如结合图9进一步讨论的,分数可以基于多个值(例如,多个字段),例如折痕边缘信息、遮挡边界信息、颜色信息、强度信息等。
图3示出了根据一些实施例的示例性三维图像数据300和关联字段350。可以使用图2B中的方法250生成字段350。3D图像数据300包括一组数据输入项302A至302N(统称为数据输入项302)。对于每个数据输入项302,机器视觉系统可以确定一组向量。例如,机器视觉系统可以确定数据输入项302A的向量v1到vn,如图3所示。字段350包括一组具有关联值352A至352N(统称为单元352)的单元。要将3D图像数据300转换为字段350,机器视觉系统可以执行一个或多个函数,将确定的向量转换为关联的字段值。例如,如值352A所示,机器视觉系统可以执行在数据输入项302A的向量v1至vn上运行的函数,以生成数据输入项302A的概要信息“s”。如本文所述,该函数的结果值s可以是单个向量、标量值(例如,向量长度)和/或其它概要信息。可以对每个数据输入项执行该函数,以填充字段的关联值。虽然图3仅示出了用于数据输入项302A的一组向量v1至vn,但是这仅是出于示例性目的来说明这些技术。如本文所述,这些技术可包括累积有关用于确定每个字段单元的关联值的多个数据点的信息。
如上所述,概要信息“s”可以转换为最终代表性向量(未在图3中显示)。例如,在一些实施例中,可以通过计算逐个分量的平均值来将概要信息“s”转换为最终代表性向量,该逐个分量的平均值将概要信息除以累积到该胞元的输入项的数量(例如,可选地,具有分母中的正则化常数)。作为另一个示例,在一些实施例中,可以从用于累积信息的矩阵中提取特征向量。
本发明人已经确定,无论是图像数据是2D数据还是3D数据,在图像数据中搜索模型都可以是时间密集型过程,因为该过程可能需要对数据迭代地测试模型的每个姿态。例如,执行搜索时,存在搜索空间的维度(例如,例如2D或3D运行时数据等图像数据和/或字段),以及姿态空间的维度(例如,x、y、z、滚动、俯仰、偏航、缩放、偏斜、方位、透视和其它非线性失真等)。维数增加越多,用于在图像数据中搜索模型的姿态就越多,这增加了搜索模型所需的处理。
本发明人已经开发在搜索模型之前处理图像数据的技术。处理后的图像数据允许系统在搜索过程中消除大量潜在姿态空间。机器视觉系统可用于在搜索空间中执行大光点检查,然后细化那些区域,以显著提高处理速度。如下文进一步讨论的,处理后的图像数据允许机器视觉系统采取任意大步长,使得仍可确保机器视觉系统不会遗漏任何姿态,当细化该姿态时,该姿态将获得很好的分数(例如,高于预定阈值)。例如,此技术与下采样技术进行对比,下采样技术可用于提高搜索速度,但可能会漏掉姿态,否则会被视为姿态细化。在一些实施例中,此处讨论的技术还可以提供图像数据的相同维度(例如,字段)的采样,从而将图像数据的一组数据输入项减至单个值。处理后的图像数据中的一组值允许机器视觉系统测试姿态,以确定是否可以在图像数据中的任何相关联的姿态处找到模型。
如本文进一步讨论的,这些技术通常可以将搜索分为一个或多个层。例如,这些技术可以生成两个不同的图像数据层,包括第一层处理后的图像数据(例如,第1层)和第二层处理后的图像数据(例如,第2层),以创建图像数据的较大搜索区域,其中第二层中的每个较大搜索区域累加表示第一层的若干较小区域。系统可以处理较低层的每个较大区域,以确定它是否会搜索较高层中较小区域(例如,其中层“1”是层“2”的较高层)的姿态。如本文所述,系统可以使用第三层和/或更多层,其中每个较低层使用比之前层更大的区域生成。在一些实施例中,可以使用关联的较小区域的最大分数界限来分析较大区域。最大分数技术可用于允许系统确定模型的分数不会高于区域中的值。因此,系统可以使用最大分数技术来确定更高层中关联区域中的任何可能姿态的分数足够高,使得这些姿态在测试图像数据时值得进一步检查。否则,系统可以确定在与该区域关联的任何数据输入项中,所述姿态不值得进一步考虑。
图4示出了根据一些实施例的粗略搜索的示例性方法400。在步骤402中,机器视觉系统接收物体的图像数据(例如,例如点云、密集3D图像等的2D数据或3D数据)。图像数据包括一组数据输入项,其中可包括梯度信息、向量等。在步骤404中,系统确定图像数据的一组区域。每个区域包括来自图像数据的一组关联的相邻数据输入项。在步骤406中,系统使用该一组区域生成处理后的图像数据。如本文进一步讨论的,处理后的图像数据包括一组胞元,每个胞元都具有关联的值。系统可以通过为每个区域确定来自图像数据的一组关联的相邻数据输入项中每个数据输入项的最大可能分数,来生成处理后的图像数据。系统可以根据确定的最大可能分数设置处理后的图像数据值中的一个或多个。在步骤408中,系统使用处理后的图像数据测试模型的姿态,以计算姿态的分数。在步骤410中,系统确定分数是否满足预定阈值。如果分数不满足阈值,则方法进入步骤412,并消除一个或多个区域的后续姿态测试。如果分数满足阈值,则方法进入步骤414并存储姿态(例如,用于后续细化)。在步骤416中,系统确定是否有更多姿态需要测试,如果有,则方法返回步骤408,否则方法在步骤418处结束。
参考步骤402,图像数据可以是表示任何类型数据的向量字段。例如,向量字段可以表示(a)表面法向量、(b)折痕边向量(例如,对于物体的实际边缘,例如图书的侧面和/或轮廓或遮挡边缘,例如,不是杯子实际边缘的杯子边缘,因为杯子是圆柱形的)和/或(c)颜色边向量中的一种或多种,例如,基于物体颜色的边缘(例如,其中一种颜色停止,另一种颜色开始,例如对于带条纹的物体)。在一些实施例中,可以使用多个字段执行技术,如本文进一步讨论的。在一些实施例中,机器视觉系统可以基于接收到的图像数据(例如,2D和/或3D图像数据)确定向量字段。
参考步骤404,机器视觉系统可以确定图像数据中的一组区域。例如,各区域可包括来自图像数据的相同数量的数据输入项,下文将结合图5-8进行进一步讨论。例如,对于2D数据,每个区域可包括16x16个数据输入项、16x8个数据输入项、8x8个数据输入项、4x4个数据输入项、4x3个数据输入项等。作为另一个示例,对于3D数据,每个区域可包括16x16x16个数据输入项、8x8x8个数据输入项、16x8x8个数据输入项、5x5x5个数据输入项等。
在一些实施例中,这些区域与附近的其它区域重叠。例如,如下图5-8中进一步讨论的,机器视觉系统可以迭代地从数据输入项移到数据输入项,并根据相邻数据输入项(例如,在相邻位置上预先确定的数据输入项数量)确定区域,使得附近区域的数据输入项之间存在一些重叠。例如,如结合图7-8进一步讨论的,如果区域是3D数据中的数据输入项的2x2x2区域,则第一区域可能与其相邻区域重叠四个数据单元。
在一些实施例中,配置机器视觉系统以确定相邻区域之间存在某些重叠的区域可以提供更好的姿态测试。例如,与使用非重叠区域相比,具有一些重叠可以对姿态进行更好的测试。例如,假设机器视觉系统使用具有多个探针的模型,并且探针可以彼此具有不同的相位。在此示例中,还假设探针在数据单元和/或区域方面具有整数间隔,例如,使得探针将落在特定数据单元内,而不是有可能落在由多个数据单元共享的位置。在此示例中,如果机器视觉系统以不重叠的方式确定区域(例如,使得区域不与相邻区域共享数据输入项),则处理后的图像数据将降低原始图像数据的分辨率,因此原始图像数据中的探针位置可能无法在处理后的图像数据中进行测试。作为简单的说明性示例,假设模型的两个相邻探针落在原始图像数据的并排数据输入项中,并且机器视觉系统使用2x2数据输入项区域来确定处理后的图像数据。在该示例中,两个探针中的一个探针将在每个被测姿态处落在处理后的图像数据中的两个区域之间的直线上(例如,由于当计算处理后的图像数据时降低了图像数据的分辨率)。因此,在此示例中,机器视觉系统将无法依据处理后的图像数据中的2x2邻域内的最大可能分数测试探针。由于机器视觉系统将无法测试处理后的图像数据中的探针,因此机器视觉系统无法正确估计模型的分数,例如,使用本文所述的最大可能分数确定的分数。因此,这可以导致机器视觉系统错误地忽略需要进一步测试的姿态和/或将不包括姿态潜在位置的姿态一并进行测试。
计算需要一些重叠的区域可以让机器视觉系统测试每个姿态。例如,如果计算每个数据输入项的最大操作数(例如,结合图5-8所述)不会降低分辨率,则机器视觉系统的每个可能探针可以直接命中处理后的图像数据的计算值(例如,因此机器视觉系统可以依照原始图像数据的正确2x2区域进行测试)。然后,机器视觉系统可以有利地将模型移动多于一个的胞元(例如,超过两个胞元)进行下一个测试。该模型可以按这种方式移动,是因为由于构建了本文讨论的区域和最大分数技术,机器视觉系统通过一个测试间接地评估了较高层图像数据中的完整2x2区域,因此机器视觉需要测试的下一个位置是图像数据的下一个相邻(不重叠)2x2区域。因此,这些技术允许单独的探针跳过对先前测试中评估过的某些胞元(隐含)进行的重新评估,从而使系统能够有利地将模型移动多于一个的胞元。
参考步骤406,这些技术可用于使用图像数据(例如,如上所述的向量字段)来创建具有相同或相似分辨率的处理后的图像数据(例如,新字段),但其中处理后的图像数据的每个值表示落在包括特定数据输入项的一组图像数据输入项中的模型探针的最大可能分数。例如,评分指标可以对特定探针和图像数据的数据输入项具有可实现的最大可能分数(例如,根据探针的实际数据,该分数可能更低)。为了允许系统对处理后的图像数据中的模型姿态执行保守搜索,这些技术可以确定图像数据输入项组的最大可能分数,假设探针与每个数据输入项完全匹配,并将这些最大分数中的最大值作为处理后的图像数据的结果值。这样就可以根据所述结果值来测试探针,以确定与这些值相关联的数据输入项是否可能具有足够的分数,使其值得单独测试用于确定所得值的一组独立数据输入项。
在一些实施例中,模型中的每个探针可以是单位向量,并且可以使用评分指标针对图像数据对模型的特定姿态进行评分,评分指标包括计算探针和相应图像数据的平方点积,平方点积计算它们之间的长度和余弦的乘积平方,使得分数越对齐越高。使用平方点积时,如果探针完全匹配,则分数将是该数据输入项长度的平方(例如,向量)。因此,基于每个数据输入项,最大分数反映长度的平方,这是任何单位长度的探针都能达到的最大分数。在这一示例中,使用在输入图像数据中的数据输入项区域中发现的任何数据输入项(例如,向量)的平方长度最大值填充处理后的图像数据的每个值。因此,这些技术可以汇总图像数据(或较小区域)中具有整个区域最大分数的单个数据输入项。
参考步骤408,处理后的图像数据可以就好像它是一种用于测试模型的图像数据一样进行测试(例如,导出的向量字段,如2D梯度字段和/或上文解释的3D中的法线字段、边缘字段和颜色字段)。例如,一旦确定了处理后的图像数据,可以通过测试模型的探针来测试特定姿态的模型以确定分数(例如,长度求和)。当针对特定区域测试探针时,如果探针落在区域内的任何位置,则这些技术允许系统确定模型的分数不会高于该区域的值,因为它是上述整个区域的最大值。因此,由于与区域关联的每个数据输入项的分数都不能更高,因此区域的关联值是区域中的上限。
参考步骤410-414,所测试的姿态可以更稀疏,同时保证所计算的得分不能小于所测试姿态范围内最佳姿态的实际分数。例如,如下面进一步讨论的,如果区域用于2D图像数据的8x8个数据输入项组,则如果模型的姿态不满足区域的特定值的阈值,则系统可以跳过对下一级该区域的任何剩余值的测试,如下面结合图6进一步讨论的。因此,如果系统为模型测试一组探针并计算不符合阈值的分数,则系统可以从进一步测试中删除与测试区域相关的所有值。如果姿态高于阈值,系统可以进行备注,稍后查看这些关联的数据输入项以进一步细化。进一步的细化可包括以较小的区域大小和/或此处讨论的细化搜索来执行方法400等。
参考步骤418,方法400的输出是模型的一组姿态,可以超过给定阈值。评分无法超过阈值的姿态范围不需要再次考虑。在一些实施例中,如上所述,方法400可应用于金字塔式方案中,其中每个阶段的输出是下一个更高分辨率阶段的输入。例如,第一阶段可以使用特定大小的区域(例如,十六个数据输入项、八个数据输入项等),第二阶段可以使用较小的区域(例如,十二个数据输入项、十个数据输入项、四个数据输入项等)等等。方法400允许机器视觉系统在处理后的图像数据中执行更高层的搜索,这可以允许机器视觉系统在测试姿态时采取更大步长(例如,在每个维度中移动多个方块,而不是一个方块),并且基本上同时测试多个姿态,如下文进一步讨论的。
机器视觉系统可以运行方法400来处理各种类型的图像数据,包括2D和/或3D数据。图5-6提供了处理2D图像数据的示例,图7-8提供了处理3D图像数据的示例。参考图5,图5示出了根据一些实施例的二维图像数据500和关联的处理后的图像数据550的示例性部分。二维图像数据500包括此示例中的一组2D数据输入项,从502A至502N,统称为数据输入项502(例如,格的胞元)。每个数据输入项502具有关联的2D向量,如v1、v2等所示(例如,在此示例中,数据输入项502A具有向量v1,而数据输入项502N具有向量v4,)。如图5所示,系统用于使用处于2x2配置中的四个数据输入项的区域处理2D图像数据。其中两个区域显示为504A和504B。如这些示例性区域所示,系统可用于迭代地逐步通过2D图像以识别区域。在此示例中,当系统从每个数据输入项移动(例如,以从左到右、从上到下的迭代方式)时,每个区域包括当前数据输入项以及右侧数据输入项、底部数据输入项以及右侧数据输入项和底部数据输入项之间的数据输入项。
继续参考图5,处理后的图像数据550包括值552A至552N的单元,值552A至552N统称为值552。机器视觉系统用于执行一个函数,该函数处理每个区域中的数据输入项,以确定处理后的图像数据中关联胞元的结果值。如本文所述,该函数可以是使用区域中关联数据输入项的向量的最大分数函数。例如,系统使用计算结果值f1的函数处理区域504A中关联数据输入项的向量v1、v2、v4和v5,并且系统使用该结果值f1来确定单元552A的值。作为另一个示例,系统使用计算结果值f7的函数处理区域504B中关联数据输入项的向量v4、v5、v7和v8,并且系统使用该结果值f7来确定单元552B的值。
图6示出了根据一些实施例的在粗略搜索期间示例性地消除二维图像数据的一组姿态。图6示出了图5中的示例性二维图像数据500和关联的处理后的图像数据550。如本文所述,模型的分数是基于多个模型探针计算的。出于示例性目的,图6示出了模型探针中落在胞元552A上的一个探针在测试模型的姿态时被确定为分数不足。由于在处理后的图像数据550中所示的层处不考虑胞元552A,将一层向上移动到二维图像数据500,因此对应于被测探针的位置的姿态都不再考虑(例如,对于对二维图像数据500中的剩余候选位置进行的细化搜索)。
因此,如图6所示,当在由处理后的图像数据550表示的层(例如,在下一层500中每个值汇总四个数据输入项的层)进行测试时,图像处理系统可以跨层进行测试,并且当仅在层550中测试一个姿态时,基本上可以测试下一层500中的一组姿态。如图5-6中的示例所示,由于系统测试模型(如所述的,其中许多可能的模型探针中的一个探针落在单元552A处),由于f1代表区域504A中的四个数据输入项的最大值(并且对于依照胞元测试的其它探针也是如此,未示出),所以系统可以确定由于姿态评分不足,因此二维数据500中的相应姿态也没有一个姿态的评分能够足够高。因此,如图所示,在处理后的图像数据550中进行的高层搜索可以允许机器视觉系统在测试姿态时采取更大步长(例如,在每个维度中移动两个方块,而不是一个方块,当使用2x2区域时,如图5所示),并基本上同时测试多个姿态(例如,当使用2x2区域时,一次测试四个姿态)。
图7示出了根据一些实施例的示例性三维图像数据700和关联的处理后的图像数据750。3D图像数据700包括一组3D数据输入项702A至702N,统称为数据输入项702(例如,3D向量字段)。每个数据输入项702都有一个关联的3D向量,显示为v11、v12等。在此示例中,第一层中的每个向量均由V1X指示,其中X指示该层的特定数据输入项(例如,数据输入项702A具有向量v11,而数据输入项702N具有向量v14,在此示例中,因为两者都在第一层中)。如图7所示,系统用于使用八个数据输入项区域处理3D图像数据,其中包括一层的四个数据输入项和下一层的四个数据输入项。其中两个区域显示为704A和704B,每个区域包括第一层的四个数据输入项和第二层的相应四个数据输入项。如本文所述,可以将系统用于迭代地逐步通过3D图像以识别区域。在此示例中,当系统跨3D图像数据700中的每个数据输入项(例如,按行、列和深度)移动时,系统确定新的区域,该区域包括当前数据输入项以及右侧数据输入项、底部数据输入项、右侧数据输入项和底部数据输入项之间的数据输入项以及下一层中相同位置的相应四个数据输入项。
继续参考图7,处理后的图像数据750包括具有值的单元752A至752N,统称为单元752。机器视觉系统用于执行一个函数,该函数处理每个区域中的数据输入项,以确定处理后的图像数据中关联值的结果数据。如本文所述,该函数可以是使用区域中关联数据输入项的向量的最大分数函数。例如,系统使用计算结果值f11的函数处理区域704A中关联数据输入项的向量v11、v12、v14、v15、v21、v22、v24和v25,并且系统使用该结果值f11来确定胞元752A的值。作为另一个示例,系统使用计算结果值f12的函数处理区域704B中关联数据输入项的向量v14、v15、v17、v18、v24、v25、v27和v28,并且系统使用该结果值f12来确定单元552B的值。
图8示出了根据一些实施例的在粗略搜索期间示例性地消除三维图像数据的一组姿态。图8示出了图7中的示例性三维图像数据700和关联的处理后的图像数据750。如本文所述,模型的分数是基于多个模型探针计算的。出于示例性目的,图8仅示出了模型探针中落在胞元752A上的一个探针,用于说明性目的,但正如本文所述,模型探针的每一个依照关联胞元进行测试,以确定姿态分数不足。由于在处理后的图像数据750中所示的层处不考虑胞元752A,将一层移动到三维图像数据700,因此区域704A中的相应八个姿态都不再考虑(例如,对于在三维图像数据700中的剩余候选位置上运行的细化搜索)。
如图7-8所示,当将技术应用于3D图像数据时,姿态空间可能因维数而变得相当大。在某些三维图像和/或三维应用中,潜在姿态的大空间中只有比例很小的潜在姿态空间包含良好的候选姿态(例如,由于物体只占图像的一小部分)。作为另一个示例,在某些三维图像和/或三维应用中,远离相关区域的小范围旋转可以开始获得非常低的分数。这些技术可以利用高层搜索(例如,使用图7中所示的处理后的图像数据750)快速消除未达到可接受分数的大型姿态组。更高层的搜索可以使机器视觉系统在测试姿态时采取更大步长(例如,如图7所示,当使用2x2x2区域时,在每个维度中移动两个方块,而不是一个方块),并基本上同时测试多个姿态(例如,当使用2x2x2区域时,一次测试八个姿态)。
发明人已经确定,仅使用单个字段执行图案匹配可能无法提供足够的信息。例如,一些技术使用单个表面法线字段,通过尝试各种姿态配置并在该字段上对每个姿态进行评分来查找物体表面上的探针。然而,例如,当字段景的一个或多个大区域具有与训练物体相似的相同表面法线时,仅使用表面法线字段可能是有问题的。例如,如果对一本图书训练3D模型,并且字段景中有一张桌子而不是该图书,则仅使用表面法向量时,该图书在该桌子上会有大量匹配。因此,如果使用法线字段对模型的近似位置执行初始粗略搜索,则该字段中的信息可能不足,无法做到在进一步细化中不考虑初始姿态。本发明人已经开发对机器视觉搜索技术的技术改进,该技术使用除了单个字段之外的附加信息。如本文进一步讨论的,这些技术可包括使用其它信息,例如有关折痕边缘、遮挡边界、颜色、强度等信息。附加信息可以存储在搜索过程的一个或多个单独字段中(例如,使探针的法线数据可以与法线字段匹配,并且探针的边缘数据可以与边缘字段匹配)。机器视觉系统可以测试每种类型的数据,并使用多个测试来确定特定姿态的最终分数(例如,通过汇总单个分数等)。通过使用多个字段,可以使用物体的其它信息来提高搜索过程的有效性。例如,通过搜索法线和边缘信息,这些技术可以消除对法线字段分数较高但对边缘字段分数较低的姿态。作为另一个示例,这些技术可以提高系统搜索特定类型物体(例如,统一物体)的能力。例如,虽然很难搜索罐子的特定姿态,但技术可包括罐子的更多信息,例如颜色和/或反射率以改进搜索(例如,因为仅罐子的形状可能不够)。
图9示出了根据一些实施例的对三维模型姿态执行初始搜索的示例性方法900。在步骤902中,机器视觉系统存储包括一组探针的三维模型。在步骤904中,系统接收物体的3D数据(例如,点云、深度图像等),该3D数据包含一组3D数据输入项。在步骤906中,系统将三维数据转换为两个或更多字段的集合。第一字段包括第一组值,每组值表示关联数据输入项的第一特征或3D数据输入项的多个数据输入项。第二字段包括第二组值,每组值表示关联数据输入项的第二特征或3D数据输入项的多个数据输入项。在步骤908中,系统使用一组字段测试3D模型的姿态,包括对该一组字段测试该一组探针,以确定该姿态的分数。在步骤910中,系统确定分数是否满足预定阈值。如果分数满足阈值,则方法进入步骤912并存储姿态(例如,用于后续细化)。如果评分不满足阈值,则方法进入步骤914,并确定是否有更多姿态需要测试,如果有,则方法返回步骤908,否则方法在步骤916处结束。
参考步骤902,该模型可以是经过训练的模型,如本文所述。每个探针都可以包含一个或多个向量。例如,探针可以表示定位的向量(例如,(x,y,z)位置和(x,y,z)方向)。探针可以表示法线数据、边缘数据、强度数据、强度梯度数据和/或其它信息。法线数据可包括表面上的点及其法线方向等(例如,法线探针)。边缘数据可包括物体折叠处或物体折痕边缘上的点以及沿着折叠处或折痕的方向的数据(例如,边缘探针)。例如,强度数据可包括与强度、表面反射率、颜色、反照率等相关的信息。例如,强度数据可以反映与灰度图像和/或彩色图像(例如,物体、标签等上的颜色)相关的信息。
参考步骤906,第一特征不同于第二特征。因此,步骤906至少为3D数据生成两个不同的字段。与模型探针类似,字段中的值可以包括各种类型的数据,例如表面法线数据(例如,与物体表面正交的法向量)、边缘边界数据(例如,指向边缘,折痕和/或图像中的其它特征的边向量)、强度数据、强度梯度数据等。
在一些实施例中,这些技术包括将运行时3D数据转换为一个或多个被称为字段的密集3D阵列。在一些实施例中,系统为每个字段生成3D阵列。3D阵列使用三个索引进行索引,每个维度一个索引。系统可用于使用3D阵列的索引来表示阵列中每个值的x、y和z位置。例如,阵列中的x、y和z索引可以是x、y、z位置和/或使用变换式转换为x、y、z位置。每个值可包括相同维度的向量(例如,可以是1或更多)。每个此类向量都可以表示关联的3D数据输入项中或附近的点。向量的长度可以为零(0),例如,当没有在关联的3D数据输入项中或附近找到点时(例如,当数据输入项在3D点云中的物体内部时)。
参考本文所述的步骤908,测试姿态可包括根据每个假设的姿态转换训练的探针。在一些实施例中,为了确定姿态的分数,系统可以计算每个探针和字段中的关联值的点积的总和。根据系统生成的一组字段测试探针。系统可用于基于各个字段的探针分数计算相似度指标。例如,系统可对每个字段的各个分数取平均值,以确定姿态的总分数。作为另一个示例,系统用于执行更加复杂的操作,以合并每个字段的单独分数,例如线性加权(例如,a*分数1+b*分数2等)、非线性加权(例如,min(分数1、分数2))等。
这些技术可以存储高于阈值的姿态进行后续细化。在一些实施例中,阈值会配置为使高于阈值的分数表示分数空间(例如,姿态空间)中相关分数的局部峰值。例如,在一些实施例中,除了检查特定姿态是否满足阈值之外,系统还可以分析与相邻姿态的评分相关的特定姿态的评分。系统可用于存储姿态的子集,其中该子集的分数高于其在姿态空间中的邻居。
根据此处描述的原则运行的技术可以以任何合适的方式实施。上述流程图的处理和决策块表示执行这些不同流程的算法中可能包含的步骤和动作。从这些过程中导出的算法可以实现为与一个或多个单一用途或多用途处理器集成并指导其操作的软件,也可以实现为功能上等同的电路,例如数字信号处理(Digital Signal Processing,简称DSP)电路或专用集成电路(Application-Specific Integrated Circuit,简称ASIC),或者可以以任何其它合适的方式实现。应当理解的是,此处包含的流程图未描述任何特定电路或任何特定编程语言或编程语言类型的语法或操作。相反,流程图示出了本领域技术人员可用于制造电路或实现计算机软件算法的功能信息,以对执行本文所述技术类型的特定设备进行处理。还应该理解的是,除非本文另有说明,否则每个流程图中描述的步骤和/或动作的特定顺序仅说明可实施的算法,并且在本文所述原理的实施方式和实施例中可以变化。
因此,在一些实施例中,本文所述技术可以体现在作为软件实施的计算机可执行指令中,软件包括应用程序软件、系统软件、固件、中间件、嵌入码或任何其他合适类型的计算机代码。此类计算机可执行指令可以使用多种合适的编程语言和/或编程或脚本工具中的任何一种编写,并且也可以编译为可执行机器语言代码或在框架或虚拟机上执行的中间代码。
当本文所述的技术体现为计算机可执行指令时,这些计算机可执行指令可以以任何适合的方式,包括作为许多功能设备实施,每个功能设备提供一个或多个操作,以根据这些技术执行算法操作。“功能设备”虽然被实例化,但其为计算机系统的一个结构组件,在与一个或多个计算机集成并由其执行时,使一个或多个计算机执行具体操作角色。功能设备可以是软件元件的一部分或整个软件元件。例如,一个功能设备可以根据过程实施,或者作为离散过程实施,或者作为任何其他合适的处理单元来实施。如果本文所述技术作为多个功能设备实施,则每个功能设备可以以其自身的方式实施,而无需全部以相同的方式实施。此外,这些功能设备可根据情况并行和/或串行执行,并且可使用其正在执行的计算机上的共享内存、使用消息传递协议或以任何其他合适的方式在彼此之间传递信息。
通常,功能设备包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,功能设备的功能可以根据需要在其操作的系统中进行组合或分布。在一些实施方式中,执行本文中技术的一个或多个功能设备可以一起形成完整的软件包。在替代实施例中,这些功能设备可适用于与其他不相关的功能设备和/或过程交互,以实施软件程序应用。
本文描述了一些用于执行一个或多个任务的示例性功能设备。然而,应理解,所描述的功能设备和任务划分仅仅是说明可实施本文所述的示例性技术的功能设备类型,并且实施例不限于以任何特定数量、划分或类型的功能设备来实施。在某些实施方式中,所有功能都可以在单个功能设备中实施。还应了解,在某些实施方式中,本文所述的一些功能设备可以与其他设备一起实施,或与其他设备分开(即,作为单个单元或单独的单元)实施,或者可以不实施这些功能设备中的一部分。
在一些实施例中,实施本文所述技术的计算机可执行指令(当作为一个或多个功能设备或以任何其他方式实施时)可以编码在一个或多个计算机可读介质上,以向所述介质提供功能。计算机可读介质包括:磁性介质,例如磁盘驱动器;光学介质,例如压缩光盘(Compact Disk,简称CD)或数字通用光盘(Digital Versatile Disk,简称DVD);持久或非持久固态存储器(如闪存、磁性RAM等);或任何其他合适的存储介质。这种计算机可读介质可以以任何适合方式实施。文中使用的“计算机可读介质”(又称“计算机可读存储介质”)是指有形存储介质。有形存储介质是非暂时性的,具有至少一个物理结构组件。文中使用的“计算机可读介质”中,在使用嵌入信息创建介质的过程、在其上记录信息的过程或使用信息对介质进行编码的任何其它过程中,至少一个物理结构组件的至少一种物理属性会发生某种改变。例如,计算机可读介质的物理结构的一部分的磁化状态可能在记录过程中改变。
此外,上述的一些技术包括以某些方式存储信息(例如,数据和/或指令)以供这些技术使用的动作。在这些技术的一些实施方式中,例如将这些技术实施为计算机可执行指令的实施方式中,信息可以编码在计算机可读存储介质上。在本文将特定结构描述为存储这种信息的有利格式的情况下,这些结构可用于在存储介质上编码时赋予信息的物理组织。然后,这些有利的结构可以通过影响与信息交互的一个或多个处理器的操作,例如,通过提高处理器执行的计算机操作的效率来为存储介质提供功能。
在某些(而不是全部)实施方式中,技术可以体现为计算机可执行指令,这些指令可以在任何合适的计算机系统中运行的一个或多个合适的计算装置上执行,或者,一个或多个计算装置(或一个或多个计算装置的一个或多个处理器)可以被编程为执行计算机可执行指令。计算装置或处理器可被编程为在指令以计算装置或处理器可存取的方式存储时,例如存储在数据存储器(例如,片上缓存或指令寄存器、通过总线可存取的计算机可读存储介质、通过一个或多个网络可存取的以及通过设备/处理器可存取的计算机可读存储介质等)上时执行指令。包括这些计算机可执行指令的功能设备可以与以下各者集成且指导其操作:单个多用途可编程数字计算装置、共享处理能力并共同执行本文所述的技术的两个或多个多用途计算装置的协作系统、(并置或在位置上分布为)用于执行本文所述技术的单个计算装置或计算装置的协作系统、用于执行本文所述技术的一个或多个现字段可编程门阵列(FPGA)或任何其他适合系统。
计算装置可以包括至少一个处理器、网络适配器和计算机可读存储介质。例如,计算装置可以是台式计算机或笔记本电脑、个人数字助理(PDA)、智能手机、服务器或任何其他合适的计算装置。网络适配器可以是使计算装置能够通过任何适合的计算网络与任何其他适合的计算装置进行有线和/或无线通信的任何适合的硬件和/或软件。计算网络可包括无线接入点、交换机、路由器、网关和/或其他网络连接设备,以及用于在两个或多个计算机之间交换数据的任何一个或多个适合的有线和/或无线通信介质(包括互联网)。计算机可读介质可适用于存储待由处理器处理的数据和/或待由处理器执行的指令。处理器能够处理数据和执行指令。数据和指令可以存储在计算机可读存储介质上。
计算装置可以另外具有一个或多个组件和外围装置,包括输入和输出装置。这些装置可以用来呈现用户界面等等。可用于提供用户界面的输出装置的实例包括用于在视觉上呈现输出的打印机或显示屏以及用于在声音上呈现输出的扬声器或其他声音生成装置。可用于用户界面的输入装置的实例包括键盘和指向设备,例如鼠标、触摸板和数字面板。作为另一个实例,计算装置可以通过语音识别或以其他音频格式接收输入信息。
本文描述了在电路和/或计算机可执行指令中实施技术的实施例。应了解,一些实施例可以以方法的形式存在,至少提供所述方法的一个实例。作为方法的一部分执行的动作可以以任何适合的方式进行排序。因此,在构造实施例时,实施例中的动作可以按照与所说明不同的顺序执行,其中可能包括同时执行一些动作,即使说明性实施例中示出了动作的顺序。
上述实施例的各个方面可单独、组合或按前述实施例中未特别讨论的各种布置使用,因此其应用不限于在前述描述中所陈述或附图中所示出的细节和布置。例如,一个实施例中描述的各方面可以以任何方式与其他实施例中描述的各方面结合。
在权利要求书中,使用例如“第一”、“第二”、“第三”等序数术语来修改权利要求要素本身并不意味着一个权利要求要素相对于另一个权利要求要素的任何优先、优选或顺序,也不意味着一种方法的动作在执行时的时间顺序,而是仅用作用于区分具有特定名称的一个权力要求要素与具有相同名称(但使用序数术语)的另一个要素,以便区分权利要求要素。
同样地,本文中使用的措辞和术语是为了描述,而不应被视为限制性的。本文中使用“包括”、“包含”、“具有”、“含有”、“涉及”及其变体意味着涵盖其后列出的项目及其等价物以及附加项目。
“示例性”一词在本文中是指用作实例、个例或说明。因此,本文中描述为示例性的任何实施例、实施方式、过程、特征等应理解为说明性实例,并且除非另有说明,否则不应理解为优选或有利实例。
因此,在描述了至少一个实施例的几个方面之后,应了解,本领域技术人员将容易想到各种改变、修改和改进。这些改变、修改和改进被认为是本公开的一部分,并被认为是在本文描述的原理的精神和范围之内。因此,前述描述和附图仅作为实例。

Claims (16)

1.一种用于测试三维数据中的物体模型姿态的计算机化方法,所述方法包括:
接收物体的三维数据,所述三维数据包括一组数据输入项;
将所述三维数据转换为包括一组胞元的字段,所述一组胞元各自具有关联值,其中三维数据转换包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定所述一组胞元中的每个胞元的关联值的代表性数据;
使用所述字段的所述一组胞元中的每个胞元的关联值的至少一些所述代表性数据测试所述模型姿态,以确定所述模型姿态的分数;
其中,所述三维数据的一组数据输入项包括点列表;以及
其中,确定所述代表性数据包括基于所述点列表确定所述胞元的向量。
2.根据权利要求1所述的方法,其中,所述字段包括由所述一组胞元的关联值组成的三维阵列。
3.根据权利要求1所述的方法,其中,所述字段包括密集填充格,其中所述密集填充格包括所述一组胞元的关联值。
4.根据权利要求1所述的方法,其中,基于所述点列表确定所述胞元的向量包括:
基于所述点列表确定所述胞元与所述物体的内部关联;
基于所述胞元与所述物体的内部关联的确定,将所述胞元的向量设置为零。
5.根据权利要求4所述的方法,其中,使用所述字段的所述一组胞元中的每个胞元的关联值的至少一些所述代表性数据测试所述模型姿态,以确定所述模型姿态的分数,包括:
对所述字段的所述一组胞元中的每个胞元的关联值的至少一些所述代表性数据测试所述模型的一组探针以确定所述分数,每个探针包括兴趣点和关联数据,每个胞元的关联值的代表性数据包括关联向量,测试所述模型的一组探针包括对每个探针和所述字段中的关联向量的点积进行求和。
6.根据权利要求1所述的方法,其中,将所述三维数据转换为包括一组胞元的字段,所述一组胞元各自具有关联值,包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定所述一组胞元中的每个胞元的关联值的代表性数据,所述代表性数据包括代表性向量,其包括:
基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定一组向量;
生成累加矩阵,包括累加所述一组向量的每个向量与自身的外积;以及
从所述累加矩阵中提取特征向量、特征值或两者,以确定所述代表性向量。
7.一种用于测试三维数据中的物体模型姿态的系统,所述系统包括一个或多个处理器,配置用于执行根据权利要求1-6中任一项所述的方法。
8.存储处理器可执行指令的至少一个非瞬时性计算机可读存储介质,当所述处理器可执行指令由至少一个计算机硬件处理器执行时,使至少一个计算机硬件处理器执行根据权利要求1-6中任一项所述的方法。
9.一种用于对图像数据测试物体模型姿态的计算机化方法,所述方法包括:
接收物体的图像数据,所述图像数据包括一组数据输入项;
确定所述图像数据的一组区域,其中,所述一组区域中的每个区域包括所述一组数据输入项中关联的一组相邻数据输入项;
生成处理后的图像数据,其中:
所述处理后的图像数据包括一组胞元,每个胞元具有关联值;
生成处理后的图像数据包括为所述一组区域中的每个区域:
确定所述图像数据中关联的一组相邻数据输入项中每个数据输入项的最大可能分数;
基于所确定的最大可能分数设置该组值中的一个或多个值;
使用所述处理后的图像数据测试所述模型姿态,其中测试所述模型姿态包括:
确定所述姿态分数未超过预定阈值,包括对所述处理后的图像数据的关联值测试所述模型的多个探针;以及
消除用于从进一步测试中确定关联值的、与所述一组区域中的每个区域关联的一组姿态。
10.根据权利要求9所述的方法,其中:
接收图像数据包括接收二维图像数据,其中,每个数据输入项包括二维向量;
确定该组值中每个处理后的图像数据值的最大可能分数包括基于与该值关联的区域中的二维向量来确定标量值。
11.根据权利要求10所述的方法,其中使用所述处理后的图像数据测试所述模型姿态包括:
确定所述姿态分数未超过预定阈值,包括对所述处理后的图像数据的关联标量值测试所述模型的多个探针;
消除用于从进一步测试中确定关联标量值的、与所述一组区域中的每个区域关联的一组姿态。
12.根据权利要求9所述的方法,其中:
接收图像数据包括接收三维图像数据,其中,每个数据输入项包括三维向量;
确定所述一组值的每个处理后的图像数据值的最大可能分数包括基于所述值关联区域中的三维向量来确定标量值。
13.根据权利要求12所述的方法,其中使用所述处理后的图像数据测试所述模型姿态包括:
确定所述姿态分数未超过预定阈值,包括对所述处理后的图像数据的关联标量值测试所述模型的多个探针;
消除用于从进一步测试中确定关联标量值的、与所述一组区域中的每个区域关联的一组姿态。
14.根据权利要求12所述的方法,还包括:
将三维数据转换为包括第二组胞元的第二字段,该第二组胞元各自具有关联值,该转换包括基于所述三维数据的一组数据输入项中的一个或多个数据输入项确定每个第二胞元值的代表性数据;
基于使用所述第二字段对所述模型姿态的测试,使用所述第二字段来测试所述模型姿态。
15.一种用于对图像数据测试物体模型姿态的系统,所述系统包括一个或多个处理器,配置用于执行根据权利要求9-14中任一项所述的方法。
16.存储处理器可执行指令的至少一个非瞬时性计算机可读存储介质,当所述处理器可执行指令由至少一个计算机硬件处理器执行时,使至少一个计算机硬件处理器执行根据权利要求9-14中任一项所述的方法。
CN201910865951.8A 2018-09-12 2019-09-12 机器视觉图像数据处理方法和装置 Active CN110895679B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US16/129,121 2018-09-12
US16/129,148 US10825199B2 (en) 2018-09-12 2018-09-12 Methods and apparatus for processing image data for machine vision
US16/129,170 2018-09-12
US16/129,148 2018-09-12
US16/129,121 US10846563B2 (en) 2018-09-12 2018-09-12 Methods and apparatus for generating a dense field of three dimensional data for machine vision
US16/129,170 US10878299B2 (en) 2018-09-12 2018-09-12 Methods and apparatus for testing multiple fields for machine vision

Publications (2)

Publication Number Publication Date
CN110895679A CN110895679A (zh) 2020-03-20
CN110895679B true CN110895679B (zh) 2024-05-28

Family

ID=67997332

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910865951.8A Active CN110895679B (zh) 2018-09-12 2019-09-12 机器视觉图像数据处理方法和装置

Country Status (4)

Country Link
EP (1) EP3624062A1 (zh)
JP (2) JP7182528B2 (zh)
KR (3) KR102511821B1 (zh)
CN (1) CN110895679B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102385076B1 (ko) * 2020-07-10 2022-04-11 주식회사 메디트 데이터 잠금 시스템 및 데이터 잠금 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3206164A1 (en) * 2016-02-12 2017-08-16 Cognex Corporation System and method for efficiently scoring probes in an image with a vision system
CN107680124A (zh) * 2016-08-01 2018-02-09 康耐视公司 用于提高三维姿态评分和消除三维图像数据中杂点的系统及方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3872061B2 (ja) * 2004-02-06 2007-01-24 三菱電機株式会社 画像処理装置
US7689021B2 (en) * 2005-08-30 2010-03-30 University Of Maryland, Baltimore Segmentation of regions in measurements of a body based on a deformable model
US7957583B2 (en) * 2007-08-02 2011-06-07 Roboticvisiontech Llc System and method of three-dimensional pose estimation
US8442304B2 (en) * 2008-12-29 2013-05-14 Cognex Corporation System and method for three-dimensional alignment of objects using machine vision
JP4677536B1 (ja) 2009-11-20 2011-04-27 株式会社三次元メディア 3次元物体認識装置及び3次元物体認識方法
JP5839929B2 (ja) * 2010-11-19 2016-01-06 キヤノン株式会社 情報処理装置、情報処理システム、情報処理方法及びプログラム
SG11201610035RA (en) * 2014-06-30 2017-01-27 Evolving Machine Intelligence Pty Ltd A system and method for modelling system behaviour
JP6360802B2 (ja) * 2015-02-20 2018-07-18 株式会社デンソーアイティーラボラトリ ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、検出装置、検出方法、および、車両
JP6493163B2 (ja) * 2015-11-06 2019-04-03 オムロン株式会社 粗密探索方法および画像処理装置
US10452949B2 (en) * 2015-11-12 2019-10-22 Cognex Corporation System and method for scoring clutter for use in 3D point cloud matching in a vision system
JP2017182274A (ja) 2016-03-29 2017-10-05 セイコーエプソン株式会社 情報処理装置およびコンピュータープログラム
US20180225799A1 (en) * 2017-02-03 2018-08-09 Cognex Corporation System and method for scoring color candidate poses against a color image in a vision system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3206164A1 (en) * 2016-02-12 2017-08-16 Cognex Corporation System and method for efficiently scoring probes in an image with a vision system
CN107680124A (zh) * 2016-08-01 2018-02-09 康耐视公司 用于提高三维姿态评分和消除三维图像数据中杂点的系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Bertram Drost等.Model globally, match locally: Efficient and robust 30 object recognition.《2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition》.2010,998-1005. *

Also Published As

Publication number Publication date
KR102511821B1 (ko) 2023-03-21
KR20200030485A (ko) 2020-03-20
KR20240013085A (ko) 2024-01-30
EP3624062A1 (en) 2020-03-18
CN110895679A (zh) 2020-03-20
JP7469391B2 (ja) 2024-04-16
JP2022140857A (ja) 2022-09-28
JP7182528B2 (ja) 2022-12-02
KR102617732B1 (ko) 2023-12-27
KR20230042237A (ko) 2023-03-28
JP2020061132A (ja) 2020-04-16

Similar Documents

Publication Publication Date Title
US11657630B2 (en) Methods and apparatus for testing multiple fields for machine vision
US11475593B2 (en) Methods and apparatus for processing image data for machine vision
US10846563B2 (en) Methods and apparatus for generating a dense field of three dimensional data for machine vision
Salti et al. A performance evaluation of 3d keypoint detectors
JP5705147B2 (ja) 記述子を用いて3dオブジェクトまたはオブジェクトを表す方法
JP5703312B2 (ja) 特徴点の効率的なスケールスペース抽出及び記述
CN107292925A (zh) 基于Kinect深度相机测量方法
CN110070096B (zh) 针对非刚性形状匹配的局部频域描述子生成方法及装置
JP2016206837A (ja) オブジェクト検出方法及び画像検索システム
Ozbay et al. A hybrid method for skeleton extraction on Kinect sensor data: Combination of L1-Median and Laplacian shrinking algorithms
KR20240013085A (ko) 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치
US11816857B2 (en) Methods and apparatus for generating point cloud histograms
Palossi et al. Gpu-shot: Parallel optimization for real-time 3d local description
US9953458B2 (en) Method and apparatus for generating shape descriptor of a model
JP2024084825A (ja) マシンビジョン用の画像データを処理するための方法及び装置
KR102382883B1 (ko) 3차원 손 자세 인식 장치 및 방법
Xiong et al. PC-SuperPoint: interest point detection and descriptor extraction using pyramid convolution and circle loss
US20240054676A1 (en) Methods and apparatus for determining orientations of an object in three-dimensional data
Chong et al. Range image derivatives for GRCM on 2.5 D face recognition
Reina Molina et al. Bioinspired parallel 2D or 3D skeletonization
CN116783619A (zh) 用于生成点云直方图的方法和装置
Gao et al. Towards topological-transformation robust shape comparison: a sparse representation based manifold embedding approach
Zhao et al. 3D mesh simplification for deformable human body mesh using deformation saliency

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant