KR20120061032A - 이미지 신호 처리 시스템에서 오디오 및 비디오 데이터를 동기화하기 위한 기술들 - Google Patents

이미지 신호 처리 시스템에서 오디오 및 비디오 데이터를 동기화하기 위한 기술들 Download PDF

Info

Publication number
KR20120061032A
KR20120061032A KR1020110100179A KR20110100179A KR20120061032A KR 20120061032 A KR20120061032 A KR 20120061032A KR 1020110100179 A KR1020110100179 A KR 1020110100179A KR 20110100179 A KR20110100179 A KR 20110100179A KR 20120061032 A KR20120061032 A KR 20120061032A
Authority
KR
South Korea
Prior art keywords
image
pixel
data
frame
audio
Prior art date
Application number
KR1020110100179A
Other languages
English (en)
Other versions
KR101295977B1 (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 애플 인크.
Publication of KR20120061032A publication Critical patent/KR20120061032A/ko
Application granted granted Critical
Publication of KR101295977B1 publication Critical patent/KR101295977B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/422Input-only peripherals, i.e. input devices connected to specially adapted client devices, e.g. global positioning system [GPS]
    • H04N21/4223Cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformation in the plane of the image
    • G06T3/40Scaling the whole image or part thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/414Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance
    • H04N21/41407Specialised client platforms, e.g. receiver in car or embedded in a mobile appliance embedded in a portable device, e.g. video client on a mobile phone, PDA, laptop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation

Abstract

본 발명은 이미지 신호 처리 시스템(22)을 이용하여 오디오-비디오 동기화를 수행하기 위한 기법들을 제공한다. 일 실시예에서, 시간 코드 레지스터(492)는 샘플링 시의 현재의 타임 스탬프를 제공한다. 시간 코드 레지스터(492)의 값은 이미지 신호 처리 시스템(32)의 클록에 기초하여 규칙적인 간격으로 증가될 수 있다. 이미지 센서(90)에 의해 획득된 현재 프레임의 시작에서, 시간 코드 레지스터(492)가 샘플링되고, 이미지 센서(90)와 관련된 타임스탬프 레지스터로 타임스탬프(500)가 저장된다. 그 후, 타임스탬프(500)는 타임 스탬프 레지스터로부터 판독되고, 현재 프레임과 관련된 메타데이터(498) 세트로 기입된다. 그 후, 프레임 메타데이터(498) 내에 저장된 타임스탬프(500)는 현재 프레임을 대응하는 오디오 데이터 세트와 동기화시키는 데 이용될 수 있다.

Description

이미지 신호 처리 시스템에서 오디오 및 비디오 데이터를 동기화하기 위한 기술들{TECHNIQUES FOR SYNCHRONIZING AUDIO AND VIDEO DATA IN AN IMAGE SIGNAL PROCESSING SYSTEM}
본 발명은 일반적으로 디지털 이미징 장치들에 관한 것으로서, 구체적으로는 디지털 이미징 장치의 이미지 센서를 이용하여 얻은 이미지 데이터를 처리하기 위한 시스템들 및 방법에 관한 것이다.
본 섹션은 아래에 설명 및/또는 청구되는 본 기술들의 다양한 양태들과 관련될 수 있는 기술의 다양한 양태들을 독자에게 소개하는 것을 의도한다. 본 설명은 본 발명의 다양한 양태들의 더 나은 이해를 용이하게 하기 위한 배경 정보를 독자에게 제공하는 데 도움이 될 것으로 생각된다. 따라서, 이러한 설명들은 종래 기술의 용인으로서가 아니라 이를 고려하여 읽어야 한다.
최근에, 디지털 이미징 장치들은 적어도 부분적으로는 평균적인 소비자가 그러한 장치들을 더욱더 입수 가능하게 됨으로 인해 점점 더 대중화되고 있다. 게다가, 다수의 독립형 디지털 카메라가 현재 시장에서 입수 가능한 것에 더하여, 디지털 이미징 장치들은 데스크탑 또는 노트북 컴퓨터, 셀룰러 전화 또는 휴대용 매체 재생기와 같은 다른 전자 장치의 일부로서 통합되는 것이 일반적이다.
이미지 데이터를 얻기 위하여, 대부분의 디지털 이미징 장치들은 이미지 센서를 포함하며, 이미지 센서는 이미지 센서에 의해 검출된 광을 전기 신호로 변환하도록 구성된 다수의 광 검출 요소(예를 들어, 광 검출기들)를 제공한다. 이미지 센서는 이미지 센서에 의해 캡처된 광을 필터링하여 컬러 정보를 캡처하는 컬러 필터 어레이를 더 포함할 수 있다. 이어서, 이미지 센서에 의해 캡처된 이미지 데이터는 이미지 처리 파이프라인에 의해 처리될 수 있으며, 이미지 처리 파이프라인은 다수의 다양한 이미지 처리 동작을 이미지 데이터에 적용하여, 모니터와 같은 디스플레이 장치 상에 관찰을 위해 표시될 수 있는 풀 컬러 이미지를 생성할 수 있다.
통상의 이미지 처리 기술들은 일반적으로 객관적으로나 주관적으로나 관찰자를 즐겁게 하는 관찰 가능 이미지를 생성하는 것을 목표로 하지만, 이러한 통상의 기술들은 이미징 장치 및/또는 이미지 센서에 의해 유발되는 이미지 데이터 내의 에러들 및/또는 왜곡들을 적절히 해결하지 못할 수 있다. 예를 들어, 제조 결함들 또는 동작 실패에 기인할 수 있는 이미지 센서 상의 결함 픽셀들은 광 레벨들을 정확히 감지하지 못할 수 있고, 교정되지 않는 경우에는 처리된 결과 이미지 내에 아티팩트들로서 나타날 수 있다. 게다가, 렌즈 제조시의 결함들에 기인할 수 있는 이미지 센서의 에지에서의 광 강도 저하는 특성 측정들에 악영향을 미칠 수 있으며, 전체적인 광 강도가 불균일한 이미지를 유발할 수 있다. 이미지 처리 파이프라인은 또한 이미지를 선명하게 하기 위한 하나 이상의 프로세스들을 수행할 수 있다. 그러나, 통상의 선명화 기술들은 이미지 신호 내에 존재하는 잡음을 적절히 제거하지 못할 수 있거나, 이미지 내의 에지들 및 텍스처 영역들과 잡음을 구별하지 못할 수 있다. 이러한 예들에서, 통상의 선명화 기술들은 실제로 이미지 내의 잡음의 출현을 증가시킬 수 있으며, 이는 일반적으로 바람직하지 못하다. 게다가, 그 일부가 통계 수집 엔진에 의해 수집되는 이미지 통계에 의존할 수 있는 다양한 추가적인 이미지 처리 단계들도 수행될 수 있다.
이미지 센서에 의해 캡처된 이미지 데이터에 적용될 수 있는 또 하나의 이미지 처리 동작은 디모자이킹(demosaicing) 동작이다. 컬러 필터 어레이는 일반적으로 센서 픽셀당 일 파장의 컬러 데이터를 제공하므로, 풀 컬러 이미지(예를 들어, RGB 이미지)를 재생하기 위하여, 일반적으로 컬러 데이터의 풀 세트가 각각의 컬러 채널에 대해 보간된다. 일반적으로, 통상의 디모자이킹 기술들은 일반적으로 소정 타입의 일정한 임계치에 의존하여 수평 또는 수직 방향으로 누락 컬러 데이터에 대한 값들을 보간한다. 그러나, 이러한 통상의 디모자이킹 기술들은 이미지 내의 에지들의 위치들 및 방향을 적절히 설명하지 못할 수 있으며, 이는 특히 이미지 내의 대각 에지들을 따라 풀 컬러 이미지 내에 삽입되는 에일리어싱, 체커보드 아티팩트들 또는 레인보우 아티팩트들과 같은 에지 아티팩트들을 유발할 수 있다.
따라서, 디지털 카메라 또는 다른 이미징 장치로 얻은 디지털 이미지를 처리할 때 결과 이미지의 외관을 개선하기 위해 다양한 고려 항목들이 다루어져야 한다. 특히, 아래의 발명의 소정의 양태들은 위에서 간단히 언급한 단점들 중 하나 이상을 해결할 수 있다.
본 명세서에 개시되는 소정 실시예들의 요약이 아래에 제공된다. 이러한 양태들은 단지 이러한 소정의 실시예들의 간단한 요약을 독자에게 제공하기 위해 설명되며, 이러한 양태들은 본 발명의 범위를 한정하는 것을 의도하지 않는다는 것을 이해해야 한다. 사실상, 본 발명은 아래에 설명되지 않을 수도 있는 다양한 양태들을 포함할 수 있다.
본 발명은 이미지 신호 처리 기술들의 다양한 실시예들을 제공하고 예시한다. 구체적으로, 본 발명의 개시되는 실시예들은 백-엔드(back-end) 이미지 프로세싱 유닛을 이용하는 이미지 데이터의 처리, 미가공(raw) 픽셀 프로세싱 로직을 구현하기 위한 라인 버퍼들의 배열 및 구성, (오버런(overrun)이라고 하는) 오버플로우 상황들의 존재하에 픽셀 데이터의 이동을 관리하기 위한 기술, 비디오 및 오디오 데이터를 동기화하기 위한 기술들은 물론, 픽셀 데이터를 메모리에 저장하고 메모리로부터 픽셀 데이터를 판독하는 데 사용될 수 있는 다양한 픽셀 메모리 포맷들의 이용에 관한 기술들과 관련될 수 있다.
백-엔드 처리와 관련하여, 개시되는 실시예들은 프론트-엔드 픽셀 프로세싱 유닛 및 픽셀 처리 파이프라인 중 적어도 하나에 의해 처리된 후에 픽셀 데이터를 수신하는 백-엔드 픽셀 프로세싱 유닛을 포함하는 이미지 신호 처리 시스템을 제공한다. 소정 실시예들에서, 백-엔드 프로세싱 유닛은 루마(luma)/크로마(chroma) 이미지 데이터를 수신하며, 얼굴 검출 동작들, 로컬 색조 맵핑, 밝기, 콘트라스트, 컬러 조정들은 물론, 스케일링을 적용하도록 구성될 수 있다. 게다가, 백-엔드 프로세싱 유닛은 주파수 통계를 수집할 수 있는 백-엔드 통계 유닛도 포함할 수 있다. 주파수 통계는 인코더에 제공될 수 있으며, 이미지 프레임에 적용될 양자화 파라미터들을 결정하는 데 사용될 수 있다.
본 발명의 추가 양태는 라인 버퍼들의 세트를 이용하는 미가공 픽셀 프로세싱 유닛의 구현에 관한 것이다. 일 실시예에서, 라인 버퍼들의 세트는 제1 서브세트 및 제2 서브세트를 포함할 수 있다. 미가공 픽셀 프로세싱 유닛의 다양한 로직 유닛들은 라인 버퍼들의 제1 및 제2 서브세트들을 공유 방식으로 이용하여 구현될 수 있다. 예를 들어, 일 실시예에서는, 결함 픽셀 교정 및 검출 로직이 라인 버퍼들의 제1 서브세트를 이용하여 구현될 수 있다. 라인 버퍼들의 제2 서브세트는 렌즈 음영(shading) 교정 로직, 이득, 오프셋 및 클램핑 로직, 및 디모자이킹 로직을 구현하는 데 사용될 수 있다. 게다가, 라인 버퍼들의 제1 및 제2 서브세트들 각각의 적어도 일부를 이용하여 잡음 감소도 구현될 수 있다.
본 발명의 또 하나의 양태는 센서 입력 큐 및/또는 프론트-엔드 프로세싱 유닛이 다운스트림 목적지 유닛(downstream destination unit)으로부터 역압력(back pressure)을 받을 때 오버플로우 상황을 검출하는 오버플로우 제어 로직을 포함하는 이미지 신호 처리 시스템과 관련될 수 있다. 이미지 신호 처리 시스템은 센서 타이밍 신호를 이용함으로써 목표 이미지 프레임의 개시 전에 플래시 장치를 활성화하도록 구성되는 플래시 제어기도 포함할 수 있다. 일 실시예에서, 플래시 제어기는 지연된 센서 타이밍 신호를 수신하고, 지연된 센서 타이밍 신호를 이용함으로써 플래시 활성화 개시 시간을 결정하여, 이전 프레임의 종료에 대응하는 시간을 식별하고, 그 시간을 수직 공백 시간만큼 증가시킨 후에, 제1 오프셋을 차감하여, 센서 타이밍 신호와 지연된 센서 타이밍 신호 사이의 지연을 보상한다. 이어서, 플래시 제어기는 제2 오프셋을 차감하여 플래시 활성화 시간을 결정하며, 따라서 목표 프레임의 제1 픽셀을 수신하기 전에 플래시가 활성화되는 것을 보장한다. 본 발명의 추가 양태들은 오디오-비디오 동기화와 관련된 기술들을 제공한다. 일 실시예에서는, 타임 코드 레지스터가 샘플링 시에 현재의 타임 스탬프를 제공한다. 타임 코드 레지스터의 값은 이미지 신호 처리 시스템의 클록에 기초하여 규칙적인 간격으로 증가될 수 있다. 이미지 센서에 의해 취득된 현재 프레임의 개시시에, 타임 코드 레지스터가 샘플링되고, 이미지 센서와 관련된 타임스탬프 레지스터에 타임스탬프가 저장된다. 이어서, 타임스탬프가 타임스탬프 레지스터로부터 판독되어, 현재 프레임과 관련된 메타데이터의 세트에 기입된다. 이어서, 프레임 메타데이터에 저장된 타임스탬프는 현재 프레임을 대응하는 오디오 데이터의 세트와 동기화하는 데 사용될 수 있다.
본 발명의 추가 양태는 다양한 타입의 픽셀들 및 픽셀 메모리 포맷들을 저장하고 판독하도록 구성되는 플렉시블 메모리 입출력 제어기를 제공한다. 예를 들어, I/O 제어기는 8비트, 10비트, 12비트, 14비트 및 16비트 등의 다양한 정밀도의 비트들에서의 미가공 이미지 픽셀들의 저장 및 판독을 지원할 수 있다. 메모리 바이트들과 정렬되지 않는 픽셀 포맷들(예를 들어, 8비트의 배수가 아님)은 팩킹 방식(packed manner)으로 저장될 수 있다. 메모리 I/O 제어기는 RGB 픽셀 세트들 및 YCC 픽셀 세트들의 다양한 포맷들도 지원할 수 있다.
본 발명의 다양한 양태들과 관련하여 전술한 특징들의 다양한 개량들이 존재할 수 있다. 추가적인 특징들도 이러한 다양한 양태들에 포함될 수 있다. 이러한 개량들 및 추가적인 특징들은 개별적으로 또는 임의의 조합으로 존재할 수 있다. 예를 들어, 예시되는 실시예들 중 하나 이상과 관련하여 후술하는 다양한 특징들은 본 발명의 전술한 양태들 중 임의의 양태 내에 단독으로 또는 임의의 조합으로 포함될 수 있다. 다시, 전술한 간단한 요약은 청구 발명에 대한 한정이 아니라, 본 발명의 실시예들의 소정 양태들 및 상황들을 독자에게 잘 알리는 것만을 의도한다.
본 특허 또는 출원 파일은 컬러로 작성된 적어도 하나의 도면을 포함한다. 컬러 도면들을 갖는 본 특허 또는 특허 출원 공보의 사본들은 요청 및 필요한 수수료의 납부시에 특허청에 의해 제공될 것이다.
본 발명의 다양한 양태들은 아래의 상세한 설명을 읽을 때 그리고 아래의 도면들을 참조할 때 더 잘 이해될 수 있다.
도 1은 본 명세서에서 설명되는 하나 이상의 이미지 처리 기술을 구현하도록 구성되는 이미징 장치 및 이미지 처리 회로를 포함하는 전자 장치의 일례의 컴포넌트들을 도시하는 간단한 블록도.
도 2는 도 1의 이미징 장치 내에 구현될 수 있는 베이어(Bayer) 컬러 필터 어레이의 2x2 픽셀 블록의 그래픽 표현을 나타내는 도면.
도 3은 본 발명의 양태들에 따른, 랩탑 컴퓨팅 장치 형태의 도 1의 전자 장치의 사시도.
도 4는 본 발명의 양태들에 따른, 데스크탑 컴퓨팅 장치 형태의 도 1의 전자 장치의 정면도.
도 5는 본 발명의 양태들에 따른, 핸드헬드 휴대용 전자 장치 형태의 도 1의 전자 장치의 정면도.
도 6은 도 5에 도시된 전자 장치의 배면도.
도 7은 본 발명의 양태들에 따른, 프론트-엔드 이미지 신호 처리(ISP) 로직 및 ISP 파이프 프로세싱 로직을 포함하는 도 1의 이미지 처리 회로의 일 실시예를 나타내는 블록도.
도 8은 본 발명의 양태들에 따른, 프론트-엔드 이미지 신호 처리(ISP) 로직, ISP 파이프(파이프라인) 프로세싱 로직 및 ISP 백-엔드 프로세싱 로직을 포함하는 도 1의 이미지 처리 회로의 다른 실시예를 나타내는 블록도.
도 9는 본 발명의 양태들에 따른, 도 7 또는 도 8의 이미지 처리 회로를 이용하여 이미지 데이터를 처리하기 위한 방법들을 나타내는 흐름도.
도 10은 본 발명의 양태들에 따른, 도 7 또는 도 8에서 구현될 수 있는 ISP 프론트-엔드 로직의 일 실시예를 나타내는 더 상세한 블록도.
도 11은 일 실시예에 따른, 도 10의 ISP 프론트-엔드 로직에서 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도.
도 12는 일 실시예에 따른, ISP 프론트-엔드 로직에서 이미지 데이터를 처리하는 데 사용될 수 있는 더블 버퍼 레지스터들(double buffered resgisters) 및 제어 레지스터들의 구성을 나타내는 블록도.
도 13-15는 본 기술들의 실시예들에 따른, 이미지 프레임의 처리를 트리거하기 위한 상이한 모드들을 나타내는 타이밍도들.
도 16은 일 실시예에 따른, 제어 레지스터를 더 상세히 나타내는 도면.
도 17은 도 10의 ISP 프론트-엔드 로직이 단일 센서 모드로 동작하고 있을 때 프론트-엔드 픽셀 프로세싱 유닛을 이용하여 이미지 프레임들을 처리하기 위한 방법을 나타내는 흐름도.
도 18은 도 10의 ISP 프론트-엔드 로직이 이중 센서 모드로 동작하고 있을 때 프론트-엔드 픽셀 프로세싱 유닛을 이용하여 이미지 프레임들을 처리하기 위한 방법을 나타내는 흐름도.
도 19는 도 10의 ISP 프론트-엔드 로직이 듀얼 센서 모드로 동작하고 있을 때 프론트-엔드 픽셀 프로세싱 유닛을 이용하여 이미지 프레임들을 처리하기 위한 방법을 나타내는 흐름도.
도 20은, 양 이미지 센서들이 활성 상태에 있지만, 제1 이미지 센서는 이미지 프레임들을 프론트-엔드 픽셀 프로세싱 유닛으로 전송하는 반면에, 제2 이미지 센서는 이미지 프레임들을 통계 프로세싱 유닛으로 전송함으로써, 제2 이미지 센서가 나중에 이미지 프레임들을 프론트-엔드 픽셀 프로세싱 유닛으로 계속 전송할 때 제2 센서에 대한 이미징 통계가 즉시 이용될 수 있게 하는 일 실시예에 따른 방법을 나타내는 흐름도.
도 21은 본 발명의 양태들에 따른, 도 1의 전자 장치의 메모리에 저장된 픽셀 포맷들에 적용될 수 있는 선형 메모리 어드레싱 포맷의 그래픽 도면.
도 22는 본 발명의 양태들에 따른, 도 1의 전자 장치의 메모리에 저장된 픽셀 포맷들에 적용될 수 있는 타일형 메모리 어드레싱 포맷의 그래픽 도면.
도 23은 본 발명의 양태들에 따른, 이미지 센서에 의해 캡처된 소스 이미지 프레임 내에 정의될 수 있는 다양한 이미징 영역들의 그래픽 도면.
도 24는 ISP 프론트-엔드 프로세싱 유닛을 이용하여 이미지 프레임의 오버랩핑 수직 줄무늬들을 처리하기 위한 기술의 그래픽 도면.
도 25는 본 발명의 양태들에 따른, 바이트 스왑핑이 스왑 코드를 이용하여 메모리로부터 들어오는 이미지 픽셀 데이터에 적용될 수 있는 방법을 나타내는 도면.
도 26-29는 본 발명의 실시예들에 따른, 도 7 또는 도 8의 이미지 처리 회로에 의해 지원될 수 있는 미가공 이미지 데이터에 대한 메모리 포맷들의 예들을 나타내는 도면들.
도 30-34는 본 발명의 실시예들에 따른, 도 7 또는 도 8의 이미지 처리 회로에 의해 지원될 수 있는 풀 컬러 RGB 이미지 데이터에 대한 메모리 포맷들의 예들을 나타내는 도면들.
도 35-36은 본 발명의 실시예들에 따른, 도 7 또는 도 8의 이미지 처리 회로에 의해 지원될 수 있는 루마/크로마 이미지 데이터(YUV/YC1C2)에 대한 메모리 포맷들의 예들을 나타내는 도면들.
도 37은 본 발명의 양태들에 따른, 선형 어드레싱 포맷에서 메모리 내의 프레임 위치를 결정하기 위한 방법의 일례를 나타내는 도면.
도 38은 본 발명의 양태들에 따른, 타일 어드레싱 포맷에서 메모리 내의 프레임 위치를 결정하기 위한 방법의 일례를 나타내는 도면.
도 39는 본 발명의 일 실시예에 따른, 오버플로우 처리가 수행될 수 있는 방법을 나타내는 도 8의 ISP 회로의 블록도.
도 40은 본 발명의 양태들에 따른, 이미지 픽셀 데이터가 픽처 메모리로부터 판독되고 있는 동안에 오버플로우 상황이 발생할 때의 오버플로우 처리 방법을 나타내는 흐름도.
도 41은 본 발명의 일 실시예에 따른, 이미지 픽셀 데이터가 이미지 센서 인터페이스로부터 판독되고 있는 동안에 오버플로우 상황이 발생할 때의 오버플로우 처리 방법을 나타내는 흐름도.
도 42는 본 발명의 추가 실시예에 따른, 이미지 픽셀 데이터가 이미지 센서 인터페이스로부터 판독되고 있는 동안에 오버플로우 상황이 발생할 때의 다른 오버플로우 처리 방법을 나타내는 흐름도.
도 43은 도 1의 전자 장치에 의해 캡처되고 저장될 수 있는 이미지(예를 들어, 비디오) 및 대응하는 오디오 데이터의 그래픽 도면.
도 44는 일 실시예에 따른, 도 43의 오디오 및 비디오 데이터를 동기화하기 위한 타임스탬프들을 제공하는 데 사용될 수 있는 레지스터들의 세트를 나타내는 도면.
도 45는 본 발명의 양태들에 따른, 도 43의 비디오 데이터의 일부로서 캡처될 수 있는 이미지 프레임의 간소화된 표현으로서, 타임스탬프 정보가 이미지 프레임 메타데이터의 일부로서 저장될 수 있는 방법을 나타내는 도면.
도 46은 일 실시예에 따른, VSYNC 신호에 기초하는 타임스탬프들을 이용하여 이미지 데이터와 오디오 데이터를 동기화하기 위한 방법을 나타내는 흐름도.
도 47은 본 발명의 일 실시예에 따른, 플래시 타이밍 제어가 수행될 수 있는 방법을 나타내는 도 8의 ISP 회로의 블록도.
도 48은 본 발명의 일 실시예에 따른, 플래시 활성화 및 비활성화 시간들을 결정하기 위한 기술을 나타내는 도면.
도 49는 도 48에 도시된 기술에 기초하여 플래시 활성화 시간들을 결정하기 위한 방법을 나타내는 흐름도.
도 50은 본 발명의 양태들에 따른, 플래시를 이용하는 이미지 장면의 취득 전에 프리-플래시를 이용하여 이미지 통계를 갱신하기 위한 방법을 나타내는 흐름도.
도 51은 본 발명의 양태들에 따른, 도 10의 ISP 프론트-엔드 로직 내에 도시된 바와 같은 ISP 프론트-엔드 픽셀 프로세싱 유닛의 일 실시예의 더 상세한 도면을 제공하는 블록도.
도 52는 일 실시예에 따른, 도 51에 도시된 ISP 프론트-엔드 픽셀 프로세싱 유닛에 의해 수신된 이미지 픽셀 데이터에 시간 필터링이 적용될 수 있는 방법을 나타내는 프로세스 도면.
도 53은 도 52에 도시된 시간 필터링 프로세스에 대한 하나 이상의 파라미터를 결정하는 데 사용될 수 있는 기준 이미지 픽셀들의 세트 및 대응하는 현재 이미지 픽셀들의 세트를 나타내는 도면.
도 54는 일 실시예에 따른, 이미지 데이터 세트의 현재 이미지 픽셀에 시간 필터링을 적용하기 위한 프로세스를 나타내는 흐름도.
도 55는 일 실시예에 따른, 도 54의 현재 이미지 픽셀의 시간 필터링에서 사용하기 위한 모션 델타 값을 계산하기 위한 기술을 나타내는 흐름도.
도 56은 다른 실시예에 따른, 이미지 데이터의 각각의 컬러 성분에 대한 상이한 이득들의 사용을 포함하는 이미지 데이터 세트의 현재 이미지 픽셀에 시간 필터링을 적용하기 위한 다른 프로세스를 나타내는 도면.
도 57은 추가 실시예에 따른, 시간 필터링 기술이 도 51에 도시된 ISP 프론트-엔드 픽셀 프로세싱 유닛에 의해 수신된 이미지 픽셀 데이터의 각각의 컬러 성분에 대한 개별 모션 및 루마 도표들을 이용하는 방법을 나타내는 프로세스 도면.
도 58은 추가 실시예에 따른, 도 57에 도시된 모션 및 루마 도표들을 이용하여 이미지 데이터 세트의 현재 이미지 픽셀에 시간 필터링을 적용하기 위한 프로세스를 나타내는 흐름도.
도 59는 본 발명의 양태들에 따른, 이미지 센서에 의해 캡처될 수 있는 최대 해상도 미가공 이미지 데이터의 샘플을 나타내는 도면.
도 60은 본 발명의 일 실시예에 따른, 도 59의 최대 해상도 미가공 이미지 데이터에 비닝(binning)을 적용하여 비닝된 미가공 이미지 데이터의 샘플을 출력하도록 구성될 수 있는 이미지 센서를 나타내는 도면.
도 61은 본 발명의 양태들에 따른, 도 60의 이미지 센서에 의해 제공될 수 있는 비닝된 미가공 이미지 데이터의 샘플을 나타내는 도면.
도 62는 본 발명의 양태들에 따른, 제공하기 위해 비닝 보상 필터에 의해 다시 샘플링된 후의 도 61로부터의 비닝된 미가공 이미지 데이터를 나타내는 도면.
도 63은 일 실시예에 따른, 도 51의 ISP 프론트-엔드 픽셀 프로세싱 유닛 내에 구현될 수 있는 비닝 보상 필터를 나타내는 도면.
도 64는 본 발명의 양태들에 따른, 비닝 보상 필터링을 위한 중심 입력 픽셀들 및 인덱스/위상들(phases)을 선택하기 위해 차동 분석기에 적용될 수 있는 다양한 단차(step) 크기들의 그래픽 도면.
도 65는 일 실시예에 따른, 도 63의 비닝 보상 필터를 이용하여 이미지 데이터를 스케일링하기 위한 프로세스를 나타내는 흐름도.
도 66은 일 실시예에 따른, 도 63의 비닝 보상 필터에 의한 수평 및 수직 필터링을 위한 현재 입력 소스 중심 픽셀을 결정하기 위한 프로세스를 나타내는 흐름도.
도 67은 일 실시예에 따른, 도 63의 비닝 보상 필터에 의한 수평 및 수직 필터링을 위한 필터링 계수들을 선택하기 위한 인덱스를 결정하기 위한 프로세스를 나타내는 흐름도.
도 68은 본 발명의 양태들에 따른, 도 10에 도시된 바와 같은 ISP 프론트-엔드 프로세싱 로직 내에 구현될 수 있는 통계 프로세싱 유닛의 일 실시예를 나타내는 더 상세한 블록도.
도 69는 본 발명의 양태들에 따른, 도 68의 통계 프로세싱 유닛에 의한 통계 처리 동안에 결함 픽셀들을 검출하고 교정하기 위한 기술들을 적용할 때 고려될 수 있는 다양한 이미지 프레임 경계 사례들의 도면.
도 70은 일 실시예에 따른, 통계 처리 동안에 결함 픽셀 검출 및 교정을 수행하기 위한 프로세스를 나타내는 흐름도.
도 71은 이미징 장치의 통상적인 렌즈에 대한 광 강도 대 픽셀 위치를 나타내는 삼차원 프로파일의 도면.
도 72는 렌즈 음영 불규칙의 결과일 수 있는, 이미지 전역에서의 불균일한 광 강도를 나타내는 컬러 도면.
도 73은 본 발명의 양태들에 따른, 렌즈 음영 교정 영역 및 이득 그리드를 포함하는 미가공 이미징 프레임의 그래픽 도면.
도 74는 본 발명의 양태들에 따른, 4개의 경계 그리드 이득 포인트에 의해 둘러싸인 이미지 픽셀에 대한 이득 값의 보간을 나타내는 도면.
도 75는 본 발명의 일 실시예에 따른, 렌즈 음영 교정 동작 동안에 이미징 픽셀들에 적용될 수 있는 보간된 이득 값들을 결정하기 위한 프로세스를 나타내는 흐름도.
도 76은 본 발명의 양태들에 따른, 렌즈 음영 교정을 수행할 때 도 71에 도시된 광 강도 특성들을 나타내는 이미지에 적용될 수 있는 보간된 이득 값들을 나타내는 삼차원 프로파일 도면.
도 77은 본 발명의 양태들에 따른, 렌즈 음영 교정 동작이 적용된 후에 개선된 광 강도 균일성을 나타내는 도 72로부터의 컬러 도면을 나타내는 도면.
도 78은 일 실시예에 따른, 현재 픽셀과 이미지 중심 사이의 방사상 거리가 계산되고, 렌즈 음영 교정을 위한 방사상 이득 성분을 결정하는 데 사용될 수 있는 방법을 그래픽으로 나타내는 도면.
도 79는 본 기술의 일 실시예에 따른, 이득 그리드로부터의 방사상 이득들 및 보간된 이득들이 렌즈 음영 교정 동작 동안에 이미징 픽셀들에 적용될 수 있는 총 이득을 결정하는 데 사용되는 프로세스를 나타내는 흐름도.
도 80은 컬러 공간 내의 백색 영역들 및 낮은 컬러 온도 축 및 높은 컬러 온도 축을 나타내는 그래프.
도 81은 일 실시예에 따른, 백색 균형 이득들이 다양한 기준 발광 조건들을 위해 구성될 수 있는 방법을 나타내는 도표.
도 82는 본 발명의 일 실시예에 따른, ISP 프론트-엔드 프로세싱 로직 내에 구현될 수 있는 통계 수집 엔진을 나타내는 블록도.
도 83은 본 발명의 양태들에 따른, 미가공 베이어 RGB 데이터의 다운 샘플링을 나타내는 도면.
도 84는 일 실시예에 따른, 도 82의 통계 수집 엔진에 의해 수집될 수 있는 이차원 컬러 히스토그램을 나타내는 도면.
도 85는 이차원 컬러 히스토그램 내에서의 줌잉(zooming) 및 패닝(panning)을 나타내는 도면.
도 86은 일 실시예에 따른, 통계 수집 엔진의 픽셀 필터를 구현하기 위한 로직을 나타내는 더 상세한 도면.
도 87은 일 실시예에 따른, C1-C2 컬러 공간 내의 픽셀의 위치가 픽셀 필터에 대해 정의된 픽셀 조건에 기초하여 평가될 수 있는 방법의 그래픽 도면.
도 88은 다른 실시예에 따른, C1-C2 컬러 공간 내의 픽셀의 위치가 픽셀 필터에 대해 정의된 픽셀 조건에 기초하여 평가될 수 있는 방법의 그래픽 도면.
도 89는 또 다른 실시예에 따른, C1-C2 컬러 공간 내의 픽셀의 위치가 픽셀 필터에 대해 정의된 픽셀 조건에 기초하여 평가될 수 있는 방법의 그래픽 도면.
도 90은 일 실시예에 따른, 플리커를 보상하기 위해 이미지 센서 적분 시간들(integration times)이 결정될 수 있는 방법을 나타내는 그래프.
도 91은 일 실시예에 따른, 도 82의 통계 수집 엔진 내에 구현될 수 있고, 자동 포커스 통계를 수집하도록 구성될 수 있는 로직을 나타내는 상세 블록도.
도 92는 일 실시예에 따른, 대략 및 미세 자동 포커스 스코어링 값들을 이용하여 자동 포커스를 수행하기 위한 기술을 나타내는 그래프.
도 93은 일 실시예에 따른, 대략 및 미세 자동 포커스 스코어링 값들을 이용하여 자동 포커스를 수행하기 위한 프로세스의 흐름도.
도 94 및 95는 백색 균형 루마 값을 얻기 위한 미가공 베이어 데이터의 데시메이션(decimation)을 나타내는 도면.
도 96은 일 실시예에 따른, 각각의 컬러 성분에 대한 상대적인 자동 포커스 스코어링 값들을 이용하여 자동 포커스를 수행하기 위한 기술을 나타내는 도면.
도 97은 일 실시예에 따른, 베이어 RGB 히스토그램 데이터가 흑색 레벨 보상을 지원하는 데 사용될 수 있는 방법을 나타내는 도 68의 통계 프로세싱 유닛의 상세도.
도 98은 본 발명의 양태들에 따른, 도 7의 ISP 파이프 프로세싱 로직의 일 실시예를 나타내는 블록도.
도 99는 본 발명의 양태들에 따른, 도 98의 ISP 파이프 프로세싱 로직 내에 구현될 수 있는 미가공 픽셀 처리 블록의 일 실시예를 나타내는 상세도.
도 100은 본 발명의 양태들에 따른, 도 99에 도시된 미가공 픽셀 처리 블록에 의한 처리 동안에 결함 픽셀들을 검출하고 교정하기 위한 기술들을 적용할 때 고려될 수 있는 다양한 이미지 프레임 경계 사례들의 도면.
도 101-103은 일 실시예에 따른, 도 99의 미가공 픽셀 처리 블록에서 수행될 수 있는, 결함 픽셀들을 검출하고 교정하기 위한 다양한 프로세스들을 나타내는 흐름도들.
도 104는 본 발명의 양태들에 따른, 도 99의 미가공 픽셀 처리 블록에 의한 처리 동안에 녹색 불균일 교정 기술들을 적용할 때 보간될 수 있는 베이어 이미지 센서의 2x2 픽셀 블록 내의 2개의 녹색 픽셀의 위치를 나타내는 도면.
도 105는 본 발명의 양태들에 따른, 잡음 감소를 위한 수평 필터링 프로세스의 일부로서 사용될 수 있는 중심 픽셀 및 관련 수평 이웃 픽셀들을 포함하는 픽셀들의 세트를 나타내는 도면.
도 106은 본 발명의 양태들에 따른, 잡음 감소를 위한 수직 필터링 프로세스의 일부로서 사용될 수 있는 중심 픽셀 및 관련 수직 이웃 픽셀들을 포함하는 픽셀들의 세트를 나타내는 도면.
도 107은 풀 컬러 RGB 이미지를 생성하기 위하여 디모자이킹이 미가공 베이어 이미지 패턴에 적용될 수 있는 방법을 나타내는 간단한 흐름도.
도 108은 일 실시예에 따른, 베이어 이미지 패턴의 디모자이킹 동안에 녹색 값들을 보간하기 위해 수평 및 수직 에너지 성분들을 도출할 수 있는 베이어 이미지 패턴의 픽셀들의 세트를 나타내는 도면.
도 109는 본 기술의 양태들에 따른, 베이어 이미지 패턴의 디모자이킹 동안에 보간된 녹색 값의 수평 성분을 결정하기 위해 필터링을 적용할 수 있는 수평 픽셀들의 세트를 나타내는 도면.
도 110은 본 기술의 양태들에 따른, 베이어 이미지 패턴의 디모자이킹 동안에 보간된 녹색 값의 수직 성분을 결정하기 위해 필터링을 적용할 수 있는 수직 픽셀들의 세트를 나타내는 도면.
도 111은 본 기술의 양태들에 따른, 베이어 이미지 패턴의 디모자이킹 동안에 보간된 적색 및 청색 값들을 결정하기 위해 필터링을 적용할 수 있는 다양한 3x3 픽셀 블록들을 나타내는 도면.
도 112-115는 일 실시예에 따른, 베이어 이미지 패턴의 디모자이킹 동안에 녹색, 적색 및 청색 값들을 보간하기 위한 다양한 프로세스들을 나타내는 흐름도들.
도 116은 이미지 센서에 의해 캡처되고, 본 명세서에서 개시되는 디모자이킹 기술들의 양태들에 따라 처리될 수 있는 오리지널 이미지 장면의 컬러 도면.
도 117은 도 116에 도시된 이미지 장면의 베이어 이미지 패턴의 컬러 도면.
도 118은 도 117의 베이어 이미지 패턴에 기초하는 통상의 디모자이킹 기술을 이용하여 재구성된 RGB 이미지의 컬러 도면.
도 119는 본 명세서에서 개시되는 디모자이킹 기술들의 양태들에 따른, 도 117의 베이어 이미지 패턴으로부터 재구성된 RGB 이미지의 컬러 도면.
도 120-123은 일 실시예에 따른, 도 99의 미가공 픽셀 처리 블록을 구현하는 데 사용될 수 있는 라인 버퍼들의 구성 및 배열을 나타내는 도면.
도 124는 일 실시예에 따른, 도 120-123에 도시된 라인 버퍼 구성을 이용하여 미가공 픽셀 데이터를 처리하기 위한 방법을 나타내는 흐름도.
도 125는 본 발명의 양태들에 따른, 도 98의 ISP 파이프 프로세싱 로직 내에 구현될 수 있는 RGB 처리 블록의 일 실시예를 나타내는 상세도.
도 126은 본 발명의 양태들에 따른, 도 98의 ISP 파이프 프로세싱 로직 내에 구현될 수 있는 YCbCr 처리 블록의 일 실시예를 나타내는 상세도.
도 127은 본 발명의 양태들에 따른, 1-플레인 포맷을 이용하여 소스 버퍼 내에 정의되는 바와 같은 루마 및 크로마에 대한 활성 소스 영역들의 그래픽 도면.
도 128은 본 발명의 양태들에 따른, 2-플레인 포맷을 이용하여 소스 버퍼 내에 정의되는 바와 같은 루마 및 크로마에 대한 활성 소스 영역들의 그래픽 도면.
도 129는 일 실시예에 따른, 도 126에 도시된 바와 같은 YCbCr 처리 블록 내에 구현될 수 있는 이미지 선명화 로직을 나타내는 블록도.
도 130은 일 실시예에 따른, 도 126에 도시된 바와 같은 YCbCr 처리 블록 내에 구현될 수 있는 에지 향상 로직을 나타내는 블록도.
도 131은 본 발명의 양태들에 따른, 선명화된 루마 값들에 대한 크로마 감쇠 인자들의 관계를 나타내는 그래프.
도 132는 일 실시예에 따른, 도 126에 도시된 바와 같은 YCbCr 처리 블록 내에 구현될 수 있는 이미지 휘도, 콘트라스트 및 컬러(BCC) 조정 로직을 나타내는 블록도.
도 133은 도 132에 도시된 BCC 조정 로직에서의 컬러 조정 동안에 적용될 수 있는 다양한 색조 각도들 및 채도 값들을 정의하는 YCbCr 컬러 공간 내의 색조 및 채도 휠을 나타내는 도면.
도 134는 본 발명의 양태들에 따른, ISP 파이프라인 다운스트림의 다양한 후처리 단계들을 수행하도록 구성될 수 있는 도 8의 ISP 백-엔드 프로세싱 로직의 일 실시예를 나타내는 블록도.
도 135는 통상의 글로벌 색조 맵핑 기술을 나타내는 그래픽 도면.
도 136은 다른 통상의 글로벌 색조 맵핑 기술을 나타내는 그래픽 도면.
도 137은 본 발명의 양태들에 따른, 로컬 색조 적용 기술들의 적용을 위해 이미지의 영역들이 분할될 수 있는 방법을 나타내는 도면.
도 138은 통상의 로컬 색조 맵핑이 출력 색조 범위의 제한된 이용을 유발할 수 있는 방법을 그래픽으로 나타내는 도면.
도 139는 본 발명의 실시예들에 따른, 로컬 색조 맵핑을 위한 기술을 그래픽으로 나타내는 도면.
도 140은 본 발명의 양태들에 따른, 도 134의 ISP 백-엔드 로직에서 색조 맵핑 프로세스들을 구현하도록 구성될 수 있는 로컬 색조 맵핑 LTM 로직의 일 실시예를 나타내는 상세 블록도.
도 141은 일 실시예에 따른, 도 134의 ISP 백-엔드 프로세싱 로직을 이용하여 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도.
도 142는 일 실시예에 따른, 도 140에 도시된 LTM 로직을 이용하여 색조 맵핑을 적용하기 위한 방법을 나타내는 흐름도.
본 발명의 하나 이상의 특정 실시예들이 아래에 설명된다. 이러한 설명되는 실시예들은 현재 개시되는 기술들의 예들일 뿐이다. 게다가, 이러한 실시예들의 간결한 설명을 제공하기 위하여, 실제 구현의 특징들 모두가 명세서에서 설명되지는 않을 수도 있다. 임의의 엔지니어링 또는 설계 프로젝트에서와 같이, 임의의 그러한 실제 구현의 개발에 있어서는, 구현마다 다를 수 있는 시스템 관련 및 비즈니스 관련 제약들에 따르는 것과 같은 개발자들의 특정 목표들을 달성하기 위하여 다수의 구현 고유 결정들이 행해져야 한다는 것을 알아야 한다. 더욱이, 그러한 개발 노력은 복잡하고 시간 소모적일 수 있지만, 그럼에도 본 개시의 이익을 갖는 통상의 기술자들에게는 설계, 제작 및 제조의 일상 업무일 것이라는 것을 알아야 한다.
본 발명의 다양한 실시예들의 요소들을 소개할 때, 관사들 "a", "an" 및 "the"는 요소들 중 하나 이상이 존재함을 의미하는 것을 의도한다. 용어들 "포함하는", "구비하는" 및 "갖는"은 포괄적이며, 열거된 요소들과 다른 추가적인 요소들이 존재할 수 있음을 의미하는 것을 의도한다. 게다가, 본 발명의 "하나의 실시예" 또는 "일 실시예"에 대한 지시들은 열거된 특징들도 포함하는 추가적인 실시예들의 존재를 배제하는 것으로 해석되는 것을 의도하지 않는다는 것을 이해해야 한다.
후술하는 바와 같이, 본 발명은 일반적으로 하나 이상의 이미지 감지 장치들을 통해 취득된 이미지 데이터를 처리하기 위한 기술들에 관한 것이다. 구체적으로, 본 발명의 소정 양태들은 결함 픽셀들을 검출하고 교정하기 위한 기술들, 미가공 이미지 패턴을 디모자이킹하기 위한 기술들, 다중 스케일 비선명 마스크를 이용하여 명도 이미지를 선명화하기 위한 기술들, 및 렌즈 음영 이득들을 적용하여 렌즈 음영 불규칙을 교정하기 위한 기술들과 관련될 수 있다. 게다가, 현재 개시되는 기술들은 정지 이미지들 및 이동 이미지들(예컨대, 비디오) 모두에 적용될 수 있으며, 디지털 카메라, 통합된 디지털 카메라를 갖는 전자 장치, 보안 또는 비디오 감시 시스템, 의료 이미징 시스템 등과 같은 임의의 적절한 타입의 이미징 응용에서 사용될 수 있다는 것을 이해해야 한다.
위의 사항들을 기억하면서, 도 1은 간단히 전술한 이미지 처리 기술들 중 하나 이상을 이용하여 이미지 데이터의 처리를 제공할 수 있는 전자 장치(10)의 일례를 나타내는 블록도이다. 전자 장치(10)는 하나 이상의 이미지 감지 컴포넌트들을 이용하여 취득된 데이터와 같은 이미지 데이터를 수신하고 처리하도록 구성되는 랩탑 또는 데스크탑 컴퓨터, 이동 전화, 디지털 매체 재생기 등과 같은 임의 타입의 전자 장치일 수 있다. 단지 예로서, 전자 장치(10)는 캘리포니아 쿠퍼티노의 애플사로부터 입수 가능한 iPod? 또는 iPhone?의 한 모델과 같은 휴대용 전자 장치일 수 있다. 게다가, 전자 장치(10)는 애플사로부터 입수 가능한 MacBook?, MacBook? Pro, MacBook Air?, iMac?, Mac? Mini 또는 Mac Pro?의 한 모델과 같은 데스크탑 또는 랩탑 컴퓨터일 수 있다. 다른 실시예들에서, 전자 장치(10)는 이미지 데이터를 취득하고 처리할 수 있는 다른 제조자로부터의 전자 장치의 한 모델일 수도 있다.
전자 장치(10)는 그의 형태(예컨대, 휴대용 또는 비휴대용)에 관계없이, 많은 가운데 특히, 결함 픽셀 교정 및/또는 검출 기술들, 렌즈 음영 교정 기술들, 디모자이킹 기술들, 또는 이미지 선명화 기술들을 포함할 수 있는 위에서 간단히 설명된 이미지 처리 기술들 중 하나 이상을 이용하여 이미지 데이터의 처리를 제공할 수 있다. 일부 실시예들에서, 전자 장치(10)는 전자 장치(10)의 메모리에 저장된 이미지 데이터에 그러한 이미지 처리 기술들을 적용할 수 있다. 추가 실시예들에서, 전자 장치(10)는 이미지 데이터를 취득하도록 구성된 통합형 또는 외장 디지털 카메라와 같은 하나 이상의 이미징 장치들을 포함할 수 있으며, 또한 그러한 이미지 데이터는 전술한 이미지 처리 기술들 중 하나 이상을 이용하여 전자 장치(10)에 의해 처리될 수 있다. 전자 장치(10)의 휴대용 및 비휴대용 실시예들 모두를 나타내는 실시예들이 도 3-6에서 더 후술된다.
도 1에 도시된 바와 같이, 전자 장치(10)는 장치(10)의 기능에 기여하는 다양한 내부 및/또는 외부 컴포넌트들을 포함할 수 있다. 이 분야의 통상의 기술자들은 도 1에 도시된 다양한 기능 블록들이 하드웨어 요소들(회로 포함), 소프트웨어 요소들(컴퓨터 판독 가능 매체에 저장된 컴퓨터 코드 포함) 또는 하드웨어 및 소프트웨어 요소들 양자의 결합을 포함할 수 있다는 것을 알 것이다. 예를 들어, 현재 도시된 실시예에서, 전자 장치(10)는 입출력(I/O) 포트들(12), 입력 구조들(14), 하나 이상의 프로세서들(16), 메모리 장치(18), 비휘발성 저장 장치(20), 확장 카드(들)(22), 네트워킹 장치(24), 전원(26) 및 디스플레이(28)를 포함할 수 있다. 게다가, 전자 장치(10)는 디지털 카메라와 같은 하나 이상의 이미징 장치들(30) 및 이미지 처리 회로(32)를 포함할 수 있다. 아래에 더 설명되는 바와 같이, 이미지 처리 회로(32)는 이미지 데이터를 처리할 때 전술한 이미지 처리 기술들 중 하나 이상을 구현하도록 구성될 수 있다. 알 수 있듯이, 이미지 처리 회로(32)에 의해 처리되는 이미지 데이터는 메모리(18) 및/또는 비휘발성 저장 장치(들)(20)로부터 검색될 수 있거나, 이미징 장치(30)를 이용하여 취득될 수 있다.
계속하기 전에, 도 1에 도시된 장치(10)의 시스템 블록도는 그러한 장치(10) 내에 포함될 수 있는 다양한 컴포넌트들을 도시하는 고레벨 제어 도면인 것을 의도한다는 것을 이해해야 한다. 즉, 도 1에 도시된 각각의 개별 컴포넌트 사이의 접속 라인들은 데이터가 흐르거나 장치(10)의 다양한 컴포넌트들 사이에 전송되는 경로들 또는 방향들을 반드시 나타내는 것은 아닐 수 있다. 게다가, 후술하는 바와 같이, 도시된 프로세서(들)(16)는 일부 실시예들에서 메인 프로세서(예컨대, CPU) 및 전용 이미지 및/또는 비디오 프로세서들과 같은 다수의 프로세서를 포함할 수 있다. 그러한 실시예들에서, 이미지 데이터의 처리는 주로 전용 프로세서들에 의해 이루어질 수 있으며, 따라서 메인 프로세서(CPU)로부터 그러한 작업들을 효과적으로 오프로딩할 수 있다.
도 1에 도시된 컴포넌트들의 각각과 관련하여, I/O 포트들(12)은 전원, 오디오 출력 장치(예컨대, 헤드셋 또는 헤드폰들), 또는 다른 전자 장치들(핸드헬드 장치들 및/또는 컴퓨터들, 프린터들, 프로젝터들, 외부 디스플레이들, 모뎀들, 도킹 스테이션들 등)과 같은 다양한 외부 장치들에 접속하도록 구성된 포트들을 포함할 수 있다. 일 실시예에서, I/O 포트들(12)은 이미지 처리 회로(32)를 이용하여 처리될 수 있는 이미지 데이터의 취득을 위한 디지털 카메라와 같은 외부 이미징 장치에 접속하도록 구성될 수 있다. I/O 포트들(12)은 유니버설 직렬 버스(USB) 포트, 직렬 접속 포트, IEEE-1394(FireWire) 포트, 이더넷 또는 모뎀 포트 및/또는 AC/DC 전원 접속 포트와 같은 임의의 적절한 인터페이스 타입을 지원할 수 있다.
일부 실시예들에서, 소정의 I/O 포트들(12)은 둘 이상의 기능을 제공하도록 구성될 수 있다. 예를 들어, 일 실시예에서, I/O 포트들(12)은 전자 장치(10)와 외부 소스 사이의 데이터 전송을 용이하게 할 뿐만 아니라, (하나 이상의 재충전 가능 배터리들을 포함할 수 있는) 전원(26)을 충전하기 위해, 전기 벽 콘센트로부터 전력을 제공하도록 설계된 전원 어댑터 또는 데스크탑 또는 랩탑 컴퓨터 등의 다른 전기 장치로부터 전력을 인출하도록 구성된 인터페이스 케이블과 같은 충전 인터페이스에 장치(10)를 결합하도록 기능할 수도 있는 애플사로부터의 독점 포트를 포함할 수 있다. 따라서, I/O 포트(12)는 예컨대 I/O 포트(12)를 통해 장치(10)에 결합되는 외부 컴포넌트에 따라 데이터 전송 포트 및 AC/DC 전원 접속 포트 양자로서 이중으로 기능하도록 구성될 수 있다.
입력 구조들(14)은 프로세서(들)(16)에 사용자 입력 또는 피드백을 제공할 수 있다. 예를 들어, 입력 구조들(14)은 전자 장치(10) 상에서 실행되는 애플리케이션들과 같은 전자 장치(10)의 하나 이상의 기능들을 제어하도록 구성될 수 있다. 단지 예로서, 입력 구조들(14)은 버튼들, 슬라이더들, 스위치들, 제어 패드들, 키들, 노브들, 스크롤 휠들, 키보드들, 마우스들, 터치패드들 등 또는 이들의 소정 조합을 포함할 수 있다. 일 실시예에서, 입력 구조들(14)은 사용자로 하여금 장치(10) 상에 표시된 그래픽 사용자 인터페이스(GUI)를 내비게이트하게 할 수 있다. 게다가, 입력 구조들(14)은 디스플레이(28)와 연계하여 제공되는 터치 감지 메커니즘을 포함할 수 있다. 그러한 실시예들에서, 사용자는 표시된 인터페이스 요소들을 터치 감지 메커니즘을 통해 선택하거나 그들과 상호작용할 수 있다.
입력 구조들(14)은 다양한 장치들, 회로, 및 사용자 입력 또는 피드백이 하나 이상의 프로세서들(16)에 제공되는 경로들을 포함할 수 있다. 그러한 입력 구조들(14)은 장치(10)의 기능, 장치(10) 상에서 실행되는 애플리케이션들, 및/또는 전자 장치(10)에 접속되거나 그에 의해 사용되는 임의의 인터페이스들 또는 장치들을 제어하도록 구성될 수 있다. 예를 들어, 입력 구조들(14)은 사용자로 하여금 표시된 사용자 인터페이스 또는 애플리케이션 인터페이스를 내비게이트하게 할 수 있다. 입력 구조들(14)의 예들은 버튼들, 슬라이더들, 스위치들, 제어 패드들, 키들, 노브들, 스크롤 휠들, 키보드들, 마우스들, 터치패드들 등을 포함할 수 있다.
소정 실시예들에서는, 디스플레이(28)와 연계하여 터치 감지 메커니즘이 제공되는 "터치스크린"의 경우에서와 같이, 입력 구조(14) 및 디스플레이 장치(28)가 함께 제공될 수 있다. 이러한 실시예들에서, 사용자는 표시된 인터페이스 요소들을 터치 감지 메커니즘을 통해 선택하거나 그들과 상호작용할 수 있다. 이러한 방식으로, 표시된 인터페이스는 상호작용 기능을 제공하여, 사용자로 하여금 디스플레이(28)를 터치함으로써 표시된 인터페이스를 내비게이트하게 할 수 있다. 예를 들어, 디스플레이(28) 상에 표시된 사용자 또는 애플리케이션 인터페이스와 상호작용하는 것 등을 위한 입력 구조들(14)과의 사용자 상호작용은 사용자 입력을 나타내는 전기 신호들을 생성할 수 있다. 이러한 입력 신호들은 추가 처리를 위해 입력 허브 또는 데이터 버스와 같은 적절한 경로들을 통해 하나 이상의 프로세서들(16)로 라우팅될 수 있다.
일 실시예에서, 입력 구조들(14)은 오디오 입력 장치를 포함할 수 있다. 예를 들어, 하나 이상의 마이크로폰들과 같은 하나 이상의 오디오 캡처 장치들이 전자 장치(10)와 더불어 제공될 수 있다. 오디오 캡처 장치들은 전자 장치(10)와 통합될 수 있거나, 예를 들어 I/O 포트들(12)을 통해 전자 장치(10)에 결합된 외부 장치일 수 있다. 아래에 더 설명되는 바와 같이, 전자 장치(10)는 사운드 및 이미지 데이터(예를 들어, 비디오 데이터)를 캡처하기 위한 오디오 입력 장치 및 이미징 장치(30) 양자일 수 있으며, 캡처된 비디오 및 오디오 데이터의 동기화를 제공하도록 구성된 로직을 포함할 수 있다.
입력 구조(들)(14)를 통해 수신된 다양한 입력 신호들을 처리하는 것에 더하여, 프로세서(들)(16)는 장치(10)의 일반 동작을 제어할 수 있다. 예를 들어, 프로세서(들)(16)는 운영 체제, 프로그램들, 사용자 및 애플리케이션 인터페이스들, 및 전자 장치(10)의 임의의 다른 기능들을 실행하기 위한 처리 능력을 제공할 수 있다. 프로세서(들)(16)는 하나 이상의 "범용" 마이크로프로세서들, 하나 이상의 특수 목적 마이크로프로세서들 및/또는 주문형 마이크로프로세서들(ASIC들), 또는 이러한 처리 컴포넌트들의 조합과 같은 하나 이상의 마이크로프로세서들을 포함할 수 있다. 예를 들어, 프로세서(들)(16)는 하나 이상의 명령어 세트(예를 들어, RISC) 프로세서들은 물론, 그래픽 프로세서들(GPU), 비디오 프로세서들, 오디오 프로세서들 및/또는 관련 칩셋들을 포함할 수 있다. 이해하듯이, 프로세서(들)(16)는 장치(10)의 다양한 컴포넌트들 사이의 데이터 및 명령어들의 전송을 위한 하나 이상의 데이터 버스들에 결합될 수 있다. 소정 실시예들에서, 프로세서(들)(16)는 애플사로부터 입수 가능한 Photo Booth?, Aperture?, iPhoto? 또는 Preview?, 또는 애플사에 의해 제공되고 iPhone?의 모델들 상에서 이용 가능한 "Camera" 및/또는 "Photo" 애플리케이션들과 같은 이미지 애플리케이션들을 전자 장치(10) 상에서 실행하기 위한 처리 능력을 제공할 수 있다.
프로세서(들)(16)에 의해 처리될 명령어들 또는 데이터는 메모리 장치(18)와 같은 컴퓨터 판독 가능 매체에 저장될 수 있다. 메모리 장치(18)는 랜덤 액세스 메모리(RAM)와 같은 휘발성 메모리로서 또는 판독 전용 메모리(ROM)와 같은 비휘발성 메모리로서 또는 하나 이상의 RAM 및 ROM 장치들의 조합으로서 제공될 수 있다. 메모리(18)는 다양한 정보를 저장할 수 있으며, 다양한 목적을 위해 사용될 수 있다. 예를 들어, 메모리(18)는 기본 입출력 시스템(BIOS), 운영 체제, 다양한 프로그램들, 애플리케이션들, 또는 전자 장치(10) 상에서 실행될 수 있는 사용자 인터페이스 기능들, 프로세서 기능들 등을 포함하는 임의의 다른 루틴들과 같은 전자 장치(10)용 펌웨어를 저장할 수 있다. 게다가, 메모리(18)는 전자 장치(10)의 동작 동안에 버퍼링 또는 캐싱을 위해 사용될 수 있다. 예를 들어, 일 실시예에서, 메모리(18)는 비디오 데이터가 디스플레이(28)로 출력될 때 이를 버퍼링하기 위한 하나 이상의 프레임 버퍼들을 포함한다.
메모리 장치(18)에 더하여, 전자 장치(10)는 데이터 및/또는 명령어들의 영구 저장을 위한 비휘발성 저장 장치(20)를 더 포함할 수 있다. 비휘발성 저장 장치(20)는 플래시 메모리, 하드 드라이브, 또는 임의의 다른 광, 자기 및/또는 고상 저장 매체들, 또는 이들의 일부 조합들을 포함할 수 있다. 따라서, 도 1에는 명료화를 위해 단일 장치로서 도시되지만, 비휘발성 저장 장치(들)(20)는 프로세서(들)(16)와 관련하여 동작하는 전술한 저장 장치들 중 하나 이상의 저장 장치들의 조합을 포함할 수 있다는 것을 이해해야 한다. 비휘발성 저장 장치(20)는 펌웨어, 데이터 파일들, 이미지 데이터, 소프트웨어 프로그램들 및 애플리케이션들, 무선 접속 정보, 개인 정보, 사용자 선호들 및 임의의 다른 적절한 데이터를 저장하는 데 사용될 수 있다. 본 발명의 양태들에 따르면, 비휘발성 저장 장치(20) 및/또는 메모리 장치(18)에 저장된 이미지 데이터는 디스플레이 상에 출력되기 전에 이미지 처리 회로(32)에 의해 처리될 수 있다.
도 1에 도시된 실시예는 또한 하나 이상의 카드 또는 확장 슬롯들을 포함할 수 있다. 카드 슬롯들은 추가적인 메모리, I/O 기능 또는 네트워킹 기능과 같은 기능을 전자 장치(10)에 추가하는 데 사용될 수 있는 확장 카드(22)를 수용하도록 구성될 수 있다. 그러한 확장 카드(22)는 임의 타입의 적절한 커넥터를 통해 장치에 접속될 수 있으며, 전자 장치(10)의 하우징에 대해 내부 또는 외부에서 액세스될 수 있다. 예를 들어, 일 실시예에서, 확장 카드(24)는 보안 디지털(SecureDigital; SD) 카드, 미니 또는 마이크로 SD, 컴팩트 플래시(CompactFlash) 카드 등과 같은 플래시 메모리 카드이거나, PCMCIA 장치일 수 있다. 게다가, 확장 카드(24)는 이동 전화 기능을 제공하는 전자 장치(10)의 실시예에서 이용하기 위한 가입자 식별 모듈(SIM) 카드일 수 있다.
전자 장치(10)는 또한 무선 802.11 표준 또는 근거리 네트워크(LAN), EDGE(Enhanced Data Rates for GSM Evolution) 네트워크, 3G 데이터 네트워크 또는 인터넷과 같은 광역 네트워크(WAN)와 같은 임의의 다른 적절한 네트워킹 표준을 통해 네트워크 접속을 제공할 수 있는 네트워크 제어기 또는 네트워크 인터페이스 카드(NIC)일 수 있는 네트워크 디바이스(24)를 포함한다. 소정 실시예들에서, 네트워크 디바이스(24)는 애플사로부터 이용 가능한 iTunes? 음악 서비스와 같은 온라인 디지털 매체 콘텐츠 제공자에 대한 접속을 제공할 수 있다.
장치(10)의 전원(26)은 비휴대 및 휴대 환경 모두에서 장치(10)에 급전하는 능력을 포함할 수 있다. 예를 들어, 휴대 환경에서, 장치(10)는 장치(10)에 급전하기 위한 리튬 이온 배터리와 같은 하나 이상의 배터리를 포함할 수 있다. 배터리는 장치(10)를 전기 벽 콘센트와 같은 외부 전원에 접속함으로써 재충전될 수 있다. 비휴대 환경에서, 전원(26)은 전기 벽 콘센트로부터 전력을 인출하고, 데스크탑 컴퓨팅 시스템과 같은 비휴대용 전자 장치의 다양한 컴포넌트들에 전력을 분배하도록 구성되는 전력 공급 유닛(PSU)을 포함할 수 있다.
디스플레이(28)는 아래에 더 설명되는 바와 같이 운영 체제를 위한 GUI 또는 이미지 처리 회로(32)에 의해 처리된 이미지 데이터(정지 이미지들 및 비디오 데이터 포함)와 같은, 장치(10)에 의해 생성된 다양한 이미지들을 디스플레이하는 데 사용될 수 있다. 전술한 바와 같이, 이미지 데이터는 이미지 장치(30)를 이용하여 취득된 이미지 데이터 또는 메모리(18) 및/또는 비휘발성 저장 장치(20)로부터 검색된 이미지 데이터를 포함할 수 있다. 디스플레이(28)는 예를 들어 액정 디스플레이(LCD), 플라즈마 디스플레이 또는 유기 발광 다이오드(OLED) 디스플레이와 같은 임의의 적절한 타입의 디스플레이일 수 있다. 게다가, 전술한 바와 같이, 디스플레이(28)는 전자 장치(10)용 제어 인터페이스의 일부로서 기능할 수 있는 전술한 터치 감지 메커니즘(예를 들어, 터치 스크린)과 더불어 제공될 수 있다.
도시된 이미징 장치(들)(30)는 정지 이미지들 및 이동 이미지들(예를 들어, 비디오) 모두를 취득하도록 구성된 디지털 카메라로서 제공될 수 있다. 카메라(30)는 렌즈 및 광을 캡처하여 전기 신호들로 변환하도록 구성된 하나 이상의 이미지 센서들을 포함할 수 있다. 단지 예로서, 이미지 센서는 CMOS 이미지 센서(예를 들어, CMOS 능동 픽셀 센서(APS)) 또는 전하 결합 소자(CCD) 센서를 포함할 수 있다. 일반적으로, 카메라(30) 내의 이미지 센서는 픽셀들의 어레이를 갖는 집적 회로를 포함하며, 각각의 픽셀은 광을 감지하기 위한 광 검출기를 포함한다. 이 분야의 기술자들이 이해하듯이, 이미징 픽셀들 내의 광 검출기들은 일반적으로 카메라 렌즈들을 통해 캡처된 광의 강도를 검출한다. 그러나, 일반적으로 광 검출기들은 단독으로는 캡처된 광의 파장을 검출할 수 없으며, 따라서 컬러 정보를 결정할 수 없다.
따라서, 이미지 센서는 컬러 정보를 캡처하기 위하여 이미지 센서의 픽셀 어레이 상에 오버레이되거나 배치될 수 있는 컬러 필터 어레이(CFA)를 더 포함할 수 있다. 컬러 필터 어레이는 작은 컬러 필터들의 어레이를 포함할 수 있으며, 이들 각각은 이미지 센서의 각각의 픽셀과 오버랩되고, 캡처된 광을 파장에 따라 필터링할 수 있다. 따라서, 컬러 필터 어레이 및 광 검출기들은 함께 사용될 때, 캡처된 이미지를 표현할 수 있는, 카메라를 통해 캡처된 광에 관한 파장 및 강도 정보 모두를 제공할 수 있다.
일 실시예에서, 컬러 필터 어레이는 50%의 녹색 요소, 25%의 적색 요소 및 25%의 청색 요소인 필터 패턴을 제공하는 베이어(Bayer) 컬러 필터 어레이를 포함할 수 있다. 예를 들어, 도 2는 베이어 CFA의 2x2 픽셀 블록이 2개의 녹색 요소(Gr, Gb), 하나의 적색 요소(R) 및 하나의 청색 요소(B)를 포함한다는 것을 나타낸다. 따라서, 베이어 컬러 필터 어레이를 사용하는 이미지 센서는 녹색, 적색 및 청색 파장들에서 카메라(30)에 의해 수신된 광의 강도에 관한 정보를 제공할 수 있으며, 이에 따라 각각의 이미지 픽셀은 3개의 컬러(RGB) 중 하나만을 기록한다. 이어서, "미가공 이미지 데이터" 또는 "미가공 도메인" 내의 데이터로 참조될 수 있는 이러한 정보를 하나 이상의 디모자이킹 기술들을 이용하여 처리하여, 일반적으로 각각의 픽셀에 대한 적색, 녹색 및 청색 값들의 세트를 보간함으로써 미가공 이미지 데이터를 풀 컬러 이미지로 변환할 수 있다. 아래에 더 설명되는 바와 같이, 그러한 디모자이킹 기술들은 이미지 처리 회로(32)에 의해 수행될 수 있다.
전술한 바와 같이, 이미지 처리 회로(32)는 결함 픽셀 검출/교정, 렌즈 음영 교정, 디모자이킹, 및 이미지 선명화, 잡음 제거, 감마 교정, 이미지 향상, 컬러 공간 변환, 이미지 압축, 크로마 서브샘플링, 및 이미지 스케일링 동작들 등과 같은 다양한 이미지 처리 단계들을 제공할 수 있다. 일부 실시예들에서, 이미지 처리 회로(32)는 다양한 이미지 처리 단계들 각각을 수행하기 위한 이미지 처리 "파이프라인"을 공동으로 형성하는 로직의 다양한 서브컴포넌트들 및/또는 개별 유닛들을 포함할 수 있다. 이러한 서브컴포넌트들은 하드웨어(예를 들어, 디지털 신호 프로세서들 또는 ASIC들) 또는 소프트웨어를 이용하여 또는 하드웨어 및 소프트웨어 컴포넌트들의 조합을 통해 구현될 수 있다. 이미지 처리 회로(32)에 의해 제공될 수 있는 다양한 이미지 처리 동작들, 및 특히 결함 픽셀 검출/교정, 렌즈 음영 교정, 디모자이킹 및 이미지 선명화와 관련된 처리 동작들이 아래에 더 상세히 설명된다.
계속하기 전에, 후술하는 다양한 이미지 처리 기술들의 다양한 실시예들이 베이어 CFA를 이용할 수 있지만, 현재 개시되는 기술들은 이와 관련하여 제한되지 않는 것을 의도한다는 점에 유의해야 한다. 게다가, 이 분야의 기술자들은 본 명세서에서 제공되는 이미지 처리 기술들이 RGBW 필터들, CYGM 필터들 등을 포함하는 임의의 적절한 타입의 컬러 필터 어레이에 적용될 수 있다는 것을 알 것이다.
전자 장치(10)를 다시 참조하면, 도 3-6은 전자 장치(10)가 취할 수 있는 다양한 형태들을 도시한다. 전술한 바와 같이, 전자 장치(10)는 (랩탑, 노트북 및 태블릿 컴퓨터들과 같은) 일반적으로 휴대용인 컴퓨터들은 물론, (데스크탑 컴퓨터들, 워크스테이션들 및/또는 서버들과 같은) 일반적으로 휴대용이 아닌 컴퓨터들, 또는 핸드헬드 휴대용 전자 장치들(예컨대, 디지털 매체 재생기 또는 이동 전화)과 같은 다른 타입의 전자 장치를 포함하는 컴퓨터 형태를 취할 수 있다. 구체적으로, 도 3 및 4는 각각 랩탑 컴퓨터(40) 및 데스크탑 컴퓨터(50) 형태의 전자 장치(10)를 도시한다. 도 5 및 6은 각각 핸드헬드 휴대용 장치(60) 형태의 전자 장치(10)의 정면도 및 배면도를 나타낸다.
도 3에 도시된 바와 같이, 도시된 랩탑 컴퓨터(40)는 하우징(42), 디스플레이(28), I/O 포트들(12) 및 입력 구조들(14)을 포함한다. 입력 구조들(14)은 하우징(42)과 통합된 키보드 및 터치패드 마우스를 포함할 수 있다. 게다가, 입력 구조(14)는 예를 들어 컴퓨터를 파워 온 또는 시동하기 위해, 컴퓨터(40) 상에서 실행되는 GUI 또는 애플리케이션을 동작시키는 것은 물론, 컴퓨터(40)의 동작과 관련된 다양한 다른 양태들(예를 들어, 사운드 볼륨, 디스플레이 휘도 등)을 조정하기 위하여 컴퓨터(40)와 상호작용하는 데 사용될 수 있는 다양한 다른 버튼들 및/또는 스위치들을 포함할 수 있다. 컴퓨터(40)는 또는 FireWire? 또는 USB 포트, 고화질 멀티미디어 인터페이스(HDMI) 포트, 또는 외부 장치에 대한 접속에 적합한 임의의 다른 타입의 포트와 같은 전술한 바와 같은 추가적인 장치들에 대한 접속을 제공하는 다양한 I/O 포트들(12)을 포함할 수 있다. 게다가, 컴퓨터(40)는 도 1과 관련하여 전술한 바와 같은 네트워크 접속(예를 들어, 네트워크 디바이스(26)), 메모리(예를 들어, 메모리(20)) 및 저장 기능들(예를 들어, 저장 장치(22))을 포함할 수 있다.
게다가, 도시된 실시예에서, 랩탑 컴퓨터(40)는 통합된 이미징 장치(30)(예를 들어, 카메라)를 포함할 수 있다. 다른 실시예들에서, 랩탑 컴퓨터(40)는 통합 카메라(30) 대신에 또는 그에 더하여 I/O 포트들(12) 중 하나 이상에 접속된 외부 카메라(예를 들어, 외부 USB 카메라 또는 "웹캠")를 이용할 수 있다. 예를 들어, 외부 카메라는 애플사로부터 입수 가능한 iSight? 카메라일 수 있다. 카메라(30)는 통합 카메라 또는 외부 카메라인지에 관계없이 이미지들의 캡처 및 기록을 제공할 수 있다. 이어서, 그러한 이미지들은 이미지 보기 애플리케이션을 이용하여 사용자가 볼 수 있거나, 애플사로부터 입수 가능한 iChat?와 같은 화상 회의 애플리케이션들 및 Photo Booth?, Aperture?, iPhoto? 또는 Preview?와 같은 이미지 편집/관찰 애플리케이션들을 포함하는 다른 애플리케이션들에 의해 이용될 수 있다. 소정 실시예들에서, 도시된 랩탑 컴퓨터(40)는 애플사로부터 입수 가능한 MacBook?, MacBook? Pro, MacBook Air? 또는 PowerBook?의 한 모델일 수 있다. 게다가, 일 실시예에서, 컴퓨터(40)는 애플사로부터 또한 입수 가능한 iPad? 태블릿 컴퓨터의 한 모델과 같은 휴대용 태블릿 컴퓨팅 장치일 수 있다.
도 4는 전자 장치(10)가 데스크탑 컴퓨터(50)로서 제공되는 실시예를 더 도시한다. 이해하듯이, 데스크탑 컴퓨터(50)는 도 4에 도시된 랩탑 컴퓨터(40)에 의해 제공되는 것들과 교체로 유사할 수 있는 다수의 특징을 포함할 수 있지만, 일반적으로 더 큰 전체 형태 인자를 가질 수 있다. 도시된 바와 같이, 데스크탑 컴퓨터(50)는 디스플레이(28)는 물론, 도 1에 도시된 블록도와 관련하여 전술한 다양한 다른 컴포넌트들도 포함하는 인클로저(42) 내에 수용될 수 있다. 게다가, 데스크탑 컴퓨터(50)는 하나 이상의 I/O 포트들(12)(예를 들어, USB)을 통해 컴퓨터(50)에 결합될 수 있거나 컴퓨터(50)와 무선으로(예를 들어, RF, 블루투스 등) 통신할 수 있는 외부 키보드 및 마우스(입력 구조들(14))를 포함할 수 있다. 데스크탑 컴퓨터(50)는 또한 전술한 바와 같이 통합 또는 외부 카메라일 수 있는 이미징 장치(30)를 포함한다. 소정 실시예들에서, 도시된 데스크탑 컴퓨터(50)는 애플사로부터 입수 가능한 iMac?, Mac? mini 또는 Mac Pro?의 한 모델일 수 있다.
더 도시된 바와 같이, 디스플레이(28)는 사용자가 볼 수 있는 다양한 이미지들을 생성하도록 구성될 수 있다. 예를 들어, 컴퓨터(50)의 동작 동안, 디스플레이(28)는 사용자가 컴퓨터(50) 상에서 실행되는 운영 체제 및/또는 애플리케이션과 상호작용할 수 있게 하는 그래픽 사용자 인터페이스("GUI")(52)를 표시할 수 있다. GUI(52)는 디스플레이 장치(28)의 전부 또는 일부에 표시될 수 있는 다양한 계층들, 윈도들, 스크린들, 템플릿들 또는 다른 그래픽 요소들을 포함할 수 있다. 예를 들어, 도시된 실시예에서, 운영 체제 GUI(52)는 다양한 그래픽 아이콘들(54)을 포함할 수 있으며, 이들 각각은 (예컨대, 키보드/마우스 또는 터치스크린 입력을 통한) 사용자 선택의 검출시에 개시 또는 실행될 수 있는 다양한 애플리케이션들에 대응할 수 있다. 아이콘들(54)은 도크(dock; 56) 내에 또는 스크린 상에 표시된 하나 이상의 그래픽 윈도 요소들(58) 내에 표시될 수 있다. 일부 실시예들에서, 아이콘(54)의 선택은 계층적 내비게이션 프로세스를 유도할 수 있으며, 따라서 아이콘(54)의 선택은 스크린에 이르게 하거나, 하나 이상의 추가적인 아이콘들 또는 다른 GUI 요소들을 포함하는 다른 그래픽 윈도를 연다. 단지 예로서, 도 4에 도시된 운영 체제 GUI(52)는 애플사로부터 입수 가능한 Mac OS? 운영 체제의 한 버전으로부터 제공될 수 있다.
도 5 및 6을 계속 설명하면, 전자 장치(10)는 애플사로부터 입수 가능한 iPod? 또는 iPhone?의 한 모델일 수 있는 휴대용 핸드헬드 전자 장치(60) 형태로 더 도시된다. 도시된 실시예에서, 핸드헬드 장치(60)는 내부 컴포넌트들을 물리적 손상으로부터 보호하고, 이들을 전자기 간섭으로부터 보호하도록 기능할 수 있는 인클로저(42)를 포함한다. 인클로저(42)는 플라스틱, 금속 또는 복합 재료와 같은 임의의 적절한 재료 또는 재료들의 조합으로부터 형성될 수 있으며, 무선 네트워킹 신호들과 같은 소정 주파수들의 전자기 방사가 도 5에 도시된 바와 같이 인클로저(42) 내에 배치될 수 있는 무선 통신 회로(예컨대, 네트워크 디바이스(24))로 통과하게 할 수 있다.
인클로저(42)는 또한 사용자가 핸드헬드 장치(60)와 상호작용할 수 있게 하는 다양한 사용자 입력 구조들(14)을 포함한다. 예로서, 각각의 입력 구조(14)는 누르거나 작동될 때 하나 이상의 각각의 장치 기능들을 제어하도록 구성될 수 있다. 예컨대, 입력 구조들(14) 중 하나 이상은 "홈" 스크린(42) 또는 메뉴가 표시되게 하거나, 슬립(sleep), 웨이크(wake) 또는 파워 온/오프 모드 사이에서 토글링하거나, 셀룰러 전화 애플리케이션에 대한 링어(ringer)를 침묵시키거나, 볼륨 출력을 증감하거나, 기타 등등을 수행하도록 구성될 수 있다. 도시된 입력 구조들(14)은 예시적일 뿐이며, 핸드헬드 장치(60)는 버튼들, 스위치들, 키들, 노브들, 스크롤 휠들 등을 포함하는 다양한 형태로 존재하는 임의 수의 적절한 사용자 입력 구조들을 포함할 수 있다는 것을 이해해야 한다.
도 5에 도시된 바와 같이, 핸드헬드 장치(60)는 다양한 I/O 포트들(12)을 포함할 수 있다. 예를 들어, 도시된 I/O 포트들(12)은 데이터 파일들을 송수신하기 위한 또는 전원(26)을 충전하기 위한 독점 접속 포트(12a) 및 장치(60)를 오디오 출력 장치(예를 들어, 헤드폰들 또는 스피커들)에 접속하기 위한 오디오 접속 포트(12b)를 포함할 수 있다. 게다가, 핸드헬드 장치(60)가 이동 전화 기능을 제공하는 실시예들에서, 장치(60)는 가입 식별 모듈(SIM) 카드(예로서, 확장 카드(22))를 수용하기 위한 I/O 포트(12c)를 포함할 수 있다.
LCD, OLED 또는 임의의 적절한 타입의 디스플레이일 수 있는 디스플레이 장치(28)는 핸드헬드 장치(60)에 의해 생성된 다양한 이미지들을 표시할 수 있다. 예로서, 디스플레이(28)는 전력 상태, 신호 강도, 외부 장치 접속 등과 같은 핸드헬드 장치(60)의 하나 이상의 상태들에 관하여 사용자에게 피드백을 제공하는 다양한 시스템 지시기들(64)을 표시할 수 있다. 디스플레이는 또한 사용자가 도 4와 관련하여 전술한 바와 같이 장치(60)와 상호작용하게 할 수 있는 GUI(52)를 표시할 수 있다. GUI(52)는 각각의 아이콘(54)의 사용자 선택의 검출시에 개시 또는 실행될 수 있는 다양한 애플리케이션들에 대응할 수 있는 아이콘들(54)과 같은 그래픽 요소들을 포함할 수 있다. 예로서, 아이콘들(54) 중 하나는 이미지들을 취득하기 위해 (도 5에 가상선들로 도시된) 카메라(30)와 함께 사용될 수 있는 카메라 애플리케이션(66)을 나타낼 수 있다. 도 6을 간단히 참조하면, 도 5에 도시된 핸드헬드 전자 장치(60)의 배면도가 도시되어 있으며, 이 도면은 카메라(30)가 하우징(42)과 통합되고 핸드헬드 장치(60)의 배면에 배치되는 것으로 도시한다.
전술한 바와 같이, 카메라(30)를 이용하여 취득된 이미지 데이터는 (예를 들어, 인클로저(42) 내에 배치된) 하드웨어 및/또는 장치(60)의 하나 이상의 저장 장치(예로서, 메모리(18) 또는 비휘발성 저장 장치(20))에 저장된 소프트웨어를 포함할 수 있는 이미지 처리 회로(32)를 이용하여 처리될 수 있다. 카메라 애플리케이션(66) 및 카메라(30)를 이용하여 취득된 이미지들은 장치(60)에 (예로서, 저장 장치(20)에) 저장될 수 있으며, 사진 관찰 애플리케이션(68)을 이용하여 나중에 볼 수 있다.
핸드헬드 장치(60)는 또한 다양한 오디오 입력 및 출력 요소들을 포함할 수 있다. 예로서, 일반적으로 참조 번호 70으로 도시된 오디오 입력/출력 요소들은 하나 이상의 마이크로폰들과 같은 입력 수신기를 포함할 수 있다. 예로서, 핸드헬드 장치(60)가 셀 전화 기능을 포함하는 경우, 입력 수신기들은 사용자의 음성과 같은 사용자 오디오 입력을 수신하도록 구성될 수 있다. 게다가, 오디오 입력/출력 요소들(70)은 하나 이상의 출력 송신기들을 포함할 수 있다. 이러한 출력 송신기들은 예컨대 매체 재생기 애플리케이션(72)을 이용한 음악 데이터의 재생 동안에 오디오 신호들을 사용자에게 전송하도록 기능할 수 있는 하나 이상의 스피커들을 포함할 수 있다. 게다가, 핸드헬드 장치(60)가 셀 전화 애플리케이션을 포함하는 실시예들에서는, 도 5에 도시된 바와 같이, 추가적인 오디오 출력 송신기(74)가 제공될 수 있다. 오디오 입력/출력 요소들(70)의 출력 송신기들과 같이, 출력 송신기(74) 또한 전화 통화 동안에 수신된 음성 데이터와 같은 오디오 신호들을 사용자에게 전송하도록 구성된 하나 이상의 스피커들을 포함할 수 있다. 따라서, 오디오 입력/출력 요소들(70, 74)은 전화의 오디오 수신 및 송신 요소들로서 기능하도록 연계하여 동작할 수 있다.
이제, 전자 장치(10)가 취할 수 있는 다양한 형태들에 관한 소정 상황을 제공하였으므로, 본 설명은 이제 도 1에 도시된 이미지 처리 회로(32)에 집중할 것이다. 전술한 바와 같이, 이미지 처리 회로(32)는 하드웨어 및/또는 소프트웨어 컴포넌트들을 이용하여 구현될 수 있으며, 이미지 신호 처리(ISP) 파이프라인을 정의하는 다양한 프로세싱 유닛들을 포함할 수 있다. 구체적으로, 아래의 설명은 본 발명에서 제공되는 이미지 처리 기술들의 양태들, 특히 결함 픽셀 검출/교정 기술들, 렌즈 음영 교정 기술들, 디모자이킹 기술들 및 이미지 선명화 기술들에 관한 양태들에 집중할 수 있다.
이제, 도 7을 참조하면, 현재 개시되는 기술들의 일 실시예에 따른 이미지 처리 회로(32)의 일부로서 구현될 수 있는 여러 기능 컴포넌트들을 나타내는 간단한 최상위 레벨의 블록도가 도시되어 있다. 구체적으로, 도 7은 적어도 일 실시예에 따른, 이미지 데이터가 이미지 처리 회로(32)를 통해 흐를 수 있는 방법을 도시하는 것을 의도한다. 이미지 처리 회로(32)의 일반 개요를 제공하기 위하여, 이러한 기능 컴포넌트들이 이미지 데이터를 처리하도록 동작하는 방법에 대한 일반 설명이 도 7과 관련하여 제공되며, 도시된 기능 컴포넌트들 각각은 물론, 이들 각각의 서브컴포넌트들에 대한 일반 설명이 아래에 더 제공된다.
도시된 실시예를 참조하면, 이미지 처리 회로(32)는 이미지 신호 처리(ISP) 프론트-엔드 프로세싱 로직(80), ISP 파이프 프로세싱 로직(82) 및 제어 로직(84)을 포함할 수 있다. 이미징 장치(30)에 의해 캡처된 이미지 데이터는 먼저 ISP 프론트-엔드 로직(80)에 의해 처리되며, ISP 파이프 로직(82) 및/또는 이미징 장치(30)에 대한 하나 이상의 제어 파라미터들을 결정하는 데 사용될 수 있는 이미지 통계를 캡처하기 위해 분석될 수 있다. ISP 프론트-엔드 로직(80)은 이미지 센서 입력 신호로부터 이미지 데이터를 캡처하도록 구성될 수 있다. 예로서, 도 7에 도시된 바와 같이, 이미징 장치(30)는 하나 이상의 렌즈들(88) 및 이미지 센서(들)(90)를 갖는 카메라를 포함할 수 있다. 전술한 바와 같이, 이미지 센서(들)(90)는 컬러 필터 어레이(예컨대, 베이어 필터)를 포함할 수 있으며, 따라서 ISP 프론트-엔드 로직(80)에 의해 처리될 수 있는 미가공 이미지 데이터의 세트를 제공하기 위해 이미지 센서들(90)의 각각의 이미징 픽셀에 의해 캡처된 광 강도 및 파장 정보 모두를 제공할 수 있다. 예로서, 이미징 장치(30)로부터의 출력(92)이 센서 인터페이스(94)에 의해 수신될 수 있고, 이어서 센서 인터페이스는 예로서 센서 인터페이스 타입에 기초하여 미가공 이미지 데이터(96)를 ISP 프론트-엔드 로직(80)에 제공할 수 있다. 예로서, 센서 인터페이스(94)는 표준 이동 이미징 아키텍처(SMIA) 인터페이스 또는 다른 직렬 또는 병렬 카메라 인터페이스들, 또는 이들의 소정 조합을 이용할 수 있다. 소정 실시예들에서, ISP 프론트-엔드 로직(80)은 그 자신의 클록 도메인 내에서 동작할 수 있으며, 상이한 크기들 및 타이밍 요구들의 이미지 센서들을 지원하기 위해 센서 인터페이스(94)에 대한 비동기 인터페이스를 제공할 수 있다. 센서 인터페이스(94)는 일부 실시예들에서 센서측의 서브인터페이스(예로서, 센서측 인터페이스) 및 ISP 프론트-엔드측의 서브인터페이스를 포함할 수 있으며, 이러한 서브인터페이스들은 센서 인터페이스(94)를 형성한다.
미가공 이미지 데이터(96)는 ISP 프론트-엔드 로직(80)에 제공되고, 다수의 포맷으로 픽셀별로 처리될 수 있다. 예로서, 각각의 이미지 픽셀은 8, 10, 12 또는 14 비트의 비트 심도를 가질 수 있다. 픽셀 데이터가 메모리에 저장되고 어드레스될 수 있는 방법을 나타내는 메모리 포맷들의 다양한 예들이 아래에 더 상세히 설명된다. ISP 프론트-엔드 로직(80)은 미가공 이미지 데이터(96)에 대해 하나 이상의 이미지 처리 동작들을 수행하는 것은 물론, 이미지 데이터(96)에 대한 통계를 수집할 수도 있다. 이미지 처리 동작들은 물론, 통계 데이터의 수집은 동일 또는 상이한 비트 심도 정밀도로 수행될 수 있다. 예로서, 일 실시예에서, 미가공 이미지 픽셀 데이터(96)의 처리는 14비트의 정밀도로 수행될 수 있다. 그러한 실시예들에서, ISP 프론트-엔드 로직(80)에 의해 수신된, 14비트보다 낮은 비트 심도(예컨대, 8비트, 10비트, 12비트)를 갖는 미가공 픽셀 데이터는 이미지 처리 목적을 위해 14비트로 업샘플링될 수 있다. 다른 실시예에서, 통계 처리는 8비트의 정밀도로 이루어지며, 따라서 더 높은 비트 심도를 갖는 미가공 픽셀 데이터는 통계 목적을 위해 8비트 포맷으로 다운 샘플링될 수 있다. 이해하듯이, 8비트로의 다운 샘플링은 하드웨어 크기(예로서, 면적)를 줄이며, 통계 데이터에 대한 처리/계산 복잡성도 줄일 수 있다. 게다가, 미가공 이미지 데이터는 통계 데이터가 잡음에 더 강해지게 하기 위해 공간적으로 평균될 수 있다.
게다가, 도 7에 도시된 바와 같이, ISP 프론트-엔드 로직(80)은 또한 메모리(108)로부터 픽셀 데이터를 수신할 수 있다. 예로서, 참조 번호 98로 도시된 바와 같이, 미가공 픽셀 데이터가 센서 인터페이스(94)로부터 메모리(108)로 전송될 수 있다. 이어서, 메모리(108)에 존재하는 미가공 픽셀 데이터는 참조 번호 100으로 지시되는 바와 같이 처리를 위해 ISP 프론트-엔드 로직(80)으로 제공될 수 있다. 메모리(108)는 메모리 장치(18), 저장 장치(20)의 일부이거나, 전자 장치(10) 내의 개별 전용 메모리일 수 있으며, 직접 메모리 액세스(DMA) 특징들을 포함할 수 있다. 게다가, 소정 실시예들에서, ISP 프론트-엔드 로직(80)은 그 자신의 클록 도메인에서 동작할 수 있고, 상이한 크기들 및 상이한 타이밍 요구들을 갖는 센서들을 지원하기 위해 센서 인터페이스(94)에 대한 비동기 인터페이스를 제공할 수 있다.
미가공 이미지 데이터 96(센서 인터페이스(94)로부터) 또는 100(메모리(108)로부터)의 수신시, ISP 프론트-엔드 로직(80)은 시간 필터링 및/또는 비닝 보상 필터링과 같은 하나 이상의 이미지 처리 동작들을 수행할 수 있다. 이어서, 처리된 이미지 데이터는 (예로서, 디스플레이 장치(28) 상에) 표시되기 전에 추가 처리를 위해 ISP 파이프 로직(82)에 제공되거나(출력 신호 109), 메모리로 전송될 수 있다(출력 신호 110). ISP 파이프 로직(82)은 "프론트-엔드" 처리된 데이터를 ISP 프론트-엔드 로직(80)으로부터 직접 또는 메모리(108)로부터 수신하고(입력 신호 112), 미가공 도메인에서는 물론, RGB 및 YCbCr 컬러 공간들에서의 이미지 데이터의 추가 처리를 제공할 수 있다. 이어서, ISP 파이프 로직(82)에 의해 처리된 이미지 데이터는 사용자에 의한 관찰을 위해 디스플레이(28)로 출력되고(신호 114) 그리고/또는 그래픽 엔진 또는 GPU에 의해 더 처리될 수 있다. 게다가, ISP 파이프 로직(82)으로부터의 출력은 메모리(108)로 전송될 수 있으며(신호 115), 디스플레이(28)는 메모리(108)로부터 이미지 데이터를 판독할 수 있고(신호 116), 소정 실시예들에서 메모리는 하나 이상의 프레임 버퍼들을 구현하도록 구성될 수 있다. 게다가, 일부 구현들에서, ISP 파이프 로직(82)의 출력은 또한 이미지 데이터의 인코딩/디코딩을 위해 압축/해제 엔진(118)에 제공될 수 있다(신호 117). 인코딩된 이미지 데이터는 저장될 수 있고, 이어서 디스플레이 장치(28) 상에 표시되기 전에 압축 해제될 수 있다(신호 119). 예로서, 압축 엔진 또는 "인코더"(118)는 정지 이미지들을 인코딩하기 위한 JPEG 압축 엔진 또는 비디오 이미지들을 인코딩하기 위한 H.264 압축 엔진 또는 이들의 소정 조합은 물론, 이미지 데이터를 디코딩하기 위한 대응하는 압축 해제 엔진일 수 있다. ISP 파이프 로직(82)에서 제공될 수 있는 이미지 처리 동작들에 관한 추가 정보는 도 98 내지 133과 관련하여 아래에 더 상세히 설명된다. 또한, ISP 파이프 로직(82)은 입력 신호 112로 도시된 바와 같이 메모리(108)로부터 미가공 이미지 데이터를 수신할 수도 있다는 점에 유의해야 한다.
ISP 프론트-엔드 로직(80)에 의해 결정된 통계 데이터(102)가 제어 로직 유닛(84)에 제공될 수 있다. 통계 데이터(102)는 예로서 자동 노출, 자동 백색 균형, 자동 포커스, 플리커 검출, 흑색 레벨 보상(BLC), 렌즈 음영 교정 등에 관한 이미지 센서 통계를 포함할 수 있다. 제어 로직(84)은 수신된 통계 데이터(102)에 기초하여 이미징 장치(30)에 대한 제어 파라미터들(104)은 물론, ISP 파이프 프로세싱 로직(82)에 대한 제어 파라미터들(106)을 결정하도록 구성될 수 있는 하나 이상의 루틴들(예로서, 펌웨어)을 실행하도록 구성된 프로세서 및/또는 마이크로컨트롤러를 포함할 수 있다. 단지 예로서, 제어 파라미터들(104)은 센서 제어 파라미터들(예로서, 노출 제어를 위한 이득들, 적분 시간들), 카메라 플래시 제어 파라미터들, 렌즈 제어 파라미터들(예로서, 포커싱 또는 줌을 위한 초점 길이) 또는 이러한 파라미터들의 조합을 포함할 수 있다. ISP 제어 파라미터들(106)은 자동 백색 균형 및 컬러 조정(예를 들어, RGB 처리 동안)을 위한 이득 레벨들 및 컬러 교정 행렬(CCM) 계수들은 물론, 후술하는 바와 같이 백색 포인트 균형 파라미터들에 기초하여 결정될 수 있는 렌즈 음영 교정 파라미터들을 포함할 수 있다. 일부 실시예들에서, 제어 로직(84)은 통계 데이터(102)를 분석하는 것 외에도 전자 장치(10)에 (예를 들어, 메모리(18) 또는 저장 장치(20)에) 저장될 수 있는 이력 통계를 분석할 수 있다.
도시된 실시예를 참조하면, 이미지 처리 회로(32)는 이미지 신호 처리(ISP) 프론트-엔드 프로세싱 로직(80), ISP 파이프 프로세싱 로직(82) 및 제어 로직(84)을 포함할 수 있다. 이미징 장치(30)에 의해 캡처된 이미지 데이터는 먼저 ISP 프론트-엔드 로직(80)에 의해 처리되며, ISP 파이프 로직(82) 및/또는 이미징 장치(30)에 대한 하나 이상의 제어 파라미터들을 결정하는 데 사용될 수 있는 이미지 통계를 캡처하기 위해 분석될 수 있다. ISP 프론트-엔드 로직(80)은 이미지 센서 입력 신호로부터 이미지 데이터를 캡처하도록 구성될 수 있다. 예로서, 도 7에 도시된 바와 같이, 이미징 장치(30)는 하나 이상의 렌즈들(88) 및 이미지 센서(들)(90)를 갖는 카메라를 포함할 수 있다. 전술한 바와 같이, 이미지 센서(들)(90)는 컬러 필터 어레이(예컨대, 베이어 필터)를 포함할 수 있으며, 따라서 ISP 프론트-엔드 로직(80)에 의해 처리될 수 있는 미가공 이미지 데이터의 세트를 제공하기 위해 이미지 센서들(90)의 각각의 이미징 픽셀에 의해 캡처된 광 강도 및 파장 정보 모두를 제공할 수 있다. 예로서, 이미징 장치(30)로부터의 출력(92)이 센서 인터페이스(94)에 의해 수신될 수 있고, 이어서 센서 인터페이스는 예로서 센서 인터페이스 타입에 기초하여 미가공 이미지 데이터(96)를 ISP 프론트-엔드 로직(80)에 제공할 수 있다. 예로서, 센서 인터페이스(94)는 표준 이동 이미징 아키텍처(SMIA) 인터페이스 또는 다른 직렬 또는 병렬 카메라 인터페이스들, 또는 이들의 소정 조합을 이용할 수 있다. 소정 실시예들에서, ISP 프론트-엔드 로직(80)은 그 자신의 클록 도메인 내에서 동작할 수 있으며, 상이한 크기들 및 타이밍 요구들의 이미지 센서들을 지원하기 위해 센서 인터페이스(94)에 대한 비동기 인터페이스를 제공할 수 있다.
도 8은 이미지 처리 회로(32)의 다른 실시예를 나타내는 블록도를 나타내며, 이 도면에서 동일 컴포넌트들은 동일 참조 번호들로 표시된다. 일반적으로, 도 8의 이미지 처리 회로(32)의 동작 및 기능은 도 7의 이미지 처리 회로(32)와 유사하며, 그 차이는 도 8에 도시된 실시예가 ISP 파이프라인(82)으로부터 다운스트림에 결합되고 추가 후처리 단계들을 제공할 수 있는 ISP 백-엔드 프로세싱 로직 유닛(120)을 더 포함한다는 점이다.
도시된 실시예에서, ISP 백-엔드 로직(120)은 ISP 파이프라인(82)으로부터 출력(114)을 수신하고, 수신된 데이터(114)를 처리하는 후처리를 수행할 수 있다. 게다가, ISP 백-엔드(120)는 입력(124)에 도시된 바와 같이 메모리(108)로부터 직접 이미지 데이터를 수신할 수 있다. 도 134 내지 142와 관련하여 아래에 더 설명되는 바와 같이, ISP 백-엔드 로직(120)의 일 실시예는 (종종 "색조 맵핑"으로 지칭되는) 이미지 데이터의 동적 범위 압축, 휘도, 콘트라스트 및 컬러 조정들은 물론, (예를 들어, 출력 디스플레이 장치의 해상도에 기초하여) 이미지 데이터를 원하는 크기 또는 해상도로 스케일링하기 위한 스케일링 로직도 제공할 수 있다. 게다가, ISP 백-엔드 로직(120)은 이미지 데이터 내의 소정의 특징들을 검출하기 위한 특징 검출 로직도 포함할 수 있다. 예로서, 일 실시예에서, 특징 검출 로직은 얼굴들 및/또는 얼굴 특징들이 이미지 데이터 내에 위치 및/또는 배치된 영역들을 식별하도록 구성된 얼굴 검출 로직을 포함할 수 있다. 얼굴 검출 데이터는 자동 백색 균형, 자동 포커스, 플리커 및 자동 노출 통계를 결정하기 위한 피드백 데이터로서 프론트-엔드 통계 프로세싱 유닛에 공급될 수 있다. 예로서, (도 68-97에서 더 상세히 후술하는) ISP 프론트-엔드(80) 내의 통계 프로세싱 유닛들은 이미지 데이터 내의 얼굴들 및/또는 얼굴 특징들의 결정된 위치들에 기초하여 통계 처리를 위한 윈도들을 선택하도록 구성될 수 있다.
일부 실시예들에서, 얼굴 검출 데이터는 ISP 프론트-엔드 통계 피드백 제어 루프에 피드백되는 것에 더하여 또는 그 대신에 로컬 색조 맵핑 프로세싱 로직, ISP 백-엔드 통계 유닛 중 적어도 하나에 또는 인코더/디코더 유닛(118)에 제공될 수도 있다. 아래에 더 설명되는 바와 같이, 백-엔드 통계 유닛에 제공된 얼굴 검출 데이터는 양자화 파라미터들을 제어하는 데 이용될 수 있다. 예로서, (예로서, 매크로블록들 내에서) 출력된 이미지 데이터를 인코딩 또는 압축할 때, 얼굴들 및/또는 얼굴 특징들을 포함하도록 결정된 이미지의 영역들에 대해 양자화가 감소될 수 있으며, 따라서 이미지가 표시되고 사용자가 볼 때 얼굴들 및 얼굴 특징들의 시각적 품질이 향상될 수 있다.
추가 실시예들에서, 특징 검출 로직은 또한 이미지 프레임 내의 물체들의 코너들의 위치들을 검출하도록 구성될 수 있다. 이 데이터는 이미지 정합(image registration)과 같은 소정의 이미지 처리 동작들을 수행하는 데 사용될 수 있는 프레임들 사이의 글로벌 모션의 추정을 결정하기 위하여 연속 이미지 프레임들 내의 특징들의 위치를 식별하는 데 사용될 수 있다. 일 실시예에서, 코너 특징들 등의 식별은 소정의 높은 동적 범위(HDR) 이미징 알고리즘들은 물론, 소정의 파노라마 스티칭 알고리즘들에서와 같이 다수의 이미지 프레임을 결합하는 알고리즘들에 대해 특히 유용할 수 있다.
게다가, 도 8에 도시된 바와 같이, ISP 백-엔드 로직(120)에 의해 처리된 이미지 데이터는 사용자에 의한 관찰을 위해 디스플레이 장치(28)로 출력될 수 있고(신호 126), 그리고/또는 그래픽 엔진 또는 GPU에 의해 더 처리될 수 있다. 게다가, ISP 백-엔드 로직(120)으로부터의 출력은 메모리(108)로 전송될 수 있고(신호 122), 디스플레이(28)는 일부 실시예들에서 하나 이상의 프레임 버퍼들을 구현하도록 구성될 수 있는 메모리(108)로부터 이미지 데이터를 판독할 수 있다(신호 116). 도시된 실시예에서, ISP 백-엔드 로직(120)의 출력은 또한 도 7에서 일반적으로 전술한 바와 같이 저장 및 후속 재생을 위해 이미지 데이터를 인코딩/디코딩하기 위해 압축/해제 엔진(118)에 제공될 수 있다(신호 117). 추가 실시예들에서, 도 8의 ISP 서브시스템(32)은 ISP 백-엔드 프로세싱 유닛(120)을 바이패스하는 옵션을 가질 수 있다. 그러한 실시예들에서, 백-엔드 프로세싱 유닛(120)이 바이패스되는 경우, 도 8의 ISP 서브시스템(32)은 도 7에 도시된 것과 유사한 방식으로 동작할 수 있는데, 즉 ISP 파이프라인(82)의 출력은 메모리(108), 인코더/디코더(118) 또는 디스플레이(28) 중 하나 이상으로 직접/간접 전송된다.
도 7 및 도 8에 도시된 실시예들에서 설명되는 이미지 처리 기술들은 일반적으로 도 9의 흐름도를 통해 설명되는 방법(130)에 의해 요약될 수 있다. 도시된 바와 같이, 방법(130)은 블록 132에서 시작하며, 여기서 미가공 이미지 데이터(예로서, 베이어 패턴 데이터)가 이미지 센서(예로서, 90)로부터 센서 인터페이스를 이용하여 수신된다. 블록 134에서, 단계 132에서 수신된 미가공 이미지 데이터가 ISP 프론트-엔드 로직(80)을 이용하여 처리된다. 전술한 바와 같이, ISP 프론트-엔드 로직(80)은 시간 필터링, 비닝 보상 필터링을 적용하도록 구성될 수 있다. 이어서, 단계 136에서, ISP 프론트-엔드 로직(80)에 의해 처리된 미가공 이미지 데이터는 ISP 파이프라인(82)에 의해 더 처리될 수 있으며, 이 ISP 파이프라인은 미가공 이미지 데이터를 풀 컬러 RGB 데이터로 디모자이크하고, RGB 컬러 데이터를 YUV 또는 YC1C2 컬러 공간으로 더 변환하기 위해 다양한 처리 단계들을 수행할 수 있다(여기서, C1 및 C2는 상이한 크로마 컬러들을 나타내며, C1 및 C2는 일 실시예에서 청색 차이(Cb) 및 적색 차이(Cr) 크로마를 나타낼 수 있다).
단계 136으로부터, 방법(130)은 단계 138 또는 단계 160으로 계속될 수 있다. 예로서, ISP 파이프라인(82)의 출력이 디스플레이 장치(28)로 제공되는 일 실시예(도 7)에서, 방법(130)은 단계 140으로 계속되며, 여기서 YC1C2 이미지 데이터가 디스플레이 장치(28)를 이용하여 표시된다(또는 ISP 파이프라인(82)으로부터 메모리(108)로 전송된다). 대안으로서, ISP 파이프라인(82)의 출력이 ISP 백-엔드 유닛(120; 도 8)에 의해 후처리되는 실시예에서, 방법(130)은 단계 136으로부터 단계 138로 계속될 수 있으며, 여기서 ISP 파이프라인(82)의 YC1C2 출력은 단계 140에서 디스플레이 장치에 의해 표시되기 전에 ISP 백-엔드 프로세싱 로직(120)을 이용하여 처리된다.
본 명세서에서 설명되는 이미지 처리 회로(32)의 교체로 복잡한 설계로 인해, 후술하는 바와 같이, ISP 프론트-엔드 로직(80), ISP 파이프 프로세싱 로직(82)(또는 ISP 파이프라인) 및 ISP 백-엔드 프로세싱 로직(120)의 설명을 개별 섹션들로 분리하는 것이 이로울 수 있다. 구체적으로, 본 출원의 도 10 내지 97은 ISP 프론트-엔드 로직(80)의 다양한 실시예들 및 양태들의 설명과 관련되고, 본 출원의 도 98 내지 133은 ISP 파이프 프로세싱 로직(82)의 다양한 실시예들 및 양태들의 설명과 관련되며, 도 134 내지 142는 ISP 백-엔드 로직(120)의 다양한 실시예들 및 양태들의 설명과 관련될 수 있다.
ISP 프론트-엔드 프로세싱 로직
도 10은 일 실시예에 따른, ISP 프론트-엔드 로직(80) 내에 구현될 수 있는 기능적 로직 블록들을 나타내는 상세 블록도이다. 도 7에서 전술한 바와 같은 이미징 장치(30) 및/또는 센서 인터페이스(94)의 구성에 따라, 미가공 이미지 데이터가 하나 이상의 이미지 센서들(90)에 의해 ISP 프론트-엔드 로직(80)으로 제공될 수 있다. 도시된 실시예에서, 미가공 이미지 데이터는 제1 이미지 센서(90a)(Sensor0) 및 제2 이미지 센서(90b)(Sensor1)에 의해 ISP 프론트-엔드 로직(80)으로 제공될 수 있다. 아래에 더 설명되는 바와 같이, 각각의 이미지 센서(90a, 90b)는 이미지 신호의 신호 대 잡음비를 향상시키기 위하여 최대 해상도 이미지 데이터에 비닝을 적용하도록 구성될 수 있다. 예로서, 동일 컬러의 4개의 최대 해상도 이미지 픽셀에 기초하여 "비닝된" 미가공 이미지 픽셀을 보간할 수 있는 2x2 비닝과 같은 비닝 기술이 적용될 수 있다. 일 실시예에서, 이것은 단일 잡음 성분에 콘트라스트하여 비닝된 픽셀과 관련된 4개의 누적된 신호 성분이 존재하게 할 수 있으며, 따라서 이미지 데이터의 신호 대 잡음비를 향상시키지만, 전체 해상도는 감소시킬 수 있다. 게다가, 비닝은 또한 이미지 데이터의 불균등한 또는 불균일한 공간 샘플링을 유발할 수 있으며, 이는 아래에 더 상세히 설명되는 바와 같이 비닝 보상 필터링에 의해 교정될 수 있다.
도시된 바와 같이, 이미지 센서들(90a, 90b)은 각각 미가공 이미지 데이터를 신호들 Sif0 및 Sif1로서 제공할 수 있다. 이미지 센서들(90a, 90b) 각각은 일반적으로 각각의 통계 프로세싱 유닛들 142(StatsPipe0) 및 144(StatsPipe1)와 연관될 수 있으며, 이들은 자동 노출, 자동 백색 균형, 자동 포커스, 플리커 검출, 흑색 레벨 보상 및 렌즈 음영 교정 등과 관련된 통계를 포함하는 (신호들 Stats0 및 Stats1로 지시되는 바와 같은) 하나 이상의 통계 세트들의 결정을 위해 이미지 데이터를 처리하도록 구성될 수 있다. 소정 실시예들에서, 센서들(90a, 90b) 중 하나만이 활동적으로 이미지를 취득하고 있을 때, 추가 통계가 필요한 경우에 이미지 데이터가 StatsPipe0 및 StatsPipe1 모두에게로 전송될 수 있다. 예로서, 하나의 샘플을 제공하기 위하여, StatsPipe0 및 StatsPipe1 모두가 이용가능한 경우에, StatsPipe0은 하나의 컬러 공간(예로서, RGB)에 대한 통계를 수집하는 데 사용될 수 있고, StatsPipe1은 다른 컬러 공간(예로서, YUV 또는 YCbCr)에 대한 통계를 수집하는 데 사용될 수 있다. 즉, 통계 프로세싱 유닛들(142, 144)은 활성 센서에 의해 취득된 이미지 데이터의 각각의 프레임에 대한 다수의 통계 세트를 수집하도록 동시에 동작할 수 있다.
본 실시예에서는, ISP 프론트-엔드(80) 내에 5개의 비동기 데이터 소스가 제공된다. 이들은 (1) (Sif0 또는 Sens0로서 참조되는) Sensor0(90a)에 대응하는 센서 인터페이스로부터의 직접 입력, (2) (Sif1 또는 Sens1로서 참조되는) Sensor1(90b)에 대응하는 센서 인터페이스로부터의 직접 입력, (3) DMA 인터페이스를 포함할 수 있는 (SifIn0 또는 Sens0DMA로서 참조되는) 메모리(108)로부터의 Sensor0 데이터 입력, (4) (SifIn1 또는 Sens1DMA로서 참조되는) 메모리(108)로부터의 Sensor1 데이터 입력, 및 (5) (FeProcIn 또는 ProcInDMA로서 참조되는) 메모리(108)로부터 검색된 Sensor0 및 Sensor1 데이터 입력으로부터의 프레임들을 갖는 이미지 데이터의 세트를 포함한다. ISP 프론트-엔드(80)는 또한 소스들로부터의 이미지 데이터가 라우팅될 수 있는 다수의 목적지를 포함할 수 있으며, 각각의 목적지는 메모리(예로서, 108) 내의 저장 위치 또는 프로세싱 유닛일 수 있다. 예로서, 본 실시예에서, ISP 프론트-엔드(80)는 6개의 목적지, 즉 (1) 메모리(108) 내의 Sensor0 데이터를 수신하기 위한 Sif0DMA, (2) 메모리(108) 내의 Sensor1 데이터를 수신하기 위한 Sif1DMA, (3) 제1 통계 프로세싱 유닛(142)(StatsPipe0), (4) 제2 통계 프로세싱 유닛(144)(StatsPipe1), (5) 프론트-엔드 픽셀 프로세싱 유닛(FEProc)(150) 및 (6) 메모리(108) 또는 ISP 파이프라인(82)으로의 FeOut(또는 FEProcOut)(아래에 더 상세히 설명됨)을 포함한다. 일 실시예에서, ISP 프론트-엔드(80)는 아래의 표 1에 나타낸 바와 같이 특정 소스에 대해 소정의 목적지들만이 유효하도록 구성될 수 있다.
Figure pat00001
예로서, 표 1에 따르면, 소스 Sens0(Sensor0의 센서 인터페이스)은 데이터를 목적지들 Sif0DMA(신호 154), StatsPipe0(신호 156), StatsPipe1(신호 158), FEProc(신호 160) 또는 FEOut(신호 162)에 제공하도록 구성될 수 있다. FEOut와 관련하여, 소스 데이터는 일부 예들에서 예를 들어 디버깅 또는 테스트의 목적으로 FEProc에 의한 픽셀 처리를 바이패스하도록 FEOut에 제공될 수 있다. 게다가, 소스 Sens1(Sensor1의 센서 인터페이스)은 데이터를 목적지들 Sif1DMA(신호 164), StatsPipe0(신호 166), StatsPipe1(신호 168), FEProc(신호 170) 또는 FEOut(신호 172)에 제공하도록 구성될 수 있고, 소스 Sens0DMA(메모리(108)로부터의 Sensor0 데이터)는 데이터를 StatsPipe0(신호 174)에 제공하도록 구성될 수 있고, 소스 Sens1DMA(메모리(108)로부터의 Sensor1 데이터)는 데이터를 StatsPipe1(신호 176)에 제공하도록 구성될 수 있으며, 소스 ProcInDMA(메모리(108)로부터의 Sensor0 및 Sensor1 데이터)는 데이터를 FEProc(신호 178) 및 FEOut(신호 182)에 제공하도록 구성될 수 있다.
현재 예시되는 실시예는 Sens0DMA(메모리(108)로부터의 Sensor0 프레임들) 및 Sens1DMA(메모리(108)로부터의 Sensor1 프레임들)가 각각 StatsPipe0 및 StatsPipe1에만 제공되도록 구성된다는 점에 유의해야 한다. 이러한 구성은 ISP 프론트-엔드(80)가 메모리 내에 소정 수의 이전 프레임들(예로서, 5개의 프레임)을 보유할 수 있게 한다. 예로서, 사용자가 이미지 센서를 이용하여 (예로서, 미리보기 모드에서 캡처 또는 기록 모드로 이미지 시스템을 변경하거나, 심지어 단지 이미지 센서를 턴온 또는 초기화함으로써) 캡처 이벤트를 개시할 때와 이미지 장면이 캡처될 때 사이의 지연 또는 지체로 인해, 사용자가 캡처하려고 의도한 모든 프레임이 실질적으로 실시간으로 캡처되고 처리되지는 못한다. 따라서, (예로서, 미리보기 단계로부터) 소정 수의 이전 프레임들을 메모리(108)에 보유함으로써, 이러한 이전 프레임들이 나중에 또는 캡처 이벤트에 응답하여 실제로 캡처된 프레임들과 함께 처리될 수 있으며, 따라서 임의의 그러한 지연을 보상하고 더 완전한 이미지 데이터 세트를 제공할 수 있다.
도 10의 도시된 구성과 관련하여, StatsPipe0(142)은 멀티플렉스와 같은 선택 로직(146)에 의해 결정되는 바와 같은, 입력들 156(Sens0으로부터), 166(Sens1로부터) 및 174(Sens0DMA로부터) 중 하나를 수신하도록 구성된다는 점에 유의해야 한다. 유사하게, 선택 로직(148)은 신호들(158, 176, 168)로부터 입력을 선택하여 StatsPipe1에 제공할 수 있으며, 선택 로직(152)은 신호들(160, 170, 178)로부터 입력을 선택하여 FEProc에 제공할 수 있다. 전술한 바와 같이, 통계 데이터(Stats0, Stats1)는 이미징 장치(30) 및/또는 ISP 파이프 프로세싱 로직(82)을 동작시키는 데 사용될 수 있는 다양한 제어 파라미터들의 결정을 위해 제어 로직(84)에 제공될 수 있다. 알 수 있듯이, 도 10에 도시된 선택 로직 블록들(146, 148, 152)은 제어 신호에 응답하여 다수의 입력 신호 중 하나를 선택하는 멀티플렉서와 같은 임의의 적절한 타입의 로직에 의해 제공될 수 있다.
픽셀 프로세싱 유닛(FEProc)(150)은 미가공 이미지 데이터에 대해 픽셀별로 다양한 이미지 프로세싱 동작들을 수행하도록 구성될 수 있다. 도시된 바와 같이, 목적지 프로세싱 유닛으로서의 FEProc(150)는 선택 로직(152)을 통해 소스들 Sens0(신호 160), Sens1(신호 170) 또는 ProcInDMA(신호 178)로부터 이미지 데이터를 수신할 수 있다. FEProc(150)는 또한 아래에 더 설명되는 바와 같이 시간 필터링 및 비닝 보상 필터링을 포함할 수 있는 픽셀 프로세싱 동작들을 수행할 때 다양한 신호들(예로서, 시간 필터링 동안에 사용되는 모션 이력 및 루마 데이터를 나타낼 수 있는 Rin, Hin, Hout 및 Yout)을 수신하고 출력할 수 있다. 이어서, 픽셀 프로세싱 유닛(150)의 출력(109)(FEProcOut)은 예로서 하나 이상의 선입선출(FIFO) 큐들을 통해 ISP 파이프 로직(82)으로 전송되거나, 메모리(108)로 전송될 수 있다.
게다가, 도 10에 도시된 바와 같이, 선택 로직(152)은 신호들(160, 170, 178)을 수신하는 것에 더하여 신호들(180, 184)을 더 수신할 수 있다. 신호(180)는 StatsPipe0으로부터의 "사전 처리된" 미가공 이미지 데이터를 나타낼 수 있고, 신호(184)는 StatsPipe1로부터의 "사전 처리된" 미가공 이미지 데이터를 나타낼 수 있다. 후술하는 바와 같이, 통계 프로세싱 유닛들 각각은 통계를 수집하기 전에 미가공 이미지 데이터에 하나 이상의 사전 처리 동작들을 적용할 수 있다. 일 실시예에서, 통계 프로세싱 유닛들 각각은 소정 수준의 결함 픽셀 검출/보정, 렌즈 쉐이딩 보정, 블랙 레벨 보상 및 역 블랙 레벨 보상을 수행할 수 있다. 따라서, 신호들(180, 184)은 (아래 도 68에서 더 상세히 설명되는 바와 같이) 전술한 사전 처리 동작들을 이용하여 처리된 미가공 이미지 데이터를 나타낼 수 있다. 따라서, 선택 로직(152)은 Sensor0(신호 160) 및 Sensor1(신호 170)로부터의 사전 처리되지 않은 미가공 이미지 데이터 또는 StatsPipe0(신호 180) 및 StatsPipe1(신호 184)로부터의 사전 처리된 미가공 이미지 데이터를 제공하는 유연성을 ISP 프론트-엔드 프로세싱 로직(80)에 제공한다. 게다가, 선택 로직 유닛들(186, 188)에 의해 지시되는 바와 같이, ISP 프론트-엔드 프로세싱 로직(80)은 또한 Sensor0(신호 154) 또는 Sensor1(신호 164)로부터의 사전 처리되지 않은 미가공 이미지 데이터를 메모리(108)에 기입하거나 StatsPipe0(신호 180) 또는 StatsPipe1(신호 184)로부터의 사전 처리된 미가공 이미지 데이터를 메모리(108)에 기입하는 유연성을 갖는다.
ISP 프론트-엔드 로직(80)의 동작을 제어하기 위하여, 프론트-엔드 제어 유닛(190)이 제공된다. 제어 유닛(190)은 이미지 프레임의 프로세싱을 구성하고 개시하기 위한 제어 레지스터들(본 명세서에서 "고우(go) 레지스터들"로서 언급됨)을 초기화하고 프로그래밍하며, 이중 버퍼링된 데이터 레지스터들을 업데이트하기 위해 적절한 레지스터 뱅크(들)를 선택하도록 구성될 수 있다. 일부 실시예들에서, 제어 유닛(190)은 또한 클럭 사이클들, 메모리 레이턴시 및 서비스 품질(QOS) 정보를 기록하기 위한 성능 모니터링 로직을 제공할 수 있다. 게다가, 제어 유닛(190)은 또한 활성 센서로부터의 입력 큐 내의 충분한 데이터가 존재하지 않을 때 ISP 프론트-엔드(80)의 하나 이상의 부분들에 대한 클럭들을 디스에이블하는 데 이용될 수 있는 동적 클럭 게이팅을 제어할 수 있다.
전술한 "고우 레지스터들"을 이용하여, 제어 유닛(190)은 프로세싱 유닛들(예로서, StatsPipe0, StatsPipe1, FEProc) 각각에 대한 다양한 파라미터들의 업데이트를 제어하도록 구성될 수 있으며, 프로세싱 유닛들의 시동 및 정지를 제어하기 위해 센서 인터페이스들과 인터페이스할 수 있다. 일반적으로, 프론트-엔드 프로세싱 유닛들 각각은 프레임 단위로 동작한다. 전술한 바와 같이(표 1), 프로세싱 유닛들로의 입력은 센서 인터페이스(Sens0 또는 Sens1)로부터 또는 메모리(108)로부터 이루어질 수 있다. 게다가, 프로세싱 유닛들은 대응하는 메모리 레지스터들에 저장될 수 있는 다양한 파라미터들 및 구성 데이터를 이용할 수 있다. 일 실시예에서, 각각의 프로세싱 유닛 또는 목적지와 관련된 데이터 레지스터들은 레지스터 뱅크 그룹을 형성하는 블록들로 그룹화될 수 있다. 도 10의 실시예에서는, 7개의 레지스터 뱅크 그룹, 즉 SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut 및 ProcIn이 ISP 프론트-엔드 내에 정의될 수 있다. 각각의 레지스터 블록 어드레스 공간은 2개의 레지스터 뱅크를 제공하도록 복제된다. 이중 버퍼링되는 레지스터들만이 제2 뱅크 내에 인스턴스화된다. 레지스터가 이중 버퍼링되지 않는 경우, 제2 뱅크 내의 어드레스들은 제1 뱅크 내의 동일 레지스터의 어드레스에 맵핑될 수 있다.
이중 버퍼링되는 레지스터들의 경우, 하나의 뱅크로부터의 레지스터들이 활성 상태이고 프로세싱 유닛들에 의해 사용되는 반면, 다른 뱅크로부터의 레지스터들은 섀도잉(shadow)된다. 섀도잉된 레지스터는 하드웨어가 활성 레지스터들을 이용하고 있는 동안에 현재 프레임 구간 동안에 제어 유닛(190)에 의해 업데이트될 수 있다. 특정 프레임에서 특정 프로세싱 유닛에 대해 어느 뱅크를 사용할지에 대한 결정은 이미지 데이터를 프로세싱 유닛에 제공하는 소스에 대응하는 고우 레지스터 내의 "NextBk"(다음 뱅크) 필드에 의해 지정될 수 있다. 본질적으로, NextBk는 제어 유닛(190)이 후속 프레임에 대한 트리거링 이벤트 시에 어느 레지스터 뱅크가 활성으로 되게 할지를 제어할 수 있게 하는 필드이다.
고우 레지스터들의 동작을 상세히 설명하기 전에, 도 11은 본 기술들에 따른, 이미지 데이터를 프레임별로 처리하기 위한 일반 방법(200)을 제공한다. 단계 202에서 시작하여, 데이터 소스(예로서, Sens0, Sens1, Sens0DMA, Sens1DMA 또는 ProcInDMA)에 의해 타겟팅된 목적지 프로세싱 유닛들은 유휴 상태에 들어간다. 이것은 현재 프레임에 대한 프로세싱이 완료되었음을 나타낼 수 있으며, 따라서 제어 유닛(190)은 다음 프레임의 프로세싱을 준비할 수 있다. 예로서, 단계 204에서, 각각의 목적지 프로세싱 유닛에 대한 프로그램가능한 파라미터들이 업데이트된다. 이것은 예로서 소스에 대응하는 고우 레지스터 내의 NextBk 필드를 업데이트하는 것은 물론, 목적지 유닛들에 대응하는 데이터 레지스터들 내의 임의의 파라미터들을 업데이트하는 것을 포함할 수 있다. 이어서, 단계 206에서, 트리거링 이벤트가 목적지 유닛들을 실행 상태가 되게 할 수 있다. 게다가, 단계 208에 도시된 바와 같이, 소스에 의해 타겟팅된 각각의 목적지 유닛은 현재 프레임에 대한 그의 프로세싱 동작들을 완료하고, 이어서 방법(200)은 다음 프레임의 프로세싱을 위해 단계 202로 복귀할 수 있다.
도 12는 ISP 프론트-엔드의 다양한 목적지 유닛들에 의해 사용될 수 있는 데이터 레지스터들의 2개의 뱅크(210, 212)를 나타내는 블록도를 도시한다. 예로서, 뱅크 0(210)은 데이터 레지스터들 1-n(210a-210d)을 포함할 수 있고, 뱅크 1(212)은 데이터 레지스터들 1-n(212a-212d)을 포함할 수 있다. 전술한 바와 같이, 도 10에 도시된 실시예는 7개의 레지스터 뱅크 그룹(예로서, SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut 및 ProcIn)을 갖는 레지스터 뱅크(뱅크 0)를 이용할 수 있다. 따라서, 이러한 실시예에서, 각각의 레지스터의 레지스터 블록 어드레스 공간은 제2 레지스터 뱅크(뱅크 1)를 제공하도록 복제된다.
도 12는 소스들 중 하나에 대응할 수 있는 고우 레지스터(214)도 도시한다. 도시된 바와 같이, 고우 레지스터(214)는 "NextVld" 필드(216) 및 전술한 "NextBk" 필드(218)를 포함한다. 이러한 필드들은 현재 프레임의 프로세싱을 시작하기 전에 프로그래밍될 수 있다. 특히, NextVld는 소스로부터의 데이터가 전송될 목적지(들)를 나타낼 수 있다. 전술한 바와 같이, NextBk는 NextVld에 의해 지시된 바와 같이 타겟팅된 각각의 목적지에 대해 뱅크0 또는 뱅크1로부터 대응하는 데이터 레지스터를 선택할 수 있다. 도 12에는 도시되지 않았지만, 고우 레지스터(214)는 고우 레지스터를 아밍(arming)하도록 설정될 수 있는, 본 명세서에서 "고우 비트"로서 언급되는 아밍 비트도 포함할 수 있다. 현재 프레임에 대한 트리거링 이벤트(226)가 검출될 때, NextVld 및 NextBk는 대응하는 현재 또는 "활성" 레지스터(220)의 CurrVld 필드(222) 및 CurrBk 필드(224) 내에 복사될 수 있다. 일 실시예에서, 현재 레지스터(들)(220)는, ISP 프론트-엔드(80) 내의 소프트웨어 커맨드들에 액세스가능하지 않게 유지되면서 하드웨어에 의해 설정될 수 있는 판독 전용 레지스터들일 수 있다.
이해하듯이, 각각의 ISP 프론트-엔드 소스에 대해, 대응하는 고우 레지스터가 제공될 수 있다. 본 개시의 목적들을 위해, 전술한 소스들 Sens0, Sens1, Sens0DMA, Sens1DMA 및 ProcInDMA에 대응하는 고우 레지스터들은 각각 Sens0Go, Sens1Go, Sens0DMAGo, Sens1DMAGo 및 ProcInDMAGo로서 언급될 수 있다. 전술한 바와 같이, 제어 유닛은 고우 레지스터들을 이용하여, ISP 프론트-엔드(80) 내에서의 프레임 프로세싱의 시퀀싱을 제어할 수 있다. 각각의 고우 레지스터는 다음 프레임에 대해 어느 목적지들이 유효할 것인지 그리고 어느 레지스터 뱅크(0 또는 1)가 사용될 것인지를 각각 지시하기 위한 NextVld 필드 및 NextBk 필드를 포함한다. 다음 프레임의 트리거링 이벤트(226)가 발생할 때, NextVld 및 NextBk 필드들은 도 12에서 전술한 바와 같이 현재 유효한 목적지들 및 뱅크 번호들을 지시하는 대응하는 활성 판독 전용 레지스터(220)에 복사된다. 각각의 소스는 비동기적으로 동작하도록 구성될 수 있으며, 데이터를 그의 유효한 목적지들 중 임의의 목적지로 전송할 수 있다. 게다가, 각각의 목적지에 대해 일반적으로 하나의 소스만이 현재 프레임 동안에 활성일 수 있다는 것을 이해해야 한다.
고우 레지스터(214)의 아밍 및 트리거링과 관련하여, 고우 레지스터(214) 내에 아밍 비트 또는 "고우 비트"를 표명하는 것은 관련된 NextVld 및 NextBk 필드들을 갖는 대응하는 소스를 아밍한다. 트리거링을 위해, 소스 입력 데이터가 메모리(예로서, Sens0DMA, Sens1DMA 또는 ProcInDMA)로부터 판독되는지 또는 소스 입력 데이터가 센서 인터페이스(예로서, Sens0 또는 Sens1)로부터 판독되는지에 따라 다양한 모드들이 이용 가능하다. 예로서, 입력이 메모리(108)로부터 판독되는 경우, 고우 비트의 아밍 자체가 트리거링 이벤트로서 이용될 수 있는데, 그 이유는 제어 유닛(190)이 메모리(108)로부터 언제 데이터를 판독할지에 대한 제어를 갖기 때문이다. 이미지 프레임들이 센서 인터페이스에 의해 입력되고 있는 경우, 트리거링 이벤트는 센서 인터페이스로부터 데이터가 수신될 때에 대한 대응 고우 레지스터가 아밍되는 타이밍에 의존할 수 있다. 본 실시예에 따르면, 센서 인터페이스 입력으로부터 타이밍을 트리거링하기 위한 3가지 상이한 기술이 도 13-15에 도시된다.
먼저, 도 13을 참조하면, 소스에 의해 타겟팅된 모든 목적지들이 비지 또는 실행 상태에서 유휴 상태로 전이되면 트리거링이 발생하는 제1 시나리오가 도시되어 있다. 여기서, 데이터 신호 VVALID(228)는 소스로부터의 이미지 데이터 신호를 나타낸다. 펄스(230)는 이미지 데이터의 현재 프레임을 나타내고, 펄스(236)는 이미지 데이터의 다음 프레임을 나타내고, 구간(232)은 (예로서, 현재 프레임(230)의 최종 라인과 다음 프레임(236) 사이의 시간 차이를 나타내는) 수직 블랭킹 구간(VBLANK)(232)을 나타낸다. 펄스(230)의 상승 엣지와 하강 엣지 사이의 시간차는 프레임 구간(234)을 나타낸다. 따라서, 도 13에서, 소스는 모든 타겟팅된 목적지들이 현재 프레임(230)에 대한 프로세싱 동작들 및 유휴 상태로의 전이를 마친 때에 트리거링하도록 구성될 수 있다. 이러한 시나리오에서, 소스는 목적지들이 프로세싱을 완료하기 전에 (예로서, 아밍 또는 "고우" 비트를 설정함으로써) 아밍되며, 따라서 소스는 타겟팅된 목적지들이 유휴 상태가 되자마자 다음 프레임(236)의 프로세싱을 트리거링하고 개시할 수 있다. 수직 블랭킹 구간(232) 동안, 프로세싱 유닛들은 센서 입력 데이터가 도달하기 전에 소스에 대응하는 고우 레지스터에 의해 지정된 레지스터 뱅크들을 이용하여 다음 프레임(236)을 위해 셋업되고 구성될 수 있다. 단지 예로서, FEProc(150)에 의해 사용된 판독 버퍼들은 다음 프레임(236)이 도달하기 전에 채워질 수 있다. 이 경우, 활성 레지스터 뱅크들에 대응하는 섀도잉된 레지스터들이 트리거링 이벤트 후에 업데이트될 수 있으며, 따라서 전체 프레임 구간 동안에 (예로서, 프레임(236) 뒤의) 다음 프레임에 대한 이중 버퍼링된 레지스터들을 셋업하는 것을 가능하게 한다.
도 14는 소스에 대응하는 고우 레지스터 내의 고우 비트를 아밍함으로써 소스가 트리거링되는 제2 시나리오를 나타낸다. 이러한 "트리거-온-고우(trigger-on-go)" 구성에서, 소스에 의해 타겟팅된 목적지 유닛들은 이미 유휴 상태이고, 고우 비트의 아밍은 트리거링 이벤트이다. 이러한 트리거링 모드는, 이중 버퍼링되지 않고, 따라서 (예로서, 프레임 구간(234) 동안에 이중 버퍼링되는 섀도 레지스터를 업데이트하는 것과 달리) 수직 블랭킹 동안에 업데이트되는 레지스터들에 대해 이용될 수 있다.
도 15는 다음 프레임의 시작, 즉 상승 VSYNC의 검출 시에 소스가 트리거링되는 제3 트리거링 모드를 도시한다. 그러나, 이러한 모드에서는 다음 프레임(236)이 이미 프로세싱을 시작한 후에 고우 레지스터가 (고우 비트를 설정함으로써) 아밍되는 경우에, 소스는 이전 프레임에 대응하는 타겟 목적지들 및 레지스터 뱅크들을 이용할 것인데, 그 이유는 목적지가 프로세싱을 시작하기 전에 CurrVld 및 CurrBk 필드들이 업데이트되지 않기 때문이라는 것에 유의해야 한다. 이것은 목적지 프로세싱 유닛들을 셋업하기 위한 수직 블랭킹 구간을 남기지 않으며, 특히 이중 센서 모드로 동작할 때 잠재적으로 프레임들이 드롭되게 할 수 있다. 그러나, 이러한 모드는 그럼에도 불구하고 이미지 처리 회로(32)가 각각의 프레임에 대해 동일한 레지스터 뱅크들을 사용하는(예로서, 목적지(NextVld) 및 레지스터 뱅크들(NextBk)이 변경되지 않는) 단일 센서 모드로 동작하고 있는 경우에 정확한 동작을 제공할 수 있다는 점에 유의해야 한다.
이제, 도 16을 참조하면, 제어 레지스터(또는 "고우 레지스터")(214)가 더 상세히 도시되어 있다. 고우 레지스터(214)는 NextVld 필드(216) 및 NextBk 필드(218)는 물론, 아밍 "고우" 비트(238)도 포함한다. 전술한 바와 같이, ISP 프론트-엔드(80)의 각각의 소스(예로서, Sens0, Sens1, Sens0DMA, Sens1DMA 또는 ProcInDMA)는 대응하는 고우 레지스터(214)를 가질 수 있다. 일 실시예에서, 고우 비트(238)는 단일-비트 필드일 수 있으며, 고우 레지스터(214)는 고우 비트(238)를 1로 설정함으로써 아밍될 수 있다. NextVld 필드(216)는 ISP 프론트-엔드(80) 내의 목적지들의 수에 대응하는 다수의 비트를 포함할 수 있다. 예로서, 도 10에 도시된 실시예에서, ISP 프론트-엔드는 6개의 목적지, 즉 Sif0DMA, Sif1DMA, StatsPipe0, StatsPipe1, FEProc 및 FEOut을 포함한다. 따라서, 고우 레지스터(214)는 하나의 비트가 각각의 목적지에 대응하는 NextVld 필드(216) 내의 6 비트를 포함할 수 있으며, 타겟팅된 목적지들은 1로 설정된다. 유사하게, NextBk 필드(216)는 ISP 프론트-엔드(80) 내의 데이터 레지스터들의 수에 대응하는 다수의 비트를 포함할 수 있다. 예로서, 전술한 바와 같이, 도 10에 도시된 ISP 프론트-엔드(80)의 실시예는 7개의 데이터 레지스터, 즉 SIf0, SIf1, StatsPipe0, StatsPipe1, ProcPipe, FEOut 및 ProcIn을 포함할 수 있다. 따라서, NextBk 필드(218)는 하나의 비트가 각각의 데이터 레지스터에 대응하는 7 비트를 포함할 수 있으며, 뱅크 0 및 1에 대응하는 데이터 레지스터들은 그들 각각의 비트 값들을 0 또는 1로 각각 설정함으로써 선택된다. 따라서, 고우 레지스터(214)를 이용하여, 소스는 트리거링 시에 어느 목적지 유닛들이 프레임 데이터를 수신할지 그리고 타겟팅된 목적지 유닛들을 구성하기 위해 어느 레지스터 뱅크들이 사용될지를 정확히 안다.
게다가, ISP 회로(32)에 의해 지원되는 이중 센서 구성으로 인해, ISP 프론트-엔드는 단일 센서 구성 모드(예로서, 하나의 센서만이 데이터를 취득함) 및 이중 센서 구성 모드(예로서, 양 센서가 데이터를 취득함)로 동작할 수 있다. 통상의 단일 센서 구성에서, Sens0과 같은 센서 인터페이스로부터의 입력 데이터는 (통계 프로세싱을 위해) StatsPipe0 및 (픽셀 프로세싱을 위해) FEProc로 전송된다. 게다가, 센서 프레임들 또한 전술한 바와 같이 미래의 프로세싱을 위해 메모리(SIf0DMA)로 전송될 수 있다.
ISP 프론트-엔드(80)의 각각의 소스에 대응하는 NextVld 필드들이 단일 센서 모드로 동작할 때 구성될 수 있는 방법의 일례를 아래의 표 2에 나타낸다.
Figure pat00002
표 1과 관련하여 전술한 바와 같이, ISP 프론트-엔드(80)는 소정의 목적지들만이 특정 소스에 대해 유효하도록 구성될 수 있다. 따라서, "X"로 표시된 표 2의 목적지들은 ISP 프론트-엔드(80)가 특정 소스로 하여금 프레임 데이터를 그 목적지로 전송하는 것을 허용하도록 구성되지 않는다는 것을 지시하는 것을 의도한다. 그러한 목적지들의 경우, 그 목적지에 대응하는 특정 소스의 NextVld 필드의 비트들은 항상 0일 수 있다. 그러나, 이것은 단지 일 실시예일 뿐이며, 사실상 다른 실시예들에서 ISP 프론트-엔드(80)는 각각의 소스가 각각의 이용 가능한 목적지 유닛을 타겟으로 할 수 있도록 구성될 수 있다는 것을 이해해야 한다.
위의 표 2에 나타낸 구성은 Sensor0만이 프레임 데이터를 제공하는 단일 센서 모드를 나타낸다. 예로서, Sens0Go 레지스터는 목적지들을 SIf0DMA, StatsPipe0 및 FEProc인 것으로 지시한다. 따라서, 트리거링될 때, Sensor0 이미지 데이터의 각각의 프레임은 이들 3개의 목적지로 전송된다. 전술한 바와 같이, SIf0DMA는 나중 프로세싱을 위해 메모리(108)에 프레임들을 저장할 수 있고, StatsPipe0은 통계 프로세싱을 적용하여 다양한 통계 데이터 포인트들을 결정하며, FEProc는 예를 들어 시간 필터링 및 비닝 보상 필터링을 이용하여 프레임을 처리한다. 게다가, 추가적인 통계(예로서, 상이한 컬러 공간들에서의 통계)가 필요한 일부 구성들에서, StatsPipe1은 또한 단일 센서 모드 동안에 인에이블될 수 있다(대응하는 NextVld가 1로 설정됨). 그러한 실시예에서, Sensor0 프레임 데이터는 StatsPipe0 및 StatsPipe1 모두에게로 전송된다. 게다가, 본 실시예에 도시된 바와 같이, 단일 센서 인터페이스(예로서, Sens0 또는 대안으로서 Sen0)만이 단일 센서 모드 동안의 유일한 활성 소스이다.
이것을 기억하면서, 도 17은 단일 센서(예로서, Sensor0)만이 활성일 때 ISP 프론트-엔드(80)에서 프레임 데이터를 처리하기 위한 방법(240)을 나타내는 흐름도를 제공한다. 방법(240)이 특히 일례로서 FEProc(150)에 의한 Sensor0 프레임 데이터의 프로세싱을 예시하지만, 이러한 프로세스는 ISP 프론트-엔드(80) 내의 임의의 다른 소스 및 대응하는 목적지 유닛에 적용될 수 있다는 것을 이해해야 한다. 단계 242에서 시작하여, Sensor0은 이미지 데이터를 취득하고, 캡처된 프레임들을 ISP 프론트-엔드(80)로 전송하는 것을 시작한다. 단계 244에 나타낸 바와 같이, 제어 유닛(190)은 Sens0(Sensor0 인터페이스)에 대응하는 고우 레지스터의 프로그래밍을 초기화하여, (FEProc를 포함하는) 타겟 목적지들 및 어떤 뱅크 레지스터들을 사용할지를 결정할 수 있다. 이어서, 판정 로직(246)은 소스 트리거링 이벤트가 발생했는지를 결정한다. 전술한 바와 같이, 센서 인터페이스로부터의 프레임 데이터 입력은 상이한 트리거링 모드들을 이용할 수 있다(도 13-15). 트리거 이벤트가 검출되지 않은 경우, 프로세스(240)는 트리거를 계속 기다린다. 트리거링이 발생하면, 다음 프레임이 현재 프레임이 되고, 단계 248에서의 프로세싱을 위해 FEProc(및 다른 타겟 목적지들)로 전송된다. FEProc는 Sens0Go 레지스터의 NextBk 필드에서 지정되는 대응하는 데이터 레지스터(ProcPipe)에 기초하는 데이터 파라미터들을 이용하여 구성될 수 있다. 현재 프레임의 프로세싱이 단계 250에서 완료된 후에, 방법(240)은 단계 244로 복귀할 수 있으며, 여기서 Sens0Go 레지스터가 다음 프레임에 대해 프로그래밍된다.
ISP 프론트-엔드(80)의 Sensor0 및 Sensor1 모두가 활성일 때, 일반적으로 통계 프로세싱이 간단해지는데, 그 이유는 각각의 센서 입력이 각각의 통계 블록, StatsPipe0 및 StatsPipe1에 의해 처리될 수 있기 때문이다. 그러나, ISP 프론트-엔드(80)의 도시된 실시예는 단일 픽셀 프로세싱 유닛(FEProc)만을 제공하므로, FEProc는 Sensor0 입력 데이터에 대응하는 프레임들 및 Sensor1 입력 데이터에 대응하는 프레임들의 프로세싱 사이에서 교대하도록 구성될 수 있다. 이해하듯이, 도시된 실시예에서는, 하나의 센서로부터의 이미지 데이터가 실시간으로 처리되는 한편 다른 센서로부터의 이미지 데이터가 실시간으로 처리되지 못하는 상태를 피하기 위해 이미지 프레임들이 FEProc로부터 판독된다. 예로서, ISP 프론트-엔드(80)가 이중 센서 모드로 동작할 때 각각의 소스에 대한 고우 레지스터들 내의 NextVld 필드들의 하나의 가능한 구성을 나타내는 아래의 표 3에 나타낸 바와 같이, 각각의 센서로부터의 입력 데이터가 메모리(SIf0DMA, SIf1DMA)로 그리고 대응하는 통계 프로세싱 유닛(StatsPipe0, StatsPipe1)으로 전송된다.
Figure pat00003
메모리 내의 센서 프레임들은 ProcInDMA 소스로부터 FEProc로 전송되며, 따라서 이들은 이들의 대응하는 프레임 레이트들에 기초하는 레이트로 Sensor0과 Sensor1 사이에서 교대한다. 예로서, Sensor0 및 Sensor1 모두가 30 프레임/초(fps)의 레이트로 이미지 데이터를 취득하는 경우, 이들의 센서 프레임들은 일대일 방식으로 인터리빙될 수 있다. Sensor0(30 fps)이 Sensor1(15 fps)의 레이트의 2배의 레이트로 이미지 데이터를 취득하는 경우, 인터리빙은 예를 들어 2대1로 이루어질 수 있다. 즉, Sensor1 데이터의 1 프레임마다 Sensor0 데이터의 2 프레임이 메모리로부터 판독된다.
이를 기억하면서, 도 18은 이미지 데이터를 동시에 취득하는 2개의 센서를 갖는 ISP 프론트-엔드(80)에서 프레임 데이터를 처리하기 위한 방법(252)을 나타낸다. 단계 254에서, Sensor0 및 Sensor1 모두가 이미지 프레임들을 취득하기 시작한다. 이해하듯이, Sensor0 및 Sensor1은 상이한 프레임 레이트들, 해상도들 등을 이용하여 이미지 프레임들을 취득할 수 있다. 단계 256에서, Sensor0 및 Sensor1로부터의 취득된 프레임들이 (예로서, SIf0DMA 및 SIf1DMA 목적지들을 이용하여) 메모리(108)에 기입된다. 이어서, 단계 258에 지시되는 바와 같이, 소스 ProcInDMA가 메모리(108)로부터 교호 방식으로 프레임 데이터를 판독한다. 설명된 바와 같이, 프레임들은 데이터가 취득되는 프레임 레이트에 따라 Sensor0 데이터와 Sensor1 데이터 사이에서 교대할 수 있다. 이어서, 단계 260에서, ProcInDMA로부터의 다음 프레임이 취득된다. 이어서, 단계 262에서, 다음 프레임이 Sensor0 또는 Sensor1 데이터인지에 따라, 소스, 여기서는 ProcInDMA에 대응하는 고우 레지스터의 NextVld 및 NextBk 필드들이 프로그래밍된다. 이어서, 판정 로직(264)은 소스 트리거링 이벤트가 발생하였는지를 결정한다. 전술한 바와 같이, 메모리로부터의 데이터 입력은 고우 비트를 아밍함으로써 트리거링될 수 있다(예로서, "트리거-온-고우" 모드). 따라서, 트리거링은 고우 레지스터의 고우 비트가 1로 설정되면 발생할 수 있다. 트리거링이 발생하면, 다음 프레임이 현재 프레임이 되고, 단계 266에서 프로세싱을 위해 FEProc로 전송된다. 전술한 바와 같이, FEProc는 ProcInDMAGo 레지스터의 NextBk 필드에서 지정되는 대응하는 데이터 레지스터(ProcPipe)에 기초하는 데이터 파라미터들을 이용하여 구성될 수 있다. 단계 268에서 현재 프레임의 프로세싱을 완료한 후에, 방법(252)은 단계 260으로 복귀하여 계속될 수 있다.
ISP 프론트-엔드(80)가 핸들링하도록 구성되는 추가 동작 이벤트는 이미지 프로세싱 동안의 구성 변경이다. 예로서, 그러한 이벤트는 ISP 프론트-엔드(80)가 단일 센서 구성에서 이중 센서 구성으로 또는 그 반대로 전이될 때 발생할 수 있다. 전술한 바와 같이, 소정 소스들에 대한 NextVld 필드들은 하나 또는 2개의 이미지 센서가 활성인지에 따라 다를 수 있다. 따라서, 센서 구성이 변경될 때, ISP 프론트-엔드 제어 유닛(190)은 모든 목적지 유닛들이 새로운 소스에 의해 타겟팅되기 전에 이들을 릴리스할 수 있다. 이것은 (예로서, 하나의 목적지에 다수의 소스를 할당하는) 무효 구성들을 회피할 수 있다. 일 실시예에서, 목적지 유닛들의 릴리스는 모든 고우 레지스터들의 NextVld 필드들을 0으로 설정하여 모든 목적지들을 디스에이블하고, 고우 비트를 아밍함으로써 달성될 수 있다. 목적지 유닛들이 릴리스된 후, 고우 레지스터들은 현재 센서 모드에 따라 재구성될 수 있고, 이미지 프로세싱이 계속될 수 있다.
일 실시예에 따른, 단일 및 이중 센서 구성들 사이에서 스위칭하기 위한 방법(270)이 도 19에 도시되어 있다. 단계 272에서 시작하여, ISP 프론트-엔드(80)의 특정 소스로부터의 이미지 데이터의 다음 프레임이 식별된다. 단계 274에서, 타겟 목적지들(NextVld)이 소스에 대응하는 고우 레지스터 내로 프로그래밍된다. 이어서, 단계 276에서, 타겟 목적지들에 따라, NextBk가 타겟 목적지들과 관련된 정확한 데이터 레지스터들을 지시하도록 프로그래밍된다. 이어서, 판정 로직(278)은 소스 트리거링 이벤트가 발생하였는지를 결정한다. 트리거링이 발생하면, 단계 280에 지시되는 바와 같이, 다음 프레임이 NextVld에 의해 지정된 목적지 유닛들로 전송되고, NextBk에 의해 지정된 대응하는 데이터 레지스터들을 이용하여 목적지 유닛들에 의해 처리된다. 프로세싱은 단계 282까지 계속되며, 여기서 현재 프레임의 프로세싱이 완료된다.
이어서, 판정 로직(284)은 소스에 대한 타겟 목적지들의 변경이 있는지를 결정한다. 전술한 바와 같이, Sens0 및 Sens1에 대응하는 고우 레지스터들의 NextVld 설정들은 하나의 센서 또는 2개의 센서가 활성인지에 따라 다를 수 있다. 예로서, 표 2를 참조하면, Sensor0만이 활성인 경우, Sensor0 데이터가 SIf0DMA, StatsPipe0 및 FEProc로 전송된다. 그러나, 표 3을 참조하면, Sensor0 및 Sensor1 모두가 활성인 경우, Sensor0 데이터는 FEProc로 직접 전송되지 않는다. 대신에, 전술한 바와 같이, Sensor0 및 Sensor1 데이터는 메모리(108)에 기입되고, 소스 ProcInDMA에 의해 교호 방식으로 FEProc로 판독된다. 따라서, 판정 로직(284)에서 타겟 목적지 변경이 검출되지 않는 경우, 제어 유닛(190)은 센서 구성이 변경되지 않은 것으로 추정하며, 방법(270)은 단계 276으로 복귀하여, 여기서 소스 고우 레지스터의 NextBk 필드가 다음 프레임에 대한 정확한 데이터 레지스터들을 지시하도록 프로그래밍되고, 방법이 계속된다.
그러나, 판정 로직(284)에서 목적지 변경이 검출되는 경우, 제어 유닛(190)은 센서 구성 변경이 발생한 것으로 결정한다. 예로서, 이것은 단일 센서 모드에서 이중 센서 모드로 스위칭하는 것 또는 센서들을 함께 셧오프하는 것을 나타낼 수 있다. 따라서, 방법(270)은 단계 286으로 계속되고, 여기서 모든 고우 레지스터들에 대한 NextVld 필드들의 모든 비트들이 0으로 설정되고, 따라서 다음 트리거 시의 임의의 목적지로의 프레임들의 전송이 효과적으로 디스에이블된다. 이어서, 판정 로직(288)에서, 모든 목적지 유닛들이 유휴 상태로 전이하였는지를 결정한다. 그렇지 않은 경우, 방법(270)은 모든 목적지 유닛들이 그들의 현재 동작들을 완료할 때까지 판정 로직(288)에서 대기한다. 이어서, 판정 로직(290)에서, 이미지 프로세싱을 계속할지를 결정한다. 예로서, 목적지 변경이 Sensor0 및 Sensor1 모두의 비활성화를 나타내는 경우, 단계 292에서 이미지 프로세싱이 종료된다. 그러나, 이미지 프로세싱이 계속되어야 하는 것으로 결정되는 경우, 방법(270)은 단계 274로 복귀하고, 고우 레지스터들의 NextVld 필드들이 현재 동작 모드(예로서, 단일 센서 또는 이중 센서)에 따라 프로그래밍된다. 여기서 설명되는 바와 같이, 고우 레지스터들 및 목적지 필드들을 클리어하기 위한 단계들 284-292는 집합적으로 참조 번호 294로 참조될 수 있다.
이어서, 도 20은 다른 이중 센서 동작 모드를 제공하는 흐름도(방법 296)를 통한 추가 실시예를 나타낸다. 이 방법(296)은, 단계 298에 지시되는 바와 같이, 하나의 센서(예로서, Sensor0)가 활성으로 이미지 데이터를 취득하고, 프로세싱을 위해 이미지 프레임들을 FEProc(150)로 전송하고, 또한 이미지 프레임들을 StatsPipe0 및/또는 메모리(108)(Sif0DMA)로 전송하는 반면, 다른 센서(예로서, Sensor1)는 비활성(예로서, 턴오프)인 상태를 나타낸다. 이어서, 판정 로직(300)은 Sensor1이 이미지 데이터를 FEProc로 전송하기 위해 다음 프레임에서 활성일 조건을 검출한다. 이 조건이 충족되지 않으면, 방법(296)은 단계 298로 복귀한다. 그러한 이 조건이 충족되면, 방법(296)은 동작 294(집합적으로 도 19의 단계들 284-292)를 수행함으로써 진행하며, 이에 따라 단계 294에서 소스들의 목적지 필드들이 클리어되고 재구성된다. 예로서, 단계 294에서, Sensor1과 관련된 고우 레지스터의 NextVld 필드가 FEProc는 물론, StatsPipe1 및/또는 메모리(Sif1DMA)를 목적지로서 지정하도록 프로그래밍될 수 있으며, Sensor0과 관련된 고우 레지스터의 NextVld 필드는 목적지인 FEProc를 클리어하도록 프로그래밍될 수 있다. 이 실시예에서, Sensor0에 의해 캡처된 프레임들이 다음 프레임에서 FEProc로 전송되지 않지만, Sensor0은 활성 상태로 유지되고, 단계 302에 지시되는 바와 같이, 그의 이미지 프레임들을 StatsPipe0으로 계속 전송할 수 있는 한편, Sensor1은 단계 304에서 데이터를 캡처하고 프로세싱을 위해 데이터를 FEProc로 전송한다. 따라서, 하나의 센서로부터의 이미지 프레임들만이 프로세싱을 위해 FEProc로 전송되지만, 양 센서들, 즉 Sensor0 및 Sensor1은 이러한 "이중 센서" 모드로 계속 동작할 수 있다. 이러한 예를 위해, 프로세싱을 위해 프레임들을 FEProc로 전송하는 센서는 "활성 센서"로서 지칭되고, 프레임을 FEProc로 전송하지 않지만, 데이터를 통계 프로세싱 유닛들로 전송하는 센서는 "반활성 센서"로 지칭되며, 데이터를 전혀 취득하지 않는 센서는 "비활성 센서"로 지칭될 수 있다.
전술한 기술의 한 가지 이익은, 반활성 센서(Sensor0)에 대해 통계가 계속 취득되므로, 반활성 센서가 활성 상태로 전이하고, 현재 활성 센서(Sensor1)가 반활성 또는 비활성 상태로 전이하는 다음 번에, 이미지 통계의 계속되는 수집으로 인해 컬러 밸런스 및 노출 파라미터들이 이미 이용 가능할 수 있으므로, 반활성 센서가 하나의 프레임 내에서 데이터의 취득을 시작할 수 있다는 점이다. 이러한 기술은 이미지 센서들의 "핫 스위칭"으로서 언급될 수 있으며, 이미지 센서들의 (예로서, 이용 가능한 통계 정보 없이 시작하는) "콜드 스타트들(cold starts)"과 관련된 단점들을 회피한다. 게다가, 전력을 절약하기 위하여, (전술한 바와 같이) 각각의 소스가 비동기이므로, 반활성 센서는 반활성 기간 동안 감소된 클럭 및/또는 프레임 레이트로 동작할 수 있다.
도 10의 ISP 프론트-엔드 로직(80)에 도시된 통계 프로세싱 및 픽셀 프로세싱 동작들의 더 상세한 설명을 계속하기 전에, 현재 개시되는 기술들과 연계하여 사용될 수 있는 여러 타입의 메모리 어드레싱 포맷들은 물론, 다양한 ISP 프레임 영역들의 정의에 관한 간단한 소개가 본 발명의 더 나은 이해를 용이하게 하는 데 도움이 될 것으로 생각한다.
이제, 도 21 및 22를 참조하면, 이미지 센서(들)(90)로부터 수신되고, 메모리(예로서, 108)에 저장된 픽셀 데이터에 적용될 수 있는 선형 어드레싱 모드 및 타일 어드레싱 모드가 각각 도시되어 있다. 도시된 실시예는 64 바이트의 호스트 인터페이스 블록 요청 크기에 기초할 수 있다. 이해하듯이, 다른 실시예들은 다른 블록 요청 크기들(예로서, 32 바이트, 128 바이트 등)을 이용할 수 있다. 도 21에 도시된 선형 어드레싱 모드에서, 이미지 샘플들은 메모리 내에 순차적으로 배치된다. "선형 스트라이드(linear stride)"라는 용어는 2개의 인접하는 수직 픽셀들 사이의 바이트 단위의 거리를 지시한다. 본 예에서, 플레인의 시작 베이스 어드레스는 64 바이트 경계에 정렬되며, 선형 스트라이드는 (블록 요청 크기에 기초하는) 64의 배수일 수 있다.
도 22에 도시된 바와 같은 타일 모드 포맷의 예에서, 이미지 샘플들은 먼저 "타일들" 내에 순차적으로 배열되고, 이어서 타일들이 메모리에 순차적으로 저장된다. 도시된 실시예에서, 각각의 타일은 256 바이트의 폭과 16 행의 높이를 가질 수 있다. "타일 스트라이드"라는 용어는 2개의 인접하는 수직 타일들 사이의 바이트 단위의 거리를 지칭하는 것으로 이해되어야 한다. 본 예에서, 타일 모드에서의 플레인의 시작 베이스 어드레스는 4096 바이트 경계(예로서, 타일의 크기)에 정렬되며, 타일 스트라이드는 4096의 배수일 수 있다.
이를 기억하면서, 이미지 소스 프레임 내에 정의될 수 있는 다양한 프레임 영역들이 도 23에 도시되어 있다. 이미지 처리 회로(32)에 제공되는 소스 프레임에 대한 포맷은 8, 10, 12, 14 또는 16 비트 정밀도의 픽셀 포맷들을 이용할 수 있는 바와 같은 전술한 타일 또는 선형 어드레싱 모드들을 이용할 수 있다. 도 23에 도시된 바와 같은 이미지 소스 프레임(306)은 센서 프레임 영역(308), 미가공 프레임 영역(310) 및 활성 영역((312)을 포함할 수 있다. 센서 프레임(308)은 일반적으로 이미지 센서(90)가 이미지 처리 회로(32)에 제공할 수 있는 최대 프레임 크기이다. 미가공 프레임 영역(310)은 ISP 프론트-엔드 프로세싱 로직(80)으로 전송되는 센서 프레임(308)의 영역으로서 정의될 수 있다. 활성 영역(312)은 특정 이미지 프로세싱 동작을 위해 프로세싱이 수행되는, 통상적으로 미가공 프레임 영역(310) 내의 소스 프레임(306)의 일부로서 정의될 수 있다. 본 기술의 실시예들에 따르면, 활성 영역(312)은 상이한 이미지 프로세싱 동작들에 대해 동일하거나 상이할 수 있다.
본 기술의 양태들에 따르면, ISP 프론트-엔드 로직(80)은 미가공 프레임(310)만을 수신한다. 따라서, 본 설명의 목적을 위해, ISP 프론트-엔드 프로세싱 로직(80)에 대한 글로벌 프레임 크기는 폭(314)과 높이(316)에 의해 결정되는 바와 같은 미가공 프레임 크기로서 가정될 수 있다. 일부 실시예들에서, 센서 프레임(308)의 경계들로부터 미가공 프레임(310)까지의 오프셋은 제어 로직(84)에 의해 결정 및/또는 유지될 수 있다. 예컨대, 제어 로직(84)은 센서 프레임(308)에 대해 지정되는 x 오프셋(318) 및 y 오프셋(320)과 같은 입력 파라미터들에 기초하여 미가공 프레임 영역(310)을 결정할 수 있는 펌웨어를 포함할 수 있다. 게다가, 일부 예들에서, ISP 프론트-엔드 로직(80) 또는 ISP 파이프 로직(82) 내의 프로세싱 유닛은 정의된 활성 영역을 가질 수 있으며, 따라서 미가공 프레임 내의 그러나 활성 영역(312) 밖의 픽셀들은 처리되지 않을, 즉 변경되지 않을 것이다. 예로서, 폭(322) 및 높이(324)를 갖는 특정 프로세싱 유닛에 대한 활성 영역(312)은 미가공 프레임(310)에 대한 x 오프셋(326) 및 y 오프셋(328)에 기초하여 정의될 수 있다. 게다가, 활성 영역이 명확히 정의되지 않는 경우, 이미지 처리 회로(32)의 일 실시예는 활성 영역(312)이 미가공 프레임(310)과 동일한 것으로 가정할 수 있다(예로서, x 오프셋(326) 및 y 오프셋(328) 모두가 0과 동일하다). 따라서, 이미지 데이터에 대해 수행되는 이미지 프로세싱 동작들의 목적을 위해, 미가공 프레임(310) 또는 활성 영역(312)의 경계들에 대해 경계 조건들이 정의될 수 있다. 게다가, 일부 실시예들에서는, 시작 위치 및 윈도우 크기 정보가 아니라 메모리 내의 시작 및 종료 위치를 식별함으로써 윈도우(프레임)가 지정될 수 있다.
일부 실시예들에서, ISP 프론트-엔드 프로세싱 유닛(FEProc)(80)은 또한 도 24에 도시된 바와 같이 오버랩 수직 스트라이프들을 통해 이미지 프레임의 프로세싱을 지원할 수 있다. 예로서, 본 예에서의 이미지 프로세싱은 좌측 스트라이프(Stripe0), 중간 스트라이프(Stripe1) 및 우측 스트라이프(Stripe2)에 대하여 3개의 패스(pass)에서 발생할 수 있다. 이것은 ISP 프론트-엔드 프로세싱 유닛(80)이 라인 버퍼 크기를 증가시킬 필요 없이 다수의 패스에서 더 넓은 이미지를 처리하게 할 수 있다. 이러한 기술은 "스트라이드 어드레싱"으로 언급될 수 있다.
다수의 수직 스트라이프에 의해 이미지 프레임을 처리할 때, 입력 프레임은 소정의 오버랩을 갖도록 판독되어, 충분한 필터 컨텍스트 오버랩을 가능하게 하며, 따라서 다수의 패스 대 단일 패스에서의 이미지 판독 사이의 차이가 거의 또는 전혀 존재하지 않게 된다. 예로서, 본 예에서, 폭 SrcWidth0을 갖는 Stripe0 및 폭 SrcWidth1을 갖는 Stripe1은 오버랩 영역(330)으로 지시되는 바와 같이 부분적으로 오버랩된다. 유사하게, Stripe1은 또한 오버랩 영역(332)으로 지시되는 바와 같이 SrcWidth2의 폭을 갖는 Stripe2와 우측에서 오버랩된다. 여기서, 총 스트라이드는 각각의 스트라이프의 폭(SrcWidth0, SrcWidth1, SrcWidth2)의 합에서 오버랩 영역들(330, 332)의 폭들(334, 336)을 뺀 것이다. 이미지 프레임을 메모리(예로서, 108)에 기입할 때, 활성 출력 영역이 정의되고, 출력 활성 영역 내의 데이터만이 기입된다. 도 24에 도시된 바와 같이, 메모리로의 기입 시에, 각각의 스트라이프는 ActiveDst0, ActiveDst1 및 ActiveDst2의 오버랩되지 않은 폭들에 기초하여 기입된다.
전술한 바와 같이, 이미지 처리 회로(32)는 센서 인터페이스(예로서, 94)로부터 직접 이미지 데이터를 수신할 수 있거나, 메모리(108)(예로서, DMA 메모리)로부터 이미지 데이터를 수신할 수 있다. 인입 데이터가 메모리로부터 제공되는 경우, 이미지 처리 회로(32) 및 ISP 프론트-엔드 프로세싱 로직(80)은 바이트 스왑핑을 제공하도록 구성될 수 있으며, 여기서 메모리로부터의 인입 픽셀 데이터는 프로세싱 전에 바이트 스왑핑될 수 있다. 일 실시예에서는 스왑 코드를 이용하여, 메모리로부터의 인입 데이터의 인접하는 더블 워드들, 워드들, 하프 워드들 또는 바이트들이 스왑핑되는지를 지시할 수 있다. 예로서, 도 25를 참조하면, 바이트 스왑핑은 4 비트 스왑 코드를 이용하여 16 바이트(바이트 0 내지 15) 데이터 세트에 대해 수행될 수 있다.
도시된 바와 같이, 스왑 코드는 좌에서 우로 bit3, bit2, bit1 및 bit0으로 언급될 수 있는 4 비트를 포함할 수 있다. 참조 번호 338로 지시되는 바와 같이, 모든 비트들이 0으로 설정될 때, 바이트 스왑핑은 수행되지 않는다. 참조 번호 340으로 지시되는 바와 같이, bit3이 1로 설정될 때, 더블 워드들(예로서, 8 바이트)이 스왑핑된다. 예로서, 도 25에 도시된 바와 같이, 바이트 0-7에 의해 표현되는 더블 워드는 바이트 8-15에 의해 표현되는 더블 워드와 스왑핑된다. 참조 번호 342로 지시되는 바와 같이, bit2가 1로 설정되는 경우, 워드(예로서, 4 바이트) 스왑핑이 수행된다. 도시된 실시예에서, 이것은 바이트 8-11에 의해 표현되는 워드가 바이트 12-15에 의해 표현되는 워드와 스왑핑되고, 바이트 0-3에 의해 표현되는 워드가 바이트 4-7에 의해 표현되는 워드와 스왑핑되게 할 수 있다. 유사하게, 참조 번호 344로 지시되는 바와 같이, bit1이 1로 설정되는 경우, 하프 워드(예로서, 2 바이트) 스왑핑이 수행되고(예로서, 바이트 0-1이 바이트 2-3과 스왑핑되고, 기타 등등), 참조 번호 346으로 지시되는 바와 같이, bit0이 1로 설정되는 경우, 바이트 스왑핑이 수행된다.
본 실시예에서는, 스왑 코드의 비트들 3, 2, 1 및 0을 순차적으로 평가함으로써 스왑핑이 수행될 수 있다. 예로서, 비트들 3 및 2가 1의 값으로 설정되는 경우, 더블 워드 스왑핑(bit3)이 먼저 수행된 후에, 워드 스왑핑(bit2)이 수행된다. 따라서, 도 25에 도시된 바와 같이, 스왑 코드가 "1111"로 설정될 때, 최종 결과는 인입 데이터가 리틀 엔디안(little endian) 포맷으로부터 빅 엔디안(big endian) 포맷으로 스왑핑되는 것이다.
이어서, 소정의 개시되는 실시예들에 따른, 미가공 이미지 데이터(예로서, 베이어 RGB 데이터), RGB 컬러 데이터 및 YUV(YCC, 루마/크로마 데이터)에 대해 이미지 처리 회로(32)에 의해 지원될 수 있는 이미지 픽셀 데이터에 대한 다양한 메모리 포맷들이 더 상세히 설명된다. 먼저, 이미지 처리 회로(32)의 실시예들에 의해 지원될 수 있는 목적지/소스 프레임 내의 미가공 이미지 픽셀들(예로서, 디모자이크 이전의 베이어 데이터)에 대한 포맷들이 설명된다. 설명된 바와 같이, 소정 실시예들은 8, 10, 12, 14 및 16 비트 정밀도로 이미지 픽셀들의 프로세싱을 지원할 수 있다. 미가공 이미지 데이터와 관련하여, 본 명세서에서 8, 10, 12, 14 및 16 비트 미가공 픽셀 포맷들은 각각 RAW8, RAW10, RAW12, RAW14 및 RAW16 포맷들로서 언급될 수 있다. RAW8, RAW10, RAW12, RAW14 및 RAW16 포맷들의 각각이 메모리에 저장될 수 있는 방법을 나타내는 예들이 도 26에 그래픽 방식으로 팩킹되지 않은(unpacked) 형태들로 도시되어 있다. 8 비트보다 큰 (그리고 8 비트의 배수가 아닌) 비트-정밀도를 갖는 미가공 이미지 포맷들의 경우, 픽셀 데이터는 또한 팩킹된 포맷들로 저장될 수 있다. 예로서, 도 27은 RAW10 이미지 픽셀들이 메모리에 저장될 수 있는 방법의 일례를 도시한다. 유사하게, 도 28 및 도 29는 RAW12 및 RAW14 이미지 픽셀들이 메모리에 저장될 수 있는 예들을 도시한다. 아래에 더 설명되는 바와 같이, 이미지 데이터가 메모리에 기입되고/메모리로부터 판독될 때, 센서 인터페이스(94)와 관련된 제어 레지스터는 목적지/소스 픽셀 포맷, 픽셀이 팩킹된 또는 팩킹되지 않은 포맷으로 이루어지는지, 어드레싱 포맷(예로서, 선형 또는 타일) 및 스왑 코드를 정의할 수 있다. 따라서, 픽셀 데이터가 ISP 처리 회로(32)에 의해 판독되고 해석되는 방식은 픽셀 포맷에 의존할 수 있다.
이미지 신호 프로세싱(ISP) 회로(32)는 또한 센서 인터페이스 소스/목적지 프레임(예로서, 310) 내의 RGB 컬러 픽셀들의 소정 포맷들도 지원할 수 있다. 예로서, RGB 이미지 프레임들은 (예로서, 센서 인터페이스가 온-보드 디모자이크 로직을 포함하는 실시예들에서) 센서 인터페이스로부터 수신되고, 메모리(108)에 저장될 수 있다. 일 실시예에서, ISP 프론트-엔드 프로세싱 로직(80)(FEProc)은 RGB 프레임들이 수신되고 있을 때 픽셀 및 통계 프로세싱을 바이패스할 수 있다. 단지 예로서, 이미지 처리 회로(32)는 다음과 같은 RGB 픽셀 포맷들, 즉 RGB-565 및 RGB-888을 지원할 수 있다. RGB-565 픽셀 데이터가 메모리에 저장될 수 있는 방법의 일례가 도 30에 도시되어 있다. 도시된 바와 같이, RGB-565 포맷은 RGB 순서로 인터리빙된 5 비트 적색 컬러 성분, 6 비트 녹색 컬러 성분 및 5 비트 청색 컬러 성분의 하나의 플레인을 제공할 수 있다. 따라서, RGB-565 픽셀(예를 들어, {R0, G0, B0} 또는 {R1, G1, B1})을 표현하기 위해 총 16 비트가 사용될 수 있다.
도 31에 도시된 바와 같은 RGB-888 포맷은 RGB 순서로 인터리빙된 8 비트 적색, 녹색 및 청색 컬러 성분들의 일 플레인을 포함할 수 있다. 일 실시예에서, ISP 회로(32)는 또한 RGB 순서로 인터리빙된 6 비트 적색, 녹색 및 청색 컬러 성분들의 일 플레인을 일반적으로 제공하는 RGB-666 포맷도 지원할 수 있다. 그러한 실시예에서, RGB-666 포맷이 선택될 때, RGB-666 픽셀 데이터는 도 31에 도시된 RGB-888 포맷을 이용하여 메모리에 저장될 수 있지만, 각각의 픽셀은 정돈되고, 2개의 최하위 비트(LSB)는 0으로 설정된다.
소정 실시예들에서, ISP 회로(32)는 픽셀들이 부동 소수점 값들의 확장된 범위 및 정밀도를 갖게 하는 RGB 픽셀 포맷들도 지원할 수 있다. 예로서, 일 실시예에서, ISP 회로(32)는 적색(R0), 녹색(G0) 및 청색(B0) 컬러 성분이 공유 8 비트 지수(E0)를 갖는 8 비트 값으로 표현되는 도 32에 도시된 RGB 픽셀 포맷을 지원할 수 있다. 따라서, 그러한 실시예에서, R0, G0, B0 및 E0에 의해 정의되는 실제 적색(R'), 녹색(G') 및 청색(B') 값들은 다음과 같이 표현될 수 있다.
Figure pat00004
이러한 픽셀 포맷은 때때로 레디언스(Radiance) 이미지 픽셀 포맷으로도 알려진 RGBE 포맷으로 언급될 수 있다.
도 33 및 34는 ISP 회로(32)에 의해 지원될 수 있는 추가적인 RGB 픽셀 포맷들을 나타낸다. 구체적으로, 도 33은 5 비트 공유 지수를 갖는 9 비트 적색, 녹색 및 청색 성분들을 저장할 수 있는 픽셀 포맷을 나타낸다. 예로서, 각각의 적색, 녹색 및 청색 픽셀의 상위 8 비트 [8:1]은 메모리에 각각의 바이트로 저장된다. 추가적인 바이트를 사용하여, 각각의 적색, 녹색 및 청색 픽셀의 5 비트 지수(예로서, E0[4:0]) 및 최하위 비트 [0]을 저장한다. 따라서, 그러한 실시예에서, R0, G0, B0 및 E0에 의해 정의되는 실제 적색(R'), 녹색(G') 및 청색(B') 값들은 다음과 같이 표현될 수 있다.
Figure pat00005
게다가, 도 33에 도시된 픽셀 포맷은 또한 도 31에 도시된 RGB-888 포맷과 호환될 수 있다는 점에서 유연하다. 예로서, 일부 실시예들에서, ISP 처리 회로(32)는 지수 성분을 갖는 전체 RGB 값들을 처리할 수 있거나, 또한 RGB-888 포맷과 유사한 방식으로 각각의 RGB 컬러 성분의 상위 8 비트 부분 [7:1]만을 처리할 수도 있다.
도 34는 2 비트 공유 지수를 갖는 10 비트 적색, 녹색 및 청색 성분을 저장할 수 있는 픽셀 포맷을 나타낸다. 예로서, 각각의 적색, 녹색 및 청색 픽셀의 상위 8 비트 [9:2]는 메모리에 각각의 바이트로 저장된다. 추가적인 바이트를 이용하여, 각각의 적색, 녹색 및 청색 픽셀의 2 비트 지수(예로서, E0[1:0]) 및 최하위 2 비트 [1:0]을 저장한다. 따라서, 그러한 실시예에서, R0, G0, B0 및 E0에 의해 정의되는 실제 적색(R'), 녹색(G') 및 청색(B') 값들은 다음과 같이 표현될 수 있다.
Figure pat00006
게다가, 도 33에 도시된 픽셀 포맷과 같이, 도 34에 도시된 픽셀 포맷은 또한 도 31에 도시된 RGB-888 포맷과 호환될 수 있다는 점에서 유연하다. 예로서, 일부 실시예들에서, ISP 처리 회로(32)는 지수 성분을 갖는 전체 RGB 값들을 처리할 수 있거나, 또한 RGB-888 포맷과 유사한 방식으로 각각의 RGB 컬러 성분의 상위 8 비트 부분(예를 들어, [9:2])만을 처리할 수도 있다.
ISP 회로(32)는 또한 센서 인터페이스 소스/목적지 프레임(예로서, 310) 내의 YCbCr(YUV) 루마 및 크로마 픽셀들의 소정 포맷들을 더 지원할 수 있다. 예로서, YCbCr 이미지 프레임들은 (예로서, 센서 인터페이스가 온-보드 디모자이크 로직 및 RGB 이미지 데이터를 YCC 컬러 공간으로 변환하도록 구성된 로직을 포함하는 실시예들에서) 센서 인터페이스로부터 수신되고, 메모리(108)에 저장될 수 있다. 일 실시예에서, ISP 프론트-엔드 프로세싱 로직(80)은 YCbCr 프레임들이 수신되고 있을 때 픽셀 및 통계 프로세싱을 바이패스할 수 있다. 단지 예로서, 이미지 처리 회로(32)는 다음과 같은 YCbCr 픽셀 포맷들, 즉 YCbCr-4:2:0 8, 2, 플레인; 및 YCbCr-4:2:2 8, 1 플레인을 지원할 수 있다.
YCbCr-4:2:0, 2 플레인 픽셀 포맷은 메모리 내에 2개의 개별 이미지 플레인, 즉 루마 픽셀들(Y)을 위한 플레인 및 크로마 픽셀들(Cb, Cr)을 위한 플레인을 제공할 수 있으며, 여기서 크로마 플레인은 Cb 및 Cr 픽셀 샘플들을 인터리빙한다. 게다가, 크로마 플레인은 수평(x) 및 수직(y) 방향들 모두에서 1/2만큼 서브샘플링될 수 있다. YCbCr-4:2:0, 2 플레인 데이터가 메모리에 저장될 수 있는 방법을 나타내는 일례가 도 35에 도시되며, 이 도면은 루마(Y) 샘플들을 저장하기 위한 루마 플레인(347) 및 크로마(Cb, Cr) 샘플들을 저장하기 위한 크로마 플레인(348)을 도시한다. 도 36에 도시된 YCbCr-4:2:2 8, 1 플레인 포맷은 인터리빙된 루마(Y) 및 크로마(Cb, Cr) 픽셀 샘플들의 하나의 이미지 플레인을 포함할 수 있으며, 여기서 크로마 샘플들은 수평(x) 및 수직(y) 방향들 모두에서 1/2만큼 서브샘플링된다. 일부 실시예들에서, ISP 회로(32)는 전술한 라운딩되는 8 비트 포맷(예로서, 10 비트 데이터의 2개의 최하위 비트가 라운드 오프됨)을 이용하여 픽셀 샘플들을 메모리에 저장함으로써 10 비트 YCbCr 픽셀 포맷들도 지원할 수 있다. 게다가, 이해하듯이, YC1C2 값들은 또한 도 30-34에서 전술한 RGB 픽셀 포맷들 중 임의의 포맷을 이용하여 저장될 수 있으며, Y, C1 및 C2 성분들 각각은 R, G 및 B 성분과 유사한 방식으로 저장된다.
도 10에 도시된 ISP 프론트-엔드 프로세싱 로직(80)을 다시 참조하면, 메모리(108)에 대한 다양한 판독 및 기입 채널들이 제공된다. 일 실시예에서, 판독/기입 채널들은 진보된 확장 가능 인터페이스(AXI) 버스와 같은 진보된 마이크로컨트롤러 버스 아키텍처 또는 임의의 다른 적합한 타입의 버스(AHB, ASB, APB, ATB 등)를 이용하여 제공될 수 있는 공동 데이터 버스를 공유할 수 있다. 전술한 바와 같이 제어 레지스터를 통해 결정될 수 있는 이미지 프레임 정보(예로서, 픽셀 포맷, 어드레스 포맷, 팩킹 방법)에 따라, 제어 로직(84)의 일부로서 구현될 수 있는 어드레스 생성 블록이 어드레스 및 버스트 크기 정보를 버스 인터페이스에 제공하도록 구성될 수 있다. 예로서, 어드레스 계산은 픽셀 데이터가 팩킹되는지 또는 팩킹되지 않는지, 픽셀 데이터 포맷(예로서, RAW8, RAW10, RAW12, RAW14, RAW16, RGB 또는 YCbCr/YUV 포맷들), 타일 또는 선형 어드레싱 포맷이 사용되는지, 메모리 어레이에 대한 이미지 프레임 데이터의 x 및 y 오프셋들은 물론, 프레임 폭, 높이 및 스트라이드와 같은 다양한 파라미터들에 의존할 수 있다. 픽셀 어드레스들의 계산에 사용될 수 있는 추가적인 파라미터들은 최소 픽셀 유닛 값들(MPU), 오프셋 마스크들, MPU당 바이트 값(BPPU) 및 MPU의 Log2 값(L2MPU)을 포함할 수 있다. 아래에 도시된 표 4는 일 실시예에 따른, 팩킹된 그리고 팩킹되지 않은 픽셀 포맷들에 대한 전술한 파라미터들을 나타낸다.
Figure pat00007
이해하듯이, MPU 및 BPPU 설정들은 판독 데이터의 모두가 필요하지는 않은 경우에도 ISP 회로(32)가 하나의 픽셀을 판독하기 위하여 판독될 필요가 있는 픽셀들의 수를 평가할 수 있게 한다. 즉, MPU 및 BPPU 설정들은 ISP 회로(32)가 메모리 바이트와 정렬되고(예로서, 8 비트(1 바이트)의 배수가 픽셀 값을 저장하는 데 사용됨) 정렬되지 않는(예로서, 8 비트(1 바이트)의 배수보다 적거나 많은 비트들, 즉 RAW10, RAW12 등을 이용하여 픽셀 값들이 저장됨) 픽셀 데이터 포맷들을 모두 판독하게 할 수 있다.
도 37을 참조하면, 선형 어드레싱 하에서 메모리에 저장된 이미지 프레임(350)의 위치를 나타내는 일례가 도시되며, 여기서 각각의 블록은 (도 21에서 전술한 바와 같이) 64 바이트를 나타낸다. 일 실시예에서, 다음의 의사 코드는 선형 어드레싱에서 저장된 프레임의 시작 블록 및 블록 폭을 식별하기 위해 제어 로직에 의해 구현될 수 있는 프로세스를 나타낸다:
여기서, Stride는 바이트 단위의 프레임 스트라이드들을 나타내고, 64의 배수이다. 예로서, 도 37에서, SrcStride 및 DstStride는 4이며, 이는 64 바이트의 4 블록을 의미한다. 위의 표 4를 참조하면, L2MPU 및 BPPU에 대한 값들은 프레임(350) 내의 픽셀들의 포맷에 의존할 수 있다. 도시된 바와 같이, BlockOffsetX가 알려지면, BlockStart가 결정될 수 있다. 이어서, 프레임(350)의 픽셀 포맷에 대응하는 L2MPU 및 BPPU의 값들을 이용하여 결정될 수 있는 BlockOffsetX 및 LastBlockX를 이용하여 BlockWidth가 결정될 수 있다.
타일 어드레싱 하에서의 유사한 예가 도 38에 도시되며, 여기서 참조 번호 352로 참조되는 소스 이미지 프레임이 메모리에 저장되고, Tile0, Tile 1, Tile n 및 Tile n+1의 일부와 오버랩된다. 일 실시예에서, 다음의 의사 코드는 타일 어드레싱에서 저장된 프레임의 시작 블록 및 블록 폭을 식별하기 위하여 제어 로직에 의해 구현될 수 있는 프로세스를 나타낸다.
Figure pat00009
위에 지시된 계산에서, 표현 "(OffsetY>>4)*(Stride>>6)"은 메모리 내에 이미지 프레임이 위치하는 타일 행에 도달하기 위한 블록들의 수를 나타낼 수 있다. 표현 "(BlockOffsetX>>2)*64"는 저장된 이미지 프레임이 x 방향으로 오프셋된 블록들의 수를 나타낼 수 있다. 표현 "OffsetY[3:0]*4"는 이미지 프레임의 시작 어드레스가 위치하는 타일 내의 행에 도달하기 위한 블록들의 수를 나타낼 수 있다. 게다가, 표현 "BlockOffsetX[1:0]"은 이미지 프레임의 시작 어드레스에 대응하는 타일 내의 x 오프셋에 도달하기 위한 블록들의 수를 나타낼 수 있다. 게다가, 도 38에 도시된 실시예에서, 각각의 타일에 대한 블록들의 수(BlocksPerTile)는 64 블록일 수 있으며, 블록당 바이트 수(BytesPerBlock)는 64 바이트일 수 있다.
위의 표 4에 나타낸 바와 같이, RAW10, RAW12 및 RAW14 팩킹된 포맷들로 저장된 픽셀들의 경우, 4개의 픽셀이 5, 6, 또는 7 바이트(BPPU)의 최소 픽셀 유닛(MPU)을 각각 형성한다. 예로서, 도 27에 도시된 RAW10 픽셀 포맷 예를 참조하면, 4 픽셀(P0-P3)의 MPU는 5 바이트를 포함하며, 여기서 픽셀들(P0-P3) 각각의 상위 8 비트는 4의 각각의 바이트로 저장되고, 픽셀들 각각의 하위 2 바이트는 32 비트 어드레스 01h의 비트 0-7로 저장된다. 유사하게, 도 28을 다시 참조하면, RAW12 포맷을 사용하는 4 픽셀(P0-P3)의 MPU는 6 바이트를 포함하며, 여기서 픽셀들(P0, P1)의 하위 4 비트는 어드레스 00h의 비트 16-23에 대응하는 바이트로 저장되고, 픽셀들(P2, P3)의 하위 4 비트는 어드레스 01h의 비트 8-15에 대응하는 바이트로 저장된다. 도 29는 RAW14 포맷을 사용하는 4 픽셀(P0-P3)의 MPU를 7 바이트를 포함하는 것으로 도시하는데, 여기서 4 바이트는 MPU의 각각의 픽셀의 상위 8 비트를 저장하기 위한 것이며, 3 바이트는 MPU의 각각의 픽셀의 하위 6 비트를 저장하기 위한 것이다.
이러한 픽셀 포맷들을 이용하면, 프레임 라인의 끝에서, (예로서, 라인 폭 모듈로 4가 0이 아닐 때) 4개보다 적은 MPU의 픽셀들이 사용되는 부분 MPU를 갖는 것이 가능하다. 부분 MPU를 판독할 때, 미사용 픽셀들은 무시될 수 있다. 유사하게, 부분 MPU를 목적지 프레임에 기입할 때, 미사용 픽셀들을 0의 값으로 기입될 수 있다. 게다가, 일부 예들에서, 프레임 라인의 최종 MPU는 64 바이트 블록 경계에 정렬되지 않을 수 있다. 일 실시예에서, 최종 MPU 뒤의 최종 64 바이트 블록의 끝까지의 바이트들은 기입되지 않는다.
본 발명의 실시예들에 따르면, ISP 처리 회로(32)는 또한 오버플로우 핸들링을 제공하도록 구성될 수 있다. 예로서, ISP 프론트-엔드 프로세싱 로직(80)이 그 자신의 내부 프로세싱 유닛들로부터, 다운스트림 프로세싱 유닛들(예로서, ISP 파이프라인(82) 및/또는 ISP 백-엔드 프로세싱 로직(120))으로부터 또는 (예로서, 이미지 데이터가 기입되어야 하는) 목적지 메모리로부터 역압력을 받는 소정 상황들에서 오버플로우 상태("오버런"이라고도 함)가 발생할 수 있다. 하나 이상의 프로세싱 블록들이 데이터를 처리할 수 있는 것보다 빠르게 또는 데이터가 목적지(예로서, 메모리(108))에 기입될 수 있는 것보다 빠르게 픽셀 데이터가 (예로서, 센서 인터페이스 또는 메모리로부터) 판독되고 있을 때 오버플로우 상태들이 발생할 수 있다.
아래에 더 설명되는 바와 같이, 메모리에 대한 판독 및 기입은 오버플로우 상황들에 기여할 수 있다. 그러나, 입력 데이터가 저장되므로, 오버플로우 상황의 경우에, ISP 회로(32)는 오버플로우 상황이 회복될 때까지 입력 데이터의 판독을 단지 지연시키면 된다. 그러나, 이미지 데이터가 이미지 센서로부터 직접 판독되고 있을 때, 이미지 센서는 일반적으로 이미지 데이터를 실시간으로 취득하고 있으므로, 일반적으로 "라이브" 데이터는 지연될 수 없다. 예로서, 이미지 센서(예로서, 90)는 그 자신의 내부 클럭에 기초하는 타이밍이 신호에 따라 동작할 수 있으며, 초당 15 또는 30 프레임( 15 또는 30 fps)과 같은 소정의 프레임 레이트로 이미지 프레임들을 출력하도록 구성될 수 있다. 따라서, ISP 회로(32) 및 메모리(108)로의 센서 입력들은 입력 이미지 데이터를 (ISP 회로(32)에 의해) 처리하거나 메모리(예로서, 108)에 기입하기 전에 이를 버퍼링할 수 있는 입력 큐들을 포함할 수 있다. 따라서, 이미지 데이터가 큐로부터 판독되어 처리되거나 저장될(예로서, 메모리에 기입될) 수 있는 것보다 빠르게 입력 큐에 수신되고 있는 경우, 오버플로우 상황이 발생할 수 있다. 즉, 버퍼들/큐들이 가득 찬 경우, 추가적인 입력 픽셀들은 버퍼링되지 못하며, 구현되는 오버플로우 처리 기술에 따라서는 드롭될 수도 있다.
도 39는 ISP 처리 회로(32)의 블록도를 나타내며, 일 실시예에 따른, 오버플로우 처리를 제공할 수 있는 제어 로직(84)의 특징들에 집중한다. 도시된 바와 같이, 센서0(90a) 및 센서1(90b)과 관련된 이미지 데이터가 (인터페이스들(174, 176) 각각을 통해) 메모리(108)로부터 ISP 프론트엔드 프로세싱 로직(80)(FEProc)으로 판독될 수 있거나, 각각의 센서 인터페이스들로부터 집적 ISP 프론트엔드 프로세싱 로직(80)에 제공될 수 있다. 후자의 경우, 이미지 센서들(90a, 90b)로부터의 입력 픽셀 데이터는 ISP 프론트엔드 프로세싱 로직(80)으로 전송되기 전에 입력 큐들(400, 402)로 각각 전송될 수 있다.
오버플로우 상황이 발생할 때, 오버플로우가 발생한 처리 블록(들)(예로서, 블록 80, 82 또는 120) 또는 메모리(예로서, 108)는 인터럽트 요청(IRQ) 레지스터(404) 내에 비트를 설정하기 위한 (신호들 405, 407 및 408로 지시되는 바와 같은) 신호를 제공할 수 있다. 본 실시예에서, IRQ 레지스터(404)는 제어 로직(84)의 일부로서 구현될 수 있다. 게다가, 센서0 이미지 데이터 및 센서1 이미지 데이터 각각에 대해 개별 IRQ 레지스터들(404)이 구현될 수 있다. IRQ 레지스터(404) 내에 저장된 값에 기초하여, 제어 로직(84)은 ISP 처리 블록들(80, 82, 120) 또는 메모리(108) 내의 어느 로직 유닛들이 오버플로우 상황을 유발하였는지를 결정할 수 있다. 로직 유닛들은 픽셀 데이터가 전송되는 목적지들을 구성할 수 있으므로 "목적지 유닛들"로서 참조될 수 있다. 오버플로우 상황들에 기초하여, 제어 로직(84)은 또한 (예로서, 펌웨어/소프트웨어 처리를 통해) 어느 프레임들이 드롭될지(예로서, 메모리에 기입되지 않거나, 관찰을 위해 디스플레이로 출력되지 않을지)를 결정할 수 있다.
오버플로우 상황이 검출되면, 오버플로우 처리가 수행되는 방식은 ISP 프론트엔드가 메모리(108)로부터 픽셀 데이터를 판독하고 있는지 또는 일 실시예에서 선입선출(FIFO) 큐들일 수 있는 이미지 센서 입력 큐들(예로서, 버퍼들)(400, 402)로부터 픽셀 데이터를 판독하고 있는지에 의존할 수 있다. 일 실시예에서, 입력 데이터가 예로서 관련 DMA 인터페이스(예로서, 174 또는 176)를 통해 메모리(108)로부터 판독될 때, ISP 프론트엔드는 ISP 프론트엔드 로직(80)의 출력이 메모리(108)에 기입되는 예들에서 ISP 파이프라인(82), ISP 백엔드 프로세싱 로직(120) 또는 메모리(108)를 포함할 수 있는 임의의 다운스트림 목적지 블록들로부터 (예로서, IRQ 레지스터(404)를 사용하는 제어 로직(84)을 통해) 오버플로우 상황이 검출된 결과로서 역압력을 받는 경우에 픽셀 데이터의 판독을 지연시킬 것이다. 이러한 시나리오에서, 제어 로직(84)은 오버플로우 상황이 회복될 때까지 메모리(108)로부터의 픽셀 데이터의 판독을 중지함으로써 오버플로우를 방지할 수 있다. 예로서, 오버플로우 상황을 유발하는 다운스트림 유닛이 오버플로우가 더 이상 발생하고 있지 않음을 지시하는 대응 비트를 IRQ 레지스터(404) 내에 설정할 때 오버플로우 복구가 시그널링될 수 있다. 이러한 프로세스의 일 실시예가 일반적으로 도 40의 방법(410)의 단계들(412-420)에 의해 예시된다.
오버플로우 상황들은 일반적으로 센서 입력 큐들에서 모니터링될 수 있지만, (예를 들어, ISP 프론트엔드 로직(80), ISP 파이프라인(82)은 물론, ISP 백엔드 로직(120)의 내부 유닛들을 포함하는) ISP 서브시스템(32)의 프로세싱 유닛들 사이에 많은 추가적인 큐들이 존재할 수 있다는 것을 이해해야 한다. 게다가, ISP 서브 시스템(32)의 다양한 내부 유닛들은 또한 큐들로서도 기능할 수 있는 라인 버퍼들을 포함할 수 있다. 따라서, ISP 서브시스템(32)의 모든 큐들 및 라인 버퍼들은 버퍼링을 제공할 수 있다. 따라서, 처리 블록들의 특정 체인 내의 최종 처리 블록이 가득 찬 경우(예로서, 그의 라인 버퍼들 및 임의의 중간 큐들이 가득 찬 경우), 역압력이 이전(예로서, 상류) 처리 블록 등에 가해질 수 있으며, 따라서 역압력은 오버플로우 상황들이 모니터링될 수 있는 센서 인터페이스에 도달할 때까지 로직의 체인을 통해 위로 전파된다. 따라서, 센서 인터페이스에서 오버플로우가 발생할 때, 이것은 모든 다운스트림 큐들 및 라인 버퍼들이 가득 찼다는 것을 의미할 수 있다.
도 40에 도시된 바와 같이, 방법(410)은 블록 412에서 시작하며, 여기서 메모리로부터 ISP 프론트엔드 프로세싱 유닛(80)으로 현재 프레임에 대한 픽셀 데이터가 판독된다. 이어서, 판정 로직(414)은 오버플로우 상황이 존재하는지를 결정한다. 전술한 바와 같이, 이것은 IRQ 레지스터(들)(404) 내의 비트들의 상태를 결정함으로써 평가될 수 있다. 오버플로우 상황이 검출되지 않는 경우, 방법(410)은 단계 412로 복귀하여, 현재 프레임으로부터 픽셀들을 계속 판독한다. 판정 로직(414)에 의해 오버플로우 상황이 검출되는 경우, 방법(410)은 블록 416에 도시되는 바와 같이 메모리로부터 현재 프레임의 픽셀들의 판독을 중지한다. 이어서, 판정 로직(418)에서, 오버플로우 상황이 복구되었는지를 판정한다. 오버플로우 상황이 여전히 지속되는 경우, 방법(410)은 오버플로우 상황이 복구될 때까지 판정 로직(418)에서 대기한다. 판정 로직(418)이 오버플로우 상황이 복구되었음을 지시하는 경우, 방법(410)은 블록 420으로 진행하여, 메모리로부터 현재 프레임에 대한 픽셀 데이터의 판독을 재개한다.
센서 인터페이스(들)로부터 입력 픽셀 데이터가 판독되고 있는 동안에 오버플로우 상황이 발생할 때, 인터럽트들은 어느 다운스트림 유닛들(예로서, 처리 블록들 또는 목적지 메모리)이 오버플로우를 유발하였는지를 지시할 수 있다. 일 실시예에서, 오버플로우 처리는 두 가지 시나리오에 기초하여 제공될 수 있다. 제1 시나리오에서, 오버플로우 상황은 이미지 프레임 동안에 발생하지만, 후속 이미지 프레임의 시작 전에 복구된다. 이 경우, 이미지 센서로부터의 입력 픽셀들은 오버플로우 상황이 복구될 때까지 드롭되며, 이미지 센서에 대응하는 입력 큐 내에서 공간이 이용 가능하게 된다. 제어 로직(84)은 드롭된 픽셀들 및/또는 드롭된 프레임들의 수를 계속 추적할 수 있는 카운터(406)를 제공할 수 있다. 오버플로우 상황이 복구된 때, 드롭된 픽셀들은 정의되지 않은 픽셀 값들(예로서, 모두 1(예컨대, 14비트 픽셀 값에 대해 11111111111111), 모두 0 또는 정의되지 않은 픽셀 값들이 무엇인지를 설정하는 데이터 레지스터 내에 프로그래밍된 값)로 교체될 수 있으며, 다운스트림 처리가 재개될 수 있다. 추가 실시예에서, 드롭된 픽셀들은 이전의 비 오버플미가공 픽셀(예로서, 입력 버퍼 내로 판독된 최종 "양호" 픽셀)로 교체될 수 있다. 이것은 정확한 수의 픽셀들(예로서, 완전한 프레임에서 예상되는 픽셀들의 수에 대응하는 다수의 픽셀)이 ISP 프론트엔드 프로세싱 로직(80)으로 전송되며, 따라서 ISP 프론트엔드 프로세싱 로직(80)이 오버플로우가 발생한 때 센서 입력 큐로부터 판독된 프레임에 대한 정확한 수의 픽셀들을 출력할 수 있는 것을 보장한다.
이러한 제1 시나리오에서는 ISP 프론트엔드에 의해 정확한 수의 픽셀들이 출력될 수 있지만, 오버플로우 상황 동안에 드롭되고 교체된 픽셀들의 수에 따라, 제어 로직(84)의 일부로서 구현될 수 있는 소프트웨어 처리(예로서, 펌웨어)는 프레임이 디스플레이로 전송되고 그리고/또는 메모리에 기입되는 것을 방지하기로(예로서, 배제하기로) 결정할 수 있다. 이러한 결정은 예로서 수용 가능한 드롭 픽셀 임계값에 대비한 드롭 픽셀 카운터(406)의 값에 기초할 수 있다. 예로서, 오버플로우 상황이 그 프레임동안에만 일시적으로 발생하여, 비교적 적은 양의 픽셀들만이 드롭되는(그리고 예로서 정의되지 않은 또는 더미 값, 예로서 10-20개 이하의 픽셀로 교체되는) 경우, 제어 로직(84)은 교체 픽셀들의 존재가 결과적인 이미지 내에 매우 짧게 사소한 아티팩트로서 나타날 수 있어도 적은 수의 드롭 픽셀들에도 불구하고 그 이미지를 표시 및/또는 저장하기로 결정할 수 있다. 그러나, 적은 수의 교체 픽셀들로 인해, 그러한 아티팩트는 일반적으로 사용자에 의해 주목되지 않거나 사소하게 인식될 수 있다. 즉, 일시적인 오버플로우 상황으로부터 정의되지 않은 픽셀들로 인한 그러한 임의의 아티팩트들의 존재는 이미지의 미적 품질을 크게 저하시키지 않을 수 있다(예로서, 임의의 그러한 저하는 사람의 눈에는 극미하거나 사소하다).
제2 시나리오에서, 오버플로우 상황은 후속 이미지 프레임의 시작에서도 계속 존재할 수 있다. 이 경우, 현재 프레임의 픽셀들 또한 드롭되고, 전술한 제1 시나리오와 같이 카운트된다. 그러나, (예로서, 후속 프레임의 개시를 지시하는) VSYNC 상승 에지의 검출시에 오버플로우 상황이 여전히 존재하는 경우, ISP 프론트엔드 프로세싱 로직(80)은 다음 프레임을 지연시켜 다음 프레임 전체를 드롭하도록 구성될 수 있다. 이러한 시나리오에서, 다음 프레임 및 후속 프레임들은 오버플로우가 복구될 때까지 계속 드롭될 것이다. 오버플로우가 복구되면, 이전 현재 프레임(예로서, 오버플로우가 최초 검출된 때 판독된 프레임)이 그의 드롭된 픽셀들을 정의되지 않은 픽셀 값들로 교체할 수 있으며, 따라서 ISP 프론트엔드 로직(80)이 그 프레임에 대한 정확한 수의 픽셀들을 출력할 수 있게 한다. 이어서, 다운스트림 처리가 재개될 수 있다. 드롭된 프레임들과 관련하여, 제어 로직(84)은 드롭된 프레임들의 수를 카운트하는 카운터를 더 포함할 수 있다. 이 데이터는 오디오-비디오 동기화를 위한 타이밍을 조정하는 데 사용될 수 있다. 예로서, 30 fps로 캡처된 비디오의 경우, 각각의 프레임은 약 33 밀리초의 지속 기간을 갖는다. 따라서, 3개의 프레임이 오버플로우로 인해 드롭되는 경우, 제어 로직(84)은 드롭된 프레임들에 기인하는 약 99 밀리초(33 밀리초 x 3 프레임)의 지속 기간을 고려하기 위해 오디오-비디오 동기화 파라미터들을 조정하도록 구성될 수 있다. 예로서, 드롭된 프레임들로 인한 시간을 보상하기 위하여, 제어 로직(84)은 하나 이상의 이전 프레임들을 반복함으로써 이미지 출력을 제어할 수 있다.
입력 픽셀 데이터가 센서 인터페이스들로부터 판독되고 있을 때 발생할 수 있는 전술한 시나리오들을 나타내는 프로세스(430)의 일 실시예가 도 41에 도시되어 있다. 도시된 바와 같이, 방법(430)은 블록 432에서 시작하고, 여기서 현재 프레임에 대한 픽셀 데이터가 센서로부터 ISP 프론트엔드 프로세싱 유닛(80)으로 판독된다. 이어서, 판정 로직(434)은 오버플로우 상황이 존재하는지를 결정한다. 오버플로우가 존재하지 않는 경우, 방법(430)은 현재 프레임의 픽셀들을 계속 판독한다(예로서, 블록 432로 복귀한다). 판정 로직(434)이 오버플로우 상황이 존재하는 것으로 판정하면, 방법(430)은 블록 436으로 계속되고, 여기서 현재 프레임의 다음 입력 픽셀이 드롭된다. 이어서, 판정 로직(438)은 현재 프레임이 종료되었고 다음 프레임이 시작되었는지를 판정한다. 예로서, 일 실시예에서, 이것은 VSYNC 신호의 상승 에지를 검출하는 것을 포함할 수 있다. 센서가 여전히 현재 프레임을 전송하고 있는 경우, 방법(430)은 로직(434)에서 최초 검출된 오버플로우 상황이 여전히 존재하는지를 판정하는 판정 로직(440)으로 계속된다. 오버플로우 상황이 복구되지 않은 경우, 방법(430)은 블록 442로 진행하고, 여기서 (예로서, 블록 436에서 드롭된 입력 픽셀을 고려하도록) 드롭 픽셀 카운터가 증가된다. 이어서, 방법은 블록 436으로 복귀하여 계속된다.
판정 로직(438)에서, 현재 프레임이 종료되었고, 센서가 다음 프레임을 전송하고 있는 것이 검출되는 경우(예로서, VSYNC 상승이 검출되는 경우), 방법(430)은 블록 450으로 진행하고, (예로서, 판정 로직(452)에 지시되는) 오버플로우 상황이 지속되는 한, 다음 프레임 및 후속 프레임들의 모든 픽셀들이 드롭된다. 전술한 바와 같이, 개별 카운터가 오디오-비디오 동기화 파라미터들을 조정하는 데 사용될 수 있는 드롭 프레임들의 수를 추적할 수 있다. 판정 로직(452)이 오버플로우 상황이 회복된 것을 지시하는 경우, 오버플로우 상황이 최초 발생한 초기 프레임으로부터의 드롭된 픽셀들이 드롭 픽셀 카운터에 의해 지시되는 바와 같은 그 초기 프레임으로부터 드롭된 픽셀들의 수에 대응하는 다수의 정의되지 않은 픽셀 값으로 교체된다. 전술한 바와 같이, 정의되지 않은 픽셀 값들은 모두 1, 모두 0, 데이터 레지스터 내에 프로그래밍된 교체 값이거나, 오버플로우 상황 이전에 판독된 이전 픽셀(예로서, 오버플로우 상황이 검출되기 전에 판독된 최종 픽셀)의 값을 가질 수 있다. 따라서, 이것은 초기 프레임이 정확한 수의 픽셀들을 이용하여 처리될 수 있게 하며, 블록 446에서, 다운스트림 이미지 처리가 계속될 수 있고, 이것은 초기 프레임을 메모리에 기입하는 것을 포함할 수 있다. 또한 전술한 바와 같이, 프레임에서 드롭된 픽셀들의 수에 따라, 제어 로직(84)은 (예로서, 드롭된 픽셀들의 수가 수용 가능한 드롭 픽셀 임계치 위 또는 아래인 경우에) 비디오 데이터를 출력할 때 그 프레임을 배제 또는 포함할지를 결정할 수 있다. 이해하듯이, 오버플로우 처리는 ISP 서브시스템(32)의 각각의 입력 큐(400, 402)에 대해 개별적으로 수행될 수 있다.
본 발명에 따라 구현될 수 있는 오버플로우 처리의 다른 실시예가 방법(460)을 나타내는 흐름도를 통해 도 42에 도시되어 있다. 여기서, 현재 프레임 동안에 발생하지만, 현재 프레임의 종료 전에 복구되는 오버플로우 상황에 대한 오버플로우 처리는 도 41에 도시된 것과 동일한 방식으로 수행되며, 따라서 이러한 단계들은 동일한 참조 번호들(432-446)로 넘버링되었다. 도 42의 방법(460)과 도 41의 방법(430) 간의 차이는 오버플로우 상황이 다음 프레임으로 계속될 때의 오버플로우 처리와 관련된다. 예로서, 판정 로직(438)을 참조하면, 오버플로우 상황이 다음 프레임으로 계속될 때, 도 41의 방법(430)에서와 같이 다음 프레임을 드롭하는 것이 아니라, 방법(460)은 블록 462를 구현하며, 여기서 드롭 픽셀 카운터가 소거되고, 센서 입력 큐가 소거되며, 제어 로직(84)은 부분적인 현재 프레임을 드롭하도록 시그널링된다. 센서 입력 큐 및 드롭 픽셀 카운터를 소거함으로써, 방법(460)은 다음 프레임(이제 현재 프레임이 됨)을 취득할 준비를 하며, 방법은 블록 432로 복귀한다. 이해하듯이, 이 현재 프레임에 대한 픽셀들은 센서 입력 큐 내로 판독될 수 있다. 입력 큐가 가득 차기 전에 오버플로우 상황이 복구되는 경우, 다운스트림 처리가 재개된다. 그러나, 오버플로우 상황이 지속되는 경우, 방법(460)은 블록 436으로부터 계속될 것이다(예로서, 오버플로우가 복구되거나 다음 프레임이 시작될 때까지 픽셀 드롭을 시작할 것이다).
전술한 바와 같이, 전자 장치(10)는 또한 (예로서, 입력 구조들(14) 중 하나로서 제공되는 오디오 캡처 장치를 통해) 오디오 데이터와 (이미지 센서들(90)을 갖춘 이미징 장치(30)를 통해) 이미지 데이터의 동시 캡처를 제공할 수 있다. 예로서, 도 43에 다이어그램으로 도시된 바와 같이, 오디오 데이터(470) 및 이미지 데이터(472)는 전자 장치에 의해 동시에 캡처된 비디오 및 오디오 데이터를 나타낼 수 있다. 오디오 데이터(470)는 시간 (t)에 걸쳐 캡처된 오디오 샘플들(474)을 포함할 수 있으며, 마찬가지로 이미지 데이터(472)는 시간 t에 걸쳐 캡처된 일련의 이미지 프레임들을 나타낼 수 있다. 본원에서 참조 번호 476으로 참조되는 이미지 데이터(472)의 각각의 샘플은 정지 이미지 프레임을 나타낼 수 있다. 따라서, 정지 이미지 프레임들이 시간 순서로 (예로서, 초당 15-30 프레임과 같은 특정 수의 초당 프레임으로) 관찰될 때, 관찰자는 이동 이미지의 출현을 인식할 것이며, 따라서 비디오 데이터가 제공될 것이다. 오디오 데이터(470)가 취득되고, 디지털 데이터로서 표현될 때, 이 데이터는 동일 시간 간격들로 오디오 신호의 진폭의 샘플들(예로서, 474)을 나타내는 이진 값들로서 저장될 수 있다. 게다가, 도 43에는 이산적인 분할들(474)을 갖는 것으로 도시되지만, 실제 구현에서 오디오 데이터는 사람의 귀가 오디오 데이터(470)를 연속적인 사운드로서 인식하도록 충분히 빠른 샘플 레이트를 가질 수 있다는 것을 알아야 한다.
비디오 데이터(472)의 재생 동안, 대응하는 오디오 데이터(470)도 재생될 수 있으며, 따라서 관찰자는 캡처된 이벤트의 비디오 데이터를 보는 것만이 아니라, 캡처된 이벤트에 대응하는 사운드도 들을 수 있다. 이상적으로는, 비디오 데이터(472) 및 오디오 데이터(470)가 동기화된 방식으로 재생된다. 예로서, 474a로 지시되는 오디오 샘플이 시간 tA에 최초로 캡처된 경우, 이상적인 재생 조건에서는 시간 tA에 최초로 캡처된 이미지 프레임이 오디오 샘플(474a)과 동시에 출력된다. 그러나, 동기화가 이루어지지 않는 경우, 관찰자/청취자는 오디오 및 비디오 데이터 사이의 시간 지연 또는 시프트를 인식할 수 있다. 예로서, 오디오 샘플(474a)이 시간 tA보다 시간상 더 이른 시간 t0에 최초 캡처된 이미지 프레임(476c)과 함께 출력되는 것으로 가정한다. 이 경우, 오디오 데이터(470)는 비디오 데이터(472)의 "앞에" 있으며, 사용자는 시간 tA로부터의 오디오 샘플을 듣는 것과 그의 예상되는 대응 비디오 샘플(시간 tA로부터의 이미지 프레임(476a))을 보는 것 사이에 지연을 경험할 수 있으며, 그러한 지연은 시간들 tA와 t0 사이의 차이이다. 마찬가지로, 오디오 샘플(474a)이 시간 tA보다 시간상 더 늦은 시간 tB로부터의 이미지 프레임(476b)과 함께 출력되는 것으로 가정한다. 후자의 경우, 오디오 데이터(470)는 비디오 데이터(472)의 "뒤에" 있으며, 사용자는 시간 tA에 비디오 샘플(476a)을 보는 것과 그에 대응하는 시간 tA로부터의 오디오 샘플을 듣는 것 사이에 지연을 경험할 수 있으며, 그러한 지연은 시간들 tA와 tB 사이의 차이이다. 이러한 타입의 지연들은 때때로 "립싱크(lip-sync)" 에러라고 한다. 이해하듯이, 후자의 두 시나리오는 사용자의 경험에 부정적인 영향을 미칠 수 있다. 오디오-비디오 동기화를 달성하기 위하여, 일반적으로 시스템은 동기화 문제들에 대한 임의의 보상이 비디오보다 오디오에 우선하도록 구성되는데, 예로서 동기화 문제가 존재하는 경우, 오디오의 변경 없이 이미지 프레임들이 드롭 또는 반복될 수 있다.
일부 통상적인 시스템들에서, 오디오와 비디오 데이터의 동기화는 (예로서, VSYNC 신호에 기초하여) 프레임 인터럽트들의 시작을 이용하여 수행된다. 새로운 프레임의 시작을 지시하는 그러한 인터럽트가 발생할 때, 프로세서는 인터럽트 서비스 루틴을 실행하여 인터럽트를 서비스할 수 있으며(예로서, 비트들을 소거할 수 있으며), 프로세서가 인터럽트를 서비스한 때에 대응하는 타임스탬프가 그 프레임과 연관된다. 이해하듯이, 일반적으로 인터럽트 요청과 프로세서가 인터럽트를 서비스하는 시간 사이에는 소정의 레이턴시가 존재한다. 따라서, 특정 이미지 프레임과 연관된 타임스탬프는 이러한 레이턴시를 반영할 수 있으며, 따라서 실제로는 프레임이 실제로 시작된 정확한 시간을 나타내지 않을 수 있다. 게다가, 이러한 레이턴시는 프로세서 부하 및 대역폭에 따라 변할 수 있으며, 이는 오디오-비디오 동기화 문제들을 더 복잡하게 할 수 있다.
전술한 바와 같이, ISP 프론트엔드 로직(80)은 그 자신의 클럭 도메인 내에서 동작할 수 있으며, 상이한 크기들 및 상이한 타이밍 요구들을 갖는 센서들을 지원하기 위해 센서 인터페이스(94)에 대한 비동기 인터페이스를 제공할 수 있다. 오디오 및 비디오 데이터의 동기화를 제공하기 위하여, ISP 처리 회로(32)는 ISP 프론트엔드 클럭을 이용하여, 캡처된 이미지 프레임들과 관련될 수 있는 타임스탬프들을 생성하는 데 사용될 수 있는 카운터를 제공할 수 있다. 예로서, 도 44를 참조하면, 일 실시예에서 타이머 설정 레지스터(490), 타임 코드 레지스터(492), 센서0 타임 코드 레지스터(494) 및 센서1 타임 코드 레지스터(496)를 포함하는 4개의 레지스터는 모두 ISP 프론트엔드 프로세싱 로직(80)에 대한 클럭에 적어도 부분적으로 기초하는 타임스탬프 기능들을 제공하는 데 사용될 수 있다. 일 실시예에서, 레지스터(490, 492, 494, 496)는 32비트 레지스터들을 포함할 수 있다.
타이머 설정 레지스터(490)는 타임스탬프 코드들을 생성하기 위한 카운트를 제공하는 데 사용될 수 있는 값 NClk를 제공하도록 구성될 수 있다. 일 실시예에서, NClk는 0-15 사이의 4비트 값일 수 있다. NClk에 기초하여, 현재 타임 코드를 지시하는 타이머 또는 카운터는 (ISP 프론트엔드 클럭 도메인에 기초하여) 2^NClk 클럭 사이클마다 1의 값만큼 증가될 수 있다. 현재 타임 코드는 타임 코드 레지스터(492)에 저장될 수 있으며, 따라서 32비트의 해상도를 갖는 타임 코드를 제공할 수 있다. 타임 코드 레지스터(492)는 또한 제어 로직(84)에 의해 리셋될 수 있다.
도 10을 잠시 참조하면, 각각의 센서 인터페이스 입력 Sif0 및 Sif1에 대해, 타임 코드 레지스터(492)는 수직 동기화(VSYNC) 신호 상에서 상승 에지가 검출되어(또는 VSYNC가 구성되는 방법에 따라서는 하강 에지가 검출되어) (예로서, 수직 공백 간격의 종료시에) 새로운 프레임의 시작을 지시할 때 샘플링될 수 있다. VSYNC 상승 에지에 대응하는 타임 코드는 이미지 프레임을 제공하는 센서(센서0 또는 센서1)에 따라 시간 코드 레지스터(494 또는 496)에 저장될 수 있으며, 따라서 현재 프레임의 캡처가 시작된 시간을 지시하는 타임스탬프를 제공한다. 일부 실시예들에서, 센서로부터의 VSYNC 신호는 프로그래밍되거나 프로그래밍 가능한 지연을 가질 수 있다. 예로서, 프레임의 제1 픽셀이 n개의 클럭 사이클만큼 지연되는 경우, 제어 로직(84)은 예컨대 하드웨어로 오프셋을 제공하거나 소프트웨어/펌웨어 보상을 이용함으로써 이러한 지연을 보상하도록 구성될 수 있다. 따라서, 타임스탬프는 프로그래밍된 지연이 추가된 VSYNC 상승 에지로부터 생성될 수 있다. 다른 실시예에서, 프레임의 시작에 대응하는 타임스탬프는 프로그래밍 가능한 지연을 갖는 VSYNC 신호의 하강 에지를 이용하여 결정될 수 있다.
현재 프레임이 처리되고 있을 때, 제어 로직(84)은 센서 타임 코드 레지스터(494 또는 496)로부터 타임스탬프를 판독하며, 타임스탬프는 이미지 프레임과 연관된 메타데이터 내의 파라미터로서 비디오 이미지 프레임과 연관될 수 있다. 이것은 이미지 프레임(476), 및 적절한 타임 코드 레지스터(예로서, 센서0에 대한 레지스터(494) 또는 센서1에 대한 레지스터(496))로부터 판독된 타임스탬프(500)를 포함하는 이미지 프레임과 관련된 메타데이터(498)의 다이어그램 도면을 제공하는 도 45에 더 명확히 도시되어 있다. 일 실시예에서, 제어 로직(84)은 이어서 프레임 인터럽트의 시작에 의해 트리거될 때 타임 코드 레지스터로부터 타임스탬프를 판독할 수 있다. 따라서, ISP 처리 회로(32)에 의해 캡처된 각각의 이미지 프레임은 VSYNC 신호에 기초하는 관련 타임스탬프를 가질 수 있다. ISP 제어 로직(84)의 일부 또는 전자 장치(10)의 개별 제어 유닛의 일부로서 구현될 수 있는 제어 회로 또는 펌웨어는 이미지 프레임 타임스탬프를 이용하여, 대응하는 오디오 데이터의 세트를 정렬 또는 동기화하여 오디오-비디오 동기화를 달성할 수 있다.
일부 실시예들에서, 장치(10)는 오디오 데이터(예로서, 오디오 데이터(470))를 처리하도록 구성된 오디오 프로세서를 포함할 수 있다. 예로서, 오디오 프로세서는 독립형 프로세싱 유닛(예로서, 프로세서(들)(16)의 일부)이거나, 메인 프로세서와 통합되거나, 시스템-온-칩 처리 장치의 일부일 수 있다. 그러한 실시예들에서, 오디오 프로세서와 별개인 프로세서(예로서, 제어 로직(84)의 일부)에 의해 제어될 수 있는 오디오 프로세서 및 이미지 처리 회로(32)는 독립 클럭들에 기초하여 동작할 수 있다. 예로서, 클럭들은 개별 위상 동기 루프들(PLL)을 이용하여 생성될 수 있다. 따라서, 오디오-비디오 동기화를 위해, 장치(10)는 이미지 타임스탬프와 오디오 타임스탬프를 상관시킬 수 있는 것이 필요할 수 있다. 일 실시예에서, 이러한 상관은 장치(10)의 메인 프로세서(예로서, CPU)를 이용하여 달성될 수 있다. 예로서, 메인 프로세서는 그 자신의 클럭을 오디오 프로세서의 클럭 및 ISP 회로(32)의 클럭과 동기화하여 오디오 프로세서 및 ISP 회로(32)의 각각의 클럭들 사이의 차이를 결정할 수 있다. 일단 이러한 차이가 알려지면, 이러한 차이는 오디오 데이터(예로서, 470)의 오디오 타임스탬프들과 이미지 데이터(예로서, 472)의 이미지 프레임 타임스탬프들을 상관시키는 데 사용될 수 있다.
일 실시예에서, 제어 로직(84)은 또한 예컨대 32비트 타임 코드의 최대값에 도달할 때 랩어라운드(wrap-around) 상황들을 처리하도록 구성될 수 있으며, 여기서 다음 증가는 정확한 값을 제공하기 위한 추가 비트(예로서, 33 비트)를 필요로 할 것이다. 간단한 예를 제공하기 위하여, 이러한 타입의 랩어라운드는, 4 디지트 카운터에서 값 9999가 증가되어, 4 디지트 제한으로 인해 10000이 아니라 0000이 될 때 발생할 수 있다. 제어 로직(84)은 타임 코드 레지스터(492)를 리셋할 수 있지만, 비디오의 세션이 여전히 캡처되고 있는 동안에 랩어라운드 상황이 발생할 때 그러한 리셋을 수행하는 것은 바람직하지 않을 수 있다. 따라서, 그러한 예들에서, 제어 로직(84)은 32비트 레지스터 값들에 기초하여 더 높은 정밀도의 타임스탬프들(예로서, 64비트)을 생성함으로써 랩어라운드 상황을 처리하도록 구성되는, 일 실시예에서 소프트웨어에 의해 구현될 수 있는 로직을 포함할 수 있다. 소프트웨어는 타임 코드 레지스터(492)가 리셋될 때까지 이미지 프레임 메타데이터에 기입될 수 있는 더 높은 정밀도의 타임스탬프들을 생성할 수 있다. 일 실시예에서, 소프트웨어는 랩어라운드를 검출하고, 랩어라운드 상황으로부터 발생하는 시간 차이를 더 높은 해상도의 카운터에 추가하도록 구성될 수 있다. 예로서, 일 실시예에서, 32비트 카운터에 대해 랩어라운드 상황이 검출될 때, 소프트웨어는 (랩어라운드를 고려하기 위하여) 32비트 카운터의 최대값과 32비트 카운터에 의해 지시되는 현재 시간 값을 합산하고, 그 결과를 (예로서, 32비트보다 높은) 더 높은 해상도의 카운터에 저장할 수 있다. 그러한 경우에, 고해상도 카운터 내의 결과는 32비트 카운터가 리셋될 때까지 이미지 메타데이터 정보에 기입될 수 있다.
도 46은 전술한 오디오-비디오 동기화 기술들을 일반적으로 설명하는 방법(510)을 나타낸다. 도시된 바와 같이, 방법(510)은 단계 512에서 시작하고, 여기서 이미지 센서(예로서, 센서0 또는 센서1)로부터 픽셀 데이터가 수신된다. 이어서, 판정 로직(514)에서, VSYNC 신호가 새로운 프레임의 시작을 지시하는지를 판정한다. 새로운 프레임이 검출되지 않는 경우, 방법(510)은 단계 512로 복귀하여, 현재 이미지 프레임으로부터 픽셀 데이터를 계속 수신한다. 판정 로직(514)에서 새로운 프레임이 검출되는 경우, 방법(510)은 단계 516으로 계속되며, 여기서 타임 코드 레지스터(예로서, 레지스터(492))를 샘플링하여, 단계 514에서 검출된 VSYNC 신호의 상승(또는 하강) 에지에 대응하는 타임스탬프 값을 취득한다. 이어서, 단계 518에서, 타임스탬프 값이 입력 픽셀 데이터를 제공하는 이미지 센서에 대응하는 타임 코드 레지스터(예로서, 레지스터 494 또는 496)에 저장된다. 이어서, 단계 520에서, 타임스탬프가 새로운 이미지 프레임의 메타데이터와 연관되며, 이어서 이미지 프레임 메타데이터 내의 타임스탬프 정보가 오디오-비디오 동기화에 이용될 수 있다. 예로서, 전자 장치(10)는 대응하는 오디오 및 비디오 출력 사이의 임의의 지연이 실질적으로 최소화되는 방식으로 (각각의 개별 프레임의 타임스탬프들을 이용하여) 비디오 데이터를 대응하는 오디오 데이터에 정렬시킴으로써 오디오-비디오 동기화를 제공하도록 구성될 수 있다. 예로서, 전술한 바와 같이, 장치(10)의 메인 프로세서를 이용하여, 오디오 타임스탬프들과 비디오 타임스탬프들을 어떻게 상관시킬지를 결정할 수 있다. 일 실시예에서, 오디오 데이터가 비디오 데이터의 앞에 있는 경우, 이미지 프레임들을 드롭하여, 정확한 이미지 프레임이 오디오 데이터 스트림을 "따라잡게(catch up)" 할 수 있으며, 오디오 데이터가 비디오 데이터의 뒤에 있는 경우에는 이미지 프레임들을 반복하여, 오디오 데이터가 비디오 스트림을 "따라잡게" 할 수 있다.
도 47 내지 50을 계속하면, ISP 프로세싱 로직 또는 서브시스템(32)은 또한 플래시("스트로브"라고도 함) 동기화를 제공하도록 구성될 수 있다. 예를 들어, 플래시 모듈을 사용할 때, 이미지 장면의 일루미네이션에 도움이 되도록 인공 조명(artificial lighting)이 일시적으로 제공될 수 있다. 예를 들어, 플래시의 이용은 낮은 광 상태들 하에서 이미지 장면을 캡처할 때 이득이 있을 수 있다. 플래시 또는 스트로브는 LED 플래시 디바이스 또는 크세논 플래시 디바이스 등과 같은 임의의 적절한 조명 소스를 이용하여 제공될 수 있다.
본 실시예에서, ISP 서브시스템(32)은 플래시 모듈이 활성인 타이밍 및/또는 간격을 제어하도록 구성된 플래시 컨트롤러를 포함할 수 있다. 알 수 있는 바와 같이, 일반적으로 플래시 간격이 타겟 프레임(예를 들어, 캡처될 이미지 프레임)의 첫번째 픽셀이 캡처되기 전에 시작하고 타겟 프레임의 마지막 픽셀이 캡처된 후 그러나 후속하는 연이은 이미지 프레임의 시작 전에 종료하도록 플래시 모듈이 활성인 타이밍 및 지속기간(duration)을 제어하는 것이 바람직하다. 이것은 타겟 프레임 내의 모든 픽셀이 이미지 장면이 캡처되는 동안에 유사한 조명 상태들에 노출되는 것을 보장하는 데 도움이 된다.
도 47을 참조하면, ISP 서브시스템(32)의 부분으로서 구현되고 플래시 모듈(552)을 제어하도록 구성되는 플래시 컨트롤러(550)를 도시하는 블록도가 본 개시의 실시예에 따라 예시된다. 일부 실시예들에서, 플래시 모듈(552)은 하나보다 많은 스트로브 디바이스를 포함할 수 있다. 예를 들어, 특정 실시예들에서, 플래시 컨트롤러(550)는 메인 플래시(main flash)가 뒤따르는, 프리-플래시(pre-flash)(예를 들어, 레드 아이(red-eye) 감소를 위함)를 제공하도록 구성될 수 있다. 프리-플래시 및 메인 플래시 이벤트들은 순차적일 수 있고, 동일한 또는 상이한 스트로브 디바이스들을 이용하여 제공될 수 있다.
예시된 실시예에서, 플래시 모듈(552)의 타이밍은 이미지 센서들(90a 및 90b)로부터 제공된 타이밍 정보에 기초하여 제어될 수 있다. 예를 들어, 이미지 센서의 타이밍은 롤링 셔터 기법(rolling shutter technique)을 이용하여 제어될 수 있어, 인티그레이션 시간(integration time)은 이미지 센서(예를 들어, 90a 및 90b)의 픽셀 어레이를 스캔하는 슬릿 애퍼처(slit aperture)를 이용하여 제어된다. 센서 인터페이스들(94a 및 94b)(이들 각각은 센서측 인터페이스(548) 및 프론트엔드측 인터페이스(549)를 포함할 수 있음)을 통해 ISP 서브시스템(32)에 제공될 수 있는 센서 타이밍 정보(여기서는 참조 번호 556으로 도시됨)를 이용하여, 제어 로직(84)은 플래시 컨트롤러(550)에 적절한 제어 파라미터들(554)을 제공할 수 있고, 이것은 그 다음에 플래시 모듈(552)을 활성화하기 위해 플래시 컨트롤러(550)에 의해 활용될 수 있다. 위에서 논의한 바와 같이, 센서 타이밍 정보(556)를 이용함으로써, 플래시 컨트롤러(556)는 플래시 모듈이 타겟 프레임의 첫번째 픽셀이 캡처되기 전에 활성화되어 타겟 프레임의 지속기간 동안 활성화된 상태를 유지하고, 플래시 모듈은 타겟 프레임의 마지막 픽셀이 캡처된 후 다음 프레임의 시작(예를 들어, VSYNC 상승) 전에 비활성화되는 것을 보장할 수 있다. 이 프로세스는 "플래시 동기화" 또는 "스트로브 동기화"라고 할 수 있으며, 이 기법들은 하기에서 더 논의된다.
또한, 도 47의 실시예에 도시된 바와 같이, 제어 로직(84)은 또한 여기서 참조 번호 558로서 도시된, ISP 프론트엔드(80)로부터의 통계 데이터를 활용하여, 타겟 프레임에 대응하는 이미지 장면에서의 현재의 조명 상태들이 플래시 모듈을 이용하는 데 적절한지를 결정할 수 있다. 예를 들어, ISP 서브시스템(32)은 자동 노출(auto-exposure)을 활용하여, 인티그레이션 시간 및/또는 센서 이득들을 조절함으로써 타겟 노출 레벨(예를 들어, 광 레벨)을 유지하려고 할 수 있다. 그러나, 알 수 있는 바와 같이, 인티그레이션 시간은 프레임 시간보다 더 길 수 없다. 예를 들어, 30fps에서 취득된 비디오 데이터에 대해, 각각의 프레임은 대략 33 밀리초의 지속기간을 갖는다. 그러므로, 타겟 노출 레벨이 최대 인티그레이션 시간을 이용하여 실현될 수 없는 경우, 센서 이득들이 또한 적용될 수 있다. 그러나, 인티그레이션 시간과 센서 이득들 둘다의 조절이 타겟 노출을 실현할 수 없으면(예를 들어, 광 레벨이 타겟 임계값보다 작으면), 플래시 컨트롤러는 플래시 모듈을 활성화하도록 구성될 수 있다. 또한, 일 실시예에서, 인티그레이션 시간은 또한 모션 블러(motion blur)를 피하기 위해 제한될 수 있다. 예를 들어, 인티그레이션 시간이 프레임의 지속기간까지 확장될 수 있지만, 그것은 모션 블러를 피하기 위해 일부 실시예들에서 더 제한될 수 있다.
위에서 논의한 바와 같이, 플래시의 활성화가 그의 전체 지속기간 동안 타겟 프레임을 조명하는 것(예를 들어, 플래시가 타겟 프레임의 첫번째 픽셀 전에 턴온(turn on)되고 타겟 프레임의 마지막 픽셀 후에 턴오프(turn off)되는 것)을 보장하기 위해서, ISP 서브시스템(32)은 플래시(552)를 활성화/비활성화할 때를 결정하기 위해 센서 타이밍 정보(556)를 활용할 수 있다.
도 48은 어떻게 이미지 센서들(90)로부터의 센서 타이밍 신호가 플래시 동기화를 제어하는 데 이용될 수 있는지를 그래픽적으로 도시한다. 예를 들어, 도 48은 이미지 센서들 중 하나(90a 또는 90b)에 의해 제공될 수 있는 이미지 센서 타이밍 신호(556)의 일부를 도시한다. 신호(556)의 로직적 하이(logical high) 부분들은 프레임 간격들을 표현한다. 예를 들어, 제1 프레임(FRAME N)은 참조 번호 570에 의해 표현되고 제2 프레임(FRAME N+1)은 참조 번호 572에 의해 표현된다. 제1 프레임(570)이 시작하는 실제 시간은 시간 tVSYNC _ ra0에서 신호(556)의 상승 에지(rising edge)에 의해 표시되고(예를 들어, "r"은 상승 에지를 나타내고, "a"는 타이밍 신호(556)의 "실제(actual)" 양상을 나타냄), 제1 프레임(570)이 종료하는 실제 시간은 시간 tVSYNC _ fa0에서 신호(556)의 하강 에지(falling edge)에 의해 표시된다(예를 들어, "f"는 하강 에지를 나타냄). 마찬가지로, 제2 프레임(572)이 시작하는 실제 시간은 시간 tVSYNC _ ra1에서 신호(556)의 상승 에지에 의해 표시되고, 제2 프레임(572)이 종료하는 실제 시간은 시간 tVSYNC _ fa1에서 신호(556)의 하강 에지에 의해 표시된다. 제1 및 제2 프레임들 간의 간격(574)은 블랭킹 간격(blanking interval)(예를 들어, 수직 블랭킹)이라고 할 수 있으며, 이것은 이미지 처리 회로(예를 들어, ISP 서브시스템(32))가 이미지 프레임들이 종료하고 시작하는 때를 식별할 수 있게 할 수 있다. 본 도면에 도시된 프레임 간격들 및 수직 블랭킹 간격들은 반드시 비례적으로(scale) 그려질 필요는 없다는 것을 알아야 한다.
도 48에 도시된 바와 같이, 신호(556)는 이미지 센서(90)의 뷰포인트(viewpoint)로부터 실제 타이밍을 표현할 수 있다. 즉, 신호(556)는 이미지 센서에 의해 프레임들이 실제로 취득되는 타이밍을 표현한다. 그러나, 센서 타이밍 정보가 이미지 프로세싱 시스템(32)의 다운스트림 컴포넌트들(downstream components)에 제공되기 때문에, 센서 타이밍 신호에 지연들(delays)이 도입될 수 있다. 예를 들어, 신호(576)는 센서(90)와 ISP 프론트엔드 프로세싱 로직(80) 사이의 인터페이스 로직(94)의 센서측 인터페이스(548)의 뷰포인트로부터 볼 수 있는 지연된 타이밍 신호(제1 시간 지연(578)에 의해 지연됨)를 표현한다. 신호(580)는 도 48에서 센서측 인터페이스 타이밍 신호(572)에 대해 제2 시간 지연(582)에 의해 지연되고 원래의 센서 타이밍 신호(556)에 대해 제1 시간 지연(578)과 제2 시간 지연(582)의 합과 같은 제3 시간 지연(584)에 의해 지연되는 것으로서 도시되는, 프론트엔드측 인터페이스(549)의 뷰포인트로부터 지연된 센서 타이밍 신호를 표현할 수 있다. 다음으로, 인터페이스(94)의 프론트엔드측(549)으로부터의 신호(580)가 ISP 프론트엔드 프로세싱 로직(80)(FEProc)에 제공되기 때문에, ISP 프론트엔드 프로세싱 로직(80)의 뷰포인트로부터 지연된 신호(588)가 보이도록 부가적인 지연이 주어질 수 있다. 구체적으로, ISP 프론트엔드 프로세싱 로직(80)에 의해 보이는 신호(588)는 여기서 지연된 신호(580)(프론트엔드측 타이밍 신호)에 대해 제4 시간 지연(590)에 의해 지연되고 원래의 센서 타이밍 신호(556)에 대해 제1 시간 지연(578)과 제2 시간 지연(582)과 제4 시간 지연(590)의 합과 같은 제5 시간 지연(592)에 의해 지연되는 것으로서 도시된다.
플래시 타이밍을 제어하기 위해, 플래시 컨트롤러(550)는 ISP 프론트엔드에 이용가능한 제1 신호를 활용할 수 있고, 따라서 이 ISP 프론트엔드는 실제 센서 타이밍 신호(556)에 대해 최소한의 지연 시간에 의해 시프트(shift)된다. 그러므로, 본 실시예에서, 플래시 컨트롤러(550)는 센서-대-ISP 인터페이스(94)의 프론트엔드측(549)의 뷰포인트로부터 보이는 바와 같이, 센서 타이밍 신호(580)에 기초하여 플래시 타이밍 파라미터들을 결정할 수 있다. 그러므로, 본 예에서 플래시 컨트롤러(550)에 의해 이용되는 신호(596)는 신호(580)와 동일할 수 있다. 도시된 바와 같이, 지연된 신호(596)(신호(556)에 대해 지연 시간(584)에 의해 지연됨)는 제1 프레임(570)에 상관하는(correlate) 시간들 tVSYNC _ rd0과 tVSYNC _ fd0(예를 들어, "d"는 "지연됨"을 표현함) 사이에 그리고 제2 프레임(572)에 상관하는 시간들 tVSYNC _ rd1과 tVSYNC_fd1 사이에 위치한 시간 간격들을 포함한다. 위에서 논의한 바와 같이, 이미지 장면이 프레임의 전체를 위해 조명되는 것을 보장하기 위해, 그리고 (마이크로초대(the order of microseconds)(예를 들어, 100-800 마이크로초) 내지 몇몇의 밀리초대(the order of milliseconds)(예를 들어, 1-5 밀리초)에 있을 수 있는) 전체 세기에 도달하기 위해 활성화 동안 플래시가 필요로 할 수 있는 임의의 워밍업 시간(warm-up time)을 고려하기 위해 일반적으로 (예를 들어, 프레임의 마지막 픽셀 후에 플래시를 비활성화하기 위해) 프레임의 시작 전에 프레임의 지속기간 동안 플래시를 활성화하는 것이 바람직하다. 그러나, 플래시 컨트롤러(550)에 의해 분석되는 신호(596)가 실제 타이밍 신호(556)에 대해 지연되기 때문에, 이 지연은 플래시 타이밍 파라미터들을 결정할 때 고려된다.
예를 들어, 플래시는 제2 프레임(572) 동안 이미지 장면을 조명하도록 활성화될 것임을 가정하여, tVSYNC _ rd1에서의 지연된 상승 에지는 tVSYNC _ ra1에서의 실제 상승 에지 후에 발생한다. 그러므로, tVSYNC _ rd1에서의 지연된 상승 에지는 제2 프레임(572)이 이미 시작한 후에(예를 들어, 신호(556)의 tVSYNC _ ra1 후에) 발생하기 때문에, 플래시 컨트롤러(550)가 플래시 활성화 시작 시간을 결정하기 위해 tVSYNC _ rd1에서의 지연된 상승 에지를 이용하는 것은 어려울 수 있다. 본 실시예에서, 플래시 컨트롤러(550)는 대신에 이전 프레임의 종료, 여기서는 시간 tVSYNC _ fd0에서의 하강 에지에 기초하여 플래시 활성화 시작 시간을 결정할 수 있다. 예를 들어, 플래시 컨트롤러(550)는 프레임(572)의 지연된 상승 에지 시간 tVSYNC _ rd1에 대응하는 시간을 계산하기 위해, 시간 tVSYNC _ fd0에 시간 간격(600)(수직 블랭킹 간격(574)을 표현함)을 부가할 수 있다. 알 수 있는 바와 같이, 지연된 상승 에지 시간 tVSYNC _ rd1은 실제 상승 에지 시간 tVSYNC _ ra1(신호(556)) 후에 발생하고, 따라서 신호(580)의 시간 지연(584)에 대응하는 시간 오프셋(598)(OffSet1)이 시간 tVSYNC _ fd0과 블랭킹 간격 시간(600)의 합으로부터 감산된다. 이것은 시간 tVSYNC _ ra1에서, 제2 프레임(572)의 시작과 동시에 시작하는 플래시 활성화 시작 시간을 생성한다. 그러나, 위에서 언급한 바와 같이, 제공되는 플래시 디바이스의 타입(예를 들어, 크세논, LED 등)에 따라, 플래시 모듈(552)은 플래시 모듈이 활성화될 때와 플래시 디바이스가 그의 전체 광도(luminosity)에 도달할 때 사이의 워밍업 시간을 경험할 수 있다. 워밍업 시간의 양은 사용되는 플래시 디바이스의 타입(예를 들어, 크세논 디바이스, LED 디바이스 등)에 의존할 수 있다. 그러므로, 이러한 워밍업 시간들을 고려하기 위해, (예를 들어, 제어 레지스터를 이용하여) 프로그램되거나 사전설정될 수 있는 부가적인 오프셋(602)(OffSet2)이 시간 tVSYNC _ ra1에서 제2 프레임(572)의 시작으로부터 감산될 수 있다. 이것은 플래시 활성화 시작 시간을 시간(604)으로 다시 이동시켜, (장면을 조명할 필요가 있는 경우) 이미지 센서에 의해 취득되는 프레임(572)의 시작 전에 플래시가 활성화되는 것을 보장한다. 플래시 활성화 시간을 결정하기 위한 이러한 프로세스는 아래 공식을 이용하여 표현될 수 있다:
Figure pat00010
예시된 실시예에서, 센서 타이밍 신호(556) 상의 시간(605)에 의해 표시되는 바와 같이 시간 tVSYNC _ fd1이 프레임(572) 후의 프레임(예를 들어, 도 48에 도시되지 않은 FRAME N+2)의 시작 전에 발생한다고 하면, 플래시의 비활성화는 플래시 컨트롤러 신호(596)의 시간 tVSYNC _ fd1에서 발생할 수 있다. 다른 실시예들에서, 플래시의 비활성화는 신호(596)의 시간 tVSYNC _ fd1 후 그러나 다음 프레임의 시작 전(예를 들어, FRAME N+2의 시작을 표시하는 센서 타이밍 신호(556) 상의 후속 VSYNC 상승 에지 전) 시간(예를 들어, 오프셋(606))에서 발생할 수 있거나, 또는 시간 tVSYNC _ fd1 바로 전의 간격(608) 내에서 발생할 수 있고, 여기서, 간격(608)은 Offset1(598)의 양보다 적다. 알 수 있는 바와 같이, 이것은 플래시가 타겟 프레임(예를 들어, 프레임(572))의 전체 지속기간 동안 유지되는 것을 보장한다.
도 49는 도 48에 도시된 실시예에 따른 전자 디바이스(10)에 대한 플래시 활성화 시작 시간을 결정하기 위한 프로세스(618)를 도시한다. 블록(620)에서 시작하면, 이미지 센서로부터의 센서 타이밍 신호(예를 들어, 556)가 취득되어, 전자 디바이스(10)의 이미지 신호 프로세싱 서브시스템(예를 들어, 32)의 부분일 수 있는 플래시 제어 로직(예를 들어, 플래시 컨트롤러(550))에 제공된다. 센서 타이밍 신호는 플래시 제어 로직에 제공되지만, 원래의 타이밍 신호(예를 들어, 556)에 대해 지연될 수 있다. 블록(622)에서, 센서 타이밍 신호와 지연된 센서 타이밍 신호(예를 들어, 596) 사이의 지연(예를 들어, 지연(584))이 결정된다. 다음으로, 플래시 일루미네이션을 요청하는 타겟 프레임(예를 들어, 프레임(572))이 블록(624)에서 식별된다. 플래시가 타겟 프레임의 시작 전에 활성인 것을 보장하기 위해 플래시 모듈(예를 들어, 552)이 활성화되어야 하는 시간을 결정하기 위해서, 프로세스(618)는 그 다음에 블록(626)으로 진행하고, 여기서 지연된 타이밍 신호에 의해 표시되는 바와 같이, 타겟 프레임 전의 프레임의 종료에 대응하는 제1 시간(예를 들어, 시간 tVSYNC _ fd0)이 결정된다. 그 후에, 블록(628)에서, 프레임들 간의 블랭킹 간격의 길이가 결정되서 블록(626)에서 결정된 제1 시간에 부가되어 제2 시간을 결정한다. 블록(622)에서 결정된 지연은 그 다음에 블록(630)에서 도시된 바와 같이, 제2 시간으로부터 감산되어 제3 시간을 결정한다. 위에서 논의한 바와 같이, 이것은 비-지연된(non-delayed) 센서 타이밍 신호에 따라 타겟 프레임의 실제 시작과 일치하도록 플래시 활성화 시간을 설정한다.
플래시가 타겟 프레임의 시작 전에 활성인 것을 보장하기 위해서, 블록(632)에서 도시된 바와 같이, 제3 시간으로부터 오프셋(예를 들어, 602, Offset2)이 감산되어 원하는 플래시 활성화 시간을 결정한다. 알 수 있는 바와 같이, 일부 실시예들에서, 블록(632)으로부터의 오프셋은 플래시가 타겟 프레임 전에 온(on)인 것을 보장할 뿐만 아니라, 플래시가 처음에 활성화되는 때와 전체 광도에 도달하는 때 사이에 요구할 수 있는 임의의 워밍업 시간도 보상할 수 있다. 블록(634)에서, 플래시(552)는 블록(632)에서 결정된 플래시 시작 시간에 활성화된다. 위에서 논의되고 블록(636)에 도시된 바와 같이, 플래시는 타겟 프레임의 전체 지속기간 동안 온을 유지할 수 있고, 타겟 프레임의 종료 후에 비활성화될 수 있어, 타겟 프레임의 모든 픽셀이 유사한 조명 상태에 있게 된다. 도 48 및 49에서 전술한 실시예는 싱글 플래시를 이용한 플래시 동기화 기법들의 적용을 논의하였지만, 이들 플래시 동기화 기법들은 또한 2개 이상의 플래시 디바이스들(예를 들어, 2개의 LED 플래시들)을 갖는 디바이스들의 실시예들에도 적용가능할 수 있음을 더 알아야 한다. 예를 들어, 하나보다 많은 플래시 모듈이 활용되는 경우, 위의 기법들은 두 플래시 모듈에 적용될 수 있어, 각각의 플래시 모듈은 프레임의 시작 전에 플래시 컨트롤러에 의해 활성화되고 프레임의 지속기간 동안 온을 유지한다(예를 들어, 플래시 모듈들은 반드시 동일한 프레임들에 대해 활성화될 필요는 없을 수 있다).
본원에 설명된 플래시 타이밍 기법들은 디바이스(10)를 이용하여 이미지들을 취득할 때 적용될 수 있다. 예를 들어, 일 실시예에서, 프리-플래시 기법은 이미지 취득 동안 이용될 수 있다. 예를 들어, 카메라 또는 이미지 취득 애플리케이션이 디바이스(10)에서 활성일 때, 애플리케이션은 "프리뷰(preview)" 모드에서 동작할 수 있다. 프레임들은 디바이스(10)를 "캡처" 모드에 두기 위해 사용자에 의해 캡처 요청이 개시될 때까지 실제로 캡처 또는 저장되지 않을 수 있지만, 프리뷰 모드에서, 이미지 센서(들)(예를 들어, 90)는 (예를 들어, 디스플레이(28) 상에 디스플레이하는) 프리뷰 목적들을 위해 디바이스(10)의 ISP 서브시스템(32)에 의해 프로세싱될 수 있는 이미지 데이터의 프레임들을 취득하고 있을 수 있다. 예로서, 이것은 디바이스(10) 상의 물리적 캡처 버튼, 또는 그래픽 사용자 인터페이스의 부분으로서 소프트웨어를 통해 구현될 수 있고 디바이스(10)의 디스플레이 상에 디스플레이될 수 있고 사용자 인터페이스 입력들(예를 들어, 터치 스크린 입력들)에 응답할 수 있는 소프트 캡처 버튼(soft-capture button)의 사용자 활성화를 통해 발생할 수 있다.
플래시는 통상적으로 프리뷰 모드 동안 활성이 아니기 때문에, 플래시를 이용한 이미지 장면의 갑작스러운 활성화 및 일루미네이션은, 일부 경우들에서, 플래시에 의해 조명되지 않은 동일한 이미지 장면에 비해, 자동 화이트 밸런스 통계(auto-white balance statistics) 등과 관련된 것과 같은, 특정 장면에 대한 특정 이미지 통계를 상당히 바꿀 수 있다. 따라서, 원하는 타겟 프레임을 프로세싱하는 데 이용된 통계를 향상시키기 위해서, 일 실시예에서, 프리-플래시 동작 기법은 플래시 일루미네이션을 요청하는 이미지 프레임을 캡처하기 위한 사용자 요청을 수신하고, 디바이스(10)가 여전히 프리뷰 모드에 있는 동안 제1 프레임을 조명하기 위해 제1 시간에 플래시를 이용하고, 다음 프레임의 시작 전에 통계(예를 들어, 자동 화이트 밸런스 통계)를 업데이트하는 것을 포함할 수 있다. 디바이스(10)는 캡처 모드에 진입하고 활성화된 플래시를 갖는 업데이트된 통계를 이용하여 다음 프레임을 캡처할 수 있어, 향상된 이미지/컬러 정확도를 제공할 수 있다.
도 50은 이러한 프로세스(640)를 더 상세히 예시하는 흐름도를 도시한다. 프로세스(640)는 플래시를 이용하여 이미지를 캡처하기 위한 요청이 수신되는 블록(642)에서 시작한다. 블록(644)에서, 플래시는 디바이스(10)가 여전히 프리뷰 모드에 있는 동안에 제1 프레임을 조명하기 위해 활성화된다(예를 들어, 도 48 및 49에 도시된 기법들을 이용하여 타이밍을 맞출 수 있다). 다음으로, 블록(646)에서, 자동 화이트 밸런스 통계와 같은 이미지 통계가 조명된 제1 프레임으로부터 취득된 통계에 기초하여 업데이트된다. 그 후, 블록(648)에서, 디바이스(10)는 캡처 모드에 진입하고 블록(646)으로부터 업데이트된 이미지 통계를 이용하여 다음 프레임을 취득할 수 있다. 예를 들어, 업데이트된 이미지 통계는 ISP 파이프라인(82)을 프로그램하기 위해 펌웨어(예를 들어, 제어 로직(84))에 의해 이용될 수 있는 화이트 밸런스 이득들 및/또는 컬러 정정 매트릭스(color correction matrices; CCM)를 결정하는 데 이용될 수 있다. 그러므로, 블록(648)에서 취득된 프레임(예를 들어, 다음 프레임)은 블록(646)으로부터의 업데이트된 이미지 통계에 기초하여 결정되는 하나 이상의 파라미터를 이용하여 ISP 파이프라인(82)에 의해 프로세싱될 수 있다.
다른 실시예에서, (예를 들어, 플래시 없이 취득 또는 프리뷰되는) 비-플래시 이미지 장면으로부터의 컬러 속성들은 플래시를 갖는 이미지 프레임을 캡처할 때 적용될 수 있다. 알 수 있는 바와 같이, 비-플래시 이미지 장면은 일반적으로 플래시를 갖고 조명되는 이미지 장면에 비해 더 좋은 컬러 속성들을 나타낸다. 그러나, 플래시의 이용은 비-플래시 이미지에 비해 (예를 들어, 낮은 광 상태들에서) 감소된 노이즈 및 향상된 휘도를 제공할 수 있다. 그러나, 플래시의 이용은 또한 플래시 이미지 내의 컬러들 중 일부가 동일한 장면의 비-플래시 이미지에 비해 어느 정도 워시 아웃(wash out)되게 보이는 결과를 초래할 수 있다. 그러므로, 일 실시예에서, 비-플래시 이미지로부터의 컬러 속성들 중 일부를 또한 부분적으로 유지하면서 플래시 이미지의 낮은 노이즈 및 휘도의 이득들을 유지하기 위해서, 디바이스(10)는 플래시 없이 제1 프레임을 분석하여 그의 컬러 속성들을 얻도록 구성될 수 있다. 그 다음, 디바이스(10)는 플래시를 이용하여 제2 프레임을 캡처할 수 있고, 비-플래시 이미지로부터의 컬러 속성들을 이용하여 플래시 이미지에 컬러 팔레트 트랜스퍼 기법(color palette transfer technique)을 적용할 수 있다.
특정 실시예들에서, 위에서 논의한 플래시/스트로브 기법들 중 임의의 것을 구현하도록 구성된 디바이스(10)는 통합형 또는 외부 이미징 디바이스들을 갖는 iPod?, iPhone?, iMac?, 또는 MacBook? 컴퓨팅 디바이스들의 모델일 수 있고, 이들 모두는 Apple Inc.로부터 입수가능하다. 또한, 이미징/카메라 애플리케이션은 또한 Apple Inc.으로부터의, Camera?, iMovie?, 또는 PhotoBooth? 애플리케이션들의 버전일 수 있다.
도 51을 계속하면, 본 기법의 실시예에 따른, ISP 프론트엔드 픽셀 프로세싱 로직(150)(도 10에서 앞서 논의함)의 더 상세한 도면이 예시된다. 도시된 바와 같이, ISP 프론트엔드 픽셀 프로세싱 로직(150)은 시간 필터(temporal filter)(650) 및 비닝 보상 필터(binning compensation filter)(652)를 포함한다. 시간 필터(650)는 입력 이미지 신호들 Sif0, Sif1, FEProcIn, 또는 사전 프로세싱된 이미지 신호들(예를 들어, 180, 184) 중 하나를 수신할 수 있고, 임의의 부가적인 프로세싱이 수행되기 전에 미가공(raw) 픽셀 데이터에 대해 동작할 수 있다. 예를 들어, 시간 필터(650)는 처음에 시간 방향으로 이미지 프레임들을 평균화함으로써 노이즈를 줄이도록 이미지 데이터를 프로세싱할 수 있다. 하기에서 더 상세히 논의되는 비닝 보상 필터(652)는 이미지 픽셀들의 고른 공간 분포(even spatial distribution)를 유지하기 위해 이미지 센서(예를 들어, 90a, 90b)로부터의 비닝된(binned) 미가공 이미지 데이터에 대해 스케일링(scaling) 및 재샘플링(re-sampling)을 적용할 수 있다.
시간 필터(650)는 모션 및 휘도 특성들에 기초하여 픽셀 적응적(pixel-adaptive)일 수 있다. 예를 들어, 픽셀 모션이 높을 때, 필터링 강도는 결과로서 생긴 프로세싱된 이미지에의 "트레일링(trailing)" 또는 "고스팅 아티팩트들(ghosting artifacts)"의 출현을 피하기 위해 감소될 수 있고, 반면, 모션이 거의 또는 전혀 검출되지 않을 때 필터링 강도는 증가될 수 있다. 또한, 필터링 강도는 또한 휘도 데이터(예를 들어, "루마(luma)")에 기초하여 조절될 수 있다. 예를 들어, 이미지 휘도가 증가함에 따라, 필터링 아티팩트들은 인간의 눈에 더욱 분명하게 될 수 있다. 따라서, 필터링 강도는 픽셀이 고레벨의 휘도를 가질 때 더 감소될 수 있다.
시간 필터링의 적용시에, 시간 필터(650)는 이전의 필터링된 또는 원래의 프레임으로부터 올 수 있는 기준 픽셀 데이터(Rin) 및 모션 히스토리 입력 데이터(Hin)를 수신할 수 있다. 이들 파라미터들을 이용하여, 시간 필터(650)는 모션 히스토리 출력 데이터(Hout) 및 필터링된 픽셀 출력(Yout)을 제공할 수 있다. 필터링된 픽셀 출력 Yout은 그 다음에 비닝 보상 필터(652)에 전달되고, 이 비닝 보상 필터는 출력 신호 FEProcOut를 생성하기 위해 필터링된 픽셀 출력 데이터 Yout에 대해 하나 이상의 스케일링 동작들을 수행하도록 구성될 수 있다. 그 다음, 프로세싱된 픽셀 데이터 FEProcOut는 위에서 논의한 바와 같이, ISP 파이프 프로세싱 로직(82)에 전달될 수 있다.
도 52를 참조하면, 제1 실시예에 따른, 도 51에 도시된 시간 필터에 의해 수행될 수 있는 시간 필터링 프로세스(654)를 도시하는 처리도가 예시된다. 시간 필터(650)는 2-탭 필터를 포함할 수 있고, 여기서 필터 계수들은 적어도 부분적으로 모션 및 휘도 데이터에 기초하여 픽셀 기초로 적응적으로 조절된다. 예를 들어, 변수 "t"가 시간적 값을 나타내는 입력 픽셀들 x(t)는 앞서 필터링된 프레임 또는 이전의 원래 프레임에서의 기준 픽셀들 r(t-1)과 비교되어 필터 계수들을 포함할 수 있는 모션 히스토리 테이블(M)(655)에서의 모션 인덱스 룩업(motion index lookup)을 생성할 수 있다. 또한, 모션 히스토리 입력 데이터 h(t-1)에 기초하여, 현재의 입력 픽셀 x(t)에 대응하는 모션 히스토리 출력 h(t)이 결정될 수 있다.
모션 히스토리 출력 h(t) 및 필터 계수 K는 모션 델타 d(j,i,t)에 기초하여 결정될 수 있고, 여기서 (j,i)는 현재의 픽셀 x(j,i,t)의 공간적 위치의 좌표들을 표현한다. 모션 델타 d(j,i,t)는 동일한 컬러의 3개의 수평적으로 나란히 배치된(horizontally collocated) 픽셀들에 대한 원래 및 기준 픽셀들 사이의 3개의 절대 델타들의 최대값을 결정함으로써 계산될 수 있다. 예를 들어, 도 53을 간단히 참조하면, 원래의 입력 픽셀들(660, 661, 및 662)에 대응하는 3개의 나란히 배치된 기준 픽셀들(657, 658, 및 659)의 공간적 위치들이 예시된다. 일 실시예에서, 모션 델타는 아래 공식을 이용하여 이들 원래 및 기준 픽셀들에 기초하여 계산될 수 있다.
Figure pat00011
모션 델타 값을 결정하기 위한 이 기법을 도시하는 흐름도가 아래 도 55에서 더 예시된다. 또한, 위의 수학식 1a에서(그리고 아래 도 55에서) 도시된 바와 같이, 모션 델타 값을 계산하기 위한 기법은 오직 모션 델타 값을 결정하기 위한 일 실시예를 제공하기 위한 것임을 이해해야 한다.
다른 실시예들에서, 동일 컬러 픽셀들(same-colored pixels)의 어레이가 모션 델타 값을 결정하기 위해 평가(evaluate)될 수 있다. 예를 들어, 수학식 1a에서 참조된 3개의 픽셀들에 부가하여, 모션 델타 값들을 결정하기 위한 일 실시예는 또한 기준 픽셀들(660, 661, 및 662) 위 2행(예를 들어, j-2; 베이어(Bayer) 패턴을 가정함) 및 그들의 대응하는 나란히 배치된 픽셀들, 그리고 기준 픽셀들(660, 661, 및 662) 아래 2행(예를 들어, j+2; 베이어 패턴을 가정함) 및 그들의 대응하는 나란히 배치된 픽셀들로부터의 동일 컬러 픽셀들 사이의 절대 델타들을 평가하는 것을 포함할 수 있다. 예를 들어, 일 실시예에서, 모션 델타 값은 다음과 같이 표현될 수 있다.
Figure pat00012
따라서, 수학식 1b에 의해 도시된 실시예에서, 모션 델타 값은 3x3 어레이(예를 들어, 상이한 컬러들의 픽셀들이 카운트(count)되는 경우 베이어 컬러 패턴들에 대해 실제로 5x5 어레이)의 중심에 위치하고 있는 현재 픽셀(661)을 갖는, 동일한 컬러의 픽셀들의 3x3 어레이 사이의 절대 델타를 비교함으로써 결정될 수 있다. 현재의 픽셀(예를 들어, 661)이 어레이의 중심에 위치하고 있는 동일 컬러 픽셀들의 임의의 적절한 2-차원 어레이(예를 들어, 동일한 행의 모든 픽셀들을 갖는 어레이들(예를 들어, 수학식 1a) 또는 동일한 열의 모든 픽셀들을 갖는 어레이들을 포함함)가 모션 델타 값을 결정하기 위해 분석될 수 있다는 것을 알아야 한다. 또한, 모션 델타 값은 (예를 들어, 수학식들 1a 및 1b에 나타난 바와 같이) 절대 델타들의 최대값으로서 결정될 수 있지만, 다른 실시예들에서, 모션 델타 값은 또한 절대 델타들의 평균 또는 중앙값(median)으로서 선택될 수 있다. 또한, 전술한 기법들은 또한 다른 타입들의 컬러 필터 어레이들(예를 들어, RGBW, CYGM 등)에도 적용될 수 있고, 베이어 패턴들로 한정되는 것으로 의도되지 않는다.
도 52를 다시 참조하면, 일단 모션 델타 값이 결정되면, 모션 테이블(M)(655)로부터 필터 계수 K를 선택하는 데 이용될 수 있는 모션 인덱스 룩업이 모션 히스토리 입력 h(t-1)을 갖는 (예를 들어, 공간적 위치 (j,i)에서의) 현재 픽셀에 대한 모션 델타 d(t)를 합산함으로써 계산될 수 있다. 예를 들어, 필터 계수 K는 다음과 같이 결정될 수 있다.
Figure pat00013
또한, 모션 히스토리 출력 h(t)은 다음의 공식을 이용하여 결정될 수 있다.
Figure pat00014
다음으로, 현재의 입력 픽셀 x(t)의 휘도를 이용하여 루마 테이블(L)(656)에서 루마 인덱스 룩업을 생성할 수 있다. 일 실시예에서, 루마 테이블은 0과 1 사이에 있을 수 있는 감쇠 인자들(attenuation factors)을 포함할 수 있고, 루마 인덱스에 기초하여 선택될 수 있다. 제2 필터 계수 K'는 다음의 수학식에 나타난 바와 같이 루마 감쇠 인자에 의해 제1 필터 계수 K를 곱함으로써 계산될 수 있다.
Figure pat00015
그 다음, K'에 대해 결정된 값은 시간적 필터(650)에 대한 필터링 계수로서 이용될 수 있다. 위에서 논의한 바와 같이, 시간적 필터(650)는 2-탭 필터일 수 있다. 또한, 시간적 필터(650)는 이전의 필터링된 프레임을 이용하는 무한 임펄스 응답(infinite impulse response; IIR) 필터로서 또는 이전의 원래 프레임을 이용하는 유한 임펄스 응답(finite impulse response; FIR) 필터로서 구성될 수 있다. 시간적 필터(650)는 다음의 공식을 이용하여 현재의 입력 픽셀 x(t), 기준 픽셀 r(t-1), 및 필터 계수 K'를 이용해서 필터링된 출력 픽셀 y(t)(Yout)을 계산할 수 있다.
Figure pat00016
위에서 논의한 바와 같이, 도 52에 도시된 시간적 필터링 프로세스(654)는 픽셀 기초로(on a pixel-by-pixel basis) 수행될 수 있다. 일 실시예에서, 동일한 모션 표 M 및 루마 표 L가 모든 컬러 성분들(예를 들어, R, G 및 B)에 대해 이용될 수 있다. 또한, 일부 실시예들은 제어 로직(84)으로부터의 제어 신호에 응답하는 것과 같이, 시간적 필터링이 바이패스될 수 있는, 바이패스 메커니즘을 제공할 수 있다. 또한, 도 57 및 58에 대해 하기에서 논의되는 바와 같이, 시간적 필터(650)의 일 실시예는 이미지 데이터의 각각의 컬러 성분에 대해 별개의 모션 및 루마 표들을 활용할 수 있다.
도 52 및 53과 관련하여 설명된 시간적 필터링 기법의 실시예는, 전술한 실시예에 따른 방법(664)을 예시하는 흐름도를 도시하는 도 54에 비추어 더 잘 이해될 수 있다. 방법(664)은, 이미지 데이터의 현재 프레임의 공간적 위치 (j,i)에 위치한 현재의 픽셀 x(t)이 시간적 필터링 시스템(654)에 의해 수신되는 단계(665)에서 시작한다. 단계(666)에서, 이미지 데이터의 이전 프레임(예를 들어, 현재 프레임 바로 앞의 이미지 프레임)으로부터의 하나 이상의 나란히 배치된 기준 픽셀들(예를 들어, r(t-1))에 적어도 부분적으로 기초하여 현재 픽셀 x(t)에 대해 모션 델타 값 d(t)이 결정된다. 단계(666)에서 모션 델타 값 d(t)을 결정하기 위한 기법이 도 55를 참조하여 하기에서 더 설명되며, 위에서 도시된 바와 같이, 수학식 1a에 따라 수행될 수 있다.
일단 단계(666)로부터의 모션 델타 값 d(t)이 취득되면, 모션 표 룩업 인덱스가 단계(667)에서 도시된 바와 같이, 이전 프레임으로부터의 공간적 위치 (j,i)에 대응하는 모션 델타 값 d(t) 및 모션 히스토리 입력 값 h(t-1)을 이용하여 결정될 수 있다. 또한, 도시되지 않았지만, 일단 모션 델타 값 d(t)이 예를 들어, 위에서 도시된 수학식 3a를 이용함으로써 알려지면, 현재 픽셀 x(t)에 대응하는 모션 히스토리 값 h(t)이 또한 단계(667)에서 결정될 수 있다. 그 후, 단계(668)에서, 단계(667)로부터의 모션 표 룩업 인덱스를 이용하여 모션 표(655)로부터 제1 필터 계수 K가 선택될 수 있다. 모션 표로부터의 모션 표 룩업 인덱스의 결정 및 제1 필터 계수 K의 선택은 위에서 도시된 바와 같이, 수학식 2a에 따라 수행될 수 있다.
다음으로, 단계(669)에서, 루마 표(656)로부터 감쇠 인자가 선택될 수 있다. 예를 들어, 루마 표(656)는 대략 0과 1 사이의 범위에 있는 감쇠 인자들을 포함할 수 있고, 감쇠 인자는 룩업 인덱스로서 현재 픽셀 x(t)의 값을 이용하여 루마 표(656)로부터 선택될 수 있다. 일단 감쇠 인자가 선택되면, 위의 수학식 4a에 도시된 바와 같이, 선택된 감쇠 인자 및 제1 필터 계수 K(단계(668)로부터)를 이용하여 제2 필터 계수 K'가 단계(670)에서 결정될 수 있다. 그 다음, 단계(671)에서, 현재 입력 픽셀 x(t)에 대응하는 시간적으로(temporally) 필터링된 출력 값 y(t)이 제2 필터 계수 K'(단계(669)로부터), 나란히 배치된 기준 픽셀 r(t-1)의 값, 및 입력 픽셀 x(t)의 값에 기초하여 결정된다. 예를 들어, 일 실시예에서, 출력 값 y(t)은 위에서 도시된 바와 같이, 수학식 5a에 따라 결정될 수 있다.
도 55를 참조하면, 방법(664)으로부터 모션 델타 값 d(t)을 결정하기 위한 단계(666)가 일 실시예에 따라 더 상세히 예시된다. 특히, 모션 델타 값 d(t)의 결정은 일반적으로 수학식 1a에 따라 위에 도시된 동작에 대응할 수 있다. 도시된 바와 같이, 단계(666)는 부-단계들(672-675)을 포함할 수 있다. 부-단계(672)에서 시작하여, 현재의 입력 픽셀 x(t)과 동일한 컬러 값을 갖는 3개의 수평적으로 인접한 픽셀들의 세트가 식별된다. 예를 들어, 도 53에 도시된 실시예에 따르면, 이미지 데이터는 베이어 이미지 데이터를 포함할 수 있고, 3개의 수평적으로 인접한 픽셀들은 현재의 입력 픽셀 x(t)(661), 현재의 입력 픽셀(661)의 왼쪽으로 동일한 컬러의 제2 픽셀(660), 및 현재의 입력 픽셀(661)의 오른쪽으로 동일한 컬러의 제3 픽셀을 포함할 수 있다.
다음으로, 부-단계(673)에서, 3개의 수평적으로 인접한 픽셀들(660, 661, 및 662)의 선택된 세트에 대응하는 이전의 프레임으로부터의 3개의 나란히 배치된 기준 픽셀들(657, 658, 및 659)이 식별된다. 선택된 픽셀들(660, 661, 및 662) 및 3개의 나란히 배치된 기준 픽셀들(657, 658, 및 659)을 이용하여, 3개의 선택된 픽셀들(660, 661, 및 662) 각각과 그들의 대응하는 나란히 배치된 기준 픽셀들(657, 658, 및 659) 각각 사이의 차이들의 절대값들이 부-단계(674)에서 결정된다. 후속하여, 부-단계(675)에서, 부-단계(674)로부터의 3개의 차이들의 최대값이 현재의 입력 픽셀 x(t)에 대한 모션 델타 값 d(t)으로서 선택된다. 위에서 논의한 바와 같이, 수학식 1a에 도시된 모션 델타 값 계산 기법을 예시하는 도 55는 오직 일 실시예를 제공하기 위한 것이다. 사실상, 위에서 논의한 바와 같이, 현재의 픽셀이 어레이에서 중심에 있는 동일 컬러 픽셀들의 임의의 적절한 2-차원 어레이를 이용하여 모션 델타 값(예를 들어, 수학식 1b)을 결정할 수 있다.
이미지 데이터에 시간적 필터링을 적용하기 위한 기법의 다른 실시예가 도 56에 더 도시된다. 예를 들어, 이미지 데이터의 상이한 컬러 성분들에 대한 신호 대 노이즈 비율이 상이할 수 있기 때문에, 모션 표(655) 및 루마 표(656)로부터 모션 및 루마 값들을 선택하기 전에 현재의 픽셀이 얻어지도록(gained), 현재의 픽셀에 이득(gain)이 적용될 수 있다. 컬러 의존적인 각각의 이득을 적용함으로써, 신호 대 노이즈 비율은 상이한 컬러 성분들 사이에 더 일관될 수 있다. 단지 예시적으로, 미가공 베이어 이미지 데이터를 이용하는 구현에서, 레드 및 블루 컬러 채널들은 일반적으로 그린(Gr 및 Gb) 컬러 채널들에 비해 더 민감할 수 있다. 따라서, 각각의 프로세싱된 픽셀에 적절한 컬러 의존적 이득을 적용함으로써, 각각의 컬러 성분 사이의 신호 대 노이즈 변동(variation)은 일반적으로 줄어들 수 있어, 자동 화이트 밸런스 이득들 후의 상이한 컬러들에 걸친 일관성뿐만 아니라, 특히, 고스팅 아티팩트들을 줄일 수 있다.
이러한 점을 유념하여, 도 56은 이러한 실시예에 따라 프론트-엔드 프로세싱 유닛(150)에 의해 수신된 이미지 데이터에 시간적 필터링을 적용하기 위한 방법(676)을 도시하는 흐름도를 제공한다. 단계(677)에서 시작하면, 이미지 데이터의 현재의 프레임의 공간적 위치 (j,i)에 위치한 현재의 픽셀 x(t)은 시간적 필터링 시스템(654)에 의해 수신된다. 단계(678)에서, 이미지 데이터의 이전의 프레임(예를 들어, 현재의 프레임 바로 앞의 이미지 프레임)으로부터의 하나 이상의 나란히 배치된 기준 픽셀들(예를 들어, r(t-1))에 적어도 부분적으로 기초하여 현재의 픽셀 x(t)에 대해 모션 델타 값 d(t)이 결정된다. 단계(678)는 도 54의 단계(666)와 유사할 수 있고, 위의 수학식 1에 표현된 연산을 활용할 수 있다.
다음으로, 단계(679)에서, 모션 델타 값 d(t), 이전의 프레임으로부터의 공간적 위치 (j,i)에 대응하는(예를 들어, 나란히 배치된 기준 픽셀 r(t-1)에 대응하는) 모션 히스토리 입력 값 h(t-1), 및 현재의 픽셀의 컬러와 연관된 이득을 이용하여 모션 표 룩업 인덱스가 결정될 수 있다. 그 후, 단계(680)에서, 제1 필터 계수 K가 단계(679)에서 결정된 모션 표 룩업 인덱스를 이용하여 모션 표(655)로부터 선택될 수 있다. 오직 예시적으로, 일 실시예에서, 필터 계수 K 및 모션 표 룩업 인덱스가 다음과 같이 결정될 수 있다.
Figure pat00017
여기서, M은 모션 표를 표현하고, gain[c]는 현재의 픽셀의 컬러와 연관된 이득에 대응한다. 또한, 도 56에 도시되지 않지만, 현재의 픽셀에 대한 모션 히스토리 출력 값 h(t)이 또한 결정될 수 있고 후속 이미지 프레임(예를 들어, 다음 프레임)의 나란히 배치된 픽셀에 시간적 필터링을 적용하는 데 이용될 수 있다는 것을 이해해야 한다. 본 실시예에서, 현재의 픽셀 x(t)에 대한 모션 히스토리 출력 h(t)은 다음의 공식을 이용하여 결정될 수 있다.
Figure pat00018
다음으로, 단계(681)에서, 현재의 픽셀 x(t)의 컬러와 연관된 이득(gain[c])에 기초하여 결정된 루마 표 룩업 인덱스를 이용하여 루마 표(656)로부터 감쇠 인자가 선택될 수 있다. 위에서 논의한 바와 같이, 루마 표에 저장된 감쇠 인자들은 대략 0 내지 1의 범위를 가질 수 있다. 그 후, 단계(682)에서, 제2 필터 계수 K'가 감쇠 인자(단계(681)로부터) 및 제1 필터 계수 K(단계(680)로부터)에 기초하여 계산될 수 있다. 오직 예시적으로, 일 실시예에서, 제2 필터 계수 K' 및 루마 표 룩업 인덱스가 다음과 같이 결정될 수 있다.
Figure pat00019
다음으로, 단계(683)에서, 현재의 입력 픽셀 x(t)에 대응하는 시간적으로 필터링된 출력 값 y(t)이 제2 필터 계수 K'(단계(682)로부터), 나란히 배치된 기준 픽셀 r(t-1)의 값, 및 입력 픽셀 x(t)의 값에 기초하여 결정된다. 예를 들어, 일 실시예에서, 출력 값 y(t)이 다음과 같이 결정될 수 있다.
Figure pat00020
도 57을 계속하면, 시간적 필터링 프로세스(384)의 다른 실시예가 도시된다. 여기서, 시간적 필터링 프로세스(384)는, 각각의 입력 픽셀에 컬러 의존적 이득(예를 들어, gain[c])을 적용하고 공유된 모션 및 루마 표들을 이용하는 대신에, 각각의 컬러 성분들에 대해 별개의 모션 및 루마 표들이 제공되는 점을 제외하고, 도 56에 논의된 실시예와 유사한 방식으로 실현될 수 있다. 예를 들어, 도 57에 도시된 바와 같이, 모션 표들(655)은 제1 컬러에 대응하는 모션 표(655a), 제2 컬러에 대응하는 모션 표(655b), 및 제n 컬러에 대응하는 모션 표(655c)를 포함할 수 있고, 여기서, n은 미가공 이미지 데이터에 존재하는 컬러들의 수에 의존한다. 유사하게, 루마 표들(656)은 제1 컬러에 대응하는 루마 표(656a), 제2 컬러에 대응하는 루마 표(656b), 및 제n 컬러에 대응하는 루마 표(656c)를 포함할 수 있다. 따라서, 미가공 이미지 데이터가 베이어 이미지 데이터인 실시예에서, 3개의 모션 및 루마 표들은 레드, 블루, 및 그린 컬러 성분들 각각에 대해 제공될 수 있다. 아래에서 논의되는 바와 같이, 필터링 계수들 K 및 감쇠 인자들의 선택은 현재의 컬러(예를 들어, 현재의 입력 픽셀의 컬러)에 대해 선택된 모션 및 루마 표에 의존할 수 있다.
컬러 의존적 모션 및 루마 표들을 이용한 시간적 필터링을 위한 다른 실시예를 예시하는 방법(685)이 도 58에 도시된다. 알 수 있는 바와 같이, 방법(685)에 의해 이용될 수 있는 다양한 계산들 및 공식들은, 도 54에 도시된 실시예와 유사할 수 있지만, 특정 모션 및 루마 표가 각각의 컬러에 대해 선택될 수 있거나, 또는 도 56에 도시된 실시예와 유사할 수 있지만, 컬러 의존적 gain[c]의 이용을 컬러 의존적 모션 및 루마 표의 선택으로 교체할 수 있다.
단계(686)에서 시작하여, 이미지 데이터의 현재의 프레임의 공간적 위치 (j,i)에 위치한 현재의 픽셀 x(t)이 시간적 필터링 시스템(684)(도 57)에 의해 수신된다. 단계(687)에서, 이미지 데이터의 이전의 프레임(예를 들어, 현재의 프레임 바로 앞의 이미지 프레임)으로부터의 하나 이상의 나란히 배치된 기준 픽셀들(예를 들어, r(t-1))에 적어도 부분적으로 기초하여 현재의 픽셀 x(t)에 대해 모션 델타 값 d(t)이 결정된다. 단계(687)는 도 54의 단계(666)와 유사할 수 있고, 위의 수학식 1에 도시된 연산을 활용할 수 있다.
다음으로, 단계(688)에서, 모션 표 룩업 인덱스가 이전의 프레임으로부터의 공간적 위치 (j,i)에 대응하는(예를 들어, 나란히 배치된 기준 픽셀 r(t-1)에 대응하는) 모션 델타 값 d(t) 및 모션 히스토리 입력 값 h(t-1)을 이용하여 결정될 수 있다. 그 후, 단계(689)에서, 제1 필터 계수 K가 현재의 입력 픽셀의 컬러에 기초하여 이용가능한 모션 표들(예를 들어, 655a, 655b, 655c) 중 하나로부터 선택될 수 있다. 예를 들어, 적절한 모션 표가 식별되면, 제1 필터 계수 K가 단계(688)에서 결정된 모션 표 룩업 인덱스를 이용하여 선택될 수 있다.
제1 필터 계수 K를 선택한 후에, 단계(690)에 도시된 바와 같이, 현재의 픽셀 x(t)의 값에 기초하여 현재의 컬러에 대응하는 루마 표가 선택되고 선택된 루마 표로부터 감쇠 인자가 선택된다. 그 후, 단계(691)에서, 제2 필터 계수 K'가 감쇠 인자(단계(690)로부터) 및 제1 필터 계수 K(단계(689)로부터)에 기초하여 결정된다. 다음으로, 단계(692)에서, 현재의 입력 픽셀 x(t)에 대응하는 시간적으로 필터링된 출력 값 y(t)이 제2 필터 계수 K'(단계(691)로부터), 나란히 배치된 기준 픽셀 r(t-1)의 값, 및 입력 픽셀 x(t)의 값에 기초하여 결정된다. 도 58에 도시된 기법은 (예를 들어, 부가적인 모션 및 루마 표들을 저장하는 데 필요한 메모리로 인해) 구현하는 데 더 비용이 많이 들 수 있지만, 일부 경우들에서, 자동 화이트 밸런스 이득들 후에 상이한 컬러들에 걸친 일관성 및 고스팅 아티팩트들과 관련하여 추가의 향상들을 제공할 수 있다.
다른 실시예들에 따르면, 시간적 필터(650)에 의해 제공된 시간적 필터링 프로세스는 입력 픽셀들에 시간적 필터링을 적용하기 위해 컬러 의존적 이득들 및 컬러 특정 모션 및/또는 루마 표들의 결합을 활용할 수 있다. 예를 들어, 하나의 이러한 실시예에서, 모든 컬러 성분에 대해 단일 모션 표가 제공될 수 있고, 모션 표로부터 제1 필터링 계수(K)를 선택하기 위한 모션 표 룩업 인덱스가 컬러 의존적 이득에 기초하여 결정될 수 있고(예를 들어, 도 56에 도시된 바와 같이, 단계들(679-680)), 루마 표 룩업 인덱스는 거기에 적용되는 컬러 의존적 이득을 갖지 않을 수 있지만, 현재의 입력 픽셀의 컬러에 따라 다수의 루마 표들 중 하나로부터 휘도 감쇠 인자를 선택하는 데 이용될 수 있다(예를 들어, 도 58에 도시된 바와 같이, 단계(690)). 대안적으로, 다른 실시예에서, 다수의 모션 표들이 제공될 수 있고, 모션 표 룩업 인덱스(적용되는 컬러 의존적 이득 없이)를 이용하여 현재의 입력 픽셀의 컬러에 대응하는 모션 표로부터 제1 필터링 계수(K)를 선택할 수 있고(예를 들어, 도 58에 도시된 바와 같이, 단계(689)), 모든 컬러 성분에 대해 단일 루마 표가 제공될 수 있고, 휘도 감쇠 인자를 선택하기 위한 루마 표 룩업 인덱스는 컬러 의존적 이득에 기초하여 결정될 수 있다(예를 들어, 도 56에 도시된 바와 같이, 단계들(681-682)). 또한, 베이어 컬러 필터 어레이가 활용되는 일 실시예에서, 하나의 모션 표 및/또는 루마 표가 레드(R) 및 블루(B) 컬러 성분들 각각에 대해 제공될 수 있고, 공통 모션 표 및/또는 루마 표가 두 그린 컬러 성분들(Gr 및 Gb)에 대해 제공될 수 있다.
시간적 필터(650)의 출력은 후속하여 비닝 보상 필터(binning compensation filter; BCF)(652)에 전송될 수 있는데, 비닝 보상 필터는 이미지 센서(들)(90a 및 90b)에 의한 비닝(binning)으로 인한 컬러 샘플들의 비-선형 배치(non-linear placement)(예를 들어, 고르지 않은 공간적 분포)를 보상하도록 이미지 픽셀들을 프로세싱하도록 구성될 수 있어, 컬러 샘플들의 선형 배치에 의존하는 ISP 파이프 로직(82)에서의 후속 이미지 프로세싱 동작들(예를 들어, 디모자이싱(demosaicing) 등)이 올바르게 동작할 수 있다. 예를 들어, 이제 도 59를 참조하면, 베이어 이미지 데이터의 풀 해상도 샘플(693)이 도시된다. 이것은 ISP 프론트-엔드 프로세싱 로직(80)에 결합된 이미지 센서(90a)(또는 90b)에 의해 캡처된 풀 해상도 샘플 미가공 이미지 데이터를 표현할 수 있다.
알 수 있는 바와 같이, 특정 이미지 캡처 상태들 하에서, 프로세싱을 위해 ISP 회로(32)에 이미지 센서(90a)에 의해 캡처된 풀 해상도 이미지 데이터를 전송하는 것은 실용적이지 않을 수 있다. 예를 들어, 비디오 데이터를 캡처할 때, 인간의 눈의 시각으로부터 유체 이동 이미지(fluid moving image)의 출현을 보존하기 위해서, 초당 적어도 대략 30 프레임들의 프레임 레이트가 요망될 수 있다. 그러나, 풀 해상도 샘플의 각각의 프레임에 포함된 픽셀 데이터의 양이 초당 30 프레임들에서 샘플링될 때 ISP 회로(32)의 프로세싱 능력들을 초과하는 경우, 비닝 보상 필터링은 신호 대 노이즈 비율을 또한 향상시키면서 이미지 신호의 해상도를 줄이기 위해 이미지 센서(90a)에 의한 비닝과 함께 적용될 수 있다. 예를 들어, 위에서 논의한 바와 같이, 2x2 비닝과 같은 다양한 비닝 기법들은 미가공 프레임(310)의 활성 영역(312)에 있는 주변 픽셀들의 값들을 평균화함으로써 "비닝된(binned)" 미가공 이미지 픽셀을 생성하기 위해 적용될 수 있다.
도 60을 참조하면, 도 61에 도시된 대응하는 비닝된 미가공 이미지 데이터(700)를 생성하기 위해 도 59의 풀 해상도 이미지 데이터(693)를 비닝하도록 구성될 수 있는 이미지 센서(90a)의 실시예가 일 실시예에 따라 예시된다. 도시된 바와 같이, 이미지 센서(90a)는 풀 해상도 미가공 이미지 데이터(693)를 캡처할 수 있다. 비닝 로직(699)은 비닝된 미가공 이미지 데이터(700)를 생성하기 위해 풀 해상도 미가공 이미지 데이터(693)에 비닝을 적용하도록 구성될 수 있고, 비닝된 미가공 이미지 데이터(700)는 위에서 논의된 바와 같이, SMIA 인터페이스 또는 임의의 다른 적절한 병렬 또는 직렬 카메라 인터페이스들일 수 있는 센서 인터페이스(94a)를 이용하여 ISP 프론트-엔드 프로세싱 로직(80)에 제공될 수 있다.
도 61에 예시된 바와 같이, 비닝 로직(699)은 풀 해상도 미가공 이미지 데이터(693)에 2x2 비닝을 적용할 수 있다. 예를 들어, 비닝된 이미지 데이터(700)와 관련하여, 픽셀들(695, 696, 697, 및 698)은 베이어 패턴을 형성할 수 있고, 풀 해상도 미가공 이미지 데이터(693)로부터 픽셀들의 값들을 평균화함으로써 결정될 수 있다. 예를 들어, 도 59 및 61을 둘다 참조하면, 비닝된 Gr 픽셀(695)은 풀 해상도 Gr 픽셀들(695a-695d)의 평균(average or mean)으로서 결정될 수 있다. 유사하게, 비닝된 R 픽셀(696)은 풀 해상도 R 픽셀들(696a-696d)의 평균으로서 결정될 수 있고, 비닝된 B 픽셀(697)은 풀 해상도 B 픽셀들(697a-697d)의 평균으로서 결정될 수 있고, 비닝된 Gb 픽셀(698)은 풀 해상도 Gb 픽셀들(698a-698d)의 평균으로서 결정될 수 있다. 따라서, 본 실시예에서, 2x2 비닝은 4개의 풀 해상도 픽셀들의 세트에 의해 형성된 정사각형의 중심에 배치된 비닝된 픽셀을 도출하기 위해 평균화되는 상부 좌측(예를 들어, 695a), 상부 우측(예를 들어, 695b), 하부 좌측(예를 들어, 695c) 및 하부 우측(예를 들어, 695d) 픽셀을 포함하는 4개의 풀 해상도 픽셀들의 세트를 제공할 수 있다. 따라서, 도 61에 도시된 비닝된 베이어 블록(694)은 도 59의 베이어 블록들(694a-694d)에 포함된 16 픽셀들을 표현하는 4개의 "수퍼픽셀들(superpixels)"을 포함한다.
공간적 해상도를 감소시키는 것에 부가하여, 비닝은 또한 이미지 신호 내의 노이즈를 감소시키는 부가된 이점을 제공한다. 예를 들어, 이미지 센서(예를 들어, 90a)가 광 신호에 노출될 때마다, 이미지와 연관된, 광자 노이즈(photon noise)와 같은 특정 양의 노이즈가 존재할 수 있다. 이 노이즈는 랜덤 또는 체계적일 수 있고, 또한 다수의 소스들로부터 나올 수 있다. 그러므로, 이미지 센서에 의해 캡처된 이미지에 포함된 정보의 양은 신호 대 노이즈 비율에 관하여 표현될 수 있다. 예를 들어, 이미지가 이미지 센서(90a)에 의해 캡처되어 ISP 회로(32)와 같은 처리 회로에 전달될 때마다, 이미지 데이터를 판독하고 전달하는 프로세스는 본질적으로 이미지 신호 내에 "판독 노이즈(read noise)"를 도입하기 때문에 픽셀 값들에 어느 정도의 노이즈가 존재할 수 있다. 이 "판독 노이즈"는 랜덤일 수 있고, 일반적으로 불가피하다. 4개의 픽셀들의 평균을 이용함으로써, 노이즈(예를 들어, 광자 노이즈)는 일반적으로 노이즈의 소스에 관계없이 감소될 수 있다.
따라서, 도 59의 풀 해상도 이미지 데이터(693)를 고려할 때, 각각의 베이어 패턴(2x2 블록)(694a-694d)은 4 픽셀들을 포함하고, 이들 각각은 신호 및 노이즈 성분을 포함한다. 예를 들어 베이어 블록(694a) 내의 각각의 픽셀이 별개로 판독되면, 4개의 신호 성분 및 4개의 노이즈 성분이 존재한다. 그러나, 4개의 픽셀들(예를 들어, 695a, 695b, 695c, 695d)이 비닝된 이미지 데이터 내의 싱글 픽셀(예를 들어, 695)에 의해 표현될 수 있도록, 도 59 및 61에 도시된 바와 같이 비닝을 적용함으로써, 풀 해상도 이미지 데이터(693) 내의 4 픽셀들에 의해 차지되는 동일한 영역은 노이즈 성분의 한 인스턴스(instance)만을 갖는 싱글 픽셀로서 판독될 수 있어, 신호 대 노이즈 비율을 향상시킬 수 있다.
또한, 본 실시예는 2x2 비닝 프로세스를 적용하도록 구성되는 것으로서 도 60의 비닝 로직(699)을 도시하지만, 비닝 로직(699)은 3x3 비닝, 수직 비닝, 수평 비닝 등과 같은 임의의 적절한 타입의 비닝 프로세스를 적용하도록 구성될 수 있다는 것을 알아야 한다. 일부 실시예들에서, 이미지 센서(90a)는 이미지 캡처 프로세스 동안 상이한 비닝 모드들 사이에 선택하도록 구성될 수 있다. 또한, 다른 실시예들에서, 이미지 센서(90a)는 또한 "스킵핑(skipping)"이라고 지칭될 수 있는 기법을 적용하도록 구성될 수 있고, 여기서, 평균 픽셀 샘플들 대신에, 로직(699)은 프로세싱을 위해 ISP 프론트-엔드(80)에 출력하기 위해 풀 해상도 데이터(693)로부터 특정 픽셀들만(예를 들어, 두 픽셀 마다(every other pixel), 세 픽셀마다, 등)을 선택한다. 또한, 오직 이미지 센서(90a)가 도 60에 도시되지만, 이미지 센서(90b)가 유사한 방식으로 구현될 수 있다는 것을 알아야 한다.
도 61에 또한 도시된 바와 같이, 비닝 프로세스의 하나의 영향은 비닝된 픽셀들의 공간적 샘플링이 동등하게 이격되지 않을 수 있다는 것이다. 이러한 공간적 왜곡은, 일부 시스템들에서, 일반적으로 바람직하지 않은 에일리어싱(aliasing)(예를 들어, 들쭉날쭉한 에지들)이 생기게 할 수 있다. 또한, ISP 파이프 로직(82)에서의 특정 이미지 프로세싱 단계들이 올바르게 동작하기 위해 컬러 샘플들의 선형 배치에 의존할 수 있기 때문에, 비닝 보상 필터(BCF)(652)는 비닝된 픽셀들의 재샘플링 및 재배치를 수행하도록 적용될 수 있어 비닝된 픽셀들은 공간적으로 고르게 분포된다. 즉, BCF(652)는 본질적으로 샘플들(예를 들어, 픽셀들)의 위치를 재샘플링함으로써 고르지 않은 공간적 분포(예를 들어, 도 61에 도시됨)를 보상한다. 예를 들어, 도 62는 BCF(652)에 의해 프로세싱된 후에 비닝된 이미지 데이터(702)의 재샘플링된 부분을 예시하고, 고르게 분포된 재샘플링된 픽셀들(704, 705, 706, 및 707)을 포함하는 베이어 블록(703)은 도 61로부터의 비닝된 이미지 데이터(700)의 비닝된 픽셀들(695, 696, 697, 및 698)에 각각 대응한다. 또한, 위에서 언급한 바와 같이, 스킵핑(예를 들어, 비닝 대신)을 활용하는 실시예에서, 도 61에 도시된 공간적 왜곡은 존재하지 않을 수 있다. 이 경우, BCF(652)는 이미지 센서(90a)에 의해 스킵핑이 이용될 때 결과적으로 생길 수 있는 아티팩트들(예를 들어, 에일리어싱)을 감소시키기 위해 로우 패스 필터로서 기능할 수 있다.
도 63은 일 실시예에 따른 비닝 보상 필터(652)의 블록도를 도시한다. BCF(652)는 도 62에 도시된 바와 같이 그것들이 공간적으로 고른 분포로 배열되도록 비닝된 픽셀들(700)을 재샘플링 및 재배치하기 위해, 수평 스케일링 로직(709) 및 수직 스케일링 로직(710)을 각각 이용하여 수평 및 수직 스케일링을 적용하도록 비닝된 픽셀들(700)을 프로세스할 수 있는 비닝 보상 로직(708)을 포함할 수 있다. 일 실시예에서, BCF(652)에 의해 수행된 스케일링 동작(들)은 수평 및 수직 멀티-탭 다상 필터링(horizontal and vertical multi-tap polyphase filtering)을 이용하여 수행될 수 있다. 예를 들어, 필터링 프로세스는 입력 소스 이미지 데이터(예를 들어, 이미지 센서(90a)에 의해 제공된 비닝된 이미지 데이터(700))로부터 적절한 픽셀들을 선택하고, 필터링 계수에 의해 선택된 픽셀들 각각을 곱하고, 결과로 생긴 값들을 합산하여 원하는 목적지에서의 출력 픽셀을 형성하는 것을 포함할 수 있다.
동일한 컬러의 중심 픽셀 및 주변의 이웃 픽셀들을 포함할 수 있는, 스케일링 동작들에 이용된 픽셀들의 선택은, 하나는 수직 스케일링을 위해 그리고 하나는 수평 스케일링을 위해 별개의 미분 분석기들(differential analyzers)(711)을 이용하여 결정될 수 있다. 도시된 실시예에서, 미분 분석기들(711)은 디지털 미분 분석기(digital differential analyzer; DDA)일 수 있고, 수직 및 수평 방향들로 스케일링 동작들 동안 현재의 출력 픽셀 위치를 제어하도록 구성될 수 있다. 본 실시예에서, 제1 DDA(711a로 지칭됨)가 수평 스케일링 동안 모든 컬러 성분을 위해 이용되고, 제2 DDA(711b로 지칭됨)가 수직 스케일링 동안 모든 컬러 성분을 위해 이용된다. 오직 예시적으로, DDA(711)는 정수 부분에 16 비트 및 분수(fraction)에 16 비트를 갖는 2의 보수 고정 소수점 수(2's-complement fixed-point number)를 포함하는 32 비트 데이터 레지스터로서 제공될 수 있다. 16 비트 정수 부분은 출력 픽셀을 위한 현재의 위치를 결정하는 데 이용될 수 있다. DDA(711)의 분수 부분은 (예를 들어, 출력 픽셀의 공간적 위치에 대응하는) 현재의 DDA 위치의 픽셀 사이 분수 위치(between-pixel fractional position)에 기초할 수 있는 현재의 인덱스 또는 위상을 결정하는 데 이용될 수 있다. 인덱스 또는 위상은 필터 계수 표들(712)의 세트로부터 계수들의 적절한 세트를 선택하는 데 이용될 수 있다. 또한, 필터링은 동일한 컬러의 픽셀들을 이용하여 컬러 성분당 행해질 수 있다. 따라서, 필터링 계수들은 현재의 DDA 위치의 위상뿐만 아니라 현재의 픽셀의 컬러에도 기초하여 선택될 수 있다. 일 실시예에서, 8개의 위상들이 각각의 입력 픽셀 사이에 존재할 수 있고, 따라서, 수직 및 수평 스케일링 성분들은 8-깊이(deep) 계수 표들을 활용할 수 있어, 16 비트 분수 부분의 고차(high-order) 3 비트들이 현재의 위상 또는 인덱스를 표현하는 데 이용된다. 따라서, 본원에서 이용되는 바와 같이, "미가공 이미지" 데이터 등의 용어는, 컬러 필터 어레이 패턴(예를 들어, 베이어)이 그것을 오버레이(overlay)하여 한 면(plane)에 복수의 컬러 성분들을 제공하는 싱글 센서에 의해 취득되는 멀티-컬러 이미지 데이터를 가리키는 것으로 이해되어야 한다. 다른 실시예에서, 별개의 DDA들이 각각의 컬러 성분을 위해 이용될 수 있다. 예를 들어, 이러한 실시예들에서, BCF(652)는 미가공 이미지 데이터로부터 R, B, Gr, 및 Gb 성분들을 추출하고 각각의 성분을 별개의 면(plane)으로서 프로세싱할 수 있다.
동작에서, 수평 및 수직 스케일링은 DDA(711)를 초기화하고, DDA(711)의 정수 및 분수 부분들을 이용하여 멀티-탭 다상 필터링을 수행하는 것을 포함할 수 있다. 개별적으로 그리고 별개의 DDA들로 수행되는 동안, 수평 및 수직 스케일링 동작들은 유사한 방식으로 실행된다. 스텝(step) 값 또는 스텝 사이즈(수평 스케일링을 위해 DDAStepX 및 수직 스케일링을 위해 DDAStepY)는 각각의 출력 픽셀이 결정된 후에 DDA 값(currDDA)이 얼마나 증분되는지를 결정하고, 멀티-탭 다상 필터링은 다음 currDDA 값을 이용하여 반복된다. 예를 들어, 스텝 값이 1보다 작으면, 이미지는 업스케일링되고(up-scaled), 스텝 값이 1보다 크면, 이미지는 다운스케일링된다(downscaled). 스텝 값이 1과 같으면, 어떠한 스케일링도 일어나지 않는다. 또한, 동일한 또는 상이한 스텝 사이즈들이 수평 및 수직 스케일링을 위해 이용될 수 있다는 것에 주목해야 한다.
출력 픽셀들은 (예를 들어, 베이어 패턴을 이용하여) 입력 픽셀들과 동일한 순서로 BCF(652)에 의해 생성된다. 본 실시예에서, 입력 픽셀들은 그들의 순서에 기초하여 짝수 또는 홀수인 것으로 분류될 수 있다. 예를 들어, 도 64를 참조하면, 입력 픽셀 위치들(행 713) 및 다양한 DDAStep 값들에 기초한 대응하는 출력 픽셀 위치들(행들 714-718)의 그래프 도면이 예시된다. 이 예에서, 도시된 행은 미가공 베이어 이미지 데이터에서 레드(R) 및 그린(Gr) 픽셀들의 행을 표현한다. 수평 필터링 목적들을 위해, 행(713)의 위치 0.0에 있는 레드 픽셀은 짝수 픽셀로 고려될 수 있고, 행(713)의 위치 1.0에 있는 그린 픽셀은 홀수 픽셀로 고려될 수 있고 등등이다. 출력 픽셀 위치들에 대해서, 짝수 및 홀수 픽셀들은 DDA(711)의 분수 부분(하위 16 비트)의 최하위 비트에 기초하여 결정될 수 있다. 예를 들어, 행(715)에 도시된 바와 같이 1.25의 DDAStep를 가정하면, 최하위 비트는 DDA의 비트 14에 대응하고, 이 비트는 0.25의 해상도를 제공한다. 따라서, DDA 위치(currDDA) 0.0에 있는 레드 출력 픽셀은 짝수 픽셀(최하위 비트, 비트 14는 0임)로 고려될 수 있고, currDDA 1.0에 있는 그린 출력 픽셀(비트 14는 1임) 등등이다. 또한, 도 64는 (DDAStepX를 이용하여) 수평 방향으로 필터링과 관련하여 논의되지만, 짝수 및 홀수 입력 및 출력 픽셀들의 결정은 (DDAStepY를 이용하여) 수직 필터링과 관련하여 동일한 방식으로 적용될 수 있다는 것을 이해해야 한다. 다른 실시예들에서, DDA(711)는 또한 (예를 들어, 원하는 출력 픽셀 위치들을 추적하기보다는) 입력 픽셀들의 위치들을 추적하는 데 이용될 수 있다. 또한, DDAStepX 및 DDAStepY는 동일한 또는 상이한 값들로 설정될 수 있다는 것을 알아야 한다. 또한, 베이어 패턴이 이용된다고 가정하면, BCF(652)에 의해 이용된 시작 픽셀은 예를 들어 활성 영역(312) 내의 코너에 어느 픽셀이 배치되는지에 따라서 Gr, Gb, R 또는 B 픽셀 중 어느 하나일 수 있다는 것에 주목해야 한다.
이러한 점을 유념하여, 짝수/홀수 입력 픽셀들은 짝수/홀수 출력 픽셀들을 각각 생성하는 데 이용된다. 짝수 및 홀수 위치 사이에 교대하는 출력 픽셀 위치를 고려하여, 필터링 목적들을 위한 중심 소스 입력 픽셀 위치(본원에서 "currPixel"이라고 함)가 (DDAStepX에 기초하여) 짝수 또는 홀수 출력 픽셀 위치들에 대해 각각 가장 근접한 짝수 또는 홀수 입력 픽셀 위치로 DDA를 라운딩(rounding)함으로써 결정된다. DDA(711a)가 정수를 표현하기 위해 16 비트 및 분수를 표현하기 위해 16 비트를 이용하도록 구성되는 실시예에서, currPixel은 아래의 수학식 6a 및 6b를 이용하여 짝수 및 홀수 currDDA 위치들에 대해 결정될 수 있다.
짝수 출력 픽셀 위치들은,
Figure pat00021
의 비트들 [31:16]에 기초하여 결정될 수 있다.
홀수 출력 픽셀 위치들은,
Figure pat00022
의 비트들 [31:16]에 기초하여 결정될 수 있다.
본질적으로, 위의 수학식들은 라운딩 연산을 제공하고, 이로써 currDDA에 의해 결정되는 바와 같은, 짝수 및 홀수 출력 픽셀 위치들은 currPixel의 선택을 위해 가장 근접한 짝수 및 홀수 입력 픽셀 위치들로 각각 라운딩된다.
또한, 현재의 인덱스 또는 위상(currIndex)은 또한 각각의 currDDA 위치에서 결정될 수 있다. 위에서 논의한 바와 같이, 인덱스 또는 위상 값들은 입력 픽셀 위치들에 대해 출력 픽셀 위치의 분수의 픽셀 사이 위치(fractional between-pixel position)를 표현한다. 예를 들어, 일 실시예에서, 8 위상들이 각각의 입력 픽셀 위치 사이에 정의될 수 있다. 예를 들어, 도 64를 다시 참조하면, 8개 인덱스 값들 0-7은 위치 0.0에 있는 제1 레드 입력 픽셀과 위치 2.0에 있는 다음 레드 입력 픽셀 사이에 제공된다. 마찬가지로, 8개 인덱스 값들 0-7은 위치 1.0에 있는 제1 그린 입력 픽셀과 위치 3.0에 있는 다음 그린 입력 픽셀 사이에 제공된다. 일 실시예에서, currIndex 값들은 짝수 및 홀수 출력 픽셀 위치들에 대해 각각 아래 수학식 7a 및 7b에 따라 결정될 수 있다.
짝수 출력 픽셀 위치들은,
Figure pat00023
의 비트들 [16:14]에 기초하여 결정될 수 있다.
홀수 출력 픽셀 위치들은,
Figure pat00024
의 비트들 [16:14]에 기초하여 결정될 수 있다.
홀수 위치들에 대해, 부가적인 1 픽셀 시프트는 DDA(711)와 관련하여 상이한 컬러 성분들 사이의 인덱스 오프셋을 고려하기 위해 홀수 출력 픽셀 위치들에 대한 계수 인덱스에 4의 오프셋을 부가하는 것과 등가이다.
일단 currPixel 및 currIndex가 특정 currDDA 위치에서 결정되었다면, 필터링 프로세스는 currPixel(선택된 중심 입력 픽셀)에 기초하여 하나 이상의 이웃하는 동일 컬러 픽셀들을 선택할 수 있다. 예시적으로, 수평 스케일링 로직(709)이 5-탭 다상 필터를 포함하고 수직 스케일링 로직(710)이 3-탭 다상 필터를 포함하는 실시예에서, 수평 방향의 currPixel의 각각의 사이드에 있는 2개의 동일 컬러 픽셀들이 수평 필터링을 위해 선택될 수 있고(예를 들어, -2, -1, 0, +1, +2), 수직 방향의 currPixel의 각각의 사이드에 있는 하나의 동일 컬러 픽셀이 수직 필터링을 위해 선택될 수 있다(예를 들어, -1, 0, +1). 또한, currIndex는 선택된 픽셀들에 적용하기 위해 필터 계수 표(712)로부터 적절한 필터링 계수들을 선택하기 위해 선택 인덱스로서 이용될 수 있다. 예를 들어, 5-탭 수평/3-탭 수직 필터링 실시예를 이용하여, 5개의 8-깊이 표들이 수평 필터링을 위해 제공될 수 있고, 3개의 8-깊이 표들이 수직 필터링을 위해 제공될 수 있다. BCF(652)의 부분으로서 예시되지만, 필터 계수 표들(712)은 특정 실시예들에서 메모리(108)와 같은, BCF(652)와 물리적으로 별개인 메모리에 저장될 수 있다는 것을 알아야 한다.
수평 및 수직 스케일링 동작들을 더 상세히 논의하기 전에, 아래 표 5는 상이한 DDAStep 값들(예를 들어, DDAStepX 또는 DDAStepY에 적용할 수 있음)을 이용하여 다양한 DDA 위치들에 기초하여 결정되는 바와 같은, currPixel 및 currIndex 값들의 예들을 도시한다.
Figure pat00025
예시를 제공하기 위해서, 1.5의 DDA 스텝 사이즈(DDAStep)가 선택되고(도 64의 행 716), 현재의 DDA 위치(currDDA)는 0에서 시작하고, 짝수 출력 픽셀 위치를 표시한다고 가정한다. currPixel을 결정하기 위해서, 수학식 6a는 아래 도시된 바와 같이 적용될 수 있다.
Figure pat00026
따라서, currDDA 위치 0.0(행 716)에서, 필터링을 위한 소스 입력 중심 픽셀은 행 713의 위치 0.0에 있는 레드 입력 픽셀에 대응한다.
짝수 currDDA 0.0에서 currIndex를 결정하기 위해서, 수학식 7a가 아래 도시된 바와 같이 적용될 수 있다.
Figure pat00027
따라서, currDDA 위치 0.0(행 716)에서, 0의 currIndex 값이 필터 계수 표(712)로부터 필터링 계수들을 선택하는 데 이용될 수 있다.
따라서, 필터링(DDAStep가 X(수평) 또는 Y(수직) 방향인지에 따라 수직 또는 수평일 수 있음)은 currDDA 0.0에서의 결정된 currPixel 및 currIndex 값들에 기초하여 적용될 수 있고, DDA(711)는 DDAStep(1.5)에 의해 증분되고, 다음 currPixel 및 currIndex 값들이 결정된다. 예를 들어, 다음 currDDA 위치 1.5(홀수 위치)에서, currPixel은 다음과 같이 수학식 6b를 이용하여 결정될 수 있다.
Figure pat00028
따라서, currDDA 위치 1.5(행 716)에서, 필터링을 위한 소스 입력 중심 픽셀은 행 713의 위치 1.0에서 그린 입력 픽셀에 대응한다.
또한, 홀수 currDDA 1.5에서의 currIndex는 아래 도시된 바와 같이 수학식 7b를 이용하여 결정될 수 있다.
Figure pat00029
따라서, currDDA 위치 1.5(행 716)에서, 2의 currIndex 값이 필터 계수 표(712)로부터 적절한 필터링 계수들을 선택하는 데 이용될 수 있다. 필터링(DDAStep가 X(수평) 또는 Y(수직) 방향인지에 따라 수직 또는 수평일 수 있음)은 따라서 이들 currPixel 및 currIndex 값들을 이용하여 적용될 수 있다.
다음으로, DDA(711)는 DDAStep(1.5)에 의해 다시 증분되어, 결과적으로 3.0의 currDDA 값이 생긴다. currDDA 3.0에 대응하는 currPixel이 아래 도시된 바와 같이 수학식 6a를 이용하여 결정될 수 있다.
Figure pat00030
따라서, currDDA 위치 3.0(행 716)에서, 필터링을 위한 소스 입력 중심 픽셀은 행 713의 위치 4.0에서 레드 입력 픽셀에 대응한다.
다음으로, 짝수 currDDA 3.0에서의 currIndex는 아래 도시된 바와 같이 수학식 7a를 이용하여 결정될 수 있다.
Figure pat00031
따라서, currDDA 위치 3.0(행 716)에서, 4의 currIndex 값이 필터 계수 표(712)로부터 적절한 필터링 계수들을 선택하는 데 이용될 수 있다. 알 수 있는 바와 같이, DDA(711)는 계속해서 각각의 출력 픽셀에 대해 DDAStep에 의해 증분될 수 있고, 필터링(DDAStep가 X(수평) 또는 Y(수직) 방향인지에 따라 수직 또는 수평일 수 있음)은 각각의 currDDA 값에 대해 결정된 currPixel 및 currIndex를 이용하여 적용될 수 있다.
위에서 논의한 바와 같이, currIndex는 선택된 픽셀들에 적용하기 위해 필터 계수 표(712)로부터 적절한 필터링 계수들을 선택하기 위해 선택 인덱스로서 이용될 수 있다. 필터링 프로세스는 중심 픽셀(currPixel) 주변의 소스 픽셀 값들을 취득하고, currIndex에 기초하여 필터 계수 표(712)로부터 선택된 적절한 필터링 계수들에 의해 선택된 픽셀들 각각을 곱하고, 결과들을 합하여 currDDA에 대응하는 위치에 있는 출력 픽셀의 값을 취득하는 것을 포함할 수 있다. 또한, 본 실시예는 5-탭 수평/3-탭 수직 필터링 실시예를 이용하여, 동일 컬러 픽셀들 사이의 8 위상들을 활용하기 때문에, 5개의 8-깊이 표들이 수평 필터링을 위해 제공될 수 있고, 3개의 8-깊이 표들이 수직 필터링을 위해 제공될 수 있다. 일 실시예에서, 계수 표 엔트리들 각각은 3 정수 비트들 및 13 분수 비트들을 갖는 16 비트 2의 보수 고정 소수점 수를 포함할 수 있다.
또한, 베이어 이미지 패턴을 가정하면, 일 실시예에서, 수직 스케일링 성분은 각각의 컬러 성분 Gr, R, B, 및 Gb에 대해 하나씩, 4개의 별개의 3-탭 다상 필터들을 포함할 수 있다. 위에서 설명한 바와 같이, 3-탭 필터들 각각은 DDA(711)를 이용하여 계수들에 대한 인덱스 및 현재의 중심 픽셀의 스텝핑(stepping)을 제어할 수 있다. 마찬가지로, 수평 스케일링 성분들은 각각의 컬러 성분 Gr, R, B, 및 Gb에 대해 하나씩, 4개의 별개의 5-탭 다상 필터들을 포함할 수 있다. 5-탭 필터들 각각은 DDA(711)를 이용하여 계수들에 대한 인덱스 및 현재의 중심 픽셀의 스텝핑(예를 들어, DDAStep를 통해)을 제어할 수 있다. 그러나, 다른 실시예들에서 수평 및 수직 스칼라들에 의해 더 적거나 더 많은 탭들이 활용될 수 있다는 것을 이해해야 한다.
바운더리 경우들에 대해서, 수평 및 수직 필터링 프로세스에서 이용된 픽셀들은 프레임 경계(예를 들어, 도 23에서 활성 영역(312)에 의해 정의된 경계)에 대한 현재의 DDA 위치(currDDA)의 관계에 의존할 수 있다. 예를 들어, 수평 필터링에서, currDDA 위치가, 중심 입력 픽셀(SrcX)의 위치 및 프레임의 폭(SrcWidth)(예를 들어, 도 23의 활성 영역(312)의 폭(322))과 비교될 때, DDA(711)가 경계에 가까워서 5-탭 필터링을 수행하기에 충분한 픽셀들이 존재하지 않는다고 표시하면, 동일 컬러 입력 경계 픽셀들이 반복될 수 있다. 예를 들어, 선택된 중심 입력 픽셀이 프레임의 좌측 에지에 있으면, 중심 픽셀은 수평 필터링을 위해 2번 반복될 수 있다. 중심 입력 픽셀이 프레임의 좌측 에지에 가까워서 하나의 픽셀만이 중심 입력 픽셀과 좌측 에지 사이에 이용가능하면, 수평 필터링 목적들을 위해, 하나의 이용가능한 픽셀은 중심 입력 픽셀의 좌측에 2개의 픽셀 값들을 제공하기 위해 복제된다(replicated). 또한, 수평 스케일링 로직(709)은 입력 픽셀들의 수(원래 및 복제 픽셀들을 포함함)가 입력 폭을 초과할 수 없도록 구성될 수 있다. 이것은 다음과 같이 표현될 수 있다.
Figure pat00032
여기서, DDAInitX는 DDA(711)의 초기 위치를 표현하고, DDAStepX는 수평 방향의 DDA 스텝 값을 표현하고, BCFOutWidth는 BCF(652)에 의해 출력된 프레임의 폭을 표현한다.
수직 필터링에 대해서, currDDA 위치가, 중심 입력 픽셀(SrcY)의 위치 및 프레임의 폭(SrcHeight)(예를 들어, 도 23의 활성 영역(312)의 폭(322))과 비교될 때, DDA(711)가 경계에 가까워서 3-탭 필터링을 수행하기에 충분한 픽셀들이 존재하지 않는다고 표시하면, 입력 경계 픽셀들이 반복될 수 있다. 또한, 수직 스케일링 로직(710)은 입력 픽셀들의 수(원래 및 복제 픽셀들을 포함함)가 입력 높이를 초과할 수 없도록 구성될 수 있다. 이것은 다음과 같이 표현될 수 있다.
Figure pat00033
여기서, DDAInitY는 DDA(711)의 초기 위치를 표현하고, DDAStepY는 수직 방향의 DDA 스텝 값을 표현하고, BCFOutHeight는 BCF(652)에 의해 출력된 프레임의 폭을 표현한다.
이제 도 65를 참조하면, 실시예에 따른 프론트-엔드 픽셀 프로세싱 유닛(150)에 의해 수신된 이미지 데이터에 비닝 보상 필터링을 적용하기 위한 방법(720)을 도시하는 흐름도가 예시된다. 도 65에 예시된 방법(720)은 수직 및 수평 스케일링 둘다에 적용할 수 있다는 것을 알 것이다. 단계(721)에서 시작하여, DDA(711)는 초기화되고, DDA 스텝 값(수평 스케일링을 위해 DDAStepX 및 수직 스케일링을 위해 DDAStepY에 대응할 수 있음)이 결정된다. 다음으로, 단계(722)에서, DDAStep에 기초하여 현재의 DDA 위치(currDDA)가 결정된다. 위에서 논의한 바와 같이, currDDA는 출력 픽셀 위치에 대응할 수 있다. currDDA를 이용하여, 방법(720)은 단계(723)에 표시된 바와 같이, currDDA에서 대응하는 출력 값을 결정하기 위해 비닝 보상 필터링에 이용될 수 있는 입력 픽셀 데이터로부터 중심 픽셀(currPixel)을 결정할 수 있다. 후속하여, 단계(724)에서, currDDA에 대응하는 인덱스(currIndex)가 입력 픽셀들(예를 들어, 도 64의 행 713)에 대한 currDDA의 분수 픽셀 사이 위치(fractional between-pixel position)에 기초하여 결정될 수 있다. 예시적으로, DDA가 16 정수 비트들 및 16 분수 비트들을 포함하는 실시예에서는, 위에서 도시된 바와 같이, currPixel은 수학식 6a 및 6b에 따라 결정될 수 있고, currIndex는 수학식 7a 및 7b에 따라 결정될 수 있다. 16 비트 정수/16 비트 분수 구성이 일 예로서 본원에서 설명되지만, DDA(711)의 다른 구성이 본 기법에 따라 활용될 수 있다는 것을 알아야 한다. 예시적으로, DDA(711)의 다른 실시예들은 12 비트 정수 부분 및 20 비트 분수 부분, 14 비트 정수 부분 및 18 비트 분수 부분, 등을 포함하도록 구성될 수 있다.
일단 currPixel 및 currIndex가 결정되면, 단계(725)에 의해 표시된 바와 같이, currPixel 주변의 동일 컬러 소스 픽셀들이 멀티-탭 필터링을 위해 선택될 수 있다. 예를 들어, 위에서 논의한 바와 같이, 일 실시예는 (예를 들어, currPixel의 각각의 사이드에서 2개의 동일 컬러 픽셀들을 선택하는) 수평 방향의 5-탭 다상 필터링을 활용할 수 있고, (예를 들어, currPixel의 각각의 사이드에서 1개의 동일 컬러 픽셀을 선택하는) 수직 방향의 3-탭 다상 필터링을 활용할 수 있다. 다음으로, 단계(726)에서, 일단 소스 픽셀들이 선택되면, 필터링 계수들은 currIndex에 기초하여 BCF(652)의 필터 계수 표(712)로부터 선택될 수 있다.
그 후, 단계(727)에서, 필터링은 currDDA에 의해 표현된 위치에 대응하는 출력 픽셀의 값을 결정하기 위해 소스 픽셀들에 적용될 수 있다. 예를 들어, 일 실시예에서, 소스 픽셀들은 그들의 각각의 필터링 계수들에 의해 곱해질 수 있고, 결과들이 합해져서 출력 픽셀 값을 얻을 수 있다. 단계(727)에서 필터링이 적용되는 방향은 DDAStep가 X(수평) 또는 Y(수직) 방향인지에 따라 수직 또는 수평일 수 있다. 마지막으로, 단계(263)에서, DDA(711)는 단계(728)에서 DDAStep에 의해 증분되고, 방법(720)은 단계(722)로 리턴함으로써, 다음 출력 픽셀 값이 본원에 논의된 비닝 보상 필터링 기법들을 이용하여 결정된다.
도 66을 참조하면, 방법(720)으로부터 currPixel을 결정하기 위한 단계(723)가 일 실시예에 따라 더 상세히 예시된다. 예를 들어, 단계(723)는 currDDA(단계(722)로부터)에 대응하는 출력 픽셀 위치가 짝수 또는 홀수인지를 결정하는 부-단계(729)를 포함할 수 있다. 위에서 논의한 바와 같이, 짝수 또는 홀수 출력 픽셀은 DDAStep에 기초한 currDDA의 최하위 비트에 기초하여 결정될 수 있다. 예를 들어, 1.25의 DDAStep가 주어지면, 최하위 비트(DDA(711)의 분수 부분의 비트 14에 대응함)가 1의 값을 가지기 때문에, 1.25의 currDDA 값이 홀수로 판정될 수 있다. 2.5의 currDDA 값에 대해서는, 비트 14는 0이고, 따라서 짝수 출력 픽셀 위치를 표시한다.
결정 로직(730)에서, currDDA에 대응하는 출력 픽셀 위치가 짝수 또는 홀수인지에 관해 결정이 이루어진다. 출력 픽셀이 짝수이면, 결정 로직(730)은 부-단계(731)를 계속하고, 여기서 위의 수학식 6a에 의해 표현되는 바와 같이, currDDA 값을 1만큼 증분하고 그 결과를 가장 가까운 짝수 입력 픽셀 위치로 라운딩함으로써 currPixel이 결정된다. 출력 픽셀이 홀수이면, 결정 로직(730)은 부-단계(732)를 계속하고, 여기서 위의 수학식 6b에 의해 표현되는 바와 같이, currDDA 값을 가장 가까운 홀수 입력 픽셀 위치로 라운딩함으로써 currPixel이 결정된다. currPixel 값은 그 다음에 위에서 논의한 바와 같이 필터링을 위한 소스 픽셀들을 선택하기 위해 방법(720)의 단계(725)에 적용될 수 있다.
또한 도 67을 참조하면, 일 실시예에 따라 방법(720)으로부터 currIndex를 결정하기 위한 단계(724)가 더 상세히 예시된다. 예를 들어, 단계(724)는 currDDA(단계(722)로부터)에 대응하는 출력 픽셀 위치가 짝수 또는 홀수인지를 결정하는 부-단계(733)를 포함할 수 있다. 이 결정은 도 66의 단계(729)와 유사한 방식으로 수행될 수 있다. 결정 로직(734)에서, currDDA에 대응하는 출력 픽셀 위치가 짝수 또는 홀수인지에 관해 결정이 이루어진다. 출력 픽셀이 짝수이면, 결정 로직(734)은 부-단계(735)를 계속하고, 여기서 1 인덱스 스텝만큼 currDDA 값을 증분하고, DDA(711)의 가장 낮은 차수(order) 정수 비트 및 가장 높은 2개의 차수 분수 비트들에 기초하여 currIndex를 결정함으로써 currIndex가 결정된다. 예를 들어, 각각의 동일 컬러 픽셀 사이에 8 위상들이 제공되고, DDA는 16 정수 비트들 및 16 분수 비트들을 포함하는 실시예에서, 1 인덱스 스텝은 0.125에 대응할 수 있고, currIndex는 0.125만큼 증분된 currDDA 값의 비트들 [16:14]에 기초하여 결정될 수 있다(예를 들어, 수학식 7a). 출력 픽셀이 홀수이면, 결정 로직(734)은 부-단계(736)로 계속되고, 여기서 1 인덱스 스텝 및 1 픽셀 시프트 만큼 currDDA 값을 증분하고, DDA(711)의 가장 낮은 차수 정수 비트 및 2개의 가장 높은 차수 분수 비트들에 기초하여 currIndex를 결정함으로써 currIndex가 결정된다. 따라서, 각각의 동일 컬러 픽셀 사이에 8 위상들이 제공되고, DDA는 16 정수 비트들 및 16 분수 비트들을 포함하는 실시예에서, 1 인덱스 스텝은 0.125에 대응할 수 있고, 1 픽셀 시프트는 1.0에 대응할 수 있고(다음 동일 컬러 픽셀까지 8 인덱스 스텝들의 한 시프트), currIndex는 1.125에 의해 증분된 currDDA 값의 비트들 [16:14]에 기초하여 결정될 수 있다(예를 들어, 수학식 7b).
본 예시된 실시예는 프론트-엔드 픽셀 프로세싱 유닛(150)의 컴포넌트로서 BCF(652)를 제공하지만, 다른 실시예들은 하기에서 더 논의되는 바와 같이, 결함 픽셀 검출/정정 로직, 이득/오프셋/보상 블록들, 노이즈 감소 로직, 렌즈 셰이딩 정정 로직, 및 디모자이싱 로직을 포함할 수 있는, ISP 파이프(82)의 미가공 이미지 데이터 프로세싱 파이프라인 내로 BCF(652)를 통합할 수 있다. 또한, 전술한 결함 픽셀 검출/정정 로직, 이득/오프셋/보상 블록들, 노이즈 감소 로직, 렌즈 셰이딩 정정 로직이 픽셀들의 선형 배치에 의존하지 않는 실시예들에서, 디모자이싱이 일반적으로 픽셀들의 고른 공간적 배치에 의존하기 때문에, 디모자이싱 전에 픽셀들의 비닝 보상 필터링 및 재배치를 수행하기 위해 BCF(652)는 디모자이싱 로직과 통합될 수 있다. 예를 들어, 일 실시예에서, BCF(652)는 센서 입력과 디모자이싱 로직 사이의 어디든 통합될 수 있고, 시간적 필터링 및/또는 결함 픽셀 검출/정정은 비닝 보상 전에 미가공 이미지 데이터에 적용된다.
위에서 논의된 바와 같이, 공간적으로 고르게 분포된 이미지 데이터(예를 들어, 도 62의 샘플(702))를 갖는 출력 FEProcOut(109)일 수 있는 BCF(652)의 출력은 부가적인 프로세싱을 위해 ISP 파이프 프로세싱 로직(82)에 전달될 수 있다. 그러나, 이러한 논의의 초점을 ISP 파이프 프로세싱 로직(82)으로 옮기기 전에, ISP 프론트-엔드 로직(80)에 구현될 수 있는 통계 프로세싱 유닛들(예를 들어, 142 및 144)에 의해 제공될 수 있는 다양한 기능들에 대한 더 상세한 설명이 먼저 제공될 것이다.
통계 프로세싱 유닛들(142 및 144)의 일반적인 설명을 다시 참조하면, 이들 유닛들은, 자동 노출, 자동 화이트 밸런스, 자동 포커스, 플리커(flicker) 검출, 블랙 레벨 보상(black level compensation), 및 렌즈 셰이딩 정정 등에 관한 통계와 같은, 미가공 이미지 신호들(Sif0 및 Sif1)을 캡처하고 제공하는 이미지 센서들에 관한 다양한 통계를 수집하도록 구성될 수 있다. 그렇게 할 때, 통계 프로세싱 유닛들(142 및 144)은 먼저 그들의 각각의 입력 신호들인 Sif0(Sensor0으로부터) 및 Sif1(Sensor1로부터)에 하나 이상의 이미지 프로세싱 동작들을 적용할 수 있다.
예를 들어, 도 68을 참조하면, Sensor0(90a)과 연관된 통계 프로세싱 유닛(142)의 더 상세한 블록도가 일 실시예에 따라 예시된다. 도시된 바와 같이, 통계 프로세싱 유닛(142)은 다음의 기능 블록들을 포함할 수 있다: 결함 픽셀 검출 및 정정 로직(738), 블랙 레벨 보상(BLC) 로직(739), 렌즈 셰이딩 정정 로직(740), 역 BLC 로직(741), 및 통계 수집 로직(742). 이들 기능 블록들 각각은 이하에서 논의될 것이다. 또한, Sensor1(90b)과 연관된 통계 프로세싱 유닛(144)은 유사한 방식으로 구현될 수 있다는 것을 이해해야 한다.
처음에, 선택 로직(146)의 출력(예를 들어, Sif0 또는 SifIn0)은 프론트-엔드 결함 픽셀 정정 로직(738)에 의해 수신된다. 알 수 있는 바와 같이, "결함 픽셀들"은 광 레벨들을 정확하게 감지하지 못하는 이미지 센서(들)(90) 내의 이미징 픽셀들을 가리키는 것으로 이해될 수 있다. 결함 픽셀들은 다수의 인자에 기인할 수 있고, "핫(hot)"(또는 누설) 픽셀들, "스턱(stuck)" 픽셀들, 및 "데드 픽셀들(dead pixels)"을 포함할 수 있다. "핫" 픽셀은 일반적으로 동일한 공간적 위치에서 동일한 양의 광이 주어질 때 비-결함 픽셀보다 더 밝게 보인다. 핫 픽셀들은 리셋 실패들(reset failures) 및/또는 높은 누설로 인해 생길 수 있다. 예를 들어, 핫 픽셀은 비-결함 픽셀들에 대한 정상 충전 누설(normal charge leakage)보다 더 높게 나타날 수 있고, 따라서 비-결함 픽셀들보다 더 밝게 보일 수 있다. 또한, "데드" 및 "스턱" 픽셀들은, 특정 결함 픽셀들이 비-결함 픽셀보다 더 어둡게 또는 더 밝게 되도록 할 수 있거나 또는 실제로 노출되는 광의 양에 상관없이 특정 값에서 결함 픽셀들이 고정되도록 할 수 있는, 제조 및/또는 조립 공정 동안 이미지 센서를 오염시키는, 먼지 또는 다른 흔적 물질들과 같은, 불순물들의 결과일 수 있다. 또한, 데드 및 스턱 픽셀들은 또한 이미지 센서의 동작 동안 발생하는 회로 고장들로부터 생길 수 있다. 예시적으로, 스턱 픽셀은 항상 온(예를 들어, 완충(fully charged))인 것으로 보일 수 있고, 따라서 더 밝게 보이는 반면, 데드 픽셀은 항상 오프인 것으로 보인다.
ISP 프론트-엔드 로직(80)의 결함 픽셀 검출 및 정정(DPDC) 로직(738)은 그것들이 통계 수집(예를 들어, 742)에서 고려되기 전에 결함 픽셀들을 정정(예를 들어, 결함 픽셀 값들을 교체)할 수 있다. 일 실시예에서, 결함 픽셀 정정은 각각의 컬러 성분(예를 들어, 베이어 패턴에 대해 R, B, Gr, 및 Gb)에 대해 독립적으로 수행된다. 일반적으로, 프론트-엔드 DPDC 로직(738)은 동적 결함 정정을 제공할 수 있고, 결함 픽셀들의 위치들은 동일한 컬러의 이웃 픽셀들을 이용하여 계산된 방향 경사도들(directional gradients)에 기초하여 자동으로 결정된다. 이해할 수 있는 바와 같이, 결함들은 주어진 시간에 결함이 있는 것으로서의 픽셀의 특징화가 이웃 픽셀들에서의 이미지 데이터에 의존할 수 있다는 의미에서 "동적"일 수 있다. 예시적으로, 항상 최대 휘도에 있는 스턱 픽셀은 스턱 픽셀의 위치가 더 밝거나 화이트 컬러들에 의해 지배되는 현재의 이미지의 영역에 있는 경우에 결함 픽셀로서 간주되지 않을 수 있다. 반대로, 스턱 픽셀이 블랙 또는 더 어두운 컬러들에 의해 지배되는 현재의 이미지의 영역에 있는 경우, 스턱 픽셀은 DPDC 로직(738)에 의한 프로세싱 동안 결함 픽셀로서 식별되고 그에 따라 정정될 수 있다.
DPDC 로직(738)은 현재의 픽셀이 픽셀-대-픽셀 방향 경사도들을 이용하여 결함이 있는지를 결정하기 위해 현재의 픽셀의 각각의 사이드에서 동일한 컬러의 하나 이상의 수평 이웃 픽셀들을 활용할 수 있다. 현재의 픽셀이 결함이 있는 것으로 식별되면, 결함 픽셀의 값은 수평 이웃 픽셀의 값과 교체될 수 있다. 예를 들어, 일 실시예에서, 미가공 프레임(310)(도 23) 바운더리 내부에 있는 동일 컬러의 5개의 수평 이웃 픽셀들이 이용되고, 여기서 5개의 수평 이웃 픽셀들은 현재의 픽셀 및 어느 한 사이드에서의 2개의 이웃 픽셀을 포함한다. 따라서, 도 69에 예시된 바와 같이, 주어진 컬러 성분 c에 대해 그리고 현재의 픽셀 P에 대해, 수평 이웃 픽셀들 P0, P1, P2 및 P3은 DPDC 로직(738)에 의해 고려될 수 있다. 그러나, 현재의 픽셀 P의 위치에 따라, 미가공 프레임(310) 외부의 픽셀들은 픽셀-대-픽셀 경사도들을 계산할 때 고려되지 않는다는 것에 주목해야 한다.
예를 들어, 도 69에 도시된 바와 같이, "좌측 에지" 경우(743)에서, 현재의 픽셀 P는 미가공 프레임(310)의 최좌측 에지에 있고, 따라서 미가공 프레임(310)의 외부의 이웃 픽셀들 P0 및 P1은 고려되지 않으므로, 픽셀들 P, P2 및 P3(N=3)만이 남는다. "좌측 에지+1" 경우(744)에서, 현재의 픽셀 P는 미가공 프레임(310)의 최좌측 에지로부터 떨어진 하나의 단위 픽셀이고, 따라서, 픽셀 P0은 고려되지 않는다. 이것은 픽셀들 P1, P, P2 및 P3(N=4)만을 남긴다. 또한, "중심" 경우(745)에서, 현재의 픽셀 P의 좌측에 있는 픽셀들 P0 및 P1과, 현재의 픽셀 P의 우측에 있는 픽셀들 P2 및 P3은 미가공 프레임(310) 바운더리 내에 있고, 따라서, 이웃 픽셀들 P0, P1, P2 및 P3(N=5) 모두가 픽셀-대-픽셀 경사도들을 계산함에 있어서 고려된다. 또한, 유사한 경우들(746 및 747)은 미가공 프레임(310)의 최우측 에지가 접근될 때 맞닥뜨릴 수 있다. 예를 들어, "우측 에지-1" 경우(746)를 고려할 때, 현재의 픽셀 P는 미가공 프레임(310)의 최우측 에지로부터 떨어진 하나의 단위 픽셀이고, 따라서, 픽셀 P3은 고려되지 않는다(N=4). 마찬가지로, "우측 에지" 경우(747)에서, 현재의 픽셀 P는 미가공 프레임(310)의 최우측 에지에 있고, 따라서, 이웃 픽셀들 P2 및 P3 둘다가 고려되지 않는다(N=3).
예시된 실시예에서, 픽처 바운더리(예를 들어, 미가공 프레임(310)) 내의 각각의 이웃 픽셀(k=0 내지 3)에 대해, 픽셀-대-픽셀 경사도들이 다음과 같이 계산될 수 있다.
Figure pat00034
일단 픽셀-대-픽셀 경사도들이 결정되었다면, 결함 픽셀 검출은 다음과 같이 DPDC 로직(738)에 의해 수행될 수 있다. 먼저, 특정 수의 그의 경사도들 Gk가 변수 dprTh에 의해 나타내어지는 특정 임계값에 있거나 그보다 아래에 있는 경우 픽셀은 결함이 있다고 가정한다. 따라서, 각각의 픽셀에 대해, 임계값 dprTh에 있거나 그보다 아래에 있는 픽처 바운더리 내부의 이웃 픽셀들에 대한 경사도들의 수의 카운트(C)가 축적된다. 예시적으로, 미가공 프레임(310) 내부의 각각의 이웃 픽셀에 대해, 임계값 dprTh에 있거나 그보다 아래에 있는 경사도들 Gk의 축적된 카운트(C)는 다음과 같이 계산될 수 있다.
Figure pat00035
알 수 있는 바와 같이, 컬러 성분들에 따라, 임계값 dprTh는 달라질 수 있다. 다음으로, 축적된 카운트 C가 변수 dprMaxC에 의해 나타내어지는 최대 카운트보다 작거나 같은 것으로 결정되면, 픽셀은 결함이 있는 것으로 고려될 수 있다. 이 로직은 아래와 같이 표현된다.
Figure pat00036
결함 픽셀들은 다수의 교체 방식을 이용하여 교체된다. 예를 들어, 일 실시예에서, 결함 픽셀이 그의 바로 좌측에 있는 픽셀 P1과 교체될 수 있다. 바운더리 상태(예를 들어, P1이 미가공 프레임(310)의 외부에 있다)에서, 결함 픽셀이 그의 바로 우측에 있는 픽셀 P2와 교체될 수 있다. 또한, 교체 값들은 연속적인 결함 픽셀 검출 동작들을 위해 유지 또는 전파(propagate)될 수 있다는 것을 이해해야 한다. 예를 들어, 도 69에 도시된 수평 픽셀들의 세트를 참조하면, P0 또는 P1이 앞서 DPDC 로직(738)에 의해 결함 픽셀들인 것으로 식별되었다면, 그들의 대응하는 교체 값들은 현재의 픽셀 P의 결함 픽셀 검출 및 교체를 위해 이용될 수 있다.
위에서 논의한 결함 픽셀 검출 및 정정 기법들을 요약하기 위해서, 이러한 프로세스를 도시한 흐름도가 도 70에 제공되고 참조 번호 748로 참조된다. 도시된 바와 같이, 프로세스(748)는 단계(749)에서 시작하고, 여기서 현재의 픽셀(P)이 수신되고 이웃 픽셀들의 세트가 식별된다. 전술한 실시예에 따르면, 이웃 픽셀들은 현재의 픽셀의 반대 사이드들로부터 동일 컬러 성분의 2개의 수평 픽셀들(예를 들어, P0, P1, P2 및 P3)을 포함할 수 있다. 다음으로, 단계(750)에서, 수평 픽셀-대-픽셀 경사도들은 위의 수학식 8에 설명된 바와 같이, 미가공 프레임(310) 내의 각각의 이웃 픽셀에 대하여 계산된다. 그 후, 단계(751)에서, 특정 임계값 dprTh보다 작거나 같은 경사도들의 수의 카운트(C)가 결정된다. 결정 로직(752)에 도시된 바와 같이, C가 dprMaxC보다 작거나 같으면, 프로세스(748)는 단계(753)를 계속하고, 현재의 픽셀은 결함이 있는 것으로서 식별된다. 결함 픽셀은 그 다음에 교체 값을 이용하여 단계(754)에서 정정된다. 또한, 결정 로직(752)을 다시 참조하면, C가 dprMaxC보다 크다면, 프로세스는 단계(755)로 계속하고, 현재의 픽셀은 결함이 있지 않은 것으로 식별되고, 그의 값은 변경되지 않는다.
ISP 프론트-엔드 통계 프로세싱 동안 적용된 결함 픽셀 검출/정정 기법들은 ISP 파이프 로직(82)에서 수행되는 결함 픽셀 검출/정정보다 덜 강건할 수 있다는 것에 주목해야 한다. 예를 들어, 하기에서 더 상세히 논의되는 바와 같이, ISP 파이프 로직(82)에서 수행되는 결함 픽셀 검출/정정은, 동적 결함 정정에 부가하여, 고정된 결함 정정을 더 제공할 수 있고, 결함 픽셀들의 위치들은 연역적으로(a priori) 알려지고 하나 이상의 결함 표들에 로드된다. 또한, 하기에서 논의되는 바와 같이, ISP 파이프 로직(82)에서의 동적 결함 정정은 또한 수평 및 수직 방향들 둘다에서 픽셀 경사도들을 고려할 수 있고, 또한 얼룩(speckling)의 검출/정정을 제공할 수 있다.
도 68로 돌아가면, DPDC 로직(738)의 출력은 그 다음에 블랙 레벨 보상(BLC) 로직(739)으로 전달된다. BLC 로직(739)은 통계 수집을 위해 이용된 픽셀들에서 각각의 컬러 성분 "c"(예를 들어, 베이어에 대해 R, B, Gr 및 Gb)에 대해 독립적으로 디지털 이득, 오프셋, 및 클리핑(clipping)을 제공할 수 있다. 예를 들어, 다음의 연산에 의해 표현되는 바와 같이, 현재의 픽셀에 대한 입력 값은 먼저 부호 있는 값에 의해 오프셋되고, 그 다음에 이득에 의해 곱해진다.
Figure pat00037
여기서, X는 주어진 컬러 성분 c(예를 들어, R, B, Gr 또는 Gb)에 대한 입력 픽셀 값을 표현하고, O[c]는 현재의 컬러 성분 c에 대한 부호 있는 16 비트 오프셋을 표현하고, G[c]는 컬러 성분 c에 대한 이득 값을 표현한다. 일 실시예에서, 이득 G[c]는 2 정수 비트들 및 14 분수 비트들을 갖는 16 비트 부호 없는 수(예를 들어, 부동 소수점 표현으로서 2.14)일 수 있고, 이득 G[c]는 반올림이 적용될 수 있다. 오직 예시적으로, 이득 G[c]는 0과 4X(예를 들어, 4 곱하기 입력 픽셀 값) 사이의 범위를 가질 수 있다.
다음으로, 아래 수학식 12에 의해 도시된 바와 같이, 부호가 있는 계산된 값 Y는 그 다음에 최소 및 최대 범위로 클리핑될 수 있다.
Figure pat00038
변수 min[c] 및 max[c]는 최소 및 최대 출력 값들 각각에 대한 부호 있는 16 비트 클리핑 값들을 표현할 수 있다. 일 실시예에서, BLC 로직(739)은 또한 컬러 성분마다, 최대 및 최소 위 및 아래로 각각 클리핑되었던 픽셀들의 수의 카운트를 유지하도록 구성될 수 있다.
후속하여, BLC 로직(739)의 출력은 렌즈 셰이딩 정정(LSC) 로직(740)에 전달된다. LSC 로직(740)은, 일반적으로 이미징 디바이스(30)의 렌즈(88)의 광학 중심으로부터의 거리에 대략 비례하는, 드롭 오프들(drop-offs)의 세기를 보상하기 위해 픽셀 기초로 적절한 이득을 적용하도록 구성될 수 있다. 알 수 있는 바와 같이, 이러한 드롭 오프들은 렌즈의 기하학적 광학(geometric optics)의 결과일 수 있다. 예시적으로, 이상적인 광학 특성들을 갖는 렌즈가, cos4 법칙으로 지칭되는, 입사각의 코사인의 4승, cos4(Θ)으로서 모델링될 수 있다. 그러나, 렌즈 제조가 완벽하지 않기 때문에, 렌즈의 다양한 불규칙들(irregularities)은 광학 특성들이 가정된 cos4 모델로부터 벗어나게 할 수 있다. 예를 들어, 렌즈의 더 얇은 에지는 보통 가장 많은 불규칙들을 나타낸다. 또한, 렌즈 셰이딩 패턴들에서의 불규칙들은 또한 컬러 어레이 필터와 완전히 정렬되지 않은 이미지 센서 내의 마이크로렌즈 어레이의 결과일 수 있다. 또한, 일부 렌즈들에서의 적외선(IR) 필터는 드롭-오프가 일루미넌트-의존적(illuminant-dependent)이도록 할 수 있고, 따라서 렌즈 셰이딩 이득들은 검출된 광 소스에 따라 적응될 수 있다.
도 71을 참조하면, 전형적인 렌즈에 대한 광 세기 대 픽셀 위치를 도시하는 3-차원 프로파일(756)이 예시된다. 도시된 바와 같이, 렌즈의 중심(757) 근처의 광 세기는 렌즈의 코너들 또는 에지들(758)을 향해 점차 드롭 오프한다. 도 71에 도시된 렌즈 셰이딩 불규칙들은 도 72에 의해 더 잘 예시될 수 있고, 도 72는 코너들 및 에지들을 향해 광 세기의 드롭 오프들을 나타내는 이미지(759)의 컬러가 있는 그림을 도시한다. 특히, 이미지의 대략 중심에서의 광 세기는 이미지의 코너들 및/또는 에지들에서의 광 세기보다 더 밝게 보인다는 것에 주목해야 한다.
본 기법들의 실시예들에 따르면, 렌즈 셰이딩 정정 이득들은 컬러 채널(예를 들어, 베이어 필터에 대해 Gr, R, B, Gb) 당 이득들의 2-차원 격자로서 특정될 수 있다. 이득 격자 포인트들은 미가공 프레임(310)(도 23) 내의 고정된 수평 및 수직 간격들에 분포될 수 있다. 도 23에서 전술한 바와 같이, 미가공 프레임(310)은 특정 이미지 프로세싱 동작을 위해 프로세싱이 수행되는 영역을 정의하는 활성 영역(312)을 포함할 수 있다. 렌즈 셰이딩 정정 동작과 관련하여, LSC 영역이라고 할 수 있는 활성 프로세싱 영역이 미가공 프레임 영역(310) 내에 정의된다. 아래에서 논의되는 바와 같이, LSC 영역은 완전히 이득 격자 바운더리들 내부에 또는 이득 격자 바운더리들에 있어야 하고, 그렇지 않으면 결과들이 정의되지 않을 수 있다.
예를 들어, 도 73을 참조하면, 미가공 프레임(310) 내에 정의될 수 있는 LSC 영역(760) 및 이득 격자(761)가 도시된다. LSC 영역(760)은 폭(762) 및 높이(763)를 가질 수 있고, 미가공 프레임(310)의 바운더리에 대해 x-오프셋(764) 및 y-오프셋(765)에 의해 정의될 수 있다. 격자 이득들(761)의 베이스(768)로부터 LSC 영역(760)의 제1 픽셀(769)까지의 격자 오프셋들(예를 들어, 격자 x-오프셋(766) 및 격자 y-오프셋(767))이 또한 제공된다. 이들 오프셋들은 주어진 컬러 성분에 대해 제1 격자 간격 내에 있을 수 있다. 수평(x-방향) 및 수직(y-방향) 격자 포인트 간격들(770 및 771)은 각각 각각의 컬러 채널에 대해 독립적으로 특정될 수 있다.
위에서 논의한 바와 같이, 베이어 컬러 필터 어레이의 사용을 가정하면, 격자 이득들의 4 컬러 채널들(R, B, Gr 및 Gb)이 정의될 수 있다. 일 실시예에서, 총 4K(4096) 격자 포인트들이 이용가능할 수 있고, 각각의 컬러 채널에 대해, 격자 이득들의 시작 위치를 위한 베이스 어드레스가 포인터를 사용하는 것에 의해서와 같이 제공될 수 있다. 또한, 수평(770) 및 수직(771) 격자 포인트 간격들이 한 컬러 면의 해상도에서 픽셀들에 대하여 정의될 수 있고, 특정 실시예들에서, 수평 및 수직 방향들에서 8, 16, 32, 64, 또는 128 등과 같은 2의 제곱 수에 의해 분리된 격자 포인트 간격들에 대해 제공될 수 있다. 알 수 있는 바와 같이, 2의 제곱을 활용함으로써, 시프트(예를 들어, 분할) 및 부가 동작들을 이용한 이득 보간의 효율적인 구현이 실현될 수 있다. 이들 파라미터들을 이용하여, 이미지 센서 크로핑(cropping) 영역이 변하고 있는 바로 그 순간에 동일한 이득 값들이 이용될 수 있다. 예를 들어, 모든 격자 이득 값들을 업데이트하는 대신에 (예를 들어, 격자 오프셋들(770 및 771)을 업데이트하는) 크로핑된 영역에 격자 포인트들을 정렬하도록 오직 몇개의 파라미터들이 업데이트될 필요가 있다. 오직 예시적으로, 이것은 디지털 주밍(zooming) 동작들 동안 크로핑이 이용될 때 유용할 수 있다. 또한, 도 73의 실시예에 도시된 이득 격자(761)는 일반적으로 동등하게 이격된 격자 포인트들을 갖는 것으로 도시되지만, 다른 실시예들에서, 격자 포인트들은 반드시 동등하게 이격될 필요는 없다는 것을 이해해야 한다. 예를 들어, 일부 실시예들에서, 격자 포인트들은 LSC 영역(760)의 중심에서 덜 집중되지만, 통상적으로 렌즈 셰이딩 왜곡이 더 분명한, LSC 영역(760)의 코너들을 향해 더 집중되도록, 격자 포인트들은 고르지 않게(예를 들어, 대수적으로) 분포될 수 있다.
현재 개시된 렌즈 셰이딩 정정 기법들에 따르면, 현재의 픽셀 위치가 LSC 영역(760)의 외부에 배치될 때, 어떠한 이득도 적용되지 않는다(예를 들어, 픽셀이 변하지 않고 전달된다). 현재의 픽셀 위치가 이득 격자 위치에 있을 때, 그 특정 격자 포인트에서의 이득 값이 이용될 수 있다. 그러나, 현재의 픽셀 위치가 격자 포인트들 사이에 있을 때, 이득은 이중 선형 보간(bi-linear interpolation)을 이용하여 보간될 수 있다. 도 74에서 픽셀 위치 "G"에 대한 이득을 보간하는 예가 아래에 제공된다.
도 74에 도시된 바와 같이, 픽셀 G는 현재의 픽셀 위치 G에 대해, 상부 좌측, 상부 우측, 하부 좌측, 및 하부 우측 이득들에 각각 대응할 수 있는 격자 포인트들 G0, G1, G2, 및 G3 사이에 있다. 격자 간격의 수평 및 수직 크기는 X 및 Y에 의해 각각 표현된다. 또한, ii 및 jj는 상부 좌측 이득의 위치 G0에 대해, 수평 및 수직 픽셀 오프셋들을 각각 표현한다. 이들 인자들에 기초하여, 위치 G에 대응하는 이득은 그에 따라 다음과 같이 보간될 수 있다.
Figure pat00039
위의 수학식 13a에서 항들은 그 다음에 다음의 표현식을 얻기 위해 결합될 수 있다.
Figure pat00040
일 실시예에서, 보간법은 각각의 픽셀에서 승수를 이용하는 대신에, 증분적으로 수행될 수 있고, 따라서 계산 복잡도를 줄인다. 예를 들어, 항 (ii)(jj)는 이득 격자(761)의 위치 (0, 0)에서 0으로 초기화되고 현재의 열 번호가 픽셀에 의해 증가할 때마다 현재의 행 번호에 의해 증분될 수 있는 덧셈기를 이용하여 실현될 수 있다. 위에서 논의한 바와 같이, X 및 Y의 값들은 2 제곱으로서 선택될 수 있기 때문에, 이득 보간은 간단한 시프트 연산들을 이용하여 실현될 수 있다. 따라서, 승수는 오직 격자 포인트 G0에서(모든 픽셀에서 대신에) 필요하고, 오직 덧셈 연산들이 남아있는 픽셀들에 대한 보간된 이득을 결정하기 위해 필요하다.
특정 실시예들에서, 격자 포인트들 사이의 이득들의 보간은 14 비트 정밀도를 이용할 수 있고, 격자 이득들은 2 정수 비트들 및 8 분수 비트들을 갖는 부호 없는 10 비트 값들(예를 들어, 2.8 부동 소수점 표현)일 수 있다. 이러한 방식을 이용하여, 이득은 0과 4X 사이의 범위를 가질 수 있고, 격자 포인트들 사이의 이득 해상도는 1/256일 수 있다.
렌즈 셰이딩 정정 기법들은 도 75에 도시된 프로세스(772)에 의해 더 예시될 수 있다. 도시된 바와 같이, 프로세스(772)는 단계(773)에서 시작하고, 여기서 현재의 픽셀의 위치는 도 73의 LSC 영역(760)의 바운더리들에 대해 결정된다. 다음으로, 결정 로직(774)은 현재의 픽셀 위치가 LSC 영역(760) 내에 있는지를 결정한다. 현재의 픽셀 위치가 LSC 영역(760)의 외부에 있는 경우, 프로세스(772)는 단계(775)를 계속하고, 어떠한 이득도 현재의 픽셀에 적용되지 않는다(예를 들어, 픽셀은 변하지 않고 전달한다).
현재의 픽셀 위치가 LSC 영역(760) 내에 있는 경우, 프로세스(772)는 결정 로직(776)으로 계속하고, 여기서 현재의 픽셀 위치가 이득 격자(761) 내의 격자 포인트에 대응하는지가 더 결정된다. 단계(777)에 도시된 바와 같이, 현재의 픽셀 위치가 격자 포인트에 대응하면, 그 격자 포인트에서의 이득 값이 선택되고 현재의 픽셀에 적용된다. 현재의 픽셀 위치가 격자 포인트에 대응하지 않으면, 프로세스(772)는 단계(778)로 계속하고, 경계 격자 포인트들(예를 들어, 도 74의 G0, G1, G2, 및 G3)에 기초하여 이득이 보간된다. 예를 들어, 보간된 이득이 위에서 논의한 바와 같이, 수학식 13a 및 13b에 따라 계산될 수 있다. 그 후, 프로세스(772)는 단계(779)에서 종료하고, 여기서는 단계(778)로부터의 보간된 이득이 현재의 픽셀에 적용된다.
알 수 있는 바와 같이, 프로세스(772)는 이미지 데이터의 각각의 픽셀에 대해 반복될 수 있다. 예를 들어, 도 76에 도시된 바와 같이, LSC 영역(예를 들어, 760) 내의 각각의 픽셀 위치에 적용될 수 있는 이득들을 도시하는 3-차원 프로파일이 예시된다. 도시된 바와 같이, 이미지의 코너들(780)에 적용된 이득은 일반적으로 도 71 및 72에 도시된 바와 같이 코너들에서 광 세기의 드롭 오프가 더 크기 때문에 이미지의 중심(781)에 적용된 이득보다 더 클 수 있다. 현재 설명된 렌즈 셰이딩 정정 기법들을 이용하여, 이미지에서의 광 세기 드롭 오프들의 출현은 감소 또는 실질적으로 제거될 수 있다. 예를 들어, 도 77은 렌즈 셰이딩 정정이 적용된 후에 도 72로부터의 이미지(759)의 컬러 있는 도면이 어떻게 나타날 수 있는지의 예를 제공한다. 도시된 바와 같이, 도 72로부터의 원래의 이미지에 비해, 전체 광 세기는 일반적으로 이미지에 걸쳐서 더 균일하다. 특히, 이미지의 대략 중심에서의 광 세기는 이미지의 코너들 및/또는 에지들에서의 광 세기 값들과 실질적으로 동등할 수 있다. 또한, 위에서 언급한 바와 같이, 보간된 이득 계산(수학식 13a 및 13b)은, 일부 실시예들에서, 순차적 열 및 행 증분 구조를 이용함으로써 격자 포인트들 사이에 첨가되는 "델타"와 교체될 수 있다. 알 수 있는 바와 같이, 이것은 계산 복잡도를 줄인다.
추가 실시예들에서, 격자 이득들을 이용하는 것에 부가하여, 이미지 중심으로부터의 거리의 함수로서 스케일링되는 컬러 성분 당 글로벌 이득(global gain)이 이용된다. 이미지의 중심은 입력 파라미터로서 제공될 수 있고, 균일하게 일루미네이트된 이미지에서 각각의 이미지 픽셀의 광 세기 진폭을 분석함으로써 추정될 수 있다. 식별된 중심 픽셀과 현재의 픽셀 사이의 래디얼 거리(radial distance)는 그 다음에 아래에 도시된 바와 같이 선형으로 스케일링된 래디얼 이득 Gr을 얻는 데 이용될 수 있다.
Figure pat00041
여기서, Gp[c]는 각각의 컬러 성분 c(예를 들어, 베이어 패턴에 대해 R, B, Gr 및 Gb 성분들)에 대한 글로벌 이득 파라미터를 표현하고, R은 중심 픽셀과 현재의 픽셀 사이의 래디얼 거리를 표현한다.
위에서 논의한 LSC 영역(760)을 도시하는 도 78을 참조하면, 거리 R은 몇몇 기법들을 이용하여 계산 또는 추정될 수 있다. 도시된 바와 같이, 이미지 중심에 대응하는 픽셀 C는 좌표들 (x0, y0)을 가질 수 있고, 현재의 픽셀 G는 좌표들 (xG, yG)을 가질 수 있다. 일 실시예에서, LSC 로직(740)은 다음의 수학식을 이용하여 거리 R을 계산할 수 있다.
Figure pat00042
다른 실시예에서, 아래 도시된 더 간단한 추정 공식을 활용하여 R에 대한 추정값을 얻을 수 있다.
Figure pat00043
수학식 16에서, 추정 계수들 α 및 β는 8 비트 값들로 스케일링될 수 있다. 오직 예시적으로, 일 실시예에서, R에 대한 추정값을 제공하기 위해서 α는 대략 123/128과 동등할 수 있고, β는 대략 51/128과 동등할 수 있다. 이들 계수 값들을 이용하면, 가장 큰 에러는 대략 4%일 수 있고, 중간 에러는 대략 1.3%일 수 있다. 따라서, 추정 기법이 R을 결정함에 있어서 계산 기법(수학식 15)을 활용하는 것보다 어느 정도 덜 정확할 수 있더라도, 에러의 마진은 추정값들 또는 R이 본 렌즈 셰이딩 정정 기법들에 대한 래디얼 이득 성분들을 결정하는 데 적합하도록 충분히 낮다.
래디얼 이득 Gr은 그 다음에 현재의 픽셀에 적용될 수 있는 총 이득을 결정하기 위해서 현재의 픽셀에 대해 보간된 격자 이득값 G(수학식 13a 및 13b)에 의해 곱해질 수 있다. 출력 픽셀 Y는 아래 도시된 바와 같이, 총 이득과 입력 픽셀 값 X를 곱함으로써 얻어진다.
Figure pat00044
따라서, 본 기법에 따르면, 렌즈 셰이딩 정정은 보간된 이득만을 이용하여, 보간된 이득 및 래디얼 이득 성분들을 둘다 이용하여 수행될 수 있다. 대안적으로, 렌즈 셰이딩 정정은 또한 래디얼 근사치 에러들을 보상하는 래디얼 격자 표와 결합하여 래디얼 이득만을 이용하여 실현될 수 있다. 예를 들어, 도 73에 도시된 바와 같이, 직사각형 이득 격자(761) 대신에, 래디얼 및 각(angular) 방향들로 이득들을 정의하는 복수의 격자 포인트들을 갖는 래디얼 이득 격자가 제공될 수 있다. 따라서, LSC 영역(760) 내의 래디얼 격자 포인트들 중 하나와 정렬하지 않는 픽셀에 적용하기 위한 이득을 결정할 때, 적절한 보간된 렌즈 셰이딩 이득을 결정하기 위해 픽셀을 둘러싸는 4개의 격자 포인트를 이용하여 보간이 적용될 수 있다.
도 79를 참조하면, 렌즈 셰이딩 정정에서 보간된 및 래디얼 이득 성분들의 이용이 프로세스(782)에 의해 예시된다. 프로세스(782)는 도 75에서 전술한 프로세스(772)와 유사한 단계들을 포함할 수 있다. 따라서, 이러한 단계들은 동일한 참조 번호들로 번호가 붙여졌다. 단계(773)에서 시작하여, 현재의 픽셀이 수신되고 LSC 영역(760)에 대한 그의 위치가 결정된다. 다음으로, 결정 로직(774)은 현재의 픽셀 위치가 LSC 영역(760) 내에 있는지를 결정한다. 현재의 픽셀 위치가 LSC 영역(760)의 외부에 있는 경우, 프로세스(782)는 단계(775)를 계속하고, 어떠한 이득도 현재의 픽셀에 적용되지 않는다(예를 들어, 픽셀은 변하지 않고 전달한다). 현재의 픽셀 위치가 LSC 영역(760) 내에 있는 경우, 프로세스(782)는 동시에 단계(783) 및 결정 로직(776)으로 계속할 수 있다. 먼저, 단계(783)를 참조하면, 이미지의 중심을 식별하는 데이터가 검색된다. 위에서 논의한 바와 같이, 이미지의 중심을 결정하는 것은, 균일한 일루미네이션 하에서 픽셀들에 대한 광 세기 진폭들을 분석하는 것을 포함할 수 있다. 이것은 예를 들어, 캘리브레이션 동안 일어날 수 있다. 따라서, 단계(783)는 반드시 각각의 픽셀을 프로세싱하기 위해 이미지의 중심을 반복하여 계산하는 것을 포함할 필요가 없지만, 앞서 결정된 이미지 중심의 데이터(예를 들어, 좌표들)를 검색하는 것을 참조할 수 있다는 것을 이해해야 한다. 일단 이미지의 중심이 식별되면, 프로세스(782)는 단계(784)로 계속할 수 있고, 여기서 이미지 중심과 현재의 픽셀 위치 사이의 거리(R)가 결정된다. 위에서 논의한 바와 같이, R의 값은 계산되거나(수학식 15) 또는 추정될 수 있다(수학식 16). 그 다음, 단계(785)에서, 래디얼 이득 성분 Gr이 현재의 픽셀의 컬러 성분에 대응하는 글로벌 이득 파라미터 및 거리 R를 이용하여 계산될 수 있다(수학식 14). 래디얼 이득 성분 Gr은 아래 단계(787)에서 논의되는 바와 같이 총 이득을 결정하는 데 이용될 수 있다.
결정 로직(776)을 다시 참조하면, 현재의 픽셀 위치가 이득 격자(761) 내의 격자 포인트에 대응하는지가 결정된다. 단계(786)에 도시된 바와 같이, 현재의 픽셀 위치가 격자 포인트에 대응하면, 그 격자 포인트에서의 이득 값이 결정된다. 현재의 픽셀 위치가 격자 포인트에 대응하지 않으면, 프로세스(782)는 단계(778)로 계속하고, 경계 격자 포인트들(예를 들어, 도 74의 GO, G1, G2, 및 G3)에 기초하여 보간된 이득이 계산된다. 예를 들어, 보간된 이득이 위에서 논의한 바와 같이, 수학식 13a 및 13b에 따라 계산될 수 있다. 다음으로, 단계(787)에서, 단계(785)에서 결정된 래디얼 이득뿐만 아니라, 격자 이득들(단계(786)) 중 하나 또는 보간된 이득(778)에 기초하여 총 이득이 결정된다. 알 수 있는 바와 같이, 이것은 프로세스(782) 동안 결정 로직(776)이 취한 브랜치에 의존할 수 있다. 그 다음에, 단계(788)에 도시된 바와 같이, 총 이득은 현재의 픽셀에 적용된다. 또한, 프로세스(772)와 마찬가지로, 프로세스(782)는 또한 이미지 데이터의 각각의 픽셀에 대해 반복될 수 있다는 것에 주목해야 한다.
격자 이득들과 함께 래디얼 이득을 이용함으로써 다양한 이점들이 제공될 수 있다. 예를 들어, 래디얼 이득을 이용함으로써 모든 컬러 성분에 대해 단일의 공통 이득 격자를 이용할 수 있다. 이것은 각각의 컬러 성분에 대해 별개의 이득 격자들을 저장하는 데 요구되는 총 저장 공간을 크게 줄일 수 있다. 예를 들어, 베이어 이미지 센서에서, R, B, Gr 및 Gb 성분들 각각에 대해 단일 이득 격자를 이용함으로써 이득 격자 데이터를 대략 75% 줄일 수 있다. 알 수 있는 바와 같이, 격자 이득 데이터 표들은 이미지 프로세싱 하드웨어에서의 메모리 또는 칩 영역의 상당 부분을 차지할 수 있기 때문에, 격자 이득 데이터의 이러한 감소는 구현 비용을 감소시킬 수 있다. 또한, 하드웨어 구현에 따라, 단일 세트의 이득 격자 값들을 이용함으로써 전체 칩 영역의 감소(예를 들어, 이득 격자 값들이 온-칩 메모리에 저장될 때와 같이) 및 메모리 대역폭 요건들의 감소(예를 들어, 이득 격자 값들이 오프-칩 외부 메모리에 저장될 때와 같이)와 같은 다른 이점들이 제공될 수 있다.
도 68에 도시된 렌즈 셰이딩 정정 로직(740)의 기능에 대해 철저히 설명하였고, LSC 로직(740)의 출력은 후속하여 역 블랙 레벨 보상(inverse black level compensation; IBLC) 로직(741)에 전달된다. IBLC 로직(741)은 각각의 컬러 성분(예를 들어, R, B, Gr, 및 Gb)에 대해 독립적으로 이득, 오프셋 및 클립을 제공하며, 일반적으로 BLC 로직(739)에 대해 역 기능을 수행한다. 예를 들어, 다음 연산에 의해 도시된 바와 같이, 입력 픽셀의 값은 먼저 이득에 의해 곱해지고 그 다음에 부호 있는 값에 의해 오프셋된다.
Figure pat00045
여기서, X는 주어진 컬러 성분 c(예를 들어, R, B, Gr, 또는 Gb)에 대한 입력 픽셀 값을 표현하고, O[c]는 현재의 컬러 성분 c에 대한 부호 있는 16 비트 오프셋을 표현하고, G[c]는 컬러 성분 c에 대한 이득 값을 표현한다. 일 실시예에서, 이득 G[c]는 대략 0과 4X(4 곱하기 입력 픽셀 값 X) 사이의 범위를 가질 수 있다. 이들 변수들은 수학식 11에서 위에서 논의한 동일한 변수들일 수 있다는 것에 주목해야 한다. 계산된 값 Y는 예를 들어 수학식 12를 이용하여 최소 및 최대 범위로 클리핑될 수 있다. 일 실시예에서, IBLC 로직(741)은 컬러 성분당, 최대 및 최소 위 및 아래로 각각 클리핑된 픽셀들의 수의 카운트를 유지하도록 구성될 수 있다.
그 후, IBLC 로직(741)의 출력은 통계 수집 블록(742)에 의해 수신되고, 통계 수집 블록(742)은 자동 노출(AE), 자동 화이트 밸런스(AWB), 자동 포커스(AF), 플리커 검출 등에 관한 것들과 같은, 이미지 센서(들)(90)에 관한 다양한 통계 데이터 포인트들의 수집을 제공할 수 있다. 이러한 점을 유념하여, 통계 수집 블록(742) 및 그에 관련된 다양한 양태들에 관한 특정 실시예들의 설명이 도 80 내지 97과 관련하여 하기에 제공된다.
알 수 있는 바와 같이, AWB, AE, 및 AF 통계는 디지털 스틸 카메라뿐만 아니라 비디오 카메라들에서 이미지들의 취득에 이용될 수 있다. 간단함을 위해, AWB, AE, 및 AF 통계는 총괄하여 "3A 통계"라고 지칭될 수 있다. 도 68에 예시된 ISP 프론트-엔드 로직의 실시예에서, 통계 수집 로직(742)("3A 통계 로직")에 대한 아키텍처는 하드웨어, 소프트웨어, 또는 그의 조합으로 구현될 수 있다. 또한, 제어 소프트웨어 또는 펌웨어가 3A 통계 로직(742)에 의해 수집된 통계 데이터를 분석하고 렌즈(예를 들어, 초점 길이), 센서(예를 들어, 아날로그 이득들, 인티그레이션 시간들), 및 ISP 파이프라인(82)(예를 들어, 디지털 이득들, 컬러 정정 매트릭스 계수들)의 다양한 파라미터들을 제어하는 데 활용될 수 있다. 특정 실시예들에서, 이미지 처리 회로(32)는 제어 소프트웨어 또는 펌웨어가 다양한 AWB, AE, 및 AF 알고리즘들을 구현할 수 있도록 통계 수집의 유연성을 제공하도록 구성될 수 있다.
화이트 밸런싱(AWB)과 관련하여, 각각의 픽셀에서의 이미지 센서 응답은 이미지 장면에서의 물체들로부터 광 소스가 반사되기 때문에 일루미네이션 소스에 의존할 수 있다. 따라서, 이미지 장면에 기록된 각각의 픽셀 값은 광 소스의 컬러 온도에 관련된다. 예를 들어, 도 79는 YCbCr 컬러 공간에 대한 낮은 컬러 및 높은 컬러 온도들 하에서 화이트 영역들의 컬러 범위를 예시하는 그래프(789)를 도시한다. 도시된 바와 같이, YCbCr 컬러 공간에서 그래프(789)의 x-축은 블루 차이 크로마(blue-difference chroma)(Cb)를 표현하고, 그래프(789)의 y-축은 레드 차이 크로마(red-difference chroma)(Cr)를 표현한다. 그래프(789)는 또한 낮은 컬러 온도 축(790) 및 높은 컬러 온도 축(791)을 도시한다. 축들(790 및 791)이 배치되는 영역(792)은 YCbCr 컬러 공간에서 낮은 및 높은 컬러 온도들 하의 화이트 영역들의 컬러 범위를 표현한다. 그러나, YCbCr 컬러 공간은 단순히 본 실시예에서 자동 화이트 밸런스 프로세싱과 함께 이용될 수 있는 컬러 공간의 일 예임을 이해해야 한다. 다른 실시예들은 임의의 적절한 컬러 공간을 활용할 수 있다. 예를 들어, 특정 실시예들에서, 다른 적절한 컬러 공간은 Lab(CIELab) 컬러 공간(예를 들어, CIE 1976에 기초함), 레드/블루 정규화(normalized) 컬러 공간(예를 들어, R/(R+2G+B) 및 B/(R+2G+B) 컬러 공간; R/G 및 B/G 컬러 공간; Cb/Y 및 Cr/Y 컬러 공간 등)을 포함할 수 있다. 따라서, 본 개시의 목적들을 위해, 3A 통계 로직(742)에 의해 이용된 컬러 공간의 축들은 C1 및 C2(도 80에서 그러하듯이)로 참조될 수 있다.
낮은 컬러 온도 하에서 화이트 물체가 일루미네이트될 때, 그것은 캡처된 이미지에서 불그스름하게 나타날 수 있다. 반대로, 높은 컬러 온도 하에서 일루미네이트되는 화이트 물체는 캡처된 이미지에서 푸르스름하게 나타날 수 있다. 따라서, 화이트 밸런싱의 목적은, 이미지가 표준이 되는 광(canonical light) 하에서 찍힌 것처럼 인간의 눈에 나타나도록 RGB 값들을 조절하는 것이다. 따라서, 화이트 밸런스에 관한 이미징 통계의 문맥에서, 화이트 물체들에 관한 컬러 정보는 광 소스의 컬러 온도를 결정하기 위해 수집된다. 일반적으로, 화이트 밸런스 알고리즘들은 2개의 메인 단계를 포함할 수 있다. 첫째, 광 소스의 컬러 온도가 추정된다. 둘째, 추정된 컬러 온도를 이용하여 컬러 이득 값들을 조절하고 및/또는 컬러 정정 매트릭스의 계수들을 결정/조절한다. 이러한 이득들은 ISP 디지털 이득뿐만 아니라, 아날로그 및 디지털 이미지 센서 이득들의 결합일 수 있다.
예를 들어, 일부 실시예들에서, 이미징 디바이스(30)는 다수의 상이한 기준 일루미넌트들을 이용하여 캘리브레이션될 수 있다. 따라서, 현재의 장면의 화이트 포인트는 현재의 장면의 일루미넌트와 가장 가깝게 매칭되는 기준 일루미넌트에 대응하는 컬러 정정 계수들을 선택함으로써 결정될 수 있다. 오직 예시적으로, 일 실시예는 5개의 기준 일루미넌트인, 낮은 컬러 온도 일루미넌트, 중-저(middle-low) 컬러 온도 일루미넌트, 중간 컬러 온도 일루미넌트, 중-고(middle-high) 컬러 온도 일루미넌트, 높은 컬러 온도 일루미넌트를 이용하여 이미징 디바이스(30)를 캘리브레이션할 수 있다. 도 81에 도시된 바와 같이, 일 실시예는 다음의 컬러 정정 프로파일들을 이용하여 화이트 밸런스 이득들을 정의할 수 있다: Horizon (H)(대략 2300 도의 컬러 온도를 시뮬레이트함), Incandescent (A 또는 IncA)(대략 2856 도의 컬러 온도를 시뮬레이트함), D50(대략 5000 도의 컬러 온도를 시뮬레이트함), D65(대략 6500 도의 컬러 온도를 시뮬레이트함), 및 D75(대략 7500 도의 컬러 온도를 시뮬레이트함).
현재의 장면의 일루미넌트에 따라, 화이트 밸런스 이득들은 현재의 일루미넌트와 가장 가깝게 매칭되는 기준 일루미넌트에 대응하는 이득들을 이용하여 결정될 수 있다. 예를 들어, 통계 로직(742)(하기 도 82에서 더 상세히 설명됨)이 현재의 일루미넌트가 기준 중간 컬러 온도 일루미넌트 D50과 대략 매칭된다고 결정하면, 대략 1.37 및 1.23의 화이트 밸런스 이득들이 각각 레드 및 블루 컬러 채널들에 적용될 수 있고, 그린 채널들(베이어 데이터에 대해 G0 및 G1)에 대략 이득 없음(1.0)이 적용된다. 일부 실시예들에서, 현재의 일루미넌트 컬러 온도가 2개의 기준 일루미넌트들 사이에 있는 경우, 화이트 밸런스 이득들은 2개의 기준 일루미넌트들 사이에 화이트 밸런스 이득들을 보간하는 것을 통해 결정될 수 있다. 또한, 본 예시는 H, A, D50, D65, 및 D75 일루미넌트들을 이용하여 캘리브레이션되는 이미징 디바이스를 도시하고 있지만, TL84 또는 CWF(형광 기준 일루미넌트들) 등과 같은 임의의 적절한 타입의 일루미넌트가 카메라 캘리브레이션을 위해 이용될 수 있다는 것을 이해해야 한다.
하기에서 더 논의되는 바와 같이, 복수의 프로그램가능한 컬러 범위들을 제공하기 위해 RGB 또는 YCC 합들, 및 2-차원(2D) 컬러 히스토그램을 포함하는 AWB를 위해 몇몇 통계가 제공될 수 있다. 예를 들어, 일 실시예에서, 통계 로직(742)은 복수의 픽셀 필터들의 세트를 제공할 수 있고, 복수의 픽셀 필터들의 서브세트가 AWB 프로세싱을 위해 선택될 수 있다. 일 실시예에서, 각각 상이한 구성가능 파라미터들을 가지는 8개의 필터 세트가 제공될 수 있고, 3개의 컬러 범위 필터 세트가 타일 통계들을 모으기 위해서뿐만 아니라, 각각의 부상 윈도(floating window)에 대한 통계를 모으기 위해서 그 세트로부터 선택될 수 있다. 예시적으로, 제1 선택된 필터가 정확한 컬러 추정을 획득하기 위해 현재의 컬러 온도를 커버하도록 구성될 수 있고, 제2 선택된 필터가 낮은 컬러 온도 영역들을 커버하도록 구성될 수 있고, 제3 선택된 필터가 높은 컬러 온도 영역들을 커버하도록 구성될 수 있다. 이러한 특정 구성은 AWB 알고리즘이 광 소스가 변할 때 현재의 컬러 온도 영역을 조절할 수 있게 할 수 있다. 또한, 2D 컬러 히스토그램은 RGB 값들을 축적하기 위한 다양한 픽셀 필터 임계값들을 결정하기 위해 그리고 글로벌 및 로컬 일루미넌트들을 결정하기 위해 활용될 수 있다. 또한, 3개의 픽셀 필터들의 선택은 단지 일 실시예를 예시하기 위한 것임을 이해해야 한다. 다른 실시예들에서, 더 적거나 더 많은 픽셀 필터들이 AWB 통계를 위해 선택될 수 있다.
또한, 3개의 픽셀 필터들을 선택하는 것에 부가하여, 하나의 부가적인 픽셀 필터가 또한 일반적으로 캡처된 이미지의 일루미넌스를 제어하기 위해 픽셀 인티그레이션 시간 및 이득들을 조절하는 프로세스를 가리키는 자동 노출(AE)을 위해 이용될 수 있다. 예를 들어, 자동 노출은 인티그레이션 시간을 설정함으로써 이미지 센서(들)에 의해 캡처되는 장면으로부터 광의 양을 제어할 수 있다. 특정 실시예들에서, 일루미넌스 통계의 타일들 및 부상 윈도들은 3A 통계 로직(742)을 통해 수집되고 처리되어 인티그레이션 및 이득 제어 파라미터들을 결정할 수 있다.
또한, 자동 포커스는 이미지의 초점을 실질적으로 최적화하기 위해서 렌즈의 최적 초점 길이를 결정하는 것을 가리킬 수 있다. 특정 실시예들에서, 높은 빈도(frequency) 통계의 부상 윈도가 수집될 수 있고, 렌즈의 초점 길이가 이미지를 초점에 맞추도록 조절될 수 있다. 하기에서 더 논의되는 바와 같이, 일 실시예에서, 자동 포커스 조절들은 이미지를 초점에 맞추기 위해 자동 포커스 스코어들(AF 스코어들)이라고 하는 하나 이상의 메트릭스에 기초하여 미세하지 않은(coarse) 및 미세한 조절들을 활용할 수 있다. 또한, 일부 실시예들에서, AF 통계/스코어는 상이한 컬러들에 대해 결정될 수 있고, 각각의 컬러 채널에 대한 AF 통계/스코어 사이의 상대성은 초점의 방향을 결정하는 데 이용될 수 있다.
따라서, 이들 다양한 타입의 통계는 특히 통계 수집 블록(742)을 통해 결정 및 수집될 수 있다. 도시된 바와 같이, Sensor0 통계 프로세싱 유닛(142)의 통계 수집 블록(742)의 출력 STATS0는 메모리(108)에 전송되고 제어 로직(84)에 라우팅될 수 있거나, 또는 대안적으로, 제어 로직(84)에 바로 전송될 수 있다. 또한, Sensor1 통계 프로세싱 유닛(144)은 또한 도 10에 도시된 바와 같이 통계 STATS1을 제공하는 유사하게 구성된 3A 통계 수집 블록을 포함할 수 있다는 것을 이해해야 한다.
위에서 논의한 바와 같이, 디바이스(10)의 ISP 서브시스템(32)에서의 전용 프로세서일 수 있는 제어 로직(84)은 이미징 디바이스(30) 및/또는 이미지 처리 회로(32)를 제어하기 위한 하나 이상의 제어 파라미터들을 결정하기 위해 수집된 통계 데이터를 프로세싱할 수 있다. 예를 들어, 이러한 제어 파라미터들은 이미지 센서(90)의 렌즈를 동작하기 위한 파라미터들(예를 들어, 초점 길이 조절 파라미터들), 이미지 센서 파라미터들(예를 들어, 아날로그 및/또는 디지털 이득들, 인티그레이션 시간)뿐만 아니라, ISP 파이프 프로세싱 파라미터들(예를 들어, 디지털 이득 값들, 컬러 정정 매트릭스(CCM) 계수들)을 포함할 수 있다. 또한, 위에서 언급한 바와 같이, 특정 실시예들에서, 통계 프로세싱은 8 비트의 정밀도로 발생할 수 있고, 따라서, 더 높은 비트 깊이(higher bit depth)를 갖는 미가공 픽셀 데이터는 통계 목적들을 위해 8 비트 포맷으로 다운 스케일링될 수 있다. 위에서 논의한 바와 같이, 8 비트(또는 임의의 다른 하위 비트 해상도)로의 다운 스케일링은 하드웨어 사이즈(예를 들어, 면적)를 줄일 수 있고, 또한 프로세싱 복잡도를 줄일 수 있을 뿐만 아니라, (예를 들어, 이미지 데이터의 공간적 평균화를 이용하여) 통계 데이터가 노이즈에 더 강건하게 될 수 있게 한다.
전술한 것을 유념하여, 도 82는 3A 통계 로직(742)의 일 실시예를 구현하기 위한 로직을 도시하는 블록도이다. 도시된 바와 같이, 3A 통계 로직(742)은 도 68에 도시된 바와 같이 역 BLC 로직(741)의 출력에 대응할 수 있는 베이어 RGB 데이터를 표현하는 신호(793)를 수신할 수 있다. 3A 통계 로직(742)은 도 68에 도시된 바와 같이 3A 통계 로직(742)의 출력 STATS0, 또는 대안적으로 Sensor1 통계 프로세싱 유닛(144)과 연관된 통계 로직의 출력 STATS1을 표현할 수 있는 다양한 통계(794)를 획득하기 위해 베이어 RGB 데이터(793)를 프로세싱할 수 있다.
예시된 실시예에서, 통계가 노이즈에 더 강건하도록 하기 위해, 들어오는 베이어 RGB 픽셀들(793)은 먼저 로직(795)에 의해 평균화된다. 예를 들어, 평균화는 4개의 2x2 베이어 쿼즈(quads)(예를 들어, 베이어 패턴을 표현하는 픽셀들의 2x2 블록)로 이루어지는 4x4 센서 픽셀들의 윈도 사이즈에서 수행될 수 있고, 4x4 윈도에서의 평균화된 레드(R), 그린(G), 및 블루(B) 값들은 위에서 언급한 바와 같이 계산되어 8 비트로 변환될 수 있다. 이 프로세스는 4개의 2x2 베이어 쿼즈(797)로서 형성된 픽셀들의 4x4 윈도(796)를 도시하는 도 83과 관련하여 더 상세히 예시된다. 이러한 배열을 이용하여, 각각의 컬러 채널은 윈도(796) 내에 대응하는 픽셀들의 2x2 블록을 포함하고, 동일 컬러 픽셀들이 윈도(796) 내의 각각의 컬러 채널에 대한 평균 컬러 값을 생성하기 위해 합산되어 평균화될 수 있다. 예를 들어, 샘플(796) 내에서 레드 픽셀들(799)은 평균 레드 값(RAV)(803)을 획득하기 위해 평균화될 수 있고, 블루 픽셀들(800)은 평균 블루 값(BAV)(804)을 획득하기 위해 평균화될 수 있다. 그린 픽셀들의 평균화와 관련하여, 베이어 패턴은 레드 또는 블루 샘플들의 2배의 그린 샘플들을 갖기 때문에 몇몇 기법들이 이용될 수 있다. 일 실시예에서, 평균 그린 값(GAV)(802)은 단지 Gr 픽셀들(798), 단지 Gb 픽셀들(801), 또는 Gr 및 Gb 픽셀들(798 및 801) 전부를 함께 평균화함으로써 획득될 수 있다. 다른 실시예에서, 각각의 베이어 쿼드(quad)(797)에서의 Gr 및 Gb 픽셀들(798 및 801)은 평균화될 수 있고, 각각의 베이어 쿼드(797)에 대한 그린 값들의 평균은 GAV(802)를 획득하기 위해 함께 더 평균화될 수 있다. 알 수 있는 바와 같이, 픽셀 블록들에 걸친 픽셀 값들의 평균화는 노이즈의 감소를 제공할 수 있다. 또한, 윈도 샘플로서 4x4 블록의 이용은 단지 일 예를 제공하기 위한 것임을 이해해야 한다. 사실상, 다른 실시예들에서, 임의의 적절한 블록 사이즈가 이용될 수 있다(예를 들어, 8x8, 16x16, 32x32 등).
그 후, 다운 스케일링된 베이어 RGB 값들(806)은 컬러 공간 변환 로직 유닛들(807 및 808)에 입력된다. 3A 통계 데이터의 일부는 컬러 공간 변환을 적용한 후 픽셀 픽셀들에 의존할 수 있기 때문에, 컬러 공간 변환(color space conversion; CSC) 로직(807) 및 CSC 로직(808)은 다운 샘플링된 베이어 RGB 값들(806)을 하나 이상의 다른 컬러 공간들로 변환하도록 구성될 수 있다. 일 실시예에서, CSC 로직(807)은 비선형 공간 변환을 제공할 수 있고, CSC 로직(808)은 선형 공간 변환을 제공할 수 있다. 따라서, CSC 로직 유닛들(807 및 808)은 미가공 이미지 데이터를 센서 베이어 RGB로부터, 화이트 밸런스를 위한 화이트 포인트 추정을 수행하기 위해 더 이상적이거나 적절할 수 있는 다른 컬러 공간(예를 들어, sRGBlinear, sRGB, YCbCr, 등)으로 변환할 수 있다.
본 실시예에서, 비선형 CSC 로직(807)은 3x3 매트릭스 곱셈, 그 다음에 룩업 테이블로서 구현된 비선형 맵핑, 그리고 그 다음으로 부가된 오프셋을 갖는 다른 3x3 매트릭스 곱셈을 수행하도록 구성될 수 있다. 이것은 3A 통계 컬러 공간 변환이 주어진 컬러 온도에 대해 ISP 파이프라인(82)에서의 RGB 프로세싱의 컬러 프로세싱(예를 들어, 화이트 밸런스 이득을 적용하고, 컬러 정정 매트릭스를 적용하고, RGB 감마 조절을 적용하고, 컬러 공간 변환을 수행하는 것)을 복제할 수 있게 한다. 그것은 또한 CIELab와 같은 컬러가 더 일관적인 컬러 공간(more color consistent color space), 또는 위에서 논의한 다른 컬러 공간들 중 임의의 것(예를 들어, YCbCr, 레드/블루 정규화 컬러 공간 등)으로의 베이어 RGB 값들의 변환을 제공할 수 있다. 일부 상태들 하에서, 색도가 휘도에 대해 더 선형이기 때문에 화이트 밸런스 동작을 위해 Lab 컬러 공간이 더 적절할 수 있다.
도 82에 도시된 바와 같이, 베이어 RGB 다운 스케일링된 신호(806)로부터의 출력 픽셀들은 본원에서 참조 번호 808로 참조되는 제1의 3x3 컬러 정정 매트릭스(3A_CCM)로 프로세싱된다. 본 실시예에서, 3A_CCM(809)는 카메라 RGB 컬러 공간(camRGB)으로부터 선형 sRGB 캘리브레이트된 공간(sRGBlinear)으로 변환하도록 구성될 수 있다. 일 실시예에서 이용될 수 있는 프로그램 가능한 컬러 공간 변환이 아래 수학식 19-21에 의해 제공된다.
Figure pat00046
Figure pat00047
Figure pat00048
여기서, 3A_CCM_00-3A_CCM_22는 매트릭스(808)의 부호 있는 계수들을 표현한다. 따라서, sRGBlinear 컬러 공간의 성분들, sRlinear, sGlinear, 및 sBlinear 각각은 먼저 레드, 블루, 및 그린 다운 샘플링된 베이어 RGB 값들과 적용된 대응하는 3A_CCM 계수들의 합을 결정하고, 그 다음에 그 값이 255를 초과하거나 또는 0보다 작은 경우 이 값을 0 또는 255(8 비트 픽셀 데이터에 대한 최소 및 최대 픽셀 값들)로 클리핑함으로써 결정될 수 있다. 결과로 생긴 sRGBlinear 값들은 도 82에서 3A_CCM(809)의 출력으로서 참조 번호 810에 의해 표현된다. 또한, 3A 통계 로직(742)은 아래 표현되는 바와 같이, sRlinear, sGlinear, 및 sBlinear 성분들 각각에 대해 클리핑된 픽셀들의 수의 카운트를 유지할 수 있다.
Figure pat00049
다음으로, sRGBlinear 픽셀들(810)은 sRGB 픽셀들(812)을 생성하기 위해 비선형 룩업 테이블(811)을 이용하여 프로세싱될 수 있다. 룩업 테이블(811)은 8 비트 값들의 엔트리들을 포함할 수 있고, 각각의 테이블 엔트리 값은 출력 레벨들을 표현한다. 일 실시예에서, 룩업 테이블(811)은 65개의 고르게 분포된 입력 엔트리들을 포함할 수 있고, 테이블 인덱스는 4의 스텝(step)들로 입력 값들을 표현한다. 입력 값이 간격들 사이에 있을 때, 출력 값들은 선형으로 보간된다.
알 수 있는 바와 같이, 화이트 밸런스 통계 수집이 이미지 디바이스에 의해 생성된 최종 이미지의 컬러 공간에서 수행되기 때문에, sRGB 컬러 공간은 주어진 화이트 포인트에 대해 이미징 디바이스(30)(도 7)에 의해 생성된 최종 이미지의 컬러 공간을 표현할 수 있다. 일 실시예에서, 화이트 포인트는 예를 들어, 레드-대-그린 및/또는 블루-대-그린 비율에 기초하여 이미지 장면의 특성을 하나 이상의 기준 일루미넌트에 매칭함으로써 결정될 수 있다. 예를 들어, 하나의 기준 일루미넌트는, 일광(daylight) 상태들을 시뮬레이트하기 위한 CIE 표준 일루미넌트인 D65일 수 있다. D65에 부가하여, 이미징 디바이스(30)의 캘리브레이션은 또한 다른 상이한 기준 일루미넌트들에 대해 수행될 수 있고, 화이트 밸런스 결정 프로세스는 대응하는 캘리브레이션 포인트들에 기초하여 현재의 일루미넌트에 대해 프로세싱(예를 들어, 컬러 밸런싱)이 조절될 수 있도록 현재의 일루미넌트를 결정하는 것을 포함할 수 있다. 예시적으로, 일 실시예에서, 이미징 디바이스(30) 및 3A 통계 로직(742)은 D65에 부가하여 CWF(cool white fluorescent) 기준 일루미넌트, TL84 기준 일루미넌트(다른 형광 소스), 및 백열 조명을 시뮬레이트하는 IncA(또는 A) 기준 일루미넌트를 이용하여 캘리브레이션될 수 있다. 또한, 위에서 논의한 바와 같이, 상이한 컬러 온도들에 대응하는 다양한 다른 일루미넌트들(예를 들어, H, IncA, D50, D65, 및 D75 등)이 또한 화이트 밸런스 프로세싱을 위해 카메라 캘리브레이션에 이용될 수 있다. 따라서, 화이트 포인트는 이미지 장면을 분석하고, 현재의 일루미넌트 소스에 가장 가깝게 매칭되는 기준 일루미넌트를 결정함으로써 결정될 수 있다.
여전히 비선형 CSC 로직(807)을 참조하면, 룩업 테이블(811)의 sRGB 픽셀 출력(812)은 본원에서 3A_CSC로 참조되는 제2의 3x3 컬러 정정 매트릭스(813)로 더 프로세싱될 수 있다. 도시된 실시예에서, 3A_CSC 매트릭스(813)는 sRGB 컬러 공간으로부터 YCbCr 컬러 공간으로 변환하도록 구성되는 것으로 도시되지만, 그것은 또한 sRGB 값들을 다른 컬러 공간들로 변환하도록 구성될 수 있다. 예시적으로, 다음의 프로그램 가능한 컬러 공간 변환(수학식 22-27)이 이용될 수 있다.
Figure pat00050
Figure pat00051
Figure pat00052
Figure pat00053
Figure pat00054
Figure pat00055
여기서, 3A_CSC_00-3A_CSC_22는 매트릭스(813)의 부호 있는 계수들을 표현하고, 3A_OffsetY, 3A_OffsetC1, 및 3A_OffsetC2는 부호 있는 오프셋들을 표현하고, C1 및 C2는 상이한 컬러들, 여기서는 블루 차이 크로마(Cb) 및 레드 차이 크로마(Cr)를 각각 표현한다. 그러나, C1 및 C2는 임의의 적절한 차이 크로마 컬러들을 표현할 수 있고, 반드시 Cb 및 Cr 컬러들일 필요는 없다는 것을 이해해야 한다.
수학식 22-27에 도시된 바와 같이, YCbCr의 각각의 성분을 결정함에 있어서, 매트릭스(813)로부터의 적절한 계수들이 sRGB 값들(812)에 적용되고 그 결과가 대응하는 오프셋과 합산된다(예를 들어, 수학식 22, 24, 및 26). 본질적으로, 이 단계는 3x1 매트릭스 곱셈 단계이다. 매트릭스 곱셈으로부터의 이러한 결과는 그 다음에 최대 및 최소 값 사이로 클리핑된다(예를 들어, 수학식 23, 25, 및 27). 연관된 최소 및 최대 클리핑 값들은 프로그램 가능할 수 있고, 예를 들어, 활용되는 특정 이미징 또는 비디오 표준들(예를 들어, BT.601 또는 BT.709)에 의존할 수 있다.
3A 통계 로직(742)은 또한 아래 표현된 바와 같이, Y, C1 및 C2 성분들 각각에 대한 클리핑된 픽셀들의 수의 카운트를 유지할 수 있다.
Figure pat00056
베이어 RGB 다운 샘플 신호(806)로부터의 출력 픽셀들은 또한 카메라 컬러 공간 변환을 구현하도록 구성될 수 있는 선형 컬러 공간 변환 로직(808)에 제공될 수 있다. 예를 들어, 베이어 RGB 다운 샘플 로직(795)으로부터의 출력 픽셀들(806)은 센서 RGB(camRGB)로부터 선형 화이트 밸런싱된 컬러 공간(camYC1C2)으로 변환하기 위해 CSC 로직(808)의 다른 3x3 컬러 변환 매트릭스(3A_CSC2)(815)를 통해 프로세싱될 수 있고, 여기서, C1 및 C2는 각각 Cb 및 Cr에 대응할 수 있다. 일 실시예에서, 크로마 픽셀들은 루마(luma)에 의해 스케일링될 수 있고, 이것은 향상된 컬러 일관성을 갖고 루마 변화들로 인한 컬러 시프트들에 강건한 컬러 필터를 구현하는 데 유익할 수 있다. 카메라 컬러 공간 변환이 3x3 매트릭스(815)를 이용하여 수행될 수 있는 방법의 예가 아래 수학식 28-31에 제공된다.
Figure pat00057
Figure pat00058
Figure pat00059
Figure pat00060
여기서, 3A_CSC2_00-3A_CSC2_22는 매트릭스(815)를 위한 부호 있는 계수들을 표현하고, 3A_Offset2Y는 camY을 위한 부호 있는 오프셋을 표현하고, camC1 및 camC2는 상이한 컬러들, 여기서는 블루 차이 크로마(Cb) 및 레드 차이 크로마(Cr)를 각각 표현한다. 수학식 28에 도시된 바와 같이, camY를 결정하기 위해서, 매트릭스(815)로부터의 대응하는 계수들이 베이어 RGB 값들(806)에 적용되고, 그 결과가 3A_Offset2Y와 합산된다. 이 결과는 그 다음에 수학식 29에 도시된 바와 같이 최대 및 최소 값 사이로 클리핑된다. 위에서 논의한 바와 같이, 클리핑 한계들은 프로그램 가능할 수 있다.
이 포인트에서, 출력(816)의 camC1 및 camC2 픽셀들은 부호가 있다. 위에서 논의한 바와 같이, 일부 실시예들에서, 크로마 픽셀들은 스케일링될 수 있다. 예를 들어, 크로마 스케일링을 구현하기 위한 하나의 기법이 아래에 도시된다.
Figure pat00061
Figure pat00062
여기서, ChromaScale는 0과 8 사이의 부동 소수점 스케일링 인자를 표현한다. 수학식 32 및 33에서, 표현식 (camY ? camY:1)는 0으로 나누기 상태(divide-by-zero condition)를 방지하기 위한 것이다. 즉, camY가 0과 같으면, camY의 값은 1로 설정된다. 또한, 일 실시예에서, ChromaScale는 camC1의 부호에 따라 2개의 가능한 값들 중 하나로 설정될 수 있다. 예를 들어, 아래 수학식 34에 도시된 바와 같이, ChromaScale는 camC1이 마이너스이면 제1 값(ChromaScale0)으로 설정될 수 있거나, 그렇지 않으면 제2 값(ChromaScale1)으로 설정될 수 있다.
Figure pat00063
그 후, 크로마 오프셋들이 부가되고, camC1 및 camC2 크로마 픽셀들이 아래 수학식 35 및 36에 도시된 바와 같이 클리핑되어, 대응하는 부호 없는 픽셀 값들을 생성한다.
Figure pat00064
Figure pat00065
여기서, 3A_CSC2_00-3A_CSC2_22는 매트릭스(815)의 부호 있는 계수들이고, 3A_Offset2C1 및 3A_Offset2C2는 부호 있는 오프셋들이다. 또한, camY, camC1, 및 camC2에 대해 클리핑되는 픽셀들의 수가 아래 도시된 바와 같이 카운트된다(counted).
Figure pat00066
따라서, 비선형 및 선형 컬러 공간 변환 로직(807 및 808)은 본 실시예에서 다양한 컬러 공간들에서의 픽셀 데이터를 제공할 수 있다: sRGBlinear(신호 810), sRGB(신호 812), YCbYr(신호 814), 및 camYCbCr(신호 816). 각각의 변환 매트릭스 809(3A_CCM), 813(3A_CSC), 및 815(3A_CSC2)에 대한 계수들뿐만 아니라, 룩업 테이블(811)의 값들은 독립적으로 설정되고 프로그램될 수 있다는 것을 이해해야 한다.
여전히 도 82를 참조하면, 비선형 컬러 공간 변환(YCbCr(814)) 또는 카메라 컬러 공간 변환(camYCbCr(816))으로부터의 크로마 출력 픽셀들은 2-차원(2D) 컬러 히스토그램(817)을 생성하는 데 이용될 수 있다. 도시된 바와 같이, 곱셈기들로서 또는 임의의 다른 적절한 로직에 의해 구현될 수 있는 선택 로직(818 및 819)은 비선형 또는 카메라 컬러 공간 변환으로부터의 루마 및 크로마 픽셀들 사이에서 선택하도록 구성될 수 있다. 선택 로직(818 및 819)은 일 실시예에서 이미지 처리 회로(32)(도 7)의 메인 제어 로직(84)에 의해 공급될 수 있고 소프트웨어를 통해 설정될 수 있는 각각의 제어 신호들에 응답하여 동작할 수 있다.
본 예에 대해서, 선택 로직(818 및 819)은 YC1C2 컬러 공간 변환(814)을 선택하는 것이 가정될 수 있고, 여기서 제1 성분은 루마(Luma)이고, C1, C2는 제1 및 제2 컬러들(예를 들어, Cb, Cr)이다. C1-C2 컬러 공간에서의 2D 히스토그램(817)이 하나의 윈도에 대해 생성된다. 예를 들어, 윈도는 열 시작 및 폭, 그리고 행 시작 및 높이로 특정될 수 있다. 일 실시예에서, 윈도 위치 및 사이즈는 4 픽셀들의 배수로서 설정될 수 있고, 32x32 빈들이 총 1024 빈들을 위해 이용될 수 있다. 빈 바운더리들은 고정된 간격에 있을 수 있고, 컬러 공간의 특정 영역들에서의 히스토그램 수집의 주밍(zooming) 및 패닝(panning)을 허용하기 위해서, 픽셀 스케일링 및 오프셋이 정의될 수 있다.
오프셋 및 스케일링 후의 C1 및 C2의 상위 5 비트들(총 32개의 값들을 표현함)은 빈을 결정하는 데 이용될 수 있다. 본원에서 C1_index 및 C2_index에 의해 참조되는 C1 및 C2에 대한 빈 인덱스들은 다음과 같이 결정될 수 있다.
Figure pat00067
Figure pat00068
일단 인덱스들이 결정되면, 컬러 히스토그램 빈들은 아래 수학식 39에 도시된 바와 같이, 빈 인덱스들이 범위 [0, 31]에 있는 경우 카운트(Count) 값(일 실시예에서 0과 3 사이의 값을 가질 수 있음)에 의해 증분된다. 사실상, 이것은 루마 값들에 기초하여 컬러 카운트들을 가중화하는 것을 허용한다(예를 들어, 모든 것을 동등하게(예를 들어, 1에 의해) 가중화하는 대신에, 더 밝은 픽셀들은 더 많이 가중화된다).
Figure pat00069
여기서, Count는 본 예에서 선택된 루마 값 Y에 기초하여 결정된다. 알 수 있는 바와 같이, 수학식 37, 38 및 39에 의해 표현된 단계들은 빈 업데이트 로직 블록(821)에 의해 구현될 수 있다. 또한, 일 실시예에서, 복수의 루마 임계값들은 루마 간격들을 정의하기 위해 설정될 수 있다. 예시적으로, 4개의 루마 임계값들(Ythd0-Ythd3)이 5개의 루마 간격들을 정의할 수 있고, Count 값들 Count0-4는 각각의 간격에 대해 정의된다. 예를 들어, Count0-Count4는 다음과 같이 루마 임계값들에 기초하여 (예를 들어, 픽셀 상태 로직(820)에 의해) 선택될 수 있다.
Figure pat00070
전술한 점을 유념하여, 도 84는 C1 및 C2 둘다에 대해 0으로 설정된 스케일링 및 오프셋들을 갖는 컬러 히스토그램을 예시한다. CbCr 공간 내의 분할들은 32x32 빈들(1024 총 빈들)의 각각을 표현한다. 도 85는 부가적인 정밀도를 위한 2D 컬러 히스토그램 내의 주밍 및 패닝의 예를 제공하고, 여기서 작은 직사각형인 직사각형 영역(822)은 32x32 빈들의 위치를 특정한다.
이미지 데이터의 프레임의 시작에서, 빈 값들이 0으로 초기화된다. 2D 컬러 히스토그램(817)에 들어가는 각각의 픽셀에 대해, 매칭 C1C2 값에 대응하는 빈은, 위에서 논의한 바와 같이, 루마 값에 기초할 수 있는 결정된 Count 값(Count0-Count4)에 의해 증분된다. 2D 히스토그램(817) 내의 각각의 빈에 대해, 총 픽셀 카운트는 수집된 통계 데이터(예를 들어, STATS0)의 부분으로서 보고된다. 일 실시예에서, 각각의 빈에 대한 총 픽셀 카운트는 22 비트의 해상도를 가질 수 있고, 이에 의해 1024x22 비트들과 동등한 내부 메모리의 할당이 제공된다.
도 82를 다시 참조하면, 베이어 RGB 픽셀들(신호 806), sRGBlinear 픽셀들(신호 810), sRGB 픽셀들(신호 812), 및 YC1C2(예를 들어, YCbCr) 픽셀들(신호 814)이 픽셀 필터들(824a-c)의 세트에 제공되고, 이에 의해 RGB, sRGBlinear, sRGB, YC1C2, 또는 camYC1C2 합들이 각각의 픽셀 필터(824)에 의해 정의되는 바와 같이, camYC1C2 또는 YC1C2 픽셀 상태들에 대해 조건부로 축적될 수 있다. 즉, 비선형 컬러 공간 변환(YC1C2)의 출력 또는 카메라 컬러 공간 변환(camYC1C2)의 출력으로부터의 Y, C1 및 C2 값들은 축적할 RGB, sRGBlinear, sRGB 또는 YC1C2 값들을 조건부로 선택하는 데 이용된다. 본 실시예는 8 픽셀 필터들(PF0-PF7)이 제공된 것으로서 3A 통계 로직(742)을 도시하지만, 임의의 수의 픽셀 필터들이 제공될 수 있다는 것을 이해해야 한다.
도 86은 픽셀 필터들, 구체적으로 도 82로부터의 PF0(824a) 및 PF1(824b)의 실시예를 도시하는 기능 로직도를 도시한다. 도시된 바와 같이, 각각의 픽셀 필터(824)는 다른 선택 로직(826)에 의해 선택되는 바와 같은, 베이어 RGB 픽셀들, sRGBlinear 픽셀들, sRGB 픽셀들, 및 YC1C2 또는 camYC1C2 픽셀들 중 하나를 수신하는 선택 로직을 포함한다. 예시적으로, 선택 로직(825 및 826)은 곱셈기들 또는 임의의 다른 적절한 로직을 이용하여 구현될 수 있다. 선택 로직(826)은 YC1C2 또는 camYC1C2를 선택할 수 있다. 선택은 이미지 처리 회로(32)(도 7)의 메인 제어 로직(84)에 의해 공급될 수 있고 및/또는 소프트웨어에 의해 설정될 수 있는 제어 신호에 응답하여 행해질 수 있다. 다음으로, 픽셀 필터(824)는 픽셀 상태에 대해 선택 로직(826)에 의해 선택된 YC1C2 픽셀들(예를 들어, 비선형 또는 카메라)을 평가하기 위해 로직(827)을 이용할 수 있다. 각각의 픽셀 필터(824)는 선택 회로(826)로부터의 출력에 따라 베이어 RGB 픽셀들, sRGBlinear 픽셀들, sRGB 픽셀들, 및 YC1C2 또는 camYC1C2 픽셀 중 하나를 선택하기 위해 선택 회로(825)를 이용할 수 있다.
평가 결과들을 이용하여, 선택 로직(825)에 의해 선택된 픽셀들은 축적될 수 있다(828). 일 실시예에서, 픽셀 상태는 도 80의 그래프(789)에 도시된 바와 같이, 임계값들 C1_min, C1_max, C2_min, C2_max을 이용하여 정의될 수 있다. 픽셀이 다음의 조건들을 충족하는 경우 픽셀은 통계에 포함된다.
Figure pat00071
도 87의 그래프(829)를 참조하면, 일 실시예에서, 포인트(830)는 로직(826)에 의해 선택되는 바와 같이, 현재의 YC1C2 픽셀 데이터에 대응하는 값들(C2, C1)을 표현한다. C1_delta는 C1_1과 C1_0 사이의 차이로서 결정될 수 있고, C2_delta는 C2_1과 C2_0 사이의 차이로서 결정될 수 있다. 도 87에 도시된 바와 같이, 포인트들 (C1_0, C2_0) 및 (C1_1, C2_1)은 C1 및 C2에 대한 최소 및 최대 바운더리들을 정의할 수 있다. 오프셋은 C1_delta에, 선(831)이 축 C2를 가로막는 값(832)(C2_intercept)을 곱함으로써 결정될 수 있다. 따라서, Y, C1, 및 C2는 최소 및 최대 바운더리 조건들을 충족한다고 가정하면, 선택된 픽셀들(베이어 RGB, sRGBlinear, sRGB, 및 YC1C2/camYC1C2)은, 선(831)으로부터의 그의 거리(833)가, 선으로부터의 픽셀 거리(833)를 정규화 인자로 곱한 것일 수 있는 distance_max(834)보다 작으면 축적 합(accumulation sum)에 포함된다.
Figure pat00072
본 실시예에서, 거리, C1_delta 및 C2_delta는 -255 내지 255의 범위를 가질 수 있다. 따라서, distance_max(834)는 17 비트들에 의해 표현될 수 있다. 포인트들 (C1_0, C2_0) 및 (C1_1, C2_1)뿐만 아니라, distance_max를 결정하기 위한 파라미터들(예를 들어, 정규화 인자(들))은 각각의 픽셀 필터(824)에서 픽셀 상태 로직(827)의 부분으로서 제공될 수 있다. 알 수 있는 바와 같이, 픽셀 상태들(827)은 구성 가능/프로그램 가능할 수 있다.
도 87에 도시된 예는 2 세트들의 포인트들 (C1_0, C2_0) 및 (C1_1, C2_1)에 기초하여 픽셀 상태를 도시하지만, 부가적인 실시예들에서, 특정 픽셀 필터들은 픽셀 상태들이 결정되는 더 복잡한 모양들 및 영역들을 정의할 수 있다. 예를 들어, 도 88은 픽셀 필터(824)가 포인트들 (C1_0, C2_0), (C1_1, C2_1), (C1_2, C2_2) 및 (C1_3, C2_3), 및 (C1_4, C2_4)을 이용하여 5변 다각형(five-sided polygon)(835)을 정의할 수 있는 실시예를 도시한다. 각각의 변(836a-836e)은 선 상태를 정의할 수 있다. 그러나, 도 87에 도시된 경우와 달리(예를 들어, 픽셀은 distance_max가 충족되는 한 선(831)의 어느 한 변에 있을 수 있음), 상태는 픽셀(C1, C2)이 다각형(835)으로 둘러싸이도록 하는 선(836a-836e)의 쪽에 배치되어야 하는 것일 수 있다. 따라서, 픽셀 (C1, C2)는 다수의 선 상태들의 교차(intersection)가 만족될(met) 때 카운트된다(counted). 예를 들어, 도 88에서, 이러한 교차는 픽셀(837a)과 관련하여 발생한다. 그러나, 픽셀(837b)은 선(836d)에 대한 선 상태를 충족하지 않고, 따라서 이러한 방식으로 구성된 픽셀 필터에 의해 프로세싱될 때 통계에 카운트되지 않는다.
도 89에 도시된 다른 실시예에서, 픽셀 상태는 겹쳐지는 모양들에 기초하여 결정될 수 있다. 예를 들어, 도 89는 픽셀 필터(824)가 2개의 겹쳐지는 모양들, 여기서는 포인트들 (C1_0, C2_0), (C1_1, C2_1), (C1_2, C2_2) 및 (C1_3, C2_3) 및 포인트들 (C1_4, C2_4), (C1_5, C2_5), (C1_6, C2_6) 및 (C1_7, C2_7)에 의해 각각 정의되는 직사각형들(838a 및 838b)을 이용하여 정의된 픽셀 상태들을 가질 수 있는 방법을 도시한다. 이 예에서, 픽셀 (C1, C2)은 (예를 들어, 두 모양들을 정의하는 각각의 선의 선 상태들을 충족함으로써) 모양들(838a 및 838b)에 의해 총괄하여 바운드된 영역 내에 둘러싸임으로써 이러한 픽셀 필터에 의해 정의된 선 상태들을 충족할 수 있다. 예를 들어, 도 89에서, 이들 상태들은 픽셀(839a)에 대하여 충족된다. 그러나, 픽셀(839b)은 (구체적으로 직사각형(838a)의 선(840a) 및 직사각형(838b)의 선(840b)에 대하여) 이들 상태들을 충족하지 않고, 따라서, 이러한 방식으로 구성된 픽셀 필터에 의해 프로세싱될 때 통계에 카운트되지 않는다.
각각의 픽셀 필터(824)에 대하여, 자격을 갖춘(qualifying) 픽셀들은 로직(827)에 의해 정의된 픽셀 상태들에 기초하여 식별되고, 자격을 갖춘 픽셀 값들에 대하여, 다음의 통계가 3A 통계 엔진(742)에 의해 수집될 수 있다: 32 비트 합들: (Rsum, Gsum, Bsum) 또는 (sRlinear _ sum, sGlinear _ sum, sBlinear _ sum), 또는 (sRsum, sGsum, sBsum) 또는 (Ysum, C1sum, C2sum) 및 통계에 포함되었던 픽셀들의 수의 합을 표현할 수 있는 24 비트 픽셀 카운트(Count). 일 실시예에서, 소프트웨어는 합을 이용하여 타일 또는 윈도 내에서 평균을 생성할 수 있다.
camYC1C2 픽셀들이 픽셀 필터(824)의 로직(825)에 의해 선택될 때, 컬러 임계값들은 스케일링된 크로마 값들에 대해 수행될 수 있다. 예를 들어, 화이트 포인트들에서의 크로마 세기는 루마 값과 함께 증가하기 때문에, 픽셀 필터(824)에서 루마 값으로 스케일링된 크로마의 이용은 일부 예들에서 향상된 일관성을 갖는 결과들을 제공한다. 예를 들어, 최소 및 최대 루마 상태들은 필터가 어두운 및/또는 밝은 영역들을 무시할 수 있게 할 수 있다. 픽셀이 YC1C2 픽셀 상태를 충족하는 경우, RGB, sRGBlinear, sRGB 또는 YC1C2 값들은 축적된다. 선택 로직(825)에 의한 픽셀 값들의 선택은 필요한 정보의 타입에 의존할 수 있다. 예를 들어, 화이트 밸런스에 대해, 통상적으로 RGB 또는 sRGBlinear 픽셀들이 선택된다. 하늘, 풀, 피부 톤 등과 같은 특정 상태들을 검출하기 위해서, YCC 또는 sRGB 픽셀 세트가 더 적합할 수 있다.
본 실시예에서, 하나가 픽셀 필터들(PF0-PF7)(824) 각각과 연관되는, 8 세트의 픽셀 상태들이 정의될 수 있다. 일부 픽셀 상태들은 화이트 포인트가 있을 것 같은 C1-C2 컬러 공간(도 80)에서의 영역을 자르기 위해 정의될 수 있다. 이것은 현재의 일루미넌트에 기초하여 결정 또는 추정될 수 있다. 그 다음, 축적된 RGB 합들은 화이트 밸런스 조절들을 위해 R/G 및/또는 B/G 비율들에 기초하여 현재의 화이트 포인트를 결정하는 데 이용될 수 있다. 또한, 일부 픽셀 상태들은 장면 분석 및 분류들을 수행하기 위해 정의 또는 적응될 수 있다. 예를 들어, 일부 픽셀 필터들(824) 및 윈도들/타일들은 이미지 프레임의 최상부에서의 파란 하늘, 또는 이미지 프레임의 최하부에서의 녹색 풀과 같은, 상태들에 대해 검출하는 데 활용될 수 있다. 이 정보는 또한 화이트 밸런스를 조절하는 데 이용될 수 있다. 또한, 일부 픽셀 상태들은 피부 톤을 검출하기 위해 정의 또는 적응될 수 있다. 이러한 필터들에 대해, 타일들은 피부 톤을 갖는 이미지 프레임의 영역들을 검출하는 데 이용될 수 있다. 이들 영역들을 식별함으로써, 피부 톤의 품질은 예를 들어, 피부 톤 영역들에서의 노이즈 필터의 양을 감소시키고 및/또는 품질을 향상시키기 위한 그들의 영역들에서의 비디오 압축의 양자화를 감소시키는 것에 의해 향상될 수 있다.
3A 통계 로직(742)은 또한 루마 데이터의 수집을 제공할 수 있다. 예를 들어, 카메라 컬러 공간 변환(camYC1C2)으로부터의 루마 값(camY)은 루마 합 통계를 축적하기 위해 이용될 수 있다. 일 실시예에서, 다음의 루마 정보는 3A 통계 로직(742)에 의해 수집될 수 있다.
Figure pat00073
여기서, Ycount1은 노출 부족(underexposed) 픽셀들의 수를 표현할 수 있고, Ycount2는 노출 과다(overexposed) 픽셀들의 수를 표현할 수 있다. 이것은 이미지가 노출 과다인지 노출 부족인지를 결정하는 데 이용될 수 있다. 예를 들어, 픽셀들이 포화(saturate)되지 않은 경우, camY의 합(Ysum)은 타겟 AE 노출을 실현하는 데 이용될 수 있는 장면에서의 평균 루마를 나타낼 수 있다. 예를 들어, 일 실시예에서, 평균 루마는 Ysum을 픽셀들의 수로 나눔으로써 결정될 수 있다. 또한, 타일 통계 및 윈도 위치에 대해 루마/AE 통계를 알고 있음으로써, AE 미터링(metering)이 수행될 수 있다. 예를 들어, 이미지 장면에 따라, 초상화의 경우에서와 같이, 이미지의 에지들에서보다 더 많이 중심 윈도에서의 AE 통계를 가중화하는 것이 바람직할 수 있다.
본 예시된 실시예에서, 3A 통계 수집 로직은 타일들 및 윈도들에서 통계를 수집하도록 구성될 수 있다. 예시된 구성에서, 하나의 윈도는 타일 통계(863)를 위해 정의될 수 있다. 윈도는 열 시작점 및 폭, 그리고 행 시작점 및 높이로 특정될 수 있다. 일 실시예에서, 윈도 위치 및 사이즈는 4 픽셀들의 배수로서 설정될 수 있고, 이 윈도 내에서, 통계들이 임의적인 사이즈들의 타일들로 모아진다. 예시적으로, 윈도의 모든 타일들은 그것들이 동일한 사이즈를 갖도록 선택될 수 있다. 타일 사이즈는 수평 및 수직 방향들에 대해 독립적으로 설정될 수 있고, 일 실시예에서, 수평 타일들의 수에 대한 최대 한계가 설정될 수 있다(예를 들어, 128개의 수평 타일들의 한계). 또한, 일 실시예에서, 최소 타일 사이즈는 예를 들어, 8 픽셀 폭 x 4 픽셀 높이로 설정될 수 있다. 아래는 16x16 타일들의 윈도를 획득하기 위한 상이한 비디오/이미징 모드들 및 표준들에 기초한 타일 구성들의 일부 예들이다.
Figure pat00074
본 실시예와 관련하여, 8개의 이용가능한 픽셀 필터들(824)(PF0-PF7)로부터, 4개가 타일 통계(863)를 위해 선택될 수 있다. 각각의 타일을 위해, 다음의 통계가 수집될 수 있다.
Figure pat00075
위에 열거된 통계들에서, Count0-3은 선택된 4개의 픽셀 필터들에 대응하는 픽셀 상태들을 충족하는 픽셀들의 카운트를 표현한다. 예를 들어, 픽셀 필터들 PF0, PF1, PF5, 및 PF6이 특정 타일 또는 윈도를 위한 4개의 픽셀 필터들로서 선택되면, 위에 제공된 표현식들은 그 필터들을 위해 (예를 들어, 선택 로직(825)에 의해) 선택되는 픽셀 데이터(예를 들어, 베이어 RGB, sRGBlinear, sRGB, YC1Y2, camYC1C2)에 대응하는 Count 값들 및 합들에 대응할 수 있다. 또한, Count 값들은 (예를 들어, 컬러 합들을 대응하는 Count 값들로 나눔으로써) 통계를 정규화하는 데 이용될 수 있다. 도시된 바와 같이, 필요한 통계의 타입에 적어도 부분적으로 의존하여, 선택된 픽셀 필터들(824)은 베이어 RGB, sRGBlinear, 또는 sRGB 픽셀 데이터 중 하나, 또는 YC1C2(로직(826)에 의한 선택에 따라 비선형 또는 카메라 컬러 공간 변환) 픽셀 데이터 사이에서 선택하고, 선택된 픽셀 데이터에 대한 컬러 합 통계를 결정하도록 구성될 수 있다. 또한, 위에서 논의한 바와 같이 카메라 컬러 공간 변환(camYC1C2)으로부터의 루마 값, camY은 또한 자동 노출(AE) 통계를 위해 루마 합 정보에 대해 수집된다.
또한, 3A 통계 로직(742)은 또한 다수의 윈도에 대한 통계(861)를 수집하도록 구성될 수 있다. 예를 들어, 일 실시예에서, 최대 8개의 부동 윈도(floating window)가 이용될 수 있고, 이미지 프레임의 사이즈에 대응하는 최대 사이즈까지, 임의의 직사각형 영역은 각각의 치수(예를 들어, 높이 x 폭)에서 4 픽셀들의 배수를 가진다. 그러나, 윈도의 위치는 반드시 4 픽셀들의 배수에 한정될 필요는 없다. 예를 들어, 윈도들은 서로 겹쳐질 수 있다.
본 실시예에서, 4개의 픽셀 필터(824)가 각각의 윈도에 대한 이용가능한 8개의 픽셀 필터들(PF0-PF7)로부터 선택될 수 있다. 각각의 윈도에 대한 통계는 위에서 논의한, 타일들에 대해서와 동일한 방식으로 수집될 수 있다. 따라서, 각각의 윈도에 대해, 다음의 통계(861)가 수집될 수 있다.
Figure pat00076
위에 열거된 통계에서, Count0-3은 특정 윈도에 대한 선택된 4개의 픽셀 필터들에 대응하는 픽셀 상태들을 충족하는 픽셀들의 카운트를 표현한다. 8개의 이용가능한 픽셀 필터들(PF0-PF7)로부터, 4개의 활성 픽셀 필터들이 각각의 윈도에 대해 독립적으로 선택될 수 있다. 또한, 통계들의 세트들 중 하나가 픽셀 필터들 또는 camY 루마 통계를 이용하여 수집될 수 있다. AWB 및 AE에 대해 수집된 윈도 통계는 일 실시예에서 하나 이상의 레지스터에 맵핑될 수 있다.
여전히 도 82를 참조하면, 3A 통계 로직(742)은 또한 카메라 컬러 공간 변환을 위한 루마 값, camY를 이용하여 하나의 윈도에 대한 루마 행 합 통계(859)를 취득하도록 구성될 수 있다. 이 정보는 플리커를 검출하고 보상하는 데 이용될 수 있다. 플리커는 통상적으로 AC 전력 신호에 의해 야기되는, 일부 형광 및 백열 광 소스들의 주기적인 변화에 의해 생성된다. 예를 들어, 도 90을 참조하면, 어떻게 플리커가 광 소스의 변화에 의해 야기될 수 있는지를 예시하는 그래프가 도시된다. 플리커 검출은 따라서 광 소스에 대해 이용된 AC 전력의 주파수(예를 들어, 50Hz 또는 60Hz)를 검출하는 데 이용될 수 있다. 일단 주파수가 알려지면, 플리커는 이미지 센서의 인티그레이션 시간을 플리커 주기의 정수배로 설정함으로써 회피될 수 있다.
플리커를 검출하기 위해서, 카메라 루마, camY가 각각의 행에 대해 축적된다. 들어오는 베이어 데이터의 다운 샘플로 인해, 각각의 camY 값은 원래의 미가공 이미지 데이터의 4개의 행에 대응할 수 있다. 제어 로직 및/또는 펌웨어는 그 다음에 특정 광 소스와 연관된 AC 전력의 주파수를 결정하기 위해 연속 프레임들에 대해 행 평균의 또는, 더 신뢰성 있게는, 행 평균 차이들(row average differences)의 주파수 분석을 수행할 수 있다. 예를 들어, 도 90과 관련하여, 이미지 센서를 위한 인티그레이션 시간은 (예를 들어, 인티그레이션이 변화들을 보이는 광 소스가 일반적으로 동일한 휘도 레벨에 있을 때에 대응하는 시간들에서 발생하도록) 시간들 t1, t2, t3, 및 t4에 기초할 수 있다.
일 실시예에서, 루마 행 합 윈도가 특정될 수 있고, 통계(859)가 그 윈도 내의 픽셀들에 대해 보고된다. 예시적으로, 1080p HD 비디오 캡처에 대하여, 1024 픽셀 높이의 윈도를 가정하면, 256 루마 행 합들이 생성되고(예를 들어, 로직(795)에 의한 다운스케일링으로 인한 4개의 행마다 하나의 합), 각각의 축적된 값은 18 비트로 표현될 수 있다(예를 들어, 행당 최대 1024 샘플들에 대해 8 비트 camY 값들).
도 82의 3A 통계 수집 로직(742)은 또한 자동 포커스 통계 로직(841)에 의해 자동 포커스(AF) 통계(842)의 수집을 제공할 수 있다. AF 통계 로직(841)의 실시예를 더 상세히 도시하는 기능 블록도가 도 91에 제공된다. 도시된 바와 같이, AF 통계 로직(841)은 원래의 베이어 RGB(다운 샘플링되지 않음), 베이어로부터의 Y에 대한 2개의 3x3 필터들(846), 및 camY에 대한 2개의 3x3 필터들(847)에 적용되는 수평 필터(843) 및 에지 검출기(edge detector)(844)를 포함할 수 있다. 일반적으로, 수평 필터(843)는 컬러 성분 당 미세 해상도 통계를 제공하고, 3x3 필터들(846)은 BayerY(3x1 변환 (로직(845))이 적용되는 베이어 RGB)에 대한 미세 해상도 통계를 제공할 수 있고, 3x3 필터들(847)은 camY에 대한 더 미세하지 않은(coarser) 2-차원 통계를 제공할 수 있다(camY는 다운 스케일링된 베이어 RGB 데이터, 즉, 로직(815)을 이용하여 취득되기 때문). 또한, 로직(841)은 베이어 RGB 데이터를 데시메이트(decimate)하기 위한(예를 들어, 2x2 평균화, 4x4 평균화 등) 로직(852)을 포함할 수 있고, 데시메이트된 베이어 RGB 데이터(853)는 데시메이트된 베이어 RGB 데이터에 대한 필터링된 출력(855)을 생성하기 위해 3x3 필터들(854)을 이용하여 필터링될 수 있다. 본 실시예는 통계들의 16개의 윈도를 제공한다. 미가공 프레임 바운더리들에서, AF 통계 로직(841)의 필터들에 대해 에지 픽셀들이 복제된다. AF 통계 로직(841)의 다양한 컴포넌트들이 아래에서 더 상세히 설명된다.
먼저, 수평 에지 검출 프로세스는 각각의 컬러 성분(R, Gr, Gb, B)에 대해 수평 필터(843)를 적용하고, 그 다음에 각각의 컬러 성분에 대해 옵션의 에지 검출기(844)를 적용하는 것을 포함한다. 따라서, 이미징 상태들에 따라, 이 구성은 AF 통계 로직(841)이 에지 검출을 하지 않는 하이 패스 필터(high pass filter)(예를 들어, 에지 검출기 디스에이블)로서, 또는 대안적으로, 에지 검출기가 뒤따르는 로우 패스 필터(low pass filter)(예를 들어, 에지 검출기 인에이블)로서 셋업될 수 있게 한다. 예를 들어, 낮은 광 상태들에서, 수평 필터(843)는 노이즈에 더 민감할 수 있고, 따라서, 로직(841)은 인에이블된 에지 검출기(844)가 뒤따르는 로우 패스 필터로서 수평 필터를 구성할 수 있다. 도시된 바와 같이, 제어 신호(848)는 에지 검출기(844)를 인에이블 또는 디스에이블할 수 있다. 상이한 컬러들은 상이한 깊이에서 포커싱할 수 있기 때문에, 상이한 컬러 채널들로부터의 통계를 이용하여 초점의 방향을 결정하여 선명도(sharpness)를 향상시킨다. 특히, AF 통계 로직(841)은 (예를 들어, 렌즈의 초점 길이에 대한) 미세하지 않은 그리고 미세한 조절들의 결합을 이용하여 자동 포커스 제어를 가능하게 하는 기법들을 제공할 수 있다. 이러한 기법들의 실시예들은 아래에서 더 상세히 설명된다.
일 실시예에서, 수평 필터는 7-탭 필터일 수 있고, 수학식 41 및 42에서 다음과 같이 정의될 수 있다.
Figure pat00077
Figure pat00078
여기서, 각각의 계수 af_horzfilt_coeff[0:3]는 범위 [-2, 2]에 있을 수 있고, i는 R, Gr, Gb 또는 B에 대한 입력 픽셀 인덱스를 표현한다. 필터링된 출력 out(i)는 -255 및 255의 최소 및 최대 값 사이로 각각 클리핑될 수 있다(수학식 42). 필터 계수들은 컬러 성분마다 독립적으로 정의될 수 있다.
옵션의 에지 검출기(844)는 수평 필터(843)의 출력을 따를 수 있다. 일 실시예에서, 에지 검출기(844)는 다음과 같이 정의될 수 있다.
Figure pat00079
Figure pat00080
따라서, 에지 검출기(844)는, 인에이블될 때, 수학식 43에 의해 도시된 바와 같이, 현재의 입력 픽셀 i의 각각의 사이드에 있는 2개의 픽셀들에 기초하여 값을 출력할 수 있다. 결과는 수학식 44에 도시된 바와 같이, 0과 255 사이의 8 비트 값으로 클리핑될 수 있다.
에지가 검출되는지에 따라, 픽셀 필터(예를 들어, 필터(843) 및 검출기(844))의 최종 출력은 수평 필터(843)의 출력 또는 에지 검출기(844)의 출력으로서 선택될 수 있다. 예를 들어, 수학식 45에 도시된 바와 같이, 에지 검출기(844)의 출력(849)은 에지가 검출되는 경우에 edge(i)일 수 있거나, 또는 에지가 검출되지 않는 경우에 수평 필터 출력 out(i)의 절대값일 수 있다.
Figure pat00081
각각의 윈도에 대해, 축적된 값들, edge_sum[R, Gr, Gb, B]는 (1) 윈도에 걸치는 각각의 픽셀에 대한 edge(j,i)의 합, 또는 (2) 윈도에서의 선들에 걸쳐서 합산된, 윈도에서의 선에 걸치는 edge(i)의 최대값, max(edge)인 것으로 선택될 수 있다. 4096x4096 픽셀들의 미가공 프레임 사이즈를 가정하면, edge_sum[R, Gr, Gb, B]의 최대값들을 저장하는 데 요구되는 비트들의 수는 30 비트이다(예를 들어, 픽셀당 8 비트, 플러스 전체 미가공 이미지 프레임을 커버하는 윈도에 대해 22 비트).
논의한 바와 같이, camY 루마에 대한 3x3 필터들(847)은 camY에 적용되는 F0 및 F1로 참조되는 2개의 프로그램 가능한 3x3 필터들을 포함할 수 있다. 필터(847)의 결과는 제곱 함수(squared function) 또는 절대값 함수로 간다. 결과는 두 3x3 필터들 F0 및 F1에 대한 주어진 AF 윈도에 걸쳐서 축적되어 루마 에지 값을 생성한다. 일 실시예에서, 각각의 camY 픽셀에서의 루마 에지 값들은 다음과 같이 정의된다.
Figure pat00082
Figure pat00083
여기서, FX는 범위 [-4, 4]에서 부호 있는 계수들을 갖는 3x3 프로그램 가능 필터들 F0 및 F1을 표현한다. 인덱스들 j 및 i는 camY 이미지에서의 픽셀 위치들을 표현한다. 위에서 논의한 바와 같이, camY는 다운 스케일링된(예를 들어, 4x4 to 1) 베이어 RGB 데이터를 이용하여 도출되기 때문에, camY에 대한 필터는 미세하지 않은 해상도 통계를 제공할 수 있다. 예를 들어, 일 실시예에서, 필터들 F0 및 F1은 Sobel 오퍼레이터에 대해 향상된 회전 대칭(rotational symmetry)을 제공하는, Scharr 오퍼레이터를 이용하여 설정될 수 있고, 그 예가 아래에 도시된다.
Figure pat00084
Figure pat00085
각각의 윈도에 대해, 필터들(847)에 의해 결정된 축적된 값들(850), edgecamY_FX_sum(여기서, FX = F0 및 F1)은 (1) 윈도에 걸친 각각의 픽셀에 대한 edgecamY_FX(j,i)의 합, 또는 (2) 윈도에서의 선들에 걸쳐서 합산된, 윈도에서의 선에 걸친 edgecamY_FX(j)의 최대값인 것으로 선택될 수 있다. 일 실시예에서, edgecamY_FX_sum는 "피키어(peakier)" 통계에 더 미세한 해상도를 제공하기 위해 f(a)가 a^2로 설정될 때 32 비트 값으로 포화할 수 있다. 포화를 피하기 위해서, 미가공 프레임 픽셀들에서의 최대 윈도 사이즈 X*Y가 총 1024x1024 픽셀들을 초과하지 않도록 설정될 수 있다(예를 들어, 즉, X*Y <= 1048576 픽셀들). 위에서 언급한 바와 같이, f(a)는 또한 더 선형인 통계를 제공하기 위해 절대값으로서 설정될 수 있다.
베이어 Y에 대한 AF 3x3 필터들(846)은 camY에서의 3x3 필터들과 유사한 방식으로 정의될 수 있지만, 그것들은 베이어 쿼드(2x2 픽셀들)로부터 생성된 루마 값들 Y에 적용된다. 먼저, 아래 수학식 48에 도시된 바와 같이, 화이트 밸런싱된 Y 값을 생성하기 위해 8 비트 베이어 RGB 값들은 범위 [0, 4]에서 프로그램 가능한 계수들을 갖는 Y로 변환된다.
Figure pat00086
camY에 대한 필터들(847)과 마찬가지로, BayerY 루마에 대한 3x3 필터들(846)은 BayerY에 적용되는, F0 및 F1로 참조되는, 2개의 프로그램 가능한 3x3 필터들을 포함할 수 있다. 필터들(846)의 결과는 제곱 함수 또는 절대값 함수로 간다. 결과는 두 3x3 필터들 F0 및 F1에 대한 주어진 AF 윈도에 걸쳐서 축적되어 루마 에지 값을 생성한다. 일 실시예에서, 각각의 BayerY 픽셀에서의 루마 에지 값들은 다음과 같이 정의된다.
Figure pat00087
Figure pat00088
여기서, FX는 범위 [-4, 4]에서 부호 있는 계수들을 갖는 3x3 프로그램 가능 필터들 F0 및 F1을 표현한다. 인덱스들 j 및 i는 BayerY 이미지에서의 픽셀 위치들을 표현한다. 위에서 논의한 바와 같이, AF 로직(841)에 의해 수신된 베이어 RGB 신호는 데시메이트되지 않기 때문에, BayerY에 대한 필터는 미세한 해상도 통계를 제공할 수 있다. 오직 예시적으로, 필터 로직(846)의 필터들 F0 및 F1은 다음의 필터 구성들 중 하나를 이용하여 설정될 수 있다.
Figure pat00089
Figure pat00090
Figure pat00091
각각의 윈도에 대해, 필터들(846)에 의해 결정된 축적된 값들(851), edgebayerY_FX_sum(여기서, FX = F0 및 F1)은 (1) 윈도에 걸친 각각의 픽셀에 대한 edgebayerY_FX(j,i)의 합, 또는 (2) 윈도에서의 선들에 걸쳐서 합산된, 윈도에서의 선에 걸친 edgebayerY_FX(j)의 최대값인 것으로 선택될 수 있다. 여기서, edgebayerY_FX_sum은 f(a)가 a^2로 설정될 때 32 비트로 포화할 수 있다. 따라서, 포화를 피하기 위해, 미가공 프레임 픽셀들에서의 최대 윈도 사이즈 X*Y가 총 512x512 픽셀들을 초과하지 않도록 설정되어야 한다(예를 들어, X*Y <= 262144). 위에서 논의한 바와 같이, f(a)를 a^2로 설정하는 것은 피키어(peakier) 통계를 제공할 수 있고, f(a)를 abs(a)로 설정하는 것은 더 선형인 통계를 제공할 수 있다.
위에서 논의한 바와 같이, AF에 대한 통계(842)가 16개의 윈도들에 대해 수집된다. 윈도들은 각각의 치수가 4 픽셀들의 배수인 임의의 직사각형 영역일 수 있다. 각각의 필터링 로직(846 및 847)은 2개의 필터를 포함하기 때문에, 일부 예들에서, 하나의 필터는 4 픽셀들에 걸친 정규화에 이용될 수 있고, 수직 및 수평 방향들 둘다에서 필터링하도록 구성될 수 있다. 또한, 일부 실시예들에서, AF 로직(841)은 휘도에 의해 AF 통계를 정규화할 수 있다. 이것은 로직 블록들(846 및 847)의 필터들 중 하나 이상을 바이패스 필터들로서 설정함으로써 실현될 수 있다. 특정 실시예들에서, 윈도들의 위치는 4 픽셀들의 배수로 한정될 수 있고, 윈도들은 겹쳐지도록 허용된다. 예를 들어, 아래에서 논의되는 바와 같이, 하나의 윈도는 정규화 값들을 취득하는 데 이용될 수 있고, 다른 윈도는 편차(variance)와 같은 부가적인 통계를 위해 이용될 수 있다. 일 실시예에서, AF 필터들(예를 들어, 843, 846, 847)은 이미지 프레임의 에지에서 픽셀 복제(pixel replication)를 구현하지 않을 수 있고, 따라서, AF 필터들이 모든 유효 픽셀들을 이용하기 위해, AF 윈도들은 각각 프레임의 최상부 에지로부터 적어도 4 픽셀, 프레임의 최하부 에지로부터 적어도 8 픽셀, 및 프레임의 좌/우 에지로부터 적어도 12 픽셀이 있도록 설정될 수 있다. 예시된 실시예에서, 각각의 윈도에 대해 다음의 통계들이 수집되고 보고될 수 있다.
Figure pat00092
이러한 실시예에서, AF 통계(842)를 저장하는 데 요구되는 메모리는 16(윈도) 곱하기 8(Gr, R, B, Gb, bayerY_F0, bayerY_F1, camY_F0, camY_F1) 곱하기 32 비트일 수 있다.
따라서, 일 실시예에서, 윈도당 축적된 값은 필터들의 출력(디폴트 설정으로 구성될 수 있음), 입력 픽셀, 또는 입력 픽셀 제곱(input pixel squared) 사이에서 선택될 수 있다. 선택은 16개의 AF 윈도들 각각에 대해 이루어질 수 있고, 주어진 윈도에서 8개의 AF 통계(위에 열거됨) 모두에 적용할 수 있다. 이것은 2개의 겹쳐지는 윈도들 사이의 AF 스코어를 정규화하는 데 이용될 수 있고, 이들 중 하나는 필터의 출력을 수집하도록 구성되고, 이들 중 하나는 입력 픽셀 합을 수집하도록 구성된다. 또한, 2개의 겹쳐지는 윈도들의 경우에 픽셀 편차를 계산하기 위해, 하나의 윈도는 입력 픽셀 합을 수집하도록 구성될 수 있고, 다른 윈도는 입력 픽셀 제곱 합을 수집하도록 구성될 수 있어, 이에 따라 다음과 같이 계산될 수 있는 편차를 제공할 수 있다.
Figure pat00093
AF 통계를 이용하여, ISP 제어 로직(84)(도 7)은 이미지의 초점을 맞추기 위해 미세하지 않은 및 미세한 자동 포커스 "스코어들(scores)"에 기초하여 일련의 초점 길이 조절들을 이용하여 이미지 디바이스의 렌즈의 초점 길이(예를 들어, 30)를 조절하도록 구성될 수 있다. 위에서 논의한 바와 같이, camY에 대한 3x3 필터들(847)은 미세하지 않은 통계를 제공할 수 있고, 수평 필터(843) 및 에지 검출기(844)는 컬러 성분당 비교적 더 미세한 통계를 제공할 수 있고, BayerY에 대한 3x3 필터들(846)은 BayerY에 대해 미세한 통계를 제공할 수 있다. 또한, 데시메이트된 베이어 RGB 신호(853)에 대한 3x3 필터들(854)은 각각의 컬러 채널에 대해 미세하지 않은 통계를 제공할 수 있다. 아래서 더 논의되는 바와 같이, AF 스코어들은 특정 입력 신호에 대한 필터 출력 값들(예를 들어, 수평/에지 검출기 출력들에 기초한, 또는 데시메이트된 베이어 RGB, BayerY, camY 등에 대한 필터 출력들 F0 및 F1의 합)에 기초하여 계산될 수 있다.
도 92는 미세하지 않은 및 미세한 AF 스코어들을 각각 표현하는 곡선들(858 및 860)을 도시하는 그래프(856)를 도시한다. 도시된 바와 같이, 미세하지 않은 통계들에 기초한 미세하지 않은 AF 스코어들은 렌즈의 초점 거리에 걸쳐 더 선형인 응답을 가질 수 있다. 따라서, 임의의 초점 위치에서, 렌즈 이동은 이미지가 더 초점이 맞거나 초점이 맞지 않는지를 검출하는 데 이용될 수 있는 자동 포커스 스코어의 변화를 생성할 수 있다. 예를 들어, 렌즈 조절 후의 미세하지 않은 AF 스코어의 증가는 초점 길이가 정확한 방향으로(예를 들어, 광학 초점 위치를 향해) 조절되고 있음을 표시할 수 있다.
그러나, 광학 초점 위치에 접근함에 따라, 더 작은 렌즈 조절 단계들에 대한 미세하지 않은 AF 스코어의 변화는 감소할 수 있어, 초점 조절의 정확한 방향을 분별하는 것이 어려워진다. 예를 들어, 그래프(856)에서 도시된 바와 같이, 미세하지 않은 위치(coarse position; CP) CP1 및 CP2 사이의 미세하지 않은 AF 스코어의 변화는 ΔC12에 의해 표현되며, 이것은 CP1로부터 CP2로의 미세하지 않음의 증가(increase in the coarse)를 도시한다. 그러나, 도시된 바와 같이, CP3으로부터 CP4로, (최적 초점 위치(optimal focal position; OFP)를 통과하는) 미세하지 않은 AF 스코어의 변화 ΔC34는, 여전히 증가하더라도, 비교적 더 작다. 초점 길이 L을 따르는 위치들 CP1-CP6은 초점 길이를 따르는 자동 포커스 로직에 의해 취해진 스텝 사이즈들에 반드시 대응하도록 할 필요는 없다는 것을 이해해야 한다. 즉, 도시되지 않은 각각의 미세하지 않은 위치 사이에 취해진 부가적인 스텝들이 존재할 수 있다. 예시된 위치들 CP1-CP6은 오직 초점 위치가 OFP에 접근함에 따라 미세하지 않은 AF 스코어의 변화가 어떻게 점차 감소할 수 있는지를 도시하기 위한 것이다.
일단 OFP의 근사 위치가 결정되면(예를 들어, 도 92에 도시된 미세하지 않은 AF 스코어들에 기초하여, OFP의 근사 위치가 CP3과 CP5 사이에 있을 수 있음), 곡선(860)에 의해 표현된 미세한 AF 스코어 값들은 초점 위치를 정제(refine)하기 위해 평가될 수 있다. 예를 들어, 미세한 AF 스코어들은 이미지가 초점에서 벗어날 때 더 평평할 수 있어, 큰 렌즈 위치 변화는 미세한 AF 스코어에서의 큰 변화를 일으키지 않는다. 그러나, 초점 위치가 광학 초점 위치(optical focal position; OFP)에 접근함에 따라, 미세한 AF 스코어는 작은 위치 조절들로 샤프하게(sharply) 변할 수 있다. 따라서, 미세한 AF 스코어 곡선(860)에 피크 또는 정점(862)을 배치함으로써, OFP는 현재의 이미지 장면에 대해 결정될 수 있다. 따라서, 요약해서, 미세하지 않은 AF 스코어들은 광학 초점 위치의 대략적 부근(general vicinity)을 결정하는 데 이용될 수 있고, 미세한 AF 스코어들은 그 부근 내의 더 정확한 위치를 찾아내는 데 이용될 수 있다.
일 실시예에서, 자동 포커스 프로세스는, 위치 0에서 시작하고 위치 L에서 종료하는(그래프(856)에 도시됨), 전체 이용가능한 초점 길이를 따라 미세하지 않은 AF 스코어들을 취득함으로써 시작하고, 다양한 스텝 위치들(예를 들어, CP1-CP6)에서 미세하지 않은 AF 스코어들을 결정할 수 있다. 일 실시예에서, 일단 렌즈의 초점 위치가 위치 L에 도달하였다면, 위치는 다양한 초점 위치들에서 AF 스코어들을 평가하기 전에 0으로 리셋할 수 있다. 예를 들어, 이것은 초점 위치를 제어하는 기계적 요소의 코일 고정 시간(coil settling time)으로 인한 것일 수 있다. 이 실시예에서, 위치 0으로 리셋한 후에, 초점 위치는 먼저 미세하지 않은 AF 스코어의 마이너스 변화를 표시한 위치로 위치 L을 향해 조절될 수 있고, 여기서 위치 CP5는 위치 CP4에 대하여 마이너스 변화 ΔC45를 나타낸다. 위치 CP5로부터, 초점 위치는 미세한 AF 스코어 곡선(860)에서 피크(862)를 검색하면서, 위치 0을 향하는 방향으로 미세하지 않은 AF 스코어 조절들에서 이용된 증분들에 비해 더 작은 증분들로 조절될 수 있다(예를 들어, 위치들 FP1, FP2, FP3 등). 위에서 논의한 바와 같이, 미세한 AF 스코어 곡선(860)에서의 피크(862)에 대응하는 초점 위치 OFP는 현재의 이미지 장면에 대한 최적의 초점 위치일 수 있다.
알 수 있는 바와 같이, OFP를 배치하기 위해 AF 스코어들에 대한 곡선들(858 및 860)에서의 변화들이 분석된다는 점에서, 초점을 위한 최적의 영역 및 최적의 위치를 배치하기 위한 전술한 기법들을 "등판(hill climbing)"이라고 할 수 있다. 또한, 미세하지 않은 AF 스코어들(곡선 858) 및 미세한 AF 스코어들(곡선 860)의 분석은 미세하지 않은 스코어 분석을 위한 동일 사이즈의 스텝들(예를 들어, CP1과 CP2 사이의 거리) 및 미세한 스코어 분석을 위한 동일 사이즈의 스텝들(예를 들어, FP1과 FP2 사이의 거리)을 이용하는 것으로서 도시되지만, 일부 실시예들에서, 스텝 사이즈들은 한 위치에서 다음 위치로의 스코어의 변화에 따라 변할 수 있다. 예를 들어, 일 실시예에서, CP3과 CP4 사이의 스텝 사이즈는, 미세하지 않은 AF 스코어에서의 전체 델타(ΔC34)가 CP1로부터 CP2로의 델타(ΔC12)보다 작기 때문에, CP1과 CP2 사이의 스텝 사이즈에 비해 감소될 수 있다.
이 프로세스를 도시하는 방법(864)이 도 93에 예시된다. 블록(865)에서 시작하면, 위치 0으로부터 위치 L로(도 92), 초점 길이를 따르는 다양한 스텝들에서 이미지 데이터에 대해 미세하지 않은 AF 스코어가 결정된다. 그후, 블록(866)에서, 미세하지 않은 AF 스코어들은 분석되고 미세하지 않은 AF 스코어에서의 제1 마이너스 변화를 보이는 미세하지 않은 위치는 미세한 AF 스코어링 분석을 위한 시작 포인트로서 식별된다. 예를 들어, 후속하여, 블록(867)에서, 초점 위치는 초기 위치 0을 향해 더 작은 스텝들로 스텝 백(step back)되고, 각각의 스텝에서의 미세한 AF 스코어는 AF 스코어 곡선(예를 들어, 도 92의 곡선(860))의 피크가 배치될 때까지 분석된다. 블록(868)에서, 피크에 대응하는 초점 위치는 현재의 이미지 장면에 대한 최적 초점 위치로서 설정된다.
위에서 논의한 바와 같이, 기계적 코일 고정 시간들로 인해, 도 93에 도시된 기법의 실시예는, 각각의 미세하지 않은 위치를 하나씩 분석하고 최적의 초점 영역을 검색하기 보다는, 처음에 전체 초점 길이를 따라 미세하지 않은 AF 스코어들을 취득하도록 적응될 수 있다. 그러나, 코일 고정 시간들이 덜 중요한 다른 실시예들은, 전체 초점 길이를 검색하는 대신에, 각각의 스텝에서 하나씩 미세하지 않은 AF 스코어들을 분석할 수 있다.
특정한 실시예들에서, AF 스코어들은 베이어(Bayer) RGB 데이터로부터 얻어진 화이트 밸런스 루마 값들(white balanced luma values)을 이용하여 결정될 수 있다. 예를 들면, 루마 값, Y는 도 94에서 도시된 바와 같이 2x2 베이어 쿼드(Bayer quad)를 2의 인수로 데시메이트하는 것에 의해, 또는 도 95에서 도시된 바와 같이 4개의 2x2 베이어 쿼드들로 이루어진 4x4 픽셀 블록을 4의 인수로 데시메이트하는 것에 의해 얻어질 수 있다. 하나의 실시예에서, AF 스코어들은 그레디언트(gradients)을 이용하여 결정될 수 있다. 다른 실시예에서, AF 스코어들은 푸리에 영역에서 가중 평균 제곱 각도 오차들(weighted mean squared angular errors)을 최소화하면서 회전 대칭을 제공하는, 샤르 연산자(Scharr operator)를 이용한 3x3 변환을 적용하는 것에 의해 결정될 수 있다. 예로서, (위에 설명된) 공통의 샤르 연산자를 이용한 cam Y에 대한 개략적인(coarse) AF 스코어들의 계산이 아래에 제시되어 있다:
Figure pat00094
여기서 in은 데시메이트된 루마 Y 값을 나타낸다. 다른 실시예들에서, 개략적인 및 미세한 통계치들에 대한 AF 스코어는 다른 3x3 변환들을 이용하여 계산될 수 있다.
광의 상이한 파장들은 렌즈에 의해 상이하게 영향을 받을 수 있기 때문에, 자동 포커스 조정들도 컬러 성분들에 따라서 상이하게 수행될 수 있으며, 이것은 각각의 컬러 성분에 독립적으로 수평 필터(843)가 적용되는 하나의 이유이다. 따라서, 자동 포커스는 렌즈에 색수차(chromatic aberration)가 존재하는 경우에도 여전히 수행될 수 있다. 예를 들면, 색수차들이 존재할 때 적색 및 청색은 전형적으로 녹색에 관하여 상이한 위치 또는 거리에서 포커싱하기 때문에, 포커싱할 방향을 결정하기 위해 각 색에 대한 상대 AF 스코어들이 이용될 수 있다. 이것은 렌즈(870)에 대한 적색, 녹색, 및 청색 채널들에 대한 최적의 초점 위치를 도시하는, 도 96에서 더 잘 설명된다. 도시된 바와 같이, 적색, 녹색, 및 청색에 대한 최적의 초점 위치들은 각각 참조 문자들 R, G, 및 B로 도시되고, 각각은 현재의 초점 위치(872)와 함께, AF 스코어에 대응한다. 일반적으로, 그러한 구성에서는, 녹색 성분들에 대한 최적의 초점 위치에 대응하는 위치, 여기서 위치 G로서 최적의 초점 위치를 선택하는 것이 바람직할 수 있다(예를 들면, 베이어 RGB는 적색 또는 청색 성분들보다 2배의 녹색 성분을 갖기 때문에). 따라서, 최적의 초점 위치에 대하여, 녹색 채널은 가장 높은 자동 포커스 스코어를 나타내어야 하는 것이 기대될 수 있다. 따라서, (렌즈에 더 가까운 것들이 더 높은 AF 스코어들을 가질 때) 각각의 색에 대한 최적의 초점 위치들의 위치들에 기초하여, AF 로직(841) 및 연관된 제어 로직(84)은 청색, 녹색, 및 적색에 대한 상대 AF 스코어들에 기초하여 어느 방향으로 포커싱할지를 결정할 수 있다. 예를 들면, 만약 (도 96에서 도시된 바와 같이) 청색 채널이 녹색 채널에 비해 더 높은 AF 스코어를 갖는다면, 현재의 위치(872)로부터 양의 방향으로 먼저 분석할 필요 없이 초점 위치는 음의 방향으로(이미지 센서 쪽으로) 조절된다. 몇몇 실시예들에서는, 색상관온도(color correlated temperatures; CCT)를 이용한 발광체 검출 또는 분석이 수행될 수 있다.
또한, 위에 언급된 바와 같이, 분산 스코어들(variance scores)이 또한 이용될 수 있다. 예를 들면, 픽셀 합들 및 픽셀 제곱 합 값들이 블록 사이즈들(예를 들면, 8x8 - 32x32 픽셀들)에 대하여 누적될 수 있고, 분산 스코어들(예를 들면, avg_pixel2)-(avg_pixel)^2)을 얻기 위해 이용될 수 있다. 분산들은 각각의 윈도에 대한 총 분산 스코어를 얻기 위해 합산될 수 있다. 보다 작은 블록 사이즈들은 미세한 분산 스코어들을 얻기 위해 이용될 수 있고, 보다 큰 블록 사이즈들은 개략적인 분산 스코어들을 얻기 위해 이용될 수 있다.
도 82의 3A 통계 로직(742)를 참조하면, 그 로직(742)은 또한 성분 히스토그램들(874 및 876)을 수집하도록 구성될 수 있다. 이해될 바와 같이, 히스토그램들은 이미지에서 픽셀 레벨 분포를 분석하기 위해 이용될 수 있다. 이것은 히스토그램 명세화(histogram specification)(히스토그램 매칭)를 결정하기 위해 히스토그램 데이터가 이용되는, 히스토그램 평활화(histogram equalization)와 같은, 특정 기능들을 구현하는 데 유용할 수 있다. 예로서, 루마 히스토그램들은 AE를 위해(예를 들면, 센서 통합 시간들을 조정/설정하기 위해) 이용될 수 있고, 컬러 히스토그램들은 AWB를 위해 이용될 수 있다. 본 실시예에서, 히스토그램들은, 빈 사이즈(BinSize)에 의해 지정된 바와 같이, 각각의 컬러 성분에 대하여 256, 128, 64 또는 32 빈들일 수 있다(픽셀의 상위 8, 7, 6, 및 5 비트는 각각 빈을 결정하기 위해 이용된다). 예를 들면, 픽셀 데이터가 14 비트인 경우, 통계를 위해 픽셀 데이터의 어떤 범위(예를 들면, 어느 8 비트)가 수집되는지를 결정하기 위해 0-6 사이의 추가적인 스케일 인자(scale factor) 및 오프셋이 지정될 수 있다. 빈 넘버(bin number)는 다음과 같이 획득될 수 있다:
Figure pat00095
하나의 실시예에서, 컬러 히스토그램 빈들은 빈 인덱스들이 범위 [0,2^(8-BinSize)]에 있는 경우에만 증가된다:
Figure pat00096
본 실시예에서, 통계 프로세싱 유닛(142)은 2개의 히스토그램 유닛을 포함할 수 있다. 이 제1 히스토그램(874)(Hist0)는 4x4 데시메이션 후에 통계 수집의 일부로서 픽셀 데이터를 수집하도록 구성될 수 있다. Hist0에 대하여, 컴포넌트들은 선택 회로(880)를 이용하여 RGB, sRGBlinear, sRGB 또는 YC1C2이도록 선택될 수 있다. 제2 히스토그램(876)(Hist1)은, 도 96에서 더 상세히 도시된 바와 같이, 통계 파이프라인 전에(결함 픽셀 정정 로직(738) 전에) 픽셀 데이터를 수집하도록 구성될 수 있다. 예를 들면, (146으로부터 출력된) 미가공(raw) 베이어 RGB 데이터는, 아래에 더 설명된 바와 같이, 픽셀들을 스킵(skip)하는 것에 의해 로직(882)을 이용하여 (신호(878)를 생성하도록) 데시메이트될 수 있다. 녹색 채널에 대하여, 색은 Gr, Gb 또는 Gr과 Gb 둘 다 사이에서 선택될 수 있다(Gr과 Gb 둘 다의 카운트들은 녹색 빈들에 누적된다).
2개의 히스토그램들 사이에 히스토그램 빈 폭을 동일하게 유지하기 위하여, Hist1은 4개의 픽셀마다(하나 걸러 하나의 베이어 쿼드마다) 픽셀 데이터를 수집하도록 구성될 수 있다. 히스토그램 윈도의 시작은 히스토그램이 누적을 시작하는 제1 베이어 쿼드 위치를 결정한다. 이 위치에서 시작하여, Hist1에 대하여 수평으로 및 수직으로 하나 걸러 하나의 베이어 쿼드가 스킵된다. 윈도 시작 위치는 Hist1에 대하여 임의의 픽셀 위치일 수 있고, 따라서 히스토그램 계산에 의해 스킵되는 픽셀들은 시작 윈도 위치를 변경하는 것에 의해 선택될 수 있다. Hist1은 블록(739)에서 동적인 블랙 레벨 보상을 돕기 위해 블랙 레벨에 가까운, 도 97에서 884로 표현된, 데이터를 수집하기 위해 이용될 수 있다. 따라서, 도 97에서는 설명을 위해 3A 통계 로직(742)으로부터 분리된 것으로 도시되어 있지만, 히스토그램들(876)은 실제로 메모리에 기입되는 통계의 일부일 수 있고, 실제로 통계 프로세싱 유닛(142) 내에 물리적으로 배치될 수 있다는 것을 이해해야 한다.
본 실시예에서, 적색(R) 및 청색(B) 빈들은 20 비트일 수 있고, 녹색(G) 빈은 21 비트이다(녹색은 Hist1에서 Gr 및 Gb 누적을 수용하기 위해 더 크다). 이것은 4160x3120 픽셀(12 MP)의 최대 픽처 사이즈를 허용한다. 요구되는 내부 메모리 사이즈는 3x256x20(1) 비트(3 컬러 성분, 256 빈)이다.
메모리 포맷에 관하여, AWB/AE 윈도, AF 윈도, 2D 컬러 히스토그램, 및 성분 히스토그램들에 대한 통계들은 펌웨어에 의한 이른 액세스를 허용하기 위해 레지스터들에 맵핑될 수 있다. 하나의 실시예에서, 메모리에 통계를 기입하기 위해 2개의 메모리 포인터가 이용될 수 있는데, 하나는 타일 통계(863)를 위한 것이고, 하나는 루마 행 합계(luma row sums)(859)를 위한 것이고, 다른 모든 수집된 통계들이 뒤따른다. 모든 통계들은 DMA 메모리일 수 있는 외부 메모리에 기입된다. 메모리 어드레스 레지스터들은 메모리 내의 새로운 위치가 프레임마다 지정될 수 있도록 더블 버퍼링될 수 있다
ISP 프론트-엔드 로직(80)으로부터 다운스트림에 있는 ISP 파이프 로직(82)에 대한 상세한 설명을 시작하기 전에, 통계 프로세싱 유닛들(142 및 144)(예를 들면, 로직 블록들(738, 739, 740, 741, 및 742)) 및 ISP 프론트-엔드 픽셀 프로세싱 유닛(150)(예를 들면, 로직 블록들(650 및 652)) 내의 다양한 기능 로직 블록들의 배열은 본 기법의 하나의 실시예만을 설명하기 위해 의도되어 있다는 것을 이해해야 한다. 실제로, 다른 실시예들에서, 여기에 설명된 로직 블록들은 상이한 순서로 배열될 수 있고, 또는 여기에 구체적으로 설명되지 않은 추가적인 이미지 처리 기능들을 수행할 수 있는 추가적인 로직 블록들을 포함할 수 있다. 또한, 렌즈 음영 보정, 결함 픽셀 검출/보정, 및 블랙 레벨 보상과 같은, 통계 프로세싱 유닛들(예를 들면, 142 및 144)에서 수행되는 이미지 처리 동작들은 통계 데이터를 수집하기 위해 통계 프로세싱 유닛들 내에서 수행된다는 것을 이해해야 한다. 따라서, 통계 프로세싱 유닛들에 의해 수신된 이미지 데이터에 대해 수행되는 처리 동작들은 ISP 프론트-엔드 픽셀 프로세싱 로직(150)으로부터 출력되어 ISP 파이프 프로세싱 로직(82)으로 전달되는 이미지 신호(109)(FEProcOut)에 실제로 반영되지 않는다.
계속하기 전에, 충분한 처리 시간 및 여기에 설명된 다양한 동작들의 처리 요건들 중 다수의 사이에 유사점이 주어지면, 파이프라인 특징(pipe-lined nature)보다는 순차적인 방식으로 이미지 처리를 수행하도록 여기에 제시된 기능 블록들을 재구성하는 것이 가능하다는 점을 유념해야 한다. 이해될 바와 같이, 이것은 전체 하드웨어 구현 비용을 더 감소시킬 수 있지만, 또한 외부 메모리에 대역폭을 증가시킬 수 있다(예를 들면, 중간 결과/데이터를 캐싱/저장하기 위해).
ISP 파이프라인("파이프") 프로세싱 로직
위에서는 ISP 프론트-엔드 로직(80)을 상세히 설명하였고, 본 설명은 이제 ISP 파이프 프로세싱 로직(82)으로 초점을 옮길 것이다. 일반적으로, ISP 파이프 로직(82)의 기능은 ISP 프론트-엔드 로직(80)으로부터 제공되거나 메모리(108)로부터 검색될 수 있는 미가공 이미지 데이터를 수신하고, 이미지 데이터를 디스플레이 장치(28)에 출력하기 전에 추가적인 이미지 처리 동작들을 수행하는 것이다.
ISP 파이프 로직(82)의 실시예를 나타내는 블록도가 도 98에 도시되어 있다. 도시된 바와 같이, ISP 파이프 로직(82)은 미가공 프로세싱 로직(900), RGB 프로세싱 로직(902), 및 YCbCr 프로세싱 로직(904)을 포함할 수 있다. 미가공 프로세싱 로직(900)은 결함 픽셀 검출 및 보정, 렌즈 음영 보정, 디모자이킹(demosaicing)뿐만 아니라, 아래에 더 설명될, 자동 화이트 밸런스를 위한 이득을 적용하는 것 및/또는 블랙 레벨을 설정하는 것과 같은, 다양한 이미지 처리 동작들을 수행할 수 있다. 본 실시예에서 도시된 바와 같이, 미가공 프로세싱 로직(900)에의 입력 신호(908)는, 선택 로직(906)의 현재 구성에 따라, ISP 프론트-엔드 로직(80)으로부터의 미가공 픽셀 출력(109)(신호 FEProcOut) 또는 메모리(108)로부터의 미가공 픽셀 데이터(112)일 수 있다.
미가공 프로세싱 로직(900) 내에서 수행되는 디모자이킹 동작들의 결과로서, 이미지 신호 출력(910)은 RGB 영역에 있을 수 있고, 그 후 RGB 프로세싱 로직(902)으로 전달될 수 있다. 예를 들면, 도 98에서 도시된 바와 같이, RGB 프로세싱 로직(902)은, 선택 로직(914)의 현재 구성에 따라, 출력 신호(910) 또는 메모리(108)로부터의 RGB 이미지 신호(912)일 수 있는, 신호(916)를 수신한다. RGB 프로세싱 로직(902)은, 컬러 보정(예를 들면, 컬러 보정 행렬을 이용한), 자동 화이트 밸런싱을 위한 색 이득의 적용뿐만 아니라, 아래에 더 설명될, 글로벌 색조 맵핑(global tone mapping)을 포함하는, 다양한 RGB 색 조정 동작들을 제공할 수 있다. RGB 프로세싱 로직(904)은 또한 YCbCr(루마/크로마) 색 공간으로의 RGB 이미지 데이터의 색 공간 변환을 제공할 수 있다. 따라서, 이미지 신호 출력(918)은 YCbCr 영역에 있을 수 있고, 그 후 YCbCr 프로세싱 로직(904)으로 전달될 수 있다.
예를 들면, 도 98에서 도시된 바와 같이, YCbCr 프로세싱 로직(904)은, 선택 로직(922)의 현재 구성에 따라, RGB 프로세싱 로직(902)으로부터의 출력 신호(918) 또는 메모리(108)로부터의 YCbCr 신호(920)일 수 있는, 신호(924)를 수신한다. 아래에 더 상세히 설명될 바와 같이, YCbCr 프로세싱 로직(904)은 스케일링, 크로마 억제, 루마 샤프닝(luma sharpening), 밝기, 콘트라스트(contrast), 및 색(BCC) 조정, YCbCr 감마 맵핑, 크로마 데시메이션 등을 포함하는, YCbCr 색 공간에서의 이미지 처리 동작들을 제공할 수 있다. YCbCr 프로세싱 로직(904)의 이미지 신호 출력(926)은 메모리(108)에 전송될 수 있고, 또는 이미지 신호(114)(도 7)로서 ISP 파이프 프로세싱 로직(82)으로부터 출력될 수 있다. 다음으로, 도 7에서 도시된 이미지 처리 회로(32)의 실시예에 따라, 이미지 신호(114)는 사용자가 보기 위해 디스플레이 장치(28)에 전송될 수 있고(직접 또는 메모리(108)를 통해), 또는 압축 엔진(예를 들면, 인코더(118)), CPU/GPU, 그래픽 엔진 등을 이용하여 더 처리될 수 있다. 게다가, 이미지 처리 회로(32)(예를 들면, 도 8)에 ISP 백-엔드 유닛(120)이 포함되는 실시예에서, 이미지 신호(114)는 추가적인 다운스트림 후처리(down-stream post-processing)를 위해 ISP 백-엔드 프로세싱 로직(120)에 전송될 수 있다.
본 기법의 실시예들에 따라, ISP 파이프 로직(82)은 8 비트, 10 비트, 12 비트, 또는 14 비트 포맷으로 미가공 픽셀 데이터의 처리를 지원할 수 있다. 예를 들면, 하나의 실시예에서, 8 비트, 10 비트, 또는 12 비트 입력 데이터는 미가공 프로세싱 로직(900)의 입력에서 14 비트로 변환될 수 있고, 미가공 처리 및 RGB 처리 동작들은 14 비트 정밀도로 수행될 수 있다. 후자의 실시예에서, 14비트 이미지 데이터는 YCbCr 색 공간으로의 RGB 데이터의 변환에 앞서 10 비트로 다운샘플링될 수 있고, YCbCr 처리(로직(904))는 10 비트 정밀도로 수행될 수 있다.
ISP 파이프 프로세싱 로직(82)에 의해 제공되는 다양한 기능들의 포괄적인 설명을 제공하기 위하여, 미가공 프로세싱 로직(900), RGB 프로세싱 로직(902), 및 YCbCr 프로세싱 로직(904) 각각은 물론, 로직(900, 902, 및 904)의 각각의 유닛에서 구현될 수 있는 다양한 이미지 처리 동작들을 수행하기 위한 내부 로직이, 미가공 프로세싱 로직(900)부터 시작하여, 아래에 순차적으로 설명될 것이다. 예를 들면, 이제 도 99를 참조하면, 본 기법의 실시예에 따라, 미가공 프로세싱 로직(900)의 실시예의 보다 상세한 도를 도시하는 블록도가 도시되어 있다. 도시된 바와 같이, 미가공 프로세싱 로직(900)은 이득, 오프셋, 및 클램핑(GOC) 로직(930), 결함 픽셀 검출/보정(DPDC) 로직(932), 잡음 감소 로직(934), 렌즈 음영 보정 로직(936), GOC 로직(938), 및 디모자이킹 로직(940)을 포함한다. 또한, 이하 설명된 예들은 이미지 센서(들)(90)를 베이어 컬러 필터 어레이의 사용을 가정하지만, 본 기법의 다른 실시예들은 다른 유형의 컬러 필터들을 사용할 수도 있다는 것을 이해해야 한다.
미가공 이미지 신호일 수 있는 입력 신호(908)는 먼저 이득, 오프셋, 및 클램핑(GOC) 로직(930)에 의해 수신된다. GOC 로직(930)은, 도 68에서 위에 설명한 바와 같이, ISP 프론트-엔드 로직(80)의 통계 프로세싱 유닛(142)의 BLC 로직(739)에 관하여, 유사한 기능들을 제공할 수 있고 유사한 방식으로 구현될 수 있다. 예를 들면, GOC 로직(930)은 베이어 이미지 센서의 각각의 컬러 성분 R, B, Gr, 및 Gb에 대하여 독립적으로 디지털 이득, 오프셋 및 클램핑(클리핑)을 제공할 수 있다. 특히, GOC 로직(930)은 자동 화이트 밸런스를 수행하거나 미가공 이미지 데이터의 블랙 레벨을 설정할 수 있다. 더욱이, 몇몇 실시예들에서, GOC 로직(930)은 또한 Gr 및 Gb 컬러 성분들 사이의 오프셋을 보정 또는 보상하기 위해 이용될 수 있다.
동작 중에, 현재의 픽셀에 대한 입력 값은 먼저 부호가 있는 값(signed value)에 의해 오프셋되고 이득과 곱해진다. 이 동작은 상기 수학식 11에서 제시된 공식을 이용하여 수행될 수 있고, 여기서 X는 주어진 컬러 성분에 대한 입력 픽셀 값을 나타내고 R, B, Gr, 또는 Gb, O[c]는 현재의 컬러 성분 c에 대한 부호가 있는 16 비트 오프셋을 나타내고, G[c]는 컬러 성분 c에 대한 이득 값을 나타낸다. G[c]에 대한 값들은 통계 처리 동안에(예를 들면, ISP 프론트-엔드 블록(80)에서) 이전에 결정될 수 있다. 하나의 실시예에서, 이득 G[c]는 2개의 정수 비트들 및 14개의 분수 비트들(예를 들면, 2.14 부동 소수점 표현)을 갖는 16 비트의 부호가 없는 수일 수 있고, 이득 G[c]는 반올림(rounding)이 적용될 수 있다. 단지 예로서, 이득 G[c]는 0 내지 4X 사이의 범위를 가질 수 있다.
수학식 11로부터의 (이득 G[c] 및 오프셋 O[c]를 포함하는) 계산된 픽셀 값 Y는 그 후 수학식 12에 따라 최소 및 최대 범위에 클리핑된다. 위에 설명된 바와 같이, 변수들 min[c] 및 max[c]는, 각각, 최소 및 최대 출력 값들에 대한 부호가 있는 16 비트의 "클리핑 값들"을 나타낼 수 있다. 하나의 실시예에서, GOC 로직(930)은 또한 각각의 컬러 성분에 대하여, 각각, 최대 및 최소 범위들의 위아래에 클리핑된 픽셀들의 수의 카운트를 유지하도록 구성될 수 있다.
그 후, GOC 로직(930)의 출력은 결함 픽셀 검출 및 보정 로직(932)으로 전달된다. 도 68(DPDC 로직(738))에 관하여 위에 설명된 바와 같이, 결함 픽셀들은 다수의 요인들에 기인할 수 있고, "핫(hot)"(또는 리키(leaky)) 픽셀들, "스턱(stuck)" 픽셀들, 및 "데드(dead)" 픽셀들을 포함할 수 있고, 핫 픽셀들은 비결함 픽셀들에 관하여 정상보다 높은 전하 누출을 나타내고, 따라서 비결함 픽셀보다 더 밝은 것 같이 보일 수 있고, 스턱 픽셀은 항상 온인(예를 들면, 완전히 충전된) 것처럼 보이고 따라서 더 밝게 보이는 반면, 데드 픽셀은 항상 오프인 것처럼 보인다. 따라서, 고장 시나리오들의 상이한 유형들을 식별하고 다루기에 족할 만큼 강건한 픽셀 검출 체계를 갖는 것이 바람직할 수 있다. 특히, 동적인 결함 검출/보정만을 제공할 수 있는, 프론트-엔드 DPDC 로직(738)과 비교할 때, 파이프 DPDC 로직(932)은 고정된 또는 정적인 결함 검출/보정, 동적인 결함 검출/보정뿐만 아니라, 반점(speckle) 제거도 제공할 수 있다.
현재 개시된 기법들의 실시예들에 따라, DPDC 로직(932)에 의해 수행되는 결함 픽셀 보정/검출은 각각의 컬러 성분(예를 들면, R, B, Gr, 및 Gb)에 대하여 독립적으로 일어날 수 있고, 결함 픽셀들을 검출할 뿐만 아니라, 검출된 결함 픽셀들을 보정하기 위한 다양한 동작들을 포함할 수 있다. 예를 들면, 하나의 실시예에서, 결함 픽셀 검출 동작들은 정적인 결함, 동적인 결함의 검출뿐만 아니라, 이미징 센서에 존재할 수 있는 전기 간섭 또는 잡음(예를 들면, 광자 잡음)에 관련될 수 있는, 반점의 검출도 제공할 수 있다. 유추하여, 반점은 텔레비전 디스플레이와 같은 디스플레이 상에 정전기가 나타날 수 있는 방식과 유사하게, 외관상 랜덤 잡음 아티팩트(random noise artifacts)로서 이미지 상에 나타날 수 있다. 더욱이, 상기한 바와 같이, 동적인 결함 보정은, 주어진 시간에 결함 있는 것으로서 픽셀을 특징짓는 것이 이웃 픽셀들에서의 이미지 데이터에 의존할 수 있다는 점에서 동적이라고 간주된다. 예를 들면, 항상 최대 밝기에 있는 스턱 픽셀은 만약 그 스턱 픽셀의 위치가 밝은 백색들에 의해 지배되는 현재의 이미지의 영역에 있다면 결함 픽셀로 간주되지 않을 수 있다. 반대로, 만약 그 스턱 픽셀이 블랙 또는 더 어두운 색들에 의해 지배되는 현재의 이미지의 영역에 있다면, 그 스턱 픽셀은 DPDC 로직(932)에 의한 처리 동안에 결함 픽셀로서 식별되고 그에 따라서 보정될 수 있다.
정적인 결함 검출에 관하여, 각각의 픽셀의 위치는, 결함 있는 것으로 알려져 있는 픽셀들의 위치에 대응하는 데이터를 저장할 수 있는, 정적인 결함 테이블과 비교된다. 예를 들면, 하나의 실시예에서, DPDC 로직(932)은 (예를 들면, 카운터 메커니즘 또는 레지스터를 이용하여) 결함 픽셀들의 검출을 모니터할 수 있고, 만약 특정 픽셀이 반복해서 고장인 것으로 관찰된다면, 그 픽셀의 위치는 정적인 결함 테이블에 저장된다. 따라서, 정적인 결함 검출 동안에, 만약 현재의 픽셀의 위치가 정적인 결함 테이블에 있다고 결정되면, 현재의 픽셀은 결함 픽셀인 것으로 식별되고, 교체 값이 결정되어 임시로 저장된다. 하나의 실시예에서, 교체 값은 동일한 컬러 성분의 (스캔 순서에 기초한) 이전의 픽셀의 값일 수 있다. 교체 값은, 아래에 설명될 바와 같이, 동적인/반점 결함 검출 및 보정 동안에 정적인 결함을 보정하기 위해 이용될 수 있다. 또한, 만약 이전의 픽셀이 미가공 프레임(310)(도 23)의 밖에 있다면, 그것의 값은 사용되지 않고, 정적인 결함은 동적인 결함 보정 프로세스 동안에 보정될 수 있다. 게다가, 메모리 고려 사항 때문에, 정적인 결함 테이블은 한정된 수의 위치 엔트리들을 저장할 수 있다. 예를 들면, 하나의 실시예에서, 정적인 결함 테이블은 이미지 데이터의 2개의 라인들마다 총 16개의 위치를 저장하도록 구성된 FIFO 큐로서 구현될 수 있다. 그럼에도 불구하고, 정적인 결함 테이블에서 정의된 위치들은 (아래에 설명된 동적인 결함 검출 프로세스를 통해서보다는) 이전의 픽셀 교체 값을 이용하여 보정될 수 있다. 위에 언급한 바와 같이, 본 기법의 실시예들은 또한 정적인 결함 테이블을 시간에 걸쳐 간헐적으로 업데이트하는 것을 제공할 수 있다.
실시예들은 정적인 결함 테이블이 온칩 메모리 또는 오프칩 메모리에서 구현되는 것을 제공할 수 있다. 이해될 바와 같이, 온칩 구현을 이용하는 것은 전체 칩 면적/사이즈를 증가시킬 수 있는 반면, 오프칩 구현을 이용하는 것은 칩 면적/사이즈를 감소시킬 수 있지만, 메모리 대역폭 요건을 증가시킬 수 있다. 따라서, 정적인 결함 테이블은 구체적인 구현 요건, 즉, 정적인 결함 테이블 내에 저장되어야 할 픽셀들의 총수에 따라서 온칩 또는 오프칩으로 구현될 수 있다.
동적인 결함 및 반점 검출 프로세스들은 위에 설명된 정적인 결함 검출 프로세스에 관하여 타임시프트(time-shift)될 수 있다. 예를 들면, 하나의 실시예에서, 동적인 결함 및 반점 검출 프로세스는 정적인 결함 검출 프로세스가 픽셀들의 2개의 스캔 라인들(예를 들면, 행들)을 분석한 후에 시작될 수 있다. 이해될 수 있는 바와 같이, 이것은 동적인/반점 검출이 일어나기 전에 정적인 결함들의 식별 및 그것들 각각의 교체 값들이 결정되는 것을 허용한다. 예를 들면, 동적인/반점 검출 프로세스 동안에, 만약 현재의 픽셀이 이전에 정적인 결함이라고 표시되었다면, 동적인/반점 검출 동작들을 적용하기보다는, 정적인 결함은 단순히 이전에 평가된 교체 값을 이용하여 보정될 수 있다.
동적인 결함 및 반점 검출에 관하여, 이러한 프로세스들은 순차적으로 또는 병행하여 일어날 수 있다. DPDC 로직(932)에 의해 수행되는 동적인 결함 및 반점 검출 및 보정은 픽셀 대 픽셀 방향 그레디언트(pixel-to-pixel direction gradients)를 이용한 적응 에지 검출(adaptive edge detection)에 의존할 수 있다. 하나의 실시예에서, DPDC 로직(932)은 미가공 프레임(310)(도 23) 내에 있는 동일한 컬러 성분을 갖는 현재의 픽셀의 8개의 인접한 이웃들이 사용되는 것을 선택할 수 있다. 즉, 현재의 픽셀들 및 그것의 8개의 인접한 이웃들 P0, P1, P2, P3, P4, P5, P6, 및 P7은, 아래에 도 100에서 도시된 바와 같이, 3x3 영역을 형성할 수 있다.
그러나, 현재의 픽셀 P의 위치에 따라서, 미가공 프레임(310) 밖의 픽셀들은 픽셀 대 픽셀 그레디언트를 계산할 때 고려되지 않는다는 것에 주목해야 한다. 예를 들면, 도 100에서 도시된 "상부-좌측(top-left)" 케이스(942)에 관하여, 현재의 픽셀 P는 미가공 프레임(310)의 상부-좌측 코너에 있고, 따라서, 미가공 프레임(310) 밖의 이웃 픽셀들 P0, P1, P2, P3, 및 P5는 고려되지 않고, 픽셀들 P4, P6, 및 P7만이 남겨진다(N=3). "상부(top)" 케이스(944)에서, 현재의 픽셀 P는 미가공 프레임(310)의 최상부 에지에 있고, 따라서, 미가공 프레임(310) 밖의 이웃 픽셀들 P0, P1, 및 P2는 고려되지 않고, 픽셀들 P3, P4, P5, P6, 및 P7만이 남겨진다(N=5). 다음으로, "상부-우측(top-right)" 케이스(946)에서, 현재의 픽셀 P는 미가공 프레임(310)의 상부-우측 코너에 있고, 따라서, 미가공 프레임(310) 밖의 이웃 픽셀들 P0, P1, P2, P4, 및 P7은 고려되지 않고, 픽셀들 P3, P5, 및 P6만이 남겨진다(N=3). "좌측(left)" 케이스(948)에서, 현재의 픽셀 P는 미가공 프레임(310)의 최좌측 에지에 있고, 따라서, 미가공 프레임(310) 밖의 이웃 픽셀들 P0, P3, 및 P5는 고려되지 않고, 픽셀들 P1, P2, P4, P6, 및 P7만이 남겨진다(N=5).
"중앙(center)" 케이스(950)에서, 모든 픽셀들 P0-P7은 미가공 프레임(310) 안에 있고 따라서 픽셀 대 픽셀 그레디언트를 결정하는 데 이용된다(N=8). "우측(right)" 케이스(952)에서, 현재의 픽셀 P는 미가공 프레임(310)의 최우측 에지에 있고, 따라서, 미가공 프레임(310) 밖의 이웃 픽셀들 P2, P4, 및 P7은 고려되지 않고, 픽셀들 P0, P1, P3, P5, 및 P6만이 남겨진다(N=5). 추가로, "하부-좌측(bottom-left)" 케이스(954)에서, 현재의 픽셀 P는 미가공 프레임(310)의 하부-좌측 코너에 있고, 따라서, 미가공 프레임(310) 밖의 이웃 픽셀들 P0, P3, P5, P6, 및 P7은 고려되지 않고, 픽셀들 P1, P2, 및 P4만이 남겨진다(N=3). "하부(bottom)" 케이스(956)에서, 현재의 픽셀 P는 미가공 프레임(310)의 최하부 에지에 있고, 따라서, 미가공 프레임(310) 밖의 이웃 픽셀들 P5, P6, P7은 고려되지 않고, 픽셀들 P0, P1, P2, P3, 및 P4만이 남겨진다(N=5). 마지막으로, "하부-우측(bottom-right)" 케이스(958)에서, 현재의 픽셀 P는 미가공 프레임(310)의 하부-우측 코너에 있고, 따라서, 미가공 프레임(310) 밖의 이웃 픽셀들 P2, P4, P5, P6, 및 P7은 고려되지 않고, 픽셀들 P0, P1, 및 P3만이 남겨진다(N=3).
따라서, 현재의 픽셀 P의 위치에 따라서, 픽셀 대 픽셀 그레디언트를 결정하는 데 이용되는 픽셀들의 수는 3, 5, 또는 8일 수 있다. 도시된 실시예에서, 픽처 경계(예를 들면, 미가공 프레임(310)) 내의 각각의 이웃 픽셀(k = 0 내지 7)에 대하여, 픽셀 대 픽셀 그레디언트는 다음과 같이 계산될 수 있다:
Figure pat00097
또한, 평균 그레디언트 Gav는 하기 수학식들에 의해 제시된 바와 같이, 현재의 픽셀과 그것의 주위의 픽셀들의 평균 Pav 사이의 차이로서 계산될 수 있다:
Figure pat00098
Figure pat00099
픽셀 대 픽셀 그레디언트 값들(수학식 51)은 동적인 결함 케이스를 결정하는 데 이용될 수 있고, 이웃 픽셀들의 평균(수학식 52a 및 52b)은, 아래에 더 설명되는 바와 같이, 반점 케이스들을 식별하는 데 이용될 수 있다.
하나의 실시예에서, 동적인 결함 검출은 다음과 같이 DPDC 로직(932)에 의해 수행될 수 있다. 먼저, 특정 수의 그레디언트들 Gk가 변수 dynTh(동적인 결함 임계값)에 의해 표시된, 특정한 임계값에 또는 그보다 아래에 있다면 픽셀은 결함이 있다고 가정한다. 따라서, 각각의 픽셀에 대하여, 임계값 dynTh에 또는 그보다 아래에 있는 픽처 경계들 내의 이웃 픽셀들에 대한 그레디언트들의 수의 카운트(C)가 누적된다. 임계값 dynTh는 고정된 임계값 성분과 주위의 픽셀들에 존재하는 "활성(activity)"에 의존할 수 있는 동적인 임계값 성분의 조합일 수 있다. 예를 들면, 하나의 실시예에서, dynTh에 대한 동적인 임계값 성분은, 아래에 제시된 바와 같이, 평균 픽셀 값들 Pav(수학식 52a)와 각각의 이웃 픽셀 사이의 절대 차이를 합산한 것에 기초하여 고주파 성분 값 Phf를 계산하는 것에 의해 결정될 수 있다.
Figure pat00100
픽셀이 이미지 코너(N=3) 또는 이미지 에지(N=5)에 위치하는 경우에, Phf는 각각 8/3 또는 8/5과 곱해질 수 있다. 이해될 수 있는 바와 같이, 이것은 고주파 성분 Phf가 8개의 이웃 픽셀들(N=8)에 기초하여 정규화되는 것을 보장한다.
일단 Phf가 결정되면, 동적인 결함 검출 임계값 dynTh은 아래와 같이 계산될 수 있다:
Figure pat00101
여기서 dynTh1은 고정된 임계값 성분을 나타내고, dynTh2는 동적인 임계값 성분을 나타내고, 수학식 53에서 Phf에 대한 승수이다. 각각의 컬러 성분에 대하여 상이한 고정된 임계값 성분 dynTh1이 제공될 수 있지만, 동일한 색의 각 픽셀에 대하여, dynTh1은 동일하다. 단지 예로서, dynTh1은 적어도 이미지 내의 잡음의 분산보다 위에 있도록 설정될 수 있다.
동적인 임계값 성분 dynTh2는 이미지의 어떤 특징에 기초하여 결정될 수 있다. 예를 들면, 하나의 실시예에서, dynTh2는 노출 및/또는 센서 통합 시간에 관한 저장된 경험적 데이터를 이용하여 결정될 수 있다. 이 경험적 데이터는 이미지 센서(예를 들면, 90)의 캘리브레이션 동안에 결정될 수 있고, dynTh2에 대하여 선택될 수 있는 동적인 임계값 성분 값들을 다수의 데이터 포인트들 각각과 연관시킬 수 있다. 따라서, ISP 프론트-엔드 로직(80)에서의 통계 처리 동안에 결정될 수 있는, 현재의 노출 및/또는 센서 통합 시간 값에 기초하여, dynTh2는 현재의 노출 및/또는 센서 통합 시간 값에 대응하는 저장된 경험적 데이터로부터 동적인 임계값 성분 값을 선택하는 것에 의해 결정될 수 있다. 게다가, 만약 현재의 노출 및/또는 센서 통합 시간 값이 경험적 데이터 포인트들 중 하나에 직접 대응하지 않는다면, dynTh2는 현재의 노출 및/또는 센서 통합 시간 값이 그 사이에 있는 데이터 포인트들과 연관된 동적인 임계값 성분 값들을 보간하는 것에 의해 결정될 수 있다. 또한, 고정된 임계값 성분 dynTh1과 같이, 동적인 임계값 성분 dynTh2는 각각의 컬러 성분에 대하여 상이한 값들을 가질 수 있다. 따라서, 합성 임계값 dynTh는 각각의 컬러 성분(예를 들면, R, B, Gr, Gb)에 대하여 변할 수 있다.
위에 언급한 바와 같이, 각각의 픽셀에 대하여, 임계값 dynTh에 또는 그보다 아래에 있는 픽처 경계들 내의 이웃 픽셀들에 대한 그레디언트들의 수의 카운트 C가 결정된다. 예를 들면, 미가공 프레임(310) 내의 각각의 이웃 픽셀에 대하여, 임계값 dynTh에 또는 그보다 아래에 있는 그레디언트들 Gk의 누적된 카운트 C는 다음과 같이 계산된다:
Figure pat00102
다음으로, 만약 누적된 카운트 C가 변수 dynMaxC로 표시된, 최대 카운트 이하인 것으로 결정되면, 픽셀은 동적인 결함으로 간주될 수 있다. 하나의 실시예에서, N=3(코너), N=5(에지), 및 N=8 조건들에 대하여 dynMaxC에 대한 상이한 값들이 제공될 수 있다. 이 로직은 아래에 표현된다.
Figure pat00103
위에 언급한 바와 같이, 결함 픽셀들의 위치는 정적인 결함 테이블에 저장될 수 있다. 몇몇 실시예들에서, 현재의 픽셀에 대한 동적인 결함 검출 동안에 계산된 최소 그레디언트 값(min(Gk))은 저장될 수 있고, 보다 큰 최소 그레디언트 값은 결함의 보다 큰 "심각성(severity)"을 나타내고 덜 심각한 결함들이 보정되기 전에 픽셀 보정 동안에 보정되어야 하도록, 결함 픽셀들을 분류하기 위해 이용될 수 있다. 하나의 실시예에서, 픽셀은, 예를 들면 시간에 걸쳐 결함 픽셀들의 위치들을 필터링하는 것에 의해, 정적인 결함 테이블에 저장되기 전에 다수의 이미징 프레임들에 걸쳐서 처리될 필요가 있을 수 있다. 후자의 실시예에서, 결함 픽셀의 위치는 동일한 위치에서 특정한 수의 연속 이미지들에서 결함이 나타나는 경우에만 정적인 결함 테이블에 저장될 수 있다. 또한, 몇몇 실시예들에서, 정적인 결함 테이블은 최소 그레디언트 값들에 기초하여 저장된 결함 픽셀 위치들을 분류하도록 구성될 수 있다. 예를 들면, 가장 높은 최소 그레디언트 값은 보다 큰 "심각성"의 결함을 나타낼 수 있다. 이러한 방식으로 위치들을 순서화(order)하는 것에 의해, 가장 심각한 또는 중요한 결함들이 먼저 보정되도록, 정적인 결함 보정의 우선 순위가 설정될 수 있다. 게다가, 정적인 결함 테이블은 새로이 검출된 정적인 결함들을 포함하도록 시간에 걸쳐 업데이트될 수 있고, 이에 따라 그것들을 그들 각각의 최소 그레디언트 값들에 기초하여 정리한다.
위에 설명한 동적인 결함 검출 프로세스와 병행하여 일어날 수 있는 반점 검출은 값 Gav(수학식 52b)가 반점 검출 임계값 spkTh보다 위에 있는지를 결정하는 것에 의해 수행될 수 있다. 동적인 결함 임계값 dynTh와 같이, 반점 임계값 spkTh도 spkTh1 및 spkTh2로 각각 언급되는 고정된 성분 및 동적인 성분을 포함할 수 있다. 일반적으로, 고정된 성분 및 동적인 성분 spkTh1 및 spkTh2는, 텍스트, 포울리지(foliage), 특정 패브릭 패턴 등과 같은, 보다 많이 텍스처될(more heavily textured) 수 있는 이미지의 영역들 및 다른 것들에서 그릇되게 반점을 검출하는 것을 피하기 위하여, dynTh1 및 dynTh2와 비교하여 보다 "적극적으로" 설정될 수 있다. 따라서, 하나의 실시예에서, 동적인 반점 임계값 성분 spkTh2는 이미지의 하이 텍스처(high-texture)에 대해서는 증가되고, "보다 평탄한(flatter)" 또는 보다 균일한 영역들에 대해서는 감소될 수 있다. 반점 검출 임계값 spkTh는 하기와 같이 계산될 수 있다:
Figure pat00104
여기서 spkTh1은 고정된 임계값 성분을 나타내고, spkTh2는 동적인 임계값 성분을 나타낸다. 그 후 반점의 검출은 하기의 표현에 따라서 결정될 수 있다.
Figure pat00105
일단 결함 픽셀들이 식별되면, DPDC 로직(932)은 검출된 결함의 유형에 따라서 픽셀 보정 동작들을 적용할 수 있다. 예를 들면, 만약 결함 픽셀이 정적인 결함으로 식별되었다면, 위에 설명한 바와 같이, 그 픽셀은 저장된 교체 값으로 교체된다(예를 들면, 동일한 컬러 성분의 이전의 픽셀의 값). 만약 픽셀이 동적인 결함 또는 반점으로 식별되었다면, 픽셀 보정은 다음과 같이 수행될 수 있다. 먼저, 하기와 같이, 수평(h) 방향, 수직(v) 방향, 대각선-양(diagonal-positive) 방향(dp), 및 대각선-음(diagonal-negative) 방향(dn)의 4개의 방향에 대하여 중앙 픽셀과 제1 및 제2 이웃 픽셀들 사이의 절대 차이의 합계로서 그레디언트들이 계산된다(예를 들면, 수학식 51의 Gk의 계산).
Figure pat00106
Figure pat00107
Figure pat00108
Figure pat00109
다음으로, 보정 픽셀 값(corrective pixel value) PC는 가장 작은 값을 갖는 방향 그레디언트 Gh, Gv, Gdp, 및 Gdn과 연관된 2개의 이웃 픽셀들의 선형 보간을 통해 결정될 수 있다. 예를 들면, 하나의 실시예에서, 하기의 로직문(logic statement)은 PC의 계산을 표현할 수 있다:
Figure pat00110
DPDC 로직(932)에 의해 구현된 픽셀 보정 기법들은 또한 경계 조건들에서 예외들을 제공할 수 있다. 예를 들면, 만약 선택된 보간 방향과 연관된 2개의 이웃 픽셀들 중 하나가 미가공 프레임의 밖에 있다면, 미가공 프레임의 안에 있는 이웃 픽셀의 값이 대신 사용된다. 따라서, 이 기법을 이용하면, 보정 픽셀 값은 미가공 프레임 내의 이웃 픽셀의 값과 같을 것이다.
ISP 파이프 처리 동안에 DPDC 로직(932)에 의해 적용된 결함 픽셀 검출/보정 기법들은 ISP 프론트-엔드 로직(80)에서의 DPDC 로직(738)에 비하여 더 강건하다는 것에 주목해야 한다. 상기 실시예에서 설명된 바와 같이, DPDC 로직(738)은 수평 방향만의 이웃 픽셀들을 이용하여 동적인 결함 검출 및 보정만을 수행하는 반면, DPDC 로직(932)은, 수평 방향과 수직 방향 양쪽 모두의 이웃 픽셀들을 이용하여, 정적인 결함들, 동적인 결함들뿐만 아니라, 반점의 검출 및 보정을 제공한다.
이해될 바와 같이, 정적인 결함 테이블을 이용한 결함 픽셀들의 위치의 저장은 보다 낮은 메모리 요건으로 결함 픽셀들의 시간 필터링(temporal filtering)을 제공할 수 있다. 예를 들면, 전체 이미지들을 저장하고 시간에 걸쳐서 정적인 검출들을 식별하기 위해 시간 필터링을 적용하는 다수의 종래의 기법들과 비교하여, 본 기법의 실시예들은 결함 픽셀들의 위치들만을 저장하고, 이것은 전형적으로 전체 이미지 프레임을 저장하기 위해 요구되는 메모리의 소부분(fraction)만을 이용하여 행해질 수 있다. 또한, 위에 설명한 바와 같이, 최소 그레디언트 값(min(Gk))의 저장은, (예를 들면, 가장 많이 눈에 보일 것들부터 시작하여) 결함 픽셀들이 보정되는 위치들의 순서를 우선 순위화하는 정적인 결함 테이블의 효율적인 사용을 허용한다.
게다가, 동적인 성분을 포함하는 임계값들(예를 들면, dynTh2 및 spkTh2)의 사용은, 이미지의 하이 텍스처 영역들(예를 들면, 텍스처, 포울리지, 특정 패브릭 패턴 등)을 처리할 때 종래의 이미지 처리 시스템들에서 종종 마주치는 문제인, 거짓 결함 검출들을 감소시키는 데 도움이 될 수 있다. 더욱이, 픽셀 보정을 위한 방향 그레디언트들(예를 들면, h, v, dp, dn)의 사용은 거짓 결함 검출이 발생하더라도 시각적 아티팩트의 출현을 감소시킬 수 있다. 예를 들면, 최소 그레디언트 방향에서의 필터링의 결과로, 대부분의 경우에, 거짓 검출의 경우조차, 여전히 마음에 드는 결과를 산출하는 보정이 될 수 있다. 게다가, 그레디언트 계산에서 현재의 픽셀 P의 포함은, 특히 핫 픽셀들의 경우에, 그레디언트 검출의 정확도를 개선할 수 있다.
DPDC 로직(932)에 의해 구현되는 위에 설명한 결함 픽셀 검출 및 보정 기법들은 도 101-103에서 제공된 일련의 순서도들에 의해 요약될 수 있다. 예를 들면, 먼저 도 101을 참조하면, 정적인 결함들을 검출하기 위한 프로세스(960)가 도시되어 있다. 처음에 단계(962)에서 시작하여, 제1 시간 T0에 입력 픽셀 P가 수신된다. 다음으로, 단계(964)에서, 픽셀 P의 위치는 정적인 결함 테이블에 저장된 값들과 비교된다. 판정 로직(966)은 픽셀 P의 위치가 정적인 결함 테이블에서 발견되는지를 결정한다. 만약 P의 위치가 정적인 결함 테이블에 있다면, 프로세스(960)는 단계(968)로 계속되고, 여기서 픽셀 P는 정적인 결함으로 표시되고 교체 값이 결정된다. 위에 설명한 바와 같이, 교체 값은 동일한 컬러 성분의 (스캔 순서로) 이전의 픽셀의 값에 기초하여 결정될 수 있다. 프로세스(960)는 그 후 단계(970)로 계속되고, 여기서 프로세스(960)는 도 102에서 도시된 동적인 및 반점 검출 프로세스(980)로 진행한다. 게다가, 만약 판정 로직(966)에서, 픽셀 P의 위치가 정적인 검출 테이블에 있지 않다고 결정되면, 프로세스(960)는 단계(968)를 수행하지 않고 단계(970)로 진행한다.
도 102로 계속하여, 동적인 결함 또는 반점이 존재하는지를 결정하는 처리를 위해, 단계(982)에 의해 도시된 바와 같이, 시간 T1에 입력 픽셀 P가 수신된다. 시간 T1은 도 101의 정적인 결함 검출 프로세스(960)에 관하여 타임시프트를 나타낼 수 있다. 위에 설명한 바와 같이, 동적인 결함 및 반점 검출 프로세스는 정적인 결함 검출 프로세스가 픽셀들의 2개의 스캔 라인들(예를 들면, 행들)을 분석한 후에 시작될 수 있고, 따라서 동적인/반점 검출이 일어나기 전에 정적인 결함들 및 그들의 각각의 교체 값들의 식별이 결정되는 시간을 허용한다.
판정 로직(984)은 입력 픽셀 P가 이전에 (예를 들면, 프로세스(960)의 단계(968)에 의해) 정적인 결함으로 표시되었는지를 결정한다. 만약 P가 정적인 결함으로 표시되어 있다면, 프로세스(980)는 도 103에서 도시된 픽셀 보정 프로세스로 계속될 수 있고 도 102에서 도시된 나머지 단계들을 바이패스(bypass)할 수 있다. 만약 판정 로직(984)이 입력 픽셀 P가 정적인 결함이 아니라고 결정하면, 프로세스는 단계(986)로 계속되고, 동적인 결함 및 반점 프로세스에서 사용될 수 있는 이웃 픽셀들이 식별된다. 예를 들면, 위에 설명되고 도 100에서 도시된 실시예에 따라, 이웃 픽셀들은 픽셀 P의 인접한 8개의 이웃들(예를 들면, P0-P7)을 포함할 수 있고, 따라서 3x3 픽셀 영역을 형성한다. 다음으로, 단계(988)에서, 상기 수학식 51에서 설명한 바와 같이, 미가공 프레임(310) 내의 각각의 이웃 픽셀에 관하여 픽셀 대 픽셀 그레디언트들이 계산된다. 게다가, 수학식 52a 및 52b에서 제시된 바와 같이, 현재의 픽셀과 그것의 주위의 픽셀들의 평균 사이의 차이로서 평균 그레디언트(Gav)가 계산될 수 있다.
프로세스(980)는 그 후 동적인 결함 검출을 위한 단계(990)로 및 반점 검출을 위한 판정 로직(998)으로 분기한다. 상기한 바와 같이, 동적인 결함 검출 및 반점 검출은, 몇몇 실시예들에서, 병행하여 일어날 수 있다. 단계(990)에서, 임계값 dynTh 이하인 그레디언트들의 수의 카운트 C가 결정된다. 위에 설명한 바와 같이, 임계값 dynTh는 고정된 성분 및 동적인 성분을 포함할 수 있고, 하나의 실시예에서, 상기 수학식 53에 따라 결정될 수 있다. 만약 C가 최대 카운트, dynMaxC 이하이면, 프로세스(980)는 단계(996)로 계속되고, 현재의 픽셀은 동적인 결함인 것으로 표시된다. 그 후, 프로세스(980)는 아래에 설명될, 도 103에서 도시된 픽셀 보정 프로세스로 계속될 수 있다.
단계(988) 후의 분기로 되돌아가서, 반점 검출을 위해, 판정 로직(998)은 평균 그레디언트 Gav가, 고정된 및 동적인 성분을 또한 포함할 수 있는, 반점 검출 임계값 spkTh보다 큰지를 결정한다. 만약 Gav가 임계값 spkTh보다 크다면, 픽셀 P는 단계(1000)에서 반점을 포함하는 것으로 표시되고, 그 후, 프로세스(980)는 반점이 있는 픽셀의 보정을 위해 도 103으로 계속된다. 또한, 만약 판정 로직 블록들(992 및 998) 둘 다의 출력이 "NO"이면, 이것은 픽셀 P가 동적인 결함, 반점, 또는 정적인 결함(판정 로직(984))조차 포함하지 않는 것을 나타낸다. 따라서, 판정 로직(992 및 998)의 출력들이 둘 다 "NO"이면, 프로세스(980)는 단계(994)에서 끝날 수 있고, 그에 의해 픽셀 P는, 어떤 결함(예를 들면, 정적, 동적, 또는 반점)도 검출되지 않았기 때문에, 변화되지 않은 상태로 전달된다.
도 103으로 계속하여, 위에 설명한 기법들에 따른 픽셀 보정 프로세스(1010)가 제공된다. 단계(1012)에서, 도 102의 프로세스(980)로부터 입력 픽셀 P가 수신된다. 픽셀 P는 단계(984)(정적인 결함)로부터 또는 단계(996)(동적인 결함) 및 단계(1000)(반점 결함)로부터 프로세스(1010)에 의해 수신될 수 있다는 것에 주목해야 한다. 판정 로직(1014)은 그 후 픽셀 P가 정적인 결함으로 표시되어 있는지를 결정한다. 만약 픽셀 P가 정적인 결함이라면, 프로세스(1010)는 계속되고 단계(1016)에서 끝나고, 그에 의해 정적인 결함은 단계(968)(도 101)에서 결정된 교체 값을 이용하여 보정된다.
만약 픽셀 P가 정적인 결함으로 식별되지 않는다면, 프로세스(1010)는 판정 로직(1014)으로부터 단계(1018)로 계속되고, 방향 그레디언트들이 계산된다. 예를 들면, 수학식 58-61에 관하여 위에 설명한 바와 같이, 그레디언트들은 4개의 방향(h, v, dp, 및 dn)에 대하여 중앙 픽셀과 제1 및 제2 이웃 픽셀들 사이의 절대 차이의 합계로서 계산될 수 있다. 다음으로, 단계(1020)에서, 가장 작은 값을 갖는 방향 그레디언트가 식별되고, 그 후, 판정 로직(1022)은 최소 그레디언트와 연관된 2개의 이웃 픽셀들 중 하나가 이미지 프레임(예를 들면, 미가공 프레임(310))의 밖에 위치하는지를 평가한다. 만약 2개의 이웃 픽셀들 모두가 이미지 프레임 내에 있다면, 프로세스(1010)는 단계(1024)에서 계속되고, 수학식 62에 의해 나타낸 바와 같이, 2개의 이웃 픽셀들의 값들에 선형 보간을 적용하는 것에 의해 픽셀 보정 값(PC)이 결정된다. 그 후, 입력 픽셀 P는, 단계(1030)에서 도시된 바와 같이, 보간된 픽셀 보정 값 PC를 이용하여 보정될 수 있다.
판정 로직(1022)으로 돌아가서, 만약 2개의 이웃 픽셀들 중 하나가 이미지 프레임(예를 들면, 미가공 프레임(165))의 밖에 위치한다고 결정되면, 외부 픽셀(Pout)의 값을 이용하는 대신에, DPDC 로직(932)은, 단계(1026)에서 도시된 바와 같이, Pout의 값을 이미지 프레임 내에 있는 다른 이웃 픽셀(Pin)의 값으로 교체할 수 있다. 그 후, 단계(1028)에서, 픽셀 보정 값 PC는 Pin의 값들과 Pout의 교체된 값을 보간하는 것에 의해 결정된다. 즉, 이 경우에, PC는 Pin의 값과 같을 수 있다. 단계(1030)에서 끝나서, 픽셀 P는 값 PC를 이용하여 보정된다. 계속하기 전에, DPDC 로직(932)에 관하여 여기에 설명된 특정한 결함 픽셀 검출 및 보정 프로세스들은 본 기법의 단지 하나의 가능한 실시예를 반영하기 위해 의도된 것임을 이해해야 한다. 실제로, 설계 및/또는 비용 제약에 따라서, 다수의 변형들이 가능하고, 결함 검출/보정 로직의 전체적인 복잡성 및 강건성이 ISP 프론트-엔드 블록(80)에서 구현된 보다 단순한 검출/보정 로직(738)과 DPDC 로직(932)에 관하여 여기에 설명된 결함 검출/보정 로직의 사이에 있도록 특징들이 추가되거나 제거될 수 있다.
다시 도 99를 참조하면, 보정된 픽셀 데이터는 DPDC 로직(932)으로부터 출력되고 그 후 추가적인 처리를 위해 잡음 감소 로직(934)에 의해 수신된다. 하나의 실시예에서, 잡음 감소 로직(934)은 상세 및 텍스처를 유지하면서 이미지 데이터에서 잡음을 감소시키기 위해 2차원 에지 적응 로우 패스 필터링(two-dimensional edge-adaptive low pass filtering)을 구현하도록 구성될 수 있다. 에지 적응 임계값들은, 낮은 광 조건에서 필터링이 강화되도록, 현재의 조명 레벨에 기초하여 설정될 수 있다(예를 들면, 제어 로직(84)에 의해). 또한, dynTh 및 spkTh 값들의 결정에 관하여 위에 간단히 언급한 바와 같이, 잡음 감소 처리 동안에, 장면의 텍스처 및 상세에 크게 영향을 주지 않고 잡음이 감소되도록(예를 들면, 거짓 검출을 피하고/감소시키고), 잡음 감소 임계값들이 잡음 분산 바로 위에 설정될 수 있도록 주어진 센서에 대하여 미리 잡음 분산이 결정될 수 있다. 베이어 컬러 필터 구현을 가정하여, 잡음 감소 로직(934)은 분리 가능한 7-탭 수평 필터 및 5-탭 수직 필터를 이용하여 독립적으로 각 컬러 성분 Gr, R, B, 및 Gb를 처리할 수 있다. 하나의 실시예에서, 잡음 감소 프로세스는 녹색 성분들(Gb 및 Gr)의 불균일을 보정하고 그 후 수평 필터링 및 수직 필터링을 수행하는 것에 의해 수행될 수 있다.
녹색 불균일(green non-uniformity; GNU)은 일반적으로 균일하게 조명된 평평한 표면이 주어질 때 Gr 픽셀과 Gb 픽셀 사이의 약간의 밝기 차이에 의해 특징지어진다. 이러한 불균일을 보정 또는 보상하는 것이 없다면, 디모자이킹 후에 풀 컬러 이미지에서 "메이즈(maze)" 아티팩트와 같은 특정한 아티팩트들이 나타날 수 있다. 녹색 불균일 동안에 프로세스는, 미가공 베이어 이미지 데이터 내의 각각의 녹색 픽셀에 대하여, 현재의 녹색 픽셀(G1)과 현재의 픽셀의 오른쪽 및 아래의 녹색 픽셀(G2) 사이의 절대 차이가 GNU 보정 임계값(gnuTh)보다 작은지를 결정하는 것을 포함할 수 있다. 도 104는 베이어 패턴의 2x2 영역에서 G1 및 G2 픽셀들의 위치를 도시한다. 도시된 바와 같이, G1에 접하는 픽셀들의 색은 현재의 녹색 픽셀이 Gb 픽셀인지 Gr 픽셀인지에 따라 다를 수 있다. 예를 들면, 만약 G1이 Gr이면, G2는 Gb이고, G1의 오른쪽의 픽셀은 R(적색)이고, G1의 아래의 픽셀은 B(청색)이다. 대안적으로, 만약 G1이 Gb이면, G2는 Gr이고, G1의 오른쪽의 픽셀은 B인 반면, G1의 아래의 픽셀은 R이다. 만약 G1과 G2 사이의 절대 차이가 GNU 보정 임계값보다 작다면, 현재의 녹색 픽셀 G1은, 하기의 로직에 의해 제시된 바와 같이, G1과 G2의 평균으로 교체된다:
Figure pat00111
이해될 수 있는 바와 같이, 이런 식으로 녹색 불균일 보정의 적용은 G1 및 G2 픽셀들이 에지들을 가로질러 평균되는 것을 막는 데 도움이 될 수 있고, 따라서 선명함을 개선 및/또는 유지한다.
수평 필터링이 녹색 불균일 보정 후에 적용되고, 하나의 실시예에서, 7-탭 수평 필터를 제공할 수 있다. 각각의 필터 탭의 에지를 가로질러 그레디언트들이 계산되고, 만약 그것이 수평 에지 임계값(horzTh)보다 높다면, 아래에 설명될 바와 같이, 필터 탭은 중앙 픽셀에 폴딩된다(folded). 특정 실시예들에서, 잡음 필터링은 에지 적응성일 수 있다. 예를 들면, 수평 필터는 중앙 픽셀과 탭에 있는 픽셀 사이의 차이가 잡음 분산에 의존하는 임계값보다 작은 경우에만 필터 탭들이 이용되는 유한 임펄스 응답(FIR) 필터일 수 있다. 수평 필터는 각각의 컬러 성분(R, B, Gr, Gb)에 대하여 독립적으로 이미지 데이터를 처리할 수 있고 필터링되지 않은 값들을 입력 값들로 이용할 수 있다.
예로서, 도 105는 수평 픽셀들 P0 내지 P6의 세트의 그래픽 도시를 나타내고, 중앙 탭은 P3에 위치한다. 도 105에서 도시된 픽셀들에 기초하여, 각각의 필터 탭에 대한 에지 그레디언트들이 다음과 같이 계산될 수 있다:
Figure pat00112
Figure pat00113
Figure pat00114
Figure pat00115
Figure pat00116
Figure pat00117
에지 그레디언트들 Eh0-Eh5는 그 후 하기의 수학식 70에서 제시된 공식을 이용하여, 수평 필터링 출력 Phorz를 결정하기 위해 수평 필터 컴포넌트에 의해 이용될 수 있다:
Figure pat00118
여기서 horzTh[c]는 각각의 컬러 성분 c(예를 들면, R, B, Gr, 및 Gb)에 대한 수평 에지 임계값이고, C0-C6는 각각 픽셀들 P0-P6에 대응하는 필터 탭 계수들이다. 수평 필터 출력 Phorz는 중앙 픽셀 P3 위치에서 적용될 수 있다. 하나의 실시예에서, 필터 탭 계수들 C0-C6는 3개의 정수 비트 및 13개의 분수 비트(부동 소수점으로 3.13)를 갖는 16비트의 2의 보수 값들(complement values)일 수 있다. 또한, 필터 탭 계수들 C0-C6는 중앙 픽셀 P3에 관하여 반드시 대칭일 필요는 없다는 것에 주목해야 한다.
녹색 불균일 보정 및 수평 필터링 프로세스 후에 잡음 감소 로직(934)에 의해 수직 필터링이 또한 적용된다. 하나의 실시예에서, 수직 필터링 동작은 도 106에서 도시된 바와 같이 5-탭 필터를 제공할 수 있고, 수직 필터의 중앙 탭은 P2에 위치한다. 수직 필터링 프로세스는 위에 설명한 수평 필터링 프로세스와 유사한 방식으로 일어날 수 있다. 예를 들면, 각각의 필터 탭의 에지를 가로질러 그레디언트들이 계산되고, 만약 그것이 수직 에지 임계값(vertTh)보다 높다면, 필터 탭은 중앙 픽셀 P2에 폴딩된다. 수직 필터는 각각의 컬러 성분(R, B, Gr, Gb)에 대하여 독립적으로 이미지 데이터를 처리할 수 있고 필터링되지 않은 값들을 입력 값들로 이용할 수 있다.
도 106에서 도시된 픽셀들에 기초하여, 각각의 필터 탭에 대한 수직 에지 그레디언트들이 다음과 같이 계산될 수 있다:
Figure pat00119
Figure pat00120
Figure pat00121
Figure pat00122
에지 그레디언트들 Ev0-Ev5는 그 후 하기의 수학식 75에서 제시된 공식을 이용하여, 수직 필터링 출력 Pvert를 결정하기 위해 수직 필터에 의해 이용될 수 있다:
Figure pat00123
여기서 vertTh[c]는 각각의 컬러 성분 c(예를 들면, R, B, Gr, 및 Gb)에 대한 수직 에지 임계값이고, C0-C4는 각각 도 106의 픽셀들 P0-P4에 대응하는 필터 탭 계수들이다. 수직 필터 출력 Pvert는 중앙 픽셀 P2 위치에서 적용될 수 있다. 하나의 실시예에서, 필터 탭 계수들 C0-C4는 3개의 정수 비트 및 13개의 분수 비트(부동 소수점으로 3.13)를 갖는 16비트의 2의 보수 값들일 수 있다. 또한, 필터 탭 계수들 C0-C4는 중앙 픽셀 P2에 관하여 반드시 대칭일 필요는 없다는 것에 주목해야 한다.
또한, 경계 조건들에 관하여, 이웃 픽셀들이 미가공 프레임(310)(도 23)의 밖에 있을 때, 경계 밖 픽셀들(out-of-bound pixels)의 값들은 미가공 프레임의 에지에서 동일한 색 픽셀의 값으로 복제된다. 이러한 규약(convention)은 수평 및 수직 필터링 동작들 모두에 대하여 구현될 수 있다. 예로서, 다시 도 105를 참조하여, 수평 필터링의 경우에, 만약 픽셀 P2가 미가공 프레임의 최좌측 에지에 있는 에지 픽셀이고, 픽셀들 P0 및 P1이 미가공 프레임의 밖에 있다면, 픽셀들 P0 및 P1의 값들은 수평 필터링을 위해 픽셀 P2의 값으로 교체된다.
도 99에서 도시된 미가공 프로세싱 로직(900)의 블록도를 다시 참조하여, 잡음 감소 로직(934)의 출력은 그 후 처리를 위해 렌즈 음영 보정(LSC) 로직(936)으로 전송된다. 위에 설명한 바와 같이, 렌즈 음영 보정 기법들은 렌즈의 기하 광학, 제조의 불완전, 마이크로렌즈 어레이 및 컬러 어레이 필터의 정렬 불량 등의 결과일 수 있는, 광 강도의 드롭-오프(drop-offs)를 보상하기 위해 픽셀마다 적절한 이득을 적용하는 것을 포함할 수 있다. 또한, 몇몇 렌즈들 내의 적외선(IR) 필터는 그 드롭-오프가 발광체에 의존하게(illuminant-dependent) 할 수 있으며, 따라서, 렌즈 음영 이득들은 검출된 광원에 따라서 적응될 수 있다.
도시된 실시예에서, ISP 파이프(82)의 LSC 로직(936)은, 도 71-79에 관하여 위에 설명한 바와 같이, ISP 프론트-엔드 블록(80)의 LSC 로직(740)과, 유사한 방식으로 구현될 수 있고, 따라서 대체로 유사한 기능들을 제공할 수 있다. 따라서, 중복(redundancy)을 피하기 위하여, 현재 도시된 실시예의 LSC 로직(936)은 LSC 로직(740)과 일반적으로 동일한 방식으로 동작하도록 구성되고, 따라서, 위에 제공된 렌즈 음영 보정 기법들의 설명은 여기에 반복되지 않을 것이다. 그러나, 일반적으로 요약하면, LSC 로직(936)은 현재의 픽셀에 적용할 이득을 결정하기 위해 독립적으로 미가공 픽셀 데이터 스트림의 각각의 컬러 성분을 처리할 수 있다. 위에 설명한 실시예들에 따라, 렌즈 음영 보정 이득은 이미징 프레임을 가로질러 분포된 이득 그리드 점들(gain grid points)의 정의된 세트에 기초하여 결정될 수 있고, 각각의 그리드 점 사이의 간격은 다수의 픽셀들(예를 들면, 8 픽셀, 16 픽셀 등)에 의해 정의될 수 있다. 만약 현재의 픽셀의 위치가 그리드 점에 대응한다면, 그 그리드 점과 연관된 이득 값이 현재의 픽셀에 적용된다. 그러나, 만약 현재의 픽셀의 위치가 그리드 점들(예를 들면, 도 74의 G0, G1, G2, 및 G3) 사이에 있다면, LSC는 이득 값은 현재의 픽셀이 그 사이에 위치하는 그리드 점들의 보간에 의해 계산될 수 있다(수학식 13a 및 13b). 이 프로세스는 도 75의 프로세스(772)에 의해 도시되어 있다. 또한, 도 73에 관하여 위에 언급한 바와 같이, 몇몇 실시예들에서, 그리드 점들은 LSC 영역(760)의 중앙에 덜 집중되고, 전형적으로 렌즈 음영 왜곡(lens shading distortion)이 더 많이 눈에 띄는, LSC 영역(760)의 코너들에 더 많이 집중되도록, 그리드 점들은 불균일하게(예를 들면, 대수적으로(logarithmically)) 분포될 수 있다.
게다가, 도 78 및 79에 관하여 위에 설명한 바와 같이, LSC 로직(936)은 또한 그리드 이득 값들과 함께 방사 이득 성분(radial gain component)을 적용할 수 있다. 방사 이득 성분은 이미지의 중심으로부터 현재의 픽셀의 거리에 기초하여 결정될 수 있다(수학식 14-16). 언급한 바와 같이, 방사 이득을 이용하는 것은 모든 컬러 성분들에 대하여 단일 공통 이득 그리드의 이용을 허용하고, 이는 각 컬러 성분에 대하여 개별 이득 그리드들을 저정하기 위해 요구되는 총 저장 공간을 크게 감소시킬 수 있다. 그리드 이득 데이터의 이러한 감소는 구현 비용을 감소시킬 수 있는데, 그 이유는 그리드 이득 데이터 테이블들은 이미지 처리 하드웨어에서 메모리 또는 칩 영역의 상당한 부분을 차지할 수 있기 때문이다.
다음으로, 도 99의 미가공 프로세싱 로직 블록도(900)를 다시 참조하여, LSC 로직(936)의 출력은 그 후 제2 이득, 오프셋, 및 클램핑(GOC) 블록(938)에 전달된다. GOC 로직(938)은 (로직 블록(940)에 의한) 디모자이킹 전에 적용될 수 있고 LSC 로직(936)의 출력에 대해 자동 화이트 밸런스를 수행하기 위해 이용될 수 있다. 도시된 실시예에서, GOC 로직(938)은 GOC 로직(930)(및 BLC 로직(739))과 유사한 방식으로 구현될 수 있다. 따라서, 상기 수학식 11에 따라, GOC 로직(938)에 의해 수신된 입력은 먼저 부호가 있는 신호에 의해 오프셋되고 그 후 이득과 곱해진다. 결과의 값은 그 후 수학식 12에 따라 최소 및 최대 범위에 클리핑된다.
그 후, GOC 로직(938)의 출력은 미가공 베이어 입력 데이터에 기초하여 풀 컬러(RGB) 이미지를 생성하는 처리를 위해 디모자이킹 로직(940)에 전달된다. 이해될 바와 같이, 베이어 필터와 같은, 컬러 필터 어레이를 이용한 이미지 센서의 미가공 출력은 각각의 픽셀이 단일 컬러 성분만을 획득하기 위해 필터링된다는 점에서 "불완전"하다. 따라서, 개별 픽셀에 대해서만 수집된 데이터는 색을 결정하기에 불충분하다. 따라서, 각 픽셀에 대하여 누락된 컬러 데이터를 보간함으로써 미가공 베이어 데이터로부터 풀 컬러 이미지를 생성하기 위해 디모자이킹 기법들이 이용될 수 있다.
이제 도 107을 참조하여, 풀 컬러 RGB를 생성하기 위해 미가공 베이어 이미지 패턴(1034)에 어떻게 모자이킹이 적용될 수 있는지에 관한 일반적인 개관을 제공하는 그래픽 프로세스 흐름(692)이 도시되어 있다. 도시된 바와 같이, 미가공 베이어 이미지(1034)의 4x4 부분(1036)은 녹색 채널(1038), 적색 채널(1040), 및 청색 채널(1042)을 포함하는, 각 컬러 성분에 대한 개별 채널들을 포함할 수 있다. 베이어 센서 내의 각각의 이미징 픽셀은 하나의 색에 대한 데이터만을 획득하기 때문에, 각각의 색 채널(1038, 1040, 및 1042)에 대한 색 데이터는, "?" 기호로 표시된 바와 같이, 불완전할 수 있다. 디모자이킹 기법(1044)을 적용함으로써 각 채널로부터의 누락된 컬러 샘플들이 보간될 수 있다. 예를 들면, 참조 번호 1046에 의해 나타내어진 바와 같이, 보간된 데이터 G'는 녹색 채널 상의 누락된 샘플들을 채우기 위해 이용될 수 있다. 유사하게, 보간된 데이터 R'은 (보간된 데이터 G'(1046)와 함께) 적색 채널(1048) 상의 누락된 샘플들을 채우기 위해 이용될 수 있고, 보간된 데이터 B'는 (보간된 데이터 G'(1046)와 함께) 청색 채널(1050) 상의 누락된 샘플들을 채우기 위해 이용될 수 있다. 따라서, 디모자이킹 프로세스의 결과로서, 각각의 컬러 채널(R, G, B)은 풀 세트의 컬러 데이터를 가질 것이고, 이것은 그 후 풀 컬러 RGB 이미지(1052)를 재구성하는 데 이용될 수 있다.
이제 하나의 실시예에 따라 디모자이킹 로직(940)에 의해 구현될 수 있는 디모자이킹 기법이 설명될 것이다. 녹색 채널 상에서, 누락된 컬러 샘플들은 알려진 녹색 샘플들에 대한 로우 패스 방향 필터 및 인접한 컬러 채널들(예를 들면, 적색 및 청색)에 대한 하이 패스(또는 그레디언트) 필터를 이용하여 보간될 수 있다. 적색 및 청색 채널들에 대하여, 누락된 컬러 샘플들은 유사한 방식으로 보간될 수 있지만, 알려진 적색 또는 청색 값들에 대한 로우 패스 필터링 및 코로케이트된(co-located) 보간된 녹색 값들에 대한 하이 패스 필터링을 이용하여 보간될 수 있다. 또한, 하나의 실시예에서, 녹색 채널 상의 디모자이킹은 최초의 베이어 컬러 데이터에 기초하여 5x5 픽셀 블록 에지-적응 필터를 이용할 수 있다. 아래에 더 설명될 바와 같이, 에지-적응 필터의 사용은 수평 및 수직 필터링된 값들의 그레디언트들에 기초한 연속적인 가중을 제공할 수 있고, 이는 종래의 디모자이킹 기법들에서 일반적으로 관찰되는, 에일리어싱, "체커보드", 또는 "레인보우" 아티팩트들과 같은, 특정 아티팩트들의 출현을 감소시킨다.
녹색 채널 상의 디모자이킹 동안에, 베이어 이미지 패턴의 녹색 픽셀들(Gr 및 Gb 픽셀들)에 대한 최초의 값들이 사용된다. 그러나, 녹색 채널에 대한 풀 세트의 데이터를 획득하기 위하여, 녹색 픽셀 값들은 베이어 이미지 패턴의 적색 및 청색 픽셀들에서 보간될 수 있다. 본 기법에 따라, Eh 및 Ev라고 각각 불리는, 수평 및 수직 에너지 성분들이 먼저 위에 언급한 5x5 픽셀 블록에 기초하여 적색 및 청색 픽셀들에서 계산된다. Eh 및 Ev의 값들은, 아래에 더 설명되는 바와 같이, 수평 및 수직 필터링 단계들로부터 에지 가중 필터링된 값(edge-weighted filtered value)을 획득하기 위해 이용될 수 있다.
예로서, 도 108은 위치(j,i)에서 5x5 픽셀 블록 내의 중심에 있는 적색 픽셀에 대한 Eh 및 Ev 값들의 계산을 도시하는데, 여기서 j는 행(row)에 대응하고 i는 열(column)에 대응한다. 도시된 바와 같이, Eh의 계산은 5x5 픽셀 블록의 중앙의 3개의 행들(j-1,j,j+1)을 고려하고, Ev의 계산은 5x5 픽셀 블록의 중앙의 3개의 열들(i-1,i,i+1)을 고려한다. Eh를 계산하기 위해, 적색 열들(i-2,i,i+2) 내의 픽셀들 각각을 대응하는 계수(예를 들면, 열 i-2 및 i+2의 경우 -1; 열 i의 경우 2)와 곱한 합계의 절대 값은 청색 열들(i-1,i+1) 내의 픽셀들 각각을 대응하는 계수(예를 들면, 열 i-1의 경우 1; 열 i+1의 경우 -1)와 곱한 합계의 절대 값과 합산된다. Ev를 계산하기 위해, 적색 행들(j-2,j,j+2) 내의 픽셀들 각각을 대응하는 계수(예를 들면, 행 j-2 및 j+2의 경우 -1; 행 j의 경우 2)와 곱한 합계의 절대 값은 청색 행들(j-1,j+1) 내의 픽셀들 각각을 대응하는 계수(예를 들면, 행 j-1의 경우 1; 행 j+1의 경우 -1)와 곱한 합계의 절대 값과 합산된다. 이러한 계산들은 하기의 수학식 76 및 77에 의해 설명된다:
Figure pat00124
Figure pat00125
따라서, 총 에너지 합계는 Eh + Ev로 표현될 수 있다. 또한, 도 108에서 도시된 예는 (j,i)에 있는 적색 중앙 픽셀에 대한 Eh 및 Ev의 계산을 설명하지만, Eh 및 Ev 값들은 청색 중앙 픽셀들에 대하여 유사한 방식으로 계산될 수 있다는 것을 이해해야 한다.
다음으로, 수평 및 수직 방향으로 각각 보간된 녹색 값들을 나타낼 수 있는, 수평 및 수직 필터링된 값들 Gh 및 Gv를 획득하기 위해 베이어 패턴에 수평 및 수직 필터링이 적용될 수 있다. 필터링된 값들 Gh 및 Gv는 누락된 녹색 샘플들의 위치들에서 고주파 신호를 획득하기 위해 인접한 색(R 또는 B)의 방향 그레디언트들을 이용하는 것에 더하여 알려진 이웃 녹색 샘플들에 대한 로우 패스 필터를 이용하여 결정될 수 있다. 예를 들면, 도 109에 관하여, Gh를 결정하기 위한 수평 보간의 예가 이제 설명될 것이다.
도 109에서 도시된 바와 같이, 베이어 이미지의 적색 라인(1060)의 5개의 수평 픽셀들(R0, G1, R2, G3, 및 R4)(여기서 R2는 (j,i)에 있는 중앙 픽셀이라고 가정된다)이 Gh를 결정하는 데 고려될 수 있다. 이 5개의 픽셀들 각각과 연관된 필터링 계수들은 참조 번호 1062에 의해 표시되어 있다. 따라서, 중앙 픽셀 R2에 대한, G2'로 명명되는, 녹색 값의 보간은 다음과 같이 결정될 수 있다:
Figure pat00126
그 후 하기 수학식 79 및 80에서 제시된 G2'에 대한 식을 생성하기 위해 다양한 수학적 연산들이 이용될 수 있다:
Figure pat00127
Figure pat00128
따라서, 도 109 및 상기 수학식 78-80에 관하여, (j,i)에서 녹색 값에 대한 수평 보간을 위한 일반식은 다음과 같이 도출될 수 있다:
Figure pat00129
수직 필터링 성분 Gv는 Gh와 유사한 방법으로 결정될 수 있다. 예를 들면, 도 110을 참조하면, 베이어 이미지의 적색 칼럼(1064)의 5개의 수직 픽셀들(R0, G1, R2, G3, 및 R4) 및 그것들 각각의 필터링 계수들(1068)(여기서 R2는 (j,i)에 있는 중앙 픽셀이라고 가정된다)이 Gv를 결정하는 데 고려될 수 있다. 수직 방향으로 알려진 녹색 샘플들에 대한 로우 패스 필터링 및 적색 채널에 대한 하이 패스 필터링을 이용하여, Gv에 대하여 하기의 식이 도출될 수 있다:
Figure pat00130
여기에 설명된 예들은 적색 픽셀에 대한 녹색 값들의 보간을 제시하였지만, 수학식 81 및 82에서 제시된 식들은 또한 청색 픽셀들에 대한 녹색 값들의 수평 및 수직 보간에서 사용될 수 있다는 것을 이해해야 한다.
중앙 픽셀(j,i)에 대한 최종 보간된 녹색 값 G'는 위에 설명된 에너지 성분들(Eh 및 Ev)에 의해 수평 및 수직 필터 출력들(Gh 및 Gv)을 가중하여 하기의 수학식을 산출하는 것에 의해 결정될 수 있다:
Figure pat00131
위에 설명한 바와 같이, 에너지 성분들 Eh 및 Ev는 수평 및 수직 필터 출력들 Gh 및 Gv의 에지 적응 가중을 제공할 수 있고, 이는 재구성된 RGB 이미지에서 레인보우, 에일리어싱, 또는 체커보드 아티팩트와 같은 이미지 아티팩트들을 감소시키는 데 도움이 될 수 있다. 게다가, 디모자이킹 로직(940)은 Gh 및 Gv가 동등하게 가중되도록, Eh 및 Ev 값들을 각각 1로 설정하는 것에 의해 에지 적응 가중 특징을 바이패스하는 옵션을 제공할 수 있다.
하나의 실시예에서, 상기 수학식 51에서 제시된, 수평 및 수직 가중 계수들은 그 가중 계수들의 정밀도를 "개략적인" 값들의 세트로 감소시키도록 양자화될 수 있다. 예를 들면, 하나의 실시예에서, 가중 계수들은 8개의 가능한 가중비들(weight ratios): 1/8, 2/8, 3/8, 4/8, 5/8, 6/8, 7/8, 및 8/8로 양자화될 수 있다. 다른 실시예들은 가중 계수들을 16개의 값들(예를 들면, 1/16 내지 16/16), 32개의 값들(1/32 내지 32/32) 등으로 양자화할 수 있다. 이해될 수 있는 바와 같이, 최대 정밀도(full precision) 값들(예를 들면, 32 비트 부동 소수점 값들)을 이용하는 것과 비교하여, 가중 계수들의 양자화는 가중 계수들을 결정하고 수평 및 수직 필터 출력들에 적용할 때 구현 복잡성을 감소시킬 수 있다.
추가 실시예들에서, 현재 개시된 기법들은, 수평(Gh) 및 수직(Gv) 필터링된 값들에 가중 계수들을 적용하기 위해 수평 및 수직 에너지 성분들을 결정하고 이용하는 것에 더하여, 또한 대각선-양 및 대각선-음 방향들에서 에너지 성분들을 결정하고 이용할 수 있다. 예를 들면, 그러한 실시예들에서, 필터링은 대각선-양 및 대각선-음 방향들에서도 적용될 수 있다. 필터 출력들의 가중은 2개의 가장 높은 에너지 성분들을 선택하고, 그 선택된 에너지 성분들을 이용하여 그들 각각의 필터 출력들을 가중하는 것을 포함할 수 있다. 예를 들면, 2개의 가장 높은 에너지 성분들은 수직 및 대각선-양 방향들에 대응한다고 가정하여, 그 수직 및 대각선-양 에너지 성분들을 이용하여 수직 및 대각선-양 필터 출력을 가중하여 보간된 녹색 값을 결정한다(예를 들면, 베이어 패턴 내의 적색 또는 청색 픽셀 위치에서).
다음으로, 베이어 이미지 패턴의 녹색 픽셀들에서 적색 및 청색 값들을 보간하고, 베이어 이미지 패턴의 청색 픽셀들에서 적색 값들을 보간하고, 베이어 이미지 패턴의 적색 픽셀들에서 청색 값들을 보간하는 것에 의해 적색 및 청색 채널들에 대한 디모자이킹이 수행될 수 있다. 현재 설명된 기법들에 따라, 알려진 이웃 적색 및 청색 픽셀들에 기초한 로우 패스 필터링 및 현재의 픽셀의 위치에 따라 (위에 설명된 녹색 채널 모자이킹 프로세스로부터) 최초의 또는 보간된 값들일 수 있는, 코로케이트된 녹색 픽셀 값들에 기초한 하이 패스 필터링을 이용하여 누락된 적색 및 청색 픽셀 값들이 보간될 수 있다. 따라서, 그러한 실시예들에 관하여, 누락된 적색 및 청색 샘플들을 보간할 때 녹색 값들(최초의 및 보간된 값들 모두)의 완전한 세트가 이용 가능하도록, 누락된 녹색 값들의 보간이 먼저 수행될 수 있다는 것을 이해해야 한다.
적색 및 청색 픽셀 값들의 보간은, 적색 및 청색 디모자이킹이 적용될 수 있는 베이어 이미지 패턴의 다양한 3x3 블록들뿐만 아니라, 녹색 채널에 대한 디모자이킹 동안에 획득되었을 수 있는 (G'에 의해 지시된) 보간된 녹색 값들을 도시하는, 도 111에 관하여 설명될 수 있다. 먼저 블록(1070)을 참조하여, Gr 픽셀(G11)에 대한 보간된 적색 값 R'11은 다음과 같이 결정될 수 있다:
Figure pat00132
여기서 G'10 및 G'12는, 참조 번호 1078에 의해 제시된 바와 같이, 보간된 녹색 값들을 나타낸다. 유사하게, Gr 픽셀(G11)에 대한 보간된 청색 값 B'11은 다음과 같이 결정될 수 있다:
여기서 G'01 및 G'21은 보간된 녹색 값들(1078)을 나타낸다.
다음으로, 중앙 픽셀이 Gb 픽셀(G11)인, 픽셀 블록(1072)을 참조하여, 보간된 적색 값 R'11 및 청색 값 B'11은 하기 수학식 86 및 87에 제시된 바와 같이 결정될 수 있다:
Figure pat00134
Figure pat00135
또한, 픽셀 블록(1074)을 참조하여, 청색 픽셀 B11에 대한 적색 값의 보간은 다음과 같이 결정될 수 있다:
Figure pat00136
여기서 G'00, G'02, G'11, G'20,및 G'22는, 참조 번호 1080에 의해 제시된 바와 같이, 보간된 녹색 값들을 나타낸다. 마지막으로, 픽셀 블록(1076)에 의해 제시된 바와 같이, 적색 픽셀에 대한 청색 값의 보간은 다음과 같이 계산될 수 있다:
Figure pat00137
위에 설명된 실시예는 적색 및 청색 보간된 값들을 결정하기 위해 컬러 차이들(예를 들면, 그레디언트들)에 의지하였지만, 다른 실시예들은 컬러 비율들을 이용한 보간된 적색 및 청색 값들을 제공할 수 있다. 예를 들면, 보간된 녹색 값들(블록들(1078 및 1080))은 베이어 이미지 패턴의 적색 및 청색 픽셀 위치들에서 컬러 비율을 획득하기 위해 이용될 수 있고, 그 비율들의 선형 보간은 누락된 컬러 샘플에 대한 보간된 컬러 비율을 결정하기 위해 이용될 수 있다. 보간된 또는 최초의 값일 수 있는 녹색 값은 최종 보간된 컬러 값을 획득하기 위해 보간된 컬러 비율과 곱해질 수 있다. 예를 들면, 컬러 비율들을 이용한 적색 및 청색 픽셀 값들의 보간이 하기의 식들에 따라 수행될 수 있는데, 수학식 90 및 91은 Gr 픽셀에 대한 적색 및 청색 값들의 보간을 나타내고, 수학식 92 및 93은 Gb 픽셀에 대한 적색 및 청색 값들을 보간을 나타내고, 수학식 94는 청색 픽셀에 대한 적색 값의 보간을 나타내고, 수학식 95는 적색 픽셀에 대한 청색 값의 보간을 나타낸다:
Figure pat00138
Figure pat00139
Figure pat00140
Figure pat00141
Figure pat00142
Figure pat00143
일단 베이어 이미지 패턴으로부터의 각각의 이미지 픽셀에 대하여 누락된 컬러 샘플들이 보간되었다면, 풀 컬러 RGB 이미지를 생성하기 위해 적색, 청색, 및 녹색 채널들(예를 들면, 도 107의 1046, 1048, 및 1050) 각각에 대한 컬러 값들의 완전한 샘플이 조합될 수 있다. 예를 들면, 도 98 및 99를 다시 참조하여, 미가공 픽셀 프로세싱 로직(900)의 출력(910)은 8, 10, 12, 또는 14 비트 포맷의 RGB 이미지 신호일 수 있다.
이제 도 112-115를 참조하면, 개시된 실시예들에 따른 미가공 베이어 이미지 패턴을 디모자이킹하기 위한 프로세스들을 설명하는 다양한 순서도들이 도시되어 있다. 구체적으로, 도 112의 프로세스(1082)는 주어진 입력 픽셀 P에 대하여 어느 컬러 성분들이 보간되어야 하는지에 대한 결정을 도시한다. 프로세스(1082)에 의한 결정에 기초하여, 녹색 값을 보간하기 위한 프로세스(1100)(도 113), 적색 값을 보간하기 위한 프로세스(1112)(도 114), 또는 청색 값을 보간하기 위한 프로세스(1124)(도 115) 중 하나 이상이 수행될 수 있다(예를 들면, 디모자이킹 로직(940)에 의해).
도 112에서 시작하여, 프로세스(1082)는 입력 픽셀 P가 수신될 때 단계(1084)에서 시작된다. 판정 로직(1086)은 입력 픽셀의 색을 결정한다. 예를 들면, 이것은 베이어 이미지 패턴 내의 픽셀의 위치에 의존할 수 있다. 따라서, 만약 P가 녹색 픽셀(예를 들면, Gr 또는 Gb)인 것으로 식별되면, 프로세스(1082)는 P에 대한 보간된 적색 및 청색 값들을 획득하기 위한 단계(1088)로 진행한다. 이것은, 예를 들면, 각각, 도 114 및 115의 프로세스들(1112 및 1124)로 계속되는 것을 포함할 수 있다. 만약 P가 적색 픽셀인 것으로 식별되면, 프로세스(1082)는 P에 대한 보간된 녹색 및 청색 값들을 획득하기 위한 프로세스(1090)로 진행한다. 이것은, 각각, 도 113 및 115의 프로세스들(1100 및 1124)을 수행하는 것을 더 포함할 수 있다. 게다가, 만약 P가 청색 픽셀인 것으로 식별되면, 프로세스(1082)는 P에 대한 보간된 녹색 및 적색 값들을 획득하기 위한 프로세스(1092)로 진행한다. 이것은, 각각, 도 113 및 114의 프로세스들(1100 및 1112)을 수행하는 것을 더 포함할 수 있다. 프로세스들(1100, 1112, 및 1124) 각각은 아래에 더 설명된다.
입력 픽셀 P에 대한 보간된 녹색 값을 결정하기 위한 프로세스(1100)는 도 113에 도시되어 있고 단계들(1102-1110)을 포함한다. 단계(1102)에서, 입력 픽셀 P가 수신된다(예를 들면, 프로세스(1082)로부터). 다음으로, 단계(1104)에서, 5x5 픽셀 블록을 형성하는 이웃 픽셀들의 세트가 식별되고, P는 5x5 블록의 중앙이다. 그 후, 단계(1106)에서 수평 및 수직 에너지 성분들을 결정하기 위해 픽셀 블록이 분석된다. 예를 들면, 수평 및 수직 에너지 성분들은 Eh 및 Ev를 각각 계산하기 위한 수학식 76 및 77에 따라 결정될 수 있다. 설명된 바와 같이, 에너지 성분들 Eh 및 Ev는 에지 적응 필터링을 제공하고, 따라서, 최종 이미지에서 특정 디모자이킹 아티팩트들의 출현을 감소시키기 위한 가중 계수들로서 이용될 수 있다. 단계(1108)에서, 수평 및 수직 필터링 출력들을 결정하기 위해 수평 및 수직 방향들에서 로우 패스 필터링 및 하이 패스 필터링이 적용된다. 예를 들면, 수평 및 수직 필터링 출력들 Gh 및 Gv는 수학식 81 및 82에 따라서 계산될 수 있다. 다음으로 프로세스(1082)는 단계(1110)으로 계속되고, 이 단계에서 수학식 83에서 제시된 바와 같이, 에너지 성분들 Eh 및 Ev로 가중된 Gh 및 Gv의 값들에 기초하여 보간된 녹색 값 G'가 보간된다.
다음으로, 도 114의 프로세스(1112)에 관하여, 적색 값들의 보간은 단계(1114)에서 시작되고, 이 단계에서 입력 픽셀 P가 수신된다(예를 들면, 프로세스(1082)로부터). 단계(1116)에서, 3x3 픽셀 블록을 형성하는 이웃 픽셀들의 세트가 식별되고, P는 3x3 블록의 중앙이다. 그 후, 단계(1118)에서 3x3 블록 내의 이웃 적색 픽셀들에 대해 로우 패스 필터링이 적용되고, 베이어 이미지 센서에 의해 캡처된 최초의 녹색 값, 또는 보간된 값들(예를 들면, 도 113의 프로세스(1100)를 통해 결정된)일 수 있는, 코로케이트된 녹색 이웃 값들에 대해 하이 패스 필터링이 적용된다(단계(1120)). P에 대한 보간된 적색 값 R'은, 단계(1122)에서 제시된 바와 같이, 로우 패스 및 하이 패스 필터링 출력들에 기초하여 결정될 수 있다. P의 색에 따라서, R'은 수학식들 84, 86, 또는 88 중 하나에 따라 결정될 수 있다.
청색 값들의 보간에 관하여, 도 115의 프로세스(1124)가 적용될 수 있다. 단계들(1126 및 1128)은 프로세스(1112)(도 114)의 단계들(1114 및 1116)과 일반적으로 동일하다. 단계(1130)에서, 3x3 블록 내의 이웃 청색 픽셀들에 대해 로우 패스 필터링이 적용되고, 단계(1132)에서 베이어 이미지 센서에 의해 캡처된 최초의 녹색 값, 또는 보간된 값들(예를 들면, 도 113의 프로세스(1100)를 통해 결정된)일 수 있는, 코로케이트된 녹색 이웃 값들에 대해 하이 패스 필터링이 적용된다. P에 대한 보간된 청색 값 B'는, 단계(1134)에서 제시된 바와 같이, 로우 패스 및 하이 패스 필터링 출력들에 기초하여 결정될 수 있다. P의 색에 따라서, B'는 수학식들 85, 87, 또는 89 중 하나에 따라 결정될 수 있다. 또한, 위에 언급한 바와 같이, 적색 및 청색 값들의 보간은 컬러 차이들(수학식 84-89) 또는 컬러 비율들(수학식 90-95)을 이용하여 결정될 수 있다. 다시, 누락된 적색 및 청색 샘플들을 보간할 때 녹색 값들(최초의 및 보간된 값들 모두)의 완전한 세트가 이용 가능하도록, 누락된 녹색 값들의 보간이 먼저 수행될 수 있다는 것을 이해해야 한다. 예를 들면, 도 113의 프로세스(1100)는 도 114 및 115의 프로세스들 1112 및 1124를 각각 수행하기 전에 모든 누락된 녹색 샘플들을 보간하기 위해 적용될 수 있다.
도 116-119를 참조하면, ISP 파이프(82) 내의 미가공 픽셀 로직(900)에 의해 처리된 이미지들의 채색된 그림들의 예들이 제공되어 있다. 도 116은 이미징 장치(30)의 이미지 센서(90)에 의해 캡처될 수 있는, 최초 이미지 장면(1140)을 도시한다. 도 117은 이미지 센서(90)에 의해 캡처된 미가공 픽셀 데이터를 나타낼 수 있는 미가공 베이어 이미지(1142)를 나타낸다. 위에 언급한 바와 같이, 종래의 디모자이킹 기법들은 이미지 데이터 내의 에지들(예를 들면, 둘 이상의 색의 영역들 사이의 경계들)의 검출에 기초한 적응 필터링을 제공하지 않을 수 있고, 이는, 바람직하지 않게, 결과의 재구성된 풀 컬러 RGB 이미지에 아티팩트들을 생성할 수 있다. 예를 들면, 도 118은 종래의 디모자이킹 기법들을 이용하여 재구성된 RGB 이미지(1144)를 나타내고, 에지(1148)에서 "체커보드" 아티팩트들(1146)과 같은 아티팩트들을 포함할 수 있다. 그러나, 그 이미지(1144)를, 위에 설명한 디모자이킹 기법들을 이용하여 재구성된 이미지의 예일 수 있는, 도 119의 RGB 이미지(1150)와 비교하면, 도 118에 존재하는 체커보드 아티팩트들(1146)은 존재하지 않거나, 또는 적어도 그것들의 출현이 에지(1148)에서 상당히 감소된다는 것을 확인할 수 있다. 따라서, 도 116-119에서 도시된 이미지들은 여기에 개시된 디모자이킹 기법들이 종래의 방법들에 비하여 갖는 적어도 하나의 이점을 설명하기 위해 의도되었다.
여기에 개시된 이미지 처리 기법들의 특정 양태들에 따라, ISP 서브시스템(32)의 다양한 프로세싱 로직 블록들은, 위에 제시된 바와 같이, 다양한 블록들을 통하여 이미지 데이터를 전달하도록 구성될 수 있는, 라인 버퍼들의 세트를 이용하여 구현될 수 있다. 예를 들면, 하나의 실시예에서, 도 99에서 위에 설명된 미가공 픽셀 프로세싱 로직(900)은 도 120-123에서 도시된 바와 같이 배열된 라인 버퍼들의 구성을 이용하여 구현될 수 있다. 특히, 도 120은 미가공 픽셀 프로세싱 로직(900)을 구현하기 위해 이용될 수 있는 전체 라인 버퍼 배열을 도시하는 반면, 도 121은 도 120의 둘러싸인 영역(1162) 내에 도시된 것과 같은, 라인 버퍼들의 제1 서브세트의 근접 뷰(closer view)를 도시하고, 도 122는 잡음 감소 로직(934)의 일부일 수 있는 수직 필터의 근접 뷰를 도시하고, 도 123은 도 120의 둘러싸인 영역(1164) 내에 도시된 것과 같은, 라인 버퍼들의 제2 서브세트의 근접 뷰를 도시한다.
도 120에서 일반적으로 도시된 바와 같이, 미가공 프로세싱 로직(900)은 각각 0-9로 번호가 매겨지고 참조 번호들(1160a-1160j)로서 표시된 10개의 라인 버퍼들의 세트뿐만 아니라, 로직의 행(1160k)을 포함할 수 있고, 후자는 미가공 프로세싱 로직(900)으로의 (이미지 센서로부터 또는 메모리로부터의 것일 수 있는) 이미지 데이터 입력(908)을 포함한다. 따라서, 도 120에서 도시된 로직은 11개의 행들을 포함할 수 있고, 그 중 10개의 행들은 라인 버퍼들(1160a-1160j)을 포함한다. 아래에 설명된 바와 같이, 라인 버퍼들은 이득, 오프셋, 클램핑 로직 블록들(930 및 938)(도 120에서 각각 GOC1 및 GOC2로 불림), 결함 픽셀 검출 및 보정(DPC) 로직(932), 잡음 감소 로직(934)(도 120에서는 녹색 불균일(GNU) 보정 로직(934a), 7-탭 수평 필터(934b), 및 5-탭 수직 필터(934c)를 포함하는 것으로 도시됨), 렌즈 음영 보정(LSC) 로직(936), 및 디모자이킹(DEM) 로직(940)을 포함하는, 미가공 픽셀 프로세싱 로직(900)의 로직 유닛들에 의해 공유되는 방식으로 이용될 수 있다. 예를 들면, 도 120에서 도시된 실시예에서, 라인 버퍼들 6-9(1160g-1160j)에 의해 표현된 라인 버퍼들의 하위 서브세트는 DPC 로직(932)과 (GNU 로직(934a), 수평 필터(934b) 및 수평 필터(934c)의 일부를 포함하는) 잡음 감소 로직(934)의 부분들 사이에 공유될 수 있다. 라인 버퍼들 0-5(1160a-1160f)에 의해 표현된 라인 버퍼들의 상위 서브세트는 수직 필터링 로직(934c)의 일부, 렌즈 음영 보정 로직(936), 이득, 오프셋, 및 클램핑 로직(938), 및 디모자이크 로직(940) 사이에 공유될 수 있다.
라인 버퍼들을 통한 이미지 데이터의 이동을 일반적으로 설명하자면, ISP 프론트-엔드 프로세싱 로직(80)의 출력을 나타낼 수 있는 미가공 이미지 데이터(908)가 GOC1 로직(930)에 의해 먼저 수신되어 처리되고, GOC1 로직(930)에서 적당한 이득, 오프셋 및 클램핑 파라미터들이 적용된다. GOC1 로직(930)의 출력은 그 후 DPC 로직(932)에 제공된다. 도시된 바와 같이, 결함 픽셀 검출 및 보정 처리는 라인 버퍼들 6-9을 통하여 일어날 수 있다. DPC 로직(932)의 제1 출력은 (잡음 감소 로직(934)의) 녹색 불균일 보정 로직(934a)에 제공되고, 이것은 라인 버퍼 9(1160j)에서 일어난다. 따라서, 라인 버퍼 9(1160j)는, 본 실시예에서, DPC 로직(932)과 GNU 보정 로직(934a) 양쪽에 의해 공유된다.
다음으로, 도 121에서 W8로 명명되는, 라인 버퍼 9(1160j)의 출력은 라인 버퍼 8(1160i)의 입력에 제공된다. 도시된 바와 같이, 라인 버퍼 8은 추가적인 결함 픽셀 검출 및 보정 처리를 제공하는 DPC 로직(932)과, 잡음 감소 블록(934)의 수평 필터링 로직(934b) 사이에 공유된다. 본 실시예에서 도시된 바와 같이, 수평 필터(934b)는, 도 121에서 필터 탭들(1165a-1165g)에 의해 표시된 바와 같이, 7-탭 필터일 수 있고, 유한 임펄스 응답(FIR) 필터로서 구성될 수 있다. 위에 설명한 바와 같이, 특정 실시예들에서, 잡음 필터링은 에지 적응일 수 있다. 예를 들면, 수평 필터는 FIR 필터일 수 있지만, 필터 탭들은 중앙 픽셀과 탭에 있는 필터 사이의 차이가 잡음 분산에 적어도 부분적으로 의존하는 임계값보다 작은 경우에만 이용된다.
수평 필터링 로직(934b)의 출력(1163)(도 121)은 (도 122에서 더 상세히 도시된) 수직 필터링 로직(934c)에 및 라인 버퍼 7(1160h)의 입력에 제공될 수 있다. 도시된 실시예에서, 라인 버퍼 7은 그것의 입력 W7을 입력 W6으로서 라인 버퍼 6(1160g)에 전달하기 전에 지연(w)을 제공하도록 구성된다. 도 121에서 도시된 바와 같이, 라인 버퍼 6은 DPC 로직(932)과 잡음 감소 수직 필터(934c) 사이에 공유된다.
다음으로, 도 120, 122, 및 123을 동시에 참조하면, 라인 버퍼들의 상위 서브세트, 즉 라인 버퍼들 0-5(1160a-1160f)는 (도 122에서 도시된) 잡음 감소 수직 필터(934c), 렌즈 음영 보정 로직(936), GOC2 로직(938), 및 디모자이크 로직(940) 사이에 공유된다. 예를 들면, 지연(w)을 제공하는, 라인 버퍼 5(1160f)의 출력은 라인 버퍼 4(1160e)에 공급된다. 라인 버퍼 4에서 수직 필터링이 수행되고, 라인 버퍼 4 내의 수직 필터(934c) 부분의 출력 W3은 라인 버퍼 3(1160d)에만 아니라, 다운스트림에 라인 버퍼 4에 의해 공유되는 렌즈 음영 보정 로직(936), GOC2 로직(938), 및 디모자이크 로직(940)에 공급된다. 본 실시예에서, 수직 필터링 로직(934c)은 5개의 탭(1166a-1166e)(도 122)을 포함할 수 있지만, 부분 재귀(partially recursive) (무한 임펄스 응답(IIR)) 및 비재귀(non-recursive) (FIR) 모드들 양쪽 모두에서 동작하도록 구성 가능할 수 있다. 예를 들면, 탭(1166c)이 중앙 탭이도록 모든 5개의 탭이 이용될 때, 수직 필터링 로직(934c)은 부분 IIR 재귀 모드에서 동작한다. 본 실시예는 또한 수직 필터링 로직(934c)을 비재귀 (FIR) 모드에서 동작시키기 위해, 5개의 탭들 중 3개, 즉 탭들(1166c-1166e)을, 탭(1166d)을 중앙 탭으로 하여, 이용하기로 결정할 수 있다. 수직 필터링 모드는, 하나의 실시예에서, 잡음 감소 로직(934)과 연관된 구성 레지스터를 이용하여 지정될 수 있다.
다음으로, 라인 버퍼 3는 W3 입력을 수신하고 W2를 라인 버퍼 2(1160c)에뿐만 아니라, 다운스트림에 라인 버퍼 3에 의해 공유되는 렌즈 음영 보정 로직(936), GOC2 로직(938), 및 디모자이크 로직(940)의 부분들에 출력하기 전에 지연(w)을 제공한다. 도시된 바와 같이, 라인 버퍼 2도 수직 필터(934c), 렌즈 음영 보정 로직(936), GOC2 로직(938), 및 디모자이크 로직(940)에 의해 공유되고, 라인 버퍼 1(1160b)에 출력 W1을 제공한다. 유사하게, 라인 버퍼 1도 수직 필터(934c), 렌즈 음영 보정 로직(936), GOC2 로직(938), 및 디모자이크 로직(940)에 의해 공유되고, 라인 버퍼 0(1160a)에 출력 W1을 제공한다. 디모자이크 로직(940)의 출력(910)은, 아래에 더 상세히 설명될 바와 같이, 추가적인 처리를 위해 다운스트림에 RGB 프로세싱 로직(902)에 제공될 수 있다.
상이한 프로세싱 유닛들이 공유된 라인 버퍼들을 동시에 이용할 수 있도록 공유된 방식으로 라인 버퍼들의 배열을 도시하는 도시된 실시예는 미가공 프로세싱 로직(900)을 구현하기 위해 요구되는 라인 버퍼들의 수를 현저히 감소시킬 수 있다는 것을 이해해야 한다. 이해될 수 있는 바와 같이, 이것은 이미지 처리 회로(32)를 구현하기 위해 요구되는 하드웨어 리얼 에스테이트 면적(real estate area)을 감소시키며, 따라서 전체 설계 및 제조 비용을 감소시킬 수 있다. 예로서, 상이한 처리 컴포넌트들 사이에 라인 버퍼들을 공유하기 위한 현재 설명된 기법은, 특정 실시예들에서, 라인 버퍼들을 공유하지 않는 종래의 실시예들과 비교할 때 40 내지 50 퍼센트만큼 또는 그보다 많이 라인 버퍼들의 수를 감소시킬 수 있다. 또한, 도 120에서 도시된 미가공 픽셀 프로세싱 로직(900)의 현재 설명된 실시예는 10개의 라인 버퍼를 이용하지만, 다른 실시예들에서 더 적은 또는 더 많은 라인 버퍼들이 이용될 수 있다는 것을 이해해야 한다. 즉, 도 120에서 도시된 실시예는 단지 다수의 프로세싱 유닛들에 의해 라인 버퍼들이 공유되는 개념을 설명하기 위해 의도되었고, 본 기법을 단지 미가공 픽셀 프로세싱 로직(900)에 제한하는 것으로 해석되지 않아야 한다. 실제로, 도 120에서 도시된 명세의 양태들은 ISP 서브시스템(32)의 로직 블록들 중 임의의 것에서 구현될 수 있다.
도 124는 도 120-123에서 도시된 라인 버퍼 구성에 따라 미가공 픽셀 데이터를 처리하기 위한 방법(1167)을 나타내는 순서도이다. 단계(1168)에서 시작하여, 미가공 픽셀 프로세싱 로직(900)의 라인 버퍼들은 미가공 픽셀 데이터를 수신할 수 있다(예를 들면, ISP 프론트-엔드(80), 메모리(108), 또는 양쪽 모두로부터). 단계(1169)에서, 제1 세트의 이득, 오프셋, 및 클램핑(GOC1) 파라미터들이 미가공 픽셀 데이터에 적용된다. 다음으로, 단계(1170)에서, 라인 버퍼들의 제1 서브세트(예를 들면, 도 120에서 라인 버퍼들 6-9)를 이용하여 결함 픽셀 검출 및 보정이 수행된다. 그 후, 단계(1171)에서, 라인 버퍼들의 제1 서브세트로부터의 적어도 하나의 라인 버퍼(예를 들면, 라인 버퍼 9)를 이용하여 녹색 불균일(GNU) 보정이 적용된다. 다음으로, 단계(1172)에서 제시된 바와 같이, 제1 서브세트로부터의 적어도 하나의 라인 버퍼를 또한 이용하여, 잡음 감소를 위한 수평 필터링이 적용된다. 도 120에서 도시된 실시예에서 GNU 보정 및 수평 필터링을 수행하기 위해 이용되는 제1 서브세트로부터의 라인 버퍼(들)는 상이할 수 있다.
방법(1167)은 그 후 단계(1173)로 계속되고, 이 단계에서 제1 서브세트로부터의 적어도 하나의 라인 버퍼뿐만 아니라, 미가공 픽셀 프로세싱 로직(900)의 라인 버퍼들의 제2 서브세트(예를 들면, 라인 버퍼들 0-5)의 적어도 일부를 이용하여 잡음 감소를 위한 수직 필터링이 적용된다. 예를 들면, 위에 설명한 바와 같이, 수직 필터링 모드(예를 들면, 재귀 또는 비재귀)에 따라서, 라인 버퍼들의 제2 서브세트의 일부 또는 전부가 이용될 수 있다. 또한, 하나의 실시예에서, 제2 서브세트는 단계(1170)로부터의 라인 버퍼들의 제1 서브세트에 포함되지 않은 나머지 라인 버퍼들을 포함할 수 있다. 단계(1174)에서, 라인 버퍼들의 제2 서브세트는 미가공 픽셀 데이터에 렌즈 음영 보정을 적용하기 위해 이용된다. 다음으로, 단계(1175)에서, 라인 버퍼들의 제2 서브세트는 제2 세트의 이득, 오프셋, 및 클램핑(GOC2) 파라미터들을 적용하기 위해 이용되고, 그 후, 단계(1176)에서 도시된 바와 같이, 라인 버퍼의 제2 세트는 또한 미가공 이미지 데이터를 디모자이킹하기 위해 이용될 수 있다. 디모자이킹된 RGB 컬러 데이터는 그 후, 아래에 더 상세히 설명된 바와 같이, RGB 프로세싱 로직(902)에 의한 추가적인 처리를 위해 단계(1177)에서 다운스트림에 전송될 수 있다.
RGB 이미지 신호(910)를 출력할 수 있는, 미가공 픽셀 프로세싱 로직(900)의 동작을 이제 철저히 설명하였으므로, 도 98을 다시 참조하여, 본 설명은 이제 RGB 프로세싱 로직(902)에 의한 RGB 이미지 신호(910)의 처리를 설명하는 것에 초점을 맞출 것이다. 도시된 바와 같이 RGB 이미지 신호(910)는 선택 로직(914) 및/또는 메모리(108)에 전송된다. RGB 프로세싱 로직(902)은, 선택 로직(914)의 구성에 따라, 신호(912)에 의해 도시된 바와 같이, 메모리(108)로부터 또는 신호(910)로부터의 RGB 이미지 데이터일 수 있는, 입력 신호(916)를 수신할 수 있다. RGB 이미지 데이터(916)는, 컬러 보정(예를 들면, 컬러 보정 행렬을 이용한), 자동 화이트 밸런싱을 위한 색 이득의 적용뿐만 아니라, 글로벌 색조 맵핑(global tone mapping) 등을 포함하는, 색 조정 동작들을 수행하도록 RGB 프로세싱 로직(902)에 의해 처리될 수 있다.
RGB 프로세싱 로직(902)의 실시예의 보다 상세한 뷰를 도시하는 블록도가 도 125에 도시되어 있다. 도시된 바와 같이, RGB 프로세싱 로직(902)은 이득, 오프셋, 및 클램핑(GOC) 로직(1178), RGB 컬러 보정 로직(1179), GOC 로직(1180), RGB 감마 조정 로직, 및 색 공간 변환 로직(1182)을 포함한다. 우선, 입력 신호(916)는 이득, 오프셋, 및 클램핑(GOC) 로직(1178)에 의해 수신된다. 도시된 실시예에서, GOC 로직(1178)은 컬러 보정 로직(1179)에 의한 처리 전에 R, G, 또는 B 컬러 채널들 중 하나 이상에 대해 자동 화이트 밸런싱을 수행하기 위한 이득들을 적용할 수 있다.
GOC 로직(1178)은, 베이어 이미지 데이터의 R, B, Gr, 및 Gb 성분들보다는, RGB 영역의 컬러 성분들이 처리되는 것을 제외하면, 미가공 픽셀 프로세싱 로직(900)의 GOC 로직(930)과 유사할 수 있다. 동작 중에, 현재의 픽셀에 대한 입력 값은, 상기 수학식 11에서 제시된 바와 같이, 먼저 신호 값 O[c]에 의해 오프셋되고 이득 G[c]와 곱해지고, 여기서 c는 R, G, 및 B를 나타낸다. 위에 설명한 바와 같이, 이득 G[c]는 2개의 정수 비트 및 14개의 분수 비트(예를 들면, 2.14 부동 소수점 표현)를 갖는 16 비트 부호가 없는 수일 수 있고, 이득 G[c]에 대한 값들은 통계 처리 동안에(예를 들면, ISP 프론트-엔드 블록(80)에서) 이전에 결정될 수 있다. 계산된 픽셀 값 Y(수학식 11에 기초한)는 그 후 수학식 12에 따라 최소 및 최대 범위에 클리핑된다. 위에 설명한 바와 같이, 변수 min[c] 및 및 max[c]는, 각각, 최소 및 최대 출력 값들에 대한 부호가 있는 16 비트의 "클리핑 값들"을 나타낼 수 있다. 하나의 실시예에서, GOC 로직(1178)은 또한 각각의 컬러 성분 R, G, 및 B에 대하여, 각각, 최대 및 최소 위아래에 클리핑된 픽셀들의 수의 카운트를 유지하도록 구성될 수 있다.
GOC 로직(1178)의 출력은 그 후 컬러 보정 로직(1179)에 전달된다. 현재 개시된 기법들에 따라, 컬러 보정 로직(1179)은 컬러 보정 행렬(CCM)을 이용하여 RGB 이미지 데이터에 컬러 보정을 적용하도록 구성될 수 있다. 하나의 실시예에서, CCM은 3x3 RGB 변환 행렬일 수 있지만, 다른 실시예들에서는 다른 디멘션(dimensions)의 행렬들이 이용될 수도 있다(예를 들면, 4x3 등). 따라서, R, G, 및 B 성분들을 갖는 입력 픽셀에 대해 컬러 보정을 수행하는 프로세스는 다음과 같이 표현될 수 있다:
Figure pat00144
여기서 R, G, 및 B는 입력 픽셀에 대한 현재의 적색, 녹색, 및 청색 값들을 나타내고, CCM00-CCM22는 컬러 보정 행렬의 계수들을 나타내고, R', G', 및 B'는 입력 픽셀에 대한 보정된 적색, 녹색, 및 청색 값들을 나타낸다. 따라서, 보정된 컬러 값들은 하기의 수학식 97-99에 따라 계산될 수 있다:
Figure pat00145
Figure pat00146
Figure pat00147
CCM의 계수들(CCM00-CCM22)은 위에 설명한 바와 같이 ISP 프론트-엔드 블록(80)에서 통계 처리 동안에 결정될 수 있다. 하나의 실시예에서, 주어진 컬러 채널에 대한 계수들은 그 계수들(예를 들면, 적컬러 보정을 위한 CCM00, CCM01, 및 CCM02)의 합계가 1과 같도록 선택될 수 있고, 이것은 밝기 및 컬러 밸런스를 유지하는 데 도움이 될 수 있다. 또한, 그 계수들은 전형적으로 보정되고 있는 색에 양의 이득이 적용되도록 선택된다. 예를 들면, 적컬러 보정에서, 계수 CCM00는 1보다 클 수 있지만, 계수들 CCM01 및 CCM02 중 하나 또는 양쪽 모두가 1보다 작을 수 있다. 이런 식으로 계수들을 설정하는 것은 청색(B) 및 녹색(G) 성분의 일부를 공제하면서 결과의 보정된 R' 값에서 적색(R) 성분을 강화할 수 있다. 이해될 바와 같이, 이것은 특정한 색의 픽셀에 대한 필터링된 광의 일부가 상이한 색의 이웃 픽셀에 "번질"(bleed) 수 있기 때문에, 최초의 베이어 이미지의 획득 동안에 일어날 수 있는 컬러 오버랩(color overlap)에 관한 문제들을 다룰 수 있다. 하나의 실시예에서, CCM의 계수들은 (4.12로서 부동 소수점으로 표현된) 4개의 정수 비트 및 12개의 분수 비트를 갖는 16 비트의 2의 보수들로서 제공될 수 있다. 게다가, 컬러 보정 로직(1179)은 계산된 보정된 컬러 값들이 최대 값을 초과하거나 최소 값 미만이면 그 값들의 클리핑을 제공할 수 있다.
RGB 컬러 보정 로직(1179)의 출력은 그 후 다른 GOC 로직 블록(1180)에 전달된다. GOC 로직(1180)은 GOC 로직(1178)과 동일한 방식으로 구현될 수 있으며, 따라서, 제공된 이득, 오프셋, 및 클램핑 기능들의 상세한 설명은 여기에 반복되지 않을 것이다. 하나의 실시예에서, 컬러 보정 이후의 GOC 로직(1180)의 적용은 보정된 컬러 값들에 기초한 이미지 데이터의 자동 화이트 밸런스를 제공할 수 있고, 또한 적색 대 녹색 및 청색 대 녹색 비율들의 센서 변동들을 조정할 수 있다.
다음으로, GOC 로직(1180)의 출력은 추가적인 처리를 위해 RGB 감마 조정 로직(1181)에 전송된다. 예를 들면, RGB 감마 조정 로직(1181)은 감마 보정, 색조 맵핑, 히스토그램 매칭 등을 제공할 수 있다. 개시된 실시예들에 따라, 감마 조정 로직(1181)은 입력 RGB 값들의 대응하는 출력 RGB 값들로의 맵핑을 제공할 수 있다. 예를 들면, 감마 조정 로직은 R, G, 및 B 성분들 각각에 대하여 한 테이블씩, 3개의 룩업 테이블들의 세트를 제공할 수 있다. 예로서, 각각의 룩업 테이블은 각각의 값이 출력 레벨을 나타내는, 10 비트 값들의 256개 엔트리들을 저장하도록 구성될 수 있다. 입력 값이 2개의 엔트리들 사이에 있을 때, 출력 값은 선형적으로 보간될 수 있도록, 테이블 엔트리들은 입력 픽셀 값들의 범위에서 고르게 분포될 수 있다. 하나의 실시예에서, R, G, 및 B에 대한 3개의 룩업 테이블들 각각은, 그 룩업 테이블들이 메모리에서 "더블 버퍼링"되도록, 복제(duplicate)될 수 있고, 따라서 처리 동안에 하나의 테이블이 사용되는 동안에, 그것의 복제가 업데이트되고 것을 허용한다. 위에 설명한 10 비트 출력 값들에 기초하여, 14 비트 RGB 이미지 신호는 본 실시예에서 감마 보정 프로세스의 결과로서 10 비트로 사실상 다운샘플링된다는 것에 주목해야 한다.
감마 조정 로직(1181)의 출력은 메모리(108)에 및/또는 색 공간 변환 로직(1182)에 전송될 수 있다. 색 공간 변환(CSC) 로직(1182)은 감마 조정 로직(1181)으로부터의 RGB 출력을 YCbCr 포맷으로 변환하도록 구성될 수 있고, 여기서 Y는 루마 성분을 나타내고, Cb는 청색-차이 크로마 성분을 나타내고, Cr은 적색-차이 크로마 성분을 나타내고, 그것들 각각은 감마 조정 동작 동안에 14 비트로부터 10 비트로의 RGB 데이터의 비트 깊이 변환의 결과로서 10 비트 포맷일 수 있다. 위에 설명한 바와 같이, 하나의 실시예에서, 감마 조정 로직(1181)의 RGB 출력은 10 비트로 다운샘프링되고 따라서 CSC 로직(1182)에 의해 10 비트 YCbCr 값들로 변환되고, 그것은 그 후 YCbCr 프로세싱 로직(904)에 전달될 수 있고, 이것은 아래에 더 설명될 것이다.
RGB 영역으로부터 YCbCr 색 공간으로의 변환은 색 공간 변환 행렬(CSCM)을 이용하여 수행될 수 있다. 예를 들면, 하나의 실시예에서, CSCM은 3x3 변환 행렬일 수 있다. CSCM의 계수들은 BT.601 및 BT.709 표준과 같은, 알려진 변환식에 따라 설정될 수 있다. 게다가, CSCM 계수들은 입력 및 출력들의 소망의 범위에 기초하여 적응성이 있을 수 있다. 따라서, 몇몇 실시예들에서, CSCM 계수들은 ISP 프론트-엔드 블록(80)에서의 통계 처리 동안에 수집된 데이터에 기초하여 결정되고 프로그램될 수 있다.
RGB 입력 픽셀에 대해 YCbCr 색 공간 변환을 수행하는 프로세스는 다음과 같이 표현될 수 있다:
Figure pat00148
여기서 R, G, 및 B는 (예를 들면, 감마 조정 로직(1181)에 의해 처리된 바와 같이) 10 비트 형태로 입력 픽셀에 대한 현재의 적색, 녹색, 및 청색 값들을 나타내고, CSCM00-CSCM22는 색 공간 변환 행렬의 계수들을 나타내고, Y, Cb, 및 Cr은 입력 픽셀에 대한 결과의 루마, 및 크로마 성분들을 나타낸다. 따라서, Y, Cb, 및 Cr에 대한 값들은 하기의 수학식 101-103에 따라 계산될 수 있다:
Figure pat00149
Figure pat00150
Figure pat00151
색 공간 변환 동작 후에, 결과의 YCbCr 값들은 CSC 로직(1182)으로부터 신호(918)로서 출력될 수 있고, 그 신호는 YCbCr 프로세싱 로직(904)에 의해 처리될 수 있고, 이것은 아래에 설명될 것이다.
하나의 실시예에서, CSCM의 계수들은 4개의 정수 비트 및 12개의 분수 비트(4.12)를 갖는 16 비트의 2의 보수들일 수 있다. 다른 실시예에서, CSC 로직(1182)은 Y, Cb, 및 Cr 값들 각각에 오프셋을 적용하고, 결과의 값들을 최소 및 최대 값에 클리핑하도록 더 구성될 수 있다. 단지 예로서, YCbCr 값들이 10 비트 형태라고 가정할 때, 오프셋은 -512 내지 512의 범위에 있고, 최소 및 최대 값들은 각각 0 및 1023일 수 있다.
도 98에서 ISP 파이프 로직(82)의 블록도를 다시 참조하여, YCbCr 신호(918)는 선택 로직(922)에 및/또는 메모리(108)에 전송될 수 있다. YCbCr 프로세싱 로직(904)은, 선택 로직(922)의 구성에 따라, 신호(920)에 의해 도시된 바와 같이, 메모리(108)로부터 또는 신호(918)로부터의 YCbCr 이미지 데이터일 수 있는, 입력 신호(924)를 수신할 수 있다. YCbCr 이미지 데이터(924)는 그 후 루마 샤프닝, 크로마 억제, 크로마 잡음 감소뿐만 아니라, 밝기, 콘트라스트, 및 색 조정 등을 위해 YCbCr 프로세싱 로직(904)에 의해 처리될 수 있다. 또한, YCbCr 프로세싱 로직(904)은 수평 및 수직 양쪽 방향에서 처리된 이미지 데이터의 감마 맵핑 및 스케일링을 제공할 수 있다.
YCbCr 프로세싱 로직(904)의 실시예의 보다 상세한 뷰를 도시하는 블록도가 도 126에 도시되어 있다. 도시된 바와 같이, YCbCr 프로세싱 로직(904)은 이미지 샤프닝 로직(1183), 밝기, 콘트라스트, 및/또는 색을 조정하기 위한 로직(1184), YCbCr 감마 조정 로직(1185), 크로마 데시메이션 로직(1186), 및 스케일링 로직(1187)을 포함한다. YCbCr 프로세싱 로직(904)은 1-플레인(1-plane), 2-플레인(2-plane), 또는 3-플레인(3-plane) 메모리 구성들을 이용하여 4:4:4, 4:2:2, 또는 4:2:0 포맷으로 픽셀 데이터를 처리하도록 구성될 수 있다. 또한, 하나의 실시예에서, YCbCr 입력 신호(924)는 10 비트 값들로서 루마 및 크로마 정보를 제공할 수 있다.
이해될 바와 같이, 1-플레인, 2-플레인, 또는 3-플레인의 참조는 픽처 메모리(picture memory)에서 이용되는 이미징 플레인들의 수를 나타낸다. 예를 들면, 3-플레인 포맷에서는, Y, Cb, 및 Cr 성분들 각각은 개별적인 각각의 메모리 플레인들을 이용할 수 있다. 2-플레인 포맷에서는, 루마 성분(Y)에 대하여 제1 플레인이 제공될 수 있고, 크로마 성분들(Cb 및 Cr)에 대하여 Cb 및 Cr 샘플들을 인터리빙하는(interleave) 제2 플레인이 제공될 수 있다. 1-플레인 포맷에서는, 메모리 내의 단일 플레인이 루마 및 크로마 샘플들과 인터리빙된다. 또한, 4:4:4, 4:2:2, 또는 4:2:0 포맷에 관하여, 4:4:4 포맷은 3개의 YCbCr 성분들 각각이 동일한 레이트로 샘플링되는 샘플링 포맷을 나타낸다는 것을 이해할 수 있다. 4:2:2 포맷에서는, 크로마 성분들 Cb 및 Cr이 루마 성분 Y의 샘플링 레이트의 절반으로 서브샘플링되고(sub-sampled), 따라서 수평 방향에서 크로마 성분들 Cb 및 Cr의 해상도를 절반으로 감소시킨다. 유사하게 4:2:0 포맷은 수직 및 수평 양쪽 방향에서 크로마 성분들 Cb 및 Cr을 서브샘플링한다.
YCbCr 정보의 처리는 소스 버퍼 내에 정의된 활성 소스 영역(active source region) 내에서 일어날 수 있고, 여기서 활성 소스 영역은 "유효"(valid) 픽셀 영역을 포함한다. 예를 들면, 도 127을 참조하면, 활성 소스 영역(1189)이 그 안에 정의되어 있는 소스 버퍼(1188)가 도시되어 있다. 도시된 예에서, 소스 버퍼는 10 비트 값들의 소스 픽셀들을 제공하는 4:4:4 1-플레인 포맷을 나타낼 수 있다. 활성 소스 영역(1189)은 루마(Y) 샘플들 및 크로마 샘플들(Cb 및 Cr)에 대하여 개별적으로 지정될 수 있다. 따라서, 활성 소스 영역(1189)은 실제로는 루마 및 크로마 샘플들을 위한 다수의 활성 소스 영역들을 포함할 수 있다는 것을 이해해야 한다. 루마 및 크로마에 대한 활성 소스 영역들(1189)의 시작은 소스 버퍼의 베이스 어드레스(0,0)(1190)로부터의 오프셋에 기초하여 결정될 수 있다. 예를 들면, 루마 활성 소스 영역에 대한 시작 위치(Lm_X, Lm_Y)(1191)는 베이스 어드레스(1190)에 관하여 x 오프셋(1193) 및 y 오프셋(1196)에 의해 정의될 수 있다. 유사하게, 크로마 활성 소스 영역에 대한 시작 위치(Ch_X, Ch_Y)(1192)는 베이스 어드레스(1190)에 관하여 x 오프셋(1194) 및 y 오프셋(1198)에 의해 정의될 수 있다. 본 예에서, 루마 및 크로마 각각에 대한 y 오프셋들(1196 및 1198)은 같을 수 있다는 것에 주목해야 한다. 시작 위치(1191)에 기초하여, 루마 활성 소스 영역은 폭(1195) 및 높이(1200)에 의해 정의될 수 있고, 이들 각각은 x 및 y 방향에서 각각 루마 샘플들의 수를 나타낼 수 있다. 또한, 시작 위치(1192)에 기초하여, 크로마 활성 소스 영역은 폭(1202) 및 높이(1204)에 의해 정의될 수 있고, 이들 각각은 x 방향 및 y 방향에서 각각 크로마 샘플들의 수를 나타낼 수 있다.
도 128은 루마 및 크로마 샘플들을 위한 활성 소스 영역들이 2-플레인 포맷에서 어떻게 결정될 수 있는지를 도시하는 예를 더 제공한다. 예를 들면, 도시된 바와 같이, 루마 활성 소스 영역(1189)은 시작 위치(1191)에 관하여 폭(1195) 및 높이(1200)에 의해 지정된 영역에 의해 (베이스 어드레스(1190)를 갖는) 제1 소스 버퍼(1188)에서 정의될 수 있다. 크로마 활성 소스 영역(1208)은 시작 위치(1192)에 관하여 폭(1202) 및 높이(1204)에 의해 지정된 영역으로서 (베이스 어드레스(1190)를 갖는) 제2 소스 버퍼(1206)에서 정의될 수 있다.
상기 점들을 염두에 두고 다시 도 126을 참조하면, YCbCr 신호(924)는 먼저 이미지 샤프닝 로직(1183)에 의해 수신된다. 이미지 샤프닝 로직(1183)은 이미지에서 텍스처 및 에지 세부 도시를 증가시키기 위해 픽처 샤프닝 및 에지 강화 처리를 수행하도록 구성될 수 있다. 이해될 바와 같이, 이미지 샤프닝은 지각되는 이미지 해상도를 향상시킬 수 있다. 그러나, 이미지 내의 현존하는 잡음은 텍스처 및 에지들로서 검출되지 않고, 따라서 샤프닝 프로세스 동안에 증폭되지 않는 것이 일반적으로 바람직하다.
본 기법에 따라, 이미지 샤프닝 로직(1183)은 YCbCr 신호의 루마(Y) 성분에 대해 멀티스케일 언샤프 마스크 필터(multi-scale unsharp mask filter)를 이용하여 픽처 샤프닝을 수행할 수 있다. 하나의 실시예에서, 상이한 스케일 사이즈의 둘 이상의 로우 패스 가우시안 필터들이 제공될 수 있다. 예를 들면, 2개의 가우시안 필터들을 제공하는 실시예에서, 제1 반경(x)을 갖는 제1 가우시안 필터의 출력(예를 들면, 가우시안 블러링)이 제2 반경(y)을 갖는 제2 가우시안 필터의 출력으로부터 공제되어 언샤프 마스크를 생성한다(여기서 x는 y보다 크다). Y 입력으로부터 가우시안 필터들의 출력들을 공제하는 것에 의해 추가적인 언샤프 마스크들이 또한 획득될 수 있다. 특정 실시예들에서, 이 기법은 또한 언샤프 마스크들을 이용하여 수행될 수 있는 적응 코어링 임계값 비교 동작들(adaptive coring threshold comparison operations)을 제공할 수 있고, 그 비교(들)의 결과에 기초하여, 이득 양들이 베이스 이미지에 추가되어 최종 출력을 생성할 수 있고, 베이스 이미지는 최초의 Y 입력 이미지 또는 가우시안 필터들 중 하나의 출력으로서 선택될 수 있다.
도 129를 참조하면, 현재 개시된 기법들의 실시예들에 따라 이미지 샤프닝을 수행하기 위한 대표적인 로직(1210)을 도시하는 블록도가 도시되어 있다. 로직(1210)은 입력 루마 이미지 Yin에 적용될 수 있는 멀티스케일 언샤프 필터링 마스크를 나타낸다. 예를 들면, 도시된 바와 같이, Yin은 2개의 로우 패스 가우시안 필터들(1212(G1) 및 1214(G2))에 의해 수신되어 처리된다. 본 예에서 필터(1212)는 3x3 필터일 수 있고 필터(1214)는 5x5 필터일 수 있다. 그러나, 추가적인 실시예들에서, 상이한 스케일의 필터들을 포함하는, 셋 이상의 가우시안 필터들이 또한 이용될 수 있다(예를 들면, 7x7, 9x9 등)는 것을 이해해야 한다. 이해될 바와 같이, 로우 패스 필터링 프로세스로 인해, 일반적으로 잡음에 대응하는, 고주파 성분들은 G1 및 G2의 출력들로부터 제거되어 "언샤프" 이미지들(G1out 및 G2out)을 생성할 수 있다. 아래에 설명되는 바와 같이, 언샤프 입력 이미지를 베이스 이미지로서 이용하는 것은 샤프닝 필터의 일부로서 잡음 감소를 허용한다.
3x3 가우시안 필터(1212) 및 5x5 가우시안 필터(1214)는 아래에 제시된 바와 같이 정의될 수 있다:
Figure pat00152
Figure pat00153
단지 예로서, 가우시안 필터들 G1 및 G2의 값들은 하나의 실시예에서 다음과 같이 선택될 수 있다:
Figure pat00154
Figure pat00155
Yin, G1out, 및 G2out에 기초하여, 3개의 언샤프 마스크, Sharp1, Sharp2, 및 Sharp3가 생성될 수 있다. Sharp1은 가우시안 필터(1212)의 언샤프 이미지 G1out으로부터 공제된 가우시안 필터(1214)의 언샤프 이미지 G2out으로서 결정될 수 있다. Sharp1은 본질적으로 2개의 로우 패스 필터들 사이의 차이이기 때문에, 그것은 "중간 대역"(mid band) 마스크로 명명될 수 있는데, 이는 G1out 및 G2out 언샤프 이미지들에서 보다 고주파의 잡음 성분들이 이미 필터링 제거되었기 때문이다. 게다가, Sharp2는 입력 루마 이미지 Yin으로부터 G2out을 공제하는 것에 의해 계산될 수 있고, Sharp3는 입력 루마 이미지 Yin으로부터 G1out을 공제하는 것에 의해 계산될 수 있다. 아래에 설명되는 바와 같이, 언샤프 마스크들 Sharp1, Sharp2, 및 Sharp3를 이용하여 적응 임계값 코어링 스킴이 적용될 수 있다.
선택 로직(1216)을 참조하면, 제어 신호 UnsharpSel에 기초하여 베이스 이미지가 선택될 수 있다. 도시된 실시예에서, 베이스 이미지는 입력 이미지 Yin, 또는 필터링된 출력들 G1out 또는 G2out일 수 있다. 이해될 바와 같이, 최초의 이미지들이 높은 잡음 분산(예를 들면, 거의 신호 분산만큼 높은)을 가질 때, 샤프닝에서 베이스 이미지로서 최초의 이미지 Yin을 이용하는 것은 샤프닝 동안에 잡음 성분들의 감소를 충분히 제공하지 않을 수 있다. 따라서, 입력 이미지에서 특정한 임계값의 잡음 콘텐츠가 검출될 때, 선택 로직(1216)은 로우 패스 필터링된 출력들 G1out 또는 G2out 중, 잡음을 포함할 수 있는 고주파 콘텐츠가 감소된 하나의 출력을 선택하도록 구성될 수 있다. 하나의 실시예에서, 제어 신호 UnsharpSel의 값은 이미지의 잡음 콘텐츠를 결정하기 위해 ISP 프론트-엔드 블록(80)에서 통계 처리 동안에 획득된 통계 데이터를 분석하는 것에 의해 결정될 수 있다. 예로서, 샤프닝 프로세스의 결과로서 출현 잡음이 증가하지 않도록, 입력 이미지 Yin이 낮은 잡음 콘텐츠를 가진다면, 입력 이미지 Yin이 베이스 이미지로서 선택될 수 있다(예를 들면, UnsharpSel = 0). 샤프닝 프로세스가 잡음을 증폭시킬 수 있도록, 입력 이미지 Yin이 눈에 띄는 수준의 잡음을 포함하는 것으로 결정되면, 필터링된 이미지들 G1out 또는 G2out 중 하나가 선택될 수 있다(예를 들면, 각각, UnsharpSel = 1 또는 2). 따라서, 베이스 이미지를 선택하기 위해 적응 기법을 적용함으로써, 로직(1210)은 본질적으로 잡음 감소 기능을 제공한다.
다음으로, 아래에 설명된 바와 같이, 적응 코어링 임계값 스킴에 따라 Sharp1, Sharp2, 및 Sharp3 마스크들 중 하나 이상에 이득들이 적용될 수 있다. 다음으로, 언샤프 값들 Sharp1, Sharp2, 및 Sharp3은 비교기 블록들(1218, 1220, 및 1222)에 의하여 다양한 임계값들 SharpThd1, SharpThd2, 및 SharpThd3와 비교될 수 있다(반드시 각기 비교되는 것은 아니다). 예를 들면, Sharp1은 항상 비교기 블록(1218)에서 SharpThd1과 비교된다. 비교기 블록(1220)에 관하여, 임계값 SharpThd2는, 선택 로직(1226)에 따라서, Sharp1 또는 Sharp2와 비교될 수 있다. 예를 들면, 선택 로직(1226)은 제어 신호 SharpCmp2의 상태에 따라서 Sharp1 또는 Sharp2를 선택한다(예를 들면, SharpCmp2 = 1은 Sharp1을 선택하고; SharpCmp2 = 0은 Sharp2를 선택한다). 예를 들면, 하나의 실시예에서, SharpCmp2의 상태는 입력 이미지(Yin)의 잡음 분산/콘텐츠에 따라서 결정될 수 있다.
도시된 실시예에서, 이미지 데이터가 비교적 낮은 양의 잡음을 갖는다고 검출되지 않는 이상, Sharp1을 선택하도록 SharpCmp2 및 SharpCmp3 값들을 선택하는 것이 일반적으로 바람직하다. 이것은 가우시안 로우 패스 필터들 G1 및 G2의 출력들 사이의 차이인, Sharp1은 일반적으로 잡음에 덜 민감하고, 따라서 "노이지"(noisy) 이미지 데이터에서의 잡음 레벨 변동으로 인해 SharpAmt1, SharpAmt2, 및 SharpAmt3 값들이 변화하는 양을 감소시키는 데 도움이 될 수 있기 때문이다. 예를 들면, 만약 최초의 이미지가 높은 잡음 분산을 갖는다면, 고주파 성분들 중 일부는 고정된 임계값들을 이용할 때 포착되지 않을 수 있고, 따라서, 샤프닝 프로세스 동안에 증폭될 수 있다. 따라서, 만약 입력 이미지의 잡음 콘텐츠가 높다면, 잡음 콘텐츠의 일부는 Sharp2에서 존재할 수 있다. 그러한 경우에, SharpCmp2는, 위에 설명한 바와 같이, 중간 대역 마스크 Sharp1을 선택하도록 1로 설정될 수 있고, Sharp1은, 위에 설명한 바와 같이, 2개의 로우 패스 필터 출력들 사이의 차이이기 때문에 감소된 고주파 성분을 갖고 따라서 잡음에 덜 민감하다.
이해될 바와 같이, SharpCmp3의 제어 하에 선택 로직(1224)에 의한 Sharp1 또는 Shapr3의 선택에 유사한 프로세스가 적용될 수 있다. 하나의 실시예에서, SharpCmp2 및 SharpCmp3는 디폴트로 1로 설정되고(예를 들면, Sharp1을 사용), 일반적으로 낮은 잡음 분산을 갖는 것으로 식별되는 입력 이미지들에 대해서만 0으로 설정될 수 있다. 이것은 본질적으로 적응 코어링 임계값 스킴을 제공하고 여기서 비교 값(Sharp1, Sharp2, 또는 Sharp3)의 선택은 입력 이미지의 잡음 분산에 기초하여 적응한다.
비교기 블록들(1218, 1220, 및 1222)의 출력들에 기초하여, 샤프닝된 출력 이미지 Ysharp는 획득된 언샤프 마스크들을 (예를 들면, 로직(1216)을 통해 선택된) 베이스 이미지에 적용하는 것에 의해 결정될 수 있다. 예를 들면, 먼저 비교기 로직(1222)을 참조하면, SharpThd3가 선택 로직(1224)에 의해 제공된 B 입력과 비교되며, 이것은 이 문서에서 "SharpAbs"로 명명될 것이고, SharpCmp3의 상태에 따라 Sharp1 또는 Sharp3와 같을 수 있다. 만약 SharpAbs가 임계값 SharpThd3보다 크다면, 이득 SharpAmt3가 Sharp3에 적용되고, 그 결과의 값이 베이스 이미지에 추가된다. 만약 SharpAbs가 임계값 SharpThd3보다 작다면, 감쇠된 이득 Att3가 적용될 수 있다. 하나의 실시예에서, 감쇠된 이득 Att3는 다음과 같이 결정될 수 있다:
Figure pat00156
여기서, SharpAbs는, 선택 로직(1224)에 의해 결정되는 바와 같이, Sharp1 또는 Sharp3이다. 최대 이득(full gain)(SharpAmt3) 또는 감쇠된 이득(Att3)과 합해진 베이스 이미지의 선택은 비교기 블록(1222)의 출력에 기초하여 선택 로직(1228)에 의해 수행된다. 이해될 바와 같이, 감소된 이득의 사용은 SharpAbs가 임계값(예를 들면, SharpThd3)보다 크지 않지만, 그럼에도 불구하고 이미지의 잡음 분산은 주어진 임계값에 가까운 상황을 다룰 수 있다. 이것은 샤프 픽셀과 언샤프 픽셀 사이의 눈에 띄는 변화를 감소시키는 데 도움이 될 수 있다. 예를 들면, 만약 그러한 상황에서 이미지 데이터가 감소된 이득 없이 전달된다면, 결과의 픽셀은 결함 픽셀(예를 들면, 스턱 픽셀)로서 나타날 수 있다.
다음으로, 비교기 블록(1220)에 관하여 유사한 프로세스가 적용될 수 있다. 예를 들면, SharpCmp2의 상태에 따라서, 선택 로직(1226)은 임계값 SharpThd2와 비교되는 비교기 블록(1220)에의 입력으로서 Sharp1 또는 Sharp2를 제공할 수 있다. 비교기 블록(1220)의 출력에 따라서, 이득 SharpAmt2 또는 SharpAmt2에 기초한 감쇠된 이득 Att2가 Sharp2에 적용되고 위에 설명된 선택 로직(1228)의 출력에 추가된다. 이해될 바와 같이, 감소된 이득 Att2는, Sharp1 또는 Sharp2로서 선택될 수 있는, SharpAbs에 관하여 이득 SharpAmt2 및 임계값 SharpThd2가 적용되는 것을 제외하고는, 상기 수학식 104와 유사한 방식으로 계산될 수 있다.
그 후, 이득 SharpAmt1 또는 감쇠된 이득 Att1이 Sharp1에 적용되고, 그 결과의 값은 선택 로직(1230)의 출력과 합해져서 샤프닝된 픽셀 출력 Ysharp를 생성한다(선택 로직(1232)으로부터). 이득 SharpAmt1 또는 감쇠된 이득 Att1 중 어느 하나를 적용하는 것의 선택은, Sharp1을 임계값 SharpThd1과 비교하는, 비교기 블록(1218)의 출력에 기초하여 결정될 수 있다. 다시, 감쇠된 이득 Att1은, Sharp1에 관하여 이득 SharpAmt1 및 임계값 SharpThd1이 적용되는 것을 제외하고는, 상기 수학식 104와 유사한 방식으로 결정될 수 있다. 3개의 마스크들 각각을 이용하여 스케일링된 결과의 샤프닝된 픽셀 값들이 입력 픽셀 Yin에 추가되어 샤프닝된 출력 Ysharp를 생성하고, 이 출력은, 하나의 실시예에서, 10 비트에 클리핑될 수 있다(YCbCr 처리가 10 비트 정밀도로 일어나는 것을 가정하여).
이해될 바와 같이, 종래의 언샤프 마스킹 기법들과 비교할 때, 이 명세에서 제시된 이미지 샤프닝 기법들은 텍스처 및 에지의 강화를 개선하는 것을 제공함과 동시에 또한 출력 이미지에서 잡음을 감소시킬 수 있다. 특히, 본 기법들은, 예를 들면, CMOS 이미지 센서들을 이용하여 캡처된 이미지들이, 휴대용 장치들(예를 들면, 휴대폰)에 통합된 저해상도의 카메라를 이용하여 낮은 광 조건에서 획득된 이미지들과 같은, 불량한 신호 대 잡음비를 나타내는 애플리케이션들에서 적합할 수 있다. 예를 들면, 잡음 분산과 신호 분산이 비슷할 때(comparable), 잡음 성분들 중 일부가 텍스처 및 에지를 따라서 샤프닝될 것이기 때문에, 샤프닝을 위해 고정된 임계값을 사용하는 것은 어렵다. 따라서, 이 문서에서 제공된 기법들은, 위에 설명한 바와 같이, 감소된 잡음 콘텐츠를 또한 나타내는 샤프닝된 이미지를 제공하기 위하여 언샤프 이미지들(예를 들면, G1out 및 G2out)로부터 특징들을 추출하기 위해 멀티스케일 가우시안 필터들을 이용하여 입력 이미지로부터 잡음을 필터링할 수 있다.
계속하기 전에, 도시된 로직(1210)은 본 기법들의 단지 하나의 대표적인 실시예를 제공하기 위해 의도되었다는 것을 이해해야 한다. 다른 실시예들에서는, 추가적인 또는 보다 적은 특징들이 이미지 샤프닝 로직(1183)에 의해 제공될 수 있다. 예를 들면, 몇몇 실시예들에서, 감쇠된 이득을 적용하기보다, 로직(1210)은 단순히 베이스 값을 전달할 수 있다. 게다가, 몇몇 실시예들은 선택 로직 블록들(1224, 1226, 또는 1216)을 포함하지 않을 수 있다. 예를 들면, 비교기 블록들(1220 및 1222)은, 각각, 선택 로직 블록들(1224 및 1226)로부터의 선택 출력보다, 단순히 각각, Sharp2 및 Sharp3 값들을 수신할 수 있다. 그러한 실시예들은 도 129에서 도시된 구현만큼 강건한 샤프닝 및/또는 잡음 감소 특징들을 제공하지 않을 수 있지만, 그러한 설계 선택들은 비용 및/또는 비즈니스 관련 제약의 결과일 수 있다는 것을 이해해야 한다.
본 실시예에서, 이미지 샤프닝 로직(1183)은 일단 샤프닝된 이미지 출력 Ysharp가 획득되면 에지 강화 및 크로마 억제 특징들을 또한 제공할 수 있다. 이러한 추가적인 특징들 각각이 이제 아래에 설명될 것이다. 먼저 도 130을 참조하면, 도 129의 샤프닝 로직(1210)으로부터 다운스트림에 구현될 수 있는 에지 강화를 수행하기 위한 대표적인 로직(1234)이 하나의 실시예에 따라 도시되어 있다. 도시된 바와 같이, 최초의 입력 값 Yin은 에지 검출을 위해 소벨 필터(Sobel filter)(1236)에 의해 처리된다. 소벨 필터(1236)는 최초의 이미지의 3x3 픽셀 블록(하기에 "A"로 명명됨)에 기초하여 그레디언트 값 YEdge를 결정할 수 있다(Yin은 3x3 블록의 중앙 픽셀이다). 하나의 실시예에서, 소벨 필터(1236)는 수평 및 수직 방향에서 변화들을 검출하기 위해 최초의 이미지 데이터를 컨볼빙(convolving)하는 것에 의해 YEdge를 계산할 수 있다. 이 프로세스는 하기 수학식 105-107에서 제시된다.
Figure pat00157
Figure pat00158
Figure pat00159
Figure pat00160
여기서 Sx 및 Sy는 수평 및 수직 방향에서, 각각, 그레디언트 에지-강도 검출을 위한 행렬 연산자들을 나타내고, Gx 및 Gy는 수평 및 수직 변화 도함수들을 각각 포함하는 그레디언트 이미지들을 나타낸다. 따라서, 출력 YEdge는 Gx와 Gy의 곱으로서 결정된다.
YEdge는 그 후, 도 129에서 위에 설명한 바와 같이, 중간 대역 Sharp1 마스크와 함께 선택 로직(1240)에 의해 수신된다. 제어 신호 EdgeCmp에 기초하여, Sharp1 또는 YEdge는 비교기 블록(1238)에서 임계값 EdgeThd와 비교된다. EdgeCmp의 상태는, 예를 들면, 이미지의 노이즈 콘텐츠에 기초하여 결정될 수 있고, 따라서 에지 검출 및 강화를 위한 적응 코어링 임계값 스킴을 제공한다. 다음으로, 비교기 블록(1238)의 출력은 선택 로직(1242)에 제공될 수 있고 최대 이득 또는 감쇠된 이득이 적용될 수 있다. 예를 들면, 비교기 블록(1238)에의 선택된 B 입력(Sharp1 또는 YEdge)이 EdgeThd보다 클 때, 적용될 에지 강화의 양을 결정하기 위해 YEdge는 에지 이득 EdgeAmt와 곱해진다. 만약 비교기 브록(1238)에서의 B 입력이 EdgeThd보다 작다면, 에지 강화된 것과 최초의 픽셀 사이의 눈에 띄는 변화를 피하기 위해 감쇠된 에지 이득 AttEdge가 적용될 수 있다. 이해될 바와 같이, AttEdge는 상기 수학식 104와 유사한 방식으로 계산될 수 있지만, 선택 로직(1240)의 출력에 따라, Sharp1 또는 YEdge일 수 있는, "SharpAbs"에 EdgeAmt 및 EdgeThd가 적용된다. 따라서, 이득(EdgeAmt) 또는 감쇠된 이득(AttEdge)을 이용하여 강화된 에지 픽셀은 YSharp(도 129의 로직(1210)의 출력)에 추가되어 에지 강화된 출력 픽셀 Yout을 획득할 수 있고, 이것은, 하나의 실시예에서, 10 비트에 클리핑될 수 있다(YCbCr 처리가 10 비트 정밀도로 일어난다고 가정하여).
이미지 샤프닝 로직(1183)에 의해 제공된 크로마 억제 특징들에 관하여, 그러한 특징들은 루마 에지들에서 크로마를 감쇠시킬 수 있다. 일반적으로, 크로마 억제는 위에 설명한 루마 샤프닝 및/또는 에지 강화 단계들로부터 획득된 값(YSharp, Yout)에 따라서 1보다 작은 크로마 이득(감쇠 인자)을 적용하는 것에 의해 수행될 수 있다. 예로서, 도 131은 대응하는 샤프닝된 루마 값들(YSharp)에 대하여 선택될 수 있는 크로마 이득들을 나타내는 곡선(1252)을 포함하는 그래프(1250)를 도시한다. 그래프(1250)에 의해 표현된 데이터는 YSharp 값들 및 0과 1 사이의 대응하는 크로마 이득들(감쇠 인자)의 룩업 테이블로서 구현될 수 있다. 이 룩업 테이블은 곡선(1252)에 가까워지기 위해 이용될 수 있다. 룩업 테이블에서 2개의 감쇠 인자들 사이에 코로케이트되어 있는 YSharp 값들에 대하여, 현재의 YSharp 값들 위와 아래의 YSharp 값들에 대응하는 2개의 감쇠 인자들에 선형 보간이 적용될 수 있다. 또한, 다른 실시예들에서, 입력 루마 값은, 도 129에서 위에 설명한 바와 같이, 로직(1210)에 의해 결정된 Sharp1, Sharp2, 또는 Sharp3 값들 중 하나, 또는 도 130에서 설명한 바와 같이, 로직(1234)에 의해 결정된 YEdge 값으로서 선택될 수도 있다.
다음으로, 입력 샤프닝 로직(1183)(도 126)의 출력은 밝기, 콘트라스트, 및 색(BCC) 조정 로직(1184)에 의해 처리된다. BCC 조정 로직(1184)의 실시예를 도시하는 기능 블록도가 도 132에 도시되어 있다. 도시된 바와 같이 로직(1184)은 밝기 및 콘트라스트 처리 블록(1262), 글로벌 색상(global hue) 제어 블록(1264), 및 채도 제어 블록(1266)을 포함한다. 현재 도시된 실시예들은 10 비트 정밀도로 YCbCr 데이터의 처리를 제공하지만, 다른 실시예들은 상이한 비트 깊이를 이용할 수 있다. 블록들(1262, 1264, 및 1266) 각각의 기능이 아래에 설명된다.
먼저 밝기 및 콘트라스트 처리 블록(1262)을 참조하면, 먼저 오프셋, YOffset이 루마(Y) 데이터로부터 공제되어 블록 레벨을 0으로 설정한다. 이것은 콘트라스트 조정이 블랙 레벨들을 변경하지 않는 것을 보증하기 위해 행해진다. 다음으로, 콘트라스트 제어를 적용하기 위해 루마 값이 콘트라스트 이득 값과 곱해진다. 예로서, 콘트라스트 이득 값은 2개의 정수 비트 및 10개의 분수 비트를 갖는 12 비트 부호가 없는 값일 수 있고, 따라서 픽셀 값의 4배까지의 콘트라스트 이득 범위를 제공한다. 그 후, 루마 데이터로부터 밝기 오프셋을 더하는(또는 공제하는) 것에 의해 밝기 조정이 구현될 수 있다. 예로서, 본 발명에서 밝기 오프셋은 -512 내지 +512 사이의 범위를 갖는 10 비트 2의 보수 값일 수 있다. 또한, 콘트라스트를 변경할 때 변화하는 DC 오프셋을 피하기 위하여 콘트라스트 조정 후에 밝기 조정이 수행된다는 것에 주목해야 한다. 그 후, 블랙 레벨을 리포지션(reposition)하기 위해 조정된 루마 데이터에 다시 최초 YOffset이 더해진다.
블록들(1264 및 1266)은 Cb 및 Cr 데이터의 색상 특성에 기초한 색 조정을 제공한다. 도시된 바와 같이, (10 비트 처리를 가정하여) 512의 오프셋이 먼저 Cb 및 Cr로부터 공제되어 그 범위를 대략 0에 위치시킨다. 그 후 하기의 수학식들에 따라 색상이 조정된다:
Figure pat00161
Figure pat00162
여기서 Cbadj 및 Cradj는 조정된 Cb 및 Cr 값들을 나타내고, θ는 색상 각도를 나타내고, 이것은 다음과 같이 계산될 수 있다:
Figure pat00163
상기 연산들은 글로벌 색상 제어 블록(1264) 내의 로직에 의해 도시되고, 하기의 행렬 연산에 의해 표현될 수 있다:
Figure pat00164
여기서 Ka = cos(θ), Kb = sin(θ)이고, θ는 상기 수학식 110에서 정의된다.
다음으로, 채도 제어 블록(1266)에 의해 도시된 바와 같이, Cbadj 및 Cradj 값들에 채도 제어가 적용될 수 있다. 도시된 실시예에서, 채도 제어는 Cb 및 Cr 값들 각각에 대하여 글로벌 채도 승수 및 색상 기반 채도 승수를 적용하는 것에 의해 수행된다. 색상 기반 채도 제어는 색들의 재현을 개선할 수 있다. 색의 색상은 도 133에서 컬러 휠 그래프(color wheel graph)(1270)에 의해 도시된 바와 같이, YCbCr 색 공간에서 표현될 수 있다. 이해될 바와 같이, YCbCr 색상 및 채도 컬러 휠(1270)은 HSV 색 공간(색상, 채도, 및 강도)에서의 동일한 컬러 휠을 대략 109도만큼 시프트하는 것에 의해 얻어질 수 있다. 도시된 바와 같이, 그래프(1270)는 0 내지 1의 범위 내의 채도 승수(S)를 나타내는 원주 값들(circumferential values), 및 0 내지 360°사이의 범위 내의, 위에 정의된 것과 같은, θ를 나타내는 각도 값들을 포함한다. 각각의 θ는 상이한 색을 나타낸다(예를 들면, 49°= 마젠타색, 109°= 적색, 229°= 녹색 등). 특정한 색상 각도 θ에서의 색의 색상은 적당한 채도 승수 S를 선택하는 것에 의해 조정될 수 있다.
다시 도 132를 참조하면, (글로벌 색상 제어 블록(1264)에서 계산된) 색상 각도 θ는 Cb 채도 룩업 테이블(1268) 및 Cr 채도 룩업 테이블(1269)에 대한 인덱스로서 사용될 수 있다. 하나의 실시예에서, 채도 룩업 테이블들(1268 및 1269)은 0-360°의 색상 범위에서 고르게 분포된 256개 채도 값들을 포함할 수 있고(예를 들면, 첫 번째 룩업 테이블 엔트리는 0°에 있고 마지막 엔트리는 360°에 있다) 주어진 픽셀에서의 채도 값 S는 현재의 색상 각도 θ의 바로 위와 아래의 룩업 테이블 내의 채도 값들의 선형 보간을 통해 결정될 수 있다. Cb 및 Cr 성분들 각각에 대한 최종 채도 값은 (Cb 및 Cr 각각에 대한 글로벌 상수일 수 있는) 글로벌 채도 값을 결정된 색상 기반 채도 값과 곱하는 것에 의해 획득된다. 따라서, 최종 보정된 Cb' 및 Cr' 값들은, 색상 기반 채도 제어 블록(1266)에서 도시된 바와 같이, Cbadj 및 Cradj를 그것들 각각의 최종 채도 값들과 곱하는 것에 의해 결정될 수 있다.
그 후, BCC 로직(1184)의 출력은, 도 126에서 도시된 바와 같이, YCbCr 감마 조정 로직(1185)에 전달된다. 하나의 실시예에서, 감마 조정 로직(1185)은 Y, Cb 및 Cr 채널들에 대한 비선형 맵핑 함수들을 제공할 수 있다. 예를 들면, 입력 Y, Cb, 및 Cr 값들은 대응하는 출력 값들에 맵핑된다. 다시, YCbCr 데이터가 10 비트로 처리된다는 것을 가정하여, 보간된 10 비트 256 엔트리 룩업 테이블이 이용될 수 있다. Y, Cb, 및 Cr 채널들 각각에 대하여 하나씩 3개의 그러한 룩업 테이블들이 제공될 수 있다. 256 입력 엔트리들 각각은 고르게 분포되고, 출력은 현재의 입력 인덱스 바로 위와 아래의 인덱스들에 맵핑된 출력 값들의 선형 보간에 의해 결정될 수 있다. 몇몇 실시예들에서, (10 비트 데이터에 대한) 1024 엔트리들을 갖는 비보간(non-interpolated) 룩업 테이블이 또한 이용될 수 있지만, 현저히 더 큰 메모리 요구를 가질 수 있다. 이해될 바와 같이, 룩업 테이블들의 출력 값들을 조정하는 것에 의해, YCbCr 감마 조정 함수는 또한 블랙 및 화이트, 세피아 톤, 네거티브 이미지, 솔라리제이션(solarization) 등과 같은 특정한 이미지 필터 효과들을 수행하기 위해 이용될 수 있다.
다음으로, 크로마 데이메이션 로직(1186)에 의해 감마 조정 로직(1185)의 출력에 크로마 데시메이션이 적용될 수 있다. 하나의 실시예에서, 크로마 데시메이션 로직(1186)은 YCbCr 데이터를 4:4:4 포맷으로부터 4:2:2으로 변환하기 위해 수평 데시메이션을 수행하도록 구성될 수 있고, 여기서 크로마(Cr 및 Cr) 정보는 루마 데이터의 절반 레이트로 서브샘플링된다. 단지 예로서, 데시메이션은, 아래에 제시된 바와 같이, 7개의 수평 픽셀들의 세트에, 하프 밴드 리사이즈 필터(half-band lanczos filter)와 같은, 7-탭 로우 패스 필터를 적용하는 것에 의해 수행될 수 있다:
Figure pat00165
여기서 in(i)는 입력 픽셀(Cb 또는 Cr)을 나타내고, C0-C6는 7-탭 필터의 필터링 계수들을 나타낸다. 각각의 입력 픽셀은 크로마 필터링된 샘플들에 대한 적응성 있는 위상 오프셋을 허용하는 독립된 필터 계수(C0-C6)를 갖는다.
또한, 크로마 데시메이션은, 몇몇 경우에, 필터링 없이 수행될 수도 있다. 이것은 소스 이미지가 최초에 4:2:2 포맷으로 수신되었으나, YCbCr 처리를 위해 4:4:4 포맷으로 업샘플링된 경우에 유용할 수 있다. 이 경우에, 결과의 코오된 4:2:2 이미지는 최초의 이미지와 동일하다.
그 후, 크로마 데시메이션 로직(1186)으로부터 출력된 YCbCr 데이터는 YCbCr 처리 블록(904)으로부터 출력되기 전에 스케일링 로직(1187)을 이용하여 스케일링될 수 있다. 스케일링 로직(1187)의 기능은, 도 59에 관하여 위에 설명한 바와 같이, 프론트-엔드 픽셀 프로세싱 유닛(150)의 비닝 보상 필터(652) 내의 스케일링 로직(709, 710)의 기능과 유사할 수 있다. 예를 들면, 스케일링 로직(1187)은 2개의 단계로서 수평 및 수직 스케일링을 수행할 수 있다. 하나의 실시예에서, 수직 스케일링을 위해 5-탭 다위상 필터가 이용될 수 있고, 수평 스케일링을 위해 9-탭 다위상 필터가 이용될 수 있다. 멀티-탭 다위상 필터들은 소스 이미지로부터 선택된 픽셀들을 가중 계수(예를 들면, 필터 계수)와 곱하고, 그 후 그 출력들을 합계하여 목적지 픽셀을 형성할 수 있다. 선택된 픽셀들은 현재의 픽셀 위치 및 필터 탭들의 수에 따라서 선택될 수 있다. 예를 들면, 수직 5-탭 필터를 이용할 경우, 현재의 픽셀의 각각의 수직 측의 2개의 이웃 픽셀들이 선택될 수 있고, 수평 9-탭 필터를 이용할 경우, 현재의 픽셀의 각각의 수평 측의 4개의 이웃 픽셀들이 선택될 수 있다. 필터링 계수들은 룩업 테이블로부터 제공될 수 있고, 현재의 픽셀 사이 분수 위치(between-pixel franctional position)에 의해 결정될 수 있다. 스케일링 로직(1187)의 출력(926)은 그 후 YCbCr 프로세싱 로직(904)으로부터 출력된다.
도 98을 다시 참조하면, 처리된 출력 신호(926)는 메모리(108)에 전송될 수 있고, 또는, 도 7에서 도시된 이미지 처리 회로(32)의 실시예에 따라, 사용자가 보기 위해 디스플레이 하드웨어(예를 들면, 디스플레이(28)에 이미지 신호(114)로서 ISP 파이프 프로세싱 로직(82)으로부터 출력되거나, 또는 압축 엔진(예를 들면, 인코더(118))에 출력될 수 있다. 몇몇 실시예들에서, 이미지 신호(114)는 그래픽 프로세싱 유닛 및/또는 압축 엔진에 의해 더 처리되고, 압축 해제되어 디스플레이에 제공되기 전에 저장될 수 있다. 게다가, 특히 비디오 이미지 데이터에 관하여, 디스플레이에 출력되는 이미지 데이터의 버퍼링을 제어하기 위해 하나 이상의 프레임 버퍼가 또한 제공될 수 있다. 더욱이, ISP 백-엔드 프로세싱 로직(120)이 제공되는 실시예에서(예를 들면, 도 8), 이미지 신호(114)는, 다음의 섹션에서 설명되는 바와 같이, 추가적인 후처리 단계들을 위해 다운스트림에 전송될 수 있다.
ISP 백-엔드 프로세싱 로직
위에서는 ISP 프론트-엔드 로직(80) 및 ISP 파이프라인(82)을 상세히 설명하였고, 본 설명은 이제 도 8에서 위에 도시되어 있는, ISP 백-엔드 프로세싱 로직(120)으로 초점을 옮길 것이다. 위에 설명한 바와 같이, ISP 백-엔드 로직(120)은 일반적으로 ISP 파이프라인(82)에 의해 또는 메모리(108)(신호(124))로부터 제공된 처리된 이미지 데이터를 수신하고, 그 이미지 데이터를 디스플레이 장치(28)에 출력하기에 앞서, 추가적인 이미지 후처리 동작들을 수행하도록 기능한다.
ISP 백-엔드 로직(120)의 실시예를 도시하는 블록도가 도 134에 도시되어 있다. 도시된 바와 같이, ISP 백-엔드 프로세싱 로직(120)은 특징 검출 로직(2200), 로컬 색조 맵핑 로직(LTM)(2202), 밝기, 콘트라스트, 및 색 조정 로직(2204), 스케일링 로직(2206), 및 백-엔드 통계 유닛(2208)을 포함할 수 있다. 특징 검출 로직(2200)은 하나의 실시예에서 얼굴 검출 로직을 포함할 수 있고, 여기에 참조 번호 2201로 나타내어진, 이미지 프레임에서 얼굴들/얼굴 특징들의 위치(들)를 식별하도록 구성될 수 있다. 다른 실시예들에서, 특징 검출 로직(2200)은 또한 이미지 프레임 내의 물체들의 코너들과 같은, 다른 유형의 특징들의 위치들을 검출하도록 구성될 수 있다. 예를 들면, 이 데이터는 프레임들 사이의 글로벌 모션의 추정을 결정하기 위하여 연속적인 이미지 프레임들 내의 특징들의 위치를 식별하기 위해 이용될 수 있고, 프레임들 사이의 글로벌 모션의 추정은 그 후 이미지 정합(image registration)과 같은 특정한 이미지 처리 동작들을 수행하기 위해 이용될 수 있다. 하나의 실시예에서, 코너 특징들 등의 식별은 특정한 높은 동적 범위(HDR) 이미징 알고리즘뿐만 아니라, 특정한 파노라마 스티칭 알고리즘(panoramic stitching algorithms)에서와 같이, 다수의 이미지 특징들을 결합하는 알고리즘들을 위해 특히 유용할 수 있다.
단순함을 위하여, 특징 검출 로직(2200)은 아래 설명에서 얼굴 검출 로직으로 명명될 것이다. 그러나, 로직(2200)은 단지 얼굴 검출 로직에 제한되는 것으로 의도되지 않고, 얼굴 특징들 대신에 또는 그에 더하여 다른 유형의 특징들을 검출하도록 구성될 수 있다는 것을 이해해야 한다. 예를 들면, 하나의 실시예에서, 로직(2200)은, 위에 설명한 바와 같이, 코너 특징들을 검출할 수 있고, 얼굴 검출 로직(2200)의 출력(2201)은 코너 특징들을 포함할 수 있다.
얼굴 검출 로직(2200)은 ISP 파이프라인(82)에 의해 제공된 YCC 이미지 데이터(114)를 수신하도록 구성될 수 있고 또는 스케일링 로직(2206)으로부터 (신호(2207)로 표현된) 축소된 해상도 이미지를 수신할 수 있고, 선택된 이미지 데이터에 대응하는 이미지 프레임 내의 얼굴들 및/또는 얼굴 특징들의 위치 및 위치들을 검출하도록 구성될 수 있다. 도 134에서 도시된 바와 같이, 얼굴 검출 로직(2200)에의 입력은 ISP 파이프라인(82)으로부터의 YCC 이미지 데이터(114) 및 스케일링 로직(2206)으로부터의 축소된 해상도 이미지(2207)를 수신하는 선택 회로(2196)를 포함할 수 있다. ISP 제어 로직(84)(예를 들면, 펌웨어를 실행하는 프로세서)에 의해 제공될 수 있는 제어 신호는 어느 입력이 얼굴 검출 로직(2200)에 제공되는지를 결정할 수 있다.
여기에 신호(2201)로 표현된, 얼굴들/얼굴 특징들의 검출된 위치는 하나 이상의 업스트림 프로세싱 유닛들뿐만 아니라, 하나 이상의 다운스트림 유닛들에 피드백 데이터로서 제공될 수 있다. 예로서, 데이터(2201)는 현재의 이미지 프레임에서 얼굴들 또는 얼굴 특징들이 나타나는 위치들을 나타낼 수 있다. 몇몇 실시예들에서, 데이터(2201)는 얼굴 검출을 위한 추가적인 정보를 제공할 수 있는 축소된 해상도 변환 이미지를 포함할 수 있다. 또한, 얼굴 검출 로직(2200)은, 몇몇 실시예들에서, 비올라-존스(Viola-Jones) 얼굴/물체 검출 알고리즘과 같은 얼굴 검출 알고리즘을 이용할 수 있고, 또는 이미지 내의 얼굴 특징들의 검출을 위해 적당한 임의의 다른 알고리즘, 변환, 또는 패턴 검출/매칭 기법들을 이용할 수 있다.
도시된 실시예에서, 얼굴 검출 데이터(2201)는, 이미지 처리 회로(32)를 제어하기 위한 펌웨어를 실행하는 프로세서일 수 있는, 제어 로직(84)에 피드백될 수 있다. 제어 로직(84)은, 하나의 실시예에서, (예를 들면, 도 10의 ISP 프론트-엔드(80)의 프론트-엔드 통계 프로세싱 유닛들(142 및 144)을 포함하는) 프론트-엔드 통계 제어 루프에 데이터(2201)를 제공할 수 있고, 통계 프로세싱 유닛들(142 및 144)은 피드백 데이터(2201)를 이용하여 적당한 윈도(들)를 위치시키고 및/또는 자동 화이트 밸런스, 자동 노출, 및 자동 포커스 처리를 위한 특정한 타일들을 선택할 수 있다. 이해될 바와 같이, 얼굴 특징들을 포함하는 이미지의 영역들에 대한 색 및/또는 색상 정확도를 개선하는 것은 보는 사람에게 미적으로 더 만족스럽게 보이는 이미지를 생성할 수 있다. 아래에 더 설명되는 바와 같이, 데이터(2201)는 또한 LTM 로직(2202), 백-엔드 통계 유닛(2208)뿐만 아니라, 인코더/디코더 블록(118)에도 제공될 수 있다.
LTM 로직(2202)은 또한 ISP 파이프라인(82)으로부터 YCC 이미지 데이터(114)를 수신할 수 있다. 위에 설명한 바와 같이, LTM 로직(2202)은 이미지 데이터(114)에 색조 맵핑을 적용하도록 구성될 수 있다. 이해될 바와 같이, 색조 맵핑 기법들은 픽셀 값들의 한 세트를 다른 세트에 맵핑하기 위해 이미지 처리 애플리케이션들에서 이용될 수 있다. 입력 및 출력 이미지들이 동일한 비트 정밀도를 갖는 경우에는, 색조 맵핑이 필요하지 않을 수 있지만, 몇몇 실시예들은 출력 이미지에서 콘트라스트 특성을 개선하기 위하여(예를 들면, 밝은 영역들이 더 어둡게 보이고 어두운 영역들이 더 밝게 보이게 하기 위하여) 압축 없이 색조 맵핑을 적용할 수 있다. 그러나, 입력 및 출력 이미지들이 상이한 비트 정밀도를 갖는 경우, 입력 이미지 값을 입력 이미지의 출력 범위의 대응하는 값들에 맵핑하기 위해 색조 맵핑이 적용될 수 있다. 예를 들면, 장면들은 25,000:1 또는 그 이상의 동적 범위를 가질 수 있는 반면, 압축 표준들은 디스플레이를 위해 훨씬 더 낮은 범위(예를 들면, 256:1), 및 때때로 인쇄를 위해 한층 더 낮은 범위(예를 들면, 100:1)를 허용할 수 있다.
따라서, 단지 예로서, 색조 맵핑은 10 비트 또는 그 이상의 정밀도에 따라서 표현된 이미지 데이터가 8 비트 JPEG 이미지와 같은 더 낮은 정밀도 포맷으로 출력되기로 되어 있는 경우와 같은 상황에서 유용할 수 있다. 게다가, 색조 맵핑은 높은 동적 범위(HDR) 이미지들에 적용되는 경우에 특히 유용할 수 있다. 디지털 이미지 처리에서, HDR 이미지들은 상이한 노출 레벨들에서 장면의 다수의 이미지들을 획득하는 것 및 단일 노출을 이용하여 달성될 수 있는 것보다 더 높은 동적 범위를 갖는 이미지를 생성하기 위해 이미지들을 조합 또는 합성하는 것에 의해 생성될 수 있다. 또한, 몇몇 이미징 시스템들에서, 이미지 센서(예를 들면, 센서(90a, 90b))는 합성 HDR 이미지를 생성하기 위해 다수의 이미지들을 조합하는 필요 없이 HDR 이미지들을 획득하도록 구성될 수 있다.
도시된 실시예의 LTM 로직(2202)은 이미지 프레임 내의 로컬 특징들에 기초하여 결정될 수 있는, 로컬 색조 맵핑 연산자들(예를 들면, 공간적으로 변화하는)을 이용할 수 있다. 예를 들면, 로컬 색조 맵핑 연산자들은 영역 기반(region-based)일 수 있고, 이미지 프레임의 특정 영역 내의 콘텐츠에 기초하여 국부적으로 변화할 수 있다. 단지 예로서, 로컬 색조 맵핑 연산자들은 그레디언트 도메인 HDR 압축, 사진 색조 재현(photographic tone reproduction), 또는 레티넥스(Retinex?) 이미지 처리에 기초할 수 있다.
이해될 수 있는 바와 같이, 로컬 색조 맵핑 기법들은, 이미지들에 적용될 때, 일반적으로 개선된 콘트라스트 특성을 갖는 출력 이미지들을 생성할 수 있고 글로벌 색조 맵핑을 이용하여 처리된 이미지들에 관하여 보는 사람에게 미적으로 더 만족스럽게 보일 수 있다. 도 135 및 136은 글로벌 색조 맵핑과 연관된 단점들 중 일부를 도시한다. 예를 들면, 도 135를 참조하면, 그래프(2400)는 입력 범위(2401)를 갖는 입력 이미지의 출력 범위(2403)로의 색조 맵핑을 나타낸다. 입력 이미지에서의 색조의 범위는 곡선(2402)에 의해 표현되고, 여기서 값들(2404)은 이미지의 밝은 영역들을 나타내고 값들(2406)은 이미지의 어두운 영역들을 나타낸다.
예로서, 하나의 실시예에서, 입력 이미지의 범위(2401)는 12 비트 정밀도(0-4095)를 가질 수 있고, 8 비트 정밀도(0-255, 예를 들면, JPEG 이미지)를 갖는 출력 범위(2403)에 맵핑될 수 있다. 도 135는 곡선(2402)이 곡선(2410)에 선형적으로 맵핑되는 선형 색조 맵핑 프로세스를 도시한다. 도시된 바와 같이, 도 135에서 도시된 색조 맵핑 프로세스의 결과는 입력 이미지의 밝은 영역들에 대응하는 범위(2404)가 보다 작은 범위(2412)로 압축되는 것으로 귀착하고, 또한 입력 이미지의 어두운 영역들에 대응하는 범위(2406)가 보다 작은 범위(2414)로 압축되는 것으로 귀착한다. 어두운 영역들(예를 들면, 음영들) 및 밝은 영역들에 대한 색조 범위의 감소는 콘트라스트 특성에 부정적으로 영향을 줄 수 있고, 보는 사람에게 미적으로 만족스럽지 않게 보일 수 있다.
도 136을 참조하면, 도 135에서 도시된 바와 같이, (범위(2412)로 압축된) "밝은" 범위(2404) 및 (범위(2414)로 압축된) "어두운" 범위(2406)의 압축과 연관된 문제들을 다루는 한 방법은 비선형 색조 맵핑 기법을 사용하는 것이다. 예를 들면, 도 136에서, 입력 이미지를 나타내는 색조 곡선(2402)은 비선형 "S" 모양의 곡선(또는 S-곡선)(2422)을 이용하여 맵핑된다. 비선형 맵핑의 결과로서, 입력 범위의 밝은 부분(2404)은 출력 범위의 밝은 범위(2424)에 맵핑되고, 유사하게, 입력 범위의 어두운 부분(2406)은 출력 범위의 어두운 부분(2426)에 맵핑된다. 도시된 바와 같이, 도 136의 출력 이미지의 밝은 및 어두운 부분들(2424 및 2426)은 도 135의 출력 이미지의 밝은 및 어두운 부분들(2412 및 2414)보다 더 크고, 따라서 입력 이미지의 밝은 및 어두운 콘텐츠의 더 많은 것을 보존한다. 그러나, 도 136의 맵핑 기법의 비선형(예를 들면, S-곡선) 양태로 인해, 출력 이미지의 중간 범위 값들(2428)은 더 단조롭게 보일 수 있고, 이것도 보는 사람에게 미적으로 만족스럽지 않을 수 있다.
따라서, 본 명세의 실시예들은 밝기 특성과 같은, 이미지 내의 로컬 특징들에 기초하여 영역들로 분할될 수 있는, 현재의 이미지 프레임의 분리된 섹션들을 처리하기 위해 로컬 색조 맵핑 연산자들을 이용하는 로컬 색조 맵핑 기법들을 구현할 수 있다. 예를 들면, 도 137에서 도시된 바와 같이, ISP 백-엔드 로직(120)에 의해 수신된 이미지 프레임의 일부(2430)는 밝은 영역(2432) 및 어두운 영역(2434)을 포함할 수 있다. 예로서, 밝은 영역(2432)은 하늘 또는 지평선과 같은 이미지의 밝은 영역을 나타낼 수 있는 반면, 어두운 영역은 전경 또는 풍경과 같은 이미지의 비교적 더 어두운 영역을 나타낼 수 있다. 로컬 색조 맵핑은 영역들(2432 및 2434) 각각에 대하여 개별적으로 적용되어 위에 설명한 그로벌 색조 맵핑 기법들에 관하여 입력 이미지의 동적 범위의 더 많은 것을 보존하는 출력 이미지를 생성하고, 따라서 로컬 콘트라스트를 개선하고, 보는 사람에게 미적으로 더 만족스럽게 보이는 출력 이미지를 제공할 수 있다.
로컬 색조 맵핑이 본 실시예에서 어떻게 구현될 수 있는지의 예가 도 138 및 139에서 예로서 도시되어 있다. 특히, 도 138은 몇몇 경우에 제한된 출력 범위로 귀착할 수 있는 종래의 로컬 색조 맵핑 기법을 도시하고, 도 139는 입력 범위의 일부가 이미지 프레임에 의해 이용되지 않더라도, 최대 출력 범위를 이용할 수 있는 LTM 로직(2202)에 의해 구현될 수 있는 적응 로컬 색조 맵핑 프로세스를 도시한다.
먼저 도 138을 참조하면, 그래프(2440)는 보다 낮은 비트 정밀도 출력 이미지를 생성하기 위해 보다 높은 비트 정밀도 입력 이미지에 로컬 색조 맵핑을 적용한 것을 나타낸다. 예를 들면, 도시된 예에서, 보다 높은 비트 정밀도 입력 이미지 데이터는 여기서 범위(2444)에 의해 나타내어진, (256 출력 값들(예를 들면, 0-255)을 갖는) 8 비트 출력을 생성하기 위해 색조 맵핑되는, 범위(2442)에 의해 나타내어진, (4096 입력 값들(예를 들면, 값들 0-4095)을 갖는) 12 비트 이미지 데이터일 수 있다. 비트 깊이들은 단순히 예를 제공하기 위해 의도된 것이고, 결코 제한적인 것으로 해석되어서는 안 된다는 것을 이해해야 한다. 예를 들면, 다른 실시예들에서, 입력 이미지는 8 비트, 10 비트, 14 비트, 또는 16 비트 등일 수 있고, 출력 이미지는 8 비트 정밀도보다 크거나 작은 비트 깊이를 가질 수 있다.
여기서, 로컬 맵핑이 적용되는 이미지의 영역은 값들 0-1023에 의해 나타내어지는 범위(2448)와 같은, 최대 입력 동적 범위의 일부만을 이용한다고 가정할 수 있다. 예를 들면, 이러한 입력 값들은 도 137에서 도시된 어두운 영역(2434)의 값들에 대응할 수 있다. 도 138은 4096(12 비트) 입력 값들의 256(8 비트) 출력 값들로의 선형 맵핑을 도시한다. 따라서, 0-4095의 범위의 값들은 출력 동적 범위(2444)의 값들 0-255에 맵핑되는 반면, 최대 입력 범위(2442)의 미사용된 부분(2450)(값들 1024-4095)은 출력 범위(2444)의 부분(2454)(값들 64-255)에 맵핑되고, 그에 의해 입력 범위의 사용된 부분(2448)(값들 0-1023)을 나타내기 위해 이용 가능한 출력 값들 0-63(출력 범위(2444)의 부분(2452))만을 남긴다. 즉, 이 선형 로컬 색조 맵핑 기법은 미사용된 값들 또는 값들의 범위들이 맵핑되는지를 고려하지 않는다. 이로 인해 출력 값들(예를 들면, 2444)의 일부(예를 들면, 2454)가 현재 로컬 색조 맵핑 연산(예를 들면, 그래프(2440))이 적용되고 있는 이미지 프레임의 영역(예를 들면, 2434)에 실제로 존재하지 않는 입력 값들을 나타내기 위해 할당되고, 그에 의해 처리되고 있는 현재 영역에 존재하는 입력 값들(예를 들면, 범위(2448))을 표현하기 위해 사용될 수 있는 이용 가능한 출력 값들(예를 들면, 2452)이 감소된다.
전술한 것을 염두에 두고, 도 139는 본 명세의 실시예들에 따라 구현될 수 있는 로컬 색조 맵핑을 도시한다. 여기서, 입력 범위(2442)(예를 들면, 12 비트)의 출력 범위(2444)(예를 들면, 8 비트)로의 맵핑을 수행하기에 앞서, LTM 로직(2202)은 먼저 입력 범위(2442)의 사용된 범위를 결정하도록 구성될 수 있다. 예를 들면, 영역이 일반적으로 어두운 영역이라고 가정하여, 그 영역 내의 색에 대응하는 입력 값들은 최대 범위(2442)의, 2448(예를 들면, 값들 0-1023)과 같은, 서브 범위(sub-range)만을 이용할 수 있다. 즉, 서브 범위(2448)는 처리되고 있는 이미지 프레임의 특정 영역에 존재하는 실제 동적 범위를 나타낸다. 따라서, 값들 1024-4095(미사용된 서브 범위(2450))은 이 영역에서 사용되고 있지 않으므로, 사용된 범위(2448)는 먼저 맵핑되고, 확장 프로세스(2472)에 의해 도시된 바와 같이, 최대 범위(2442)를 이용하도록 확장될 수 있다. 즉, 값들 1024-4095는 처리되고 있는 현재의 영역 내에서 사용되고 있지 않기 때문에, 그것들은 사용된 부분(예를 들면, 0-1023)을 표현하기 위해 이용될 수 있다. 그 결과, 입력 범위의 사용된 부분(2448)은 추가적인 값들, 여기서 대략 3배 더 많은 추가적인 입력 값들을 이용하여 표현될 수 있다.
다음으로, 프로세스(2474)에 의해 도시된 바와 같이, (값들 0-4095로 확장된) 확장된 사용된 입력 범위는 그 후 출력 값들 0-255(출력 범위(2444))에 맵핑될 수 있다. 따라서, 도 139에서 도시된 바와 같이, 최대 입력 범위(0-4095)를 이용하기 위해 입력 값들의 사용된 범위(2448)를 먼저 확장한 결과로서, 입력 값들의 사용된 범위(2448)는, 도 138에서 도시된 바와 같이, 출력 범위의 일부만이 아니라, 최대 출력 범위(2444)(값들 0-255)를 이용하여 표현될 수 있다.
계속하기 전에, 비록 로컬 색조 맵핑 블록으로 명명되지만, LTM 로직(2202)은 또한 몇몇 경우에 글로벌 색조 맵핑을 구현하도록 구성될 수 있다는 것에 주목해야 한다. 예를 들면, 이미지 프레임이 일반적으로 균일한 특성을 갖는 이미지 장면(예를 들면, 하늘의 장면)을 포함한다면, 색조 맵핑이 적용되는 영역은 전체 프레임을 포함할 수 있다. 즉, 동일한 색조 맵핑 연산자가 프레임의 모든 픽셀들에 적용될 수 있다. 도 134를 참조하면, LTM 로직(2202)은 또한 얼굴 검출 로직(2200)으로부터 데이터(2201)를 수신할 수 있고, 몇몇 경우에, 이 데이터를 이용하여 색조 맵핑이 적용되는 현재 이미지 프레임 내의 하나 이상의 로컬 영역들을 식별할 수 있다. 따라서, 위에 설명한 로컬 색조 맵핑 기법들 중 하나 이상을 적용한 것으로부터의 최후 결과는 보는 사람에게 미적으로 더 만족스러운 이미지일 수 있다.
LTM 로직(2202)의 출력은 밝기, 콘트라스트, 및 색 조정(BCC) 로직(2204)에 제공될 수 있다. 도시된 실시예에서, BCC 로직(2204)은, 도 132에 도시된 바와 같이, ISP 파이프라인의 YCbCr 프로세싱 로직(904)의 BCC 로직(1184)과 일반적으로 동일하게 구현될 수 있고, 밝기, 콘트라스트, 및/도는 채도 제어를 제공하는 일반적으로 유사한 기능을 제공할 수 있다. 따라서, 중복을 피하기 위해, 본 실시예의 BCC 로직(2204)은 여기에 다시 설명되지 않았지만, 도 132의 이전에 설명된 BCC 로직(1184)과 동일하다고 이해되어야 한다.
다음으로, 스케일링 로직(2206)은 BCC 로직(2204)의 출력을 수신할 수 있고 현재 이미지 프레임을 나타내는 이미지 데이터를 스케일링하도록 구성될 수 있다. 예를 들면, (예를 들면, 픽셀로) 이미지 프레임의 실제 사이즈 또는 해상도가 기대된 또는 소망의 출력 사이즈와 다른 경우, 스케일링 로직(2206)은 소망의 사이즈 또는 해상도의 출력 이미지를 획득하기 위해 디지털 이미지를 적절히 스케일링할 수 있다. 도시된 바와 같이, 스케일링 로직(2206)의 출력(126)은 사용자가 보기 위해 디스플레이 장치(28)에 또는 메모리(108)에 전송될 수 있다. 게다가, 그 출력(126)은 또한 이미지 데이터를 인코딩/디코딩하기 위해 압축/압축 해제 엔진(118)에 제공될 수 있다. 인코딩된 이미지는 압축된 포맷으로 저장될 수 있고 그 후 나중에 디스플레이(28) 장치에 표시되기 전에 압축 해제될 수 있다.
또한, 몇몇 실시예들에서, 스케일링 로직(2206)은 다수의 해상도를 이용하여 이미지 데이터를 스케일링할 수 있다. 예로서, 소망의 출력 이미지 해상도가 720p(1280x720 픽셀)인 경우, 스케일링 로직은 720p 출력 이미지를 제공하기 위해 적절히 이미지 프레임을 스케일링할 수 있고, 또한 미리 보기(preview) 또는 섬네일 이미지로서 기능할 수 있는 보다 낮은 해상도 이미지를 제공할 수도 있다. 예를 들면, 애플사로부터 모두 입수할 수 있는, 아이폰(iPhone?)의 모델들에서 이용 가능한 "Photos" 애플리케이션 또는 아이폰(iPhone?), 맥북(MacBook?), 및 아이맥(iMac?) 컴퓨터들의 특정 모델들에서 이용 가능한, 아이포트(iPhoto?) 및 아이무비(iMovie?) 애플리케이션들과 같은, 장치에서 실행되는 애플리케이션은 사용자들이 전자 장치(10)에 저장된 비디오 또는 정지 이미지들의 미리 보기 버전들의 목록을 보는 것을 허용할 수 있다. 저장된 이미지 또는 비디오를 선택함과 동시에, 전자 장치는 선택된 이미지 또는 비디오를 최대 해상도로 표시 및/또는 재생할 수 있다.
도시된 실시예에서, 스케일링 로직(2206)은 또한 백-엔드 통계 처리를 위해 스케일링 로직(2206)을 이용할 수 있는 백-엔드 통계 블록(2208)에 정보(2203)를 제공할 수 있다. 예를 들면, 하나의 실시예에서, 백-엔드 통계 로직(2208)은 스케일링된 이미지 정보(2203)를 처리하여, 하나의 실시예에서 H.264/JPEG 인코더/디코더일 수 있는, 인코더(118)와 연관된 양자화 파라미터들(예를 들면, 매크로블록마다 양자화 파라미터들)을 변조하기 위한 하나 이상의 파라미터들을 결정할 수 있다. 예를 들면, 하나의 실시예에서, 백-엔드 통계 로직(2208)은 매크로블록들에 의해 이미지를 분석하여 각 매크로블록에 대한 주파수 파라미터 또는 스코어를 결정할 수 있다. 예를 들면, 몇몇 실시예들에서, 백-엔드 통계 로직(2206)은 웨이블릿 압축, 고속 푸리에 변환, 또는 이상 코사인 변환(DCT)과 같은 기법들을 이용하여 각 매크로블록에 대한 주파수 스코어를 결정할 수 있다. 그 주파수 스코어들을 이용하여, 인코더(118)는 양자화 파라미터들을 변조하여, 예를 들면, 이미지 프레임을 구성하는 매크로블록들에 걸쳐서 일반적으로 고른 이미지 품질을 달성할 수 있다. 예를 들면, 만약 특정 매크로블록에 주파수 콘텐츠의 높은 분산이 존재한다면, 그 매크로블록에 더 적극적으로 압축이 적용될 수 있다. 도 134에서 도시된 바와 같이, 스케일링 로직(2206)은 또한 여기서 참조 번호 2207에 의해 표현된, 축소된 해상도 이미지를, 멀티플렉서 또는 어떤 다른 적당한 유형의 선택 로직일 수 있는, 선택 회로(2196)에의 입력으로서 얼굴 검출 로직(2200)에 제공할 수 있다. 따라서, 선택 회로(2196)의 출력(2198)은 ISP 파이프라인(82)으로부터의 YCC 입력(114) 또는 스케일링 로직(2206)으로부터의 다운스케일링된 YCC 이미지(2207) 중 어느 하나일 수 있다.
몇몇 실시예들에서, 백-엔드 통계 데이터 및/또는 인코더(118)는 장면 변화들을 예측 및 검출하도록 구성될 수 있다. 예를 들면, 백-엔드 통계 로직(2208)은 모션 통계를 획득하도록 구성될 수 있다. 인코더(118)는 현재의 프레임의, 특정 메트릭들(예를 들면, 밝기)을 포함할 수 있는, 백-엔드 통계 로직(2208)에 의해 제공된 모션 통계를 이전의 프레임과 비교하는 것에 의해 장면 변화들을 예측하려고 시도할 수 있다. 메트릭의 차이가 특정 임계값보다 큰 경우, 장면 변화가 예측되고, 백-엔드 통계 로직(2208)은 장면 변화를 신호할 수 있다. 몇몇 실시예들에서, 장치(10)에 의해 캡처되어 처리될 수 있는 이미지들의 다양성으로 인해 고정된 임계값이 반드시 이상적인 것은 아닐 수 있으므로, 가중된 예측들이 이용될 수 있다. 게다가, 처리되고 있는 이미지 데이터의 특정한 특성들에 따라서 다수의 임계값들이 이용될 수도 있다.
위에 설명한 바와 같이, 얼굴 검출 데이터(2201)는 또한, 도 134에서 도시된 바와 같이, 백-엔드 통계 로직(2208) 및 인코더(118)에 제공될 수 있다. 여기서, 백-엔드 통계 데이터 및/또는 인코더(118)는 백-엔드 처리 동안에 매크로블록 주파수 정보와 함께 얼굴 검출 데이터(2201)를 이용할 수 있다. 예를 들면, 얼굴 검출 데이터(2201)를 이용하여 결정된, 이미지 프레임 내의 얼굴들의 위치에 대응하는 매크로블록들에 대하여 양자화가 감소될 수 있고, 따라서 디스플레이 장치(28)를 이용하여 표시되는 이미지에 존재하는 인코딩된 얼굴들 및 얼굴 특징들의 시각적 외관 및 전체 품질이 개선된다.
이제 도 140을 참조하면, 하나의 실시예에 따라 LTM 로직(2202)의 보다 상세한 뷰를 도시하는 블록도가 도시되어 있다. 도시된 바와 같이, 먼저 ISP 파이프라인(82)으로부터의 YC1C2 이미지 데이터(114)를 감마 보정된 RGB 선형 색 공간으로 변환한 후에 색조 맵핑이 적용된다. 예를 들면, 도 140에서 도시된 바와 같이, 로직(2208)은 먼저 YC1C2(예를 들면, YCbCr) 데이터를 비선형 sRGB 색 공간으로 변환할 수 있다. 본 실시예에서, LTM 로직(2202)은 상이한 서브샘플링 특성을 갖는 YCC 이미지 데이터를 수신하도록 구성될 수 있다. 예를 들면, 선택 로직(2205)(예를 들면, 멀티플렉서)에의 입력들(114)에 의해 도시된 바와 같이, LTM 로직(2202)은 YCC 4:4:4 풀 데이터, YCC 4:2:2 크로마 서브샘플링된 데이터, 또는 YCC 4:2:0 크로마 서브샘플링된 데이터를 수신하도록 구성될 수 있다. 서브샘플링된 YCC 이미지 데이터 포맷들에 대하여, 업컨버팅 로직(2209)은 로직(2208)에 의한 sRGB 색 공간으로의 변환 전에 서브샘플링된 YCC 이미지 데이터를 YCC 4:4:4 포맷으로 변환하기 위해 적용될 수 있다.
여기서 참조 번호 2210에 의해 표현된, 변환된 sRGB 이미지 데이터는 그 후, 로직(2212)에 의해, 감마 보정된 색 공간인, RGBlinear 색 공간으로 변환될 수 있다. 그 후, 변환된 RGBlinear 이미지 데이터(2214)는, 유사한 밝기를 공유하는 이미지 프레임 내의 영역들(예를 들면, 도 137의 2432 및 2434)을 식별하고 그 영역들에 색조 맵핑을 적용하도록 구성될 수 있는, LTM 로직(2216)에 제공된다. 본 실시예에서 도시된 바와 같이, LTM 로직(2216)은 또한 얼굴들 및/또는 얼굴 특징들이 존재하는 현재의 이미지 프레임 내의 위치 및 위치들을 나타낼 수 있는 얼굴 검출 로직(2200)(도 134)으로부터의 파라미터들(2201)을 수신할 수 있다.
RGBlinear 데이터(2214)에 로컬 색조 맵핑이 적용된 후에, 처리된 이미지 데이터(2220)는 그 후, 먼저 로직(2222)을 이용하여 처리된 RGBlinear 이미지 데이터(2220)를 다시 sRGB 색 공간으로 변환하고, 그 후 로직(2226)을 이용하여 sRGB 이미지 데이터(2224)를 다시 YC1C2 색 공간으로 변환하는 것에 의해 YC1C2 색 공간으로 다시 변환된다. 따라서, (색조 맵핑이 적용된) 변환된 YC1C2 데이터(2228)는, 도 134에서 위에 설명한 바와 같이, LTM 로직(2202)으로부터 출력되어 BCC 로직(2204)에 제공될 수 있다. 이해될 바와 같이 ISP 백-엔드 LTM 로직 블록(2202) 내에서 사용되는 다양한 색 공간들로의 이미지 데이터(114)의 변환은, 도 125에서 위에 설명한 바와 같이, ISP 파이프라인(82)의 RGB 프로세싱 로직(902)에서 YC1C2 색 공간으로의 디모자이킹된 RGB 이미지 데이터의 변환과 유사한 기법들을 이용하여 구현될 수 있다. 또한, YCC가 (예를 들면, 로직(2209)을 이용하여) 업컨버팅되는 실시예들에서, YC1C2 데이터는 로직(2226)에 의해 다운컨버팅(서브샘플링)될 수 있다. 게다가, 다른 실시예들에서, 이 서브샘플링/다운컨버전은 또한 로직(2226) 대신에 스케일링 로직(2206)에 의해 수행될 수 있다.
본 실시예는 YCC 색 공간으로부터 sRGB 색 공간으로 변환하고 그 후 sRGBlinear 색 공간으로 변환하는 변환 프로세스를 제시하지만, 다른 실시예들은 상이한 색 공간 변환들을 이용할 수 있고 또는 멱함수(power function)를 이용한 근사 변환(approximated transform)을 적용할 수 있다. 즉, 몇몇 실시예들에서, 대략 선형의 색 공간으로의 변환은 로컬 색조 맵핑을 위해 충분할 수 있다. 따라서, 근사 변환 함수를 이용하여, 그러한 실시예들의 변환 로직은 적어도 부분적으로 단순화될 수 있다(예를 들면, 색 공간 변환 룩업 테이블들에 대한 필요를 제거하는 것에 의해). 다른 실시예에서, 로컬 색조 맵핑은 또한, 랩 색 공간(Lab color space)과 같은, 사람의 눈에 지각적으로 더 나은 색 공간에서 수행될 수도 있다.
도 141 및 142는 개시된 실시예에 따라, ISP 백-엔드 프로세싱 로직(120)을 이용하여 이미지 데이터를 처리하기 위한 방법들을 도시하는 순서도들을 도시한다. 먼저 도 141를 참조하면, ISP 백-엔드 프로세싱 로직(120)에 의한 이미지 데이터의 처리를 일반적으로 설명하는 방법(2230)이 도시되어 있다. 단계(2232)에서 시작하여, 방법(2230)은 ISP 파이프라인(82)으로부터 YCC 이미지 데이터를 수신한다. 예를 들면, 위에 설명한 바와 같이, 수신된 YCC 이미지 데이터는 YCbCr 루마 및 크로마 색 공간에 있을 수 있다. 다음으로, 방법(2232)은 단계들(2234 및 2238) 각각으로 분기할 수 있다. 단계(2234)에서, 수신된 YCC 이미지 데이터는 현재 이미지 프레임 내의 얼굴들 및/또는 얼굴 특징들의 위치들을 검출하기 위해 처리될 수 있다. 예를 들면, 도 134를 참조하여, 이 단계는, 비올라-존스와 같은, 얼굴 검출 알고리즘을 구현하도록 구성될 수 있는, 얼굴 검출 로직(2200)을 이용하여 수행될 수 있다. 그 후, 단계(2236)에서, 얼굴 검출 데이터(예를 들면, 데이터(2201))는, 도 134에서 도시된 바와 같이, LTM 로직 블록(2202), 백-엔드 통계 로직(2208), 및 인코더/디코더 로직(118)으로뿐만 아니라, ISP 프론트-엔드 통계 프로세싱 유닛들(142 또는 144)로의 피드백으로서 ISP 제어 로직(84)에 제공될 수 있다.
단계(2234)와 적어도 부분적으로 동시에 일어날 수 있는, 단계(2238)에서, ISP 파이프라인(82)으로부터 수신된 YCC 이미지 데이터는 색조 맵핑을 적용하기 위해 처리될 수 있다. 그 후, 방법(2230)은 단계(2240)로 계속되고, 그에 의해 YCC 이미지 데이터(예를 들면, 2228)는 (예를 들면, BCC 로직(2204)을 이용하여) 밝기, 콘트라스트, 및 색 조정을 위해 더 처리된다. 그 후, 단계(2242)에서, 이미지 데이터를 하나 또는 그 이상의 소망의 사이즈 또는 해상도로 스케일링하기 위하여 단계(2240)로부터의 이미지 데이터에 스케일링이 적용된다. 게다가, 위에 언급한 바와 같이, 몇몇 실시예들에서, 소망의 샘플링을 갖는 출력 이미지를 생성하기 위해 색 공간 변환 또는 서브샘플링이 수행될 수도 있다(예를 들면, 로컬 색조 맵핑을 위해 YCC 데이터가 업샘플링되는 실시예들에서). 마지막으로, 단계(2244)에서, 스케일링된 YCC 이미지 데이터는 (예를 들면, 디스플레이 장치(28)를 이용하여) 보기 위해 표시될 수 있고 또는 나중에 보기 위해 메모리(108)에 저장될 수 있다.
도 142는 도 141의 색조 맵핑 단계(2238)를 더 상세히 설명한다. 예를 들면, 단계(2238)는 하위 단계(sub-step)(2248)에서 시작될 수 있고, 여기서 단계(2232)에서 수신된 YCC 이미지 데이터가 먼저 sRGB 색 공간으로 변환된다. 위에 설명되고 도 140에 도시된 바와 같이, 몇몇 실시예들은 sRGB 공간으로의 변환 전에 서브샘플링된 YCC 이미지 데이터의 업컨버전을 제공할 수 있다. 그 후, sRGB 이미지 데이터는 단계(2250)에서 감마 보정된 선형 색 공간 RGBlinear로 변환된다. 다음으로, 하위 단계(2252)에서, ISP 백-엔드 LTM 로직 블록(2202)의 색조 맵핑 로직(2216)에 의해 RGBlinear 데이터에 색조 맵핑이 적용된다. 하위 단계(2252)로부터의 색조 맵핑된 이미지 데이터는 그 후, 하위 단계(2254)에서 도시된 바와 같이, RGBlinear 색 공간으로부터 다시 sRGB 색 공간으로 변환될 수 있다. 그 후, 하위 단계(2256)에서, sRGB 이미지 데이터는 다시 YCC 색 공간으로 변환될 수 있고, 방법(2230)의 단계(2238)는, 도 141에서 설명된, 단계(2240)로 계속될 수 있다. 위에 언급한 바와 같이, 도 142에서 도시된 프로세스(2238)는 단지 로컬 색조 맵핑을 위해 적합한 방식으로 색 공간 변환을 적용하기 위한 하나의 프로세스인 것으로 의도되었다. 다른 실시예들에서, 설명된 변환 단계들 대신에 근사 선형 변환들이 적용될 수도 있다.
이해될 바와 같이, 위에 설명된 그리고, 특히, 결함 픽셀 검출 및 보정, 렌즈 음영 보정, 디모자이킹, 및 이미지 샤프닝에 관한 다양한 이미지 처리 기법들은 이 문서에서 단지 예로서 제공된다. 따라서, 본 명세는 위에 제공된 예들에만 제한되는 것으로 해석되어서는 안 된다는 것을 이해해야 한다. 실제로, 여기에 묘사된 대표적인 로직은 다른 실시예들에서 다수의 변형들 및/또는 추가적인 특징들을 겪을 수 있다. 또한, 위에 설명한 기법들은 임의의 적합한 방법으로 구현될 수 있다는 것을 이해해야 한다. 예를 들면, 이미지 처리 회로(32)의 컴포넌트들, 및 특히 ISP 프론트-엔드 블록(80) 및 ISP 파이프 블록(82)은 하드웨어(예를 들면, 적합하게 구성된 회로), 소프트웨어를 이용하여(예를 들면, 하나 이상의 실체적인 컴퓨터 판독 가능 매체에 저장된 실행 가능 코드를 포함하는 컴퓨터 프로그램을 통해), 또는 하드웨어 및 소프트웨어 엘리먼트들 양쪽 모두의 조합을 이용하는 것을 통해 구현될 수 있다.
위에 설명한 특정한 실시예들은 예로서 제시되었으며, 이 실시예들은 다양한 변경들 및 대안적인 형태들의 여지가 있을 수 있다는 것을 이해해야 한다. 청구항들은 개시된 특정한 형태들에 제한되도록 의도된 것이 아니며, 그보다는 이 명세의 진의 및 범위 내에 있는 모든 변경들, 동등물들, 및 대안들을 망라하도록 의도된 것임을 또한 이해해야 한다.

Claims (25)

  1. 전자 장치에서 오디오 및 비디오 데이터를 동기화하는 방법으로서,
    이미지 신호 프로세서를 이용하여 상기 비디오 데이터의 이미지 프레임을 수신하는 단계 - 상기 이미지 프레임은 전자 장치의 디지털 이미지 센서를 이용하여 획득됨 - ;
    상기 이미지 프레임의 시작을 검출하는 단계;
    상기 이미지 프레임의 시작을 검출할 시에, 현재 시간에 대응하는 타임스탬프 값들을 제공하도록 구성된 타임 코드 레지스터로부터 현재 타임스탬프 값을 판독하는 단계;
    상기 타임스탬프 값을 상기 이미지 프레임과 연관된 메타데이터의 세트와 연관시키는 단계; 및
    상기 메타데이터의 세트와 연관된 상기 타임스탬프 값을 이용하여 상기 이미지 프레임의 재생을 상기 전자 장치에서 상기 비디오 데이터와 동시에 획득된 세트 오디오 데이터로부터의 대응하는 오디오 샘플과 동기화하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 타임스탬프 값을 상기 메타데이터의 세트와 연관시키는 단계는 상기 디지털 이미지 센서와 연관된 타임스탬프 레지스터에 상기 타임스탬프 값을 저장하고 상기 타임스탬프 레지스터에 저장된 상기 타임스탬프 값을 상기 메타데이터의 세트에 기입하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 타임 코드 레지스터에 의해 제공된 상기 타임스탬프 값들은 상기 이미지 신호 프로세서의 클록 도메인에 기초한 클록 사이클들의 특정한 수에 의해 정의된 간격으로 증가되는 방법.
  4. 제3항에 있어서,
    상기 클록 사이클들의 특정한 수는 시간 설정 값 n에 적어도 부분적으로 기초하여 결정되는 방법.
  5. 제1항에 있어서,
    상기 클록 사이클들의 특정한 수는 2^n인 것으로 결정되는 방법.
  6. 제4항에 있어서,
    상기 이미지 프레임의 시작을 검출하는 단계는 수직 동기화 신호에서 상승 에지(rising edge)를 검출하는 단계를 포함하는 방법.
  7. 제6항에 있어서,
    상기 타임스탬프 값을 상기 메타데이터의 세트에 연관시키기 전에 상기 타임스탬프 값에, 프로그램된 지연이 추가되는 방법.
  8. 시스템으로서,
    디지털 이미지 센서를 이용하여 획득된 복수의 이미지 프레임들을 수신하도록 구성된 인터페이스를 포함하는 이미지 신호 프로세서 - 상기 복수의 이미지 프레임들은 비디오 데이터의 세트에 대응함 -;
    상기 디지털 이미지 센서에 의해 획득된 이미지 데이터와 동시에 오디오 데이터를 수신하도록 구성된 입력 장치를 포함하는 오디오 서브시스템; 및
    상기 복수의 이미지 프레임들 각각에 대하여, 상기 이미지 프레임의 시작을 식별하고, 상기 이미지 프레임의 시작에 대응하는 타임스탬프 값을 결정하고, 상기 타임스탬프 값을 상기 이미지 프레임과 연관된 메타데이터에 기입하도록 구성된 오디오-비디오 동기화 로직
    을 포함하고;
    상기 오디오-비디오 동기화 로직은, 상기 복수의 이미지 프레임들 각각과 연관된 상기 메타데이터에 저장된 상기 타임스탬프 값들을 상기 오디오 데이터와 연관된 대응하는 타임스탬프들에 상관시키는 것에 의해 상기 복수의 이미지 프레임들을 상기 오디오 데이터와 동기화하도록 구성되는, 시스템.
  9. 제8항에 있어서,
    상기 오디오-비디오 동기화 로직은 현재 타임스탬프 값들을 제공하도록 구성된 타임 코드 레지스터를 포함하고, 상기 타임 코드 레지스터에 의해 제공된 상기 타임스탬프 값들은 일정한 간격으로 증가되는, 시스템.
  10. 제9항에 있어서,
    상기 이미지 신호 프로세서 및 상기 오디오 서브시스템은 각기 독립적인 제1 클록 및 제2 클록에 기초하여 동작하는, 시스템.
  11. 제10항에 있어서,
    상기 오디오-비디오 동기화 로직은 시간 설정 코드를 저장하도록 구성된 타이머 설정 레지스터를 포함하고, 상기 일정한 간격은 상기 시간 설정 코드의 함수로서 결정된 상기 제1 클록의 클록 사이클들의 수에 대응하는, 시스템.
  12. 제11항에 있어서,
    상기 시간 설정 코드는 0 내지 15의 범위를 갖는 4 비트 이진수 값을 포함하고, 상기 클록 사이클들의 수는 2를 상기 4 비트 시간 구성 코드에 의해 표현된 상기 값만큼 거듭 제곱한 수(2 raised to the power of the value expressed by the 4-bit time configuration code)로서 결정되는, 시스템.
  13. 제10항에 있어서,
    상기 오디오-비디오 동기화 로직은 상기 제1 클록을 상기 시스템의 메인 프로세서의 제3 클록과 동기화하고, 상기 제2 클록을 상기 시스템의 상기 메인 프로세서의 상기 제3 클록과 동기화하고, 상기 제1 클록 및 상기 제2 클록의 상기 제3 클록과의 동기화에 기초하여 상기 제1 클록과 상기 제2 클록 사이의 시간 차이를 결정하고, 상기 복수의 이미지 프레임들 각각의 상기 메타데이터에 저장된 상기 타임스탬프 값들을 상기 시간 차이를 이용하여 상기 오디오 데이터와 연관된 대응하는 타임스탬프들에 상관시키도록 구성되는, 시스템.
  14. 제9항에 있어서,
    상기 오디오-비디오 동기화 로직은 상기 복수의 이미지 프레임들을, 상기 이미지 프레임들에 대응하는 상기 타임스탬프들이 상기 오디오 데이터에 대응하는 타임스탬프들과 정렬될 때까지 이미지 프레임들을 추가하거나 드롭(drop)시킴으로써, 상기 오디오 데이터와 동기화하도록 구성되는, 시스템.
  15. 전자 장치에서 오디오 및 비디오 데이터를 동기화하기 위한 방법으로서,
    디지털 이미지 센서를 이용하여 상기 전자 장치의 이미지 처리 시스템에 의해 획득된 비디오 데이터의 세트로부터의 이미지 프레임의 시작을 검출하는 단계;
    상기 이미지 프레임의 시작에 대응하는 타임스탬프 값을 상기 이미지 프레임과 연관된 메타데이터와 연관시키는 단계; 및
    상기 타임스탬프 값을 이용하여 상기 이미지 프레임을 상기 전자 장치에 의해 획득된 오디오 데이터의 세트로부터의 대응하는 오디오 샘플과 정렬시키는 단계
    를 포함하는 방법.
  16. 제15항에 있어서,
    상기 타임스탬프 값을 상기 이미지 프레임과 연관된 상기 메타데이터와 연관시키는 단계는,
    주기적으로 증가되는 현재 시간 값을 제공하도록 구성된 제1 레지스터로부터 상기 타임스탬프 값을 판독하는 단계;
    상기 디지털 이미지 센서와 연관된 제2 레지스터에 상기 타임스탬프 값을 기입하는 단계; 및
    상기 이미지 프레임과 연관된 상기 메타데이터의 일부로서 상기 제2 레지스터로부터의 상기 타임스탬프 값을 저장하는 단계를 포함하는 방법.
  17. 제16항에 있어서,
    시간 설정 레지스터로부터 타이머 설정 값 n을 판독하는 단계;
    2^n과 같은 값을 결정하는 단계; 및
    상기 이미지 처리 시스템의 클록의 2^n 클록 사이클마다 상기 제1 레지스터의 현재 시간 값을 증가시키는 단계를 포함하는 방법.
  18. 제16항에 있어서,
    상기 제1 레지스터의 현재 시간 값이 상기 제1 레지스터의 최대 비트 해상도를 초과하는 때를 검출하는 단계;
    상기 제1 레지스터의 현재 시간 값이 상기 제1 레지스터의 최대 비트 해상도를 초과하면, 상기 제1 레지스터의 비트 해상도보다 높은 비트 해상도를 갖는 더 높은 해상도 현재 시간 값을 결정하는 단계; 및
    상기 제1 레지스터가 리셋될 때까지 상기 이미지 프레임과 연관된 상기 메타데이터에 상기 더 높은 해상도 현재 시간 값을 기입하는 단계를 포함하는 방법.
  19. 전자 장치로서,
    제1 이미지 센서;
    제1 이미지 센서 인터페이스;
    상기 제1 센서 인터페이스를 통해 상기 제1 이미지 센서를 이용하여 획득된 비디오 데이터의 제1 세트를 수신하도록 구성된 이미지 신호 처리 서브시스템;
    상기 비디오 데이터의 제1 세트와 동시에 획득된 오디오 데이터의 제1 세트를 수신하도록 구성된 오디오 처리 서브시스템; 및
    오디오-비디오 동기화 회로
    를 포함하고, 상기 오디오-비디오 동기화 회로는,
    현재 시간 값을 제공하도록 구성된 타임 코드 레지스터;
    상기 제1 이미지 센서와 연관된 제1 타임스탬프 레지스터; 및
    상기 비디오 데이터의 제1 세트의 각각의 이미지 프레임에 대하여, 상기 비디오 데이터의 제1 세트의 이미지 프레임의 시작을 검출하고, 상기 이미지 프레임의 시작을 검출할 시에 상기 타임 코드 레지스터를 샘플링하여 상기 이미지 프레임의 시작에 대응하는 타임스탬프 값을 획득하고, 상기 타임스탬프 값을 상기 제1 타임스탬프 레지스터에 저장하고, 상기 제1 타임스탬프 레지스터로부터의 상기 타임스탬프 값을 상기 이미지 프레임과 연관된 메타데이터의 세트에 기입하고, 상기 비디오 데이터의 제1 세트의 각각의 이미지 프레임의 상기 메타데이터 내의 상기 타임스탬프 값들을 상기 오디오 데이터의 제1 세트와 연관된 대응하는 타임스탬프들에 상관시키는 것에 의해 상기 비디오 데이터의 제1 세트와 상기 오디오 데이터의 제1 세트를 동기화하는 로직
    을 포함하는 전자 장치.
  20. 제19항에 있어서,
    제2 이미지 센서;
    제2 이미지 센서 인터페이스를 포함하고,
    상기 이미지 신호 처리 서브시스템은 상기 제2 센서 인터페이스를 통해 상기 제2 이미지 센서를 이용하여 획득된 비디오 데이터를 수신하도록 구성되고, 상기 오디오 처리 서브시스템은 상기 비디오 데이터의 제2 세트와 동시에 획득된 오디오 데이터의 제2 세트를 수신하도록 구성되고,
    상기 오디오-비디오 동기화 회로는,
    상기 제2 이미지 센서와 연관된 제2 타임스탬프 레지스터; 및
    상기 비디오 데이터의 제2 세트의 각각의 이미지 프레임에 대하여, 상기 비디오 데이터의 제2 세트의 이미지 프레임의 시작을 검출하고, 상기 이미지 프레임의 시작을 검출할 시에 상기 타임 코드 레지스터를 샘플링하여 상기 이미지 프레임의 시작에 대응하는 타임스탬프 값을 획득하고, 상기 타임스탬프 값을 상기 제2 타임스탬프 레지스터에 저장하고, 상기 제2 타임스탬프 레지스터로부터의 상기 타임스탬프 값을 상기 이미지 프레임과 연관된 메타데이터의 세트에 기입하고, 상기 비디오 데이터의 제2 세트의 각각의 이미지 프레임의 상기 메타데이터 내의 상기 타임스탬프 값들을 상기 오디오 데이터의 제2 세트와 연관된 타임스탬프들에 상관시키는 것에 의해 상기 비디오 데이터의 제2 세트와 상기 오디오 데이터의 제2 세트를 동기화하는 로직
    을 포함하는 전자 장치.
  21. 제20항에 있어서,
    상기 비디오 데이터의 제1 세트 및 제2 세트를 표시하도록 구성된 디스플레이 장치를 포함하고, 상기 디스플레이 장치는 LCD 디스플레이 장치, 플라즈마 디스플레이 장치, LED 디스플레이 장치, 또는 OLED 디스플레이 장치 또는 그것의 어떤 조합 중 적어도 하나를 포함하는 전자 장치.
  22. 제20항에 있어서,
    상기 오디오 데이터의 제1 세트 및 제2 세트를 획득하도록 구성된 오디오 입력 장치 - 상기 오디오 입력 장치는 적어도 하나의 마이크를 포함함 -; 및
    상기 오디오 데이터의 제1 세트 및 제2 세트를 재생하도록 구성된 오디오 출력 장치를 포함하는 전자 장치.
  23. 제20항에 있어서,
    상기 제1 이미지 센서 및 제2 이미지 센서는 상기 전자 장치와 통합된 디지털 카메라, 상기 인터페이스를 통해 상기 전자 장치에 연결된 외부 디지털 카메라, 또는 그것의 어떤 조합 중 적어도 하나를 포함하는 전자 장치.
  24. 제19항에 있어서,
    데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 컴퓨터, 모바일 셀룰러 전화, 휴대용 미디어 플레이어, 또는 그것의 어떤 조합 중 적어도 하나를 포함하는 전자 장치.
  25. 제19항에 있어서,
    만약 상기 비디오 데이터의 제1 세트와 상기 오디오 데이터의 제1 세트가 정렬되어 있지 않다면, 상기 오디오-비디오 동기화 회로는 상기 비디오 데이터의 제1 세트의 타임스탬프들과 상기 오디오 데이터의 제1 세트와 연관된 타임스탬프들을 정렬시키기 위해 이미지 프레임들을 반복하거나 드롭시키도록 구성되는 전자 장치.
KR1020110100179A 2010-09-30 2011-09-30 이미지 신호 처리 시스템에서 오디오 및 비디오 데이터를 동기화하기 위한 기술들 KR101295977B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/895,299 2010-09-30
US12/895,299 US8736700B2 (en) 2010-09-30 2010-09-30 Techniques for synchronizing audio and video data in an image signal processing system

Publications (2)

Publication Number Publication Date
KR20120061032A true KR20120061032A (ko) 2012-06-12
KR101295977B1 KR101295977B1 (ko) 2013-08-14

Family

ID=44675821

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110100179A KR101295977B1 (ko) 2010-09-30 2011-09-30 이미지 신호 처리 시스템에서 오디오 및 비디오 데이터를 동기화하기 위한 기술들

Country Status (5)

Country Link
US (1) US8736700B2 (ko)
KR (1) KR101295977B1 (ko)
CN (1) CN102572443B (ko)
TW (1) TWI484818B (ko)
WO (1) WO2012047426A1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101381343B1 (ko) * 2013-09-14 2014-04-04 주식회사 코어셀 얼굴인식기술을 이용하여 영상처리기기에서 촬영된 영상물로부터 얼굴영역을 검출하여 개인 프라이버시 보호를 위한 마스킹을 제공하는 방법
KR20170050340A (ko) * 2015-10-30 2017-05-11 삼성전자주식회사 디지털 전송을 이용한 데이터 전송회로와 이를 포함하는 이미지 센서
KR20200066624A (ko) * 2017-10-05 2020-06-10 로베르트 보쉬 게엠베하 적어도 하나의 전송 파라미터를 정정하는 장치 및 방법

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070150138A1 (en) * 2005-12-08 2007-06-28 James Plante Memory management in event recording systems
US10878646B2 (en) 2005-12-08 2020-12-29 Smartdrive Systems, Inc. Vehicle event recorder systems
US9201842B2 (en) 2006-03-16 2015-12-01 Smartdrive Systems, Inc. Vehicle event recorder systems and networks having integrated cellular wireless communications systems
US8996240B2 (en) 2006-03-16 2015-03-31 Smartdrive Systems, Inc. Vehicle event recorders with integrated web server
US8649933B2 (en) 2006-11-07 2014-02-11 Smartdrive Systems Inc. Power management systems for automotive video event recorders
US8989959B2 (en) 2006-11-07 2015-03-24 Smartdrive Systems, Inc. Vehicle operator performance history recording, scoring and reporting systems
US8868288B2 (en) 2006-11-09 2014-10-21 Smartdrive Systems, Inc. Vehicle exception event management systems
US8239092B2 (en) 2007-05-08 2012-08-07 Smartdrive Systems Inc. Distributed vehicle event recorder systems having a portable memory data transfer system
US9131256B2 (en) * 2010-09-30 2015-09-08 Verizon Patent And Licensing Inc. Method and apparatus for synchronizing content playback
JP5699621B2 (ja) * 2011-01-19 2015-04-15 株式会社リコー 画像処理装置、画素補間方法およびプログラム
CA2771851C (en) 2011-04-12 2018-07-24 Research In Motion Limited Camera flash for improved color balance
JP5743696B2 (ja) * 2011-05-06 2015-07-01 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
US9225938B2 (en) * 2011-06-16 2015-12-29 Starleaf Ltd Video conferencing systems
US11835639B2 (en) 2011-08-03 2023-12-05 Qualcomm Technologies, Inc. Partially synchronized multilateration or trilateration method and system for positional finding using RF
US20130177286A1 (en) * 2012-01-09 2013-07-11 Mozaik Multimedia, Inc Noninvasive accurate audio synchronization
US9025867B2 (en) 2012-05-31 2015-05-05 Apple Inc. Systems and methods for YCC image processing
US9014504B2 (en) 2012-05-31 2015-04-21 Apple Inc. Systems and methods for highlight recovery in an image signal processor
US9031319B2 (en) 2012-05-31 2015-05-12 Apple Inc. Systems and methods for luma sharpening
US8872946B2 (en) 2012-05-31 2014-10-28 Apple Inc. Systems and methods for raw image processing
US9332239B2 (en) 2012-05-31 2016-05-03 Apple Inc. Systems and methods for RGB image processing
US9105078B2 (en) 2012-05-31 2015-08-11 Apple Inc. Systems and methods for local tone mapping
US9077943B2 (en) 2012-05-31 2015-07-07 Apple Inc. Local image statistics collection
US8917336B2 (en) 2012-05-31 2014-12-23 Apple Inc. Image signal processing involving geometric distortion correction
US8817120B2 (en) 2012-05-31 2014-08-26 Apple Inc. Systems and methods for collecting fixed pattern noise statistics of image data
US9142012B2 (en) 2012-05-31 2015-09-22 Apple Inc. Systems and methods for chroma noise reduction
US9743057B2 (en) 2012-05-31 2017-08-22 Apple Inc. Systems and methods for lens shading correction
US8953882B2 (en) 2012-05-31 2015-02-10 Apple Inc. Systems and methods for determining noise statistics of image data
US11089247B2 (en) 2012-05-31 2021-08-10 Apple Inc. Systems and method for reducing fixed pattern noise in image data
US20130336379A1 (en) * 2012-06-13 2013-12-19 Divx, Llc System and Methods for Encoding Live Multimedia Content with Synchronized Resampled Audio Data
JP5891975B2 (ja) * 2012-07-02 2016-03-23 富士通株式会社 動画像符号化装置、動画像復号装置、動画像符号化方法および動画像復号方法
US10863313B2 (en) 2014-08-01 2020-12-08 Polte Corporation Network architecture and methods for location services
US10440512B2 (en) 2012-08-03 2019-10-08 Polte Corporation Angle of arrival (AOA) positioning method and system for positional finding and tracking objects using reduced attenuation RF technology
US9728228B2 (en) 2012-08-10 2017-08-08 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
EP3442217B1 (en) * 2012-08-22 2021-07-07 BlackBerry Limited Composition manager camera
EP2704449A1 (en) * 2012-08-30 2014-03-05 Thomson Licensing Rendering time control
US9007383B2 (en) * 2012-12-05 2015-04-14 Vysoká {hacek over (s)}kola bá{hacek over (n)}ská—Technická Univerzita Ostrava Creating presentations by capturing content of a simulated second monitor
DE102012224044B4 (de) * 2012-12-20 2019-04-04 Deutsches Zentrum für Luft- und Raumfahrt e.V. Vorrichtung und Verfahren zum Verarbeiten von mit einem Zeitstempel versehenen Daten
CN103903636B (zh) * 2012-12-28 2017-11-03 联想(北京)有限公司 一种播放方法及装置、电子设备
EP2948949A4 (en) * 2013-01-24 2016-09-21 Telesofia Medical Ltd SYSTEM AND METHOD FOR SOFT VIDEO DESIGN
US9559651B2 (en) * 2013-03-29 2017-01-31 Apple Inc. Metadata for loudness and dynamic range control
TWI496455B (zh) * 2013-04-10 2015-08-11 Wistron Corp 影音同步檢測裝置與方法
CN103297688A (zh) * 2013-04-16 2013-09-11 宁波高新区阶梯科技有限公司 一种多媒体全景录制系统及录制方法
FR3005542A1 (fr) * 2013-05-07 2014-11-14 St Microelectronics Grenoble 2 Systeme d'acquisition d'image multi-capteur
CN103295195B (zh) * 2013-05-16 2017-07-07 深圳市旭东数字医学影像技术有限公司 低对比度图像的脉管增强的方法及其系统
CN103369365A (zh) * 2013-06-28 2013-10-23 东南大学 音视频同步记录装置
CN103414957A (zh) * 2013-07-30 2013-11-27 广东工业大学 一种音视频数据同步的方法和装置
KR102084543B1 (ko) * 2013-09-25 2020-03-04 엘지디스플레이 주식회사 터치 스크린 구동 장치
US9501878B2 (en) 2013-10-16 2016-11-22 Smartdrive Systems, Inc. Vehicle event playback apparatus and methods
US9610955B2 (en) 2013-11-11 2017-04-04 Smartdrive Systems, Inc. Vehicle fuel consumption monitor and feedback systems
WO2015089455A1 (en) * 2013-12-12 2015-06-18 Brain Sentinel, Inc. Data-integrated interface and methods of reviewing electromyography and audio data
US9723180B2 (en) * 2014-01-08 2017-08-01 Vizio Inc Device and method for correcting lip sync problems on display devices
KR102131626B1 (ko) 2014-02-21 2020-07-08 삼성전자주식회사 미디어 데이터 싱크 방법 및 장치
US8892310B1 (en) 2014-02-21 2014-11-18 Smartdrive Systems, Inc. System and method to detect execution of driving maneuvers
US9508386B2 (en) 2014-06-27 2016-11-29 Nokia Technologies Oy Method and apparatus for synchronizing audio and video signals
US9219870B1 (en) 2014-07-31 2015-12-22 Apple Inc. Sensor data rescaler for image signal processing
US9663127B2 (en) 2014-10-28 2017-05-30 Smartdrive Systems, Inc. Rail vehicle event detection and recording system
US11069257B2 (en) 2014-11-13 2021-07-20 Smartdrive Systems, Inc. System and method for detecting a vehicle event and generating review criteria
JP2016111472A (ja) * 2014-12-04 2016-06-20 株式会社リコー 画像形成装置、音声録音方法及び音声録音プログラム
JP6432399B2 (ja) * 2015-03-12 2018-12-05 オムロン株式会社 画像処理装置および画像処理方法
US9679420B2 (en) 2015-04-01 2017-06-13 Smartdrive Systems, Inc. Vehicle event recording system and method
CN106162293B (zh) * 2015-04-22 2019-11-08 无锡天脉聚源传媒科技有限公司 一种视频声音与图像同步的方法及装置
TWI587697B (zh) * 2015-04-29 2017-06-11 瑞昱半導體股份有限公司 多媒體同步系統與方法
CN113949990A (zh) * 2015-10-08 2022-01-18 波尔特公司 用于追踪对象的到达角度定位系统
CN105338220B (zh) * 2015-10-30 2018-11-13 南京理工大学 一种自适应对运动的电子倍增ccd视频图像去噪的方法
CN105577947B (zh) * 2015-12-18 2021-11-16 联想(北京)有限公司 控制方法及电子设备
EP3197169A1 (en) * 2016-01-25 2017-07-26 Thomson Licensing Method for audio detection and corresponding device
CN105657459B (zh) * 2016-03-14 2018-07-10 北京学而思教育科技有限公司 一种音视频数据处理方法和装置
US10231001B2 (en) 2016-05-24 2019-03-12 Divx, Llc Systems and methods for providing audio content during trick-play playback
CA3067011A1 (en) 2016-06-17 2017-12-21 Axon Enterprise, Inc. Systems and methods for aligning event data
KR101681892B1 (ko) * 2016-10-19 2016-12-02 대한민국 타임스탬프를 이용한 이미지 정렬 장치 및 그 방법
CN106792070B (zh) * 2016-12-19 2020-06-23 广东威创视讯科技股份有限公司 一种音视频数据dma传输方法及装置
US10412410B2 (en) * 2017-08-14 2019-09-10 Google Llc Compound motion-compensated prediction
CN107371053B (zh) * 2017-08-31 2020-10-23 北京鹏润鸿途科技股份有限公司 音频视频流对比分析方法及装置
US11019273B2 (en) 2017-09-28 2021-05-25 Apple Inc. Generating static images with an event camera
CN108181003B (zh) * 2017-11-23 2023-11-14 深圳怡化电脑股份有限公司 基于Zynq SOC的红外传感器控制系统及自助终端
US11255945B2 (en) 2018-03-27 2022-02-22 Polte Corporation Multi-path mitigation in tracking objects using compressed RF data
US10742955B2 (en) * 2018-05-21 2020-08-11 Microsoft Technology Licensing, Llc Correlation of video stream frame timestamps based on a system clock
CN109600563B (zh) * 2018-08-01 2020-05-15 北京微播视界科技有限公司 用于确定时间戳的方法和装置
US10582137B1 (en) 2018-09-26 2020-03-03 Zoox, Inc. Multi-sensor data capture synchronizaiton
US11451688B2 (en) * 2018-09-26 2022-09-20 Zoox, Inc. Image scan line timestamping
PT4064706T (pt) * 2019-03-11 2023-07-19 Dolby Laboratories Licensing Corp Sinalização de informações relacionadas com o ângulo de obturador
FR3096796B1 (fr) * 2019-05-28 2021-06-18 St Microelectronics Grenoble 2 Dispositif à plusieurs domaines d'horloge
CN110234029B (zh) * 2019-07-31 2021-12-17 上海商汤临港智能科技有限公司 多传感器数据的播放处理方法、装置、设备和存储介质
CN110567521A (zh) * 2019-09-03 2019-12-13 高新兴科技集团股份有限公司 一体机性能测试方法及装置
US11474977B2 (en) 2019-09-30 2022-10-18 Dropbox, Inc. Snapshot isolation in a distributed storage system
CN110879075B (zh) * 2019-11-08 2021-06-22 杭州电子科技大学 一种高分辨率的增量码道检测方法
CN111538862B (zh) * 2020-05-15 2023-06-20 北京百度网讯科技有限公司 用于解说视频的方法及装置
US11537347B2 (en) 2020-09-14 2022-12-27 Apple Inc. Follower mode video operation
US11647248B2 (en) * 2020-11-02 2023-05-09 Arcus Holding A/S Synchronized playback within a client interface utilising web technologies
CN112995515B (zh) * 2021-03-05 2023-04-07 浙江大华技术股份有限公司 数据处理方法及装置、存储介质、电子装置
US11615727B2 (en) * 2021-04-12 2023-03-28 Apple Inc. Preemptive refresh for reduced display judder
CN112969068B (zh) * 2021-05-19 2021-08-03 四川省商投信息技术有限责任公司 一种监控视频数据存储播放方法及装置
CN115550709B (zh) * 2022-01-07 2023-09-26 荣耀终端有限公司 数据处理方法及电子设备
CN117528163A (zh) * 2022-07-28 2024-02-06 联发科技股份有限公司 在视频设备和无线音频设备之间进行音视频同步的方法及设备

Family Cites Families (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4589089A (en) 1978-05-30 1986-05-13 Bally Manufacturing Corporation Computer-peripheral interface for a game apparatus
US4475172A (en) 1978-05-30 1984-10-02 Bally Manufacturing Corporation Audio/visual home computer and game apparatus
US4799677A (en) 1983-09-02 1989-01-24 Bally Manufacturing Corporation Video game having video disk read only memory
US4979738A (en) 1983-12-06 1990-12-25 Midway Manufacturing Corporation Constant spatial data mass RAM video display system
US4682360A (en) 1983-12-22 1987-07-21 Frederiksen Jeffrey E Video transmission system
US4742543A (en) 1983-12-22 1988-05-03 Frederiksen Jeffrey E Video transmission system
US4694489A (en) 1983-12-22 1987-09-15 Frederiksen Jeffrey E Video transmission system
US4605961A (en) 1983-12-22 1986-08-12 Frederiksen Jeffrey E Video transmission system using time-warp scrambling
US4743959A (en) 1986-09-17 1988-05-10 Frederiksen Jeffrey E High resolution color video image acquisition and compression system
US5227863A (en) 1989-11-14 1993-07-13 Intelligent Resources Integrated Systems, Inc. Programmable digital video processing system
US5272529A (en) 1992-03-20 1993-12-21 Northwest Starscan Limited Partnership Adaptive hierarchical subband vector quantization encoder
US5247355A (en) 1992-06-11 1993-09-21 Northwest Starscan Limited Partnership Gridlocked method and system for video motion compensation
DE69334349D1 (de) 1992-09-01 2011-04-21 Apple Inc Verbesserte Vektorquatisierung
US6122411A (en) 1994-02-16 2000-09-19 Apple Computer, Inc. Method and apparatus for storing high and low resolution images in an imaging device
US5694227A (en) 1994-07-15 1997-12-02 Apple Computer, Inc. Method and apparatus for calibrating and adjusting a color imaging system
US5764291A (en) 1994-09-30 1998-06-09 Apple Computer, Inc. Apparatus and method for orientation-dependent camera exposure and focus setting optimization
US5496106A (en) 1994-12-13 1996-03-05 Apple Computer, Inc. System and method for generating a contrast overlay as a focus assist for an imaging device
US5640613A (en) 1995-04-14 1997-06-17 Apple Computer, Inc. Corrective lens assembly
US6011585A (en) 1996-01-19 2000-01-04 Apple Computer, Inc. Apparatus and method for rotating the display orientation of a captured image
US5867214A (en) 1996-04-11 1999-02-02 Apple Computer, Inc. Apparatus and method for increasing a digital camera image capture rate by delaying image processing
US5809178A (en) 1996-06-11 1998-09-15 Apple Computer, Inc. Elimination of visible quantizing artifacts in a digital image utilizing a critical noise/quantizing factor
US6031964A (en) 1996-06-20 2000-02-29 Apple Computer, Inc. System and method for using a unified memory architecture to implement a digital camera device
US6157394A (en) 1996-08-29 2000-12-05 Apple Computer, Inc. Flexible digital image processing via an image processing chain with modular image processors
US6028611A (en) 1996-08-29 2000-02-22 Apple Computer, Inc. Modular digital image processing via an image processing chain
US5991465A (en) 1996-08-29 1999-11-23 Apple Computer, Inc. Modular digital image processing via an image processing chain with modifiable parameter controls
US5790705A (en) 1996-09-13 1998-08-04 Apple Computer, Inc. Compression techniques for substantially lossless digital image data storage
US6141044A (en) 1996-09-26 2000-10-31 Apple Computer, Inc. Method and system for coherent image group maintenance in memory
US6198514B1 (en) 1998-02-27 2001-03-06 Apple Computer, Inc. Color misconvergence measurement using a common monochrome image
TW526666B (en) * 2000-03-29 2003-04-01 Matsushita Electric Ind Co Ltd Reproducing method for compression coded data and device for the same
US6954193B1 (en) 2000-09-08 2005-10-11 Apple Computer, Inc. Method and apparatus for correcting pixel level intensity variation
US20020089602A1 (en) * 2000-10-18 2002-07-11 Sullivan Gary J. Compressed timing indicators for media samples
US6745012B1 (en) 2000-11-17 2004-06-01 Telefonaktiebolaget Lm Ericsson (Publ) Adaptive data compression in a wireless telecommunications system
US7170938B1 (en) 2001-08-21 2007-01-30 Cisco Systems Canada Co. Rate control method for video transcoding
US6959044B1 (en) 2001-08-21 2005-10-25 Cisco Systems Canada Co. Dynamic GOP system and method for digital video encoding
US7277595B1 (en) 2003-01-06 2007-10-02 Apple Inc. Method and apparatus for digital image manipulation to remove image blemishes
US20040217488A1 (en) * 2003-05-02 2004-11-04 Luechinger Christoph B. Ribbon bonding
US7310371B2 (en) 2003-05-30 2007-12-18 Lsi Corporation Method and/or apparatus for reducing the complexity of H.264 B-frame encoding using selective reconstruction
US7327786B2 (en) 2003-06-02 2008-02-05 Lsi Logic Corporation Method for improving rate-distortion performance of a video compression system through parallel coefficient cancellation in the transform
ATE373389T1 (de) * 2003-07-25 2007-09-15 Koninkl Philips Electronics Nv Verfahren und einrichtung zur erzeugung und erkennung von fingerabdrücken zur synchronisierung von audio und video
US7324595B2 (en) 2003-09-22 2008-01-29 Lsi Logic Corporation Method and/or apparatus for reducing the complexity of non-reference frame encoding using selective reconstruction
US7602849B2 (en) 2003-11-17 2009-10-13 Lsi Corporation Adaptive reference picture selection based on inter-picture motion measurement
US7362804B2 (en) 2003-11-24 2008-04-22 Lsi Logic Corporation Graphical symbols for H.264 bitstream syntax elements
US7345708B2 (en) 2003-12-23 2008-03-18 Lsi Logic Corporation Method and apparatus for video deinterlacing and format conversion
US7362376B2 (en) 2003-12-23 2008-04-22 Lsi Logic Corporation Method and apparatus for video deinterlacing and format conversion
JP3856792B2 (ja) * 2004-01-16 2006-12-13 松下電器産業株式会社 信号処理装置
US7515765B1 (en) 2004-01-30 2009-04-07 Apple Inc. Image sharpness management
US7558221B2 (en) * 2004-02-13 2009-07-07 Seiko Epson Corporation Method and system for recording videoconference data
US7231587B2 (en) 2004-03-29 2007-06-12 Lsi Corporation Embedded picture PSNR/CRC data in compressed video bitstream
WO2005101414A1 (en) * 2004-04-15 2005-10-27 Koninklijke Philips Electronics N.V. Creating a seamless connection of multimedia sections without requiring recoding
KR100870215B1 (ko) * 2004-05-13 2008-11-24 퀄컴 인코포레이티드 무선 통신 시스템을 통해 송신된 멀티미디어 데이터의 헤더압축
JP4517727B2 (ja) * 2004-05-27 2010-08-04 ヤマハ株式会社 オーディオ・ビデオアンプ
US7664057B1 (en) 2004-07-13 2010-02-16 Cisco Technology, Inc. Audio-to-video synchronization system and method for packet-based network video conferencing
US7620103B2 (en) 2004-12-10 2009-11-17 Lsi Corporation Programmable quantization dead zone and threshold for standard-based H.264 and/or VC1 video encoding
US7664872B2 (en) * 2005-01-05 2010-02-16 Divx, Inc. Media transfer protocol
US7612804B1 (en) 2005-02-15 2009-11-03 Apple Inc. Methods and apparatuses for image processing
US7949044B2 (en) 2005-04-12 2011-05-24 Lsi Corporation Method for coefficient bitdepth limitation, encoder and bitstream generation apparatus
US8031766B2 (en) 2005-08-02 2011-10-04 Lsi Corporation Performance adaptive video encoding with concurrent decoding
US7881384B2 (en) 2005-08-05 2011-02-01 Lsi Corporation Method and apparatus for H.264 to MPEG-2 video transcoding
US7903739B2 (en) 2005-08-05 2011-03-08 Lsi Corporation Method and apparatus for VC-1 to MPEG-2 video transcoding
US8045618B2 (en) 2005-08-05 2011-10-25 Lsi Corporation Method and apparatus for MPEG-2 to VC-1 video transcoding
US8208540B2 (en) 2005-08-05 2012-06-26 Lsi Corporation Video bitstream transcoding method and apparatus
US8155194B2 (en) 2005-08-05 2012-04-10 Lsi Corporation Method and apparatus for MPEG-2 to H.264 video transcoding
JP2007060446A (ja) 2005-08-26 2007-03-08 Sony Corp メタデータ生成装置、情報処理装置、撮像装置、テレビ会議システム、セキュリティシステム、メタデータ生成方法及びプログラム
US7596280B2 (en) 2005-09-29 2009-09-29 Apple Inc. Video acquisition with integrated GPU processing
WO2007050259A2 (en) 2005-10-21 2007-05-03 Thomson Licensing Method and apparatus for audio and video synchronization timestamp rollover correction
JPWO2007052395A1 (ja) * 2005-10-31 2009-04-30 シャープ株式会社 視聴環境制御装置、視聴環境制御システム、視聴環境制御方法、データ送信装置及びデータ送信方法
US7893975B2 (en) 2006-10-13 2011-02-22 Apple Inc. System and method for processing images using predetermined tone reproduction curves
US7773127B2 (en) 2006-10-13 2010-08-10 Apple Inc. System and method for RAW image processing
EP2034485A1 (en) * 2007-09-07 2009-03-11 Thomson Licensing System and method for generating linear time code data
US8405727B2 (en) 2008-05-01 2013-03-26 Apple Inc. Apparatus and method for calibrating image capture devices
US8531603B2 (en) * 2010-06-02 2013-09-10 Disney Enterprises, Inc. System and method for in-band A/V timing measurement of serial digital video signals

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101381343B1 (ko) * 2013-09-14 2014-04-04 주식회사 코어셀 얼굴인식기술을 이용하여 영상처리기기에서 촬영된 영상물로부터 얼굴영역을 검출하여 개인 프라이버시 보호를 위한 마스킹을 제공하는 방법
KR20170050340A (ko) * 2015-10-30 2017-05-11 삼성전자주식회사 디지털 전송을 이용한 데이터 전송회로와 이를 포함하는 이미지 센서
KR20200066624A (ko) * 2017-10-05 2020-06-10 로베르트 보쉬 게엠베하 적어도 하나의 전송 파라미터를 정정하는 장치 및 방법

Also Published As

Publication number Publication date
US20120081567A1 (en) 2012-04-05
KR101295977B1 (ko) 2013-08-14
CN102572443B (zh) 2016-09-07
TW201225645A (en) 2012-06-16
CN102572443A (zh) 2012-07-11
WO2012047426A1 (en) 2012-04-12
TWI484818B (zh) 2015-05-11
US8736700B2 (en) 2014-05-27

Similar Documents

Publication Publication Date Title
KR101295977B1 (ko) 이미지 신호 처리 시스템에서 오디오 및 비디오 데이터를 동기화하기 위한 기술들
KR101320804B1 (ko) 백엔드 프로세싱 로직을 가지는 이미지 신호 프로세서를 이용하여 이미지 데이터를 프로세싱하기 위한 시스템 및 방법
KR101376929B1 (ko) 이미지 센서 인터페이스 타이밍 신호를 이용하는 플래시 동기화
KR101320818B1 (ko) 이미지 신호 처리를 위한 오버플로우 제어 기술들
KR101296035B1 (ko) 미가공 이미지 데이터를 프로세싱하기 위한 이미지 신호 프로세서 라인 버퍼 구성
US8508621B2 (en) Image sensor data formats and memory addressing techniques for image signal processing
EP2599318A1 (en) Automatic white balance processing with flexible color space selection
BR112013007146B1 (pt) Método, sistema de processamento de sinal de imagem e dispositivo eletrônico para sincronização de flash com o uso de sinal de temporização de interface de sensor de imagem

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160720

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170719

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 6