KR20240013085A - 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치 - Google Patents

기계 시각을 위한 이미지 데이터 처리 방법들 및 장치 Download PDF

Info

Publication number
KR20240013085A
KR20240013085A KR1020230186810A KR20230186810A KR20240013085A KR 20240013085 A KR20240013085 A KR 20240013085A KR 1020230186810 A KR1020230186810 A KR 1020230186810A KR 20230186810 A KR20230186810 A KR 20230186810A KR 20240013085 A KR20240013085 A KR 20240013085A
Authority
KR
South Korea
Prior art keywords
data
values
field
pose
score
Prior art date
Application number
KR1020230186810A
Other languages
English (en)
Inventor
지안 한스 류
나다니엘 보간
앤드류 호엘셔
Original Assignee
코그넥스코오포레이션
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 코그넥스코오포레이션 filed Critical 코그넥스코오포레이션
Publication of KR20240013085A publication Critical patent/KR20240013085A/ko

Links

Images

Classifications

    • 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
    • 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
    • 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)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Image Processing (AREA)

Abstract

본원에서 설명된 기법들은, 이미지 데이터에 대한 모델의 포즈를 테스팅하는 것, 이를테면, 3차원 데이터에서 모델의 포즈를 테스팅하는 것을 포함하는 다양한 양상들을 수행하도록 구성되는 방법들, 장치, 및 컴퓨터 판독가능 매체들에 관한 것이다. 객체의 3차원 데이터가 수신되며, 3차원 데이터는 데이터 엔트리들의 세트를 포함한다. 3차원 데이터는 각각이 연관된 값을 갖는 셀들의 세트를 포함하는 필드로 변환되고, 이러한 변환은, 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반하여 각각의 셀 값에 대해 대표 데이터를 결정하는 것을 포함한다. 모델의 포즈는, 포즈에 대한 점수를 결정하기 위해 필드로 테스팅된다.

Description

기계 시각을 위한 이미지 데이터 처리 방법들 및 장치{METHODS AND APPARATUS FOR PROCESSING IMAGE DATA FOR MACHINE VISION}
본원에서 설명된 기법들은 일반적으로, 이미지 데이터를 처리하고 이미지에서 패턴을 검색하기 위한 기법들을 포함하는, 기계 시각을 위한 방법들 및 장치에 관한 것이다.
기계 시각 시스템들에 의해 종종 수행되는 하나의 작업은, 이미지들에서 관심 패턴을 검색하고 그 관심 패턴의 위치 및 배향을 식별하려 시도하는 것이다. 일부 기법들은 관심 패턴을 표현하기 위해 모델을 사용하는데, 이는 복수의 프로브들을 포함할 수 있다. 각각의 프로브는 관심 포인트 및 연관된 데이터(예컨대, 위치 및 벡터)이다. 각각의 프로브는, 예컨대 특정 위치에서의 패턴 특징 또는 구역에 대한 런타임 이미지 특징 또는 구역의 유사성의 척도를 결정하는 데 사용될 수 있다. 복수의 프로브들은 런타임 이미지에 대해 복수의 포즈들에서 적용될 수 있고, 각각의 포즈에서의 프로브들로부터의 정보는 런타임 이미지에서 패턴의 가장 가능성 있는 포즈들을 결정하는 데 사용될 수 있다.
패턴 인식 프로세스의 속도를 높이기 위해, 일부 기법들은 패턴 검색 프로세스에 대해 다단계 접근법을 사용한다. 예컨대, 제1 단계는, 패턴을 포함할 수 있는 이미지에서 하나 이상의 일반 구역을 로케이팅(locate)하려 시도하는 개략적인 검색을 포함할 수 있다. 제2 단계(및/또는 다수의 부가적인 단계들)는, 패턴에 대한 하나 이상의 일반 구역 각각을 검색함으로써 검색을 정밀화하는 데 사용될 수 있다. 예를 들면, 알고리즘은 복수의 상이한 모델들을 사용할 수 있으며, 여기서, 시스템은 이미지의 상이한 연관된 해상도에 대해 각각의 모델을 사용한다. 따라서, 패턴 인식 프로세스 동안, 처음에, 이미지에서 패턴의 인스턴스의 개략적인 근사한 포즈를 식별하기 위해 개략적인 해상도 및 연관된 모델이 사용될 수 있다. 그 후, 이미지에서 패턴 인스턴스의 포즈를 더 정확하게 식별하기 위해 상대적으로 더 정밀한 해상도 및 연관된 모델이 사용될 수 있다. 이러한 반복적인 프로세스는, 가장 정밀한 해상도 모델이 사용되고 패턴 인스턴스의 정확한 포즈가 식별될 때까지 계속된다.
개시된 주제에 따르면, 개선된 기계 시각 기법들, 특히, 이미지에서 패턴을 검색하는 속도 및 정확도를 증가시키는 개선된 기계 시각 기법들을 위한 장치, 시스템들, 및 방법들이 제공된다.
일부 양상들은, 3차원 데이터에서 모델의 포즈를 테스팅하기 위한 컴퓨터화된 방법에 관한 것이다. 방법은, 객체의 3차원 데이터를 수신하는 단계 ― 3차원 데이터는 데이터 엔트리들의 세트를 포함함 ―, 3차원 데이터를 각각이 연관된 값을 갖는 셀들의 세트를 포함하는 필드로 변환하는 단계 ― 이러한 변환은, 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반하여 각각의 셀 값에 대해 대표 데이터를 결정하는 것을 포함함 ―, 및 모델의 포즈에 대한 점수를 결정하기 위해 필드로 포즈를 테스팅하는 단계를 포함한다.
일부 예들에서, 3차원 데이터를 필드로 변환하는 것은, 값들의 세트의 3차원 어레이를 생성하는 것을 포함한다.
일부 예들에서, 3차원 데이터를 필드로 변환하는 것은 조밀하게 채워진 격자를 생성하는 것을 포함하며, 여기서, 조밀하게 채워진 격자들은 격자의 각각의 셀에 대한 데이터를 포함한다.
일부 예들에서, 3차원 데이터의 데이터 엔트리들의 세트는 포인트들의 목록을 포함하고, 하나 이상의 데이터 엔트리에 기반하여 각각의 셀 값에 대해 대표 데이터를 결정하는 것은, 포인트들의 목록 내의 하나 이상의 연관된 포인트에 기반하여 벡터를 결정하는 것을 포함한다. 하나 이상의 연관된 포인트에 대한 벡터를 결정하는 것은, 포인트들의 목록에 기반하여 셀이 객체의 내부 부분과 연관됨을 결정하는 것을 포함할 수 있고, 벡터를 결정하는 것은 벡터를 영(zero)으로 설정하는 것을 포함한다. 점수를 결정하기 위해 필드로 모델의 포즈를 테스팅하는 것은, 각각의 프로브 및 필드 내의 연관된 벡터의 내적을 합산하는 것을 포함하여, 점수를 결정하기 위해 필드에 대해 모델의 프로브들의 세트를 테스팅하는 것을 포함한다.
일부 예들에서, 3차원 데이터를 각각이 연관된 값을 갖는 셀들의 세트를 포함하는 필드로 변환하는 것은 각각의 셀 값에 대해 대표 벡터를 결정하는 것을 포함하며, 대표 벡터를 결정하는 것은, 누적된 행렬을 생성하는 것 ― 누적된 행렬을 생성하는 것은, 벡터들의 세트의 각각의 벡터의 그 자신과의 외적을 컴퓨팅하는 것을 포함하고, 벡터들의 세트는 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반한 결정된 데이터임 ―; 및 대표 벡터를 결정하기 위해 누적된 행렬로부터 고유벡터들, 고유값들 또는 둘 모두를 추출하는 것을 포함한다.
일부 양상들은, 3차원 데이터에서 모델의 포즈를 테스팅하기 위한 시스템에 관한 것이다. 시스템은, 객체의 3차원 데이터를 수신하고 ― 3차원 데이터는 데이터 엔트리들의 세트를 포함함 ―, 3차원 데이터를 각각이 연관된 값을 갖는 셀들의 세트를 포함하는 필드로 변환하고 ― 이러한 변환은, 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반하여 각각의 셀 값에 대해 대표 데이터를 결정하는 것을 포함함 ―, 모델의 포즈에 대한 점수를 결정하기 위해 필드로 포즈를 테스팅하도록 구성되는 하나 이상의 프로세서를 포함한다.
일부 예들에서, 3차원 데이터를 필드로 변환하는 것은, 값들의 세트의 3차원 어레이를 생성하는 것을 포함한다.
일부 예들에서, 3차원 데이터를 필드로 변환하는 것은 조밀하게 채워진 격자를 생성하는 것을 포함하며, 여기서, 조밀하게 채워진 격자들은 격자의 각각의 셀에 대한 데이터를 포함한다.
일부 예들에서, 3차원 데이터의 데이터 엔트리들의 세트는 포인트들의 목록을 포함하고, 하나 이상의 데이터 엔트리에 기반하여 각각의 셀 값에 대해 대표 데이터를 결정하는 것은, 포인트들의 목록 내의 하나 이상의 연관된 포인트에 기반하여 벡터를 결정하는 것을 포함한다. 하나 이상의 연관된 포인트에 대한 벡터를 결정하는 것은, 포인트들의 목록에 기반하여 셀이 객체의 내부 부분과 연관됨을 결정하는 것을 포함할 수 있고, 벡터를 결정하는 것은 벡터를 영으로 설정하는 것을 포함한다. 점수를 결정하기 위해 필드로 모델의 포즈를 테스팅하는 것은, 각각의 프로브 및 필드 내의 연관된 벡터의 내적을 합산하는 것을 포함하여, 점수를 결정하기 위해 필드에 대해 모델의 프로브들의 세트를 테스팅하는 것을 포함한다.
일부 예들에서, 3차원 데이터를 각각이 연관된 값을 갖는 셀들의 세트를 포함하는 필드로 변환하는 것은 각각의 셀 값에 대해 대표 벡터를 결정하는 것을 포함하며, 대표 벡터를 결정하는 것은, 누적된 행렬을 생성하는 것 ― 누적된 행렬을 생성하는 것은, 벡터들의 세트의 각각의 벡터의 그 자신과의 외적을 컴퓨팅하는 것을 포함하고, 벡터들의 세트는 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반한 결정된 데이터임 ―; 및 대표 벡터를 결정하기 위해 누적된 행렬로부터 고유벡터들, 고유값들 또는 둘 모두를 추출하는 것을 포함한다.
일부 양상들은 프로세서 실행가능 명령어들을 저장하는 적어도 하나의 비-일시적인 컴퓨터 판독가능 저장 매체에 관한 것으로, 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 객체의 3차원 데이터를 수신하고 ― 3차원 데이터는 데이터 엔트리들의 세트를 포함함 ―, 3차원 데이터를 각각이 연관된 값을 갖는 셀들의 세트를 포함하는 필드로 변환하고 ― 이러한 변환은, 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반하여 각각의 셀 값에 대해 대표 데이터를 결정하는 것을 포함함 ―, 모델의 포즈에 대한 점수를 결정하기 위해 필드로 포즈를 테스팅하는 동작들을 수행하게 한다.
일부 예들에서, 3차원 데이터를 필드로 변환하는 것은, 값들의 세트의 3차원 어레이를 생성하는 것을 포함한다.
일부 예들에서, 3차원 데이터를 필드로 변환하는 것은 조밀하게 채워진 격자를 생성하는 것을 포함하며, 여기서, 조밀하게 채워진 격자들은 격자의 각각의 셀에 대한 데이터를 포함한다.
일부 예들에서, 3차원 데이터의 데이터 엔트리들의 세트는 포인트들의 목록을 포함하고, 하나 이상의 데이터 엔트리에 기반하여 각각의 셀 값에 대해 대표 데이터를 결정하는 것은, 포인트들의 목록 내의 하나 이상의 연관된 포인트에 기반하여 벡터를 결정하는 것을 포함한다.
일부 예들에서, 하나 이상의 연관된 포인트에 대한 벡터를 결정하는 것은, 포인트들의 목록에 기반하여 셀이 객체의 내부 부분과 연관됨을 결정하는 것을 포함하고, 벡터를 결정하는 것은 벡터를 영으로 설정하는 것을 포함한다.
일부 예들에서, 3차원 데이터를 각각이 연관된 값을 갖는 셀들의 세트를 포함하는 필드로 변환하는 것은 각각의 셀 값에 대해 대표 벡터를 결정하는 것을 포함하며, 대표 벡터를 결정하는 것은, 누적된 행렬을 생성하는 것 ― 누적된 행렬을 생성하는 것은, 벡터들의 세트의 각각의 벡터의 그 자신과의 외적을 컴퓨팅하는 것을 포함하고, 벡터들의 세트는 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반한 결정된 데이터임 ―; 및 대표 벡터를 결정하기 위해 누적된 행렬로부터 고유벡터들, 고유값들 또는 둘 모두를 추출하는 것을 포함한다.
일부 양상들은, 이미지 데이터에 대한 모델의 포즈를 테스팅하기 위한 컴퓨터화된 방법에 관한 것이다. 방법은, 객체의 이미지 데이터를 수신하는 단계를 포함하며, 이미지 데이터는 데이터 엔트리들의 세트를 포함한다. 방법은, 이미지 데이터의 구역들의 세트를 결정하는 단계를 포함하며, 여기서, 구역들의 세트 내의 각각의 구역은 데이터 엔트리들의 세트 내의 이웃하는 데이터 엔트리들의 연관된 세트를 포함한다. 방법은, 처리된 이미지 데이터를 생성하는 단계를 포함하며, 여기서, 처리된 이미지 데이터는 각각이 연관된 값을 갖는 셀들의 세트를 포함하고, 처리된 이미지 데이터를 생성하는 단계는, 구역들의 세트 내의 각각의 구역에 대해, 이미지 데이터로부터의 이웃하는 데이터 엔트리들의 연관된 세트 내의 각각의 데이터 엔트리의 가능한 최대 점수를 결정하는 단계를 포함한다. 방법은, 결정된 가능한 최대 점수에 기반하여 값들의 세트의 하나 이상의 값을 설정하는 단계를 포함한다. 방법은, 처리된 이미지 데이터를 사용하여 모델의 포즈를 테스팅하는 단계를 포함한다.
일부 예들에서, 이미지 데이터를 수신하는 것은 2D 이미지 데이터를 수신하는 것을 포함하며, 여기서, 각각의 데이터 엔트리는 2D 벡터를 포함하고, 값들의 세트의 각각의 처리된 이미지 데이터 값에 대한 가능한 최대 점수를 결정하는 것은 값과 연관된 구역 내의 2D 벡터들에 기반하여 스칼라 값을 결정하는 것을 포함한다.
일부 예들에서, 처리된 데이터를 사용하여 모델의 포즈를 테스팅하는 것은, 처리된 데이터의 연관된 스칼라 값들에 대해 모델의 복수의 프로브들을 테스팅하는 것을 포함하여, 포즈에 미리 결정된 임계치를 초과하는 점수가 책정되지 않는다는 것을 결정하는 것, 및 추가적인 테스팅으로부터, 연관된 스칼라 값들을 결정하는 데 사용되는 구역들 각각과 연관된 포즈들의 세트를 제거하는 것을 포함한다.
일부 예들에서, 이미지 데이터를 수신하는 것은 3D 이미지 데이터를 수신하는 것을 포함하며, 여기서, 각각의 데이터 엔트리는 3D 벡터를 포함하고, 값들의 세트의 각각의 처리된 이미지 데이터 값에 대한 가능한 최대 점수를 결정하는 것은 값과 연관된 구역 내의 3D 벡터들에 기반하여 스칼라 값을 결정하는 것을 포함한다. 처리된 데이터를 사용하여 모델의 포즈를 테스팅하는 것은, 처리된 데이터의 연관된 스칼라 값들에 대해 모델의 복수의 프로브들을 테스팅하는 것을 포함하여, 포즈에 미리 결정된 임계치를 초과하는 점수가 책정되지 않는다는 것을 결정하는 것, 및 추가적인 테스팅으로부터, 연관된 스칼라 값들을 결정하는 데 사용되는 구역들 각각과 연관된 포즈들의 세트를 제거하는 것을 포함할 수 있다.
일부 예들에서, 방법은, 3차원 데이터를, 각각이 제2 값과 연관되는, 셀들의 제2 세트를 포함하는 제2 필드로 변환하는 단계 ― 이러한 변환은, 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반하여 각각의 제2 셀 값에 대해 대표 데이터를 결정하는 것을 포함함 ―; 및 필드로 모델의 포즈를 테스팅하는 것에 기반하여 제2 필드로 모델의 포즈를 테스팅하는 단계를 포함한다.
일부 양상들은 이미지 데이터에 대한 모델의 포즈를 테스팅하기 위한 시스템에 관한 것으로, 시스템은 객체의 이미지 데이터를 수신하도록 구성되는 하나 이상의 프로세서를 포함하며, 이미지 데이터는 데이터 엔트리들의 세트를 포함한다. 하나 이상의 프로세서는, 이미지 데이터의 구역들의 세트를 결정하도록 구성되며, 여기서, 구역들의 세트 내의 각각의 구역은 데이터 엔트리들의 세트 내의 이웃하는 데이터 엔트리들의 연관된 세트를 포함한다. 하나 이상의 프로세서는, 처리된 이미지 데이터를 생성하도록 구성되며, 여기서, 처리된 이미지 데이터는 각각이 연관된 값을 갖는 셀들의 세트를 포함하고, 처리된 이미지 데이터를 생성하는 것은, 구역들의 세트 내의 각각의 구역에 대해, 이미지 데이터로부터의 이웃하는 데이터 엔트리들의 연관된 세트 내의 각각의 데이터 엔트리의 가능한 최대 점수를 결정하는 것을 포함한다. 하나 이상의 프로세서는, 결정된 가능한 최대 점수에 기반하여 값들의 세트의 하나 이상의 값을 설정하도록 구성된다. 하나 이상의 프로세서는, 처리된 이미지 데이터를 사용하여 모델의 포즈를 테스팅하도록 구성된다.
일부 예들에서, 이미지 데이터를 수신하는 것은 2D 이미지 데이터를 수신하는 것을 포함하며, 여기서, 각각의 데이터 엔트리는 2D 벡터를 포함하고, 값들의 세트의 각각의 처리된 이미지 데이터 값에 대한 가능한 최대 점수를 결정하는 것은 값과 연관된 구역 내의 2D 벡터들에 기반하여 스칼라 값을 결정하는 것을 포함한다. 처리된 데이터를 사용하여 모델의 포즈를 테스팅하는 것은, 처리된 데이터의 연관된 스칼라 값들에 대해 모델의 복수의 프로브들을 테스팅하는 것을 포함하여, 포즈에 미리 결정된 임계치를 초과하는 점수가 책정되지 않는다는 것을 결정하는 것, 및 추가적인 테스팅으로부터, 연관된 스칼라 값들을 결정하는 데 사용되는 구역들 각각과 연관된 포즈들의 세트를 제거하는 것을 포함할 수 있다.
일부 예들에서, 이미지 데이터를 수신하는 것은 3D 이미지 데이터를 수신하는 것을 포함하며, 여기서, 각각의 데이터 엔트리는 3D 벡터를 포함하고, 값들의 세트의 각각의 처리된 이미지 데이터 값에 대한 가능한 최대 점수를 결정하는 것은 값과 연관된 구역 내의 3D 벡터들에 기반하여 스칼라 값을 결정하는 것을 포함한다. 처리된 데이터를 사용하여 모델의 포즈를 테스팅하는 것은, 처리된 데이터의 연관된 스칼라 값들에 대해 모델의 복수의 프로브들을 테스팅하는 것을 포함하여, 포즈에 미리 결정된 임계치를 초과하는 점수가 책정되지 않는다는 것을 결정하는 것, 및 추가적인 테스팅으로부터, 연관된 스칼라 값들을 결정하는 데 사용되는 구역들 각각과 연관된 포즈들의 세트를 제거하는 것을 포함할 수 있다.
일부 예들에서, 하나 이상의 프로세서는, 3차원 데이터를, 각각이 제2 값과 연관되는, 셀들의 제2 세트를 포함하는 제2 필드로 변환하고 ― 이러한 변환은, 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반하여 각각의 제2 셀 값에 대해 대표 데이터를 결정하는 것을 포함함 ―; 필드로 모델의 포즈를 테스팅하는 것에 기반하여 제2 필드로 모델의 포즈를 테스팅하도록 추가로 구성된다.
일부 양상들은 프로세서 실행가능 명령어들을 저장하는 적어도 하나의 비-일시적인 컴퓨터 판독가능 저장 매체에 관한 것으로, 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 객체의 이미지 데이터를 수신하는 동작들을 수행하게 하며, 이미지 데이터는 데이터 엔트리들의 세트를 포함한다. 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 이미지 데이터의 구역들의 세트를 결정하게 하며, 여기서, 구역들의 세트 내의 각각의 구역은 데이터 엔트리들의 세트 내의 이웃하는 데이터 엔트리들의 연관된 세트를 포함한다. 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 처리된 이미지 데이터를 생성하게 하며, 여기서, 처리된 이미지 데이터는 각각이 연관된 값을 갖는 셀들의 세트를 포함하고, 처리된 이미지 데이터를 생성하는 것은, 구역들의 세트 내의 각각의 구역에 대해, 이미지 데이터로부터의 이웃하는 데이터 엔트리들의 연관된 세트 내의 각각의 데이터 엔트리의 가능한 최대 점수를 결정하는 것을 포함한다. 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 결정된 가능한 최대 점수에 기반하여 값들의 세트의 하나 이상의 값을 설정하게 한다. 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 처리된 이미지 데이터를 사용하여 모델의 포즈를 테스팅하게 한다.
일부 예들에서, 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 이미지 데이터를 수신하는 동작들을 수행하게 하며, 이미지 데이터를 수신하는 것은 2D 이미지 데이터를 수신하는 것을 포함하고, 여기서, 각각의 데이터 엔트리는 2D 벡터를 포함하고, 값들의 세트의 각각의 처리된 이미지 데이터 값에 대한 가능한 최대 점수를 결정하는 것은 값과 연관된 구역 내의 2D 벡터들에 기반하여 스칼라 값을 결정하는 것을 포함한다. 처리된 데이터를 사용하여 모델의 포즈를 테스팅하는 것은, 처리된 데이터의 연관된 스칼라 값들에 대해 모델의 복수의 프로브들을 테스팅하는 것을 포함하여, 포즈에 미리 결정된 임계치를 초과하는 점수가 책정되지 않는다는 것을 결정하는 것, 및 추가적인 테스팅으로부터, 연관된 스칼라 값들을 결정하는 데 사용되는 구역들 각각과 연관된 포즈들의 세트를 제거하는 것을 포함한다.
일부 예들에서, 이미지 데이터를 수신하는 것은 3D 이미지 데이터를 수신하는 것을 포함하며, 여기서, 각각의 데이터 엔트리는 3D 벡터를 포함하고, 값들의 세트의 각각의 처리된 이미지 데이터 값에 대한 가능한 최대 점수를 결정하는 것은 값과 연관된 구역 내의 3D 벡터들에 기반하여 스칼라 값을 결정하는 것을 포함한다.
일부 예들에서, 처리된 데이터를 사용하여 모델의 포즈를 테스팅하는 것은, 처리된 데이터의 연관된 스칼라 값들에 대해 모델의 복수의 프로브들을 테스팅하는 것을 포함하여, 포즈에 미리 결정된 임계치를 초과하는 점수가 책정되지 않는다는 것을 결정하는 것, 및 추가적인 테스팅으로부터, 연관된 스칼라 값들을 결정하는 데 사용되는 구역들 각각과 연관된 포즈들의 세트를 제거하는 것을 포함한다.
일부 예들에서, 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 3차원 데이터를, 각각이 제2 값과 연관되는, 셀들의 제2 세트를 포함하는 제2 필드로 변환하고 ― 이러한 변환은, 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반하여 각각의 제2 셀 값에 대해 대표 데이터를 결정하는 것을 포함함 ―; 필드로 모델의 포즈를 테스팅하는 것에 기반하여 제2 필드로 모델의 포즈를 테스팅하는 동작들을 수행하게 한다.
일부 양상들은, 3차원 모델의 포즈를 테스팅하기 위한 컴퓨터화된 방법에 관한 것이다. 방법은, 3차원 모델을 저장하는 단계 ― 3차원 모델은 프로브들의 세트를 포함함 ―, 객체의 3차원 데이터를 수신하는 단계 ― 3차원 데이터는 데이터 엔트리들의 세트를 포함함 ―, 3차원 데이터를 필드들의 세트로 변환하는 단계 ― 이러한 변환은, 제1 세트의 값들을 포함하는 제1 필드를 생성하는 것, 및 제2 세트의 값들을 포함하는 제2 필드를 생성하는 것을 포함하고, 제1 세트의 값들의 각각의 값은 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시하고, 제2 세트의 값들의 각각의 제2 값은 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 제2 특성은 제1 특성과 상이함 ―, 및 포즈에 대한 점수를 결정하기 위해, 필드들의 세트에 대해 프로브들의 세트를 테스팅하는 것을 포함하여, 필드들의 세트로 3차원 모델의 포즈를 테스팅하는 단계를 포함한다.
일부 예들에서, 제1 필드 및 제2 필드를 생성하는 것은, 각각의 필드에 대한 3차원 어레이를 생성하는 것을 포함하며, 여기서, 각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고, 각각의 3차원 어레이는 3개의 색인의 세트에 의한 연관된 제1 및 제2 값들 각각의 x, y, 및 z 위치를 암시한다.
일부 예들에서, 프로브들, 제1 필드의 제1 세트의 값들, 및 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 강도 데이터, 또는 이들의 일부 조합을 포함한다.
일부 예들에서, 포즈에 대한 점수를 결정하기 위해 포즈를 테스팅하는 것은 각각의 프로브 및 연관된 값에 대한 내적을 합산하는 것을 포함한다.
일부 예들에서, 방법은, 복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하는 단계, 포즈들의 세트를 생성하기 위해, 복수의 포즈들 중 어느 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하는 단계, 및 후속 처리를 위해 포즈들의 세트를 저장하는 단계를 포함한다. 포즈들의 세트 내의 각각의 포즈는 연관된 점수들의 국부적 피크를 나타낼 수 있으며, 방법은, 모델의 상단 포즈를 결정하기 위해 포즈들의 세트를 정밀화하는 단계를 더 포함한다.
일부 양상들은 이미지 획득을 위한 파라미터들을 결정하기 위한 시스템에 관한 것으로, 시스템은, 3차원 모델을 저장하고 ― 3차원 모델은 프로브들의 세트를 포함함 ―, 객체의 3차원 데이터를 수신하고 ― 3차원 데이터는 데이터 엔트리들의 세트를 포함함 ―, 3차원 데이터를 필드들의 세트로 변환하고― 이러한 변환은, 제1 세트의 값들을 포함하는 제1 필드를 생성하는 것, 및 제2 세트의 값들을 포함하는 제2 필드를 생성하는 것을 포함하고, 제1 세트의 값들의 각각의 값은 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시하고, 제2 세트의 값들의 각각의 제2 값은 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 제2 특성은 제1 특성과 상이함 ―, 포즈에 대한 점수를 결정하기 위해, 필드들의 세트에 대해 프로브들의 세트를 테스팅하는 것을 포함하여, 필드들의 세트로 3차원 모델의 포즈를 테스팅하도록 구성되는 하나 이상의 프로세서를 포함한다.
일부 예들에서, 제1 필드 및 제2 필드를 생성하는 것은, 각각의 필드에 대한 3차원 어레이를 생성하는 것을 포함하며, 여기서, 각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고, 각각의 3차원 어레이는 3개의 색인의 세트에 의한 연관된 제1 및 제2 값들 각각의 x, y, 및 z 위치를 암시한다.
일부 예들에서, 프로브들, 제1 필드의 제1 세트의 값들, 및 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 강도 데이터, 또는 이들의 일부 조합을 포함한다.
일부 예들에서, 포즈에 대한 점수를 결정하기 위해 포즈를 테스팅하는 것은 각각의 프로브 및 연관된 값에 대한 내적을 합산하는 것을 포함한다.
일부 예들에서, 하나 이상의 프로세서는, 복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하고, 포즈들의 세트를 생성하기 위해, 복수의 포즈들 중 어느 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하고, 후속 처리를 위해 포즈들의 세트를 저장하도록 추가로 구성된다.
일부 예들에서, 포즈들의 세트 내의 각각의 포즈는 연관된 점수들의 국부적 피크를 표현하며, 방법은, 모델의 상단 포즈를 결정하기 위해 포즈들의 세트를 정밀화하는 단계를 더 포함한다.
일부 실시예들은 프로세서 실행가능 명령어들을 저장하는 적어도 하나의 비-일시적인 컴퓨터 판독가능 저장 매체에 관한 것으로, 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 3차원 모델을 저장하고 ― 3차원 모델은 프로브들의 세트를 포함함 ―, 객체의 3차원 데이터를 수신하고 ― 3차원 데이터는 데이터 엔트리들의 세트를 포함함 ―, 3차원 데이터를 필드들의 세트로 변환하고― 이러한 변환은, 제1 세트의 값들을 포함하는 제1 필드를 생성하는 것, 및 제2 세트의 값들을 포함하는 제2 필드를 생성하는 것을 포함하고, 제1 세트의 값들의 각각의 값은 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시하고, 제2 세트의 값들의 각각의 제2 값은 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 제2 특성은 제1 특성과 상이함 ―, 포즈에 대한 점수를 결정하기 위해, 필드들의 세트에 대해 프로브들의 세트를 테스팅하는 것을 포함하여, 필드들의 세트로 3차원 모델의 포즈를 테스팅하는 동작들을 수행하게 한다.
일부 예들에서, 제1 필드 및 제2 필드를 생성하는 것은, 각각의 필드에 대한 3차원 어레이를 생성하는 것을 포함하며, 여기서, 각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고, 각각의 3차원 어레이는 3개의 색인의 세트에 의한 연관된 제1 및 제2 값들 각각의 x, y, 및 z 위치를 암시한다.
일부 예들에서, 프로브들, 제1 필드의 제1 세트의 값들, 및 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 강도 데이터, 또는 이들의 일부 조합을 포함한다.
일부 예들에서, 포즈에 대한 점수를 결정하기 위해 포즈를 테스팅하는 것은 각각의 프로브 및 연관된 값에 대한 내적을 합산하는 것을 포함한다.
일부 예들에서, 명령어들은, 하나 이상의 프로세서로 하여금 추가로, 복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하고, 포즈들의 세트를 생성하기 위해, 복수의 포즈들 중 어느 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하고, 후속 처리를 위해 포즈들의 세트를 저장하게 한다.
일부 예들에서, 포즈들의 세트 내의 각각의 포즈는 연관된 점수들의 국부적 피크를 표현하며, 명령어들은, 하나 이상의 프로세서로 하여금 추가로, 모델의 상단 포즈를 결정하기 위해 포즈들의 세트를 정밀화하게 한다.
따라서, 후속하는 개시된 주제의 상세한 설명이 더 잘 이해될 수 있고, 관련 기술분야에 대한 본 발명의 기여가 더 잘 인식될 수 있도록, 개시된 주제의 특징들을 다소 광범위하게 약술하였다. 물론, 이하에서 설명되고 본원에 첨부된 청구항들의 주제를 형성할 개시된 주제의 부가적인 특징들이 존재한다. 본원에서 이용되는 어법 및 용어법이 설명의 목적을 위한 것이고, 제한적인 것으로 여겨지지 않아야 한다는 것이 이해되어야 한다.
도면들에서, 다양한 도면들에 예시된 각각의 동일한 또는 거의 동일한 구성요소는 동일한 참조 부호로 표현된다. 명확화의 목적들을 위해, 모든 각각의 도면에서 모든 각각의 구성요소가 라벨링되지는 않을 수 있다. 도면들은 반드시 실측으로 도시되는 것은 아니며, 대신, 본원에서 설명된 기법들 및 디바이스들의 다양한 양상들을 예시하는 데 중점을 둔다.
도 1은 일부 실시예들에 따른 예시적인 기계 시각 시스템을 도시한다.
도 2a는 일부 실시예들에 따른, 필드를 생성하고 필드를 사용하여 모델을 테스팅하기 위한 예시적인 방법을 도시한다.
도 2b는 일부 실시예들에 따른, 필드를 생성하기 위한 예시적인 방법을 도시한다.
도 3은 일부 실시예들에 따른, 예시적인 3차원 이미지 데이터 및 연관된 필드를 도시한다.
도 4는 일부 실시예들에 따른, 개략적인 검색을 위한 처리된 이미지 데이터를 생성하기 위한 예시적인 방법을 도시한다.
도 5는 일부 실시예들에 따른, 예시적인 2차원 이미지 데이터 및 연관된 처리된 이미지 데이터를 도시한다.
도 6은 일부 실시예들에 따른, 개략적인 검색 동안의 2차원 이미지 데이터의 포즈들의 세트 및 연관된 데이터 엔트리들의 예시적인 제거를 도시한다.
도 7은 일부 실시예들에 따른, 예시적인 3차원 이미지 데이터 및 연관된 처리된 이미지 데이터를 도시한다.
도 8은 일부 실시예들에 따른, 개략적인 검색 동안의 3차원 이미지 데이터의 포즈들의 세트 및 연관된 데이터 엔트리들의 예시적인 제거를 도시한다.
도 9는 일부 실시예들에 따른, 초기 포즈 검색을 위한 예시적인 방법을 도시한다.
다음의 설명에서, 개시된 주제의 철저한 이해를 제공하기 위해, 개시된 주제의 시스템들 및 방법들과, 그러한 시스템들 및 방법들이 동작할 수 있는 환경 등에 관한 다수의 특정 세부사항들이 기재된다. 게다가, 아래에서 제공되는 예들은 예시적인 것이고, 개시된 주제의 범위 내에 있는 다른 시스템들 및 방법들이 존재하는 것으로 고려된다는 것이 이해될 것이다.
도 1은 일부 실시예들에 따른 예시적인 기계 시각 시스템(100)을 도시한다. 예시적인 기계 시각 시스템(100)은 카메라(102)(또는 다른 이미징 획득 디바이스) 및 컴퓨터(104)를 포함한다. 컴퓨터(104)는, 하나 이상의 프로세서 및 컴퓨터 디스플레이 형태의 인간-기계 인터페이스, 및 임의적으로 하나 이상의 입력 디바이스(예컨대, 키보드, 마우스, 트랙 볼 등)를 포함한다. 카메라(102)는, 다른 구성요소들 중에서도, 렌즈(106) 및 카메라 센서 요소(예시되지 않음)를 포함한다. 렌즈(106)는 시야(108)를 포함하고, 렌즈(106)는 시야(108)로부터의 광을 센서 요소 상에 포커싱한다. 센서 요소는 카메라 시야(108)의 디지털 이미지를 생성하고, 그 이미지를 컴퓨터(104)의 일부를 형성하는 프로세서에 제공한다. 도 1의 예에 도시된 바와 같이, 객체(112)는 컨베이어(110)를 따라 카메라(102)의 시야(108) 내로 이동한다. 카메라(102)는, 본원에서 추가로 논의되는 바와 같이, 객체(112)가 처리를 위해 시야(108) 내에 있는 동안 객체(112)의 하나 이상의 디지털 이미지를 생성할 수 있다. 동작 시, 컨베이어는 복수의 객체들을 포함할 수 있다. 이러한 객체들은, 이를테면 검사 프로세스 동안, 카메라(102)의 시야(108) 내로 차례로 통과될 수 있다. 그러므로, 카메라(102)는 각각의 관측된 객체(112)의 적어도 하나의 이미지를 획득할 수 있다.
일부 실시예들에서, 카메라(102)는 2차원 이미징 디바이스, 이를테면 2차원(2D) CCD 또는 CMOS 이미징 어레이이다. 일부 실시예들에서, 2차원 이미징 디바이스들은 밝기 값들의 2D 어레이를 생성한다. 일부 실시예들에서, 기계 시각 시스템은, 이를테면, 2차원 그레디언트 필드 이미지를 생성함으로써 2D 데이터를 처리한다. 그레디언트 필드 이미지는, 예컨대, 연관된 크기들 및 방향들을 갖는 셀들의 세트를 포함할 수 있다. 예컨대, 그레디언트 필드는, 크기 및 방향을 암시할 수 있는 벡터(x, y)의 데카르트 성분들을 포함할 수 있고, 그레디언트 필드는 실제 (r, 세타) 값들 등을 저장할 수 있다. 일부 실시예들에서, 카메라(103)는 3차원(3D) 이미징 디바이스이다. 3D 이미징 디바이스는 (x, y, z) 포인트들의 세트(예컨대, 여기서, z 축은 3D 이미징 디바이스로부터의 거리와 같은 제3 차원을 부가함)를 생성할 수 있다. 3D 이미징 디바이스는, 음영을 이용한 형상화(shape-from-shading), 스테레오 이미징, 비행 시간(time of flight) 기법들, 프로젝터 기반 기법들, 및/또는 다른 3D 생성 기술들과 같은 다양한 3D 이미지 생성 기법들을 사용할 수 있다.
일부 실시예들에서, 기계 시각 시스템은 카메라(103)로부터의 3D 데이터를 처리한다. 카메라(103)로부터 수신된 3D 데이터는, 예컨대, 포인트 클라우드 및/또는 범위 이미지를 포함할 수 있다. 포인트 클라우드는 솔리드(solid) 객체의 표면 상의 또는 그 근처의 3D 포인트들의 그룹을 포함할 수 있다. 예컨대, 포인트들은 직선 또는 다른 좌표계에서의 그들의 좌표들의 관점에서 제시될 수 있다. 일부 실시예들에서, 어느 포인트들이 객체의 표면 상에서 이웃들인지를 표시하는 메쉬 또는 그리드 구조와 같은 다른 정보가 또한 임의적으로 존재할 수 있다. 일부 실시예들에서, 센서 측정들로부터 도출되거나 이전에 컴퓨팅된, 곡률들, 표면 법선, 가장자리들, 및/또는 색상 및 알베도 정보를 포함하는 표면 특징들에 관한 정보가 입력 포인트 클라우드들에 포함될 수 있다. 일부 실시예들에서, 2D 및/또는 3D 데이터는 2D 및/또는 3D 센서로부터, CAD 또는 다른 솔리드 모델로부터, 그리고/또는 범위 이미지들, 2D 이미지들, 및/또는 다른 이미지들을 전처리함으로써 획득될 수 있다.
컴퓨터(104)의 예들은, 단일 서버 컴퓨터, 일련의 서버 컴퓨터들, 단일 개인용 컴퓨터, 일련의 개인용 컴퓨터들, 미니 컴퓨터, 메인프레임 컴퓨터, 및/또는 컴퓨팅 클라우드를 포함할 수 있지만 이에 제한되지 않는다. 컴퓨터(104)의 다양한 구성요소들은 하나 이상의 운영 체제를 실행할 수 있으며, 운영 체제의 예들은, 예컨대, 마이크로소프트 윈도우즈 서버(Microsoft Windows Server™), 노벨 네트웨어(Novell Netware™), 레드햇 리눅스(Redhat Linux™), 유닉스(Unix), 및/또는 맞춤형 운영 체제를 포함할 수 있지만 이에 제한되지 않는다. 컴퓨터(104)의 하나 이상의 프로세서는, 하나 이상의 프로세서에 연결된 메모리에 저장된 연산들을 처리하도록 구성될 수 있다. 메모리는, 하드 디스크 드라이브, 플래시 드라이브, 테이프 드라이브, 광학 드라이브, RAID 어레이, 랜덤 액세스 메모리(RAM), 및 판독 전용 메모리(ROM)를 포함할 수 있지만 이에 제한되지 않는다.
본원에서 논의되는 바와 같이, 객체의 이미지에서 모델을 검색하기 위해, 기법들은, 이미지에서 모델의 대략적인 또는 개략적인 위치를 결정하기 위한 제1 단계, 및 이어서 모델의 특정 위치를 결정하기 위해 개략적인 위치를 정밀화하기 위한 제2 단계를 포함하는 2개(또는 그 초과)의 단계를 수행하도록 구성될 수 있다. 다수의 단계들을 사용하는 것이 유익할 수 있는데, 그 이유는, 예컨대, 상이한 단계들이 검색 속도, 효율 등을 개선하기 위해 검색을 수행하는 데 있어 상이한 기술적 접근법들을 사용할 수 있기 때문이다. 2D 패턴 검색 접근법들의 경우, 예컨대, 기법들은, 프로브들의 세트를 포함하는 객체의 모델을 훈련시키는 것을 포함할 수 있다. 2D 프로브들 각각은 (x, y) 위치 및 방향을 포함할 수 있다. 기계 시각 시스템은, 장면(예컨대, 객체(112)가 컨베이어 벨트(110)를 따라 이동하는 도 1에 도시된 장면)의 후속하여 포착된 런타임 이미지들의 검색과 함께 사용하기 위해 훈련된 모델을 저장한다. 기계 시각 시스템은, 장면의 이미지, 이를테면, 각각의 셀에서 누적된 광을 표현하는 픽셀 값들을 갖는 2D 이미지를 포착할 수 있다. 기계 시각 시스템은 2D 이미지를 조밀한 그레디언트 필드로 변환할 수 있으며, 여기서, 각각의 셀은 특정 이미지에 대한 데이터에서의 변화를 반영하는 단일 그레디언트 값을 포함한다(예컨대, 그레디언트는 일정한 영역들에 대해 영에 가깝고 가장자리 근처에서 클 수 있음). 그레디언트 값들은, 예컨대, 벡터, 스칼라 값(예컨대, 크기 또는 방향 각도) 등일 수 있다. 예컨대, 각각의 셀이 벡터를 포함하는 경우, 벡터는 영의 크기를 가질 수 있다. 기계 시각 시스템은, 특정 배치에 대한 점수를 계산하기 위해 2D 모델의 상이한 변환들(예컨대, 병진이동, 회전, 규모, 편향, 애스펙트(aspect), 원근 등)을 테스팅할 수 있다. 점수는, 예컨대, 프로브들이 2D 이미지의 벡터들(예컨대, 벡터들은, 본원에서 추가로 논의되는 바와 같이, 입력 2D 정보의 그레디언트임)에 얼마나 잘 매칭하는지를 반영할 수 있다. 예컨대, 일부 기법들은 빈(bin)별로 모델을 테스팅하고, 후속 정밀화를 위해 가장 높은 점수가 책정된 위치들을 취할 수 있다. 일부 기법들은, 인근 검색들이 유사할 것이므로 국부적 피크들에 초점을 두도록 구성될 수 있고, 시스템은 모든 인근 매치들을 후보 포즈들로서 마킹하는 것을 피하려 시도하도록 구성될 수 있다. 3D 컨텍스트에서, 예컨대, 이미지는 범위 이미지, 포인트 클라우드 등일 수 있다. 일반적인 사안으로서, 본원에서 추가로 논의되는 바와 같이, 기계 시각 시스템은 프로브들의 세트를 포함하는 객체의 3D 모델을 훈련시킬 수 있다. 기계 시각 시스템은 런타임 3D 이미지들에서 3D 모델의 포즈를 검색하기 위해 3D 모델을 사용할 수 있다. 본원에서 논의되는 바와 같이, 기계 시각 시스템은, 3D 모델의 포즈를 검색하는 것을 용이하게 하기 위해 3D 이미지들을 처리하여 하나 이상의 3D 필드를 생성할 수 있다. 필드는 벡터들의 세트를 포함할 수 있다. 크기 또는 방향을 암시할 수 있는, 벡터들의 데카르트 성분들(x, y, z)이 저장될 수 있고, 필드는 실제 (r, 위도(lat), 경도(long)) 값들 등을 저장할 수 있다.
본원에서 논의되는 실시예들은 다양한 상이한 응용들에서 사용될 수 있고, 이들 중 일부는, 시각 유도 로봇 공학에서의 파트-피킹(part-picking), 3차원 검사, 자동차 키팅(kitting), 성형 플라스틱 및 주조 금속 용적 검사, 및 조립 검사를 포함할 수 있지만 이에 제한되지 않는다. 그러한 응용들은 (예컨대, 로봇 파지기를 유도하거나 객체들을 검사하기 위해) 이미지들 내의 관심 패턴의 위치 및 배향을 검색 및 식별하는 것을 포함할 수 있다. 일부 실시예들에서, 훈련 단계는 관심 패턴을 표현하기 위한 모델을 개발하는 데 사용되며, 이는 복수의 프로브들을 포함할 수 있다. 각각의 프로브는 관심 포인트 및 연관된 데이터(예컨대, 위치 및 벡터)이고, 특정 위치에서의 패턴 특징 또는 구역에 대한 런타임 이미지 특징 또는 구역의 유사성의 척도를 결정하는 데 사용될 수 있다. 복수의 프로브들은 런타임 이미지에 대해 복수의 포즈들에서 적용될 수 있고, 각각의 포즈에서의 프로브들로부터의 정보는 런타임 이미지에서 패턴의 가장 가능성 있는 포즈들을 결정하는 데 사용될 수 있다.
본 발명자들은, 기존의 기계 시각 기법들이 종래의 3D 데이터를 사용할 때 상당한 비효율들로부터 어려움을 겪을 수 있다는 것을 발견하였다. 특히, 본 발명자들은, 3D 데이터에서 포인트의 이웃하는 포인트들을 검색함으로써(예컨대, 포인트 클라우드에서 인근 포인트들을 검색함으로써) 종종 상당한 양의 처리 시간이 소모된다는 것을 발견하였다. 예컨대, 기계 시각 시스템들은 연속적인 데이터를 처리하는 데 있어 효율적일 수 있지만, 기계 시각 시스템들은 데이터를 검색하고 랜덤으로 액세스하는 데 있어 훨씬 덜 효율적일 수 있다. 특히, 컴퓨팅 디바이스들은 종종, 연속적인 메모리 위치들 상에서 반복되는 작업들의 대규모 병렬화에 대한 최적화된 하드웨어를 포함한다. 조건부 분기들로 그러한 병렬화를 중단하는 것은 (예컨대, 분기는 전형적으로, 병렬 활동을 중단하고, 분기/점프를 수행하기 위해 시간을 소모하고, 이어서 병렬 활동으로 다시 돌아갈 것을 요구하므로) 성능을 상당히 감소시킬 수 있다. 본 발명자들은, 이러한 그리고 다른 비효율들을 해결하기 위한 기계 시각 기법들에 대한 기술적 개선들을 개발하였다. 본원에서 추가로 논의되는 바와 같이, 기법들은 3D 데이터로부터 조밀한 필드를 개발하는 것을 포함하며, 여기서, 조밀한 필드는, 3D 데이터에 기반하여 결정되는 각각의 필드 값에 대한 데이터를 포함한다. 본 발명자들은, 각각의 값이 데이터를 포함하기 때문에, 기계 시각 기법들이, 위에 논의된 바와 같이 이웃하는 포인트들을 검색하는 것을 피하기 위한 프로세스의 일부로서 필드 값들을 사용할 수 있으며, 이는 기존의 기계 시각 기법들의 처리 시간을 상당히 감소시킬 수 있다는 것을 발견하였다. 본원에서 개시된 기법들은, 필드 또는 격자의 각각의 엔트리에서 데이터를 생성하고 그 데이터를 연속적으로 처리함으로써, 병렬화를 중단하는 시간 소모적인 분기들을 피할 수 있고, 따라서, 성능을 상당히 개선할 수 있다.
도 2a는 일부 실시예들에 따른, 3D 모델을 테스팅하기 위해 3D 이미지로부터 필드를 생성하기 위한 예시적인 방법(200)을 도시한다. 단계(202)에서, 기계 시각 시스템은 객체의 3차원 데이터(예컨대, 포인트 클라우드, 조밀한 3D 이미지 등)를 수신한다. 3차원 데이터는 데이터 엔트리들의 세트, 이를테면, 3D 데이터의 범위 이미지(예컨대, 각각의 셀에 대한 높이를 가짐), 포인트 클라우드, 및/또는 다른 정보를 포함한다. 단계(204)에서, 기계 시각 시스템은 3차원 데이터를 필드로 변환한다. 필드는 값들의 세트를 포함한다. 방법은, 필드의 각각의 값에 대해, 3D 데이터로부터 도출되는 대표 데이터를 결정하는 것을 포함한다. 대표 데이터는, 예컨대, 데이터 엔트리들에 대한 벡터 및/또는 다른 대표 정보, 이를테면, 전체 벡터, 행렬(예컨대, 본원에서 추가로 논의되는 vvT) 등 대신에 단지 벡터 크기 및/또는 방향을 포함할 수 있다. 방법은, 3차원 데이터의 데이터 엔트리들의 세트로부터의 하나 이상의 데이터 엔트리에 기반하여 대표 데이터를 결정하는 것을 포함할 수 있다. 단계(206)에서, 기계 시각 시스템은 포즈에 대한 점수를 결정하기 위해 필드로 모델의 포즈를 테스팅한다. 단계(208)에서, 기계 시각 시스템은 포즈가 수용가능한지 여부 또는 포즈가 건너뛰어져야 하는지(예컨대, 무시, 폐기 등) 여부를 결정한다. 예컨대, 기계 시각 시스템은, 필드에 대해 3D 모델의 포즈의 점수를 책정하고, 점수가 임계치를 초과하는지 여부를 결정할 수 있다. 다른 예로서, 본원에서 추가로 논의되는 바와 같이, 기계 시각 시스템은 다수의 필드들에 대해 3D 모델의 포즈의 점수를 책정할 수 있다. 점수가 임계치를 충족하는 경우(예컨대, 임계치를 초과하는 경우), 방법은 단계(210)로 진행하고, 기계 시각 시스템은 (예컨대, 본원에서는 논의되는 바와 같이, 후속 정밀화를 위해) 포즈를 저장한다. 점수가 임계치를 충족하지 않는 경우, 방법은 단계(212)로 진행하고, 테스팅할 부가적인 3D 모델의 포즈들이 존재하는지 여부를 결정한다. 추가적인 포즈들이 존재하는 경우, 방법은 3D 모델의 다른 포즈를 테스팅하기 위해 다시 단계(206)로 진행한다. 추가적인 포즈들이 존재하지 않는 경우, 방법은 단계(214)로 진행하여 종료된다.
단계(204)를 참조하면, 3차원 데이터를 필드로 변환하는 것은, 값들의 세트의 3차원 어레이를 생성하는 것을 포함할 수 있다. 예컨대, 3개의 차원들은 3D 데이터의 x, y, 및 z 축들을 표현할 수 있다. 값들의 세트 내의 각각의 값은 벡터일 수 있다. 벡터는 다양한 방식들로 표현될 수 있다. 예컨대, 일부 실시예들에서, 각각의 벡터는 x, y, 및 z 성분들로서 저장될 수 있으며, 여기서, 각각의 성분은 특정 수의 비트들, 이를테면, 부호있는 8 비트 정수들을 사용하여 표현될 수 있고, 값들은 -127 내지 127의 범위일 수 있다. 다른 예로서, 일부 실시예들에서, 각각의 벡터는 크기 및 2개의 각도를 사용하여 표현될 수 있다. 일부 실시예들에서, 3차원 데이터를 필드로 변환하는 것은 조밀하게 채워진 격자를 생성하는 것을 포함할 수 있다. 조밀하게 채워진 격자는, 예컨대, 격자 내의 각각의 가능한 스폿에 대한 값을 포함할 수 있다. 격자 내의 스폿들은 3D 데이터의 데이터 엔트리들의 원래의 포지션에 연결되거나 연결되지 않을 수 있다. 예컨대, 격자 스폿들이 3D 데이터와 상이한 그리드를 갖도록 커널 또는 필터가 사용될 수 있다. 프로세스는, 포인트 클라우드를 조밀한 필드로 변환하는 것을 포함할 수 있으며, 조밀한 필드는 조밀한 필드의 각각의 가능한 위치에서 벡터를 포함한다.
일부 실시예들에서, 기법들은, 필드를 생성하기 전에 3D 데이터에 변환을 적용하는 것을 포함할 수 있다. 예컨대, 기법들은, 필드를 생성하기 전에 강체 변환(rigid transform), 선형 변환, 및/또는 비-선형 변환을 적용하는 것을 포함할 수 있다. 일부 실시예들에서, 기법들은, 왜곡을 처리하기 위해 하나 이상의 변환을 적용하는 것을 포함할 수 있다. 예컨대, 포인트 클라우드는, 값들이 하나 이상의 축에서 편향되도록 지연되어 획득될 수 있으며, 포인트 클라우드는 편향을 처리하기 위해 변환될 수 있다. 일부 실시예들에서, 기법들은, 모델의 포즈들을 검색할 때 모델의 왜곡들을 검색하는 것을 포함할 수 있다. 예컨대, 모델의 다양한 변환들을 테스팅함으로써 왜곡 자유도가 검색될 수 있다.
단계(204)를 추가로 참조하면, 도 2b는 일부 실시예들에 따른, 필드를 생성하기 위한 예시적인 방법(250)을 도시한다. 예컨대, 일부 실시예들에서, 기법들은 3D 포인트 클라우드를 조밀한 필드로 변환하는 데 사용될 수 있다. 조밀한 필드는, 본원에서 추가로 논의되는 바와 같이, 각각의 필드 값에서 데이터를 포함한다(반면, 예컨대, 포인트 클라우드는 포인트들이 존재하는 곳만을 열거하고, 포인트들의 부재는 위치 근처에 어떠한 포인트들도 존재하지 않는 것에 의해 암시됨). 위에 언급된 바와 같이, 데이터는 벡터를 포함할 수 있다. 필드 셀의 (x, y, z)는 필드에서 벡터가 발생하는 곳을 표시한다. 일부 실시예들에서, 3D 데이터에서 3차원 객체 내부에 놓인 필드 값들은 영으로 설정될 수 있다. 따라서, 일부 구현들에서, 필드는, 3D 데이터와 비교하여, 이를테면, 포인트 클라우드와 비교하여 정보에 대한 더 용이한 액세스를 제공할 수 있다. 일부 실시예들에서, 필드는 3D 데이터를 더 균일하게 보이게 할 수 있는 반면, 포인트 클라우드와 같은 다른 3D 데이터는 특정 영역들을 강조할 수 있다. 다른 예로서, 일부 실시예들에서, 기법들은 조밀한 3D 이미지를 조밀한 필드로 변환하는 데 사용될 수 있다. 예컨대, 시스템은, 본원에서 추가로 논의되는 바와 같이, 조밀한 3D 이미지에 대한 각각의 포인트에서의 그레디언트를 결정하고 방법(250)을 적용할 수 있다.
단계(252)에서, 기계 시각 시스템은 각각의 3D 데이터 엔트리(예컨대, 3D 포인트)에 대한 벡터들의 세트를 결정한다. 예컨대, 기계 시각 시스템은, 각각의 3D 데이터 엔트리에 대한 표면 법선 벡터 및 가장자리 벡터를 결정하기 위해, 3D 센서로부터의 이웃 3D 데이터 포인트 위치들 및/또는 정보를 사용할 수 있다. 벡터들 중 임의의 벡터는, 이를테면, 특정 데이터 엔트리에 대해 명확한 법선 또는 가장자리가 존재하지 않는다는 것을 표시하기 위해, 영(0) 길이를 가질 수 있다.
단계(254)에서, 각각의 3D 데이터 엔트리(예컨대, 포인트)에 대해, 기계 시각 시스템은 그 3D 데이터 엔트리를 포함하는 필드 셀(예컨대, 복셀)을 결정한다. 단계(256)에서, 기계 시각 시스템은, 각각의 필드 셀과 연관된 누적된 데이터를 결정한다. 일부 실시예들에서, 기법들은, 각각의 필드 셀과 연관된 입력 벡터들을 결정하는 것을 포함한다. 일부 실시예들에서, 시스템은, 그 필드 셀에 놓이는 모든 3D 데이터 포인트들과 연관된 벡터들에 관한 요약 정보를 누적할 수 있다. 예컨대, 요약 정보는, 벡터 성분들 그 자체(이를테면, 극성이 의미가 있을 때) 및/또는 다른 정보, 이를테면, 각각의 벡터의 그 자신과의 외적에 의해 형성되는 행렬(vvT)의 성분들(예컨대, 극성이 의미가 없을 때 사용될 수 있음)을 포함할 수 있다. 일부 실시예들에서, 기법들은, 예컨대, 3D 데이터의 특징들을 흐리게 또는 짙게 하기 위해, 각각의 포인트의 영향의 범위를 확산시키는 것을 포함할 수 있다. 일부 실시예들에서, 시스템은, 각각의 3D 데이터 포인트 주위에 미리 결정된 패턴으로 복제들을 만들 수 있다. 미리 결정된 패턴은, 예컨대, 벡터의 방향에 대한 것일 수 있다. 예컨대, 기법들은, (예컨대, 위 및 아래에 법선을 복제함으로써) 표면을 짙게 할 수 있고, (예컨대, 주름(crease) 벡터 주위에 원통으로 가장자리들을 복제함으로써) 가장자리를 짙게 할 수 있는 그러한 식으로 이루어진다. 미리 결정된 패턴은, 벡터가 무엇을 표현하는지에 따라, 이를테면, 벡터가 법선을 표현하는지 가장자리를 표현하는지에 따라 상이할 수 있다.
단계(258)에서, 기계 시각 시스템은, 단계(256)로부터의 누적된 데이터에 기반하여 각각의 필드 셀에 대한 대표 데이터를 결정한다. 일부 실시예들에서, 필드 셀이 어떠한 누적된 데이터와도 연관되지 않는 경우(예컨대, 필드 셀에 속하는 어떠한 벡터들도 갖지 않는 것과 같이, 어떠한 3D 데이터 엔트리들과도 연과되지 않는 경우), 필드 셀은 영으로 설정될 수 있다(예컨대, 영은, 필드가 벡터들을 포함할 때, 영 벡터를 지칭하는 데 사용됨).
일부 실시예들에서, 기법들은, 단계(254)에서 결정된 그 셀에 대한 누적된 데이터에 기반하여 각각의 필드 셀에 대한 대표 벡터를 결정하는 것을 포함할 수 있다. 예컨대, 대표 벡터는, 성분 방향 평균을 계산하거나, 누적된 행렬(예컨대, 각각의 벡터의 그 자신과의 외적을 누적함으로써 형성됨, vvT)로부터 고유벡터들을 추출하는 등에 의해 결정될 수 있다. 일부 실시예들에서, 이를테면, 영으로 나누는 것을 방지하고, 그에 기여하는 데이터가 거의 없을 때 대표 벡터의 길이를 감소시키는 등등을 위해, 규칙화(regularization) 상수가 분모에 더해질 수 있다. 예컨대, 다음의 수학식을 사용하여, 행렬 M이 규칙화 상수 k를 이용하여 벡터들(v1 내지 vn)을 포함하는 n개의 벡터들의 세트(v)에 대해 컴퓨팅될 수 있다(간략화를 위해 수학식에 도시되진 않지만, 합산들은 모든 벡터들(vi)에 걸쳐 이루어지고, i = 1 - n임):
일부 실시예들에서, 기계 시각 시스템은 (예컨대, 포즈 테스팅을 위해) 필드를 생성할 때 행렬 M을 저장할 수 있다. 일부 실시예들에서, 행렬 M의 대표 데이터, 이를테면, 단지 행렬 내의 6개의 고유 값, 6개의 고유 값을 대표하는 정보(예컨대, 6개의 값 중 단지 5개(또는 그보다 적은 개수)인데, 그 이유는, 항등 행렬의 상수 배수가 부가되어 값들 중 하나를 삭감할 수 있기 때문임) 등이 저장될 수 있다.
일부 실시예들에서, 기계 시각 시스템은, 행렬 M을 사용하여 대표 벡터를 결정할 수 있다. 예컨대, 기계 시각 시스템은, 위에 언급된 바와 같이, 대표 벡터를 결정하기 위해 고유분해를 사용할 수 있다. 대표 벡터는 고유값들, 고유벡터들, 및/또는 둘 모두를 사용하여 컴퓨팅될 수 있다. 일부 실시예들에서, 고유값들은 대표 벡터의 크기를 결정하는 데 사용될 수 있다. 예컨대, 가장 큰 고유값은 최대 크기의 표현으로서 사용될 수 있다. 다른 예로서, (예컨대, 대표 벡터에서의 벡터들의 잠재적 불일치를 고려하기 위해) 하나 이상의 부가적인 고유값이 가장 큰 고유값과 조합되어 사용될 수 있다. 일부 실시예들에서, 고유벡터들은 대표 벡터의 방향을 결정하는 데 사용될 수 있다. 예컨대, 가장 큰 고유값과 연관된 고유벡터는 우세한 방향을 표현하는 데 사용될 수 있다. 고유값(들)은 대표 벡터를 결정하기 위해 고유벡터(들)와 곱해질 수 있다. 예컨대, 가장 큰 고유값과 연관된 고유벡터가 단지 가장 큰 고유값과 곱해지고, 가장 큰 고유값과 두 번째로 가장 큰 고유값의 차이(가장 큰 고유값과 두 번째로 가장 큰 고유값이 동일한 값을 가질 때 영일 수 있음)와 곱해질 수 있는 그러한 식으로 이루어진다. 일부 실시예들에서, 고유벡터(들)는, 예컨대, vvT로부터 크기의 제곱을 제거하기 위해, 고유값(들)의 제곱근과 곱해질 수 있다. 예컨대, 가장 큰 고유값과 연관된 고유벡터는, 가장 큰 고유값의 제곱근과 곱해지고, 가장 큰 고유값과 두 번째로 가장 큰 고유값의 차이의 제곱근과 곱해질 수 있는 그러한 식으로 이루어진다.
일부 실시예들에서, 필드는 정규화될 수 있다. 예컨대, 시스템은, 방향을 변경함이 없이, 각각의 벡터의 길이를 (예컨대, 시그모이드(sigmoid)를 통해) 맵핑함으로써 필드를 정규화할 수 있다. 정규화는, 예컨대, 임계치에 대한 포즈 점수 응답을 조정하기 위해 사용될 수 있다. 예컨대, 일부 실시예들은, 점수책정 결과들을 단순히 통과(예컨대, 임계치 초과) 또는 실패(예컨대, 임계치 미만)로 비닝(bin)할 수 있다. 일부 실시예들에서, (예컨대, 영 내지 1의 길이를 출력하기 위해 시그모이드를 사용하여) 필드를 정규화하는 것이 더 안정적일 수 있다.
일부 실시예들에서, 필드는 정규화되지 않는다. 예컨대, 일부 실시예들에서, 미가공 데이터(예컨대, 벡터들의 크기)는 정규화 없이도 의미가 있을 수 있다. 예컨대, 더 짧은 벡터 크기는 법선 또는 가장자리에 대한 더 적은 신뢰도/일치를 의미하는 반면, 더 긴 벡터 크기는 더 큰 신뢰도를 의미한다. 일부 실시예들에서, 점수책정 기법들(예컨대, 본원에서 논의되는 바와 같은, 내적)은 필드로부터 그러한 데이터(예컨대, 크기들)를 통합할 수 있고, 따라서, 비-정규화된 필드를 사용하는 것이 바람직할 수 있다.
일부 실시예들에서, 각각의 필드 셀 값은, 3D 데이터의 하나의 연관된 데이터 엔트리, 3D 데이터의 복수의 데이터 엔트리들에 기반하고/거나 데이터 엔트리들 중 어느 것에도 기반하지 않을 수 있다. 일부 실시예들에서, 기법들은, 필드 셀 값들 각각에 대한 벡터를 결정하는 것을 포함할 수 있다. 예컨대, 3차원 데이터의 데이터 엔트리들은 포인트들의 목록을 포함할 수 있고, 기법들은, 각각의 필드 셀에 대해, 포인트들의 목록에 기반하여 벡터를 결정할 수 있다. 일부 실시예들에서, 위에 언급된 바와 같이, 기법들은, 3D 데이터에서 객체 내부에 있는 필드들에 대한 값을 결정할 수 있다. 예컨대, 기계 시각 시스템은, 포인트 클라우드에 기반하여 하나 이상의 필드 셀이 객체의 내부 부분과 연관된다는 것을 결정하고, 값을 영으로 설정할 수 있다.
단계들(206 내지 212)을 참조하면, 위에 언급된 바와 같이, 방법(200)은, 3D 이미지에서 3D 모델 정렬 검색의 개략적인 단계를 수행하는 데 사용될 수 있다. 일부 실시예들에서, 방법(200)은, 후속 단계들에 의해 추가로 정밀화될 수 있는 3D 모델의 대략적인 포즈를 필드에서 검색할 수 있다. 대략적인 포즈는, 예컨대, (x, y, z) 위치뿐만 아니라 롤, 피치, 및/또는 요(yaw)와 같은 배향 데이터를 포함하는 3D 포지션을 포함할 수 있다. 단계(206)를 참조하면, 일부 실시예들에서, 테스팅은, 필드에 대해 3D 모델의 프로브들의 세트를 테스팅하는 것을 포함한다. 예컨대, 기계 시각 시스템은, 각각의 프로브 및 필드 내의 연관된 벡터의 내적을 합산함으로써 점수를 결정하기 위해 필드에 대해 모델의 프로브들의 세트를 테스팅할 수 있다. 일부 실시예들에서, 도 9와 함께 추가로 논의되는 바와 같이, 점수는 다수의 값들(예컨대, 다수의 필드들), 이를테면, 주름 가장자리 정보, 폐색 경계 정보, 색상 정보, 강도 정보 등에 기반할 수 있다.
도 3은 일부 실시예들에 따른, 예시적인 3차원 이미지 데이터(300) 및 연관된 필드(350)를 도시한다. 필드(350)는 도 2b의 방법(250)을 사용하여 생성될 수 있다. 3D 이미지 데이터(300)는, 데이터 엔트리들(302A 내지 302N)의 세트(총칭하여, 데이터 엔트리들(302))를 포함한다. 각각의 데이터 엔트리(302)에 대해, 기계 시각 시스템은 벡터들의 세트를 결정할 수 있다. 예컨대, 기계 시각 시스템은, 도 3에 도시된 바와 같이, 데이터 엔트리(302A)에 대한 벡터들(v1 내지 vn)을 결정할 수 있다. 필드(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 계층(예컨대, 계층 1) 및 처리된 이미지 데이터의 제2 계층(예컨대, 계층 2)을 포함하는 2개의 상이한 이미지 데이터 계층을 생성할 수 있으며, 여기서, 제2 계층에서의 각각의 더 큰 검색 구역은 제1 계층의 다수의 더 작은 구역들을 누적하여 표현한다. 시스템은, 포즈에 대해 상위 계층(들)(예컨대, 계층 "1"이 계층 "2"에 대한 상위 계층임)에서 더 작은 구역들을 검색할 것인지를 결정하기 위해 하위 계층의 각각의 더 큰 구역을 처리할 수 있다. 본원에서 논의되는 바와 같이, 시스템은 제3 계층 및/또는 더 많은 계층들을 사용할 수 있으며, 각각의 하위 계층은 선행 계층들보다 더 큰 구역들을 사용하여 생성된다. 일부 실시예들에서, 더 큰 구역들은, 연관된 더 작은 구역들의 최대 점수 경계를 사용하여 분석될 수 있다. 최대 점수 기법은, 구역들에서의 값보다 더 높은 점수가 모델에 책정되지 않을 것임을 시스템이 결정할 수 있게 하는 데 사용될 수 있다. 따라서, 시스템은, 상위 계층의 연관된 구역들에서의 임의의 가능한 포즈들에 충분히 높은 점수가 책정될 것이어서 이미지 데이터를 테스팅할 때 그 포즈들을 추가로 검토할 가치가 있는지 여부를 결정하기 위해 최대 점수 기법을 사용할 수 있다. 그렇지 않으면, 시스템은, 그 구역과 연관된 데이터 엔트리들 중 임의의 엔트리에서 포즈를 추가로 고려할 가치가 없다고 결정할 수 있다.
도 4는 일부 실시예들에 따른, 개략적인 검색을 위한 예시적인 방법(400)을 도시한다. 단계(402)에서, 기계 시각 시스템은 객체의 이미지 데이터(예컨대, 2D 데이터, 또는 3D 데이터, 이를테면, 포인트 클라우드, 조밀한 3D 이미지 등)를 수신한다. 이미지 데이터는, 그레디언트 정보, 벡터들 등을 포함할 수 있는 데이터 엔트리들의 세트를 포함한다. 단계(404)에서, 시스템은 이미지 데이터의 구역들의 세트를 결정한다. 각각의 구역은 이미지 데이터로부터의 이웃하는 데이터 엔트리들의 연관된 세트를 포함한다. 단계(406)에서, 시스템은, 구역들의 세트를 사용하여, 처리된 이미지 데이터를 생성한다. 본원에서 추가로 논의되는 바와 같이, 처리된 이미지 데이터는, 각각이 연관된 값을 갖는 셀들의 세트를 포함한다. 시스템은, 각각의 구역에 대해, 이미지 데이터로부터의 이웃하는 데이터 엔트리들의 연관된 세트에서의 각각의 데이터 엔트리의 가능한 최대 점수를 결정함으로써, 처리된 이미지 데이터를 생성할 수 있다. 시스템은, 결정된 가능한 최대 점수에 기반하여, 처리된 이미지 데이터 값들 중 하나 이상을 설정할 수 있다. 단계(408)에서, 시스템은, 포즈에 대한 점수를 계산하기 위해, 처리된 이미지 데이터를 사용하여 모델의 포즈를 테스팅한다. 단계(410)에서, 시스템은, 점수가 미리 결정된 임계치를 충족하는지 여부를 결정한다. 점수가 임계치를 충족하지 않는 경우, 방법은 단계(412)로 진행하고, 후속 포즈들에 대한 테스팅에서 하나 이상의 구역을 제거한다. 점수가 임계치를 충족하는 경우, 방법은 단계(414)로 진행하고, (예컨대, 후속 정밀화를 위해) 포즈를 저장한다. 단계(416)에서, 시스템은 테스팅할 추가적인 포즈들이 존재하는지 여부를 결정하고, 존재하는 경우, 방법은 다시 단계(408)로 진행하고, 존재하지 않는 경우, 방법은 단계(418)에서 종료된다.
단계(402)를 참조하면, 이미지 데이터는 임의의 유형의 데이터를 표현하는 벡터 필드일 수 있다. 예컨대, 벡터 필드는, (a) 표면 법선 벡터들, (b) 주름 가장자리 벡터들(예컨대, 책의 측면들과 같은 객체의 실제 가장자리, 및/또는 머그잔(mug)의 가장자리와 같은 실루엣 또는 폐색 가장자리드들에 대한 것이며, 머그잔의 가장자리는 머그잔이 원통형이므로 머그잔의 실제 가장자리가 아님), 및/또는 (c) 색상 가장자리 벡터들, 이를테면, 객체의 색상들에 기반한 가장자리들(예컨대, 이를테면 줄무늬가 있는 객체의 경우, 하나의 색상이 중단되고 다른 색상이 시작되는 곳) 중 하나 이상을 표현할 수 있다. 일부 실시예들에서, 기법들은, 본원에서 추가로 논의되는 바와 같이, 다수의 필드들을 사용하여 수행될 수 있다. 일부 실시예들에서, 기계 시각 시스템은 수신된 이미지 데이터(예컨대, 2D 및/또는 3D 이미지 데이터)에 기반하여 벡터 필드를 결정할 수 있다.
단계(404)를 참조하면, 기계 시각 시스템은 이미지 데이터의 구역들의 세트를 결정할 수 있다. 예컨대, 구역들은 각각, 도 5 내지 도 8과 함께 아래에 추가로 논의되는 바와 같이, 이미지 데이터로부터의 동일한 수의 데이터 엔트리들을 포함할 수 있다. 예컨대, 2D 데이터의 경우, 각각의 구역은 16 x 16 데이터 엔트리들, 16 x 8 데이터 엔트리들, 8 x 8 데이터 엔트리들, 4 x 4 데이터 엔트리들, 4 x 3 데이터 엔트리들 등을 포함할 수 있다. 다른 예로서, 3D 데이터의 경우, 각각의 구역은 16 x 16 x 16 데이터 엔트리들, 8 x 8 x 8 데이터 엔트리들, 16 x 8 x 8 데이터 엔트리들, 5 x 5 x 5 데이터 엔트리들 등을 포함할 수 있다.
일부 실시예들에서, 구역들은 다른 인근 구역들과 중첩된다. 예컨대, 도 5 내지 도 8에서 아래에 추가로 논의되는 바와 같이, 기계 시각 시스템은, 데이터 엔트리로부터 데이터 엔트리로 반복적으로 이동하고 이웃하는 데이터 엔트리들(예컨대, 이웃하는 위치들에서의 미리 결정된 수의 데이터 엔트리들)에 기반하여 구역을 결정할 수 있어서, 인근 구역들에 대한 데이터 엔트리들 사이에 약간의 중첩이 존재한다. 예컨대, 도 7 내지 도 8과 함께 추가로 논의되는 바와 같이, 구역이 3D 데이터의 데이터 엔트리들의 2 x 2 x 2 구역인 경우, 제1 구역은 4개의 데이터 유닛들에 의해 자신의 이웃하는 구역과 중첩될 수 있다.
일부 실시예들에서, 이웃하는 구역들 사이에 약간의 중첩을 갖는 구역들을 결정하도록 기계 시각 시스템을 구성하는 것은 더 양호한 포즈 테스팅을 제공할 수 있다. 예컨대, 약간의 중첩을 갖는 것은, 비-중첩 구역들을 사용하는 것과 비교하여 더 양호한 포즈 테스팅을 제공할 수 있다. 예시적인 예로서, 기계 시각 시스템이 복수의 프로브들을 갖는 모델을 사용하고, 프로브들은 서로에 대해 상이한 위상들을 가질 수 있다고 가정한다. 또한, 이러한 예에 대해, 프로브들이 데이터 유닛들 및/또는 구역들의 관점에서 정수 간격을 가져서, 예컨대, 프로브가 복수의 데이터 유닛들에 의해 공유되는 위치에 잠재적으로 놓이는 대신 특정 데이터 유닛 내에 놓일 것이라고 가정한다. 그러한 예에서, 기계 시각 시스템이 비-중첩 방식으로 (예컨대, 구역들이 이웃하는 구역들과 데이터 엔트리들을 공유하지 않도록) 구역들을 결정한 경우, 처리된 이미지 데이터는 원래의 이미지 데이터의 해상도를 감소시킬 것이고, 따라서, 원래의 이미지 데이터에서의 프로브의 위치는 처리된 이미지 데이터에서 테스팅되지 못할 수 있다. 간단한 예시적인 예를 위해, 모델의 2개의 이웃하는 프로브가 원래의 이미지 데이터의 나란히 있는 데이터 엔트리들에 속하고, 기계 시각 시스템은, 2 x 2 데이터 엔트리 구역들을 사용하여, 처리된 이미지 데이터를 결정한다고 가정한다. 이러한 예에서, 2개의 프로브 중 하나는 (예컨대, 처리된 이미지 데이터를 컴퓨팅할 때 이미지 데이터의 해상도가 감소되므로) 각각의 테스팅된 포즈에서 처리된 이미지 데이터의 2개의 구역 사이의 바로 선 상에 속할 것이다. 따라서, 이러한 예에서, 기계 시각 시스템은, 프로브를, 처리된 이미지 데이터의 그의 2 x 2 이웃 내에서 가능한 최대 점수에 대해 테스팅하지 못할 것이다. 기계 시각 시스템이 처리된 이미지 데이터에서 그 프로브를 테스팅할 수 없으므로, 기계 시각 시스템은, 본원에서 논의되는 바와 같이, 예컨대 가능한 최대 점수를 사용하여 결정된, 모델에 대한 점수를 적절히 추정할 수 없다. 따라서, 이는, 기계 시각 시스템이 추가적인 테스팅을 위한 포즈들을 잘못 무시하게 하고/거나 포즈의 잠재적 위치들을 포함하지 않을 수 있는 포즈들을 추가적인 테스팅을 위함 포함시키게 할 수 있다.
약간의 중첩을 갖도록 구역들을 컴퓨팅하는 것은, 기계 시각 시스템이 각각의 포즈를 테스팅할 수 있게 할 수 있다. 예컨대, 해상도를 감소시키지 않는 (예컨대, 도 5 내지 도 8과 함께 설명된 바와 같은) 각각의 데이터 엔트리에서의 최대 연산을 컴퓨팅함으로써, 기계 시각 시스템의 각각의 가능한 프로브가 처리된 이미지 데이터의 컴퓨팅된 값에 대한 직접 히트(direct hit)를 가질 수 있다(예컨대, 그에 따라, 기계 시각 시스템은 원래의 이미지 데이터의 정확한 2 x 2 구역에 대해 테스팅할 수 있음). 이어서, 기계 시각 시스템은 유리하게, 다음 테스트를 위해 하나 초과의 셀만큼(예컨대, 2개 셀 만큼) 모델을 편이시킬 수 있다. 본원에서 논의되는 바와 같은 구역들의 구성 및 최대 점수 기법들로 인해, 하나의 테스트에 대해 기계 시각 시스템이 이미지 데이터의 상위 계층에서의 전체 2 x 2 구역을 간접적으로 평가하기 때문에, 모델은 이러한 방식으로 편이될 수 있고, 따라서, 기계 시각 시스템이 테스팅할 필요가 있는 다음 위치는 이미지 데이터의 다음 인접한 (비-중첩) 2 x 2 구역들이다. 따라서, 기법들은, 개별 프로브가 이전 테스트에서 방금 (암시적으로) 평가한 셀들 중 일부를 재평가하는 것을 건너뛸 수 있게 하며, 이는, 시스템이 하나 초과의 셀만큼 모델을 유리하게 편이시킬 수 있게 한다.
단계(406)를 참조하면, 기법들은, 동일하거나 유사한 해상도의 처리된 이미지 데이터(예컨대, 새로운 필드)를 생성하기 위해 이미지 데이터(예컨대, 위에 논의된 바와 같이, 벡터들의 필드)를 사용하도록 구성될 수 있지만, 처리된 이미지 데이터의 각각의 값은, 특정 데이터 엔트리를 포함하는 이미지 데이터 엔트리들의 그룹 내에 놓이는 모델 프로브의 가능한 최대 점수를 표현한다. 예컨대, 점수책정 척도는, 이미지 데이터의 특정 프로브 및 데이터 엔트리에 대해 달성가능한 가능한 최대 점수(예컨대, 프로브의 실제 데이터에 따라 잠재적으로 더 낮을 수 있음)를 가질 수 있다. 시스템이 처리된 이미지 데이터에서 모델 포즈들의 보존적 검색을 수행할 수 있게 하기 위해, 기법들은, 데이터 엔트리들 각각에 대한 프로브의 완벽한 매치를 가정하여 이미지 데이터 엔트리들의 그룹에 대한 가능한 최대 점수를 결정하고, 처리된 이미지 데이터에 대한 결과적인 값으로서 그 최대 점수들의 최대치를 취할 수 있다. 이는, 예컨대, 프로브를 결과적인 값에 대해 테스팅될 수 있게 하여, 그 값들과 연관된 데이터 엔트리들이, 결과적인 값을 결정하는 데 사용되는 개별 데이터 엔트리들의 그룹을 개별적으로 테스팅할 가치가 있게 하는 충분한 점수를 잠재적으로 가질 수 있는지 여부를 결정한다.
일부 실시예들에서, 모델에서의 각각의 프로브는 단위 벡터일 수 있고, 모델의 특정 포즈는 점수책정 척도를 사용하여 점수가 책정될 수 있으며, 이는, 프로브들 및 대응하는 이미지 데이터의 제곱된 내적을 계산하는 것을 포함하며, 이는, 정렬될수록 점수가 높도록, 크기들의 내적의 제곱 및 그들 사이의 코사인을 컴퓨팅한다. 제곱된 내적을 사용할 때, 프로브가 정확히 매칭하는 경우, 점수는 그 데이터 엔트리(예컨대, 벡터)의 길이의 제곱일 것이다. 따라서, 데이터 엔트리별 기반으로, 최대 점수는 길이의 제곱을 반영하고, 이는, 임의의 단위 길이 프로브가 달성할 수 있는 가능한 최대 점수이다. 이어서, 그러한 예에서, 처리된 이미지 데이터의 각각의 값은, 입력 이미지 데이터에서의 데이터 엔트리들의 구역에서 발견되는 임의의 데이터 엔트리(예컨대, 벡터)의 제곱된 크기의 최대치로 채워진다. 따라서, 기법들은, 이미지 데이터에서의 개별 데이터 엔트리들(또는 더 작은 구역들)을 전체 구역에 대한 최대 점수로 요약할 수 있다.
단계(408)를 참조하면, 처리된 이미지 데이터는, 모델들을 테스팅하는 데 사용된 이미지 데이터의 유형(예컨대, 도출된 벡터 필드들, 이를테면, 2D 그레디언트 필드들 및/또는 위에 설명된 3D로의 법선, 가장자리, 및 색상 필드들)인 것처럼 테스팅될 수 있다. 예컨대, 처리된 이미지 데이터가 일단 결정되면, 모델은, 점수를 결정하기 위해 모델의 프로브들을 테스팅함(예컨대, 크기들을 합산함)으로써 특정 포즈에 대해 테스팅될 수 있다. 프로브가 특정 구역에 대해 테스팅될 때, 프로브가 구역 내의 어딘가에 놓이는 경우, 기법들은, 시스템이, 그 구역에서의 값보다 더 높은 점수가 모델에 책정되지 않을 것이라고 결정할 수 있게 하는데, 그 이유는, 위에 논의된 바와 같이, 그것이 전체 구역에서의 최대치이기 때문이다. 따라서, 구역과 연관된 각각의 데이터 엔트리에 대해 점수가 조금도 더 높을 수 없으므로, 구역의 연관된 값이 구역에서의 상한이다.
단계들(410-414)을 참조하면, 컴퓨팅된 점수가 테스팅된 포즈의 범위 내의 가장 양호한 포즈에 대한 실제 점수 미만일 수 없다는 보장을 제공하면서, 테스팅된 포즈들이 더 희소할 수 있다. 예컨대, 아래에 추가로 논의되는 바와 같이, 구역이 2D 이미지 데이터의 데이터 엔트리들의 8 x 8 세트이도록 구성되는 경우에, 모델의 포즈가 구역의 특정 값에 대한 임계치를 충족하지 않으면, 시스템은, 도 6과 함께 아래에 추가로 논의되는 바와 같이, 다음 레벨에서 그 구역의 나머지 값들 중 임의의 값을 테스팅하는 것을 건너뛸 수 있다. 따라서, 시스템이 모델에 대한 프로브들의 세트를 테스팅하고 임계치를 충족하지 않는 점수를 계산하는 경우, 시스템은, 추가적인 테스팅에서 테스팅된 구역들과 연관된 모든 값들을 제거할 수 있다. 포즈가 임계치를 초과하는 경우, 시스템은, 추가적인 정밀화를 위해 나중에 그 연관된 데이터 엔트리들을 검토하기 위해 주석을 달 수 있다. 추가적인 정밀화는, 예컨대, 본원에서 논의되는 바와 같이, 더 작은 구역 크기 및/또는 정밀화된 검색으로 방법(400)을 수행하는 것을 포함할 수 있다.
단계(418)를 참조하면, 방법(400)의 출력은, 주어진 임계치를 초과하여 점수가 책정될 수 있는 모델의 포즈들의 세트이다. 임계치를 초과하여 점수가 책정될 수 없는 포즈들의 범위는 다시 고려될 필요가 없다. 일부 실시예들에서, 위에 언급된 바와 같이, 방법(400)은 피라미드형 방식으로 적용될 수 있으며, 여기서, 각각의 스테이지의 출력이 다음의 더 높은 해상도의 단계에 대한 입력이다. 예컨대, 제1 단계는 특정 크기의 구역(예컨대, 16개의 데이터 엔트리, 8개의 데이터 엔트리 등)을 사용할 수 있고, 제2 단계는 더 작은 크기 구역(예컨대, 12개의 데이터 엔트리, 10개의 데이터 엔트리, 4개의 데이터 엔트리 등)을 사용할 수 있는 그러한 식이다. 방법(400)은 기계 시각 시스템이 처리된 이미지 데이터에서 상위 계층 검색을 수행할 수 있게 하며, 이는, 아래에 추가로 논의되는 바와 같이, 기계 시각 시스템이 포즈들을 테스팅할 때 더 크게 단계들을 취하고(예컨대, 하나 대신, 각각의 차원에서 다수의 사각형들을 이동시킴) 본질적으로 한 번에 복수의 포즈들을 테스팅할 수 있게 할 수 있다.
기계 시각 시스템은, 2D 및/또는 3D 데이터를 포함하는 다양한 유형들의 이미지 데이터를 처리하도록 방법(400)을 실행할 수 있다. 도 5 내지 도 6은 2D 이미지 데이터를 처리하는 예들을 제공하고, 도 7 내지 도 8은 3D 이미지 데이터를 처리하는 예들을 제공한다. 도 5를 참조하면, 도 5는 일부 실시예들에 따른, 2차원 이미지 데이터(500) 및 연관된 처리된 이미지 데이터(550)의 예시적인 부분들을 도시한다. 2차원 이미지 데이터(500)는, 이러한 예에서, 2D 데이터 엔트리들(502A 내지 502N)의 세트를 포함하며, 총칭하여 데이터 엔트리들(502)(예컨대, 격자의 셀들)로 지칭된다. 각각의 데이터 엔트리(502)는 v1, v2 등으로 도시된 연관된 2D 벡터를 갖는다(예컨대, 이러한 예에서, 데이터 엔트리(502A)는 벡터(v1)를 갖고, 데이터 엔트리(502N)는 벡터(v4)를 가짐). 도 5에 도시된 바와 같이, 시스템은, 2 x 2 구성으로 된 4개의 데이터 엔트리의 구역들을 사용하여 2D 이미지 데이터를 처리하도록 구성된다. 이러한 구역들 중 2개가 504A 및 504B로서 예시된다. 이러한 예시적인 구역들을 이용하여 도시된 바와 같이, 시스템은 구역들을 식별하기 위해 2D 이미지에 걸쳐 반복적으로 단계화처리(step)하도록 구성될 수 있다. 이러한 예에서, 시스템이 각각의 데이터 엔트리로부터 (예컨대, 좌에서 우로, 상단에서 하단으로의 방식으로 반복적으로) 이동함에 따라, 각각의 구역은 현재 데이터 엔트리뿐만 아니라 우측으로의 데이터 엔트리, 하단으로의 데이터 엔트리, 및 우측 데이터 엔트리와 하단 데이터 엔트리 사이의 데이터 엔트리를 포함한다.
도 5를 계속 참조하면, 처리된 이미지 데이터(550)는 총칭하여 값들(552)로 지칭되는 값들을 갖는 셀들(552A 내지 552N)을 포함한다. 기계 시각 시스템은, 처리된 이미지 데이터에서 연관된 셀에 대한 결과적인 값을 결정하기 위해, 각각의 구역 내의 데이터 엔트리들을 처리하는 함수를 실행하도록 구성된다. 본원에서 논의되는 바와 같이, 함수는, 구역 내의 연관된 데이터 엔트리들의 벡터들을 사용하는 최대 점수 함수일 수 있다. 예컨대, 시스템은, 시스템이 셀(552A)에 대한 값을 결정하는 데 사용하는 결과적인 값(f1)을 계산하기 위해 함수를 사용하여 구역(504A) 내의 연관된 데이터 엔트리들의 벡터들(v1, v2, v4, 및 v5)을 처리한다. 다른 예로서, 시스템은, 시스템이 셀(552B)에 대한 값을 결정하는 데 사용하는 결과적인 값(f7)을 계산하기 위해 함수를 사용하여 구역(504B) 내의 연관된 데이터 엔트리들의 벡터들(v4, v5, v7, 및 v8)을 처리한다.
도 6은 일부 실시예들에 따른, 개략적인 검색 동안의 2차원 이미지 데이터의 포즈들의 세트의 예시적인 제거를 도시한다. 도 6은, 도 5로부터의 예시적인 2차원 이미지 데이터(500) 및 연관된 처리된 이미지 데이터(550)를 도시한다. 본원에서 논의되는 바와 같이, 모델에 대한 점수는 복수의 모델 프로브들에 기반하여 컴퓨팅된다. 예시적인 목적들을 위해, 도 6은, 셀(552A) 상에 놓인 모델에 대한 프로브들 중 하나가 모델의 포즈를 테스팅할 때 불충분한 점수를 갖는 것으로 결정되는 것을 도시한다. 셀(552A)이 처리된 이미지 데이터(550)에 도시된 계층에서의 고려사항으로부터 제거되어, 하나의 계층을 2차원 이미지 데이터(500)까지 이동시키므로, 테스팅된 프로브의 포지션들에 대응하는 포즈들이 모두 (예컨대, 2차원 이미지 데이터(500)에서의 나머지 후보 위치들에 대해 동작하는 정밀화 검색을 위한) 추가적인 고려사항으로부터 제거된다.
따라서, 도 6에 도시된 바와 같이, 처리된 이미지 데이터(550)에 의해 표현되는 계층(예컨대, 다음 계층(500)에서의 각각의 값당 4개의 데이터 엔트리를 요약하는 계층)에서 테스팅할 때, 이미지 처리 시스템은 계층에 걸쳐 단계화처리할 수 있고, 본질적으로는, 계층(550)에서 하나의 포즈를 테스팅할 때만 다음 계층(500)에서 포즈들의 그룹을 테스팅한다. 도 5 내지 도 6의 예들에 도시된 바와 같이, 시스템이 (논의된 바와 같이, 셀(552A)에 놓이는 가능성 있는 많은 모델 프로브들 중 하나로) 모델을 테스팅하고, f1은 구역(504A) 내의 4개의 데이터 엔트리에 대한 최대치를 표현하므로(도시되진 않지만, 셀들에 대해여 테스팅된 다른 프로브들에 대해서도 마찬가지임), 시스템은, 포즈에 충분히 점수가 책정되지 않기 때문에, 2차원 데이터(500)에서 대응하는 포즈들 중 어떠한 포즈에도 충분히 높은 점수가 책정되지 않을 수 있다는 것을 결정할 수 있다. 따라서, 도시된 바와 같이, 처리된 이미지 데이터(550)에서의 상위 계층 검색들은 기계 시각 시스템이 포즈들을 테스팅할 때 더 크게 단계들을 취할 수 있게(예컨대, 도 5에 도시된 바와 같은 2 x 2 구역을 사용할 때, 하나 대신 각각의 차원에서 2개의 사각형을 이동시킬 수 있게) 할 수 있고, 본질적으로는, 한 번에 복수의 포즈들(예컨대, 2 x 2 구역을 사용할 때, 한 번에 4개의 포즈)을 테스팅할 수 있게 할 수 있다.
도 7은 일부 실시예들에 따른, 예시적인 3차원 이미지 데이터(700) 및 연관된 처리된 이미지 데이터(750)를 도시한다. 3D 이미지 데이터(700)는, 3D 데이터 엔트리들(702A 내지 702N)의 세트를 포함하며, 총칭하여 데이터 엔트리들(702)(예컨대, 3D 벡터 필드)로 지칭된다. 각각의 데이터 엔트리(702)는 v11, v12 등으로 도시된 연관된 3D 벡터를 갖는다. 이러한 예에서, 제1 계층에서의 각각의 벡터는 v1X로 표시되며, 여기서, X는 계층의 특정 데이터 엔트리를 표시한다(예컨대, 이러한 예에서, 데이터 엔트리(702A)는 벡터(v11)를 갖고, 데이터 엔트리(702N)는 벡터(v14)를 갖는데, 그 이유는 둘 모두가 제1 계층에 있기 때문임). 도 7에 도시된 바와 같이, 시스템은, 하나의 계층으로부터의 4개의 데이터 엔트리 및 다음 계층으로부터의 4개의 데이터 엔트리를 포함하는 8개의 데이터 엔트리의 구역들을 사용하여 3D 이미지 데이터를 처리하도록 구성된다. 이러한 구역들 중 2개가 704A 및 704B로 예시되며, 이들 각각은 제1 계층으로부터의 4개의 데이터 엔트리 및 제2 계층에서의 대응하는 4개의 데이터 엔트리를 포함한다. 본원에서 논의되는 바와 같이, 시스템은 구역들을 식별하기 위해 3D 이미지에 걸쳐 반복적으로 단계화처리하도록 구성될 수 있다. 이러한 예에서, 시스템이 3D 이미지 데이터(700) 내의 각각의 데이터 엔트리에 걸쳐 (예컨대, 행, 열, 및 심도 기준으로) 이동함에 따라, 시스템은, 현재 데이터 엔트리뿐만 아니라 우측으로의 데이터 엔트리, 하단으로의 데이터 엔트리, 우측 데이터 엔트리와 하단 데이터 엔트리 사이의 데이터 엔트리, 및 다음 계층의 동일한 위치에서의 대응하는 4개의 데이터 엔트리를 포함하는 새로운 구역을 결정한다.
도 7을 계속 참조하면, 처리된 이미지 데이터(750)는 총칭하여 셀들(752)로 지칭되는, 값들을 갖는 셀들(752A 내지 752N)을 포함한다. 기계 시각 시스템은, 처리된 이미지 데이터에서 연관된 값에 대한 결과적인 데이터를 결정하기 위해, 각각의 구역 내의 데이터 엔트리들을 처리하는 함수를 실행하도록 구성된다. 본원에서 논의되는 바와 같이, 함수는, 구역 내의 연관된 데이터 엔트리들의 벡터들을 사용하는 최대 점수 함수일 수 있다. 예컨대, 시스템은, 시스템이 셀(752A)에 대한 값을 결정하는 데 사용하는 결과적인 값(f11)을 계산하기 위해 함수를 사용하여 구역(704A) 내의 연관된 데이터 엔트리들의 벡터들(v11, v12, v14, v15, v21, v22, v24, 및 v25)을 처리한다. 다른 예로서, 시스템은, 시스템이 셀(552B)에 대한 값을 결정하는 데 사용하는 결과적인 값(f12)을 계산하기 위해 함수를 사용하여 구역(704B) 내의 연관된 데이터 엔트리들의 벡터들(v14, v15, v17, v18, v24, v25, v27, 및 v28)을 처리한다.
도 8은 일부 실시예들에 따른, 개략적인 검색 동안의 3차원 이미지 데이터의 포즈들의 세트의 예시적인 제거를 도시한다. 도 8은, 도 7로부터의 예시적인 3차원 이미지 데이터(700) 및 연관된 처리된 이미지 데이터(750)를 도시한다. 본원에서 논의되는 바와 같이, 모델에 대한 점수는 복수의 모델 프로브들에 기반하여 컴퓨팅된다. 예시적인 목적들을 위해, 도 8은, 셀(752A) 상에 놓인 모델에 대한 프로브들 중 하나만을 도시하지만, 본원에서 논의되는 바와 같이, 모델 프로브들 각각이 연관된 셀에 대하여 테스팅되어, 포즈가 불충분한 점수를 갖는다는 것을 결정한다. 셀(752A)이 처리된 이미지 데이터(750)에 도시된 계층에서의 고려사항으로부터 제거되어, 하나의 계층을 3차원 이미지 데이터(700)까지 이동시키므로, 구역(704A) 내의 대응하는 8개의 포즈가 모두 (예컨대, 3차원 이미지 데이터(700)에서의 나머지 후보 위치들에 대해 동작하는 정밀화 검색을 위한) 추가적인 고려사항으로부터 제거된다.
도 7 내지 도 8에 도시된 바와 같이, 3D 이미지 데이터에 기법들을 적용할 때, 포즈 공간은 차원들의 수로 인해 상당히 클 수 있다. 일부 3차원 이미지들 및/또는 3차원 응용들에서, (예컨대, 객체가 이미지의 작은 부분만을 점유할 것이므로) 잠재적 포즈들의 큰 공간 중 양호한 후보들을 포함할 수 있는 작은 백분율의 잠재적 포즈들의 공간만이 존재할 수 있다. 다른 예로서, 일부 3차원 이미지들 및/또는 3차원 응용들에서, 관련 구역으로부터 멀어지는 작은 회전들이 매우 낮은 점수들을 얻기 시작할 수 있다. 기법들은, 수용가능한 점수를 충족할 수 없는 포즈들의 큰 세트들을 신속하게 제거하기 위해 (예컨대, 도 7에 도시된 처리된 이미지 데이터(750)를 사용하여) 상위 계층 검색을 활용할 수 있다. 상위 계층 검색들은 기계 시각 시스템이 포즈들을 테스팅할 때 더 크게 단계들을 취할 수 있게(예컨대, 도 7에 도시된 바와 같은 2 x 2 x 2 구역을 사용할 때, 하나 대신 각각의 차원에서 2개의 사각형을 이동시킬 수 있게) 할 수 있고, 본질적으로는, 한 번에 복수의 포즈들(예컨대, 2 x 2 x 2 구역을 사용할 때, 한 번에 8개의 포즈)을 테스팅할 수 있게 할 수 있다.
본 발명자들은, 패턴 매칭을 수행하기 위해 단지 단일 필드를 사용하는 것은 충분한 정보를 제공하지 못할 수 있다고 결정하였다. 예컨대, 일부 기법들은, 표면 법선들의 단일 필드를 사용하여, 필드에 걸쳐 다양한 포즈 구성들을 시도하고 각각의 포즈에 점수를 책정함으로써, 객체의 표면 상에서 프로브들을 찾을 수 있다. 그러나, 단지 표면 법선 필드를 사용하는 것은, 예컨대, 훈련된 객체와 유사한 동일한 표면 법선을 갖는 하나 이상의 큰 영역을 장면이 가질 때 문제가 될 수 있다. 예컨대, 3D 모델이 책에 대해 훈련되고 장면이 책 대신 테이블을 포함하는 경우, 단지 표면 법선 벡터들을 사용할 때, 책은 테이블에 걸쳐 많은 매치들을 가질 것이다. 따라서, 모델의 대략적인 위치들에 대한 초기의 개략적인 검색을 수행하기 위해 법선 필드가 사용되는 경우, 추가적인 정밀화를 고려사항으로부터 초기 포즈들을 제거하기에는 필드에서의 정보가 불충분할 수 있다. 본 발명자들은, 단지 단일 필드를 넘어서 부가적인 정보를 사용하는 기계 시각 검색 기법들에 대한 기술적 개선들을 개발하였다. 본원에서 추가로 논의되는 바와 같이, 기법들은 부가적인 정보, 이를테면, 주름 가장자리들, 폐색 경계들, 색상, 강도 등에 관한 정보를 포함할 수 있다. 부가적인 정보는 검색 프로세스를 위한 하나 이상의 별개의 필드에 저장될 수 있다(따라서, 예컨대, 프로브의 법선 데이터는 법선 필드에 매칭될 수 있고, 프로브의 가장자리 데이터는 가장자리 필드에 매칭될 수 있음). 기계 시각 시스템은 각각의 유형의 데이터를 테스팅할 수 있고, 복수의 테스트들을 사용하여 (예컨대, 개별 점수들을 합산하는 등등의 방식으로) 특정 포즈에 대한 최종 점수를 결정할 수 있다. 복수의 필드들을 사용함으로써, 객체에 대한 부가적인 정보가 사용되어 검색 프로세스의 효과를 증가시킬 수 있다. 예컨대, 법선 및 가장자리 정보 둘 모두를 검색함으로써, 기법들은, 법선 필드에 대해 강한 점수를 갖지만 가장자리 필드에 대해 약한 점수를 갖는 포즈들을 제거할 수 있다. 다른 예로서, 기법들은, 균일한 객체들과 같은 특정 유형들의 객체들을 검색하는 시스템의 능력을 증가시킬 수 있다. 예컨대, 캔의 특정 포즈를 검색하는 것이 어려울 수 있지만, 기법들은 검색을 개선하기 위해 (예컨대, 캔의 형상 단독으로는 충분하지 않을 수 있으므로) 캔의 추가적인 정보, 이를테면 색상 및/또는 반사율을 포함할 수 있다.
도 9는 일부 실시예들에 따른, 3차원 모델의 포즈에 대한 초기 검색을 수행하기 위한 예시적인 방법(900)을 도시한다. 단계(902)에서, 기계 시각 시스템은, 프로브들의 세트를 포함하는 3차원 모델을 저장한다. 단계(904)에서, 시스템은, 3D 데이터 엔트리들의 세트를 포함하는, 객체의 3D 데이터(예컨대, 포인트 클라우드, 심도 이미지 등)를 수신한다. 단계(906)에서, 시스템은, 3차원 데이터를 2개 이상의 필드의 세트로 변환한다. 제1 필드는, 3D 데이터 엔트리로부터의 연관된 데이터 엔트리 또는 복수의 데이터 엔트리들의 제1 특성을 각각이 표시하는 제1 세트의 값들을 포함한다. 제2 필드는, 3D 데이터 엔트리로부터의 연관된 데이터 엔트리 또는 복수의 데이터 엔트리들의 제2 특성을 각각이 표시하는 제2 세트의 값들을 포함한다. 단계(908)에서, 시스템은, 포즈에 대한 점수를 결정하기 위해, 필드들의 세트에 대해 프로브들의 세트를 테스팅하는 것을 포함하여, 필드들의 세트로 3D 모델의 포즈를 테스팅한다. 단계(910)에서, 시스템은, 점수가 미리 결정된 임계치를 충족하는지 여부를 결정한다. 점수가 임계치를 충족하는 경우, 방법은 단계(912)로 진행하고, (예컨대, 후속 정밀화를 위해) 포즈를 저장한다. 점수가 임계치를 충족하지 않는 경우, 방법은 (914)로 진행하여 테스팅할 추가적인 포즈들이 존재하는지 여부를 결정하며, 존재하는 경우, 방법은 다시 단계(908)로 진행하고, 존재하지 않는 경우, 방법은 단계(916)에서 종료된다.
단계(902)를 참조하면, 모델은, 본원에서 논의되는 바와 같이, 훈련된 모델일 수 있다. 프로브들 각각은 하나 이상의 벡터들을 포함할 수 있다. 예컨대, 프로브는 위치 벡터(예컨대, (x, y, z) 위치 및 (x, y, z) 방향)를 표현할 수 있다. 프로브들은, 예컨대, 법선 데이터, 가장자리 데이터, 강도 데이터, 강도 그레디언트 데이터, 및/또는 다른 정보를 표현할 수 있다. 법선 데이터는, 예컨대, 표면 상의 포인트 및 그의 법선 방향(예컨대, 법선 프로브들)을 포함할 수 있다. 가장자리 데이터는, 예컨대, 객체의 접힌 부분 상의 또는 객체의 주름 가장자리 상의 포인트 및 접힌 부분 또는 주름을 따른 방향에 대한 데이터(예컨대, 가장자리 프로브)를 포함할 수 있다. 강도 데이터는, 예컨대, 강도, 표면 반사율, 색상, 알베도 등과 연관된 정보를 포함할 수 있다. 예컨대, 강도 데이터는 그레이 스케일 이미지들 및/또는 색채 이미지들(예컨대, 객체, 라벨들 등에 대한 채색)과 연관된 정보를 반영할 수 있다.
단계(906)를 참조하면, 제1 특성은 제2 특성과 상이하다. 따라서, 단계(906)는 3D 데이터에 대해 적어도 2개의 상이한 필드를 생성한다. 모델 프로브들과 유사하게, 필드들 내의 값들은 다양한 유형들의 데이터, 이를테면, 표면 법선 데이터(예컨대, 객체의 표면과 직교하는 법선 벡터들), 가장자리 경계 데이터(예컨대, 이미지 내의 가장자리, 주름, 및/또는 다른 특징부를 가리키는 가장자리 벡터들), 강도 데이터, 강도 그레디언트 데이터 등을 포함할 수 있다.
일부 실시예들에서, 기법들은 런타임 3D 데이터를 필드들로 지칭되는 하나 이상의 조밀한 3D 어레이로 변환하는 것을 포함한다. 일부 실시예들에서, 시스템은 각각의 필드에 대한 3D 어레이를 생성한다. 3D 어레이는, 각각의 차원당 하나씩의 색인으로 3개의 색인들을 사용하여 색인된다. 시스템은, 3D 어레이의 색인들을 사용하여, 어레이 내의 각각의 값의 x, y, 및 z 위치를 암시하도록 구성될 수 있다. 예컨대, 어레이로의 x, y, 및 z 색인은 x, y, z 위치일 수 있고/거나 변환을 사용하여 x, y, z 위치로 변환될 수 있다. 각각의 값은, 예컨대, 동일한 차원(예컨대, 1 이상일 수 있음)의 벡터를 포함할 수 있다. 각각의 그러한 벡터는 연관된 3D 데이터 엔트리 또는 엔트리들 내의 또는 그 근처의 포인트들을 대표할 수 있다. 벡터는, 이를테면, 연관된 3D 데이터 엔트리 내에서 또는 그 근처에서 어떠한 포인트들도 발견되지 않을 때(예컨대, 데이터 엔트리가 3D 포인트 클라우드에서 객체의 내부 내에 있을 때) 영(0) 길이를 가질 수 있다.
단계(908)를 참조하면, 본원에서 논의되는 바와 같이, 포즈를 테스팅하는 것은, 각각의 가정된 포즈에 따라, 훈련된 프로브들을 변환하는 것을 포함할 수 있다. 일부 실시예들에서, 포즈에 대한 점수를 결정하기 위해, 시스템은, 각각의 프로브 및 필드 내의 연관된 값(들)의 내적의 합산을 컴퓨팅할 수 있다. 프로브들은 시스템에 의해 생성된 필드들의 세트에 대하여 테스팅된다. 시스템은 개별 필드들에 대한 프로브들의 점수들에 기반하여 유사성 척도를 컴퓨팅하도록 구성될 수 있다. 예컨대, 시스템은, 포즈에 대한 전체 점수를 결정하기 위해 각각의 필드에 대한 개별 점수를 평균하도록 구성될 수 있다. 다른 예로서, 시스템은, 각각의 필드에 대한 별개의 점수들을 결합하기 위해 더 복잡한 연산, 이를테면 선형 가중(예컨대, a * 점수 1 + b * 점수 2 등), 비-선형 가중(예컨대, 최소치(점수 1, 점수 2)) 등을 수행하도록 구성될 수 있다.
기법들은 후속 정밀화를 위해 임계치를 초과하는 포즈들을 저장할 수 있다. 일부 실시예들에서, 임계치는, 임계치를 초과하는 점수가 점수 공간 내의(예컨대, 포즈 공간 내의) 연관된 점수들의 국부적 피크를 나타내도록 구성된다. 예컨대, 일부 실시예들에서, 특정 포즈가 임계치를 충족하는지 여부를 확인하는 것에 부가하여, 시스템은, 이웃하는 포즈들의 점수들과 관련하여 특정 포즈의 점수를 분석할 수 있다. 시스템은 포즈들의 서브세트를 저장하도록 구성될 수 있으며, 여기서, 서브세트 점수는 포즈 공간에서 그들의 이웃들보다 더 높다.
본원에서 설명된 원리들에 따라 동작하는 기법들은 임의의 적합한 방식으로 구현될 수 있다. 위의 흐름도들의 처리 및 결정 블록들은 이러한 다양한 프로세스들을 수행하는 알고리즘들에 포함될 수 있는 단계들 및 동작들을 표현한다. 이러한 프로세스들로부터 도출된 알고리즘들은 하나 이상의 단일 또는 다중 목적 프로세서의 동작과 통합되고 그 동작을 지시하는 소프트웨어로서 구현될 수 있거나, 디지털 신호 처리(DSP) 회로 또는 주문형 집적 회로(ASIC)와 같은 기능적으로 등가인 회로들로서 구현될 수 있거나, 임의의 다른 적합한 방식으로 구현될 수 있다. 본원에 포함된 흐름도들은 임의의 특정 회로 또는 임의의 특정 프로그래밍 언어의 구문 또는 동작이나 프로그래밍 언어의 유형을 나타내지 않는다는 것이 인식되어야 한다. 오히려, 흐름도들은 본원에서 설명된 기법들의 유형들을 수행하는 특정 장치의 처리를 수행하기 위해 회로들을 제조하거나 컴퓨터 소프트웨어 알고리즘들을 구현하기 위해 관련 기술분야의 통상의 기술자가 사용할 수 있는 기능적 정보를 예시한다. 본원에서 달리 표시되지 않는 한, 각각의 흐름도에서 설명된 단계들 및/또는 동작들의 특정 시퀀스는 단지 본원에서 설명된 원리들의 구현들 및 실시예들에서 구현될 수 있고 변경될 수 있는 알고리즘들의 예시에 지나지 않음이 인식되어야 한다.
따라서, 일부 실시예들에서, 본원에서 설명된 기법들은 응용 소프트웨어, 시스템 소프트웨어를 포함하는 소프트웨어, 펌웨어, 미들웨어, 내장된 코드, 또는 임의의 다른 적합한 유형의 컴퓨터 코드로서 구현된 컴퓨터 실행가능 명령어들로 구현될 수 있다. 그러한 컴퓨터 실행가능 명령어들은 다수의 적합한 프로그래밍 언어들 및/또는 프로그래밍 또는 스크립팅 도구들 중 임의의 것을 사용하여 작성될 수 있으며, 또한, 프레임워크 또는 가상 기계 상에서 실행되는 실행 가능 기계 언어 코드 또는 중간 코드로서 컴파일될 수 있다.
본원에서 설명된 기법들이 컴퓨터 실행가능 명령어들로서 구현될 때, 이러한 컴퓨터 실행가능 명령어들은 다수의 기능적 설비들로서, 이러한 기법들에 따라 동작하는 알고리즘의 실행을 완료하기 위한 하나 이상의 동작을 각각이 제공하는 것을 포함하는 임의의 적합한 방식으로 구현될 수 있다. 그러나, 예시하자면, "기능적 설비"는 하나 이상의 컴퓨터에 통합되어 그에 의해 실행될 때 하나 이상의 컴퓨터로 하여금 특정 동작 역할을 수행하게 하는 컴퓨터 시스템의 구조적 구성요소이다. 기능적 설비는 전체 소프트웨어 요소 또는 그의 일부분일 수 있다. 예컨대, 기능적 설비는 프로세스의 함수로서 또는 이산 프로세스로서 또는 임의의 다른 적합한 처리 유닛으로서 구현될 수 있다. 본원에서 설명된 기법들이 다수의 기능적 설비들로서 구현되는 경우, 각각의 기능적 설비는 자신 고유의 방식으로 구현될 수 있고, 전부가 동일한 방식으로 구현될 필요는 없다. 부가적으로, 이러한 기능적 설비들은 적절한 경우 병렬 및/또는 직렬로 실행될 수 있으며, 이들이 실행중인 컴퓨터(들) 상의 공유 메모리를 사용하여, 메시지 전달 프로토콜을 사용하여, 또는 임의의 다른 적합한 방식으로 서로 간에 정보를 전달할 수 있다.
일반적으로, 기능적 설비들은 특정 작업들을 수행하거나 특정 추상적 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 구성요소들, 데이터 구조들 등을 포함한다. 전형적으로, 기능적 설비들의 기능성은 이들이 동작하는 시스템들에서 요구되는 바에 따라 결합되거나 분산될 수 있다. 일부 구현들에서, 본원에서의 기법들을 수행하는 하나 이상의 기능적 설비들이 함께 완전한 소프트웨어 패키지를 형성할 수 있다. 이러한 기능적 설비들은, 대안적인 실시예들에서, 소프트웨어 프로그램 애플리케이션을 구현하기 위해, 다른 관련되지 않은 기능적 설비들 및/또는 프로세스들과 상호작용하도록 적응될 수 있다.
하나 이상의 작업들을 수행하기 위한 일부 예시적인 기능적 설비들이 본원에서 설명되었다. 그러나, 설명된 기능적 설비들 및 작업들의 분할은 단지 본원에서 설명된 예시적인 기법들을 구현할 수 있는 기능적 설비들의 유형의 예시에 지나지 않으며, 실시예들은 임의의 특정 개수, 분할 또는 유형의 기능적 설비들로 구현되는 것으로 제한되지 않는다는 것이 인식되어야 한다. 일부 구현들에서, 모든 기능성이 단일 기능적 설비로 구현될 수 있다. 또한, 일부 구현들에서, 본원에서 설명된 기능적 설비들 중 일부는 다른 것들과 함께 또는 별개로(즉, 단일 유닛 또는 별개의 유닛들로서) 구현될 수 있거나 또는 이러한 기능적 설비들 중 일부가 구현되지 않을 수 있다는 것이 인식되어야 한다.
(하나 이상의 기능적 설비로서 또는 임의의 다른 방식으로 구현될 때) 본원에서 설명된 기법들을 구현하는 컴퓨터 실행가능 명령어들은, 일부 실시예들에서, 하나 이상의 컴퓨터 판독가능 매체 상에 인코딩되어 기능성을 매체에 제공할 수 있다. 컴퓨터 판독가능 매체는 하드 디스크 드라이브와 같은 자기 매체, 콤팩트 디스크(CD) 또는 디지털 다기능 디스크(DVD)와 같은 광학 매체, 영구적 또는 비-영구적 솔리드 스테이트 메모리(예컨대, 플래시 메모리, 자기 RAM 등), 또는 임의의 다른 적합한 저장 매체를 포함한다. 그러한 컴퓨터 판독가능 매체는 임의의 적합한 방식으로 구현될 수 있다. 본원에서 사용되는 바와 같이, "컴퓨터 판독가능 매체"(또한, "컴퓨터 판독가능 저장 매체"로 지칭됨)는 유형의 저장 매체를 지칭한다. 유형의 저장 매체는 비-일시적이고 적어도 하나의 물리적인 구조적 구성요소를 갖는다. 본원에서 사용되는 바와 같은 "컴퓨터 판독가능 매체"에서, 적어도 하나의 물리적인 구조적 구성요소는 내장된 정보를 갖는 매체를 생성하는 프로세스, 그 매체 상에 정보를 기록하는 프로세스, 또는 정보로 매체를 인코딩하는 임의의 다른 프로세스 동안 어떤 방식으로든 변경될 수 있는 적어도 하나의 물리적 특성을 갖는다. 예컨대, 컴퓨터 판독가능 매체의 물리적인 구조의 일부분의 자화 상태가 기록 프로세스 동안 변경될 수 있다.
추가로, 위에 설명된 일부 기법들은, 이러한 기법들에 의한 사용을 위해 특정 방식들로 정보(예컨대, 데이터 및/또는 명령어들)를 저장하는 동작들을 포함한다. 이러한 기법들의 일부 구현들, 이를테면, 기법들이 컴퓨터 실행가능 명령어들로서 구현되는 구현들에서, 정보는 컴퓨터 판독가능 저장 매체 상에 인코딩될 수 있다. 이러한 정보를 저장하기 위한 유리한 형식들로서 특정 구조들이 본원에서 설명되는 경우, 이러한 구조들은 저장 매체 상에 인코딩될 때 정보의 물리적 구성을 부여하는 데 사용될 수 있다. 이어서, 이러한 유리한 구조들은, 정보와 상호작용하는 하나 이상의 프로세서의 동작들에 영향을 미침으로써, 예컨대, 프로세서(들)에 의해 수행되는 컴퓨터 동작들의 효율을 증가시킴으로써, 저장 매체에 기능성을 제공할 수 있다.
기법들이 컴퓨터 실행가능 명령어들로서 구현될 수 있는 전부가 아닌 일부 구현들에서, 이러한 명령어들은 임의의 적합한 컴퓨터 시스템에서 동작하는 하나 이상의 적합한 컴퓨팅 디바이스(들) 상에서 실행될 수 있거나, 하나 이상의 컴퓨팅 디바이스(또는 하나 이상의 컴퓨팅 디바이스의 하나 이상의 프로세서)가 컴퓨터 실행가능 명령어들을 실행하도록 프로그래밍될 수 있다. 컴퓨팅 디바이스 또는 프로세서는, 명령어들이 컴퓨팅 디바이스 또는 프로세서가 접근가능한 방식으로, 이를테면 데이터 저장소(예컨대, 온-칩 캐시 또는 명령어 레지스터, 버스를 통해 액세스가능한 컴퓨터 판독가능 저장 매체, 하나 이상의 네트워크를 통해 액세스가능하고 디바이스/프로세서에 의해 액세스가능한 컴퓨터 판독가능 저장 매체 등)에 저장될 때, 명령어들을 실행하도록 프로그래밍될 수 있다. 이러한 컴퓨터 실행가능 명령어들을 포함하는 기능적 설비들은, 단일 다목적 프로그래밍가능 디지털 컴퓨팅 디바이스, 처리 능력을 공유하고 본원에서 설명된 기법들을 공동 수행하는 2개 이상의 다목적 컴퓨팅 디바이스의 조정된 시스템, 본원에서 설명된 기법들을 실행하도록 전용된 단일 컴퓨팅 디바이스 또는 (함께 위치되거나 지리적으로 분산된) 컴퓨팅 디바이스의 조정된 시스템, 본원에서 설명된 기법들을 수행하기 위한 하나 이상의 필드 프로그래밍가능 게이트 어레이(FPGA), 또는 임의의 다른 적합한 시스템과 통합되고 그 동작을 지시할 수 있다.
컴퓨팅 디바이스는, 적어도 하나의 프로세서, 네트워크 어댑터, 및 컴퓨터 판독가능 저장 매체를 포함할 수 있다. 컴퓨팅 디바이스는, 예컨대, 데스크톱 또는 랩톱 개인용 컴퓨터, 개인 휴대 정보 단말기(PDA), 스마트 모바일 폰, 서버, 또는 임의의 다른 적합한 컴퓨팅 디바이스일 수 있다. 네트워크 어댑터는 컴퓨팅 디바이스가 임의의 적합한 컴퓨팅 네트워크를 통해 임의의 다른 적합한 컴퓨팅 디바이스와 유선 및/또는 무선으로 통신할 수 있게 하는 임의의 적합한 하드웨어 및/또는 소프트웨어일 수 있다. 컴퓨팅 네트워크는 무선 액세스 포인트들, 스위치들, 라우터들, 게이트웨이들 및/또는 다른 네트워킹 장비뿐만 아니라, 인터넷을 포함하는, 2개 이상의 컴퓨터 사이에서 데이터를 교환하기 위한 임의의 적합한 유선 및/또는 무선 통신 매체 또는 매체들을 포함할 수 있다. 컴퓨터 판독가능 매체는 프로세서에 의해 처리될 데이터 및/또는 실행될 명령어를 저장하도록 적응될 수 있다. 프로세서는 데이터의 처리 및 명령어들의 실행을 가능하게 한다. 데이터 및 명령어들은 컴퓨터 판독가능 저장 매체 상에 저장될 수 있다.
컴퓨팅 디바이스는 부가적으로 하나 이상의 구성요소 및 주변기기를 가질 수 있으며, 이는 입력 및 출력 디바이스들을 포함한다. 이러한 디바이스들은, 다른 것들 중에서도, 사용자 인터페이스를 제시하는 데 사용될 수 있다. 사용자 인터페이스를 제공하는 데 사용될 수 있는 출력 디바이스들의 예들은, 출력의 시각적 제시를 위한 프린터들 또는 디스플레이 스크린들 및 출력의 청각적 제시를 위한 스피커들 또는 다른 사운드 생성 디바이스들을 포함한다. 사용자 인터페이스에 대해 사용될 수 있는 입력 디바이스들의 예들은, 키보드들, 및 마우스들, 터치 패드들 및 디지타이징 태블릿들과 같은 포인팅 디바이스들을 포함한다. 다른 예로서, 컴퓨팅 디바이스는 음성 인식을 통해 또는 다른 청각적 형식으로 입력 정보를 수신할 수 있다.
기법들이 회로 및/또는 컴퓨터 실행가능 명령어들로 구현되는 실시예들이 설명되었다. 일부 실시예들은 적어도 하나의 예가 제공되는 방법의 형태일 수 있다는 것이 인식되어야 한다. 방법의 일부로서 수행되는 동작들은 임의의 적합한 방식으로 순서화될 수 있다. 따라서, 동작들이 예시된 것과 상이한 순서로 수행되는 실시예들이 구성될 수 있으며, 이는 예시적인 실시예들에서 순차적인 동작들로서 도시된다 하더라도 일부 동작들을 동시에 수행하는 것을 포함할 수 있다.
위에 설명된 실시예들의 다양한 양상들은 단독으로, 조합하여, 또는 전술한 것에서 설명된 실시예들에서 구체적으로 논의되지 않은 다양한 배열들로 사용될 수 있으며, 따라서, 이들의 응용은 전술한 설명에 기재되거나 도면에 예시된 구성요소들의 세부사항들 및 배열로 제한되지 않는다. 예컨대, 일 실시예에서 설명된 양상들은 다른 실시예들에서 설명된 양상들과 임의의 방식으로 조합될 수 있다.
청구항 요소를 수정하기 위해 청구항들에서 "제1", "제2", "제3" 등과 같은 서수 용어들을 사용하는 것은 그 자체로서 방법의 동작들이 수행되는 시간적 순서, 또는 하나의 청구항 요소의 다른 청구항 요소에 대한 우선순위, 선행, 또는 순서를 함축하는 것이 아니라, 단지, 청구항 요소들을 구별하기 위해, 특정 명칭을 갖는 하나의 청구항 요소를 동일한 명칭을 갖는(그러나 서수 용어를 사용하는) 다른 요소와 구별하기 위한 라벨들로서 사용된다.
또한, 본원에서 사용되는 어법 및 용어법은 설명의 목적을 위한 것이고, 제한적인 것으로 여겨지지 않아야 한다. 본원에서 "구비", "포함, "가짐", "갖는", "함유", "수반" 및 이들의 변형들의 사용은, 이후 열거되는 항목들 및 그들의 등가물들뿐만 아니라 부가적인 항목들을 포괄하는 것을 의미한다.
"예시적인"이라는 단어는, 예, 예증 또는 예시로서 기능하는 것을 의미하도록 본원에서 사용된다. 따라서, 예시적인 것으로 본원에서 설명된 임의의 실시예, 구현, 프로세스, 특징 등은 예시적인 예인 것으로 이해되어야 하며, 달리 표시되지 않는 한, 바람직하거나 유리한 예인 것으로 이해되어서는 안 된다.
따라서, 적어도 하나의 실시예의 몇몇 양상들을 설명하였지만, 다양한 변경들, 수정들, 및 개선들이 관련 기술분야의 통상의 기술자들에 의해 용이하게 발생할 수 있다는 것이 인식되어야 한다. 그러한 변경들, 수정들, 및 개선들은 본 개시내용의 일부인 것으로 의도되며, 본원에서 설명된 원리들의 사상 및 범위 내에 있는 것으로 의도된다. 따라서, 전술한 설명 및 도면들은 단지 예로서 이루어진다.

Claims (38)

  1. 3차원 데이터에 대한 3차원 모델의 포즈를 테스팅하기 위한 컴퓨터화된 방법으로서,
    3차원 모델을 저장하는 단계 - 상기 3차원 모델은 프로브들의 세트를 포함하고, 각각의 프로브는 상기 3차원 모델의 연관된 부분에 대한 데이터를 포함함 -;
    객체의 3차원 데이터를 수신하는 단계 - 상기 3차원 데이터는 데이터 엔트리들의 세트를 포함함 -;
    상기 3차원 데이터를 필드들의 세트로 변환하는 단계 - 상기 변환하는 단계는:
    제1 세트의 값들을 포함하는 제1 필드를 생성하는 단계 - 상기 제1 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시함 -; 및
    제2 세트의 값들을 포함하는 제2 필드를 생성하는 단계 - 상기 제2 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 상기 제2 특성은 상기 제1 특성과 상이함 -를 포함함 -; 및
    상기 포즈에 대한 점수를 결정하기 위해, 상기 필드들의 세트에 대해 프로브들의 세트를 테스팅하는 것을 포함하여, 상기 필드들의 세트로 상기 3차원 모델의 포즈를 테스팅하는 단계 - 상기 필드들의 세트에 대해 상기 프로브들의 세트를 테스팅하는 단계는:
    상기 제1 필드의 제1 세트의 값들에 대해 테스팅되고 있는 상기 프로브들의 세트에 대한 제1 점수를 결정하는 단계;
    상기 제2 필드의 제2 세트의 값들에 대해 테스팅되고 있는 상기 프로브들의 세트에 대한 제2 점수를 결정하는 단계; 및
    상기 제1 점수 및 상기 제2 점수에 기반하여 상기 포즈에 대한 점수를 결정하는 단계를 포함함-
    를 포함하는, 방법.
  2. 제1항에 있어서, 상기 제1 필드 및/또는 상기 제2 필드를 생성하는 단계는, 각각의 필드에 대한 3차원 어레이를 생성하는 단계를 포함하며,
    각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고,
    각각의 3차원 어레이는 상기 3개의 색인의 세트에 의한 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 각각의 연관된 값의 x, y, 및 z 위치를 암시하는, 방법.
  3. 제1항에 있어서, 상기 프로브들의 세트, 상기 제1 필드의 제1 세트의 값들, 및 상기 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 및/또는 강도 데이터를 포함하는, 방법.
  4. 제1항에 있어서, 상기 포즈에 대한 점수를 결정하기 위해 상기 포즈를 테스팅하는 단계는 상기 프로브들의 세트의 각각의 프로브에 대한 내적 및 상기 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 연관된 값을 합산하는 단계를 포함하는 방법.
  5. 제1항에 있어서,
    복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하는 단계;
    포즈들의 세트를 생성하기 위해, 상기 복수의 포즈들 중 하나 이상의 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하는 단계; 및
    후속 처리를 위해 상기 포즈들의 세트를 저장하는 단계
    를 더 포함하는, 방법.
  6. 제5항에 있어서, 상기 포즈들의 세트 내의 각각의 포즈는 상기 복수의 연관된 점수들의 국부적 피크를 나타내며, 상기 방법은, 상기 3차원 모델의 상단 포즈를 결정하기 위해 상기 포즈들의 세트를 정밀화하는 단계를 더 포함하는, 방법.
  7. 3차원 데이터에 대한 3차원 모델의 포즈를 테스팅하기 위한 시스템으로서,
    상기 시스템은 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는:
    3차원 모델을 저장하고 - 상기 3차원 모델은 프로브들의 세트를 포함하고, 각각의 프로브는 상기 3차원 모델의 연관된 부분에 대한 데이터를 포함함 -;
    객체의 3차원 데이터를 수신하고 - 상기 3차원 데이터는 데이터 엔트리들의 세트를 포함함 -;
    상기 3차원 데이터를 필드들의 세트로 변환하고 - 상기 변환하는 것은:
    제1 세트의 값들을 포함하는 제1 필드를 생성하는 것 - 상기 제1 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시함 -; 및
    제2 세트의 값들을 포함하는 제2 필드를 생성하는 것 - 상기 제2 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 상기 제2 특성은 상기 제1 특성과 상이함 -을 포함함 -; 및
    상기 포즈에 대한 점수를 결정하기 위해, 상기 필드들의 세트에 대해 프로브들의 세트를 테스팅하는 것을 포함하여, 상기 필드들의 세트로 상기 3차원 모델의 포즈를 테스팅 - 상기 필드들의 세트에 대해 상기 프로브들의 세트를 테스팅하는 것은:
    상기 제1 필드의 제1 세트의 값들에 대해 테스팅되고 있는 상기 프로브들의 세트에 대한 제1 점수를 결정하는 것;
    상기 제2 필드의 제2 세트의 값들에 대해 테스팅되고 있는 상기 프로브들의 세트에 대한 제2 점수를 결정하는 것; 및
    상기 제1 점수 및 상기 제2 점수에 기반하여 상기 포즈에 대한 점수를 결정하는 것을 포함함-
    하도록 구성되는, 시스템.
  8. 제7항에 있어서, 상기 제1 필드 및/또는 상기 제2 필드를 생성하는 것은, 각각의 필드에 대한 3차원 어레이를 생성하는 것을 포함하며,
    각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고,
    각각의 3차원 어레이는 상기 3개의 색인의 세트에 의한 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 각각의 연관된 값의 x, y, 및 z 위치를 암시하는, 시스템.
  9. 제7항에 있어서, 상기 프로브들의 세트, 상기 제1 필드의 제1 세트의 값들, 및 상기 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 및/또는 강도 데이터를 포함하는, 시스템.
  10. 제7항에 있어서, 상기 포즈에 대한 점수를 결정하기 위해 상기 포즈를 테스팅하는 것은 상기 프로브들의 세트의 각각의 프로브에 대한 내적 및 상기 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 연관된 값을 합산하는 것을 포함하는, 시스템.
  11. 제7항에 있어서, 상기 하나 이상의 프로세서는:
    복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하고;
    포즈들의 세트를 생성하기 위해, 상기 복수의 포즈들 중 하나 이상의 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하고;
    후속 처리를 위해 상기 포즈들의 세트를 저장하도록
    더 구성되는, 시스템.
  12. 제11항에 있어서, 상기 포즈들의 세트 내의 각각의 포즈는 복수의 연관된 점수들의 국부적 피크를 나타내며, 상기 하나 이상의 프로세서는 상기 3차원 모델의 상단 포즈를 결정하기 위해 상기 포즈들의 세트를 정밀화하도록 더 구성되는, 시스템.
  13. 프로세서 실행가능 명령어들을 저장한 적어도 하나의 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
    3차원 모델을 저장하는 동작 - 상기 3차원 모델은 프로브들의 세트를 포함하고, 각각의 프로브는 상기 3차원 모델의 연관된 부분에 대한 데이터를 포함함 ―;
    객체의 3차원 데이터를 수신하는 동작 - 상기 3차원 데이터는 데이터 엔트리들의 세트를 포함함 -;
    상기 3차원 데이터를 필드들의 세트로 변환하는 동작 - 상기 변환하는 동작은:
    제1 세트의 값들을 포함하는 제1 필드를 생성하는 동작 - 상기 제1 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시함 -; 및
    제2 세트의 값들을 포함하는 제2 필드를 생성하는 동작 - 상기 제2 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 상기 제2 특성은 상기 제1 특성과 상이함 -을 포함함 -; 및
    포즈에 대한 점수를 결정하기 위해, 상기 필드들의 세트에 대해 프로브들의 세트를 테스팅하는 것을 포함하여, 상기 필드들의 세트로 상기 3차원 모델의 포즈를 테스팅하는 동작 - 상기 필드들의 세트에 대해 상기 프로브들의 세트를 테스팅하는 동작은:
    상기 제1 필드의 제1 세트의 값들에 대해 테스팅되고 있는 상기 프로브들의 세트에 대한 제1 점수를 결정하는 동작;
    상기 제2 필드의 제2 세트의 값들에 대해 테스팅되고 있는 상기 프로브들의 세트에 대한 제2 점수를 결정하는 동작; 및
    상기 제1 점수 및 상기 제2 점수에 기반하여 상기 포즈에 대한 점수를 결정하는 동작을 포함함 -
    을 수행하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서, 상기 제1 필드 및/또는 상기 제2 필드를 생성하는 동작은, 각각의 필드에 대한 3차원 어레이를 생성하는 동작을 포함하며,
    각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고,
    각각의 3차원 어레이는 상기 3개의 색인의 세트에 의한 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 각각의 연관된 값의 x, y, 및 z 위치를 암시하는, 비일시적 컴퓨터 판독가능 저장 매체.
  15. 제13항에 있어서, 상기 프로브들의 세트, 상기 제1 필드의 제1 세트의 값들, 및 상기 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 및/또는 강도 데이터를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제13항에 있어서, 상기 포즈에 대한 점수를 결정하기 위해 상기 포즈를 테스팅하는 동작은 상기 프로브들의 세트의 각각의 프로브에 대한 내적 및 상기 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 연관된 값을 합산하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제13항에 있어서, 상기 명령어들은 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
    복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하고;
    포즈들의 세트를 생성하기 위해, 상기 복수의 포즈들 중 하나 이상의 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하고;
    후속 처리를 위해 상기 포즈들의 세트를 저장하게 더 동작 가능한, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제17항에 있어서, 상기 포즈들의 세트 내의 각각의 포즈는 복수의 연관된 점수들의 국부적 피크를 나타내며, 상기 명령어들은, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 상기 3차원 모델의 상단 포즈를 결정하기 위해 상기 포즈들의 세트를 정밀화하게 더 동작 가능한, 비일시적 컴퓨터 판독가능 저장 매체.
  19. 3차원 데이터에 대한 3차원 모델의 포즈를 테스팅하기 위한 컴퓨터화된 방법으로서,
    3차원 모델을 저장하는 단계 - 상기 3차원 모델은 프로브들의 세트를 포함하고, 각각의 프로브는 상기 3차원 모델의 연관된 부분에 대한 데이터를 포함함 -;
    객체의 3차원 데이터를 수신하는 단계 - 상기 3차원 데이터는 데이터 엔트리들의 세트를 포함함 -;
    상기 3차원 데이터를 필드들의 세트로 변환하는 단계 - 상기 변환하는 단계는:
    제1 세트의 값들을 포함하는 제1 필드를 생성하는 단계 - 상기 제1 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시함 -; 및
    제2 세트의 값들을 포함하는 제2 필드를 생성하는 단계 - 상기 제2 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 상기 제2 특성은 상기 제1 특성과 상이함 - 를 포함함-; 및
    상기 프로브들의 세트 및 상기 제1 필드, 상기 제2 필드, 또는 둘 다의 연관된 값들에 기반하여 상기 포즈에 대한 점수를 결정하기 위해 상기 필드들의 세트로 상기 3차원 모델의 포즈를 테스팅하는 단계
    를 포함하는 방법.
  20. 제19항에 있어서, 상기 프로브들의 세트 및 상기 제1 필드, 상기 제2 필드, 또는 둘 다의 연관된 값들에 기반하여 상기 포즈에 대한 점수를 결정하는 단계는 상기 프로브들의 세트의 각각의 프로브에 대한 내적과 상기 제1 필드의 상기 제1 세트의 값들의 연관된 값, 상기 제2 필드의 상기 제2 세트의 값들의 연관된 값, 또는 둘 다를 합산하는 단계를 포함하는, 방법.
  21. 제19항에 있어서, 상기 제1 필드 및/또는 상기 제2 필드를 생성하는 단계는, 각각의 필드에 대한 3차원 어레이를 생성하는 단계를 포함하며,
    각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고,
    각각의 3차원 어레이는 상기 3개의 색인의 세트에 의한 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 각각의 연관된 값의 x, y, 및 z 위치를 암시하는, 방법.
  22. 제19항에 있어서, 상기 프로브들의 세트, 상기 제1 필드의 제1 세트의 값들, 및 상기 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 및/또는 강도 데이터를 포함하는, 방법.
  23. 제19항에 있어서,
    복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하는 단계;
    포즈들의 세트를 생성하기 위해, 상기 복수의 포즈들 중 하나 이상의 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하는 단계; 및
    후속 처리를 위해 상기 포즈들의 세트를 저장하는 단계
    를 더 포함하는, 방법.
  24. 제23항에 있어서, 상기 포즈들의 세트 내의 각각의 포즈는 복수의 연관된 점수들의 국부적 피크를 나타내며, 상기 방법은, 상기 3차원 모델의 상단 포즈를 결정하기 위해 상기 포즈들의 세트를 정밀화하는 단계를 더 포함하는, 방법.
  25. 제19항에 있어서, 상기 포즈에 대한 점수를 결정하기 위해 상기 필드들의 세트로 상기 3차원 모델의 포즈를 테스팅하는 단계는 상기 필드들의 세트에 대해 상기 프로브들의 세트를 테스팅하는 단계를 포함하는, 방법.
  26. 제25항에 있어서, 상기 필드들의 세트에 대해 상기 프로브들의 세트를 테스팅하는 단계는:
    상기 제1 필드의 제1 세트의 값들에 대해 테스팅되고 있는 상기 프로브들의 세트에 대한 제1 점수를 결정하는 단계;
    상기 제2 필드의 제2 세트의 값들에 대해 테스팅되고 있는 상기 프로브들의 세트에 대한 제2 점수를 결정하는 단계; 및
    상기 제1 점수 및 상기 제2 점수에 기반하여 상기 포즈에 대한 점수를 결정하는 단계를 포함하는, 방법.
  27. 3차원 데이터에 대한 3차원 모델의 포즈를 테스팅하기 위한 시스템으로서,
    상기 시스템은 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는:
    3차원 모델을 저장하고 - 상기 3차원 모델은 프로브들의 세트를 포함하고, 각각의 프로브는 상기 3차원 모델의 연관된 부분에 대한 데이터를 포함함 -;
    객체의 3차원 데이터를 수신하고 - 상기 3차원 데이터는 데이터 엔트리들의 세트를 포함함 -;
    상기 3차원 데이터를 필드들의 세트로 변환하고 - 상기 변환하는 것은:
    제1 세트의 값들을 포함하는 제1 필드를 생성하는 것 - 상기 제1 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시함 -; 및
    제2 세트의 값들을 포함하는 제2 필드를 생성하는 것 - 상기 제2 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 상기 제2 특성은 상기 제1 특성과 상이함 -을 포함함 -; 및
    상기 프로브들의 세트 및 상기 제1 필드, 상기 제2 필드, 또는 둘 다의 연관된 값들에 기반하여 상기 포즈에 대한 점수를 결정하기 위해 상기 필드들의 세트로 상기 3차원 모델의 포즈를 테스팅하도록 구성되는, 시스템.
  28. 제27항에 있어서, 상기 프로브들의 세트 및 상기 제1 필드, 상기 제2 필드, 또는 둘 다의 연관된 값들에 기반하여 상기 포즈에 대한 점수를 결정하는 것은 상기 프로브들의 세트의 각각의 프로브에 대한 내적과 상기 제1 필드의 상기 제1 세트의 값들의 연관된 값, 상기 제2 필드의 상기 제2 세트의 값들의 연관된 값, 또는 둘 다의 연관된 값을 합산하는 것을 포함하는, 시스템.
  29. 제27항에 있어서, 상기 제1 필드 및/또는 상기 제2 필드를 생성하는 것은, 각각의 필드에 대한 3차원 어레이를 생성하는 것을 포함하며,
    각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고,
    각각의 3차원 어레이는 3개의 색인의 세트에 의한 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 각각의 연관된 값의 x, y, 및 z 위치를 암시하는, 시스템.
  30. 제27항에 있어서, 상기 프로브들의 세트, 상기 제1 필드의 제1 세트의 값들, 및 상기 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 및/또는 강도 데이터를 포함하는, 시스템.
  31. 제27항에 있어서, 상기 하나 이상의 프로세서는:
    복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하고;
    포즈들의 세트를 생성하기 위해, 상기 복수의 포즈들 중 하나 이상의 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하고;
    후속 처리를 위해 상기 포즈들의 세트를 저장하도록 더 구성되는, 시스템.
  32. 제31항에 있어서, 상기 포즈들의 세트 내의 각각의 포즈는 복수의 연관된 점수들의 국부적 피크를 나타내며, 상기 하나 이상의 프로세서는 상기 3차원 모델의 상단 포즈를 결정하기 위해 상기 포즈들의 세트를 정밀화하도록 더 구성되는, 시스템.
  33. 프로세서 실행가능 명령어들을 저장한 적어도 하나의 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 명령어들은, 적어도 하나의 컴퓨터 하드웨어 프로세서에 의해 실행될 때, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
    3차원 모델을 저장하는 동작 - 상기 3차원 모델은 프로브들의 세트를 포함하고, 각각의 프로브는 상기 3차원 모델의 연관된 부분에 대한 데이터를 포함함 -;
    객체의 3차원 데이터를 수신하는 동작 - 상기 3차원 데이터는 데이터 엔트리들의 세트를 포함함 -;
    상기 3차원 데이터를 필드들의 세트로 변환하는 동작 - 상기 변환하는 동작은:
    제1 세트의 값들을 포함하는 제1 필드를 생성하는 동작 - 상기 제1 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제1 특성을 표시함 -; 및
    제2 세트의 값들을 포함하는 제2 필드를 생성하는 동작 - 상기 제2 세트의 값들의 각각의 값은 상기 데이터 엔트리들의 세트로부터의 연관된 하나 이상의 데이터 엔트리의 제2 특성을 표시하고, 상기 제2 특성은 상기 제1 특성과 상이함 -을 포함함 -;
    상기 프로브들의 세트 및 상기 제1 필드, 상기 제2 필드, 또는 둘 다의 연관된 값들에 기반하여 포즈에 대한 점수를 결정하기 위해 상기 필드들의 세트로 상기 3차원 모델의 포즈를 테스팅하는 동작을 수행하게 하는, 비일시적 컴퓨터 판독가능 저장 매체.
  34. 제33항에 있어서, 상기 프로브들의 세트 및 상기 제1 필드, 상기 제2 필드, 또는 둘 다의 연관된 값들에 기반하여 상기 포즈에 대한 점수를 결정하는 동작은 상기 프로브들의 세트의 각각의 프로브에 대한 내적과 상기 제1 필드의 상기 제1 세트의 값들의 연관된 값, 상기 제2 필드의 상기 제2 세트의 값들의 연관된 값, 또는 둘 다를 합산하는 동작을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  35. 제33항에 있어서, 상기 제1 필드 및/또는 상기 제2 필드를 생성하는 동작은, 각각의 필드에 대한 3차원 어레이를 생성하는 동작을 포함하며,
    각각의 3차원 어레이는 각각의 차원에 대한 색인을 포함하는 3개의 색인의 세트를 포함하고,
    각각의 3차원 어레이는 상기 3개의 색인의 세트에 의한 제1 세트의 값들 및/또는 상기 제2 세트의 값들의 각각의 연관된 값의 x, y, 및 z 위치를 암시하는, 비일시적 컴퓨터 판독가능 저장 매체.
  36. 제33항에 있어서, 상기 프로브들의 세트, 상기 제1 필드의 제1 세트의 값들, 및 상기 제2 필드의 제2 세트의 값들은 표면 법선 데이터, 가장자리 경계 데이터, 및/또는 강도 데이터를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  37. 제33항에 있어서, 상기 명령어들은 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금:
    복수의 연관된 점수들을 결정하기 위해 복수의 포즈들을 테스팅하고;
    포즈들의 세트를 생성하기 위해, 상기 복수의 포즈들 중 하나 이상의 포즈들이 미리 결정된 임계치를 초과하는 점수를 포함하는지를 결정하고;
    후속 처리를 위해 상기 포즈들의 세트를 저장하게 하도록 더 동작 가능한, 비일시적 컴퓨터 판독가능 저장 매체.
  38. 제37항에 있어서, 상기 포즈들의 세트 내의 각각의 포즈는 복수의 연관된 점수들의 국부적 피크를 나타내며, 상기 명령어들은, 상기 적어도 하나의 컴퓨터 하드웨어 프로세서로 하여금, 상기 3차원 모델의 상단 포즈를 결정하기 위해 상기 포즈들의 세트를 정밀화하게 하도록 더 동작 가능한, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020230186810A 2018-09-12 2023-12-20 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치 KR20240013085A (ko)

Applications Claiming Priority (7)

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
KR1020230033739A KR102617732B1 (ko) 2018-09-12 2023-03-15 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020230033739A Division KR102617732B1 (ko) 2018-09-12 2023-03-15 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치

Publications (1)

Publication Number Publication Date
KR20240013085A true KR20240013085A (ko) 2024-01-30

Family

ID=67997332

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020190113580A KR102511821B1 (ko) 2018-09-12 2019-09-16 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치
KR1020230033739A KR102617732B1 (ko) 2018-09-12 2023-03-15 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치
KR1020230186810A KR20240013085A (ko) 2018-09-12 2023-12-20 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020190113580A KR102511821B1 (ko) 2018-09-12 2019-09-16 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치
KR1020230033739A KR102617732B1 (ko) 2018-09-12 2023-03-15 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치

Country Status (4)

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

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 주식회사 메디트 데이터 잠금 시스템 및 데이터 잠금 방법

Family Cites Families (14)

* 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
US10769776B2 (en) 2016-02-12 2020-09-08 Cognex Corporation System and method for efficiently scoring probes in an image with a vision system
JP2017182274A (ja) 2016-03-29 2017-10-05 セイコーエプソン株式会社 情報処理装置およびコンピュータープログラム
US10482621B2 (en) * 2016-08-01 2019-11-19 Cognex Corporation System and method for improved scoring of 3D poses and spurious point removal in 3D image data
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

Also Published As

Publication number Publication date
KR102511821B1 (ko) 2023-03-21
KR20200030485A (ko) 2020-03-20
EP3624062A1 (en) 2020-03-18
CN110895679A (zh) 2020-03-20
JP7469391B2 (ja) 2024-04-16
JP2022140857A (ja) 2022-09-28
CN110895679B (zh) 2024-05-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
CN111328396B (zh) 用于图像中的对象的姿态估计和模型检索
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
CN105205441B (zh) 用于从点云提取特征区域的方法和设备
US8363961B1 (en) Clustering techniques for large, high-dimensionality data sets
JP5677798B2 (ja) 3次元シーンにおける3次元物体の認識及び位置姿勢決定方法
JP5703312B2 (ja) 特徴点の効率的なスケールスペース抽出及び記述
US10554957B2 (en) Learning-based matching for active stereo systems
CN110070096B (zh) 针对非刚性形状匹配的局部频域描述子生成方法及装置
KR20240013085A (ko) 기계 시각을 위한 이미지 데이터 처리 방법들 및 장치
US11468609B2 (en) Methods and apparatus for generating point cloud histograms
Li et al. GPU-based parallel optimization for real-time scale-invariant feature transform in binocular visual registration
JP2024084825A (ja) マシンビジョン用の画像データを処理するための方法及び装置
KR102382883B1 (ko) 3차원 손 자세 인식 장치 및 방법
Gominski et al. Benchmarking individual tree mapping with sub-meter imagery
US20240054676A1 (en) Methods and apparatus for determining orientations of an object in three-dimensional data
Reina Molina et al. Bioinspired parallel 2D or 3D skeletonization
JP2022151129A (ja) 画像処理装置、画像認識装置、画像処理プログラム、及び画像認識プログラム
KR20100093445A (ko) 임의의 각도에서의 객체의 외형에 기반한 3차원 객체 검색 및 자세 추정 방법
CN117726691A (zh) 双目相机标定方法、装置、飞行器以及存储介质

Legal Events

Date Code Title Description
A107 Divisional application of patent