KR20200109391A - 이미지 데이터에서의 키포인트들의 검출 - Google Patents

이미지 데이터에서의 키포인트들의 검출 Download PDF

Info

Publication number
KR20200109391A
KR20200109391A KR1020207026531A KR20207026531A KR20200109391A KR 20200109391 A KR20200109391 A KR 20200109391A KR 1020207026531 A KR1020207026531 A KR 1020207026531A KR 20207026531 A KR20207026531 A KR 20207026531A KR 20200109391 A KR20200109391 A KR 20200109391A
Authority
KR
South Korea
Prior art keywords
pixel data
keypoint
keypoints
image
image frame
Prior art date
Application number
KR1020207026531A
Other languages
English (en)
Other versions
KR102309338B1 (ko
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
Application filed by 애플 인크. filed Critical 애플 인크.
Priority to KR1020217031314A priority Critical patent/KR102474041B1/ko
Publication of KR20200109391A publication Critical patent/KR20200109391A/ko
Application granted granted Critical
Publication of KR102309338B1 publication Critical patent/KR102309338B1/ko

Links

Images

Classifications

    • G06K9/00973
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • G06K9/4652
    • G06K9/4661
    • G06K9/4671
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/002
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • 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/46Descriptors for shape, contour or point-related descriptors, e.g. scale invariant feature transform [SIFT] or bags of words [BoW]; Salient regional features
    • G06V10/462Salient features, e.g. scale invariant feature transforms [SIFT]
    • 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/56Extraction of image or video features relating to colour
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/646Circuits for processing colour signals for image enhancement, e.g. vertical detail restoration, cross-colour elimination, contour correction, chrominance trapping filters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/67Circuits for processing colour signals for matrixing
    • G06K2009/4666
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20112Image segmentation details
    • G06T2207/20164Salient point detection; Corner detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)

Abstract

이미지 데이터에서 키포인트들을 검출하기 위한 방법들 및 시스템들은, 이미지 센서 인터페이스가 이미지 센서로부터 픽셀 데이터를 수신하는 것을 포함할 수 있다. 전단 픽셀 데이터 프로세싱 회로는 픽셀 데이터를 수신하고, 픽셀 데이터를 상이한 컬러 공간 포맷으로 변환할 수 있다. 후단 픽셀 데이터 프로세싱 회로는 픽셀 데이터에 대해 하나 이상의 동작들을 수행할 수 있다. 출력 회로는 픽셀 데이터를 수신하고, 픽셀 데이터를 시스템 메모리로 출력할 수 있다. 키포인트 검출 회로, 이미지 센서 인터페이스로부터 이미지 센서 픽셀 데이터 포맷으로 픽셀 데이터를 수신하거나, 또는 전단 또는 후단 픽셀 데이터 프로세싱 회로들에 의한 프로세싱 이후의 픽셀 데이터를 수신할 수 있다. 키포인트 검출 회로는, 이미지 프레임에서 하나 이상의 키포인트들을 검출하기 위해 픽셀 데이터에 대해 키포인트 검출 동작을 수행하고, 하나 이상의 키포인트들의 설명을 시스템 메모리로 출력할 수 있다.

Description

이미지 데이터에서의 키포인트들의 검출{DETECTING KEYPOINTS IN IMAGE DATA}
이미지 센서에 의해 캡쳐된 이미지 데이터는, 추가적인 프로세싱 또는 소비를 위한 캡쳐된 이미지 데이터를 준비하기 위해, 이미지 프로세싱 파이프라인의 일부로서 종종 초기에 프로세싱된다. 이러한 방식으로, 다른 시스템 리소스들을 소비하지 않으면서, 실시간 보정들 또는 향상들이 행해질 수 있다. 예를 들어, 원시(raw) 이미지 데이터는, 인코딩 및 후속 디스플레이를 위한 적절히 스케일링된 이미지 데이터를 비디오 인코더와 같은 후속 컴포넌트들에 제공하기 위해 보정, 필터링, 또는 그렇지 않으면 수정될 수 있으며, 비디오 인코더에서 이미지 데이터에 대해 수행될 후속 동작들의 수를 감소시킨다.
캡쳐된 이미지 데이터에 대한 이들 보정들 또는 향상들을 구현하기 위해, 다양한 상이한 디바이스들, 컴포넌트들, 유닛들, 또는 다른 모듈들이 이미지 프로세싱 파이프라인의 일부로서 수행되는 가변 동작들을 구현하기 위해 사용될 수 있다. 예를 들어, 이미지 신호 프로세서는, 이미지 센서로부터 획득된 이미지 데이터에 대해 상이한 이미지 수정들 또는 향상들이 행해질 수 있는 다수의 상이한 유닛들 또는 스테이지들을 포함할 수 있다. 이미지 프로세싱 시스템들은, 이미지 센서 모듈에 의해 검출된 이미지들에 대한 자동화된 분석 및 검사 기능을 제공하는 머신 비전용 시스템들을 포함할 수 있다. 머신 비전 알고리즘들은, 하나 이상의 이미지들에서 오브젝트들의 식별 및/또는 추적을 용이하게 하는 이미지 내의 관심 지점들(종종 키포인트들로 지칭됨)을 식별할 수 있다. 머신 비전 알고리즘들의 계산 집약적인 속성을 고려하면, 이들 시스템의 더 효율적인 구현이 바람직하다.
이미지 데이터에서 키포인트들을 검출하기 위한 방법들 및 시스템들이 개시된다. 일 실시예에서, 이미지 신호 프로세서 시스템은, 이미지 센서로부터 픽셀 데이터를 수신하도록 구성된 이미지 센서 인터페이스를 포함할 수 있다. 시스템은, 이미지 센서 픽셀 데이터 포맷으로 이미지 프레임에 대한 픽셀 데이터를 수신하고, 이미지 센서 픽셀 데이터 포맷의 픽셀 데이터를 상이한 컬러 공간 포맷으로 변환하도록 구성된 전단 픽셀 데이터 프로세싱 회로를 포함할 수 있다. 부가적으로, 시스템은, 전단 픽셀 데이터 프로세싱 회로로부터의 픽셀 데이터에 대해 하나 이상의 노이즈 필터링 또는 컬러 프로세싱 동작들을 수행하도록 구성된 후단 픽셀 데이터 프로세싱 회로를 포함할 수 있다. 또한, 시스템은, 후단 픽셀 데이터 프로세싱 회로로부터 픽셀 데이터를 수신하고, 이미지 프레임에 대한 픽셀 데이터를 시스템 메모리로 출력하도록 구성된 출력 회로를 포함할 수 있다. 일 실시예에서, 시스템은, 이미지 센서 인터페이스로부터 이미지 센서 픽셀 데이터 포맷으로 픽셀 데이터를 수신하거나, 또는 전단 픽셀 데이터 프로세싱 회로 또는 후단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터를 수신하도록 구성된 키포인트 검출 회로를 포함할 수 있다. 키포인트 검출 회로는, 이미지 프레임에서 하나 이상의 키포인트들을 검출하기 위해, 수신된 픽셀 데이터에 대해 키포인트 검출 동작을 수행하고, 하나 이상의 키포인트들의 설명을 시스템 메모리로 출력할 수 있다.
일 실시예에서, 시스템은 키포인트 검출 회로에 연결된 멀티플렉서 회로를 포함할 수 있으며, 여기서, 멀티플렉서는 이미지 센서 인터페이스, 시스템 메모리, 또는 후단 픽셀 데이터 프로세싱 회로로부터의 픽셀 데이터를 선택하도록 구성될 수 있고, 멀티플렉서는 픽셀 데이터를 키포인트 검출 회로에 제공하도록 구성될 수 있다. 일 실시예에서, 시스템은 멀티플렉서와 키포인트 검출 회로 사이에 연결된 프리-프로세싱 모듈을 포함할 수 있으며, 프리-프로세싱 모듈은 픽셀 데이터를 휘도 채널 데이터로 변환하도록 구성된다. 일 실시예에서, 시스템은 키포인트 검출 회로에 연결된 키포인트 제어 파라미터 저장 구조를 포함할 수 있다. 키포인트 제어 파라미터 저장 구조는, 이미지 프레임의 각각의 구역들의 제1 세트에 대응하는 다수의 키포인트 민감도 임계치 값들을 저장하며, 그리고 하나 이상의 키포인트들의 각각의 크기 값들이 이미지 프레임의 각각의 구역들의 제1 세트에 대응하는 다수의 키포인트 민감도 임계치 값들 중 하나를 초과하는 것에 응답하여, 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 하나 이상의 키포인트들의 설명을 출력하도록 구성될 수 있다. 부가적으로, 키포인트 검출 회로는, 다수의 키포인트 민감도 임계치 값들 중 하나를 동적으로 조정하도록 프로그램 명령어들에 의해 사용가능한 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 키포인트들의 카운트를 출력할 수 있다. 일 실시예에서, 키포인트 제어 파라미터 저장 구조는, 이미지 프레임의 각각의 구역들의 제2 세트의 각각의 구역에 대한 키포인트들의 총 수의 설명을 출력하도록 키포인트 검출 회로에 의해 사용가능한 이미지 프레임의 각각의 구역들의 제2 세트의 각각의 구역에 대한 허용가능한 키포인트들의 프로그래밍가능한 최대 제한을 저장하도록 구성될 수 있으며, 여기서, 각각의 구역들의 제2 세트의 각각의 구역에 대한 키포인트들의 총 수는 허용가능한 키포인트들의 프로그래밍가능한 최대 제한을 초과하지 않는다. 키포인트 제어 파라미터 저장 구조는 또한, 이미지 프레임의 각각의 구역들의 제2 세트의 프로그래밍가능한 사이즈를 저장할 수 있으며, 여기서, 허용가능한 키포인트들의 프로그래밍가능한 최대 제한에 대응하는 각각의 구역들의 제2 세트는, 다수의 조정가능한 키포인트 민감도 임계치 값들에 대응하는 각각의 구역들의 제1 세트보다 이미지 프레임의 더 작은 구역들이다. 일 실시예에서, 키포인트 검출 회로가 미리-정의된 시간 기간 동안 동일한 수의 키포인트들을 검출하고, 미리-정의된 시간 기간 동안 하나 이상의 키포인트들을 검출하지 않는 것에 응답하여 그리고/또는 검출된 키포인트들의 프로세싱에 기초하여, 다른 전단 및 후단 회로들이 저전력 모드로 유지되어야 하는 상황에 프로세싱된 키포인트들이 대응한다고 결정하는 것에 응답하여, 전단 픽셀 데이터 프로세싱 회로 및 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들이 비활성 상태로 진입하도록, 이미지 신호 프로세서는 저전력 모드로 동작하도록 구성될 수 있다. 이미지 센서 인터페이스 및 키포인트 검출 회로는, 전단 픽셀 데이터 프로세싱 회로 및 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들이 비활성 상태로 진입하는 동안, 하나 이상의 키포인트들의 설명을 시스템 메모리로 계속 출력하도록 구성된 활성 상태로 유지될 수 있다. 키포인트 검출 회로가 하나 이상의 키포인트들을 검출하거나, 또는 (예를 들어, 관심있는 어떤 것이 디바이스의 시야 상에 또는 그 내에서 발생하면) 검출된 키포인트들의 프로세싱에 기초하여, 전단 및 후단 회로들이 활성 상태로 진입해야 한다는 표시에 프로세싱된 키포인트들이 대응한다고 결정하는 것에 응답하여, 전단 픽셀 데이터 프로세싱 회로 및 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들은 활성 상태로 진입할 수 있다.
일 실시예에서, 이미지 신호 프로세서가 이미지 데이터에서 키포인트들을 검출하기 위한 방법은, 이미지 센서 인터페이스에 의해, 이미지 센서로부터 픽셀 데이터를 수신하는 단계를 포함할 수 있다. 방법은, 전단 픽셀 데이터 프로세싱 회로에 의해, 이미지 센서 픽셀 데이터 포맷으로 이미지 프레임에 대한 픽셀 데이터를 수신하는 단계를 포함할 수 있다. 부가적으로, 방법은, 전단 픽셀 데이터 프로세싱 회로에 의해, 이미지 센서 픽셀 데이터 포맷의 픽셀 데이터를 상이한 컬러 공간 포맷으로 변환하는 단계를 포함할 수 있다. 방법은, 후단 픽셀 데이터 프로세싱 회로에 의해, 전단 픽셀 데이터 프로세싱 회로로부터의 픽셀 데이터에 대해 하나 이상의 노이즈 필터링 또는 컬러 프로세싱 동작들을 수행하는 단계를 포함할 수 있다. 또한, 방법은, 출력 회로에 의해, 후단 픽셀 데이터 프로세싱 회로로부터 픽셀 데이터를 수신하고, 이미지 프레임에 대한 픽셀 데이터를 시스템 메모리로 출력하는 단계를 포함할 수 있다. 방법은, 키포인트 검출 회로에 의해, 이미지 센서 인터페이스로부터 이미지 센서 픽셀 데이터 포맷으로 픽셀 데이터를 수신하거나, 또는 키포인트 검출 회로에 의해, 전단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터를 수신하거나, 또는 키포인트 검출 회로에 의해, 후단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터를 수신하는 단계를 포함할 수 있다. 방법은, 키포인트 검출 회로에 의해, 이미지 프레임에서 하나 이상의 키포인트들을 검출하기 위해, 수신된 픽셀 데이터에 대해 키포인트 검출 동작을 수행하는 단계를 포함할 수 있다. 방법은 또한, 키포인트 검출 회로가 하나 이상의 키포인트들의 설명을 시스템 메모리로 출력하는 단계를 포함할 수 있다.
일 실시예에서, 디바이스는 중앙 프로세싱 유닛(CPU), CPU에 연결된 디스플레이, CPU에 연결된 시스템 메모리, 및 CPU에 연결된 이미지 신호 프로세서를 포함할 수 있다. 이미지 신호 프로세서는, 이미지 센서로부터 픽셀 데이터를 수신하도록 구성된 이미지 센서 인터페이스를 포함할 수 있다. 디바이스는, 이미지 센서 픽셀 데이터 포맷으로 이미지 프레임에 대한 픽셀 데이터를 수신하고, 이미지 센서 픽셀 데이터 포맷의 픽셀 데이터를 상이한 컬러 공간 포맷으로 변환하도록 구성된 전단 픽셀 데이터 프로세싱 회로를 포함할 수 있다. 부가적으로, 디바이스는, 전단 픽셀 데이터 프로세싱 회로로부터의 픽셀 데이터에 대해 하나 이상의 노이즈 필터링 또는 컬러 프로세싱 동작들을 수행하도록 구성된 후단 픽셀 데이터 프로세싱 회로를 포함할 수 있다. 또한, 디바이스는, 후단 픽셀 데이터 프로세싱 회로로부터 픽셀 데이터를 수신하고, 이미지 프레임에 대한 픽셀 데이터를 시스템 메모리로 출력하도록 구성된 출력 회로를 포함할 수 있다. 일 실시예에서, 디바이스는, 이미지 센서 인터페이스로부터 이미지 센서 픽셀 데이터 포맷으로 픽셀 데이터를 수신하거나, 또는 전단 픽셀 데이터 프로세싱 회로 또는 후단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터를 수신하도록 구성된 키포인트 검출 회로를 포함할 수 있다. 키포인트 검출 회로는, 이미지 프레임에서 하나 이상의 키포인트들을 검출하기 위해, 수신된 픽셀 데이터에 대해 키포인트 검출 동작을 수행하고, 하나 이상의 키포인트들의 설명을 시스템 메모리로 출력할 수 있다.
도 1은 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 시스템을 도시한 로직 블록 다이어그램이다.
도 2는 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 시스템의 예시적인 데이터 경로들을 도시한 로직 블록 다이어그램이다.
도 3은 일부 실시예들에 따른, 예시적인 이미지 신호 프로세서를 도시한 로직 블록 다이어그램이다.
도 4는 일부 실시예들에 따른, 이미지 신호 프로세서의 머신 비전 스테이지를 도시한 로직 블록 다이어그램이다.
도 5는 일부 실시예들에 따른, 이미지 신호 프로세서의 프리-프로세싱 모듈을 도시한 로직 블록 다이어그램이다.
도 6은 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 다양한 방법들 및 기법들을 도시한 고레벨 흐름도이다.
도 7은 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 이미지 프레임을 도시한 로직 블록 다이어그램이다.
도 8은 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 이미지 프레임을 도시한 로직 블록 다이어그램이다.
도 9a는 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 이미지 프레임을 도시한 로직 블록 다이어그램이다.
도 9b는 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 이미지 프레임을 도시한 로직 블록 다이어그램이다.
본 명세서는 "일 실시예" 또는 "실시예"에 대한 참조들을 포함한다. "일 실시예에서" 또는 "실시예에서"라는 문구들의 등장들은 반드시 동일한 실시예를 지칭하는 것은 아니다. 특정한 특성들, 구조들, 또는 특징들은 본 개시내용과 일관성을 유지하는 임의의 적합한 방식으로 결합될 수 있다.
"포함하는(Comprising)". 이러한 용어는 개방형(open-ended)이다. 첨부된 청구범위에서 사용되는 바와 같이, 이러한 용어는 부가적인 구조 또는 단계들을 배제(foreclose)하지 않는다. "... 하나 이상의 프로세서 유닛들을 포함하는 장치"를 언급하는 청구항을 고려한다. 그러한 청구항은 장치가 부가적인 컴포넌트들(예를 들어, 네트워크 인터페이스 유닛, 그래픽 회로 등)을 포함하는 것을 배제하지 않는다.
"~하도록 구성되는(configured to)". 다양한 유닛들, 회로들, 또는 다른 컴포넌트들이 태스크 또는 태스크들을 수행"하도록 구성"되는 것으로 설명되거나 청구될 수 있다. 그러한 문맥들에서, "~하도록 구성되는"은 유닛들/회로들/컴포넌트들이 동작 동안에 그들 태스크 또는 태스크들을 수행하는 구조(예컨대, 회로)를 포함한다는 것을 표시함으로써 구조를 내포하는데 사용된다. 이와 같이, 유닛/회로/컴포넌트는, 특정된 유닛/회로/컴포넌트가 현재 동작중이지 않은 경우(예를 들어, 켜진 상태가 아닌 경우)에도 태스크를 수행하도록 구성되는 것으로 칭해질 수 있다. "~하도록 구성되는"이라는 어구와 함께 사용되는 유닛들/회로들/컴포넌트들은 하드웨어 - 예를 들어, 회로들, 동작을 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리 등 - 를 포함한다. 유닛/회로/컴포넌트가 하나 이상의 태스크들을 수행"하도록 구성"됨을 언급하는 것은 그 유닛/회로/컴포넌트에 대해 미국 특허법 35 U.S.C. § 112, (f) 문단 규정이 적용되지 않도록 하기 위한 의도의 명시이다. 부가적으로, "~하도록 구성되는"은 사안이 되는 태스크(들)를 수행할 수 있는 방식으로 동작하도록 소프트웨어 또는 펌웨어(예를 들어, FPGA 또는 소프트웨어를 실행하는 범용 프로세서)에 의해 조작되는 일반적인 구조(예를 들어, 일반적인 회로)를 포함할 수 있다. "~하도록 구성되는"은 또한 하나 이상의 태스크들을 구현하거나 수행하도록 적응된 디바이스들(예를 들어, 집적 회로들)을 제조하도록 제조 프로세스(예를 들어, 반도체 제조 설비)를 적응하는 것을 포함할 수 있다.
"제1", "제2", 등. 본 명세서에서 사용되는 바와 같이, 이러한 용어들은 이들이 선행하고 있는 명사들에 대한 라벨들로서 사용되고, 임의의 타입의(예를 들어, 공간적, 시간적, 논리적 등) 순서를 암시하는 것은 아니다. 예를 들어, 버퍼 회로는 "제1" 및 "제2" 값들에 대한 기입 동작들을 수행하는 것으로서 본 명세서에서 설명될 수 있다. 용어들 "제1" 및 "제2"는 반드시 제1 값이 제2 값 전에 기입되어야 한다는 것을 암시하지는 않는다.
"에 기초하는" 또는 "에 의존하는". 본 명세서에서 사용되는 바와 같이, 이들 용어들은 결정에 영향을 주는 하나 이상의 인자들을 설명하기 위해 사용된다. 이들 용어들은 결정에 영향을 줄 수 있는 부가적인 인자들을 배제하지 않는다. 즉, 결정은 오직 그들 인자들에만 기초하거나 또는 그들 인자들에 적어도 부분적으로 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이러한 경우에, B가 A의 결정에 영향을 주는 인자이기는 하지만, 그러한 문구는 A의 결정이 또한 C에도 기초하는 것임을 배제하지 않는다. 다른 예시들에서, A는 오직 B에만 기초하여 결정될 수 있다.
이미지 신호 프로세서 또는 다른 이미지 프로세싱 파이프라인은 이미지 센서에 의해 캡쳐된 이미지 데이터를 보정하거나 향상시키기 위한 많은 상이한 기법들 또는 컴포넌트들을 구현할 수 있다. 그러나, 이미지 센서에 의해 캡쳐된 이미지 데이터는 항상 동일한 목적들을 위해 이용되지는 않는다. 예를 들어, 이미지 센서는, 이미지 센서에 의해 더 높은 해상도의 스틸 이미지로 캡쳐될 수 있거나 비디오로 레코딩될 수 있는 것의 이미지의 프리뷰 이미지를 디스플레이하기 위해 이미지 데이터의 스트림을 제공할 수 있다. 일 실시예에서, 이미지 신호 프로세서와 같은 하나 이상의 하드웨어 모듈(들)은 이미지에서 관심 지점들(종종 키포인트들로 지칭됨)을 검출하는 계산-집약적인 단계들을 수행할 수 있다. 일 실시예에서, 하드웨어 모듈(들)은 키포인트 데이터의 추가적인 프로세싱을 제공하는 소프트웨어 애플리케이션과 인터페이싱할 수 있다. 하드웨어-기반 키포인트 검출은 오브젝트 식별, 오브젝트 추적, 이미지 안정화, 파노라마 스티칭, 다수의 이미지 캡쳐들로부터의 높은 다이나믹 레인지(High Dynamic Range: HDR), 및 다른 애플리케이션들에 매우 적합하다.
다양한 실시예들에서, 이미지 신호 프로세서는, 시스템 대역폭을 보존하고 이미지 프로세싱 파이프라인의 프로세싱 능력들을 더 효율적으로 레버리징하기 위해 다수의 레이트들로 이미지 프로세싱 파이프라인에서 이미지 데이터를 프로세싱할 수 있다. 예를 들어, 적어도 일부 실시예들에서, 하나 이상의 전단 파이프라인 스테이지들은 클록 사이클 당 2개의 픽셀들(ppc)과 같은 초기 레이트로 이미지 데이터를 프로세싱할 수 있다. 이러한 방식으로, (예를 들어, 슬로우 모션 비디오를 레코딩할 경우 캡쳐될 수 있는 큰 개별 이미지 프레임들 또는 높은 레이트의 이미지 프레임들 중 어느 하나로서의) 많은 양들의 이미지 데이터는, 이미지 데이터를 수집 및 프로세싱한 결과로서 도입될 수 있는 이미지 신호 노이즈, 아티팩트들, 및 다른 이미지 결함들을 감소 또는 보정하기 위해 초기 프로세싱을 수신할 수 있다. 이어서, 이미지 데이터는, 이미지 신호 노이즈를 감소시키고, 컬러 및 이미지 결함들을 보정할 뿐만 아니라 다양한 특수 효과들을 적용하기 위해 이미지 프레임들에 대해 다른 동작들을 수행하도록 원하는 사이즈로 다운스케일링되고, 하나 이상의 후단 파이프라인 스테이지들에서 1ppc와 같은 상이한 레이트로 프로세싱될 수 있으므로, 프로세싱은 폐기될 수 있는 이미지 데이터에 대해서는 수행되지 않는다.
적어도 일부 실시예들에서, 전단 파이프라인 스테이지들을 통해 캡쳐 및 프로세싱된 이미지 데이터는 원시(예를 들어, 이미지 센서 픽셀 데이터 포맷) 또는 풀-컬러 포맷들로 메모리에 저장될 수 있지만, 이미지 데이터의 스케일링된 버전은 이미지 프로세싱 파이프라인의 후단 파이프라인 스테이지들을 통해 계속 프로세싱될 수 있다. 이러한 방식으로, 일부 이미지 프로세싱을 이용한 이미지 프레임들의 고해상도 버전들이 캡쳐되면서, 동시에 이미지 프레임들의 더 낮은 해상도 버전들에 대한 프로세싱을 계속할 수 있다(예를 들어, 더 낮은 해상도의 비디오로 또한 레코딩되는 이미지 프레임들의 고해상도 스틸들을 캡쳐함).
적어도 일부 실시예들에서, 이미지 센서와는 상이한 소스들로부터 수집된 이미지 데이터가 이미지 프로세싱 파이프라인의 후단 파이프라인 스테이지(들)를 통해 프로세싱되게 허용하도록 후단 인터페이스가 구현될 수 있다. 예를 들어, 원격 디바이스(예를 들어, 웹-기반 비디오 서비스와 같은 콘텐츠 제공자의 콘텐츠 서버)로부터 이미지 프로세싱 파이프라인을 구현하는 디바이스(예를 들어, 모바일 컴퓨팅 디바이스)에서 수신된 이미지 데이터는, 이미지 신호 노이즈를 감소시키거나, 컬러 및 이미지 결함들을 보정하거나, 또는 다양한 특수 효과들을 적용하기 위한 동작들을 수행하기 위해 후단 인터페이스를 통해 수신되고 후단 파이프라인 스테이지(들)를 통해 프로세싱될 수 있다. 이러한 방식으로, 이미지 프로세싱 파이프라인의 전용 이미지 프로세싱 컴포넌트들은 많은 다른 소스들로부터 수신된 이미지 데이터에 대한 이미지 프로세싱을 효율적으로 수행하기 위해 이용될 수 있다.
이미지 데이터에서 키포인트들을 검출하기 위한 본 명세서에 설명된 기법들은 그들을 이용하는 예시적인 시스템들의 관점들에서 추가로 도시될 수 있다. 위에서 언급된 바와 같이, 이들 기법들은 비디오 클립들을 포함하는 이미지 데이터를 캡쳐 및 프로세싱하기 위한 능력을 포함하는 임의의 타입의 카메라, 장치, 또는 컴퓨팅 시스템에서 구현될 수 있다.
본 명세서에 설명된 기법들 중 임의의 기법 또는 모든 기법들을 구현하도록 구성된 시스템의 일 예가 도 1에 도시된다. 예를 들어, 도 1에 도시된 시스템(100)은, 기존의 GPU 및 CPU 접근법들에 의해 요구되는 부가적인 시스템 메모리 동작들 없이 이미지 신호 프로세서를 사용하여 이미지 프로세싱을 수행하도록 구성될 수 있다. 도시된 실시예에서, 시스템(100)은, 이미지 센서(들)(102), 시스템-온-칩(SOC) 컴포넌트(104), 시스템 메모리(예를 들어, 동적 랜덤 액세스 메모리(DRAM))(130), 지속형 저장소(persistent storage)(예를 들어, 플래시 메모리)(128), 및 디스플레이(116)(예를 들어, 액정 디스플레이(LCD))를 포함한다. 이러한 예에서, 이미지 센서(들)(102)는, 카메라, 비디오 카메라, 또는 카메라 또는 비디오 카메라를 포함하는 다른 디바이스 상에서, 능동형-픽셀 센서(예를 들어, 상보형 금속 산화막 반도체(CMOS) 능동형-픽셀 센서)와 같이 이미지 데이터를 캡쳐하는데 적합한 임의의 타입의 이미지 센서(예를 들어, 캡쳐된 광에 반응하는 이미지 센서)일 수 있다. 이미지 센서(들)(102)는, 이미지 센서(들)(102)에 의해 캡쳐된 이미지 데이터를 이미지 신호 프로세서(106)의 하나 이상의 컴포넌트들에 제공하도록 구성된 각각의 이미지 센서 인터페이스(들)를 포함할 수 있다. 이러한 예에서, 디스플레이(116)는 (이미지 신호 프로세서(106)로부터의 출력으로서 제공될 수 있는) 캡쳐된 스틸 이미지들 또는 비디오 클립들의 프리뷰를 디스플레이하도록 구성될 수 있다. 디스플레이(116)는 또한, 메뉴, 선택된 동작 파라미터들, 또는 시스템의 사용자 인터페이스(도시되지 않음)로부터 수신된 다른 정보를 디스플레이하도록 구성될 수 있다. 다른 실시예들에서, 다른 타입들의 디스플레이 디바이스들이 이러한 목적들을 위해 시스템에 포함될 수 있다. 상이한 실시예들에서, 시스템(100)은, 퍼스널 컴퓨터 시스템; 데스크톱 컴퓨터; 랩톱 컴퓨터; 노트북, 태블릿, 슬레이트, 또는 넷북 컴퓨터; 메인프레임 컴퓨터 시스템; 핸드헬드 컴퓨터; 워크스테이션; 네트워크 컴퓨터; 카메라; 셋톱 박스; 모바일 폰, 무선 호출기, 개인 휴대 정보 단말(PDA), 태블릿 디바이스, 또는 뮤직 플레이어와 같은 모바일 디바이스; 디지털 카메라, 스캐너, 비디오 레코더와 같은 I/O 디바이스; 소비자 디바이스; 비디오 게임 콘솔; 핸드헬드 비디오 게임 디바이스; 또는 카메라 또는 비디오 카메라의 기능을 포함하는 일반적으로 임의의 타입의 컴퓨팅 또는 전자 디바이스를 포함하지만 이에 제한되지는 않는 임의의 다양한 타입들의 디바이스들일 수 있다.
이러한 예에서, SOC 컴포넌트(104)는 이미지 신호 프로세서(ISP)(106), 중앙 프로세서 유닛(CPU)(108), 네트워크 인터페이스(110), (모션 데이터와 같은 시스템(100)의 배향(orientation) 데이터가 수집될 수 있는 배향 센서(들)(134)에 커플링될 수 있는) 배향 인터페이스(112), (디스플레이(116)의 동작들에 커플링되어 그의 동작들을 제어할 수 있는) 디스플레이 제어기(114), 그래픽 프로세서 유닛(GPU)(120), (시스템 메모리(130)에 커플링되는) 메모리 제어기(122), 비디오 인코더(124), (플래시 메모리 또는 다른 비-휘발성 랜덤 액세스 메모리와 같은 지속형 저장소(128)에 커플링되어 그에 대한 액세스를 제어하는) 저장소 제어기(126), 및 (118로 도시된) 다양한 다른 I/O 디바이스들을 포함하며, 이들 중 임의의 것 또는 모두는 상호연결부(132)를 통해 서로 통신할 수 있다. 일부 실시예들에서, 시스템(100) 또는 SOC 컴포넌트(104)는 도 1에 도시된 것들보다 더 많거나 더 적은 요소들을 포함할 수 있다.
다양한 실시예들에서, SOC 컴포넌트(104)는 하나의 프로세서를 포함하는 단일프로세서 시스템, 또는 여러 개(예를 들어, 2개, 4개, 8개, 또는 다른 적합한 개수)의 프로세서들을 포함하는 멀티프로세서 시스템일 수 있다. CPU(들)(108)는 임의의 적합한 명령어 세트 아키텍처를 구현할 수 있으며, 그 명령어 세트 아키텍처 내에 정의된 명령어들을 실행하도록 구성될 수 있다. 예를 들어, 다양한 실시예들에서, CPU(들)(108)는 x86, PowerPC, SPARC, RISC, 또는 MIPS ISA들, 또는 임의의 다른 적합한 ISA와 같은 임의의 다양한 명령어 세트 아키텍처(ISA)들을 구현하는 범용 또는 임베디드 프로세서들일 수 있다. 멀티프로세서 시스템들에서, CPU(들)(108) 각각은 일반적으로 동일한 ISA를 구현할 수 있지만 반드시 그러한 것은 아니다. CPU(108)는 스칼라, 수퍼스칼라, 파이프라인형, 수퍼파이프라인형, 비순차형, 순차형, 추측형, 비추측형(non-speculative) 등 또는 이들의 조합들을 포함하는 임의의 마이크로아키텍처를 이용할 수 있다. CPU(108)는 마이크로코딩 기법들을 구현하기 위한 회로를 포함할 수 있다. CPU(108)는, 명령들을 실행하도록 각각 구성되는 하나 이상의 프로세싱 코어들을 포함할 수 있다. CPU(108)는, 임의의 사이즈 및 임의의 구성(세트 연관, 직접 맵핑 등)을 이용할 수 있는 하나 이상의 레벨들의 캐시들을 포함할 수 있다.
도 1에 예시된 예에서, 시스템 메모리(130)는, 동적 랜덤 액세스 메모리(DRAM), 동기식 DRAM(SDRAM), 더블 데이터 레이트(DDR, DDR2, DDR3 등) SDRAM(mDDR3 등과 같은 모바일 버전들의 SDRAM들, 또는 LPDDR2 등과 같은 저전력 버전들의 SDRAM들을 포함), RAMBUS DRAM(RDRAM), 정적 RAM(SRAM) 등과 같은 임의의 타입의 메모리일 수 있다. 하나 이상의 메모리 디바이스들은 단일 인라인 메모리 모듈(single inline memory module: SIMM)들, 듀얼 인라인 메모리 모듈(DIMM)들 등과 같은 메모리 모듈들을 형성하기 위해 회로 보드 상에 커플링될 수 있다. 대안적으로, 디바이스들은 칩-온-칩(chip-on-chip) 구성, 패키지-온-패키지(package-on-package) 구성 또는 멀티-칩 모듈 구성으로 시스템(100)을 구현하는 집적 회로로 실장될 수 있다. 일부 실시예들에서, 시스템 메모리(130)는 픽셀 데이터 또는 다른 이미지 데이터 또는 통계를 다양한 포맷들로 저장할 수 있다. 유사하게, 도 1에 도시된 예시적인 시스템(100)이 시스템에서 사용되는 이미지 데이터 또는 다른 데이터의 비-휘발성 저장을 위한 지속형 저장소(128)를 포함하지만, 다른 실시예들에서, 시스템은 이러한 목적들을 위한 다른 타입들의 비-휘발성 메모리(예를 들어, 판독-전용 메모리(ROM))를 포함할 수 있다.
그래픽 프로세싱 유닛(GPU)(120)은 임의의 적합한 그래픽 프로세싱 회로를 포함할 수 있다. 일반적으로, GPU(120)는 프레임 버퍼로 디스플레이되도록 오브젝트들(예를 들어, 전체 프레임에 대한 픽셀 데이터를 포함하는 오브젝트)을 렌더링하도록 구성될 수 있다. GPU(120)는 그래픽 동작의 일부 또는 전부를 수행하도록 그래픽 소프트웨어, 또는 특정한 그래픽 동작들의 하드웨어 가속을 실행할 수 있는 하나 이상의 그래픽 프로세서들을 포함할 수 있다. 하드웨어 가속 및 소프트웨어 구현의 양은 실시예마다 변할 수 있다.
I/O 디바이스들(118)은 시스템(100)의 타입에 의존하여 임의의 원하는 회로를 포함할 수 있다. 예를 들어, 일 실시예에서, 시스템(100)은 모바일 컴퓨팅 디바이스(예를 들어, 개인 휴대 정보 단말(PDA), 태블릿 디바이스, 스마트 폰 등)일 수 있고, I/O 디바이스들(118)은 WiFi, 블루투스, 셀룰러, 글로벌 포지셔닝 시스템 등과 같은 다양한 타입들의 무선 통신용 디바이스들을 포함할 수 있다. 일부 실시예들에서, I/O 디바이스들(118)은 또한, RAM 저장소, 솔리드 스테이트 저장소(solid state storage), 또는 디스크 저장소를 포함하는 부가적인 저장소를 포함할 수 있다. 일부 실시예들에서, I/O 디바이스들(118)은 터치 디스플레이 스크린들 또는 멀티-터치 디스플레이 스크린들, 키보드들, 키패드들, 터치패드들, 스캐닝 디바이스들, 음성 또는 광학 인식 디바이스들, 마이크로폰들, 스피커들, 스캐너들, 프린팅 디바이스들, 또는 시스템(100)에 의해 데이터를 입력하거나 데이터에 액세스하거나 또는 시스템(100) 내로 데이터를 입력하거나 시스템(100) 내의 데이터에 액세스하기에 적합한 임의의 다른 디바이스들을 포함하는 부가적인 디스플레이 디바이스와 같은 사용자 인터페이스 디바이스들을 포함할 수 있다.
이러한 예에서, 이미지 신호 프로세서(ISP)(106)는 본 명세서에서 상세히 설명되는 바와 같이, 이미지 프로세싱 파이프라인의 다양한 스테이지들의 성능을 용이하게 할 수 있는 전용 하드웨어를 포함할 수 있다. 일부 실시예들에서, ISP(106)는 이미지 센서(102)로부터 이미지 데이터를 수신하고 (디스플레이(116) 또는 비디오 인코더(124)를 포함하는) 시스템(100)의 다른 컴포넌트들에 의해 사용가능한 형태로 데이터를 프로세싱하도록 구성될 수 있다. 일부 실시예들에서, 본 명세서에 설명되는 바와 같이, ISP(106)는 이미지 전환(translation) 동작들, 수평 및 수직 스케일링, 키포인트 식별, 오브젝트 맵핑, 오브젝트 추적, 색 공간 변환 또는 다른 비-워핑(non-warping) 이미지 편집 동작들, 또는 이미지 안정화 변환들과 같은 다양한 이미지-조작 동작들을 수행하도록 구성될 수 있다. 이미지 신호 프로세서의 일 실시예가 도 3에 더 상세히 도시되고 아래에서 설명된다.
도 1에 도시된 예에서, 상호연결부(132)는 SOC(104)에 포함된 다양한 기능 유닛들 사이의 통신들을 용이하게 하도록 구성될 수 있다. 다양한 실시예들에서, 상호연결부(132)는 메쉬들, 칩 패브릭들 상의 네트워크, 공유 버스들, 점-대-점 상호연결부 등과 같은 임의의 적합한 상호연결 회로를 포함할 수 있다. 일부 실시예들에서, 상호연결부(132)는, 하나의 컴포넌트(예를 들어, 시스템 메모리(130))로부터의 데이터 신호들을 다른 컴포넌트(예를 들어, CPU(들)(108) 또는 GPU(120))에 의한 사용에 적합한 포맷으로 변환하기 위해 임의의 필요한 프로토콜, 타이밍 또는 다른 데이터 변환들을 수행할 수 있다. 일부 실시예들에서, 상호연결부(132)는, 예를 들어, 주변기기 컴포넌트 상호연결(PCI) 버스 표준 또는 유니버셜 시리얼 버스(USB) 표준의 변형물과 같은 다양한 타입들의 주변기기 버스들을 통해 부착된 디바이스들에 대한 지원을 포함할 수 있다. 일부 실시예들에서, 상호연결부(132)의 기능은, 예를 들어, 노스 브리지(north bridge) 및 사우스 브리지(south bridge)와 같은 2개 이상의 별개의 컴포넌트들로 분할될 수 있다. 일부 실시예들에서, 상호연결부(132)는 적절한 포맷들로의 픽셀 데이터 또는 다른 이미지 데이터 또는 통계의 다양한 기능 유닛들로의 통신을 용이하게 할 수 있다.
이러한 예에서, 네트워크 인터페이스(110)는, 시스템(100)과, 하나 이상의 네트워크들에 부착된 다른 디바이스들(예를 들어, 캐리어 또는 에이전트 디바이스들) 사이에서 또는 시스템(100)의 노드들 또는 컴포넌트들 사이에서 데이터가 교환되게 허용하도록 구성될 수 있다. 예를 들어, 비디오 또는 다른 이미지 데이터는 네트워크 인터페이스(110)를 통해 다른 디바이스들(예를 들어, 콘텐츠 제공자 네트워크 또는 다른 모바일 컴퓨팅 디바이스)로부터 수신되고, (예를 들어, 아래의 도 3에서 논의되는 바와 같이, 이미지 신호 프로세서(106)로의 후단 인터페이스를 통한) 후속 프로세싱 및 디스플레이를 위해 시스템 메모리(130)에 저장될 수 있다. 다양한 실시예들에서, 네트워크(들)는, 로컬 영역 네트워크(LAN)들(예를 들어, 이더넷 또는 회사 네트워크), 광역 네트워크(WAN)들(예를 들어, 인터넷), 무선 데이터 네트워크들, 일부 다른 전자 데이터 네트워크, 또는 이들의 일부 조합을 포함할 수 있지만 이에 제한되지 않는다. 다양한 실시예들에서, 네트워크 인터페이스(110)는, 예를 들어, 유선 또는 무선의 일반 데이터 네트워크들, 이를테면 임의의 적합한 타입의 이더넷 네트워크를 통한; 통신/전화 네트워크들, 이를테면 아날로그 음성 네트워크들 또는 디지털 광섬유 통신 네트워크들을 통한; 광섬유 채널 저장 영역 네트워크들(Fibre Channel Storage Area Network: SAN)들과 같은 저장 영역 네트워크들을 통한, 또는 임의의 다른 적합한 타입의 네트워크 또는 프로토콜을 통한 통신을 지원할 수 있다.
당업자는, 시스템(100)이 단지 예시적인 것이고, 실시예들의 범위를 제한하는 것으로 의도되지는 않음을 인식할 것이다. 예를 들어, 시스템(100)은 또한 도시되지 않은 다른 디바이스들에 연결될 수 있거나, 또는 대신에 독립형 시스템으로서 동작할 수 있다. 부가적으로, 도시된 컴포넌트들에 의해 제공되는 기능은, 일부 실시예들에서, 더 적은 수의 컴포넌트들로 결합될 수 있거나 또는 부가적인 컴포넌트들에 분산될 수 있다. 유사하게, 일부 실시예들에서, 도시된 컴포넌트들 중 일부 컴포넌트들의 기능이 제공되지 않을 수 있거나 또는 다른 부가적인 기능이 이용가능할 수 있다. 일부 실시예들에서, 시스템 메모리(130)에 저장된 프로그램 명령어들은 시스템(100)의 다양한 기능들을 제공하도록 CPU(108) 또는 GPU(120)에 의해 실행될 수 있다.
다른 실시예들에서, 다양한 기능들은, 다른 디바이스 상의 메모리에서 실행되고 컴퓨터간 통신을 통해 도시된 시스템과 통신하는 소프트웨어 컴포넌트들에 의해 수행될 수 있다. 이들 소프트웨어 컴포넌트들 또는 본 명세서에 설명된 임의의 데이터 구조들 중 일부 또는 전부는 시스템 메모리(130), 지속형 저장소(128)에 (예를 들어, 명령어들 또는 구조화된 데이터로서) 저장될 수 있거나, 또는 적절한 드라이브에 의해 판독될 비-일시적인 컴퓨터-판독가능 매체 또는 휴대용 물품 상에 저장될 수 있다. 일부 실시예들에서, 시스템(100)으로부터 분리된 컴퓨터-액세스가능 매체 상에 저장된 명령어들은 네트워크 또는 무선 링크와 같은 통신 매체를 통해 전달되는 전기, 전자기, 또는 디지털 신호들과 같은 신호들 또는 전송 매체들을 통해 시스템(100)으로 송신될 수 있다. 다양한 실시예들은, 본 명세서의 설명들에 따라 구현된 명령어들 또는 데이터를 수신, 전송 또는 저장하는 것을 더 포함할 수 있다. 일반적으로 말하면, 컴퓨터-액세스가능 매체는 자기적 또는 광학적 매체들과 같은 비-일시적인 컴퓨터-판독가능 저장 매체 또는 메모리 매체, 예를 들어, 디스크 또는 DVD/CD-ROM, RAM(예를 들어, SDRAM, DDR, RDRAM, SRAM 등), ROM과 같은 휘발성 또는 비-휘발성 매체들 등을 포함할 수 있다.
도 2는 일부 실시예들에 따른, 이미지 신호 프로세서를 구현하는 시스템(구체적으로는, 도 1에 도시된 시스템(100))의 데이터 경로들을 도시한 블록 다이어그램이다. 파선들(200)에 의해 도시된 바와 같이, 일 예에서, 이미지 데이터는 (상호연결부(132) 및 메모리 제어기(122)에 의해) 이미지 센서(102)로부터 이미지 신호 프로세서(106)를 통해 시스템 메모리(130)로 전달될 수 있다. 일단 이미지 데이터가 시스템 메모리(130)에 저장되면, 그 이미지 데이터는, 비디오 인코더(124), 디스플레이(116)에 의해 (예를 들어, 상호연결부(132) 및 디스플레이(116)의 경우에는 디스플레이 제어기(114)에 의해) 액세스될 수 있다. 예를 들어, 다양한 실시예들에서, 이미지 데이터는, 디스플레이(116) 상에 프리뷰를 디스플레이하기 위해 디스플레이 제어기(114)에 의해 액세스될 수 있거나, 또는 (예를 들어, 저장을 위해) 지속형 저장소(128)로의 비디오 레코딩에 적합하거나, 또는 네트워크 또는 다른 곳을 통한 송신을 위해 (예를 들어, 화상 회의를 위해) 데이터를 네트워크 인터페이스(110)에 전달하기에 적합한 포맷으로 데이터를 인코딩할 수 있는 비디오 인코더(124)에 의해 액세스될 수 있다.
다른 예시적인 데이터 경로는 점선들(210)에 의해 도시된다. 비디오 이미지 또는 데이터 또는 이미지 스틸들 또는 프레임들과 같은 이미지 데이터는 이미지 센서(들)(102) 이외의 소스들로부터 시스템(100)에서 수신될 수 있다. 일 실시예에서, 이미지 데이터는 시스템 메모리(130)로부터 이미지 신호 프로세서(106)에 의해 수신될 수 있다. 다른 실시예에서, 비디오 데이터는, 시스템(100)에 원격인 다른 소스들(예를 들어, 콘텐츠 제공자 네트워크 또는 다른 모바일 컴퓨팅 디바이스)로부터 유선 또는 무선 네트워크 연결들을 통해 시스템(100)에 스트리밍, 다운로딩, 또는 그렇지 않으면 통신될 수 있다. 이미지 데이터는 네트워크 인터페이스(110)를 통해 수신되고, 메모리 제어기(122)를 통해 메모리(130)에 기입될 수 있다. 이어서, 이미지 데이터는 메모리(130)로부터 이미지 신호 프로세서(106)에 의해 획득되며, 일부 실시예에서는, 다양한 이미지 보정, 전환, 변환, 또는 다른 이미지 프로세싱 기법들을 수행하기 위해 하나 이상의 이미지 프로세싱 파이프라인 스테이지들을 통해 프로세싱될 수 있다. 이어서, 이미지 데이터는, 메모리(130), 비디오 인코더(124), 또는 디스플레이(116)에서의 디스플레이를 위해 디스플레이 제어기(113)와 같은 다른 컴포넌트로 또는 지속형 저장소(128)에서의 저장을 위해 저장소 제어기(126)로 리턴될 수 있다(도시되지 않음).
일부 실시예들에서, 그래픽 프로세서(120)는, 이미지 데이터에 액세스, 이미지 데이터를 조작, 변환 또는 그렇지 않으면 프로세싱할 수 있으며, 따라서, 부가적인 판독 및 기입 동작들은 도 2에 도시된 것들 이외에 시스템 메모리(130) 상에서 수행될 수 있다. 시스템 메모리(130)에 저장된 이미지 데이터는 GPU(120)에 의해 (상호연결부(132) 및 메모리 제어기(122)에 의해) 액세스될 수 있으며, GPU(120)가 이미지 데이터에 대해 하나 이상의 이미지 변환들을 수행한 이후, 이미지 데이터는 (다시, 상호연결부(132) 및 메모리 제어기(122)에 의해) 시스템 메모리(130)로 다시 기입될 수 있다. 이미지 프로세싱이 CPU(108)에 의해 (예를 들어, CPU(108) 상에서 실행되는 소프트웨어에 의해) 대신 수행되면, 유사한 데이터 경로들이 시스템 메모리(130)와 CPU(108) 사이의 시스템(100) 에서 이용될 수 있다. 일부 실시예들에서(하지만 되시되지 않음), 이미지 신호 프로세서(106)로부터의 이미지 데이터는, 이미지 데이터를 시스템 메모리(130)에 저장하지 않으면서 (상호연결부(132)를 통해) 직접 다른 기능 컴포넌트(예를 들어, CPU(120), 그래픽 프로세서(120), 다른 I/O 디바이스들(118), 네트워크 인터페이스(110), 비디오 인코더(124), 저장소 제어기(126), 또는 디스플레이 제어기(114))에 전송될 수 있다.
이미지 신호 프로세서(106)와 같은 이미지 신호 프로세싱 유닛(ISP)의 일 실시예가 도 3의 블록 다이어그램에 도시된다. 이러한 예에 도시된 바와 같이, 다양한 실시예들에서, ISP(106)는 (그것이 이미지 데이터를 수신하는) 이미지 센서(들)(102)에 커플링될 수 있다. 이러한 예에서, ISP(106)는 생성, 캡쳐, 또는 수신으로부터 출력으로 이미지 정보를 프로세싱하는 스테이지들의 세트를 포함할 수 있는 이미지 프로세싱 파이프라인을 구현한다. 예를 들어, ISP(106)의 컴포넌트들로서 도시된 다양한 요소들은, 파이프라인의 다른 스테이지들(예를 들어, 이미지 통계(304), 원시 이미지 프로세싱(306), 리샘플 프로세싱 스테이지(308), 노이즈 프로세싱 스테이지(310), 컬러 프로세싱 스테이지(312), 출력 리스케일(314), 또는 머신 비전 스테이지(318))에 의해, 출력 인터페이스(316)를 통해 ISP(106)를 포함하는 시스템의 다른 컴포넌트들(변환된 데이터가 메모리 제어기 인터페이스(122)를 통해 시스템 메모리로 기입된 이후 시스템 메모리로부터 그 변환된 데이터에 엑세스하거나 또는 상호연결부(132)를 통해 직접 이미지 데이터를 제공받는 것들을 포함함) 또는 후단 인터페이스(342)에 의해, 또는 ISP(106)를 포함하는 시스템에 커플링된 다른 디바이스에 의해 프로세싱가능한 이미지 데이터로, 이미지 센서(102)로부터 센서 인터페이스(들)(302)를 통해 수신된 소스 데이터를 프로세싱한다. 적어도 일부 실시예들에서, 센서 인터페이스(들)(302)는, (예를 들어, 포커스 픽셀들과 같은 특수한 픽셀들에 의해 생성된) 패턴화된 결함들 및 결함 라인 쌍들을 검출 및 보정하기 위한 픽셀 결함 보정과 같은 다양한 프리프로세싱 동작들, 및 이미지 데이터 사이즈를 감소시키기 위한 이미지 크로핑(cropping) 또는 비닝(binning)을 수행할 수 있다. 일부 실시예들에서, 이미지 신호 프로세서(106)가 스트리밍 디바이스임을 유의한다. 다시 말하면, 픽셀들은 래스터 순서로(즉, 수평으로, 라인 단위로) 센서 인터페이스(들)(302)를 통해 이미지 센서(102)로부터 이미지 신호 프로세서(106)에 의해 수신될 수 있으며, 최종적으로 래스터 순서로 출력될 때까지 래스터 순서로 자신의 다양한 파이프라인 스테이지들을 통해 일반적으로 프로세싱될 수 있다.
이미지 신호 프로세서(106)는 상이한 레이트들로 이미지 신호 프로세서(종종 ISP로 지칭됨)에서 수신된 이미지 데이터를 프로세싱할 수 있다. 예를 들어, 도 3에 도시된 실시예에서, 이미지 신호 프로세서는, 이미지 데이터를 초기 레이트로 프로세싱하는 원시 프로세싱 스테이지(306) 및 리샘플 프로세싱 스테이지(308)와 같은 하나 이상의 전단 파이프라인 스테이지들(330)을 구현할 수 있다. 따라서, 이들 전단 파이프라인 스테이지들(이를테면, 원시 프로세싱 스테이지(306) 및 리샘플 프로세싱 스테이지(308)에 대해 아래에서 설명되는 스테이지들)에서 수행되는 다양한 상이한 기법들, 조정들, 수정들, 또는 다른 프로세싱 동작들은, 이미지 데이터가 초기 레이트로 이들 스테이지들을 통해 계속 프로세싱될 수 있도록 구현될 수 있다. 예를 들어, 전단 파이프라인 스테이지들(330)이 클록 사이클 당 2개의 픽셀들을 프로세싱하면, 블랙 레벨 보상, 하이라이트 복원, 결함 픽셀 보정 등과 같은 원시 프로세싱 스테이지(306) 동작들은 한번에 이미지 데이터의 2개의 픽셀들을 프로세싱할 수 있다. 일 실시예에서, 머신 비전 스테이지(318) 내의 상이한 모듈들은 상이한 레이트들로 이미지 데이터를 프로세싱할 수 있다. 예를 들어, 머신 비전 스테이지(318)의 전단 내의 모듈들은 초기 레이트로 데이터를 프로세싱할 수 있는 반면, 머신 비전 스테이지(318)의 후단을 향하는 모듈들은 감소된 레이트로 이미지 데이터를 프로세싱할 수 있다.
전단 파이프라인 스테이지들에서 초기 레이트로 이미지 데이터를 프로세싱하는 것에 부가하여, 이미지 신호 프로세서(106)는 상이한 레이트로 이미지 데이터를 프로세싱하는 하나 이상의 후단 파이프라인 스테이지들을 구현할 수 있다. 다양한 실시예들에서, 후단 파이프라인 스테이지들(340)은 초기 데이터 레이트보다 낮은 감소된 레이트로 이미지 데이터를 프로세싱할 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 노이즈 프로세싱 스테이지(310), 컬러 프로세싱 스테이지(312), 및 출력 리스케일(314)과 같은 후단 파이프라인 스테이지들(340)은 이미지 데이터가 감소된 레이트에 따라 프로세싱되도록 구현될 수 있다. 2ppc로 이미지 데이터를 프로세싱하는 전단 스테이지들(330)의 위의 예를 고려하면, 노이즈 프로세싱 스테이지(310)는 1ppc와 같이 2ppc 보다 낮은 레이트로 이미지 데이터를 프로세싱하기 위해 시간 필터링 및 루마 샤프닝(luma sharpening)과 같은 동작들을 구현할 수 있다.
적어도 일부 실시예들에서, 이미지 신호 프로세서(106)는 후단 인터페이스(342)를 구현할 수 있다. 후단 인터페이스(342)는 시스템 메모리 및/또는 이미지 센서(들)(102) 이외의 다른 이미지 소스들로부터 이미지 데이터를 수신할 수 있다. 예를 들어, 도 2에 도시된 바와 같이, 무선 연결을 통해 수신된 이미지 데이터가 수신되어 메모리(130)에 저장될 수 있다. 이미지 데이터는, 이미지 신호 프로세서(106)의 후단 스테이지들(340)에서의 프로세싱을 위해 후단 인터페이스(342)를 통해 수신될 수 있다. 일부 실시예들에서, 원시 프로세싱 스테이지(306)는 시스템 메모리(130)로부터 이미지 데이터를 수신하도록 구성될 수 있다. 이러한 방식으로, 이미지 신호 프로세서(106)는 이미지 데이터에 대해 수행되는 CPU 또는 GPU 프로세싱 대신 (또는 이에 부가하여) 다른 이미지 데이터 소스(들)로부터 수신된 데이터에 리소스 효율적인 이미지 프로세싱 용량을 제공하도록 구성될 수 있다. 다양한 실시예들에서, 후단 인터페이스(342)는, 후단 프로세싱 스테이지들에 의해 이용되는 포맷으로 이미지 데이터를 변환할 수 있다.
다양한 실시예들에서, 이미지 신호 프로세서(106)는 중앙 제어 모듈(320)을 구현할 수 있다. 일부 실시예들에서, 중앙 제어 모듈(320)은 이미지 데이터의 프로세싱을 구성하고 시작할 수 있다. 예를 들어, 중앙 제어 모듈(320)은 로깅 클록 사이클(logging clock cycle)들, 메모리 레이턴시, 서비스 품질, 및 상태 정보에 대한 성능 모니터들을 구현할 수 있다. 중앙 제어 모듈(320)은 ISP(106)의 유닛들, 모듈들, 스테이지들, 또는 다른 컴포넌트들에 대한 제어 파라미터들을 업데이트 또는 관리할 수 있으며, 유닛들, 모듈들, 스테이지들, 또는 다른 컴포넌트들의 시작 및 중지를 제어하기 위해 센서 인터페이스(302)와 인터페이싱할 수 있다. 예를 들어, 일부 실시예들에서, 유닛, 모듈, 스테이지, 또는 다른 컴포넌트는, 프로그래밍가능한 파라미터들이 중앙 제어 모듈(320)에 의해 업데이트될 수 있는 동안 유휴 상태로 들어갈 수 있다. 이어서, 유닛, 모듈, 스테이지, 또는 다른 컴포넌트는 하나 이상의 동작들 또는 태스크들을 수행하기 위해 실행 상태로 배치할 수 있다. 다른 예들에서, 중앙 제어 모듈(320)은, 리샘플 프로세싱 스테이지(308) 이전, 그 동안, 또는 그 후에 (예를 들어, 도 2의 메모리(130)와 같은 메모리로 기입될) 이미지 데이터를 저장하도록 이미지 신호 프로세서(106)를 구성할 수 있다. 이러한 방식으로, 원시(예를 들어, 이미지 센서 픽셀 데이터 포맷) 또는 풀-컬러 도메인 포맷인지와 관계없이, 후단 파이프라인 스테이지들을 통해 이미지 데이터를 프로세싱하는 것에 부가하여 또는 그 대신 풀-해상도 이미지 데이터가 저장될 수 있다. 일 실시예에서, 이미지 신호 프로세서(106)는, 센서 인터페이스(들)(302)로부터 직접 원시 입력 데이터, 시스템 메모리(130)로부터 저장된 이미지 데이터, 및/또는 출력 리스케일 스테이지(314), 출력 인터페이스(316), 또는 후단(340)의 다른 스테이지들과 같은 후단 출력 회로로부터 프로세싱된 이미지 데이터를 수신하도록 구성된 전단 픽셀 데이터 프로세싱 회로, 이를테면 원시 프로세싱 스테이지(306) 또는 머신 비전 스테이지(318)를 포함할 수 있다. 일 실시예에서, 중앙 제어 모듈(320)은 시스템 메모리(130)에 저장된 데이터, 이를테면 프로그램 명령어들(136)에 액세스할 수 있다. 일 실시예에서, 중앙 제어 모듈(320)은 머신 비전 스테이지(318)에 제어 신호들을 전송할 수 있으며, 그에 의해, 머신 비전 스테이지(318)의 하나 이상의 성능 파라미터들을 조정한다.
다양한 실시예들에서, 이미지 신호 프로세서(106)는 이미지 통계 모듈(들)(304)을 구현할 수 있다. 이미지 통계 모듈(들)(304)은 다양한 기능들을 수행하며, 시스템 메모리(130)와 같은 메모리에 저장될 정보를 수집할 수 있다. 일부 실시예들에서, 이미지 통계 모듈은 다양한 동작들의 결과로서 이미지 정보를 수집하기 위해 센서 선형화, 결함 픽셀 교체, 블랙 레벨 보상, 렌즈 음영(shading) 보정, 및 역 블랙 레벨 보상을 수행할 수 있다. 3A 통계들(자동 화이트 밸런스(AWB), 자동 노출(AE), 자동 초점(AF)), 히스토그램들(예를 들어, 2D 컬러 또는 컴포넌트), 또는 임의의 다른 이미지 데이터 정보와 같은 통계들이 수집 또는 추적될 수 있다. 따라서, 이전의 예들은 제한하려는 것으로 의도되지 않는다. 일부 실시예들에서, 센서 선형화, 결함 픽셀 교체, 블랙 레벨 보상, 렌즈 음영 보정, 및 역 블랙 레벨 보상과 같은 통계 동작들이 클리핑된 픽셀들을 식별하는 경우, 특정한 픽셀 값들 또는 픽셀 값들의 영역들은 통계 수집들로부터, 이를테면 AF 통계들로부터 배제될 수 있다. 다수의 이미지 통계 모듈들(304)이 구현되는 시나리오들에서, 각각의 통계 모듈은, 동일한 이미지 데이터에 대한 상이한 정보, 또는 상이한 이미지들에 대해 수집된 (예를 들어, 이미지 센서(들)(102)의 상이한 이미지 센서들로부터 수집된) 상이한 이미지 데이터를 수집하도록 중앙 제어 모듈(320)에 의해 프로그래밍될 수 있다.
위에서 언급된 바와 같이, 이미지 신호 프로세서(106)는 원시 또는 풀-컬러 도메인들에서 이미지 데이터를 프로세싱할 수 있는 하나 또는 다수의 전단 파이프라인 스테이지들, 이를테면 원시 프로세싱 스테이지(306), 리샘플 프로세싱 스테이지(308), 및 머신 비전 스테이지(318)를 구현할 수 있다. 다양한 실시예들에서, 원시 프로세싱 스테이지(306)는 원시 이미지 데이터에 대해 다양한 동작들, 기능들, 또는 태스크들을 수행하기 위해 다양한 모듈들, 유닛들, 또는 컴포넌트를 구현할 수 있다. 예를 들어, 베이어(Bayer) 원시 포맷은 베이어 패턴의 픽셀 센서들을 구현하는 이미지 센서(들)(102)로부터 수집된 이미지 데이터일 수 있다. 예를 들어, 일부 센서 픽셀들은 녹색 광만을 캡쳐하는 반면, 다른 픽셀들은 베이어 패턴의 픽셀들에서 적색 또는 청색 광을 캡쳐한다. 이러한 방식으로, 베이어 원시 이미지 포맷(또는 이미지 센서의 컬러 필터 어레이에 의해 캡쳐된 다른 원시 이미지 포맷)의 이미지 데이터는 (모든 컬러들 대신) 특정한 컬러에 특정한 값들을 픽셀 데이터에 제공하다.
따라서, 원시 프로세싱 스테이지(306)와 같은 전단 픽셀 데이터 프로세싱 회로는, 센서 선형화, 블랙 레벨 보상, 고정 패턴 노이즈 감소, 결함 픽셀 보정, 원시 노이즈 필터링, 렌즈 음영 보정, 화이트 밸런스 이득, 및 하이라이트 복원을 포함하지만 이에 제한되지는 않는 다양한 동작들을 적용하여, 원시 포맷(예를 들어, 베이어 원시 포맷과 같은 이미지 센서 픽셀 데이터 포맷)의 이미지 데이터를 프로세싱할 수 있다. 일부 실시예들에서, 센서 선형화 유닛은, 다른 프로세싱을 위해 (예를 들어, 이미지 센서(들)(102) 중 하나일 수 있는 높은 다이나믹 레인지(HDR) 이미지 센서로부터 수집된 컴팬딩 포맷(companding format)으로부터 이미지 데이터를 변환하기 위해) 비-선형 이미지 데이터를 선형 공간에 맵핑할 수 있다. 일부 실시예들에서, 블랙 레벨 보상은, (센서 선형화 이후 발생할 수 있는) 픽셀 이미지 데이터 상의 각각의 컬러 컴포넌트(예를 들어, Gr, R, B, Gb)에 대해 독립적으로 디지털 이득, 오프셋 및 클립을 제공하도록 수행될 수 있다. 일부 실시예들에서, 고정 패턴 노이즈 감소는, 일부 실시예들에서, 입력 이미지로부터 어두운 프레임을 감산하고 상이한 이득들을 픽셀들에 곱함으로써 오프셋 고정 패턴 노이즈 및 이득 고정 패턴 노이즈를 제거하도록 수행될 수 있다. 다양한 실시예들에서, 결함 픽셀 보정은 결함 픽셀들을 결정 또는 식별할 수 있으며, 결함 픽셀 값들을 교체할 수 있다. 다양한 실시예들에서, 원시 노이즈 필터링은, 밝기에서 유사한 이웃 픽셀들을 평균함으로써 이미지 데이터의 노이즈를 감소시킬 수 있다. 다양한 실시예들에서, 하이라이트 복원은 다른 채널들로부터 클리핑된(또는 거의 클리핑된) 그 픽셀들에 대한 픽셀 값들을 추정할 수 있다. 렌즈 음영 보정은 렌즈 광학 중심으로부터의 거리에 대략적으로 비례하는 강도의 저하를 보상하기 위해 픽셀 당 이득을 적용할 수 있다. 화이트 밸런스 이득들은 모든 컬러 컴포넌트들(예를 들어, 베이어 포맷의 Gr, R, B, Gb)에 대해 독립적으로 화이트 밸런스, 오프셋 및 클립에 대한 디지털 이득들을 제공할 수 있다. 위에서 제공된 다양한 예들 및 설명들은 원시 프로세싱 스테이지(306)와 같은 전단 픽셀 데이터 프로세싱 회로의 다양한 기법들, 컴포넌트들, 또는 포맷들에 대해 제한하려는 것으로 의도되는 것이 아니라 대신 단지 예들로서 제공됨을 유의한다. 다양한 컴포넌트들, 유닛들 또는 모듈들은 다수의 상이한 파이프라인 프로세싱 스테이지들로 분리될 수 있다. 또한, 일부 실시예들에서, 컴포넌트들, 유닛들, 또는 모듈들의 다양한 컴포넌트들, 유닛들, 또는 모듈들은 원시 이미지 데이터(예를 들어, 이미지 센서 픽셀 데이터 포맷의 픽셀 데이터)를 풀-컬러 도메인으로 변환할 수 있으며, 따라서, 원시 프로세싱 스테이지(306)는 다양한 부분들에서, 원시 이미지 데이터에 부가하여 또는 그 대신에 풀-컬러 도메인에서 이미지 데이터를 프로세싱할 수 있음을 유의한다. 예를 들어, 단순한 디모자이크(demosaic) 유닛은 원시 노이즈 필터링으로부터 데이터를 수신하며, 이미지 데이터를 원시 이미지 포맷으로 다시 변환하기 전에, 렌즈 음영 보정, 화이트 밸런스 이득, 또는 하이라이트 복원을 수행하기 위해 원시 이미지 데이터에 대한 풀-컬러 도메인을 보간(interpolate)할 수 있다.
다양한 실시예들에서, 이미지 신호 프로세서(106)는 리샘플 프로세싱 스테이지(308)를 구현할 수 있다. 리샘플 프로세싱 스테이지(308)는, 원시 프로세싱 스테이지(306)와 같은 전단 픽셀 데이터 프로세싱 회로로부터 수신된 이미지 데이터를 변환, 리샘플링, 및/또는 스케일링하기 위해 다양한 동작들을 수행할 수 있으며, 후단 파이프라인 스테이지들(340)과 같은 후단 픽셀 데이터 프로세싱 회로(들)에서 구현될 수 있는 바와 같이, 감소된 레이트에 따라 출력 이미지 데이터로서 제공할 수 있다. 일부 실시예들에서, 리샘플 프로세싱 스테이지의 부분들 중 일부 또는 전부는 원시 프로세싱 스테이지의 일부로서 구현될 수 있으며, 따라서, 이전의 설명은 이미지 데이터에서의 키포인트들의 검출을 구현할 수 있는 이미지 프로세싱 파이프라인의 예시적인 파이프라인 스테이지들로서 제공됨을 유의한다.
다양한 실시예들에서, 이미지 신호 프로세서(106)는 머신 비전 스테이지(318)와 같은 전단 픽셀 데이터 프로세싱 회로를 구현할 수 있다. 머신 비전 스테이지(318)는 도 4에 대해 아래에서 더 상세히 논의되는 바와 같이, 센서 인터페이스(들)(302)(예를 들어, 이미지 센서 픽셀 데이터 포맷의 원시 픽셀 데이터), 메모리(예를 들어, 시스템 메모리(130)), 및/또는 후단 출력 회로(예를 들어, 출력 리스케일(314))를 포함하는 다수의 소스들로부터 수신된 이미지 데이터에서 키포인트들을 검출하기 위해 다양한 동작들을 수행할 수 있다. 다양한 실시예들에서, 머신 비전 스테이지(318)는 또한, ISP(106)의 다른 전단 파이프라인 스테이지들 또는 ISP(106)의 다양한 후단 파이프라인 스테이지들로부터 수신된 이미지 데이터에서 키포인트들을 검출하도록 구성될 수 있다. 일 실시예에서, 머신 비전 스테이지(318)는 후단 파이프라인 스테이지들(340)에서 구현될 수 있는 바와 같이, 감소된 레이트에 따라 출력 이미지 데이터를 제공할 수 있다.
다양한 실시예들에서, 이미지 신호 프로세서(106)는 전단 스테이지들(330)에서 이미지 데이터를 프로세싱하기 위한 초기 레이트보다 낮은 레이트(예를 들어, 4ppc 초기 레이트 > 3, 2 또는 1ppc의 감소된 레이트)로 이미지 데이터를 프로세싱하기 위해 후단 파이프라인 스테이지들(340)과 같은 하나 이상의 후단 픽셀 데이터 프로세싱 회로(들)를 구현할 수 있다. 적어도 일부 실시예들에서, 후단 파이프라인 스테이지들(340)은, 리샘플 프로세싱 스테이지(308) 또는 후단 인터페이스(342)가 후단 스테이지들(340)에 제공할 수 있는 특정한 풀-컬러 포맷(예를 들어, YCbCr 4:4:4 또는 RGB)에 따라 이미지 데이터를 프로세싱할 수 있다. 일부 실시예들에서, 후단 스테이지들(340)의 다양한 스테이지들은 이미지 데이터를 특정한 풀-컬러 포맷으로 변환하도록 구성될 수 있으며(또는 프로세싱을 위해 상이한 풀-컬러 포맷들을 이용할 수 있으며), 따라서 이전의 예는 제한하려는 것으로 의도되지 않음을 유의한다.
일부 실시예들에서, 이미지 신호 프로세서(106)는 노이즈 프로세싱 스테이지(310)를 구현할 수 있다. 다양한 실시예들에서, 노이즈 프로세싱 스테이지(310)는, 감마/디-감마 맵핑, 컬러 공간 변환, 시간 필터링, 노이즈 필터링, 루마 샤프닝, 및 채도 노이즈 감소와 같은 다양한 동작들, 기능들, 또는 태스크들을 상이한 순서들로 수행하기 위해 다양한 모듈들, 유닛들, 또는 컴포넌트들을 구현할 수 있다. 컬러 공간 변환은 이미지 데이터를 다른 컬러 포맷 또는 공간(예를 들어, RGB 내지 YCbCr)으로 변환할 수 있다. 감마 맵핑은, 흑백 변환(black and white conversion), 세피아 톤 변환, 네거티브 변환, 또는 노출과다 반전 변환(solarize conversion)을 포함하지만 이에 제한되지는 않는 상이한 이미지 효과들을 적용하기 위해 픽셀 데이터의 특정한 컬러 채널들(예를 들어, Y, Cb, 및 Cr 채널들)에 대한 비-선형 맵핑 기능들을 제공할 수 있다. 다양한 실시예들에서, 시간 필터링은 이전에 필터링된 이미지 프레임으로부터의 픽셀 값들에 기초하여 이미지 신호 노이즈를 필터링하도록 수행될 수 있다. (본 명세서에서, 기준 이미지 프레임으로 지칭될 수 있는) 이전에 필터링된 이미지 프레임으로부터의 픽셀 값들은, 픽셀 값들의 최상의 추정치를 얻기 위해 현재의 이미지 프레임의 픽셀 값들과 결합될 수 있다. 예를 들어, 시간 필터는, 현재의 이미지 프레임과 기준 이미지 프레임이 유사할 경우, 현재의 이미지 프레임의 픽셀 값들과 기준 이미지 프레임의 대응하는 픽셀들을 평균할 수 있다. 적어도 일부 실시예들에서, 시간 필터링은 개별 컬러 채널 값들에 대해 수행될 수 있다. 예를 들어, 시간 필터는, (Cb 또는 Cr과 같은 다른 채널들에 대해서는 필터링하지 않으면서) 기준 프레임의 Y 컬러 채널 값들로 (YCbCr 포맷의 이미지 데이터로부터의) Y 컬러 채널 값들을 필터링할 수 있다.
공간 노이즈 필터링과 같은 다른 노이즈 필터링이 수행될 수 있다. 적어도 일부 실시예들에서, 루마 샤프닝 및 채도 억제는 동시 또는 거의 동시 방식으로 공간 노이즈 필터링의 일부로서 수행될 수 있다. 일부 실시예들에서, 루마 샤프닝은 픽셀 데이터의 루마 값들을 샤프닝할 수 있다. 일부 실시예들에서, 채도 억제는 채도를 회색(즉, 컬러 없음)으로 감쇠시킬 수 있다. 일부 실시예들에서, 노이즈 필터링의 적극성(aggressiveness)은 이미지의 상이한 구역들에 대해 상이하게 결정될 수 있다. 공간 노이즈 필터링은 위에서 논의된 바와 같이, 시간 필터링을 구현하는 시간 루프의 일부로서 포함될 수 있다. 예를 들어, 이전의 이미지 프레임은, 프로세싱될 다음의 이미지 프레임에 대한 기준 프레임으로서 저장되기 전에 시간 필터 및 공간 노이즈 필터에 의해 프로세싱될 수 있다. 다른 실시예들에서, 공간 노이즈 필터링은 시간 필터링에 대한 시간 루프의 일부로서 포함되지 않을 수 있다(예를 들어, 공간 노이즈 필터는, 이미지 프레임이 기준 이미지 프레임으로서 저장된 (그리고 그에 따라, 공간적으로 필터링된 기준 프레임이 아님) 이후 그 이미지 프레임에 적용될 수 있음). 위에서 제공된 다양한 예들 및 설명들은 노이즈 프로세싱 스테이지(310)의 일부로서 구현되는 다양한 기법들 또는 컴포넌트들에 대해 제한하려는 것으로 의도되는 것이 아니라 대신 단지 예들로서 제공됨을 유의한다.
일부 실시예들에서, 이미지 신호 프로세서(106)는 컬러 프로세싱 스테이지(312)를 구현할 수 있다. 다양한 실시예들에서, 컬러 프로세싱 스테이지(312)는, 로컬 톤 맵핑, 이득/오프셋/클립, 컬러 보정, 3차원 컬러 룩업(lookup), 감마 변환, 및 컬러 공간 변환과 같은 다양한 동작들, 기능들, 또는 태스크들을 상이한 순서들로 수행하기 위해 다양한 모듈들, 유닛들, 또는 컴포넌트들을 구현할 수 있다. 일부 실시예들에서, 로컬 톤 맵핑은, 이미지를 렌더링할 경우 더 많은 제어를 제공하기 위해, 공간적으로 변하는 로컬 톤 커브들을 적용할 수 있다. 예를 들어, (중앙 제어 모듈(320)에 의해 프로그래밍될 수 있는) 톤 커브들의 2차원 그리드는 부드럽게 변하는 톤 커브들이 이미지에 걸쳐 생성되도록 이중선형으로 보간될 수 있다. 일부 실시예들에서, 로컬 톤 맵핑은, 예를 들어, 이미지에서 하이라이트들을 어둡게 하고 음영들을 밝게 하기 위해 사용될 수 있는 공간적으로 변하고 강도가 변하는 컬러 보정 매트릭스들을 적용할 수 있다. 일부 실시예들에서, 디지털 이득, 오프셋 및 클립은 이미지 데이터의 각각의 컬러 채널 또는 컴포넌트에 대해 제공될 수 있다. 일부 실시예들에서, 컬러 보정은, 컬러 보정 변환 매트릭스를 이미지 데이터에 적용하여 구현될 수 있다. 일부 실시예들에서, 3D 컬러 룩업은, 고급 톤 맵핑, 컬러 공간 변환들, 및 다른 컬러 변환들을 수행하기 위해 컬러 컴포넌트 출력 값들(예를 들어, R, G, B)의 3차원 어레이를 이용할 수 있다. 감마 변환은, 감마 보정, 톤 맵핑, 또는 히스토그램 매칭을 수행하기 위해 입력 이미지 프레임 데이터 값들을 출력 데이터 값들에 맵핑하여 수행될 수 있다. 컬러 공간 변환은 이미지 데이터를 하나의 컬러 공간으로부터 다른 컬러 공간(예를 들어, RGB 내지 YCbCr)으로 변환하도록 구현될 수 있다. 흑백 변환, 세피아 톤 변환, 네거티브 변환, 또는 노출과다 반전 변환을 포함하는 다른 특수한 이미지 효과들을 수행하기 위해 컬러 프로세싱 스테이지(312)의 일부로서 다른 프로세싱 기법들이 또한 수행될 수 있다.
다양한 실시예들에서, 이미지 신호 프로세서(106)는 출력 리스케일 모듈(314)과 같은 후단 출력 회로를 구현할 수 있다. 출력 리스케일링 모듈(314)은, ISP(160)가 이미지 데이터를 프로세싱할 때, 즉시 왜곡을 리샘플링, 변환 및 보정할 수 있다. 일부 실시예들에서, 출력 리스케일 모듈(314)은 각각의 픽셀에 대한 분수(fractional) 입력 좌표를 계산할 수 있으며, 다위상 리샘플링 필터를 통해 출력 픽셀을 보간하기 위해 이러한 분수 좌표를 사용한다. (예를 들어, 간단한 수평 및 수직 스케일링 변환을 통해) 이미지를 리사이징 또는 크로핑하는 것, (예를 들어, 비-분리가능 매트릭스 변환들을 통해) 이미지를 회전 및 전단(shear)하는 것, (예를 들어, 롤링 셔터로 인한) 이미지 데이터 캡쳐 동안 이미지 센서의 변화들을 처리하기 위해 스트립들에서 조각단위로 적용된 (예를 들어, 부가적인 깊이 변환을 통한) 원근 와핑(perspective warping) 및 픽셀당 원근 분할들, 및 (예를 들어, 보간된 방사상 이득 테이블을 인덱싱하기 위해 광학 중심으로부터의 방사상 거리를 계산하고, 방사상 렌즈 왜곡을 처리하기 위해 방사상 섭동을 좌표에 적용하는 것을 통한) 기하학적 왜곡 보정과 같은 출력 좌표의 다양한 가능한 변환들로부터 분수 입력 좌표가 생성될 수 있다. 출력 리스케일(314)은 도 1 및 도 2에 대해 위에서 논의된 바와 같이, 출력 인터페이스(316)를 통해 시스템(100)의 다양한 다른 컴포넌트들에 이미지 데이터를 제공할 수 있다.
일 실시예에서, 이미지 신호 프로세서(106)는 "전력 절약"또는 "저전력" 모드를 포함하도록 구성될 수 있으며, 그 모드에서, ISP 파이프라인의 다수의 스테이지들은 일시적으로 파워 다운(power down)(즉, 비활성 상태로 진입하거나 또는 턴 오프)될 수 있는 반면, 적어도 이미지 센서(들)(102) 및 전단 픽셀 데이터 프로세싱 회로(예를 들어, 머신 비전 스테이지(318))를 포함하는 다른 스테이지들은 파워 온(power on)되어 활성으로 유지될 수 있다. 머신 비전 스테이지(318), 및 때로는 또한 시스템 메모리(130)의 프로그램 명령어들(136)은, 이미지 센서 인터페이스 모듈들을 통해 이미지 센서(들)(102)로부터 수신된 이미지 데이터를 실시간으로 모니터링하며, 하나 이상의 키포인트(들)이 검출되는 것, 검출된 키포인트들의 수의 변화, 키포인트들이 검출된 시야의 위치 또는 구역의 변화, 키포인트가 검출되었던 구역 근처의 이미지 데이터의 변화, 및/또는 키포인트들이 검출되는 레이트의 변화에 응답하여, 이미지 신호 프로세서(106)의 다른 스테이지들을 "웨이크 업"할지(즉, 파워 업, 턴 온, 또는 활성 상태로 진입하도록 다른 스테이지들을 트리거링할지) 여부를 결정할 수 있다. 유사하게, 키포인트 검출 모듈은 검출된 키포인트들의 프로세싱에 기초하여(즉, 포스트 프로세싱에 기초하여), 다른 전단 및 후단 회로들이 저전력 모드로 유지되어야 하는 상황에 프로세싱된 키포인트들이 대응한다고 결정할 수 있다. 예를 들어, 카메라 및 ISP가 장착된 모바일 폰이 테이블 상에 놓여있다면, 이미지 센서(들)는, (카메라가 아래로 향한다면) 어떠한 데이터도 레코딩하지 않거나 또는 (카메라가 위로 향한다면) 정상 이미지를 레코딩할 수 있는 반면, 디스플레이 및 다양한 전단 및 후단 ISP 모듈들과 같은 폰의 다른 모듈들은 일시적으로 비활성 상태로 파워 다운될 수 있다. 미리-정의된 시간 기간에 걸친 실시간 키포인트 검출들 및/또는 미리-정의된 시간 기간에 걸친 일정한 키포인트 데이터의 부족에 응답하여 검출될 수 있는 이러한 정상 상태는 "슬립" 상태로 해석될 수 있다. 이어서 사용자가 모바일 폰을 픽업(pick up)하면, 이미지 센서(들)는 급작스럽게 상이한 장면을 향해 배향되고, 그에 의해, 새로운 키포인트 데이터를 검출할 수 있다. 유사하게, 키포인트 검출 모듈은, (예를 들어, 관심있는 어떤 것이 디바이스의 시야 상에 또는 그 내에 발생한다면) 검출된 키포인트들의 프로세싱에 기초하여, 전단 및 후단 회로들이 활성 상태로 진입해야 한다는 표시에 프로세싱된 키포인트들이 대응한다고 결정할 수 있다. 머신 비전 스테이지(318)에 의해 검출된 키포인트들의 수, 위치 및/또는 크기의 실시간 변화들에 의해 검출될 수 있는 이러한 급작스러운 사용자 상호작용은 웨이크-업 신호로서 해석될 수 있다. 따라서, 전력 절약 모드(즉, 저전력 모드)는, 사용자가 모바일 디바이스를 활성적으로 핸들링하고 있지 않는 경우 하나 이상의 ISP 파이프라인 스테이지들을 일시적으로 턴 오프시킴으로써 그리고/또는 사용자가 모바일 디바이스를 활성적으로 핸들링하는 경우 비활성 ISP 모듈들 및/또는 폰 디스플레이를 턴 온시킴으로써, 이미지 신호 프로세서(106)가 전력을 보존할 수 있게 한다.
또한, 다양한 실시예들에서, 유닛들(302-342)의 기능은 도 3에 도시된 이미지 프로세싱 파이프라인에서 이들 기능 유닛들의 순서에 의해 암시된 순서와는 상이한 순서로 수행될 수 있거나, 또는 도 3에 도시된 것들과는 상이한 기능 유닛들에 의해 수행될 수 있음을 유의한다. 또한, 도 3(또는 후속 도 4 내지 도 9)에 설명된 다양한 컴포넌트들, 유닛들, 프로세스들, 또는 다른 기능들은 하드웨어 또는 소프트웨어의 다양한 조합들로 구현될 수 있다.
위에서 언급된 바와 같이, 다양한 실시예들에서, 상이한 스테이지들은 상이한 레이트들로 이미지 데이터를 프로세싱하도록 구성될 수 있으며, 이를테면, 전단 파이프라인 스테이지들(330)은 초기 레이트로 이미지 데이터를 프로세싱하고, 후단 파이프라인 스테이지들(340)은 감소된 레이트로 이미지 데이터를 프로세싱한다. 다양한 실시예들에서, 머신 비전 스테이지(318)는 초기 데이터 레이트로 원시 프로세싱 스테이지로부터 이미지 데이터를 수신하고, 이미지 데이터를 프로세싱하며, 감소된 이미지 레이트로 출력 이미지 데이터를 제공하도록 구성될 수 있다. 도 4는 일부 실시예들에 따른, 이미지 신호 프로세서(400)의 머신 비전 스테이지(318)를 도시한 로직 블록 다이어그램이다.
다양한 실시예들에서, 머신 비전 스테이지(318)와 같은 전단 픽셀 데이터 프로세싱 회로는, 센서 인터페이스(들)(302)로부터의 원시 이미지 데이터(402), 시스템 메모리(130)로부터의 프로세싱된 이미지 데이터(예를 들어, 적색 녹색 청색(RGB) 또는 휘도 청색-차이 적색-차이 채도(YCbCr)), 또는 후단 모듈(340)로부터의 프로세싱된 출력 데이터(예를 들어, 파이프라인의 후단에서의 출력 회로로부터의 Y 데이터, 또는 풀 컬러 출력 데이터)를 포함하여 다수의 소스들로부터 입력 데이터를 수신할 수 있다. 일 실시예에서, 멀티플렉서(410)는 다수의 입력 소스들로부터 데이터를 수용하며, 다양한 픽셀 포맷들(예를 들어, 원시 픽셀 데이터, RGB 포맷들, YCC 포맷들, 및 단일 채널 Y 입력 데이터)로부터 휘도 채널로 데이터를 변환하도록 구성될 수 있는 프리-프로세싱 모듈(420)에 커플링된 단일 라인으로 데이터를 동적으로 선택하도록 구성될 수 있다. 일 실시예에서, 프리-프로세싱 모듈(420)은 (예를 들어, 데이터를 비닝 다운함으로써) 입력 이미지 데이터의 사이즈를 감소시키기 위해 서브-샘플링 또는 다른 기능들을 수행할 수 있다. 일 실시예에서, 프리-프로세싱 모듈(420)은 또한, 휘도 계산을 위한 하나 이상의 서브-모듈들을 포함할 수 있다. 일부 실시예들에서, 프리-프로세싱 모듈(420)은, 입력 데이터를 서브샘플링 및/또는 비닝하고, 이어서 입력 채널들의 가중된 평균을 통해 휘도 값들을 계산할 수 있다. 일 실시예에서, 프리-프로세싱 모듈(420)은 휘도 이미지 데이터의 글로벌 톤 맵핑 및/또는 감마 보정을 용이하게 하기 위해 룩업 테이블(LUT)을 사용할 수 있다. 따라서, 프리-프로세싱 모듈(420) 및 멀티플렉서(410)는, 머신 비전 스테이지(318)가 다수의 소스들로부터 이미지 데이터를 수신하고 이미지 데이터를 하나 이상의 컬러 채널(들)로 변환할 수 있게 할 수 있으며, 여기서, 특정한 컬러 채널은 동적으로 선택되거나 프로그래밍될 수 있다. 프리-프로세싱 모듈(420)의 (루마 계산 및 다른 기능들을 수행하기 위한) 서브-모듈들의 일 실시예는, 아래에서 상세히 논의되는 도 5에 도시된다.
일 실시예에서, 프리-프로세싱 모듈(예를 들어, 프리-프로세싱 모듈(420))은 입력 이미지 데이터를 휘도 이미지 또는 휘도 채널로 변환한다. 일 실시예에서, 휘도 이미지를 계산하는 것은 다수의 휘도 채널들의 가중된 평균을 포함할 수 있다. 일 실시예에서, 입력 데이터가 YCbCr 데이터 또는 Y 입력 이미지이면, 채널들의 가중된 평균이 스킵될 수 있다. 다른 실시예에서, 키포인트 검출 회로에 대한 입력 이미지의 사이즈의 추가적인 감소를 생성하기 위해 서브-샘플링이 수행될 수 있다. 예를 들어, 2048 픽셀 폭 데이터가 프리-프로세싱 모듈로 입력되면, 프리-프로세싱 모듈 및/또는 서브-샘플링 모듈은 키포인트 검출 회로에 의한 효율적인 프로세싱을 위해 데이터를 512 픽셀들의 폭으로 감소시킬 수 있다.
다양한 실시예들에서, 출력 리스케일(314)과 같은 후단 스케일러 모듈은 동일한 또는 상이한 레이트들로 이미지 데이터의 하나 이상의 출력들을 제공할 수 있다. 예를 들어, 일부 실시예들에서, 후단(340)는, 풀-컬러 도메인에 있고 감소된 레이트로 스케일링된 이미지 데이터를 추가적인 프로세싱을 위해 다른 이미지 신호 프로세서 파이프라인 스테이지들에 제공할 수 있다. 일부 실시예들에서, 풀-컬러 스케일링된 이미지 단일 채널 출력 데이터(434)는 부가적으로 (또는 대안적으로) 미래의 프로세싱 또는 디스플레이를 위해 저장되도록 시스템 메모리(130)에 기입될 수 있다. 일 실시예에서, 머신 비전 스테이지(318)에 의해 수용된 단일 채널 컬러 데이터의 타입은 동적으로 조정가능(즉, 프로그래밍가능)할 수 있다. 일 실시예에서, 멀티플렉서(410) 및 프리-프로세싱 모듈(420)과 같은 머신 비전 스테이지(318)의 전단의 모듈들은 초기 레이트로 데이터를 프로세싱할 수 있는 반면, 키포인트 검출 회로(430)와 같은 머신 비전 스테이지(318)의 후단을 향한 모듈들은 감소된 레이트로 이미지 데이터를 프로세싱할 수 있으며, 그에 의해, 이미지 신호 프로세서 시스템에서 대역폭을 보존한다. 따라서, 멀티플렉서(410) 및 프리-프로세싱 모듈(420)은, 키포인트 검출 회로(430)에 의한 프로세싱을 위해 머신 비전 스테이지(318)가 다수의 입력 소스들(예를 들어, 하나 이상의 이미지 센서들, 메모리, 하나 이상의 후단 파이프라인 스테이지들, 또는 하나 이상의 전단 파이프라인 스테이지들)로부터 입력 데이터를 수용할 수 있게 하는 선행(up-front) 데이터 메세징을 제공할 수 있다. 따라서, 일 실시예에서, 키포인트 검출 회로(430)는, 이미지 센서 인터페이스(들)(302)로부터 원시 데이터(예를 들어, 아직 프로세싱되지 않았거나 또는 그렇지 않으면 메모리에 기입되지 않은 픽셀 데이터)에 대해 동작할 수 있으면서, 또한 ISP(106)의 메모리 및/또는 다른 소스들로부터의 프로세싱된 데이터에 대해 선택적으로 동작하도록 구성되는 머신 비전 스테이지(318)의 서브-모듈일 수 있다.
일 실시예에서, 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)는, 이미지의 활성 구역의 각각의 픽셀들에 대한 (효율성을 위한) 헤시안(Hessian) 매트릭스 값들의 가우시안 미분들의 근사치를 계산하도록 구성되는 하나 이상의 공간 필터 모듈들("박스 필터들"로 종종 지칭됨)을 포함할 수 있다. 일 실시예에서, 키포인트 검출 회로(430)는 헤시안 매트릭스의 요소들에 대한 근사치들을 획득하기 위해 다수의 공간 필터들(예를 들어, 3개의 9x9 공간 필터들)을 사용할 수 있으며, 여기서 필터 출력 값들은 Dxx, Dyy, 및 Dxy 일 수 있다. 다양한 실시예들에서, 박스 필터 출력 데이터는 키포인트 검출 회로(430)의 로컬 메모리(또는 시스템 메모리(130))에 저장되고 그리고/또는 입력 이미지 프레임 데이터를 프로세싱하도록 키포인트 검출 회로(430)에 의해 사용되는 조정가능한 응답 맵에 포함될 수 있다. 이어서, 키포인트 검출 회로(430)는, 응답들이 로컬 최대값들인지 여부 및 각각의 로컬 최대값이 제어가능한 키포인트 민감도 임계치 초과인지 여부를 결정할 수 있다.
일 실시예에서, 키포인트 검출 회로(430)는 이미지 데이터에서 하나 이상의 관심 지점들(종종, 키포인트들로 지칭됨)을 식별하기 위해 키포인트 검출 동작을 구현할 수 있다. 일 실시예에서, 키포인트 검출 회로(430)는 하드웨어-기반일 수 있으며, (예를 들어, 이미지의 구역들에 대응하는 그리드의 각각의 영역들에서 다수의 키포인트들을 출력함으로써) 입력 이미지의 구역 당 다수의 키포인트들을 출력하도록 구성될 수 있다. 일 실시예에서, 키포인트 검출 회로(430)는 휘도 계산을 위해 이미지 데이터의 하나의 채널(예를 들어, 동적으로 프로그래밍된 단일 채널) 상에서 선택적으로 동작할 수 있다. 예를 들어, 키포인트 검출 회로(430)는 RGB 데이터의 입력 신호에 대한 R 채널, G 채널, 또는 B 채널 상에서 동작할 수 있다. 유사하게, 키포인트 검출 회로(430)는 YCbCr 데이터의 입력 신호에 대한 Y 채널 상에서 동작할 수 있다.
일 실시예에서, 키포인트 검출 회로는 키포인트 제어 파라미터 저장 구조(440)로부터 하나 이상의 프로그래밍가능한 제어 값들을 수신할 수 있다. 일 실시예에서, 키포인트 제어 파라미터 저장 구조(440)는, 다수의 키포인트 민감도 임계치 값들, 입력 이미지에 대응하는 그리드의 프로그래밍가능한 블록 사이즈들에 대응하는 값들 등과 같은 키포인트 검출 제어 값들을 저장하도록 구성된 펌웨어 및/또는 하나 이상의 레지스터들을 포함할 수 있다. 일부 실시예들에서, CPU(108)는 키포인트 검출 회로(430) 및/또는 프로그램 명령어들(136)로부터의 출력에 응답하여 제어 파라미터 저장 구조(440)의 하나 이상의 셋팅들을 조정하도록 구성될 수 있다. 유사하게, CPU(108)는, ISP 스테이지들 중 하나 이상으로부터의 출력에 기초하여, (머신 비젼 스테이지(318)를 포함하지만 이에 제한되지는 않는) 이미지 프로세싱 파이프라인의 다양한 스테이지들에서 ISP(106)의 상이한 모듈들의 셋팅들을 제어하거나 그렇지 않으면 조정하도록 구성될 수 있다. 일 실시예에서, 키포인트 검출 회로(430)는 프로그램 명령어들(136) 및/또는 제어 파라미터 저장 구조(440)로부터 하나 이상의 명령어들을 수신하도록 구성될 수 있다. 예를 들어, 키포인트 검출 회로(430)는 이미지의 그리드 구역 당 검출된 키포인트들의 수를 출력/리포팅할 수 있으며, 프로그램 명령어들(136)은, 하드웨어 모듈로부터의 리포팅된 키포인트들의 수에 기초하여, 이미지의 하나 이상의 구역들에 대한 동적으로 조정가능한 키포인트 검출 임계치 값을 셋팅 및/또는 조정할 수 있다. 일 실시예에서, 프로그램 명령어들(136) 및/또는 제어 파라미터 저장 구조(440)는, 그리드로 분할된 이미지의 하나 이상의 구역들의 하나 이상의 응답 맵 값(들), 이를테면 키포인트 및/또는 키포인트 크기 스코어들의 설명에 기초하여, 키포인트 민감도 임계치의 프로그래밍가능한 시프트를 제공할 수 있다. 따라서, 머신 비전 스테이지(318)의 키포인트 민감도 임계치는, 이미지의 각각의 구역들의 상대적인 밝기, 어둠, 또는 특징부 형상 타입(들)과 같은 하나 이상의 인자들에 기초하여 이미지의 구역마다 조정가능할 수 있다. 다양한 실시예들에서, 키포인트 검출 회로(430)로부터의 출력 데이터는 시스템 메모리(130)에 저장되거나, 시스템 메모리(130) 내의 상이한 위치에 저장되거나, 그리고/또는 이미지 신호 프로세서(106)의 파이프라인의 다른 스테이지들에 직접 리포팅될 수 있다.
또 다른 실시예에서, 머신 비전 스테이지(318)는, 이미지의 구역 당 허용가능한 키포인트들의 프로그래밍가능한 최대 제한(즉, 수)(예를 들어, 블록 당 하나의 키포인트)을 갖는 출력 모드를 포함하도록 (예를 들어, 제어 파라미터 저장 구조(440)의 셋팅에 기초하여) 구성될 수 있으며, 그에 의해, 이미지의 구역에 대해 과도한 수의 키포인트들이 출력되는 것을 방지함으로써 키포인트 출력 데이터의 공간적 균일성을 개선시킨다. 그러한 실시예는, 아래에서 더 상세히 논의되는 도 8, 도 9a, 및 도 9b에서 도시된다. 예를 들어, 이미지 그리드의 구역 당 단일 최대 키포인트의 일 실시예에서, 머신 비전 스테이지(318), 키포인트 검출 회로(430), 및/또는 프로그램 명령어들(136)은, 조정가능한 키포인트 민감도 임계치 값을 초과하는 가장 높은 강도 스코어(예를 들어, 조정가능한 키포인트 민감도 임계치의 현재의 셋팅을 초과하는 가장 높은 응답 크기 값)를 갖는 단일 키포인트만을 출력하도록 구성될 수 있다. 키포인트 검출 회로(430)가 이미지의 구역에서 어떠한 키포인트들도 검출하지 못한다면 및/또는 이미지의 구역이 조정가능한 키포인트 민감도 임계치의 현재의 셋팅을 초과하는 강도 스코어들을 갖는 어떠한 키포인트들도 포함하지 않으면, 키포인트 검출 회로(430)는 이미지의 그 특정한 구역에 대응하는 제로 키포인트들을 출력할 수 있다.
일 실시예에서, 후단 모듈(340)은 풀-컬러 도메인에서, 변환된 이미지 데이터에 대해 다양한 스케일링, 리샘플링, 또는 다른 이미지 데이터 동작들을 수행할 수 있다. 적어도 일부 실시예들에서, 후단 모듈(340)은 상이한 타입들의 스케일링된, 리샘플링된, 또는 그렇지 않으면 수정된 이미지 데이터 출력을 제공하는 다수의 모드들로 동작할 수 있다. 예를 들어, 후단 모듈(340)은 이미지 데이터를 스케일링하지 않으면서, (예를 들어, 디모자이크 유닛에 의해 도입되었을 수 있는 휘도 에지들 근처의 에일리어싱 아티팩트들을 제거하기 위해 채도 에일리어싱 아티팩트들을 억제하거나 또는 디모자이크 유닛에 의해 도입된 도트 아티팩트들을 제거하는 것과 같이) 이미지 데이터 내의 아티팩트들을 보정 또는 억제하는 모드를 제공할 수 있다. 일부 실시예들에서, 후단 모듈(340)에 대한 다른 모드는 (이미지 데이터 내의 아티팩트들을 보정 또는 억제하는 것에 부가하여, 또는 그 대신) 이미지 다운스케일링 및 리샘플링을 수행할 수 있다.
도 4는 머신 비전 스테이지(318)의 단지 일 예로서 제공됨을 유의한다. 도시된 컴포넌트들(뿐만 아니라 도시되지 않은 컴포넌트들)의 상이한 조합들은, 원시 이미지 데이터로부터 풀-컬러 도메인으로의 변환을 수행하거나 이미지 데이터를 스케일링하는데 사용될 수 있다. 따라서, 도 4의 컴포넌트들 및 그들 각각의 레이아웃 또는 순서화는 머신 비전 스테이지(318)에 의해 사용될 수 있는 다양한 다른 조합들로 제한하려는 것으로 의도되지 않는다.
도 5는 일부 실시예들에 따른, 이미지 신호 프로세서의 프리-프로세싱 모듈(420)을 도시한 로직 블록 다이어그램이다. 일 실시예에서, 프리-프로세싱 모듈(420)은 원시/RGB/YCC/Y 데이터(505)와 같은 다수의 타입들의 데이터를 수신하도록 구성된 서브-샘플/빈 모듈(510)을 포함할 수 있다. 따라서, 원시/RGB/YCC/Y 데이터(505)에 대해 도시된 단일 화살표는 멀티플렉서(410)를 포함하는 다른 모듈들에 의해 제공된 입력에 부분적으로 기초하여 상이한 시간들에서 상이한 타입들의 데이터에 대응할 수 있다. 다양한 실시예들에서, 원시 데이터는 하나 이상의 이미지 센서 인터페이스들(예를 들어, 이미지 센서(들)(102)의 인터페이스들)로부터의 직접적인 베이어 원시 이미지 데이터, 시스템 메모리(130)로부터의 베이어 원시 이미지 데이터, 디지털 네거티브(DNG) 원시 포맷의 이미지 데이터, 또는 다른 컬러 필터 타입들에 대응하는 원시 이미지 데이터를 포함할 수 있다. 일 실시예에서, 서브-샘플/빈 모듈(510)에 의해 수행되는 프로세싱은 원시/RGB/YCC/Y 데이터(505)에서 수신된 픽셀 데이터의 포맷에 의존할 수 있다. 예를 들어, 원시/RGB/YCC/Y 데이터(505)가 베이어 원시 이미지 데이터에 대응하면, 서브-샘플/빈 모듈(510)은, 수평으로 2배 그리고 수직으로 2배 만큼 입력 픽셀 데이터를 서브-샘플링할 수 있다. 따라서, 베이어 원시 프로세싱 단계는, 이미지 센서 인터페이스로부터 수신된 입력 픽셀 데이터에 대해 클록 사이클 당 2개의 픽셀들을 핸들링하도록 구성될 수 있다. 일 실시예에서, 원시/RGB/YCC/Y 데이터(505)가 단일 휘도 채널 또는 YCC 이미지에 대응하면, 서브-샘플링 또는 비닝 단계는 우회(즉, 스킵)되거나 또는 선택적으로 수행될 수 있다.
일 실시예에서, 서브-샘플/빈 모듈(510)은 RGB/YCC/Y 데이터(515)와 같은 출력 데이터를 생성하고, 출력 데이터를 루마 계산 모듈(520)에 제공할 수 있다. 일 실시예에서, 루마 계산 모듈(520)은 컬러 필터 기반 이미지 데이터의 다수의 채널들의 가중된 평균을 수행하도록 구성될 수 있다. 예를 들어, 루마 계산 모듈(520)은 휘도 이미지를 계산하기 위해 베이어 이미지 데이터의 3개의 채널들(즉, R, G, 및 B 채널 데이터)의 가중된 평균을 계산할 수 있다. 일 실시예에서, RGB/YCC/Y 데이터(515)가 YCC 또는 Y 입력 이미지 프레임 데이터에 대응하면, 휘도 이미지 계산 단계는 우회(즉, 스킵)될 수 있다. 다시 말하면, 휘도 이미지 계산 단계는 프로그래밍가능할 수 있으며, 휘도 채널 포맷에 대응하는 입력 데이터에 대해 우회될 수 있다. 따라서, 도 5에 도시된 실시예는, 프리-프로세싱 모듈(420)의 단지 하나의 가능한 예이다.
일 실시예에서, 루마 계산 모듈(520)은 16비트 포맷의 Y 데이터(525)와 같은 출력 데이터를 제2 서브-샘플링 모듈(530)에 제공할 수 있으며, 제2 서브 샘플링 모듈(530)은 입력 이미지 프레임 데이터의 사이즈의 선택적인 추가의 감소를 수행하도록 구성될 수 있다. 다양한 실시예들에서, 서브-샘플링 모듈(530)은 프로그래밍가능한 제어 레지스터, 시스템 메모리(130), 또는 중앙 제어(320)로부터 수신된 제어 값들에 기초하여, Y 데이터(525)의 모든 1, 2, 4, 또는 8개의 픽셀들을 수평 및 수직 둘 모두로 샘플링할 수 있다. 이어서, 서브-샘플링 모듈(530)은 추가적인 프로세싱 및 8비트 데이터로의 변환을 위해 16비트 포맷의 Y 데이터(535)를 룩업 테이블(540)에 제공할 수 있다.
일 실시예에서, 프리-프로세싱 모듈(420)은, Y 데이터(535)와 같은 휘도 이미지 데이터에 대한 글로벌 톤 맵핑 및/또는 감마 보정의 기능들을 수행하도록 구성될 수 있는 룩업 테이블(540)을 포함할 수 있다. 다양한 실시예들에서, 룩업 테이블(540)은 하드웨어, 펌웨어, 또는 소프트웨어로 구현될 수 있고, 그리고/또는 룩업 테이블(540)의 요소들은 시스템 메모리(130)에 저장될 수 있다. 일 실시예에서, 룩업 테이블(540)은, 각각의 입력 레벨들에 대한 출력 레벨을 표현하는 8비트 값들의 65개의 엔트리들을 갖는 1차원(1D) 룩업 테이블을 포함할 수 있으며, 그에 의해, 룩업 테이블(540)이 감마 보정 동안 출력 값들을 선형으로 보간할 수 있게 한다. 따라서, 룩업 테이블(540)은 Ygam 데이터(545)와 같은 출력 데이터를 생성할 수 있다. 다양한 실시예들에서, 감마 보정 단계는 우회될 수 있으며, 이 경우, 입력 데이터(예를 들어, Y 데이터(535))의 8개의 최상위 비트(MSB)들은 키포인트 검출 회로(430)에 의한 추가적인 프로세싱을 위해 8비트 출력 데이터로서 Ygam 데이터(545) 위로 복사될 수 있다. 따라서, 일부 실시예들에서, 룩업 테이블(540)은 16비트 입력 데이터를 수신하고, 키포인트 검출 회로(430)에 의한 추가적인 프로세싱을 위해 8비트 출력 데이터를 제공하도록 구성될 수 있다.
일 실시예에서, 키포인트는 조정가능한 키포인트 민감도 임계치를 초과하는 로컬 최대 크기(즉, 강도) 값을 포함할 수 있다. 일 실시예에서, 키포인트 검출 회로는, 제1 이미지 내의 오브젝트 식별 및/또는 그 오브젝트의, 동일한 오브젝트를 포함하는 후속 이미지들로의 매칭을 용이하게 하는 이미지 내에서 하나 이상의 관심 위치들(예를 들어, 코너들 또는 접합부들)을 식별할 수 있다. 일 실시예에서, 키포인트 검출 동작은, 헤시안 매트릭스의 요소들의 근사치들(예를 들어, Dxx, Dyy, Dxy 값들)을 획득하기 위해 공간 필터들에 대한 응답을 계산하는 것, 응답 메트릭으로서 하나 이상의 픽셀들에서 헤시안의 행렬식(determinant)에 대한 근사치를 계산하는 것, 각각의 개별 로컬 최대 크기가 조정가능한 키포인트 민감도 임계치를 초과하는지 여부를 결정하는 것, 응답들이 실제로 로컬 최대값들인지 여부를 결정하는 것, 및 키포인트 출력 데이터를 메모리에 저장하기 위해 (예를 들어, 직접 메모리 액세스(DMA) 모듈을 통해) 메모리 모듈과 통신하는 것을 포함할 수 있다. 다양한 실시예들에서, 키포인트 출력 데이터는, 키포인트의 설명, 키포인트의 직교(X, Y) 좌표들, 조정가능한 키포인트 민감도 임계치를 초과하는 각각의 개별 로컬 최대 크기(즉, 강도) 값의 응답 크기(즉, 강도), 키포인트의 부호 비트 값(즉, 극성), 및/또는 하나 이상의 이미지 에지 스코어들의 설명(예를 들어, 수평/수직 에지 데이터)을 포함할 수 있다. 일 실시예에서, 부호 비트(극성) 값은, 키포인트 검출 회로(430)가 입력 이미지 프레임의 픽셀 데이터에서 밝음-어두움 및/또는 어두움-밝음 전환들을 검출할 수 있게 하도록 구성된 데이터를 포함할 수 있다. 일 실시예에서, 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)는 키포인트 픽셀 위치들, 수평 에지 데이터, 및/또는 수직 에지 데이터를 검출하도록 선택적으로 구성되도록 프로그래밍될 수 있다.
도 1 내지 도 5는, 이미지 프로세싱 파이프라인에서 이미지 데이터에서의 키포인트들의 검출을 구현할 수 있는 이미지 프로세싱 파이프라인, 이미지 신호 프로세서, 및 시스템의 일 예를 제공한다. 그러나, 이미지 프로세싱 파이프라인 및 이미지 신호 프로세서를 구현하는 많은 다른 타입들 또는 구성들의 시스템들 또는 디바이스들이 이미지 데이터에 대한 멀티-레이트 프로세싱을 수행할 수 있다. 도 6은 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 다양한 방법들 및 기법들을 도시한 고레벨 흐름도이다. 위에서 설명된 다양한 컴포넌트들은 (아래의 도 7, 도 8, 및 도 9a 내지 도 9b에 대해 설명된 기법들에 부가하여) 이들 기법들 뿐만 아니라 다양한 다른 이미지 프로세싱 파이프라인들 및 이미지 신호 프로세서들을 구현할 수 있다.
610에서 표시된 바와 같이, 이미지 센서 인터페이스(예를 들어, 센서 인터페이스(들)(302))는 이미지 센서(예를 들어, 이미지 센서(들)(102))로부터 원시 픽셀 데이터를 수신할 수 있다. 블록(620)에 도시된 바와 같이, 원시 프로세싱 스테이지(306)와 같은 전단 픽셀 데이터 프로세싱 회로는 이미지 센서 픽셀 데이터 포맷으로 이미지 프레임에 대한 픽셀 데이터를 수신할 수 있다. 블록(630)에 도시된 바와 같이, 전단 픽셀 데이터 프로세싱 회로는 이미지 센서 픽셀 데이터 포맷의 픽셀 데이터를 상이한 컬러 공간 포맷으로 변환할 수 있다.
블록(640)에서 표시된 바와 같이, 노이즈 프로세싱 스테이지(310) 또는 컬러 프로세싱 스테이지(312)와 같은 후단 픽셀 데이터 프로세싱 회로는 전단 픽셀 데이터 프로세싱 회로로부터의 픽셀 데이터에 대해 하나 이상의 노이즈 필터링 또는 컬러 프로세싱 동작들을 수행할 수 있다. 블록(650)에 도시된 바와 같이, 출력 리스케일(314)과 같은 출력 회로는 후단 픽셀 데이터 프로세싱 회로로부터 픽셀 데이터를 수신하고, 이미지 프레임에 대한 픽셀 데이터를 시스템 메모리(130)와 같은 시스템 메모리로 출력할 수 있다.
블록(660)에서 표시된 바와 같이, 키포인트 검출 회로(430) 또는 머신 비전 스테이지(318)와 같은 키포인트 검출 회로는, 센서 인터페이스(들)(302)로부터 이미지 센서 픽셀 데이터 포맷으로 픽셀 데이터를 수신하거나, 또는 전단 픽셀 데이터 프로세싱 회로 또는 후단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터를 수신할 수 있다. 일 실시예에서, 멀티플렉서 모듈(예를 들어, 멀티플렉서(410))은 다수의 입력들 중 하나로부터 입력 이미지 데이터를 수신할 수 있다. 다수의 입력들은, 이미지 센서 모듈(예를 들어, 센서 인터페이스(들)(302))로부터 원시 픽셀 데이터, 메모리 모듈(예를 들어, 시스템 메모리(130))로부터 이미지 데이터, 후단 출력 회로(예를 들어, 출력 리스케일(314) 또는 후단 모듈(340))로부터 단일 채널 및/또는 풀 컬러 출력 데이터, 또는 ISP(106)의 하나 이상의 전단 파이프라인 스테이지들 및/또는 후단 파이프라인 스테이지들로부터 컬러 공간 포맷 데이터를 포함할 수 있다. 일 실시예에서, 이미지 센서로부터 수집된 원시 픽셀 데이터의 스트림은 이미지 신호 프로세서(ISP)에서 수신될 수 있다. 원시 픽셀 데이터는, 그것이 이미지 센서에서 수집될 때 스트림 방식으로 캡쳐 및 프로세싱될 수 있다. 일 실시예에서, 위에서 논의된 바와 같이, 원시 이미지 픽셀 데이터는 다수의 컬러 컴포넌트들 또는 채널들이 개별 픽셀에 포함되지 않도록 포맷팅될 수 있다. 원시 이미지 데이터의 일 예는, 이미지 센서의 구성에 의존하는 상이한 컬러들, 즉 녹색, 적색, 및 청색의 광을 수집하기 위한 픽셀 값들의 상이한 행들을 포함하는 베이어 이미지 포맷(많은 변형들이 존재할 수 있음)이다. 일부 실시예들에서, 이러한 픽셀 값들(예를 들어, 녹색 값들, 적색 값들, 또는 청색 값들)은 래스터 순서로 수집되어 이미지 신호 프로세서에 제공될 수 있다.
블록(670)에서 표시된 바와 같이, 키포인트 검출 회로는 이미지 프레임에서 하나 이상의 키포인트들을 검출하기 위해, 수신된 픽셀 데이터에 대해 키포인트 검출 동작을 수행할 수 있다. 블록(680)에 도시된 바와 같이, 키포인트 검출 회로는 하나 이상의 키포인트들의 설명을 시스템 메모리로 출력할 수 있다.
일 실시예에서, 이미지는, 그리드의 각각의 개별 블록이 조정가능한 키포인트 민감도 임계치에 기초한 하나 이상의 키포인트들을 가질 수 있도록 다수의 구역들을 갖는 그리드(예를 들어, 아래에서 논의되는 도 7의 이미지 프레임(700))로 분할될 수 있다. 키포인트 검출 회로(430) 또는 머신 비전 스테이지(318)와 같은 하드웨어 모듈은, 키포인트 민감도 임계치를 조정하기 위해 키포인트들을 검출하고 메모리 모듈에 저장된 소프트웨어(예를 들어, 프로그램 명령어들(136))와 인터페이싱하도록 구성될 수 있다. 예를 들어, 노이즈 민감도는 키포인트 민감도 임계치를 상승시킴으로써 감소될 수 있으며, 그에 의해, 단지 이미지 노이즈로 인한 응답 값들의 로컬 최대값이 키포인트들로서 의도하지 않게 식별되는 것을 방지한다. 일 실시예에서, 이미지의 각각의 구역들은 소프트웨어 애플리케이션에 의해 셋팅된 상이한 키포인트 민감도 임계치 값을 가질 수 있다. 따라서, 소프트웨어 애플리케이션은, 이미지의 상이한 구역들에서 하드웨어 모듈(예를 들어, 머신 비전 스테이지(318))에 의해 검출된 키포인트들의 수 및/또는 강도에 응답하여, 이미지의 다양한 구역들의 하나 이상의 키포인트 민감도 임계치들을 동적으로 조정할 수 있다.
일부 실시예들에서, 키포인트 검출 회로(430)로부터의 키포인트 출력 데이터와 같은 프로세싱된 이미지 데이터 뿐만 아니라 이미지 신호 프로세서의 파이프라인 스테이지(들) 중 일부 또는 전부로부터의 이미지 데이터는 메모리 모듈(예를 들어, 시스템 메모리(130))에 저장될 수 있다. 예를 들어, 제어 유닛 또는 다른 프로그래밍가능한 컴포넌트가 프로세싱된 이미지 데이터 및 키포인트들을 메모리에 저장하도록 ISP에게 지시하면, 키포인트 출력 데이터는 메모리에 저장될 수 있다. 이러한 방식으로, CPU 또는 GPU와 같은 다른 컴포넌트들은, 메모리에 액세스함으로써 원시 이미지 및 키포인트 데이터에 대해 이미지 프로세싱을 수행할 수 있다. 대안적으로, 이미지 데이터는 메모리로부터 검색되고, 다양한 ISP 요소들을 통한 프로세싱을 계속할 수 있다.
640에서 표시된 바와 같이, 키포인트 검출 회로는 키포인트 출력 데이터를 메모리 모듈(예를 들어, 시스템 메모리(130))에 기입한다. 일 실시예에서, 다양한 타입들의 키포인트 출력 데이터는, 키포인트의 설명, 키포인트의 좌표들(예를 들어, 이미지 내의 키포인트의 x, y 좌표들), 키포인트의 응답 크기(예를 들어, 조정가능한 키포인트 민감도 임계치를 초과하는 강도 스코어링 값), 및 키포인트의 부호 비트 값(예를 들어, 중심이 밝은지 또는 어두운지를 식별하는 극성 값)을 포함할 수 있다.
도 7은 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 이미지 프레임(700)을 도시한 로직 블록 다이어그램이다. 일 실시예에서, 이미지 프레임(700)은 다수의 구역들, 블록들, 또는 그리드들로 분할된 이미지에 대응할 수 있다. 일 실시예에서, 이미지 프레임(700)은 다수의 블록들(702A-N)을 포함하도록 구성될 수 있으며, 여기서 각각의 블록은 입력 이미지 프레임의 구역에 대응한다. 일 실시예에서, 이미지 프레임(700)은 25개의 총 블록들을 갖는 5x5 테이블에 대응할 수 있지만, 임의의 수의 블록들이 다양한 실시예들에서 사용될 수 있다. 블록들(702A-N) 각각은 메모리 모듈에 저장된 하나 이상의 데이터 값들과 연관될 수 있다. 각각의 블록들(및 이에 따른 입력 이미지 프레임의 각각의 구역들)에 대응하는 데이터 값들은 조정가능한 키포인트 민감도 임계치 값, 및 이미지의 각각의 구역 내에서 검출된 키포인트 출력 값(들)의 데이터를 포함할 수 있다. 일부 실시예들에서, 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)가 이미지의 대응하는 구역에서 어떠한 키포인트들도 검출하지 못하면 및/또는 그 구역 내의 키포인트(들)가 조정가능한 키포인트 민감도 임계치를 초과하지 않으면, 하나 이상의 블록들은 키포인트 데이터(즉, 그 특정한 블록에 대한 제로 키포인트들)를 포함하지 않을 수 있다. 대조적으로, 일부 실시예들에서, 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)가 이미지의 대응하는 구역 내에서 조정가능한 키포인트 민감도 임계치를 초과하는 다수의 키포인트들을 검출했다면, 블록은 다수의 키포인트 값들을 포함할 수 있다. 일 실시예에서, 블록들(702A-N) 각각은 이미지의 대응하는 구역들의 속성들에 기초하여 상이한 그리고 독립적으로 조정가능한 키포인트 민감도 임계치 값들과 연관될 수 있다. 다른 실시예에서, 키포인트 검출 회로(430)에 저장되거나 메모리(예를 들어, 시스템 메모리(130))에 저장된 레지스터 값들은, 중앙 제어(320), 머신 비전 스테이지(318), 키포인트 검출 회로(430), 및/또는 프로그램 명령어들(136)이 블록 당 허용되는 키포인트들의 최대 제한, 그리드의 라인 당 허용되는 키포인트들의 최대 수, 및/또는 이미지-단위 기반으로 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)에 의해 기입되도록 허용되는 키포인트들의 최대 수를 동적으로 조정할 수 있게 할 수 있다. 예를 들어, 블록 당 또는 그리드의 라인 당 키포인트들의 최대 수에 대응하도록 구성된 레지스터 값은 안전한 메모리 동작을 보장하며, 그에 의해, 시스템(또는 메모리 액세스) 대역폭이 높은 레벨들에 도달할 경우 ISP(106)가 스톨링(stall)되는 것을 방지할 수 있다. 유사하게, 이미지 당 키포인트들의 최대 허용가능한 수를 제어하는 것은 ISP(106)가 프로세싱 시간을 보존하고, 그에 의해 전력을 절약할 수 있게 할 수 있다.
도 8은 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 이미지 프레임(800)을 도시한 로직 블록 다이어그램이다. 일 실시예에서, 이미지 프레임(800)은 다수의 블록들(802A-Z)의 그리드를 포함하도록 구성될 수 있으며, 여기서 각각의 블록은 입력 이미지 프레임의 구역에 대응한다. 일 실시예에서, 도 8은 축소된(pared) 그리드 시스템에 대응할 수 있으며, 여기서, 이미지 프레임(800)은, 블록들(802A-Z) 각각이 키포인트 값들의 프로그래밍가능한 최대 제한(예를 들어, 각각의 블록에 대응하는 구역 내의 다른 검출된 키포인트들에 비해 최대 강도 값을 갖는 단일 키포인트)을 포함할 수 있도록 구성될 수 있다. 예를 들어, 10이 블록 당 최대 수이고 10개 이상의 키포인트들이 블록에서 발견되면, 가장 높은 응답 값들을 갖는 10이 출력될 것이다. 일 실시예에서, 이미지 프레임(800)은 또한, 임계 구역들(804A-N) 각각이 블록들(804A-Z) 중 다수의 블록들을 포함할 수 있게 하는 배열로 하나 이상의 임계 구역들(804A-N)이 블록들(802A-Z)을 중첩할 수 있도록 구성될 수 있다. 그러한 실시예에서, 임계 구역들(804A-N)은 (이미지 픽셀들의 관점들에서) 블록들(802A-Z)보다 더 클 수 있고, 따라서, 각각의 임계 구역은 블록들의 서브세트 또는 그룹을 포함할 수 있으며, 여기서, 각각의 블록은 최대한 하나의 (최대) 키포인트에 대응하는 데이터를 포함하고, 임계 구역 내의 블록들의 각각의 서브세트의 키포인트들은 그 각각의 임계 구역에 대한 특정한 동적으로 조정가능한 키포인트 민감도 임계치 값에 기초하여 키포인트 검출 회로(430)에 의해 각각 계산된다. 따라서, 도 8에 도시된 실시예는, 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)가 조정가능한 키포인트 민감도 임계치 값들에 대한 구역-기반 모델(즉, 더 넓은 레벨로 프로그래밍가능한 키포인트 민감도 임계치와 결합된 정밀한 레벨로 프로그래밍가능한 밀도를 갖는 키포인트 검출 방식)을 유지하면서, 입력 이미지 프레임의 픽셀들에 대해 키포인트들의 더 세부적인(granular) 배열을 이용할 수 있게 한다.
일 실시예에서, 이미지 프레임(800)은, 도 7에 도시된 예시적인 이미지 프레임에 비해 더 많은 블록들을 갖도록(그리고 그에 따라, 키포인트들의 증가된 균일성 및/또는 더 높은 해상도를 갖도록) 구성될 수 있다. 그러나, 위에서 언급된 바와 같이, 임의의 수의 블록들이 다양한 실시예들에서 사용될 수 있다. 블록들(802A-Z) 각각은, 로컬 키포인트 민감도 임계치 값 및 블록에 대응하는 하나 이상의 설명 키포인트 값들과 같은 하나 이상의 데이터 값들과 연관될 수 있다. 일 실시예에서, 블록(802A-Z)은 독립적으로 조정가능한 키포인트 민감도 임계치 값들(804A-N)과 연관될 수 있다. 키포인트 검출 모듈(430) 및/또는 프로그램 명령어들(136)은, 키포인트 민감도 임계치 값들(804A-N) 각각에 대응하는 이미지 프레임의 각각의 구역 내의 블록들(802A-Z) 중 하나 이상에서 검출된 키포인트들의 카운트에 기초하여 키포인트 민감도 임계치 값들(804A-N)의 레벨들을 셋팅할 수 있다. 일 실시예에서, 키포인트 민감도 임계치 값들(804A-N)에 대응하는 이미지 프레임의 구역들은 블록들(802A-Z)의 사이즈보다 비교적 더 클 수 있어서, 블록들(802A-Z)은 검출된 키포인트 값들의 증가된 균일성을 가능하게 하기 위해 더 정밀한 그리드에 대응할 수 있게 한다.
도 8의 실시예에서, 이미지 프레임(800)은 블록 당 최대한 하나의 키포인트를 저장하도록 구성될 수 있다. 다양한 실시예들에서, 이미지 프레임은 블록 당 허용되는 프로그래밍가능한 최대 수의 키포인트들을 포함하도록 구성될 수 있다. 일부 실시예들에서, 프로그래밍가능한 최대 수의 키포인트들은 그리드 내의 모든 블록들에 대해 동일하게 셋팅될 수 있는 반면(즉, 전체 그리드에 대한 균일한 최대 제한), 다른 실시예들에서, 그리드의 각각의 블록은 상이한 프로그래밍가능한 최대 수의 키포인트들을 포함할 수 있다(즉, 그리드 내의 다양한 블록들에 대한 독립적으로 프로그래밍가능한 제한들). 모든 경우들에서, 블록 내의 가장 높은 스코어링 키포인트들이 저장된 키포인트들이다. 일 실시예에서, 블록 당 발견된 키포인트의 수를 (예를 들어, 블록 당 최대 1의 키포인트로) 축소시키는 것은 이미지의 키포인트 데이터에 대한 증가된 공간 균일성을 강제하는 것을 도울 수 있다. 따라서, "축소된 그리드"로 종종 지칭되는 그러한 실시예에서, 각각의 블록들(즉, 입력 이미지 프레임의 각각의 구역들)에 대응하는 데이터 값들은, 조정가능한 키포인트 민감도 임계치 값 및 이미지의 각각의 개별 구역 내에서 검출된 최대 하나의 키포인트 출력 값에 대응하는 데이터를 포함할 수 있다. 일부 실시예들에서, 블록 당 최대 하나의 키포인트가 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)에 의해 강제될 수 있지만, 특정 키포인트 검출 회로(430)가 이미지의 대응하는 구역에서 어떠한 키포인트들도 검출하지 못한다면 및/또는 그 구역 내의 키포인트(들)이 조정가능한 키포인트 민감도 임계치를 초과하지 않으면, 하나 이상의 블록들은 여전히 어떠한 키포인트 데이터도 포함하지 않을 수 있다(즉, 제로의 키포인트들이 특정한 블록에 대해 리포팅될 수 있음). 블록 당 하나의 키포인트 값의 최대 제한이 강제되는 실시예들의 경우, 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)는, 단일 블록에 대응하는 이미지의 구역 내에서 조정가능한 키포인트 민감도 임계치를 초과하는 다수의 키포인트들을 검출하고, 그 블록에서 검출된 다른 키포인트들에 대한 가장 높은 크기 값을 갖는 키포인트 값을 그 블록에 대해 리포팅된 단일 키포인트인 것으로 선택함으로써 충돌을 해결할 수 있다. 일 실시예에서, 다수의 키포인트들이 블록에 대응하는 구역에서 검출되고, 다수의 키포인트들 중 2개 이상이 그 특정한 블록에 대해 동일한 가장 높은 응답 크기 값을 공유하면(즉, 블록 내의 2개 이상의 키포인트들이 동등하게 높은 크기 값들을 갖는다면), 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)는, 래스터 순서에 기초하여 그 특정한 블록에 대해 처음 발견되었던 키포인트를 그 블록에 대해 리포팅된 단일 키포인트인 것으로 선택할 수 있다. 다시 말하면, 블록 내의 2개 이상의 키포인트들이 키포인트 민감도 임계치를 초과하는 매칭한 높은 크기 값들을 가지면, 타이 브레이커(tie breaker)는 키포인트들이 검출되었던 래스터 순서일 수 있다.
일 실시예에서, 축소된 그리드 시스템은 입력 이미지 프레임의 구역들에 대응하는 다양한 블록들에 대한 하나의 키포인트의 최대 제한을 포함할 수 있으며, 블록들의 그리드는 제어 파라미터 저장 구조(440)에 저장되거나, 키포인트 검출 회로(430)의 펌웨어에 저장되거나, 또는 메모리(예를 들어, 시스템 메모리(130))에 저장된 레지스터 값들에 의해 특정될 수 있다. 예를 들어, 제어 파라미터 저장 구조(440)의 축소된 그리드 인에이블링(enabling) 레지스터는, 키포인트들이 각각의 블록들 내에서 래스터 방식으로 출력되는 키포인트 출력 모드(예를 들어, 축소된 그리드 인에이블링 레지스터가 "참(True)" 값을 포함하면, 블록-집중(block-focused) 래스터 출력)로의, 일반적인 래스터 순서로부터 키포인트 출력 순서를 변경시키도록 구성된 축소된 그리드 출력 모드(예를 들어, 축소된 그리드 인에이블링 레지스터가 "거짓(False)" 값을 포함하면, 그리드-폭 래스터 출력)를 인에이블링 또는 디스에이블링하는 불린 값을 포함할 수 있다. 하나 이상의 레지스터 값들은, 픽셀들에서 측정된 바와 같이 블록들의 사이즈를 특정할 수 있다. 유사하게, 하나 이상의 레지스터 값들은, 입력 이미지 프레임의 구역들에 대응할 수 있는 수평 및/또는 수직 차원들에서의 블록들의 수를 특정할 수 있다.
도 9a는 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 이미지 프레임(900A)을 도시한 로직 블록 다이어그램이다. 일 실시예에서, 이미지 프레임(900A)은 (예를 들어, 도 8의 실시예와 유사한 방식으로) 축소된 그리드 시스템에 대응하도록 구성될 수 있다. 일 실시예에서, 이미지 프레임(900A)은 하나 이상의 임계 구역들(902A-N)을 포함할 수 있으며, 이들 각각은 입력 이미지 프레임의 픽셀들의 그룹들에 대응하는 다수의 블록들의 서브세트를 포함할 수 있다. 다양한 실시예들에서, 임계 구역들(902A-N)은 독립적으로 동적으로 조정가능한 키포인트 민감도 임계치 값에 각각 대응할 수 있으며, 그에 의해, 임계 구역의 하나 이상의 블록들에서 검출된 키포인트들의 수, 임계 구역의 하나 이상의 블록들에서 검출된 키포인트들의 크기(또는 강도), 임계 구역에서 검출된 키포인트들의 부호 비트(즉, 극성) 값들, 또는 임계 구역에서 검출된 키포인트들에 대응하는 다른 설명 데이터와 같은 실시간 인자들에 응답하여, 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)가 이미지의 구역에 의해 키포인트 민감도 임계치 값들을 선택적으로 조정할 수 있게 한다. 도 9a 및도 9b에 도시된 다양한 예시적인 키포인트들의 사이즈 및 구성은, 예시적인 목적들을 위한 키포인트 강도의 표시로서 의도되고 실제 오브젝트들을 표현하지는 않음을 유의한다.
일 실시예에서, 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)는 입력 이미지 프레임의 구역들에 대응하는 하나 이상의 블록들에서 키포인트들을 검출할 수 있다. 유사하게, 제로 키포인트들은 다른 블록들에 대응하는 픽셀 데이터에서 검출될 수 있다. 검출된 키포인트들의 하나 이상의 속성들(예를 들어, 키포인트들의 설명 정보, 위치/좌표 정보, 크기/강도 정보, 및/또는 부호/극성 정보)에 대응하는 데이터는 머신 비전 스테이지(318) 및/또는 키포인트 검출 회로(430)에 의한 추가 프로세싱을 위해 제어 파라미터 저장 구조(440)에 저장될 수 있다. 예를 들어, 이미지 프레임(900A)의 다양한 블록들은, 임계 구역들(902A-N)의 각각의 구역의 동적으로 조정가능한 키포인트 민감도 임계치의 현재의 값을 초과하는 크기 값들을 갖는 검출된 키포인트들에 대응하는 임계치-초과 키포인트 값들(904A-N)을 포함할 수 있다. 대조적으로, 이미지 프레임의 다양한 블록들은, 임계 구역들(902A-N)의 각각의 구역의 동적으로 조정가능한 키포인트 민감도 임계치의 현재의 값 미만인 크기 값들을 갖는 검출된 키포인트들에 대응하는 임계치-미만 키포인트 값들(906A-N)을 포함할 수 있다.
다수의 키포인트들이 이미지 프레임(900A)의 동일한 블록에서 검출되는 경우들에 대해, 블록은, 이미지 프레임(900A)의 그 각각의 블록에서 다른 검출된 키포인트들의 크기를 초과하는 크기(또는 강도)를 갖는 최대 크기 키포인트 값, 이를테면 최대 크기 키포인트 값들(908A-N) 중 하나를 포함할 수 있다. 일 실시예에서, 키포인트 검출 회로(430)는, 아래에서 더 상세히 논의되는 도 9b에 도시된 바와 같이, 블록의 최대 크기 키포인트 값만을 선택적으로 리포팅할 수 있다. 도 9a로 다시 돌아와서, 일 실시예에서, 이미지 프레임(900A)은 유사한 크기의 키포인트들(910A 및 910B)과 같이 유사한 크기 값들을 갖는 다수의 검출된 키포인트들을 갖는 하나 이상의 블록들을 포함할 수 있다. 그러한 실시예에서, 키포인트 검출 회로(430)는 그 블록에 대한 픽셀들의 래스터 순서에 기초하여, 그 블록에서 처음 검출되었던 동등한 값의 키포인트만을 선택적으로 리포팅할 수 있다. 예를 들어, 키포인트 검출 회로(430)는 아래에 논의되는 도 9b에 도시된 바와 같이, 유사한 크기의 키포인트(910A)를 리포팅할 수 있고, 유사한 크기의 키포인트(910B)를 리포팅하지 않기로 선택할 수 있다.
다양한 실시예들에서, 이미지 프레임(900A)의 하나 이상의 블록들은 상이한 타입들의 검출된 키포인트들, 단일 타입의 검출된 키포인트, 또는 제로의 검출된 키포인트들의 조합들을 포함할 수 있음을 유의한다. 따라서, 도 9a의 예는 제한하려는 것으로 의도되지 않는다.
도 9b는 일부 실시예들에 따른, 이미지 데이터에서 키포인트들을 검출하기 위한 예시적인 이미지 프레임(900B)을 도시한 로직 블록 다이어그램이다. 일 실시예에서, 도 9b는 도 9a의 이미지 프레임(900A)의 출력(즉, 프로세싱된) 버전에 대응할 수 있다. 예를 들어, 임계 구역들(902A-N)의 각각의 구역의 동적으로 조정가능한 키포인트 민감도 임계치의 현재의 값을 초과하는 크기 값들을 갖는 검출된 키포인트들에 대응하는 임계치-초과 키포인트 값들(904A-N)은, 임계치-초과 키포인트 값들(904A-N)이 검출되었던 각각의 블록들에서 유지된다. 따라서, 키포인트 검출 회로(430)는, 임계치-초과 키포인트 값들(904A-N)이 키포인트 민감도 임계치를 초과했던 그들 각각의 블록들 내의 검출된 키포인트들이었고, 또한 각각의 블록들에서 검출되었을 수 있는 다른 키포인트들보다 더 강했었다고 결정하는 것에 응답하여, 출력 데이터로서 임계치-초과 키포인트 값들(904A-N)을 리포팅하도록 선택할 수 있다. 대조적으로, 도 9a의 임계치-미만 키포인트 값들(906A-N)은 키포인트 검출 회로(430)에 의한 프로세싱 동안 제거(즉, 선택되지 않고 그리고/또는 그렇지 않으면 필터링 아웃)되었다. 따라서, 임계치-미만 키포인트 값들(906A-N)은 도 9b에 도시된 출력 데이터에서 리포팅되지 않는다.
일 실시예에서, 키포인트 검출 회로(430)는, 최대 크기 키포인트 값들(908A-N)의 크기 값들보다 작은 크기 값들을 가졌던 각각의 블록(들) 내의 하나 이상의 다른 키포인트들을 제거(즉, 선택하지 않거나 그렇지 않으면 필터링 아웃)하면서, 그들 각각의 블록들에 대한 출력 데이터에서 최대 크기 키포인트 값들(908A-N)을 선택적으로 리포팅할 수 있다. 따라서, 최대 크기 키포인트 값들(908A-N)은 도 9b에 도시된 출력 데이터에서 유지된다(즉, 리포팅된다). 일 실시예에서, 키포인트 검출 회로(430)는, 각각의 블록에서 유사한 크기/강도 값들을 갖는 하나 이상의 다른 키포인트들 대신, 유사한 크기의 키포인트(910A)를 선택적으로 리포팅할 수 있다. 따라서, 유사한 크기의 키포인트(910A)는 도 9b에 도시된 출력 데이터에서 유지되는 (즉, 리포팅되는) 반면, 유사한 크기의 키포인트(910B)는 프로세싱 동안 제거(즉, 리포팅되지 않거나 그렇지 않으면 필터링 아웃)된다. 도 9b에 도시된 도면은, 낮은 크기의 키포인트들(예를 들어, 이미지 노이즈 데이터 또는 다른 클러터(clutter))이 프로세싱 동안 제거되므로, 쌍을 이룬 그리드 모델에 기초한 증가된 균일성을 갖는 키포인트 출력 데이터의 버전을 표현할 수 있다.
일부 실시예들에서, 시스템 메모리(130)에 저장된 프로그램 명령어들(136)과 같은 소프트웨어는 도 4 내지 도 9에 대해 위에서 설명된 다양한 기능들을 수행할 수 있다. 예를 들어, 일 실시예에서, 프로그램 명령어들(136)은 입력 이미지 프레임의 하나 이상의 구역들에 대한 제어 파라미터 저장 구조(440)의 값들 및/또는 키포인트 민감도 임계치 값들의 조정을 동적으로 용이하게 할 수 있다. 일 실시예에서, 프로그램 명령어들(136) 및/또는 키포인트 검출 회로(430)는, 그리드 당, 블록 당, 또는 입력 이미지의 구역 당 검출된 키포인트들의 수를 모니터링할 수 있으며, 대응하는 그리드, 블록, 또는 구역에 대해 동적으로 조정가능한 키포인트 민감도 임계치 값(들)을 조정할지 여부(그리고 얼마나 많이 조정할지)를 결정할 경우 인자로서 그리드 당, 블록 당, 또는 구역 당 키포인트들의 카운트를 이용할 수 있다.
따라서, 동적으로 조정가능한 키포인트 민감도 임계치를 갖고, 이미지 신호 프로세싱 파이프라인의 다수의 소스들 및/또는 상이한 스테이지들로부터 입력 데이터를 수신하도록 구성된 키포인트 검출 시스템은 계산 집약적인 키포인트 계산들을 효율적으로 구현할 수 있다. 그러한 시스템은, 오브젝트 식별, 오브젝트 추적, 이미지 안정화, 파노라마 스티칭, 다수의 이미지 캡쳐들로부터의 높은 다이나믹 레인지(HDR), 및 다른 애플리케이션들을 포함하는 다수의 애플리케이션들에 유용할 수 있다. 예를 들어, 동적으로 조정가능한 키포인트 민감도 임계치를 갖는 키포인트 검출 회로는, 머신 비전 스테이지가 노이즈, 스케일, 또는 밝기와 같은 이미지 속성들의 변화들과 관계없이 일련의 이미지들에서 오브젝트를 검출 및 식별할 수 있게 할 수 있다.

Claims (20)

  1. 이미지 신호 프로세서로서,
    이미지 센서로부터 픽셀 데이터를 수신하도록 구성된 이미지 센서 인터페이스;
    이미지 센서 픽셀 데이터 포맷으로 이미지 프레임에 대한 픽셀 데이터를 수신하고; 그리고
    상기 이미지 센서 픽셀 데이터 포맷의 상기 픽셀 데이터를 상이한 컬러 공간 포맷으로 변환하도록
    구성된 전단 픽셀 데이터 프로세싱 회로;
    상기 전단 픽셀 데이터 프로세싱 회로로부터의 픽셀 데이터에 대해 하나 이상의 노이즈 필터링 또는 컬러 프로세싱 동작들을 수행하도록 구성된 후단 픽셀 데이터 프로세싱 회로;
    상기 후단 픽셀 데이터 프로세싱 회로로부터 픽셀 데이터를 수신하고, 상기 이미지 프레임에 대한 픽셀 데이터를 시스템 메모리로 출력하도록 구성된 출력 회로; 및
    상기 이미지 센서 인터페이스로부터 이미지 센서 픽셀 데이터 포맷으로 픽셀 데이터를 수신하거나 상기 전단 픽셀 데이터 프로세싱 회로 또는 상기 후단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터를 수신하고,
    키포인트 민감도 임계치 값을 초과하는 크기 값을 갖는 상기 이미지 프레임에서 하나 이상의 키포인트들을 검출하기 위해 상기 수신된 픽셀 데이터에 대해 키포인트 검출 동작을 수행하며; 그리고
    상기 하나 이상의 키포인트들의 설명을 상기 시스템 메모리로 출력하도록
    구성된 키포인트 검출 회로
    를 포함하는, 이미지 신호 프로세서.
  2. 제1항에 있어서, 상기 키포인트 검출 회로에 연결된 멀티플렉서 회로를 더 포함하며, 상기 멀티플렉서 회로는,
    상기 이미지 센서 인터페이스;
    상기 시스템 메모리; 또는
    상기 후단 픽셀 데이터 프로세싱 회로
    로부터의 픽셀 데이터를 선택하고; 그리고
    상기 픽셀 데이터를 상기 키포인트 검출 회로에 제공하도록
    구성되는, 이미지 신호 프로세서.
  3. 제2항에 있어서, 상기 멀티플렉서와 상기 키포인트 검출 회로 사이에 연결된 프리-프로세싱 모듈을 더 포함하며, 상기 프리-프로세싱 모듈은 상기 픽셀 데이터를 휘도 채널 데이터로 변환하도록 구성되는, 이미지 신호 프로세서.
  4. 제1항에 있어서, 상기 키포인트 검출 회로에 연결된 키포인트 제어 파라미터 저장 구조를 더 포함하며,
    상기 키포인트 제어 파라미터 저장 구조는, 상기 이미지 프레임의 각각의 구역들의 제1 세트에 대응하는 복수의 키포인트 민감도 임계치 값들을 저장하도록 구성되고 - 상기 복수의 키포인트 민감도 임계치 값들은 상기 키포인트 민감도 임계치 값을 포함함 -; 그리고
    상기 키포인트 검출 회로는, 상기 하나 이상의 키포인트들의 각각의 크기 값들이 상기 이미지 프레임의 각각의 구역들의 제1 세트에 대응하는 상기 키포인트 민감도 임계치 값을 초과하는 것에 응답하여, 상기 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 상기 하나 이상의 키포인트들의 설명을 선택적으로 출력하는, 이미지 신호 프로세서.
  5. 제4항에 있어서,
    상기 키포인트 검출 회로는, 상기 이미지 프레임의 각각의 구역들의 제1 세트의 각각의 구역에서 검출된 키포인트들의 각각의 카운트를 출력하도록 구성되고; 그리고
    상기 이미지 프레임의 각각의 구역들의 제1 세트의 각각의 구역에서 검출된 키포인트들의 각각의 카운트는, 상기 복수의 키포인트 민감도 임계치 값들 중 하나를 동적으로 조정하도록 프로그램 명령어들에 의해 사용가능한, 이미지 신호 프로세서.
  6. 제4항에 있어서, 상기 키포인트 제어 파라미터 저장 구조는,
    상기 이미지 프레임의 각각의 구역들의 제2 세트의 각각의 구역에 대한 키포인트들의 총 수의 설명을 출력하도록 상기 키포인트 검출 회로에 의해 사용가능한 상기 이미지 프레임의 각각의 구역들의 제2 세트의 각각의 구역에 대한 허용가능한 키포인트들의 프로그래밍가능한 최대 제한 - 상기 각각의 구역들의 제2 세트의 각각의 구역에 대한 키포인트들의 총 수는 상기 허용가능한 키포인트들의 프로그래밍가능한 최대 제한을 초과하지 않음 -; 및
    상기 이미지 프레임의 각각의 구역들의 제2 세트의 프로그래밍가능한 사이즈 - 상기 허용가능한 키포인트들의 프로그래밍가능한 최대 제한에 대응하는 상기 각각의 구역들의 제2 세트는, 복수의 조정가능한 키포인트 민감도 임계치 값들에 대응하는 상기 각각의 구역들의 제1 세트보다 상기 이미지 프레임의 더 작은 구역들임 - 를 저장하도록 구성되는, 이미지 신호 프로세서.
  7. 제1항에 있어서, 상기 이미지 신호 프로세서는 저전력 모드로 동작하도록 구성되며, 상기 저전력 모드에서,
    상기 전단 픽셀 데이터 프로세싱 회로 및 상기 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들은 비활성 상태로 진입하고;
    상기 이미지 센서 인터페이스 및 상기 키포인트 검출 회로는, 상기 전단 픽셀 데이터 프로세싱 회로 및 상기 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들이 상기 비활성 상태로 진입하는 동안, 상기 하나 이상의 키포인트들의 설명을 상기 시스템 메모리로 계속 출력하도록 구성된 활성 상태로 유지되며; 그리고
    상기 전단 픽셀 데이터 프로세싱 회로 및 상기 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들은, 상기 키포인트 검출 회로가 하나 이상의 키포인트들을 검출하는 것에 응답하여 활성 상태로 진입하는, 이미지 신호 프로세서.
  8. 이미지 신호 프로세서에 대한 방법으로서,
    이미지 센서 인터페이스에 의해, 이미지 센서로부터 픽셀 데이터를 수신하는 단계;
    전단 픽셀 데이터 프로세싱 회로에 의해, 이미지 센서 픽셀 데이터 포맷으로 이미지 프레임에 대한 픽셀 데이터를 수신하는 단계;
    상기 전단 픽셀 데이터 프로세싱 회로에 의해, 상기 이미지 센서 픽셀 데이터 포맷의 상기 픽셀 데이터를 상이한 컬러 공간 포맷으로 변환하는 단계;
    후단 픽셀 데이터 프로세싱 회로에 의해, 상기 전단 픽셀 데이터 프로세싱 회로로부터의 픽셀 데이터에 대해 하나 이상의 노이즈 필터링 또는 컬러 프로세싱 동작들을 수행하는 단계;
    출력 회로에 의해, 상기 후단 픽셀 데이터 프로세싱 회로로부터 픽셀 데이터를 수신하고, 상기 이미지 프레임에 대한 픽셀 데이터를 시스템 메모리로 출력하는 단계;
    키포인트 검출 회로에 의해,
    상기 이미지 센서 픽셀 데이터 포맷의 상기 이미지 센서 인터페이스로부터의 데이터;
    상기 전단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터; 또는
    상기 후단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터
    를 수신하는 단계;
    상기 키포인트 검출 회로에 의해, 키포인트 민감도 임계치 값을 초과하는 크기 값을 갖는 상기 이미지 프레임에서 하나 이상의 키포인트들을 검출하기 위해 상기 수신된 픽셀 데이터에 대해 키포인트 검출 동작을 수행하는 단계; 및
    상기 키포인트 검출 회로에 의해, 상기 하나 이상의 키포인트들의 설명을 상기 시스템 메모리로 출력하는 단계
    를 포함하는, 방법.
  9. 제8항에 있어서,
    상기 키포인트 검출 회로에 연결된 멀티플렉서 회로에 의해,
    상기 이미지 센서 인터페이스;
    상기 시스템 메모리; 또는
    상기 후단 픽셀 데이터 프로세싱 회로
    로부터의 픽셀 데이터를 선택하는 단계; 및
    상기 멀티플렉서 회로에 의해, 상기 픽셀 데이터를 상기 키포인트 검출 회로에 제공하는 단계를 더 포함하는, 방법.
  10. 제9항에 있어서, 상기 멀티플렉서와 상기 키포인트 검출 회로 사이에 연결된 프리-프로세싱 모듈에 의해, 상기 픽셀 데이터를 휘도 채널 데이터로 변환하는 단계를 더 포함하는, 방법.
  11. 제8항에 있어서,
    상기 키포인트 검출 회로에 연결된 키포인트 제어 파라미터 저장 구조에 의해, 상기 이미지 프레임의 각각의 구역들의 제1 세트에 대응하는 복수의 키포인트 민감도 임계치 값들을 저장하는 단계 - 상기 복수의 키포인트 민감도 임계치 값들은 상기 키포인트 민감도 임계치 값을 포함함 -; 및
    상기 키포인트 검출 회로에 의해, 상기 하나 이상의 키포인트들의 각각의 크기 값들이 상기 이미지 프레임의 각각의 구역들의 제1 세트에 대응하는 상기 키포인트 민감도 임계치 값을 초과하는 것에 응답하여, 상기 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 상기 하나 이상의 키포인트들의 설명을 선택적으로 출력하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서, 상기 키포인트 검출 회로에 의해, 상기 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 키포인트들의 카운트를 출력하는 단계를 더 포함하며,
    상기 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 키포인트들의 카운트는, 상기 복수의 키포인트 민감도 임계치 값들 중 하나를 동적으로 조정하도록 프로그램 명령어들에 의해 사용가능한, 방법.
  13. 제11항에 있어서,
    상기 키포인트 제어 파라미터 저장 구조에 의해, 상기 이미지 프레임의 각각의 구역들의 제2 세트의 각각의 구역에 대한 키포인트들의 총 수의 설명을 출력하도록 상기 키포인트 검출 회로에 의해 사용가능한 상기 이미지 프레임의 각각의 구역들의 제2 세트의 각각의 구역에 대한 허용가능한 키포인트들의 프로그래밍가능한 최대 제한을 저장하는 단계 - 상기 각각의 구역들의 제2 세트의 각각의 구역에 대한 키포인트들의 총 수는 상기 허용가능한 키포인트들의 프로그래밍가능한 최대 제한을 초과하지 않음 -; 및
    상기 키포인트 제어 파라미터 저장 구조에 의해, 상기 이미지 프레임의 각각의 구역들의 제2 세트의 프로그래밍가능한 사이즈를 저장하는 단계 - 상기 허용가능한 키포인트들의 프로그래밍가능한 최대 제한에 대응하는 상기 각각의 구역들의 제2 세트는, 복수의 조정가능한 키포인트 민감도 임계치 값들에 대응하는 상기 각각의 구역들의 제1 세트보다 상기 이미지 프레임의 더 작은 구역들임 - 를 더 포함하는, 방법.
  14. 디바이스로서,
    중앙 프로세싱 유닛;
    상기 중앙 프로세싱 유닛에 연결된 디스플레이;
    상기 중앙 프로세싱 유닛에 연결된 시스템 메모리; 및
    상기 중앙 프로세싱 유닛에 연결된 이미지 신호 프로세서를 포함하며,
    상기 이미지 신호 프로세서는,
    이미지 센서로부터 픽셀 데이터를 수신하도록 구성된 이미지 센서 인터페이스;
    이미지 센서 픽셀 데이터 포맷으로 이미지 프레임에 대한 픽셀 데이터를 수신하고; 그리고
    상기 이미지 센서 픽셀 데이터 포맷의 상기 픽셀 데이터를 상이한 컬러 공간 포맷으로 변환하도록
    구성된 전단 픽셀 데이터 프로세싱 회로;
    상기 전단 픽셀 데이터 프로세싱 회로로부터의 픽셀 데이터에 대해 하나 이상의 노이즈 필터링 또는 컬러 프로세싱 동작들을 수행하도록 구성된 후단 픽셀 데이터 프로세싱 회로;
    상기 후단 픽셀 데이터 프로세싱 회로로부터 픽셀 데이터를 수신하고, 상기 이미지 프레임에 대한 픽셀 데이터를 상기 시스템 메모리로 출력하도록 구성된 출력 회로; 및
    키포인트 검출 회로
    를 포함하고,
    상기 키포인트 검출 회로는,
    상기 이미지 센서 인터페이스로부터 상기 이미지 센서 픽셀 데이터 포맷으로 픽셀 데이터를 수신하거나 상기 전단 픽셀 데이터 프로세싱 회로 또는 상기 후단 픽셀 데이터 프로세싱 회로에 의한 프로세싱 이후의 픽셀 데이터를 수신하고;
    키포인트 민감도 임계치 값을 초과하는 크기 값을 갖는 상기 이미지 프레임에서 하나 이상의 키포인트들을 검출하기 위해 상기 수신된 픽셀 데이터에 대해 키포인트 검출 동작을 수행하며; 그리고
    상기 하나 이상의 키포인트들의 설명을 상기 시스템 메모리로 출력하도록 구성되는, 디바이스.
  15. 제14항에 있어서, 상기 키포인트 검출 회로에 연결된 멀티플렉서 회로를 더 포함하며, 상기 멀티플렉서 회로는,
    상기 이미지 센서 인터페이스;
    상기 시스템 메모리; 또는
    상기 후단 픽셀 데이터 프로세싱 회로
    로부터의 픽셀 데이터를 선택하고; 그리고
    상기 픽셀 데이터를 상기 키포인트 검출 회로에 제공하도록
    구성되는, 디바이스.
  16. 제15항에 있어서, 상기 멀티플렉서와 상기 키포인트 검출 회로 사이에 연결된 프리-프로세싱 모듈을 더 포함하며, 상기 프리-프로세싱 모듈은 상기 픽셀 데이터를 휘도 채널 데이터로 변환하도록 구성되는, 디바이스.
  17. 제14항에 있어서, 상기 키포인트 검출 회로에 연결된 키포인트 제어 파라미터 저장 구조를 더 포함하며,
    상기 키포인트 제어 파라미터 저장 구조는, 상기 이미지 프레임의 각각의 구역들의 제1 세트에 대응하는 복수의 키포인트 민감도 임계치 값들을 저장하도록 구성되고 - 상기 복수의 키포인트 민감도 임계치 값들은 상기 키포인트 민감도 임계치 값을 포함함 -;
    상기 키포인트 검출 회로는, 상기 하나 이상의 키포인트들의 각각의 크기 값들이 상기 이미지 프레임의 각각의 구역들의 제1 세트에 대응하는 상기 키포인트 민감도 임계치 값을 초과하는 것에 응답하여, 상기 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 상기 하나 이상의 키포인트들의 설명을 선택적으로 출력하는, 디바이스.
  18. 제17항에 있어서,
    상기 키포인트 검출 회로는, 상기 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 키포인트들의 카운트를 출력하고; 그리고
    상기 이미지 프레임의 각각의 구역들의 제1 세트에서 검출된 키포인트들의 카운트는, 상기 복수의 키포인트 민감도 임계치 값들 중 하나를 동적으로 조정하도록 프로그램 명령어들에 의해 사용가능한, 디바이스.
  19. 제17항에 있어서, 상기 키포인트 제어 파라미터 저장 구조는,
    상기 이미지 프레임의 각각의 구역들의 제2 세트의 각각의 구역에 대한 키포인트들의 총 수의 설명을 출력하도록 상기 키포인트 검출 회로에 의해 사용가능한 상기 이미지 프레임의 각각의 구역들의 제2 세트의 각각의 구역에 대한 허용가능한 키포인트들의 프로그래밍가능한 최대 제한 - 상기 각각의 구역들의 제2 세트의 각각의 구역에 대한 키포인트들의 총 수는 상기 허용가능한 키포인트들의 프로그래밍가능한 최대 제한을 초과하지 않음 -; 및
    상기 이미지 프레임의 각각의 구역들의 제2 세트의 프로그래밍가능한 사이즈 - 상기 허용가능한 키포인트들의 프로그래밍가능한 최대 제한에 대응하는 상기 각각의 구역들의 제2 세트는, 복수의 조정가능한 키포인트 민감도 임계치 값들에 대응하는 상기 각각의 구역들의 제1 세트보다 상기 이미지 프레임의 더 작은 구역들임 - 를 저장하도록 구성되는, 디바이스.
  20. 제14항에 있어서, 상기 이미지 신호 프로세서는 저전력 모드로 동작하도록 구성되며,
    상기 전단 픽셀 데이터 프로세싱 회로 및 상기 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들은, 상기 키포인트 검출 회로가 미리-정의된 시간 기간 동안 하나 이상의 키포인트들을 검출하지 않는 것에 응답하여 비활성 상태로 진입하고;
    상기 이미지 센서 인터페이스 및 상기 키포인트 검출 회로는, 상기 전단 픽셀 데이터 프로세싱 회로 및 상기 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들이 상기 비활성 상태로 진입하는 동안, 상기 하나 이상의 키포인트들의 설명을 상기 시스템 메모리로 계속 출력하도록 구성된 활성 상태로 유지되며; 그리고
    상기 전단 픽셀 데이터 프로세싱 회로 및 상기 후단 픽셀 데이터 프로세싱 회로의 하나 이상의 스테이지들은, 상기 키포인트 검출 회로가 하나 이상의 키포인트들을 검출하는 것에 응답하여 활성 상태로 진입하는, 디바이스.
KR1020207026531A 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출 KR102309338B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020217031314A KR102474041B1 (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/843,919 US9754182B2 (en) 2015-09-02 2015-09-02 Detecting keypoints in image data
US14/843,919 2015-09-02
PCT/US2016/047829 WO2017040073A1 (en) 2015-09-02 2016-08-19 Detecting keypoints in image data
KR1020187005795A KR20180035857A (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020187005795A Division KR20180035857A (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020217031314A Division KR102474041B1 (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출

Publications (2)

Publication Number Publication Date
KR20200109391A true KR20200109391A (ko) 2020-09-22
KR102309338B1 KR102309338B1 (ko) 2021-10-07

Family

ID=56852410

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020217031314A KR102474041B1 (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출
KR1020207026531A KR102309338B1 (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출
KR1020187005795A KR20180035857A (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020217031314A KR102474041B1 (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020187005795A KR20180035857A (ko) 2015-09-02 2016-08-19 이미지 데이터에서의 키포인트들의 검출

Country Status (6)

Country Link
US (4) US9754182B2 (ko)
EP (1) EP3345120A1 (ko)
JP (1) JP6636637B2 (ko)
KR (3) KR102474041B1 (ko)
CN (1) CN107949850B (ko)
WO (1) WO2017040073A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022045768A1 (ko) 2020-08-28 2022-03-03 계명대학교 산학협력단 당뇨병 치료제에 대한 약물반응성 예측용 마이크로 rna 바이오마커 및 이의 용도

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9918017B2 (en) 2012-09-04 2018-03-13 Duelight Llc Image sensor apparatus and method for obtaining multiple exposures with zero interframe time
US9531961B2 (en) 2015-05-01 2016-12-27 Duelight Llc Systems and methods for generating a digital image using separate color and intensity data
US9819849B1 (en) 2016-07-01 2017-11-14 Duelight Llc Systems and methods for capturing digital images
US10558848B2 (en) 2017-10-05 2020-02-11 Duelight Llc System, method, and computer program for capturing an image with correct skin tone exposure
US9807322B2 (en) 2013-03-15 2017-10-31 Duelight Llc Systems and methods for a digital image sensor
US10924688B2 (en) 2014-11-06 2021-02-16 Duelight Llc Image sensor apparatus and method for obtaining low-noise, high-speed captures of a photographic scene
US11463630B2 (en) 2014-11-07 2022-10-04 Duelight Llc Systems and methods for generating a high-dynamic range (HDR) pixel stream
US9754182B2 (en) 2015-09-02 2017-09-05 Apple Inc. Detecting keypoints in image data
DK3465085T3 (da) 2016-06-06 2022-03-07 Sz Dji Osmo Technology Co Ltd Bærerstøttet sporing
WO2017210822A1 (en) * 2016-06-06 2017-12-14 Sz Dji Osmo Technology Co., Ltd. Image processing for tracking
US9880039B1 (en) * 2016-07-20 2018-01-30 Sensus USA, Inc. Method and apparatus for collecting and providing sensor data
CN114449163A (zh) 2016-09-01 2022-05-06 迪尤莱特公司 基于焦点目标信息调整焦点的装置和方法
CN107689048B (zh) * 2017-09-04 2022-05-31 联想(北京)有限公司 一种检测图像特征点的方法及一种服务器集群
US11284062B2 (en) * 2017-09-05 2022-03-22 Texas Instruments Incorporated Automotive display validation
WO2019157427A1 (en) 2018-02-12 2019-08-15 Gopro, Inc. Image processing
WO2019205069A1 (en) * 2018-04-27 2019-10-31 Beijing Didi Infinity Technology And Development Co., Ltd. Systems and methods for updating 3d model of building
KR102528453B1 (ko) * 2018-10-18 2023-05-02 삼성전자주식회사 영상 내의 특징 추출 방법, 이를 이용하는 영상 매칭 방법 및 영상 처리 방법
CN111368585B (zh) * 2018-12-25 2023-04-21 中国科学院长春光学精密机械与物理研究所 一种弱小目标检测方法、检测系统、存储装置及终端设备
US20200234396A1 (en) * 2019-01-22 2020-07-23 Black Sesame International Holding Limited Heterogeneous computation and hierarchical memory image sensing pipeline
CN110232378B (zh) * 2019-05-30 2023-01-20 苏宁易购集团股份有限公司 一种图像兴趣点检测方法、系统及可读存储介质
CN111445450B (zh) * 2020-03-19 2023-04-07 广州市维安科技股份有限公司 一种基于视频图像分析的输电线状态检测方法
JP7446903B2 (ja) * 2020-04-23 2024-03-11 株式会社日立製作所 画像処理装置、画像処理方法及び画像処理システム
US11354788B1 (en) 2020-12-07 2022-06-07 Advanced Micro Devices, Inc. Overlapped curve mapping for histogram-based local tone and local contrast
CN114862867A (zh) * 2021-12-27 2022-08-05 青岛海尔电冰箱有限公司 冰箱内物品信息识别方法、冰箱和计算机存储介质
CN114943639B (zh) * 2022-05-24 2023-03-28 北京瑞莱智慧科技有限公司 图像获取方法、相关装置及存储介质
CN115034994A (zh) * 2022-06-17 2022-09-09 谢文军 基于视频内容的区域颜色处理的方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130003006A (ko) * 2010-03-11 2013-01-08 퀄컴 인코포레이티드 다수의 피쳐 검출기들의 적용에 기초한 이미지 피쳐 검출
JP2013531853A (ja) * 2010-07-07 2013-08-08 デジタルオプティックス・コーポレイション・ヨーロッパ・リミテッド 実時間でビデオフレームを前処理するハードウェア
KR101528081B1 (ko) * 2010-07-30 2015-06-10 퀄컴 인코포레이티드 증분 특징 추출을 사용하는 오브젝트 인식

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3636618B2 (ja) 1999-07-13 2005-04-06 三菱樹脂株式会社 多孔質パイプの切断面仕上げ装置及び方法
US6591348B1 (en) * 1999-09-09 2003-07-08 International Business Machines Corporation Method and system for resolution of transaction collisions to achieve global coherence in a distributed symmetric multiprocessor system
JP2005293075A (ja) 2004-03-31 2005-10-20 Brother Ind Ltd 3次元形状検出装置、3次元形状検出方法、3次元形状検出プログラム
US20090185746A1 (en) * 2008-01-22 2009-07-23 The University Of Western Australia Image recognition
US20110282897A1 (en) * 2008-06-06 2011-11-17 Agency For Science, Technology And Research Method and system for maintaining a database of reference images
US8144947B2 (en) * 2008-06-27 2012-03-27 Palo Alto Research Center Incorporated System and method for finding a picture image in an image collection using localized two-dimensional visual fingerprints
BRPI0917864A2 (pt) * 2008-08-15 2015-11-24 Univ Brown aparelho e método para estimativa da forma corporal
US8385971B2 (en) * 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing
US8593483B2 (en) 2009-10-20 2013-11-26 Apple Inc. Temporal filtering techniques for image signal processing
CN102763123B (zh) * 2009-12-02 2015-03-25 高通股份有限公司 通过使查询图像和模型图像中的检测到的关键点成群集而进行特征匹配
US8503539B2 (en) * 2010-02-26 2013-08-06 Bao Tran High definition personal computer (PC) cam
US8531542B2 (en) 2010-09-01 2013-09-10 Apple Inc. Techniques for acquiring and processing statistics data in an image signal processor
US8605167B2 (en) 2010-09-01 2013-12-10 Apple Inc. Flexible color space selection for auto-white balance processing
US8786625B2 (en) * 2010-09-30 2014-07-22 Apple Inc. System and method for processing image data using an image signal processor having back-end processing logic
US20140192238A1 (en) 2010-10-24 2014-07-10 Linx Computational Imaging Ltd. System and Method for Imaging and Image Processing
DK177161B1 (en) * 2010-12-17 2012-03-12 Concurrent Vision Aps Method and device for finding nearest neighbor
US9082235B2 (en) * 2011-07-12 2015-07-14 Microsoft Technology Licensing, Llc Using facial data for device authentication or subject identification
US9129277B2 (en) 2011-08-30 2015-09-08 Digimarc Corporation Methods and arrangements for identifying objects
US9898682B1 (en) * 2012-01-22 2018-02-20 Sr2 Group, Llc System and method for tracking coherently structured feature dynamically defined within migratory medium
US9495591B2 (en) * 2012-04-13 2016-11-15 Qualcomm Incorporated Object recognition using multi-modal matching scheme
US9020276B2 (en) * 2012-04-24 2015-04-28 Stmicroelectronics S.R.L. Hardware coprocessor for stripe-based interest point detection
GB2501684B (en) * 2012-04-30 2018-12-12 2D3 Ltd Collaborative sighting
US8872946B2 (en) 2012-05-31 2014-10-28 Apple Inc. Systems and methods for raw image processing
US9025825B2 (en) * 2013-05-10 2015-05-05 Palo Alto Research Center Incorporated System and method for visual motion based object segmentation and tracking
EP3044731A4 (en) * 2013-09-11 2017-02-22 See-Out Pty Ltd. Image searching method and apparatus
US9466009B2 (en) * 2013-12-09 2016-10-11 Nant Holdings Ip. Llc Feature density object classification, systems and methods
WO2015153480A1 (en) * 2014-03-31 2015-10-08 Ebay Inc. Image-based retrieval and searching
US9280832B2 (en) * 2014-05-08 2016-03-08 The Trustees Of The University Of Pennsylvania Methods, systems, and computer readable media for visual odometry using rigid structures identified by antipodal transform
US10127448B2 (en) * 2014-08-27 2018-11-13 Bae Systems Information And Electronic Systems Integration Inc. Method and system for dismount detection in low-resolution UAV imagery
KR101645517B1 (ko) * 2015-04-01 2016-08-05 주식회사 씨케이앤비 특징점 추출 장치 및 방법과 이를 이용한 콘텐츠의 온라인 유통 현황 분석을 위한 이미지 매칭 시스템
US9747516B2 (en) * 2015-05-12 2017-08-29 Qualcomm Incorporated Keypoint detection with trackability measurements
JP6639113B2 (ja) * 2015-06-05 2020-02-05 キヤノン株式会社 画像認識装置、画像認識方法及びプログラム
US9754182B2 (en) 2015-09-02 2017-09-05 Apple Inc. Detecting keypoints in image data
US10013765B2 (en) * 2016-08-19 2018-07-03 Mitsubishi Electric Research Laboratories, Inc. Method and system for image registrations
US11379688B2 (en) * 2017-03-16 2022-07-05 Packsize Llc Systems and methods for keypoint detection with convolutional neural networks
US10769474B2 (en) * 2018-08-10 2020-09-08 Apple Inc. Keypoint detection circuit for processing image pyramid in recursive manner

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130003006A (ko) * 2010-03-11 2013-01-08 퀄컴 인코포레이티드 다수의 피쳐 검출기들의 적용에 기초한 이미지 피쳐 검출
JP2013531853A (ja) * 2010-07-07 2013-08-08 デジタルオプティックス・コーポレイション・ヨーロッパ・リミテッド 実時間でビデオフレームを前処理するハードウェア
KR101528081B1 (ko) * 2010-07-30 2015-06-10 퀄컴 인코포레이티드 증분 특징 추출을 사용하는 오브젝트 인식

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022045768A1 (ko) 2020-08-28 2022-03-03 계명대학교 산학협력단 당뇨병 치료제에 대한 약물반응성 예측용 마이크로 rna 바이오마커 및 이의 용도

Also Published As

Publication number Publication date
US9754182B2 (en) 2017-09-05
WO2017040073A1 (en) 2017-03-09
KR20180035857A (ko) 2018-04-06
CN107949850B (zh) 2022-05-17
EP3345120A1 (en) 2018-07-11
US20170364768A1 (en) 2017-12-21
US20210224575A1 (en) 2021-07-22
US20170061236A1 (en) 2017-03-02
US10909408B2 (en) 2021-02-02
US11756163B2 (en) 2023-09-12
KR20210124510A (ko) 2021-10-14
KR102474041B1 (ko) 2022-12-06
KR102309338B1 (ko) 2021-10-07
JP6636637B2 (ja) 2020-01-29
CN107949850A (zh) 2018-04-20
US20240029210A1 (en) 2024-01-25
JP2018526756A (ja) 2018-09-13

Similar Documents

Publication Publication Date Title
US11756163B2 (en) Detecting keypoints in image data
US10868985B2 (en) Correcting pixel defects based on defect history in an image processing pipeline
US10719918B2 (en) Dynamically determining filtering strength for noise filtering in image processing
US9787922B2 (en) Pixel defect preprocessing in an image signal processor
US9747514B2 (en) Noise filtering and image sharpening utilizing common spatial support
US9479695B2 (en) Generating a high dynamic range image using a temporal filter
US10467496B2 (en) Temporal filtering of independent color channels in image data
US10298863B2 (en) Automatic compensation of lens flare
US9911174B2 (en) Multi-rate processing for image data in an image processing pipeline
JP6574534B2 (ja) 並列コンピュータビジョン及び画像スケーリング・アーキテクチャ
US9413951B2 (en) Dynamic motion estimation and compensation for temporal filtering
US10951843B2 (en) Adjusting confidence values for correcting pixel defects

Legal Events

Date Code Title Description
A107 Divisional application of patent
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant