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

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

Info

Publication number
KR101295977B1
KR101295977B1 KR20110100179A KR20110100179A KR101295977B1 KR 101295977 B1 KR101295977 B1 KR 101295977B1 KR 20110100179 A KR20110100179 A KR 20110100179A KR 20110100179 A KR20110100179 A KR 20110100179A KR 101295977 B1 KR101295977 B1 KR 101295977B1
Authority
KR
South Korea
Prior art keywords
image
pixel
logic
data
pixels
Prior art date
Application number
KR20110100179A
Other languages
English (en)
Other versions
KR20120061032A (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
Priority to US12/895,299 priority Critical
Priority to US12/895,299 priority patent/US8736700B2/en
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
    • 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 112011076857313-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 112011076857313-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 112011076857313-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 112011076857313-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 112011076857313-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 112011076857313-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 112011076857313-pat00007
이해하듯이, MPU 및 BPPU 설정들은 판독 데이터의 모두가 필요하지는 않은 경우에도 ISP 회로(32)가 하나의 픽셀을 판독하기 위하여 판독될 필요가 있는 픽셀들의 수를 평가할 수 있게 한다. 즉, MPU 및 BPPU 설정들은 ISP 회로(32)가 메모리 바이트와 정렬되고(예로서, 8 비트(1 바이트)의 배수가 픽셀 값을 저장하는 데 사용됨) 정렬되지 않는(예로서, 8 비트(1 바이트)의 배수보다 적거나 많은 비트들, 즉 RAW10, RAW12 등을 이용하여 픽셀 값들이 저장됨) 픽셀 데이터 포맷들을 모두 판독하게 할 수 있다.
도 37을 참조하면, 선형 어드레싱 하에서 메모리에 저장된 이미지 프레임(350)의 위치를 나타내는 일례가 도시되며, 여기서 각각의 블록은 (도 21에서 전술한 바와 같이) 64 바이트를 나타낸다. 일 실시예에서, 다음의 의사 코드는 선형 어드레싱에서 저장된 프레임의 시작 블록 및 블록 폭을 식별하기 위해 제어 로직에 의해 구현될 수 있는 프로세스를 나타낸다:
Figure 112011076857313-pat00008
여기서, 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 112011076857313-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 112011076857313-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)" 모드에서 동작할 수 있다. 프레임들은 디바이스