KR20180053715A - 디더 지향된 lut 출력 값 내삽 - Google Patents

디더 지향된 lut 출력 값 내삽 Download PDF

Info

Publication number
KR20180053715A
KR20180053715A KR1020187010379A KR20187010379A KR20180053715A KR 20180053715 A KR20180053715 A KR 20180053715A KR 1020187010379 A KR1020187010379 A KR 1020187010379A KR 20187010379 A KR20187010379 A KR 20187010379A KR 20180053715 A KR20180053715 A KR 20180053715A
Authority
KR
South Korea
Prior art keywords
lut
value
input
values
input value
Prior art date
Application number
KR1020187010379A
Other languages
English (en)
Inventor
민 다이
이케 이키잔
아이-메이 황
Original Assignee
퀄컴 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 퀄컴 인코포레이티드 filed Critical 퀄컴 인코포레이티드
Publication of KR20180053715A publication Critical patent/KR20180053715A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/90Dynamic range modification of images or parts thereof
    • G06T5/92Dynamic range modification of images or parts thereof based on global image properties
    • G06T5/002
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • G06T3/4007Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
    • G06T5/009
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/56Processing of colour picture signals
    • H04N1/60Colour correction or control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Image Processing (AREA)

Abstract

일 예에서, 이미지 프로세싱을 위한 방법은 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 LUT 에 입력하는 단계를 포함할 수도 있다. LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다. 제 1 픽셀 값은 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응할 수도 있다. 제 1 픽셀은 하나 이상의 픽셀 값들을 포함할 수도 있다. 본 방법은 제 1 LUT 입력 값에 대한 잡음 값을 발생시키는 단계를 포함할 수도 있다. 본 방법은 잡음 값에 기초하여 제 1 LUT 입력 값에 대해 제 1 내삽된 LUT 출력 값을 발생시키는 단계를 포함할 수도 있다. 본 방법은 제 1 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하는 단계를 포함할 수도 있다.

Description

디더 지향된 LUT 출력 값 내삽
본 출원은 2015년 9월 14일에 출원된 미국 가특허출원 번호 제 62/218,333호의 이익을 주장하며, 이는 본원에 전체적으로 참고로 포함된다.
기술 분야
본 개시물은 이미지 및/또는 비디오 프로세싱에 관한 것이다.
이미지 및/또는 비디오 프로세싱은 출력 이미지 및/또는 비디오에서 프로세싱 아티팩트들을 도입할 수도 있다. 그러나, 프로세싱 아티팩트들은, 이들이 프로세싱된 이미지 및/또는 비디오에 부자연스러운 또는 왜곡된 외관을 제공하기 때문에, 바람직하지 않을 수도 있다.
일반적으로, 본 개시물은 이미지 및/또는 비디오 프로세싱을 위한 기법들, 좀더 구체적으로는, 하나 이상의 윤곽선 아티팩트들 (종종, 허위 윤곽 (false contouring), 밴딩, 또는 포스터리제이션 (posterization) 아티팩트들으로 지칭됨) 을 감소시키거나, 제거하거나, 및/또는 방지하는 기법들을 기술한다.
일 예에서, 본 개시물은, 프로세싱 유닛에 의해, 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하는 단계로서, LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며, 제 1 픽셀 값은 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응하는, 상기 입력하는 단계; 프로세싱 유닛에 의해, 제 1 LUT 입력 값에 대한 잡음 값을 발생시키는 단계; 프로세싱 유닛에 의해, 잡음 값에 기초하여, 제 1 LUT 입력 값에 대해, 제 1 내삽된 LUT 출력 값을 발생시키는 단계; 및 프로세싱 유닛에 의해, 제 1 내삽된 LUT 출력 값을 이용하여, 이미지를 변환된 이미지로 변환하는 단계를 포함하는 방법을 기술한다.
다른 예에서, 본 개시물은, 이미지를 저장하는 메모리; 및 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하는 것으로서, LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며, 제 1 픽셀 값은 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응하는, 상기 입력하고; 제 1 LUT 입력 값에 대한 잡음 값을 발생시키고; 잡음 값에 기초하여 제 1 LUT 입력 값에 대해 제 1 내삽된 LUT 출력 값을 발생시키고; 그리고 제 1 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하도록 구성된 하나 이상의 프로세서들을 포함하는 디바이스를 기술한다.
다른 예에서, 본 개시물은, 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하는 수단으로서, LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며, 제 1 픽셀 값은 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응하는, 상기 입력하는 수단; 제 1 LUT 입력 값에 대한 잡음 값을 발생시키는 수단; 잡음 값에 기초하여 제 1 LUT 입력 값에 대해, 제 1 내삽된 LUT 출력 값을 발생시키는 수단; 및 제 1 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하는 수단을 포함하는 장치를 기술한다.
다른 예에서, 본 개시물은, 명령들을 안에 저장하고 있는 비일시적 컴퓨터-판독가능 저장 매체를 기술하며, 상기 명령들은, 실행될 때, 컴퓨팅 디바이스의 하나 이상의 프로세서들로 하여금, 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하게 하는 것으로서, LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며, 제 1 픽셀 값은 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응하는, 상기 입력하게 하고; 제 1 LUT 입력 값에 대한 잡음 값을 발생시키게 하고; 잡음 값에 기초하여 제 1 LUT 입력 값에 대해 제 1 내삽된 LUT 출력 값을 발생시키게 하고; 그리고 제 1 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하게 한다.
본 개시물의 하나 이상의 예들의 세부 사항들은 첨부도면 및 아래의 설명에서 개시된다. 본 개시물의 다른 특징들, 목적들, 및 이점들은 설명 및 도면들로부터, 그리고 청구범위로부터 명백히 알 수 있을 것이다.
도 1 은 본 개시물의 기법들을 이용하도록 구성된 예시적인 프로세싱 유닛을 나타내는 블록도이다.
도 2 는 출력 간극들 (gaps) 을 가진 LUT 맵핑의 일 예를 나타낸다.
도 3 은 도 2 에 테이블 형태로 도시된 LUT 의 일 예를 나타낸다.
도 4 는 본 개시물의 기법들을 이용하도록 구성된 예시적인 프로세싱 유닛을 나타내는 블록도이다.
도 5 는 본 개시물의 기법들을 이용하도록 구성된 예시적인 컴퓨팅 디바이스를 나타내는 블록도이다.
도 6 은 본원에서 설명하는 하나 이상의 기법들에 따른, 윤곽선 아티팩트들을 감소시키거나 또는 제거하는 일 예를 나타낸다.
도 7 은 하측 내삽 (low-side interpolation) 의 일 예에 따른, LUT 출력 값 내삽의 일 예를 나타낸다.
도 8 은 상측 내삽 (high-side interpolation) 의 일 예에 따른, LUT 출력 값 내삽의 일 예를 나타낸다.
도 9 는 본원에서 설명되는 NOISE_TABLE 의 예시적인 계산을 나타낸다.
도 10 은 본 개시물의 예시적인 방법을 나타내는 플로우차트이다.
도 11 은 본 개시물의 예시적인 방법을 나타내는 플로우차트이다.
도 12 는 본 개시물의 예시적인 방법을 나타내는 플로우차트이다.
도 13 은 본 개시물의 예시적인 방법을 나타내는 플로우차트이다.
도 14 는 본 개시물의 예시적인 방법을 나타내는 플로우차트이다.
일반적으로, 본 개시물의 기법들은 이미지 및/또는 비디오 프로세싱을 위한 기법들, 좀더 구체적으로는, 이미지 내 하나 이상의 윤곽선 아티팩트들 (종종, 허위 윤곽, 밴딩, 또는 포스터리제이션 아티팩트들로서 지칭됨) 을 감소시키거나, 제거하거나, 및/또는 방지하는 기법들에 관한 것이다.
본원에서 사용될 때, 용어 "이미지 프로세싱" 은 "이미지 및/또는 비디오 프로세싱" 을 의미한다. 이미지 프로세싱은 하나 이상의 이미지 프로세싱 기법들을 이용하여 이미지를 변환된 이미지로 변환하는 것으로 이해될 수도 있다. 이미지 프로세싱의 일부 예들은 순방향 감마 보정 (GC), 역 감마 보정, 감마 보정, 콘트라스트 향상, 콘트라스트 보정, 칼라 보정, 칼라 변환, 톤 맵핑, 역 톤 맵핑, 임의의 이미지 프로세싱 기법, 또는 임의의 이들의 조합들을 포함한다.
비디오 프레임들 또는 정지 화상들에 적용될 때, 본원에서 설명되는 기법들은, 하나 이상의 이미지들 및/또는 비디오 프레임들을 프로세싱할 때 하나 이상의 윤곽선 아티팩트들을 감소시키거나, 제거하거나, 및/또는 방지할 수도 있다. 이미지 및/또는 비디오 프레임에 적용될 때, 본원에서 설명되는 기법들은, 이미지를 프로세싱할 때 하나 이상의 윤곽선 아티팩트들을 감소시키거나, 제거하거나, 및/또는 방지할 수도 있다. 비디오의 단일 이미지 또는 하나 이상의 이미지들은 이미지의 하나 이상의 타일들과 같은, 하나 이상의 서브-부분들에서 프로세싱될 수도 있다. 본원에서 설명되는 이미지 프로세싱은 임의의 칼라 포맷을 이용하여 수행될 수도 있다. 따라서, RGB 또는 임의의 다른 칼라 포맷이 구체적으로 식별될 수도 있지만, 본 개시물은 단지 특별히 참조된 칼라 포맷들에만 한정되지 않는다.
본원에서 사용될 때, 용어 "이미지" 는 단일 이미지, 하나 이상의 이미지들, 비디오에 대응하는 복수의 이미지들 중 하나 이상의 이미지들, 비디오에 대응하지 않는 복수의 이미지들 중 하나 이상의 이미지들, 비디오에 대응하는 복수의 이미지들 (예컨대, 비디오에 대응하는 이미지들의 모두 또는 비디오에 대응하는 이미지들의 모두 미만), 단일 이미지의 서브-부분, 단일 이미지의 복수의 서브-부분들, 복수의 이미지들에 대응하는 복수의 서브-부분들, 하나 이상의 그래픽스 프리머티브들, 이미지 데이터, 그래픽 데이터 등을 지칭할 수도 있다. 이와 관련하여, 본원에서 설명되는 바와 같이, 본원에서 설명되는 기법들을 이미지에 적용하는 것은, 단일 이미지, 하나 이상의 이미지들, 비디오에 대응하는 복수의 이미지들 중 하나 이상의 이미지들, 비디오에 대응하지 않는 복수의 이미지들 중 하나 이상의 이미지들, 비디오에 대응하는 복수의 이미지들 (예컨대, 비디오에 대응하는 이미지들의 모두 또는 비디오에 대응하는 이미지들의 모두 미만), 단일 이미지의 서브-부분, 단일 이미지의 복수의 서브-부분들, 복수의 이미지들에 대응하는 복수의 서브-부분들, 하나 이상의 그래픽스 프리머티브들, 이미지 데이터, 그래픽 데이터 등을 본원에서 설명되는 기법들을 적용하는 것을 지칭할 수도 있다. 이미지의 서브-부분은 하나 이상의 타일들 또는 다른 더 작은 부분 또는 전체 이미지보다 작은 부분들의 조합을 지칭할 수도 있다. 본원에서 사용될 때, 비디오는 시퀀스로 제시될 수도 있는 복수의 이미지들일 수도 있다.
본원에서 사용될 때, 용어 "이미지 프로세싱" 은 "픽셀 프로세싱" 을 더 넓게 지칭할 수도 있는데, 이는 이미지 프로세싱에 관하여 본원에서 설명되는 기법들이 픽셀 프로세싱에 동일하게 적용될 수도 있다는 것을 의미한다. 예를 들어, "이미지 프로세싱" 과 "픽셀 프로세싱" 은 상황에 따라서 상호교환가능하게 사용될 수도 있지만, 본원에서 설명되는 기법들은 이러한 용어들이 상호교환가능하게 사용되지 않을 수도 있는 예들에서 픽셀들을 프로세싱하는데 사용될 수도 있다. 예를 들어, 본원에서 설명되는 기법들은, 심지어 하나 이상의 픽셀들이 이미지로부터 분리될 때에도 하나 이상의 픽셀들의 프로세싱에 적용될 수도 있다.
도 1 은 본 개시물의 하나 이상의 양태들을 구현하도록 구성될 수도 있는 예시적인 프로세싱 유닛을 예시하는 블록도이다. 도 1 에 나타낸 바와 같이, 프로세싱 유닛 (1) 은 내부 메모리 (5) 를 포함할 수도 있다. 도시된 시스템 메모리 (10) 와 같은, 프로세싱 유닛 (1) 의 외부에 있는 메모리는 프로세싱 유닛 (1) 에 액세스가능할 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 버스를 통해서 시스템 메모리 (10) 에 통신가능하게 커플링될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 버스 (9) 와 같은, 통신 매체를 통해서, 시스템 메모리 (10) 에 직접 통신가능하게 커플링될 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 버스와 같은, 통신 매체를 통해서 시스템 메모리 (10) 에 간접적으로 통신가능하게 커플링될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 버스와 같은 통신 매체를 통해서 시스템 메모리 (10) 에 직접 통신가능하게 커플링된 다른 컴포넌트 (예컨대, 상이한 프로세싱 유닛) 에 통신가능하게 직접 커플링될 수도 있다.
내부 메모리 (5) 는 예컨대, 랜덤 액세스 메모리 (RAM), 정적 RAM (SRAM), 동적 RAM (DRAM), 소거가능한 프로그래밍가능 ROM (EPROM), 전기적 소거가능 프로그래밍가능 ROM (EEPROM), 플래시 메모리, 자기 데이터 매체들 또는 광학 저장 매체들과 같은, 하나 이상의 휘발성 또는 비-휘발성 메모리 또는 저장 디바이스들을 포함할 수도 있다.
시스템 메모리 (10) 는 일부 예들에 따라 비일시적 저장 매체일 수도 있다. 용어 "비일시적" 은 저장 매체가 반송파 또는 전파 신호로 구현되지 않는다는 것을 의미할 수도 있다. 그러나, 용어 "비일시적" 은 시스템 메모리 (10) 가 이동불가능하거나 또는 그 콘텐츠가 정적임을 의미하는 것으로 해석되어서는 안된다. 일 예로서, 시스템 메모리 (10) 는 컴퓨팅 디바이스 (2) 로부터 제거되어, 또 다른 디바이스로 이동될 수도 있다. 또 다른 예로서, 메모리는, 시스템 메모리 (10) 와 실질적으로 유사하게, 컴퓨팅 디바이스 (2) 에 삽입될 수도 있다. 어떤 예들에서, 비일시적 저장 매체는 시간 경과에 따라, 변할 수 있는 데이터를 (예컨대, RAM 에) 저장할 수도 있다.
프로세싱 유닛 (1) 은 중앙 처리 유닛 (CPU), 그래픽 프로세싱 유닛 (GPU), 디스플레이 프로세싱 유닛, 디지털 신호 프로세싱 유닛 (DSP), 또는 임의의 다른 프로세싱 유닛일 수도 있다. 프로세싱 유닛 (1) 은 컴퓨팅 디바이스의 마더보더에 통합될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 컴퓨팅 디바이스의 마더보더에서의 포트에 설치된 그래픽스 카드 상에 존재할 수도 있거나 또는 아니면, 컴퓨팅 디바이스와 상호운용하도록 구성된 주변장치 디바이스 내에 통합될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 시스템 온 칩 (SOC) 과 같이, CPU 와의 온칩일 수도 있다. 프로세싱 유닛 (1) 은 하나 이상의 프로세서들, 예컨대 하나 이상의 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그래밍가능 게이트 어레이들 (FPGAs), 산술 로직 유닛들 (ALUs), 디지털 신호 프로세서들 (DSPs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 등가 통합 또는 이산 로직 회로부, 또는 임의의 이들의 조합들을 포함할 수도 있다. 프로세싱 유닛 (1) 은 또한 하나 이상의 프로세서 코어들을 포함할 수도 있으며, 따라서 프로세싱 유닛 (1) 은 멀티-코어 프로세서로서 지칭될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 프로세싱 유닛 (1) 에 그래픽스 프로세싱에 적합한 대용량 병렬 프로세싱 능력들을 제공하는 통합 및/또는 이산 로직 회로부를 포함하는 특수화된 하드웨어일 수도 있다.
예를 들어, 도 5 가 아래에 좀더 자세하게 설명되지만, 프로세싱 유닛 (1) 은 CPU (6), GPU (12), 디지털 신호 프로세서 (DSP) (11), 디스플레이 프로세서 (14), 비디오 코덱 (7) 또는 도 5 에 도시된 컴퓨팅 디바이스 (2) 의 다른 컴포넌트 (도시되든 또는 도시되지 않든) 일 수도 있다. 다른 예로서, 프로세싱 유닛 (1) 은 이미지 프로세싱 또는 임의의 픽셀 프로세싱을 수행하도록 구성된 임의의 프로세싱 유닛일 수도 있다. 다른 예로서, 프로세싱 유닛 (1) 은 룩업 테이블 (LUT) 을 이용하여 이미지 프로세싱 또는 임의의 픽셀 프로세싱을 수행하도록 구성된 임의의 프로세싱 유닛일 수도 있다.
일부 예들에서, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 이미지 프로세싱 기법들이 수행될 수도 있는 데이터 (예컨대, 본원에서 정의된 바와 같은 이미지) 를 수신하거나, 송신하거나, 및/또는 발생시키도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 다른 프로세싱 유닛 (예컨대, 다른 프로세싱 유닛 (1)) 또는 임의의 다른 소스 (예컨대, 임의의 다른 프로세싱 유닛 또는 저장 매체 예컨대, 시스템 메모리 (10), 내부 메모리 (5), 또는 임의의 다른 메모리 공간) 로부터, 본원에서 설명하는 하나 이상의 이미지 프로세싱 기법들이 수행될 수도 있는 데이터를 수신하도록 구성될 수도 있다. 다른 예로서, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 이미지 프로세싱 기법들이 수행될 수도 있는 데이터를 수신하거나, 송신하거나, 및/또는 발생시키도록 구성된 GPU (예컨대, GPU (12)) 일 수도 있다. 이러한 데이터는 예를 들어, CPU (예컨대, CPU (6)) 또는 임의의 다른 소스로부터 수신되는 그래픽 데이터, 및/또는 예를 들어, 디스플레이 프로세서 (예컨대, 디스플레이 프로세서 (14)) 로 송신되는 그래픽 데이터를 포함할 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 이미지 프로세싱 기법들이 수행될 수도 있는 데이터를 수신하거나, 송신하거나, 및/또는 발생시키도록 구성된 디스플레이 프로세싱 유닛 (예컨대, 디스플레이 프로세서 (14)) 일 수도 있다. 이러한 데이터는 예를 들어, CPU (예컨대, CPU (6)), GPU (예컨대, GPU (12)), 또는 임의의 다른 소스로부터 수신된 그래픽 데이터를 포함할 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 이미지 프로세싱 기법들이 수행될 수도 있는 데이터를 수신하거나, 송신하거나, 및/또는 발생시키도록 구성된 CPU (예컨대, CPU (6)) 일 수도 있다. 이러한 데이터는 예를 들어, 다른 CPU, GPU (예컨대, GPU (12)), 또는 임의의 다른 소스로부터 수신되는 그래픽 데이터를 포함할 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나의 이상의 이미지 프로세싱 기법들이 수행될 수도 있는 데이터를 수신하거나, 송신하거나, 및/또는 발생시키도록 구성된 디지털 신호 프로세서 (예컨대, DSP (11)) 일 수도 있다.
본원에서 설명된 하나 이상의 기법들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 예를 들어, 본원에서 설명하는 하나 이상의 기법들이 하드웨어로 구현되는 경우, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 기법들을 수행하기 위해 함께 동작하도록 구성된 이러한 하드웨어 또는 복수의 하드웨어 컴포넌트들 중 하나의 부품일 수도 있다. 이러한 예들에서, 하드웨어는 실행될 때 본원에서 설명하는 하나 이상의 기법들을 수행할 수도 있는 소프트웨어 또는 펌웨어를 실행하도록 구성되거나 또는 구성되지 않을 수도 있다. 임의의 소프트웨어 및/또는 펌웨어는 비일시적 저장 매체, 예컨대 하드웨어의 온칩 메모리 (예컨대, 프로세싱 유닛 (1) 의 내부 메모리 (5)) 상에 또는 임의의 하드웨어 (예컨대, 시스템 메모리 (10)) 의 외부 메모리 상에 저장될 수도 있다.
프로세싱 유닛 (1) 은 하나 이상의 룩업 테이블들 (LUTs) 을 이용하여 이미지 프로세싱을 수행하도록 구성될 수도 있다. 예를 들어, 하나 이상의 LUT들은 LUT 의 입력-대-출력 맵핑을 통해서 이미지를 변환된 이미지로 변환할 수도 있다. LUT 의 입력-대-출력 맵핑은 LUT 맵핑 또는 LUT 맵핑 구성으로서 지칭될 수도 있다. LUT 맵핑은 n-비트 입력 값 (예컨대, 입력 픽셀 값) 을 n-비트 또는 m-비트 출력 값 (예컨대, 출력 픽셀 값) 에 맵핑할 수도 있으며, 여기서, n 및 m 은 임의의 정수이고 n 은 m 과는 상이하다. 예를 들어, LUT 는 8-비트 입력 픽셀 값을 16-비트 출력 픽셀 값에 맵핑할 수도 있다. 이러한 예에서, LUT 는 각각의 가능한 입력 픽셀 값에 대응하는 256 개의 LUT 입력 값들 (예컨대, 0-255) 을 포함할 수도 있으며, LUT 는 각각의 LUT 입력 값을 하나 이상의 16-비트 LUT 출력 값들 (예컨대, 0-65,535 의 범위인 하나 이상의 픽셀 값들) 에 맵핑할 수도 있다.
LUT 맵핑은 순방향 감마 보정 (GC), 역 감마 보정, 감마 보정, 콘트라스트 향상, 콘트라스트 보정, 칼라 보정, 칼라 변환, 톤 맵핑, 역 톤 맵핑, 임의의 이미지 프로세싱 기법, 또는 임의의 이들의 조합들에 대응하거나 또는 이를 수행할 수도 있다. 프로세싱 유닛 (1) 은 순방향 감마 보정 (GC), 역 감마 보정, 감마 보정, 콘트라스트 향상, 콘트라스트 보정, 칼라 보정, 칼라 변환, 톤 맵핑, 역 톤 맵핑, 임의의 이미지 프로세싱 기법, 또는 임의의 이들의 조합들과 같은, 이미지 프로세싱을 수행하도록 구성될 수도 있다. 따라서, 용어 "이미지 프로세싱" 은 이미지를 변환된 이미지로 변환하는 것으로서 이해될 수도 있다.
본원에서 설명되는 기법들은 이미지 프로세싱 동안 윤곽선 아티팩트들의 도입을 감소시키거나 또는 방지하면서도, 또는 이미지 프로세싱 동안 윤곽선 아티팩트들을 제거하면서도, 전통적인 LUT 의 사용의 완전한 유연성 및 용이성을 유지하는 LUT-기반의 맵핑 아키텍처를 포함할 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 근접한 LUT 입력 값들 (또는, 일부 예들에서는 비-근접한 LUT 입력 값들) 사이에 선형으로 또는 비선형으로 내삽하도록 구성될 수도 있다. 일 예로서, 근접한 테이블 엔트리들 사이에 선형으로 내삽함으로써, 프로세싱 유닛 (1) 은 출력에서 근접한 엔트리들 사이에서 하나 이상의 값들 (예컨대, 모든 값들) 을 발생시키도록 구성될 수도 있다. 이와 같이, 예를 들어, 프로세싱 유닛 (1) 은 LUT 에서의 특정의 LUT 입력 값에 맵핑되지 않음에도 불구하고, 비맵핑된 LUT 출력 값들을 출력하도록 구성될 수도 있다. 이렇게 함으로써, 프로세싱 유닛 (1) 은 LUT 출력 값들의 맵핑에서의 간극들을 제거하도록 구성될 수도 있다. 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 기법들이 적용될 수도 있는 임의의 LUT 의 사이즈를 증가시킴이 없이 본원에서 설명하는 하나 이상의 기법들을 구현하도록 구성될 수도 있는데, 이는 프로세싱 유닛 (1) 이 LUT 의 사이즈를 확장하는 것을 수반하는 기법들에 비해 LUT 를 저장하는데 더 적은 메모리 공간을 이용하도록 구성될 수도 있다는 것을 의미한다. 또한, 사용자의 관점으로부터, 프로세싱 유닛 (1) 은 프로세싱 유닛 (1) 에 대한 프로그래밍 모델이 기본 LUT 에 대해 이루어지는 것과 동일하게 유지되기 때문에, 프로그래밍하기가 간단하다.
LUT 에 기초하여 프로세싱할 때, LUT 에의 입력은 입력 픽셀 값이고 LUT 로부터의 출력은 출력 픽셀 값이다. 일부 예들에서, 용어 "입력 픽셀 값" 및 그의 등가물들은 용어 "LUT 입력 값" 및 그의 등가물들과 동의어이거나 또는 대체가능할 수도 있다. LUT 는 하나 이상의 입력 픽셀 값들을 하나 이상의 출력 픽셀 값들에 맵핑할 수도 있다. 픽셀은 하나 이상의 픽셀 값들에 의해 정의될 수도 있다. 예를 들어, 픽셀은 하나 이상의 칼라 성분들을 포함할 수도 있으며, 여기서 각각의 칼라 성분은 대응하는 픽셀 값을 가질 수도 있다. 일 예로서, RGB 칼라 포맷된 픽셀은 3개의 픽셀 값들: 적색 픽셀 값, 녹색 픽셀 값, 및 청색 픽셀 값을 포함한다. 픽셀 값은 하나 이상의 비트들에 의해 정의될 수도 있다. 예를 들어, 입력 픽셀 값은 하나 이상의 비트들일 수도 있으며, 출력 픽셀 값은 하나 이상의 비트들일 수도 있다. LUT-기반의 이미지 프로세싱은 윤곽선 아티팩트들과 같은, 이미지 프로세싱 아티팩트들을 도입할 수도 있다. 윤곽선 아티팩트들은 예를 들어, 비선형 맵핑들을 초래할 수도 있는, 값에서의 간극들을 가지는 LUT 에서의 근접한 테이블 엔트리들에 기인할 수도 있다. 일 예로서, 하나의 LUT 맵핑 구성은 다음과 같이 0 에서 0, 1 에서 1, 2 에서 3, 3 에서 4, 그리고 4 에서 5 에 맵핑될 수도 있다. 이 예에 따르면, 입력 시퀀스 [0, 1, 2, 3, 4] 는 [0, 1, 3, 4, 5] 에 맵핑되게 된다. 출력에서 1 으로부터 3 으로의 점프는 간극의 일 예이다. 이 간극은 2 의 간극으로 1 로부터 3 으로의 출력 점프들 때문에 스텝 불연속성으로서 지칭될 수도 있다. 이 예에서, 값 2 는 출력에 전혀 나타나지 않을 것이다. 이러한 간극은 특히, 예를 들어, 그래디언트 램프 (ramp) 이미지 상에 가시적인 밴딩을 초래할 수도 있다. 윤곽선 아티팩트들을 초래하는 간극들은 비선형 맵핑을 채용하는 임의의 LUT, 그리고, 일부 예들에서는, 심지어 선형 맵핑을 채용하는 LUT 에 기인할 수도 있다.
본원에서 설명하는 이미지 프로세싱 기법들은 입력 이미지에의 윤곽선 아티팩트들 (예컨대, 밴딩 또는 포스터리제이션) 의 도입을 감소시키거나 또는 방지할 수도 있는 디더링 (또는, 무작위화) 기법을 포함한다. 본원에서 설명하는 이미지 프로세싱 기법들은 입력 이미지로부터 기존 윤곽선 아티팩트들 (예컨대, 밴딩 또는 포스터리제이션) 을 감소시키거나 또는 제거할 수도 있는 디더링 기법을 포함한다. 예를 들어, 프로세싱 유닛 (1) 은 입력 이미지에의 윤곽선 아티팩트들 (예컨대, 밴딩 또는 포스터리제이션) 의 도입을 감소시키거나 또는 방지할 수도 있는 디더링 기법을 이용하도록 구성될 수도 있다. 다른 예로서, 프로세싱 유닛 (1) 은 입력 이미지로부터 기존 윤곽선 아티팩트들 (예컨대, 밴딩 또는 포스터리제이션) 을 감소시키거나 또는 제거할 수도 있는 디더링 기법을 이용하도록 구성될 수도 있다.
도 2 는 출력 간극들을 가진 LUT 맵핑의 일 예를 나타낸다. 도 2 에 나타낸 LUT 맵핑은 비선형 맵핑의 일 예이다. 도 2 에서의 LUT 맵핑은 그래픽적으로 표현되지만, LUT 맵핑은 간단한 테이블, 어레이들의 조합, 또는 하나 이상의 출력 값들에의 하나 이상의 입력 값들의 맵핑을 전달하는 임의의 다른 표현을 이용하여 나타내어질 수도 있는 것으로 이해되어야 한다. 프로세싱 유닛 (1) 은 LUT 가 그래픽 형태가 아니면 임의의 LUT 에 대한 (도 2 에 나타낸 그래픽 표현과 같은) 그래픽 표현을 도출하도록 구성될 수도 있다. 예를 들어, 도 3 은 도 2 에 테이블 형태로 도시된 LUT 의 일 예를 나타낸다. 일부 예들에서, 본 개시물 전체에 걸친 LUT들의 그래픽 표현들은 사실상 개념적이며, 프로세싱 유닛 (1) 은 테이블, 어레이들의 조합, 또는 하나 이상의 출력 값들에의 하나 이상의 입력 값들의 맵핑을 전달하는 임의의 다른 표현에 대해 본원에서 설명하는 하나 이상의 기법들을 수행하도록 구성될 수도 있다.
도 2 의 예에서, [0, 4, 16, 24, 28] 의 LUT 출력 값들은 각각의 LUT 입력 값에 각각 맵핑되는 맵핑된 LUT 출력 값들의 예들이다. 예를 들어, 0 의 LUT 입력 값은 0 의 LUT 출력 값에 맵핑되며, 1 의 LUT 입력은 0 의 LUT 출력 값에 맵핑되며, 2 의 LUT 입력은 4 의 LUT 출력 값에 맵핑되며, 3 의 LUT 입력은 16 의 LUT 출력 값에 맵핑되며, 4 의 LUT 입력은 24 의 LUT 출력 값에 맵핑되며, 5 의 LUT 입력은 28 의 LUT 출력 값에 맵핑되며, 6 의 LUT 입력은 28 의 LUT 출력 값에 맵핑되며, 7 의 LUT 입력은 28 의 LUT 출력 값에 맵핑된다. [1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 25, 26, 27, 29, 30, 31] 의 LUT 출력 값들은 각각의 LUT 입력 값에 각각 맵핑되지 않는 비-맵핑된 LUT 출력 값들의 예들이다.
입력이 0 에서 7 까지 가는 매끄러운 그래디언트이면, 입력이 2 에서 3 으로, 보다 적게는, 3 에서 4 로 전이하는 출력에서 갑작스러운 점프가 발견될 수도 있다. 예를 들어, [0, 1, 2, 3, 4, 5, 6, 7] 의 입력 시퀀스는 [0, 0, 4, 16, 24, 28, 28, 28] 에 맵핑되게 된다. 출력에서 4 로부터 16 으로의 점프는 간극의 일 예이며, 출력에서 16 으로부터 24 으로의 점프는 간극의 다른 예이다. 프로세싱 유닛 (1) 은 이러한 간극들의 도입을 감소시키거나 또는 방지할 수도 있는 디더링 기법을 이용하도록 구성될 수도 있으며, 이는 윤곽선 아티팩트들 (예컨대, 밴딩) 의 도입을 감소시키거나 또는 방지하는 것을 초래할 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 LUT 의 입력에 무작위 또는 비-무작위 변화를 도입할 수도 있다.
LUT 의 입력에서 변화를 도입하는 것 (예컨대, 본원에서 설명하는 하나 이상의 기법들) 은 LUT 의 입력에 대해 변화를 도입하는 것 (예컨대, 입력 픽셀 값 입력을 디더링하고 디더링된 픽셀 값 입력을 LUT 에의 입력 값으로서 이용하는 것) 과는 상이한 것임을 알 수 있다. 예를 들어, 프로세싱 유닛 (1) 은 픽셀 위치 (x,y) 에 대응하는 픽셀 값을 LUT 에 입력하도록 구성될 수도 있으며, 여기서, (x, y) 는 이미지에서의 임의의 픽셀 위치에 대응한다. 일 예로서, 이미지에서의 위치 (3, 4) 의 픽셀은 3개의 픽셀 값들을 포함할 수도 있다. 3개의 픽셀 값들 중 하나는 8-비트 값으로서 표현될 수도 있다. 프로세싱 유닛 (1) 은 LUT 에의 입력으로서 8-비트 값을 이용하고, 예를 들어, 입력 픽셀 값 자체를 디더링하고 (예컨대, 8-비트 값을 n-비트 값으로 디더링하고, 여기서, n 은 8 보다 크거나, 작거나, 또는 동일하다) 그리고 LUT 에의 입력으로서 디더링된 입력 픽셀 값을 이용하는 대신, LUT 의 입력에 변화 (예컨대, 디더링) 를 가하도록 구성될 수도 있다.
예를 들어, 프로세싱 유닛 (1) 은 디더링을 이용하여, 대응하는 테이블 엔트리 (즉, LUT 에 들어가는 픽셀 값에 대응하는 LUT 입력 값) 와 LUT 에서의 그의 근접한 및/또는 비-근접한 이웃(들) 사이에서 변하는 출력들을 발생하도록 구성될 수도 있다. 값을 LUT 에 입력하기 전에 픽셀 값을 디더링하는 것은 일부 예들에서 바람직하지 않은 것으로 간주될 수도 있다. 그러나, 다른 예들에서, 프로세싱 유닛 (1) 은 본원에서 설명하는 바와 같이 먼저 픽셀 값을 디더링하고, 디더링된 픽셀 값을 LUT 에의 입력으로서 이용하고, 그후 LUT 입력 값을 디더링하도록 구성될 수도 있다. 따라서, LUT 입력 값은 입력 픽셀 값과 동의어인 것으로 본원에서 설명될 수도 있는데, 이것은 프로세싱 유닛 (1) 이 LUT 에 입력된 픽셀 값을 LUT 입력 값으로서 이용하도록 구성될 수도 있기 때문이다. 그러나, LUT 입력 값을 디더링하는 것은 LUT 에 입력된 픽셀 값을 디더링하는 것과는 상이하다. 예를 들어, 픽셀 값은 디더링 전 제 1 LUT 입력 값에 대응할 수도 있다. 픽셀 값을 디더링한 후, 디더링된 픽셀 값은 제 1 LUT 입력 값 대신, 제 2 LUT 입력 값에 대응할 수도 있다. LUT 에 진입하기 전에 픽셀 값을 디더링함으로써, 손상 (corruption) 이 발생된다. 프로세싱 유닛 (1) 은 LUT 에 입력된 데이터를 손상시키는 것을 피하기 위해 실제 픽셀 값 대신, LUT 입력 값을 디더링하도록 구성될 수도 있다. 따라서, 프로세싱 유닛 (1) 이 입력 픽셀 값을 LUT 입력 값으로서 이용하도록 구성될 수도 있는 예에서, 용어들 픽셀 값과 LUT 입력 값은 본원에서 상호교환가능하게 사용될 수도 있음을 알 수 있다. 또한, 픽셀 값을 디더링하는 것은 픽셀 값에 대응하는 LUT 입력 값을 디더링하는 것과는 상이함을 알 수 있다. 예를 들어, 픽셀 값이 디더링되면, 용어들 픽셀 값과 LUT 입력 값은 본원에서 상호교환가능하게 사용되지 않을 수도 있다. 대신, 이 예에서, 용어들 디더링된 픽셀 값과 LUT 입력 값은 상호교환가능하게 사용될 수도 있다.
프로세싱 유닛 (1) 이 LUT 의 입력에서 도입하도록 구성될 수도 있는 무작위 또는 비-무작위 잡음은, 일반적으로 간극 또는 누락된 출력 값들 (예컨대, 비-맵핑된 출력 값들) 이 존재할 경우 중간 값들의 발생을 초래하는 본원에서 설명하는 하나 이상의 기법들에 의해 LUT 의 출력에서의 변화로 변환될 수도 있다. 일 예로서, 도 2 에 나타낸 예를 참조하면, 하나 이상의 비-맵핑된 LUT 출력 값들 (예컨대, 입력 픽셀 값에 맵핑되지 않은 하나 이상의 출력 픽셀 값들) 은, LUT 가 입력 픽셀 값을 이러한 하나 이상의 비-맵핑된 LUT 출력 값들 (예컨대, 도 2 에 나타낸 예에서 출력 픽셀 값들 5 내지 15 및 기타) 에 명시적으로 맵핑하지 않음에도 불구하고, 본원에서 설명하는 하나 이상의 기법들을 이용하여 출력에 나타날 수 있다.
일부 예들에서, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 기법들을 수행할 뿐만 아니라, LUT 에의 입력을 디더링하거나 및/또는 LUT 의 출력 값을 디더링하도록 구성될 수도 있다. LUT 의 출력을 디더링하는 것은 LUT 출력 값을 내삽하는 것과 식별되어야 한다. 예를 들어, 이미지에서의 위치 (4, 7) 의 픽셀은 3개의 픽셀 값들을 포함할 수도 있다. 3개의 픽셀 값들 중 하나는 8-비트 값으로 표현될 수도 있다. 프로세싱 유닛 (1) 은 8-비트 값을 LUT 에의 입력으로서 이용하도록 구성될 수도 있다. LUT 입력 값은 LUT 출력 값에 맵핑될 수도 있다. (일부 예들에서) 맵핑된 LUT 출력 값을 출력하는 대신, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 기법들에 따라, LUT 입력 값에 대한 LUT 출력 값을 내삽하도록 구성될 수도 있다. LUT 입력 값에 대한 내삽된 LUT 출력 값은 프로세싱될 LUT 입력 값에 맵핑되는 LUT 출력 값과는 상이할 수도 있다. 다음으로, 프로세싱 유닛 (1) 은 내삽된 LUT 출력 값을 디더링하도록 (예컨대, 그에 변화를 가하도록) 구성될 수도 있다.
도 4 는 프로세싱 유닛 (1) 의 일 예를 나타낸다. 도 4 에 나타낸 예에서, 프로세싱 유닛 (1) 은 이미지 프로세싱을 수행하도록 구성된다. 예를 들어, 도 4 는 프로세싱 유닛 (1) 을 임의의 이미지 프로세싱을 위해 본원에서 설명하는 하나 이상의 기법들을 수행하도록 구성되는 것으로서 도시한다. 예를 들어, 프로세싱 유닛 (1) 은 순방향 감마 보정 (GC), 역 감마 보정, 감마 보정, 콘트라스트 향상, 콘트라스트 보정, 칼라 보정, 칼라 변환, 톤 맵핑, 역 톤 맵핑, 임의의 이미지 프로세싱 기법, 또는 임의의 이들의 조합들과 같은, 이미지 프로세싱을 수행하도록 구성될 수도 있다. 나타낸 예와 같은, 일부 예들에서, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 기법들에 따라, R'G'B' 채널들 상에서 디더링에 의한 역 감마 보정 (IGCD) 을 수행하도록 구성될 수도 있다. 본원에서 언급되는 디더링은 본 개시물의 하나 이상의 기법들을 지칭한다. 예를 들어, 나타낸 바와 같이, 프로세싱 유닛 (1) 은 본원에서 설명하는 하나 이상의 기법들에 따라, 10-비트 R'G'B' 감마 보정된 입력이 룩업 테이블 (LUT) 을 이용하여 12-비트 RGB (선형 광) 출력으로 변환되도록, IGCD 를 수행하도록 구성될 수도 있다. 일부 예들에서, IGCD 는 프로세싱 유닛 (1) 에 의해 실행될 때, 프로세싱 유닛 (1) 이 소스 콘텐츠를 인코딩하는데 사용되는 광-전자 전달 함수를 매칭시키도록 구성될 수 있게, 소프트웨어에 의해 프로그래밍될 수도 있다. 예를 들어, IGCD 는 감마 보정된 R'G'B' 입력을 선형 광 RGB 출력으로 변환하도록 수행될 수도 있다.
일부 예들에서, 룩업 테이블 (LUT) 은 소프트웨어 및/또는 하드웨어에 의해 단조 증가하도록 제한될 수도 있다. 그러나, 근접한 LUT 엔트리들 사이의 값에서의 차이는 변할 수도 있다. 예를 들어, 하나의 LUT 엔트리에서 다음 LUT 엔트리까지의 값에서의 증가는 변할 수도 있다. 이와 같이, 다른 것들보다 더 큰 일부 간극들이 있을 수도 있다. 이들 더 큰 간극들은 하나 이상의 LUT들을 이용하여 이미지 프로세싱 기법의 디스플레이된 이미지에서 가시적으로 식별가능한 출력에서의 간극들을 도입할 수도 있다. 이미지 프로세싱으로부터의 출력에서 이러한 가시적으로 식별가능한 간극들은 윤곽선 아티팩트들 (예컨대, 밴딩) 과 같은, 이미지 프로세싱 아티팩트들을 초래할 (또는, 아니면 이들로서 지칭될) 수도 있다. 예를 들어, 소스 콘텐츠 (예컨대, 입력 이미지와 같은 입력 콘텐츠) 가 매끄러운 그래디언트들을 포함할 때, LUT 간극들은 윤곽선 아티팩트들 (예컨대, 밴딩 아티팩트들) 과 같은, 시각적 아티팩트들을 초래할 수 있다. 본원에서 설명하는 이미지 프로세싱 기법들은 입력 이미지에의 윤곽선 아티팩트들의 도입을 감소시키거나 또는 방지할 수도 있는 디더링 기법을 포함한다. 본원에서 설명하는 이미지 프로세싱 기법들은 입력 이미지로부터 기존 윤곽선 아티팩트들을 감소시키거나 또는 제거할 수도 있는 디더링 기법을 포함한다.
도 4 에 나타낸 예는 이미지 프로세싱 (이 예에서는, 역 감마 보정) 동안 윤곽선 아티팩트들의 도입을 감소시키거나 또는 방지하기 위해 본원에서 설명하는 하나 이상의 디더링 기법들로 구현되는 이미지 프로세싱 기법 (예컨대, 역 감마 보정) 의 단지 일 예이다.
본 개시물의 하나 이상의 기법들은 입력 이미지의 픽셀 사이즈 (예컨대, 픽셀 당 비트들 또는 bpp) 가 수행될 이미지 프로세싱에 따라서 증가되거나, 감소되거나, 또는 동일하게 유지하는 예들에 적용될 수도 있다. 예를 들어, 도 4 의 예에 나타낸 바와 같이, 이미지에 대응하는 10-비트 픽셀 값들 또는 표현들 (예컨대, 픽셀 당 10 비트들 또는 10 bpp) 은 하나 이상의 LUT들을 이용하여 12-비트 픽셀 값들 또는 표현들로 증가될 수도 있다. 하나 이상의 상이한 LUT들은 하나 이상의 픽셀 값들에 대응할 수도 있다. 예를 들어, RGB 예를 참조하면, 하나 이상의 LUT들은 R 채널에 대응할 수도 있으며, 하나 이상의 LUT들은 G 채널에 대응할 수도 있으며, 하나 이상의 LUT들은 B 채널에 대응할 수도 있다. 일부 예들에서, R, G, 및 B 채널들에 각각 대응하는 하나 이상의 LUT들은 동일하거나 또는 상이할 수도 있다. 예를 들어, 동일한 하나 이상의 LUT들이 각각의 채널에 대해 사용될 수도 있는 단순화된 접근법이 구현될 수도 있다.
도 5 는 본 개시물의 하나 이상의 양태들을 구현하도록 구성될 수도 있는 예시적인 컴퓨팅 디바이스를 예시하는 블록도이다. 도 5 에 나타낸 바와 같이, 컴퓨팅 디바이스 (2) 는 예를 들어, 개인용 컴퓨터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 컴퓨터 워크스테이션, 비디오 게임 플랫폼 또는 콘솔, 예컨대, 모바일 전화기 (예컨대, 셀룰러 또는 위성 전화기), 유선 전화기, 인터넷 전화기, 핸드헬드 디바이스 (예컨대, 휴대형 비디오 게임 디바이스 또는 개인 휴대정보 단말기 (PDA)), 웨어러블 컴퓨팅 디바이스, 개인용 음악 플레이어, 비디오 플레이어, 디스플레이 (예컨대, 디스플레이 디바이스), 텔레비전, 텔레비전 셋-탑 박스, 서버, 중개 네트워크 디바이스, 메인프레임 컴퓨터, 임의의 모바일 디바이스, 또는 그래픽 데이터를 프로세싱하거나 및/또는 디스플레이하는 임의의 다른 유형의 디바이스일 수도 있다. 도 5 의 예에서, 컴퓨팅 디바이스 (2) 는 중앙 처리 유닛 (CPU) (6), 시스템 메모리 (10), 및 그래픽 프로세싱 유닛 (GPU) (12) 을 포함할 수도 있다 CPU (6) 는 본원에서 설명하는 하나 이상의 기법들에 따라, 이미지 프로세싱을 수행하도록 구성될 수도 있다. GPU (12) 는 본원에서 설명하는 하나 이상의 기법들에 따라, 이미지 프로세싱을 수행하도록 구성될 수도 있다.
컴퓨팅 디바이스 (2) 는 또한 디스플레이 프로세서 (14), 트랜시버 (3), 사용자 인터페이스 (4), 비디오 코덱 (7), 및 디스플레이 (8) 를 포함할 수도 있다. 일부 예들에서, 비디오 코덱 (7) 은 CPU (6) 또는 컴퓨팅 디바이스 (2) 의 다른 컴포넌트들에 의해 프로세싱되도록 구성된 하나 이상의 소프트웨어 애플리케이션들 (18) 중 소프트웨어 애플리케이션과 같은, 소프트웨어 애플리케이션일 수도 있다. 다른 예들에서, 비디오 코덱 (7) 은 CPU (6) 와는 상이한 하드웨어 컴포넌트, CPU (6) 와는 상이한 컴포넌트 상에서 실행하는 소프트웨어 애플리케이션, 또는 하드웨어와 소프트웨어의 조합일 수도 있다. 하나 이상의 소프트웨어 애플리케이션들 (18) 은 내부 CPU (6) 로서 개념적으로 도시되지만, 이들 하나 이상의 소프트웨어 애플리케이션들 (18) 은 시스템 메모리 (10), 컴퓨팅 디바이스 (2) 의 외부에 있지만 액세스가능한 메모리, 또는 이들의 조합에 저장될 수도 있음을 알 수 있다. 외부 메모리는 예를 들어, 컴퓨팅 디바이스 (2) 에 연속적으로 간헐적으로 액세스가능할 수도 있다.
디스플레이 프로세서 (14) 는 본원에서 설명하는 하나 이상의 기법들에 따라, 이미지 프로세싱을 수행하도록 구성될 수도 있다. 디스플레이 프로세서 (14) 는 본원에서 설명하는 하나 이상의 기법들을 구현할 수도 있는 픽셀 프로세싱 유닛을 포함할 수도 있다. 디스플레이 프로세서 (14) 는 예를 들어, 타일-기반의 아키텍처 또는 라인-기반의 아키텍처를 이용할 수도 있다. 일부 예들에서, 타일은 높이 및 폭을 포함하는 픽셀들의 영역 표현이며, 여기서, 높이는 하나 이상의 픽셀들이며 폭은 하나 이상의 픽셀들이다. 이러한 예들에서, 타일들은 본질적으로 직사각형 또는 정사각형일 수도 있다. 다른 예들에서, 타일은 정사각형 또는 직사각형과는 상이한 형상일 수도 있다.
디스플레이 프로세서 (14) 는 적어도 하나의 메모리로부터 다수의 이미지 계층들 (예컨대, 전경 및 배경) 을 페치할 수도 있다. 예를 들어, 디스플레이 프로세서 (14) 는 GPU 가 그래픽 데이터를 픽셀 표현들의 형태로 출력하는 프레임 버퍼 및/또는 다른 메모리로부터 이미지 계층들을 페치할 수도 있다. 다른 예로서, 디스플레이 프로세서 (14) 는 비디오 코덱 (7) 의 온칩 메모리, GPU (12) 의 온칩 메모리, 출력 버퍼 (16), 출력 버퍼 (17), 시스템 메모리 (10), 또는 임의의 다른 소스 또는 메모리 공간으로부터 이미지 계층들을 페치할 수도 있다. 다수의 이미지 계층들은 전경 계층들 및/또는 배경 계층들을 포함할 수도 있다.
디스플레이 프로세서 (14) 는 다수의 계층들로부터의 픽셀들을 프로세싱할 수도 있다. 디스플레이 프로세서 (14) 에 의해 수행될 수도 있는 예시적인 픽셀 프로세싱은 업-샘플링, 다운-샘플링, 스케일링, 회전, 및 다른 픽셀 프로세싱을 포함할 수도 있다. 예를 들어, 디스플레이 프로세서 (14) 는 전경 이미지 계층들 및/또는 배경 이미지 계층들과 연관된 픽셀들을 프로세싱할 수도 있다. 디스플레이 프로세서 (14) 는 다수의 계층들로부터의 픽셀들을 블렌딩하고, 그 블렌딩된 픽셀들을 메모리에 타일 포맷으로 다시 기록할 수도 있다. 그 후, 블렌딩된 픽셀들은 메모리로부터 래스터 포맷으로 판독되어 표시를 위해 디스플레이 (8) 로 전송될 수도 있다.
비디오 코덱 (7) 은 인코딩된 비디오 데이터를 수신할 수도 있다. 컴퓨팅 디바이스 (2) 는 예를 들어, 저장 매체, 네트워크 서버, 또는 소스 디바이스 (예컨대, 데이터를 인코딩하거나 또는 아니면 인코딩된 비디오 데이터를 서버와 같은 컴퓨팅 디바이스 (2) 로 송신하는 디바이스) 로부터 인코딩된 비디오 데이터를 수신할 수도 있다. 다른 예들에서, 컴퓨팅 디바이스 (2) 는 인코딩된 비디오 데이터를 자체로 발생시킬 수도 있다. 예를 들어, 컴퓨팅 디바이스 (2) 는 정지 화상들 또는 비디오를 캡쳐하는 카메라를 포함할 수도 있다. 캡쳐된 데이터 (예컨대, 비디오 데이터) 는 비디오 코덱 (7) 에 의해 인코딩될 수도 있다. 인코딩된 비디오 데이터는 비디오 데이터를 디코딩할 때에, 비디오 코덱 (7) 과 같은 비디오 디코더에 의한 사용을 위해, 비디오 인코더에 의해 발생되는 다양한 신택스 엘리먼트들을 포함할 수도 있다.
비디오 코덱 (7) 은 비디오 인코더 및 비디오 디코더 양쪽인 것으로 본원에서 설명되지만, 다른 예들에서, 비디오 코덱 (7) 은 인코딩 기능 없이 비디오 디코더일 수도 있음을 알 수 있다. 비디오 코덱 (7) 은 본원에서 설명하는 하나 이상의 기법들에 따라 이미지 프로세싱을 수행하도록 구성될 수도 있다. 비디오 코덱 (7) 에 의해 디코딩되거나 및/또는 프로세싱된 비디오 데이터는 임의의 목적지로 전송될 수도 있다. 예를 들어, 디코딩된 비디오 데이터는 디스플레이 프로세서 (14) 로 직접 전송될 수도 있거나, 디스플레이 (8) 로 직접 전송될 수도 있거나, 또는 시스템 메모리 (10), 출력 버퍼 (16), 또는 출력 버퍼 (17) 와 같은, 디스플레이 프로세서 (14) 또는 GPU (12) 에 액세스가능한 메모리로 전송될 수도 있다. 나타낸 예에서, 비디오 코덱 (7) 은 디스플레이 프로세서 (14) 에 접속되며, 이는 디코딩된 비디오 데이터가 디스플레이 프로세서 (14) 로 직접 전송되거나 및/또는 디스플레이 프로세서 (14) 에 액세스가능한 메모리에 저장된다는 것을 의미한다. 이러한 예에서, 디스플레이 프로세서 (14) 는 GPU (12) 와 연관된 메모리 (예컨대, 출력 버퍼 (16)) 로부터 그래픽 (정지 화상 또는 비디오) 데이터를 획득하기 위해 하나 이상의 메모리 요청들을 발할 때와 유사한 방법으로 메모리로부터 디코딩된 비디오 데이터를 획득하기 위해 하나 이상의 메모리 요청들을 발할 수도 있다.
비디오 코덱 (7) 은 ITU-T H.264, AVC (Advanced Video Coding), 또는 ITU-T H.265, HEVC (High Efficiency Video Coding), 표준들과 같은, 비디오 압축 표준에 따라서 동작할 수도 있다. 그러나, 본 개시물의 기법들은 임의의 특정의 코딩 표준에 한정되지 않는다.
트랜시버 (3), 비디오 코덱 (7), 및 디스플레이 프로세서 (14) 는 CPU (6) 및/또는 GPU (12) 와 동일한 집적 회로 (IC) 의 부분일 수도 있거나, CPU (6) 및/또는 GPU (12) 를 포함하는 IC 또는 IC들의 외부에 있을 수도 있거나, 또는 CPU (6) 및/또는 GPU (12) 를 포함하는 IC 의 외부에 있는 IC 에 형성될 수도 있다. 예를 들어, 비디오 코덱 (7) 은 하나 이상의 마이크로프로세서들, 디지털 신호 프로세서들 (DSPs), 주문형 집적회로들 (ASICs), 필드 프로그래밍가능 게이트 어레이들 (FPGAs), 산술 로직 유닛들 (ALUs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어 또는 임의의 이들의 조합들과 같은, 다양한 적합한 인코더 회로부 중 임의의 회로부로 구현될 수도 있다.
컴퓨팅 디바이스 (2) 는, 명료성의 목적들을 위해 도 5 에 미도시된 추가적인 모듈들 또는 프로세싱 유닛들을 포함할 수도 있다. 예를 들어, 컴퓨팅 디바이스 (2) 는 컴퓨팅 디바이스 (2) 가 모바일 무선 전화기 또는 스피커이거나 컴퓨팅 디바이스 (2) 가 미디어 플레이어인 예들에서 회선 통신들 (telephonic communications) 을 실시하기 위해 도 5 에 어느 것도 도시되지 않은 스피커 및 마이크로폰을 포함할 수도 있다. 컴퓨팅 디바이스 (2) 는 또한 카메라를 포함할 수도 있다. 더욱이, 컴퓨팅 디바이스 (2) 에 나타낸 다양한 모듈들 및 유닛들은 컴퓨팅 디바이스 (2) 의 모든 예에서 필요하지 않을 수도 있다. 예를 들어, 사용자 인터페이스 (4) 및 디스플레이 (8) 는, 컴퓨팅 디바이스 (2) 가 데스크탑 컴퓨터, 또는 외부 사용자 인터페이스 또는 디스플레이와 인터페이스하기 위해 탑재되는 다른 디바이스인 예들에서는, 컴퓨팅 디바이스 (2) 의 외부에 있을 수도 있다.
사용자 인터페이스 (4) 의 예들은 트랙볼, 마우스, 키보드, 및 다른 유형들의 입력 디바이스들을 포함하지만 이에 한정되지 않는다. 사용자 인터페이스 (4) 는 또한 터치 스크린일 수도 있으며, 디스플레이 (8) 의 일부분으로서 포함될 수도 있다. 트랜시버 모듈 (3) 은 컴퓨팅 디바이스 (2) 와 또 다른 디바이스 또는 네트워크 사이에 무선 또는 유선 통신을 가능하게 하기 위해 회로부를 포함할 수도 있다. 트랜시버 모듈 (3) 은 변조기들, 복조기들, 증폭기들 및 유선 또는 무선 통신을 위한 이러한 다른 회로부를 포함할 수도 있다. 일부 예들에서, 트랜시버 (3) 는 CPU (6) 와 통합될 수도 있다.
CPU (6) 는 실행을 위해 컴퓨터 프로그램의 명령들을 프로세싱하도록 구성된 중앙 처리 유닛 (CPU) 과 같은, 마이크로프로세서일 수도 있다. CPU (6) 는 컴퓨팅 디바이스 (2) 의 동작을 제어하는 범용 또는 특수-목적 프로세서를 포함할 수도 있다. 사용자는 CPU (6) 로 하여금 하나 이상의 소프트웨어 애플리케이션 (18) 과 같은 하나 이상의 소프트웨어 애플리케이션들을 실행하도록 하기 위해서 컴퓨팅 디바이스 (2) 에 입력을 제공할 수도 있다. CPU (6) 상에서 (또는, 컴퓨팅 디바이스 (2) 의 하나 이상의 다른 컴포넌트들 상에서) 실행하는 하나 이상의 소프트웨어 애플리케이션들 (18) 은 예를 들어, 운영 시스템, 워드 프로세서 애플리케이션, 이메일 애플리케이션, 스프레드시트 애플리케이션, 미디어 플레이어 애플리케이션, 비디오 게임 애플리케이션, 그래픽 사용자 인터페이스 애플리케이션, 또는 2D 또는 3D 그래픽용 그래픽 데이터를 이용하는 다른 유형의 소프트웨어 애플리케이션을 포함할 수도 있다. 앞에서 설명한 바와 같이, 프로세싱 유닛 (1) 은 예를 들어, 도 5 와 관련하여 설명된 하나 이상의 컴포넌트들일 수도 있다. 따라서, 예를 들어, 프로세싱 유닛 (1) 은 하나 또는 소프트웨어 애플리케이션들 (예컨대, 하나 이상의 소프트웨어 애플리케이션 (18)) 을 실행하도록 구성될 수도 있음을 알 수 있다. 도 5 의 임의의 컴포넌트와 관련된 임의의 설명은 동일하게 프로세싱 유닛 (1) 의 하나 이상의 예들을 설명할 수도 있다.
CPU (6) 는 GPU (12) 의 동작을 제어하기 위해 GPU 드라이버 (22) 를 실행하도록 구성될 수도 있다. 사용자는 키보드, 마우스, 마이크로폰, 터치 패드 또는 또 컴퓨팅 디바이스 (2) 에 사용자 인터페이스 (4) 를 통해서 커플링된 다른 입력 디바이스와 같은 하나 이상의 입력 디바이스들 (미도시) 을 통해서 컴퓨팅 디바이스 (2) 에 입력을 제공할 수도 있다.
예를 들어, CPU (6) 상에서 실행하는 하나 이상의 소프트웨어 애플리케이션들 (18) 은 CPU (6) 에게 디스플레이 (8) 로의 그래픽스 데이터의 렌더링을 발생시키도록 명령하는 하나 이상의 그래픽스 렌더링 명령들을 포함할 수도 있다. 명령들은 2D 그래픽을 프로세싱하는 명령들 뿐만 아니라, 3D 그래픽을 프로세싱하는 명령들을 포함할 수도 있다. 일부 예들에서, 소프트웨어 명령들은 그래픽스 애플리케이션 프로그래밍 인터페이스 (API) 를 따를 수도 있다. 그래픽스 API 는 예를 들어, 개방 그래픽스 라이브러리 (OpenGL®) API, OpenGL ES (Open Graphics Library Embedded Systems) API, Direct3D API, X3D API, RenderMan API, WebGL API, 개방 컴퓨팅 언어 (OpenCL™), CUDA (즉, 계산 통합 디바이스 아키텍처) 와 같은, NVIDIA 사에 의해 개발된 병렬 컴퓨팅 플랫폼 및 API 모델, 또는 임의의 다른 공공 또는 독점 표준 GPU 계산 API 일 수도 있다. CPU (6) 상에서 실행하는 하나 이상의 소프트웨어 애플리케이션들 (18) 의 그래픽스 렌더링 명령들을 프로세싱하기 위해, CPU (6) 는, 하나 이상의 소프트웨어 애플리케이션들 (18) 의 실행 동안, 하나 이상의 그래픽스 렌더링 지령들을 (예컨대, GPU 드라이버 (22) 를 통해서) GPU (12) 로 발하여, GPU (12) 로 하여금 그래픽스 데이터의 렌더링의 일부 또는 모두를 수행하게 할 수도 있다. 일부 예들에서, 렌더링될 그래픽스 데이터는 그래픽스 프리머티브들의 리스트, 예컨대, 지점들, 라인들, 삼각형들, 사변형들, 삼각형 스트립들, 등을 포함할 수도 있다.
하나 이상의 소프트웨어 애플리케이션들 (18) 은 GPU (12) 의 임의의 기능을 이용하거나 또는 GPU (12) 의 임의의 기능을 이용하지 않는 임의의 애플리케이션일 수도 있다. 예를 들어, 하나 이상의 애플리케이션들 (18) 은 CPU (6) 에 의한 실행이 하나 이상의 지령들로 하여금 프로세싱을 위해 GPU (12) 로 오프로드되게 하는 (또는, 되지 않게 하는) 임의의 애플리케이션일 수도 있다. 하나 이상의 애플리케이션들 (18) 의 예들은 CPU (6) 로 하여금 3D 렌더링 지령들을 GPU (12) (예컨대, 비디오 게임 애플리케이션) 로 오프로드하게 하는 애플리케이션, CPU (6) 로 하여금 2D 렌더링 지령들을 GPU (12) (예컨대, 사용자 인터페이스 애플리케이션) 로 오프로드하게 하는 애플리케이션, 또는 CPU (6) 로 하여금 일반적인 계산 태스크들을 GPU (12) (예컨대, GPGPU 애플리케이션) 로 오프로드하게 하는 애플리케이션을 포함할 수도 있다. 다른 예로서, 하나 이상의 애플리케이션들 (18) 은 CPU (6), GPU (12), 디스플레이 프로세서 (14), 또는 임의의 다른 컴포넌트와 같은, 컴퓨팅 디바이스 (2) 의 임의의 컴포넌트 상에 상주하는 펌웨어를 포함할 수도 있다. 펌웨어는 GPU (12) 의 기능을 이용 또는 호출할 수도 있거나, 또는 이용 또는 호출하지 않을 수도 있다.
하나 이상의 소프트웨어 애플리케이션들 (18) 은 GPU (12) 에게 그래픽 사용자 인터페이스 (GUI), 그래픽스 장면, 그래픽 데이터, 또는 다른 그래픽 관련 데이터를 렌더링하도록 명령하는 하나 이상의 그리기 명령들을 포함할 수도 있다. 예를 들어, 그리기 명령들은 GPU (12) 에 의해 렌더링될 하나 이상의 그래픽스 프리머티브들의 세트를 정의하는 명령들을 포함할 수도 있다. 일부 예들에서, 그리기 명령들은 일괄하여, GUI 에 사용되는 복수의 윈도우잉 표면들의 모두 또는 일부를 정의할 수도 있다. 추가적인 예들에서, 그리기 명령들은 애플리케이션에 의해 정의되는 모델 공간 또는 세계 공간 내에 하나 이상의 그래픽스 오브젝트들을 포함하는 그래픽스 장면의 모두 또는 일부를, 일괄하여, 정의할 수도 있다.
하나 이상의 소프트웨어 애플리케이션들 (18) 은 하나 이상의 그래픽스 프리머티브들을 디스플레이가능한 그래픽스 이미지들로 렌더링하기 위해, 그래픽스 API 를 통해서, GPU 드라이버 (22) 를 호출하여, 하나 이상의 지령들을 GPU (12) 로 발할 수도 있다. 예를 들어, 하나 이상의 소프트웨어 애플리케이션들 (18) 은 그래픽스 API 를 통해서, GPU 드라이버 (22) 를 호출하여, 프리미티브 정의들을 GPU (12) 에 제공할 수도 있다. 일부의 경우, 프리미티브 정의들은 GPU (12) 에 그리기 프리미티브들의 리스트의 유형, 예컨대, 삼각형들, 직사각형들, 삼각형 팬들, 삼각형 스트립들, 등으로 제공될 수도 있다. 프리미티브 정의들은 렌더링될 프리미티브들과 연관되는 하나 이상의 정점들 (vertices) 을 규정하는 정점 사양들을 포함할 수도 있다.
GPU (12) 는 하나 이상의 그래픽스 프리머티브들을 디스플레이 (8) 에 렌더링하는 그래픽스 동작들을 수행하도록 구성될 수도 있다. 따라서, CPU (6) 상에서 실행하는 하나 이상의 소프트웨어 애플리케이션들 (18) 중 하나가 그래픽스 프로세싱을 필요로 할 때, CPU (6) 는 디스플레이 (8) 에의 렌더링을 위해 그래픽스 데이터와 함께 그래픽스 렌더링 지령들을 GPU (12) 에 제공할 수도 있다. 그래픽스 데이터는 예컨대, 그리기 지령들, 상태 정보, 프리미티브 정보, 텍스쳐 정보, 등을 포함할 수도 있다. GPU (12) 는 일부 경우, CPU (6) 보다 좀더 효율적인 복합 그래픽 관련 동작들의 프로세싱을 제공하는 고속-병렬 구조 (highly-parallel structure) 로 형성될 수도 있다. 예를 들어, GPU (12) 는 다수의 정점들 또는 픽셀들에 대해 병렬 방식으로 동작하도록 구성되는, 셰이더 유닛들과 같은, 복수의 프로세싱 엘리먼트들을 포함할 수도 있다. GPU (12) 의 고속 병렬 성질은 일부 경우, GPU (12) 로 하여금, CPU (6) 를 이용하여 장면들을 디스플레이 (8) 에 직접 그리는 것 보다 더 빨리, 그래픽스 이미지들 (예컨대, GUI들 및 2차원 (2D) 및/또는 3차원 (3D) 그래픽스 장면들) 을 디스플레이 (8) 상에 그리는 것을 가능하게 할 수도 있다.
하나 이상의 소프트웨어 애플리케이션들 (18) 은 하나 이상의 그래픽스 프리머티브들을 디스플레이가능한 그래픽스 이미지들 (예컨대, 디스플레이가능한 그래픽 데이터) 로 렌더링하기 위해, GPU 드라이버 (22) 를 호출하여, 하나 이상의 지령들을 GPU (12) 로 발할 수도 있다. 예를 들어, 하나 이상의 소프트웨어 애플리케이션들 (18) 은 실행될 때, GPU 드라이버 (22) 를 호출하여, 프리미티브 정의들을 GPU (12) 에 제공할 수도 있다. 일부의 경우, 프리미티브 정의들은 GPU (12) 에 그리기 프리미티브들의 리스트의 유형, 예컨대, 삼각형들, 직사각형들, 삼각형 팬들, 삼각형 스트립들, 등으로 제공될 수도 있다. 프리미티브 정의들은 렌더링될 프리미티브들과 연관되는 하나 이상의 정점들을 규정하는 정점 사양들을 포함할 수도 있다. 정점 사양들은 예컨대, 칼라 좌표들, 법선 벡터들, 및 텍스쳐 좌표들과 같은, 각각의 정점에 대한 위치 좌표들 및, 일부 경우, 정점과 연관되는 다른 속성들을 포함할 수도 있다. 프리미티브 정의들은 또한 프리미티브 유형 정보 (예컨대, 삼각형, 직사각형, 삼각형 팬 (triangle fan), 삼각형 스트립, 등), 스케일링 정보, 회전 정보 등을 포함할 수도 있다.
하나 이상의 소프트웨어 애플리케이션들 (18) 에 의해 GPU 드라이버 (22) 로 발해진 명령들에 기초하여, GPU 드라이버 (22) 는 프리미티브를 렌더링하기 위해 수행할 GPU (12) 에 대한 하나 이상의 동작들을 규정하는 하나 이상의 지령들을 형성할 수도 있다. GPU (12) 가 CPU (6) 로부터 지령을 수신할 때, 그래픽스 프로세싱 파이프라인은 그 지령을 디코딩하고 그 지령에 규정된 동작을 수행하도록 그래픽스 프로세싱 파이프라인 (24) 을 구성하기 위해 GPU (12) 의 셰이더 프로세서들 상에서 실행할 수도 있다. 예를 들어, 그래픽스 프로세싱 파이프라인에서의 입력-어셈블러는 그래픽스 프로세싱 파이프라인에서 다른 그래픽스 파이프라인 스테이지들에 의한 사용을 위해 프리미티브 데이터를 판독하고 그 데이터를 프리미티브들로 조립할 수도 있다. 규정된 동작들을 수행한 후, 그래픽스 프로세싱 파이프라인은 렌더링된 데이터를 디스플레이 프로세서 (14) 에 액세스가능한 출력 버퍼 (16) 로 출력한다. 일부 예들에서, 그래픽스 프로세싱 파이프라인은 고정 함수 로직을 포함하거나 및/또는 프로그래밍가능 셰이더 코어들 상에서 실행될 수도 있다.
출력 버퍼 (16) 는 GPU (12) 에 대한 목적지 픽셀들을 저장한다. 각각의 목적지 픽셀은 고유한 스크린 픽셀 로케이션과 연관될 수도 있다. 이와 유사하게, 출력 버퍼 (17) 는 예에 따라서 비디오 코덱 (7) 에 대한 목적지 픽셀들을 저장할 수도 있다. 출력 버퍼 (17) 는 비디오 코덱 (7) 과 연관된 프레임 버퍼로 간주될 수도 있다. 일부 예들에서, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 각각의 목적지 픽셀에 대한 칼라 성분들 및 목적지 알파 (alpha) 값을 저장할 수도 있다. 예를 들어, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 임의의 포맷에 따라서 픽셀 데이터를 저장할 수도 있다. 예를 들어, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 각각의 픽셀에 대해 적색, 녹색, 청색, 알파 (RGBA) 성분들을 저장할 수도 있으며, 여기서, "RGB" 성분들은 칼라 값들에 대응하며 "A" 성분은 목적지 알파 값에 대응한다. 다른 예로서, 출력 버퍼 (16) 및/또는 출력 버퍼 (17) 는 YCbCr 칼라 포맷, YUV 칼라 포맷, RGB 칼라 포맷에 따라서, 또는 임의의 다른 칼라 포맷에 따라서, 픽셀 데이터를 저장할 수도 있다. 출력 버퍼 (16) 및 시스템 메모리 (10) 는 별개의 메모리 유닛들인 것으로 예시되지만, 다른 예들에서, 출력 버퍼 (16) 는 시스템 메모리 (10) 의 일부일 수도 있다. 예를 들어, 출력 버퍼 (16) 는 시스템 메모리 (10) 내 메모리 공간에 할당될 수도 있다. 출력 버퍼 (16) 는 프레임 버퍼를 구성할 수도 있다. 또, 위에서 설명한 바와 같이, 출력 버퍼 (16) 는 또한 픽셀들 이외에 임의의 적합한 데이터를 저장가능할 수도 있다.
이와 유사하게, 출력 버퍼 (17) 및 시스템 메모리 (10) 는 별개의 메모리 유닛들인 것으로 예시되지만, 다른 예들에서, 출력 버퍼 (17) 는 시스템 메모리 (10) 의 일부일 수도 있다. 예를 들어, 출력 버퍼 (17) 는 시스템 메모리 (10) 내 메모리 공간에 할당될 수도 있다. 출력 버퍼 (17) 는 비디오 코덱 버퍼 또는 프레임 버퍼를 구성할 수도 있다. 또, 위에서 설명한 바와 같이, 출력 버퍼 (17) 는 또한 픽셀들 이외에 임의의 적합한 데이터를 저장가능할 수도 있다. 일부 예들에서, 출력 버퍼 (16) 및 출력 버퍼 (17) 는 별개의 메모리 유닛들인 것으로 예시되지만, 출력 버퍼 (16) 및 출력 버퍼 (17) 는 동일한 버퍼 또는 동일한 버퍼의 상이한 부분들일 수도 있다.
GPU (12) 는 일부 경우, 컴퓨팅 디바이스 (2) 의 마더보더에 통합될 수도 있다. 다른 경우, GPU (12) 는 컴퓨팅 디바이스 (2) 의 마더보더에서의 포트에 설치된 그래픽스 카드 상에 존재할 수도 있거나 또는 아니면, 컴퓨팅 디바이스 (2) 와 상호운용하도록 구성된 주변장치 디바이스 내에 통합될 수도 있다. 일부 예들에서, GPU (12) 는 시스템 온 칩 (SOC) 에서와 같이, CPU (6) 와의 온칩일 수도 있다. GPU (12) 는 하나 이상의 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그래밍가능 게이트 어레이들 (FPGAs), 산술 로직 유닛들 (ALUs), 디지털 신호 프로세서들 (DSPs), 이산 로직, 소프트웨어, 하드웨어, 펌웨어, 다른 등가의 통합 또는 이산 로직 회로부, 또는 이들의 임의의 조합들을 포함할 수도 있다. GPU (12) 는 또한 하나 이상의 프로세서 코어들을 포함할 수도 있으며, 따라서 GPU (12) 가 멀티-코어 프로세서로서 지칭될 수도 있다. 일부 예들에서, GPU (12) 는 GPU (12) 에 그래픽스 프로세싱에 적합한 대용량 병렬 프로세싱 능력들을 제공하는 통합 및/또는 이산 로직 회로부를 포함하는 특수화된 하드웨어일 수도 있다. 일부의 경우, GPU (12) 는 또한 범용 프로세싱 능력들을 포함할 수도 있으며, 범용 프로세싱 태스크들 (예컨대, 소위 "계산" 태스크들) 을 구현할 때 범용 GPU (GPGPU) 로서 지칭될 수도 있다.
일부 예들에서, 그래픽스 메모리 (20) 는 GPU (12) 의 일부일 수도 있다. 예들 들어, 그래픽스 메모리 (20) 는 GPU (12) 의 집적 회로 칩에 물리적으로 집적되는 온칩 메모리 또는 메모리일 수도 있다. 그래픽스 메모리 (20) 가 온칩이면, GPU (12) 는 시스템 버스를 통해서 시스템 메모리 (10) 로부터 값들을 판독하거나 그에 기록하는 것보다 더 빨리, 그래픽스 메모리 (20) 로부터 값들을 판독하고 그에 값들을 기록가능할 수도 있다. 따라서, GPU (12) 는 버스를 이용하지 않고 그래픽스 메모리 (20) 로부터 데이터를 판독하고 그래픽스 메모리 (14) 에 데이터를 기록할 수도 있다. 즉, GPU (12) 는 오프-칩 메모리 대신, 로컬 스토리지를 이용하여, 데이터를 로컬로 프로세싱할 수도 있다. 이러한 그래픽스 메모리 (20) 는 온칩 메모리로서 지칭될 수도 있다. 이것은 막대한 버스 트래픽 및 관련 대역폭에 대한 경쟁을 겪을 수도 있는, GPU (12) 가 버스를 통해서 데이터를 판독하고 기록할 필요성을 제거함으로써, GPU (12) 로 하여금 좀더 효율적인 방법으로 동작가능하게 한다. 그러나, 일부의 경우, GPU (12) 는 별개의 메모리를 포함하지 않고, 대신 버스를 통해서 시스템 메모리 (10) 를 이용할 수도 있다. 그래픽스 메모리 (20) 는 예컨대, 랜덤 액세스 메모리 (RAM), 정적 RAM (SRAM), 동적 RAM (DRAM), 소거가능한 프로그래밍가능 ROM (EPROM), 전기적 소거가능 프로그래밍가능 ROM (EEPROM), 플래시 메모리, 자기 데이터 매체들 또는 광학 저장 매체들과 같은, 하나 이상의 휘발성 또는 비-휘발성 메모리 또는 저장 디바이스들을 포함할 수도 있다.
일부 예들에서, GPU (12) 는 완전히 형성된 이미지를 시스템 메모리 (10) 에 저장할 수도 있다. 디스플레이 프로세서 (14) 는 시스템 메모리 (10) 및/또는 출력 버퍼 (16) 로부터 이미지를 취출하고 디스플레이 (8) 의 픽셀들로 하여금 이미지를 디스플레이하기 위해 조사하도록 하는 값들을 출력할 수도 있다. 일부 예들에서, 디스플레이 프로세서 (14) 는 스케일링, 회전, 블렌딩 (blending), 및 합성 (compositing) 을 포함하여, 디스플레이될 데이터에 대해 2D 동작들을 수행하도록 구성될 수도 있다. 디스플레이 (8) 는 GPU (12) 에 의해 발생되는 이미지 콘텐츠를 디스플레이하는 컴퓨팅 디바이스 (2) 의 디스플레이일 수도 있다. 디스플레이 (8) 는 액정 디스플레이 (LCD), 유기 발광 다이오드 디스플레이 (OLED), 음극선관 (CRT) 디스플레이, 플라즈마 디스플레이, 또는 다른 유형의 디스플레이 디바이스일 수도 있다. 일부 예들에서, 디스플레이 (8) 는 컴퓨팅 디바이스 (2) 내에 통합될 수도 있다. 예를 들어, 디스플레이 (8) 는 모바일 전화기의 스크린일 수도 있다. 다른 예들에서, 디스플레이 (8) 는 유선 또는 무선 통신 링크를 통해서 컴퓨팅 디바이스 (2) 에 커플링된 독립형 디바이스일 수도 있다. 예를 들어, 디스플레이 (8) 는 케이블 또는 무선 링크를 통해서 컴퓨팅 디바이스 (예컨대, 개인용 컴퓨터, 모바일 컴퓨터, 태블릿, 모바일 폰, 등) 에 접속된 컴퓨터 모니터 또는 평판 패널 디스플레이일 수도 있다.
CPU (6) 는 컴퓨팅 디바이스 (2) 내 실행을 위한 명령들을 프로세싱한다. CPU (6) 는 GPU (12) 에 의한 실행을 위해 드라이버 (예컨대, CPU (6) 에 의해 실행되는 소프트웨어에서 구현될 수도 있는 GPU 드라이버 (22)) 를 이용하여 지령 스트림을 발생시킬 수도 있다. 즉, CPU (6) 는 GPU (12) 에 의해 수행될 동작들의 세트를 정의하는 지령 스트림을 발생시킬 수도 있다.
CPU (6) 는 가시적인 콘텐츠가 디스플레이 (8) 상에 디스플레이되게 하는, GPU (12) 에 의해 실행될 지령 스트림을 발생시킬 수도 있다. 예를 들어, CPU (6) 는 디스플레이 (8) 에서의 디스플레이를 위해 출력 버퍼 (16) 에 저장될 수도 있는 그래픽스 데이터를 렌더링하라는 GPU (12) 에 대한 명령들을 제공하는 지령 스트림을 발생시킬 수도 있다. 이 예에서, CPU (6) 는 그래픽스 렌더링 파이프라인에 의해 실행되는 지령 스트림을 발생시킬 수도 있다.
추가적으로 또는 대안적으로, CPU (6) 는 GPU (12) 로 하여금 다른 동작들을 수행하게 하는, GPU (12) 에 의해 실행될 지령 스트림을 발생시킬 수도 있다. 예를 들어, 일부 경우, CPU (6) 는 GPU (12) 를 범용 그래픽 프로세싱 유닛 (GPGPU) 으로서 이용하기 위한 지령 스트림을 발생시키는 호스트 프로세서일 수도 있다. 이러한 방법으로, GPU (12) 는 CPU (6) 에 대한 2차 프로세서로서 역할을 할 수도 있다. 예를 들어, GPU (12) 는 CPU (6) 에 의해 전통적으로 수행되는 다양한 범용 컴퓨팅 기능들을 수행할 수도 있다. 예들은 비디오 디코딩 및 사후 프로세싱 (예컨대, 디-블록킹, 잡음 감소, 칼라 보정, 및 기타 등등) 및 다른 애플리케이션 특정의 이미지 프로세싱 기능들 (예컨대, 안면의 검출/인식, 패턴 인식, 웨이블릿 변환들, 및 기타 등등) 을 포함한, 다양한 이미지 프로세싱 기능들을 포함한다.
일부 예들에서, GPU (12) 는 이러한 GPGPU 애플리케이션들을 실행하기 위해 CPU (6) 와 협동할 수도 있다. 예를 들어, CPU (6) 는 GPU (12) 에 의한 실행을 위한 지령 스트림을 GPU (12) 에 제공함으로써 어떤 기능들을 GPU (12) 로 오프로드할 수도 있다. 이 예에서, CPU (6) 는 호스트 프로세서일 수도 있으며, GPU (12) 는 2차 프로세서일 수도 있다. CPU (6) 는 GPU (12) 와 통신하여, GPU (12) 로 하여금 GPU 드라이버 (22) 를 통해서 GPGPU 애플리케이션들을 실행하도록 지시할 수도 있다.
GPU 드라이버 (22) 는 GPU (12) 로, GPU (12) 의 셰이더 유닛들에 의해 실행될 수도 있는 하나 이상의 지령 스트림들을 통신할 수도 있다. GPU (12) 는 GPU 드라이버 (22) 로부터 하나 이상의 지령 스트림들을 수신할 수도 있는 지령 프로세서 (24) 를 포함할 수도 있다. 지령 프로세서 (24) 는 하나 이상의 지령 스트림들을 수신하여 프로세싱하도록 구성된 하드웨어와 소프트웨어의 임의의 조합일 수도 있다. 이와 같이, 지령 프로세서 (24) 는 스트림 프로세서이다. 일부 예들에서, 지령 프로세서 (24) 대신, 임의의 다른 적합한 스트림 프로세서가 하나 이상의 지령 스트림들을 수신하여 프로세싱하기 위해 그리고 본원에서 개시된 기법들을 수행하기 위해, 지령 프로세서 (24) 대신 사용가능할 수도 있다. 일 예에서, 지령 프로세서 (24) 는 하드웨어 프로세서일 수도 있다. 도 5 에 나타낸 예에서, 지령 프로세서 (24) 는 GPU (12) 에 포함될 수도 있다. 다른 예들에서, 지령 프로세서 (24) 는 CPU (6) 및 GPU (12) 로부터 분리된 유닛일 수도 있다. 지령 프로세서 (24) 는 또한 지령들 및/또는 동작들의 스트림들을 수신하도록 구성된 임의의 프로세서일 수도 있다는 것을 표시하기 위해 스트림 프로세서, 지령/스트림 프로세서, 및 기타 등등으로서 알려져 있을 수도 있다.
지령 프로세서 (24) 는 GPU (12) 에 의한 실행을 위해 하나 이상의 지령 스트림들에 포함된 동작들을 스케쥴링하는 것을 포함하여, 하나 이상의 지령 스트림들을 프로세싱할 수도 있다. 구체적으로 설명하면, 지령 프로세서 (24) 는 셰이더 유닛들 (46) 에 의한 실행을 위해 하나 이상의 지령 스트림들을 프로세싱하여 하나 이상의 지령 스트림들에서의 동작들을 스케쥴링할 수도 있다. 동작 시, GPU 드라이버 (22) 는 지령 프로세서 (24) 로 GPU (12) 에 의해 실행될 일련의 동작들을 포함하는 지령 스트림을 전송할 수도 있다. 지령 프로세서 (24) 는 지령 스트림을 포함하는 동작들의 스트림을 수신할 수도 있으며, 지령 스트림의 동작들을 지령 스트림에서의 동작들의 순서에 기초하여 순차적으로 프로세싱할 수도 있으며, GPU (12) 의 셰이더 유닛들의 셰이더 프로세서들에 의한 실행을 위해 지령 스트림에서의 동작들을 스케쥴링할 수도 있다.
도 6 은 본원에서 설명하는 하나 이상의 기법들에 따른, 윤곽선 아티팩트들을 감소시키거나 또는 제거하는 일 예를 나타낸다. 구체적으로 설명하면, 도 6 은 (LUT 입력에 반대로, 또는 LUT 입력에 대해) LUT 입력에서의 변화 (예컨대, 디더 잡음) 를 추가하는 컨셉 및 이것이 어떻게 LUT 출력으로 변환될 수 있는지를 예시한다. 나타낸 예에서, LUT 입력은 3 (또는, 2진 표기로 011) 의 값을 가지는 3-비트 입력이다. 프로세싱 유닛 (1) 은 플러스 및/또는 마이너스 A (예컨대, +/- A, 여기서, A 는 0 이상의 임의의 값일 수도 있다) 의 진폭을 가지는 디더 잡음을 하나 이상의 LUT 입력 값들에 적용하도록 구성될 수도 있다. 예에 따라서, 변수 A 는 진폭, 디더 강도 진폭, 디더 진폭, 디더 강도, 잡음 값, 디더 잡음, 디더 잡음 진폭 등으로서 지칭될 수도 있다.
일부 예들에서, A 는 다음 수식: C*NOISE_TABLE[m] 의 최대 및 최소 값들과 동일할 수도 있으며, 여기서, C 는 임의의 수식의 임의의 값 또는 결과이다.
다른 예들에서, A 는 다음 수식: (B^(N-Z))*(NOISE_TABLE[m]) 의 최대 및 최소 값들과 동일할 수도 있으며, 여기서, NOISE_TABLE 는 복수의 상이한 엔트리들을 포함하는 어레이일 수도 있으며, m 은 정수이고 NOISE_TABLE 에서의 어레이 로케이션을 가리킨다. NOISE_TABLE 엔트리들은 임의의 정수 값 또는 비-정수 값일 수도 있다. 일부 예들에서, NOISE_TABLE 는 RxR 어레이 또는 SxR 어레이일 수도 있으며, 여기서, R 및 S 는 양의 정수 값들이며, R 은 S 와 동일하지 않다. 일부 예들에서, NOISE_TABLE 의 모든 엔트리들 (즉, 엘리먼트들) 의 산술 평균은 -0.5 일 수도 있다. -0.5 가 0 에 가깝기 때문에, 디더 잡음이 출력 이미지에서 현저한 DC 시프트를 부여하지 않을 수도 있다. 다른 예들에서, NOISE_TABLE 의 모든 엔트리들 (즉, 엘리먼트들) 의 산술 평균은 -0.5 와는 상이한 (예컨대, 출력 이미지에서 현저한 DC 시프트를 부여하지 않을 수도 있는, 0 에 가까운 -0.5 보다 크거나 또는 작은) 값일 수도 있다.
예를 들어, NOISE_TABLE = [-2, -1, 1, 0] 이면, NOISE_TABLE[0]=-2, NOISE_TABLE[1]=-1, NOISE_TABLE[2]=1, 그리고 NOISE_TABLE[3]=0 이다. 이러한 예들에서, B 는 거듭제곱 베이스에 대한 변수일 수도 있다. 일부 예들에서, B 의 값은 임의의 양의 정수 값일 수도 있다. N 은 프로그래밍가능한 디더 강도 변수로서 간주될 수도 있으며, Z 는 임의의 양의 또는 음의 정수 또는 비-정수 값일 수도 있다. 마찬가지로, 변수 N 은 임의의 양 또는 음의 정수 또는 비-정수 값일 수도 있다. 이들 변수들의 각각의 값이 수식 B^(N-Z) 의 결과를 변화시킬 수도 있기 때문에, 각각은 프로그래밍가능한 디더 강도 변수로서 지칭될 수도 있다. NOISE_TABLE = [-2, -1, 1, 0] 인 예에서, 진폭은 (B^(N-Z))*(-2) 내지 (B^(N-Z))*(1) 의 범위일 수도 있다. 예를 들어, B=2, N=0, 그리고 Z=4 인 것으로 가정한다. 이 구체적인 예에서, A 는 -0.0625 와 0 의 2개의 중간 값들을 갖는, -0.125 내지 0.0625 의 범위일 수도 있다.
일부 예들에서, 프로세싱 유닛 (1) 은 B 및 Z 에 대한 디폴트 값들로 구성될 수도 있다. 예를 들어, B 에 대한 디폴트 값은 2 의 값일 수도 있으며, Z 에 대한 디폴트 값은 값 4 일 수도 있다. 이 예에서, A 는 2^(N-4) 와 동일할 수도 있으며, 여기서, N 은 프로그래밍가능한 디더 강도 변수이다. 그러나, 프로세싱 유닛 (1) 은 임의의 디폴트 값을 조정하도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 Z 를 디폴트 값으로부터 3 또는 5 의 값과 같은 다른 값으로 조정하도록 구성될 수도 있다. 이 예에서, A 는 2^(N-3) 또는 2^(N-5) 와 각각 동일할 수도 있다. 다른 예로서, 프로세싱 유닛 (1) 은 디폴트 값을 3 의 값과 같은 다른 값으로 조정하도록 B 를 구성될 수도 있다. 이 예에서, A 는 3^(N-4) 와 동일할 수도 있다. 하나 이상의 변수들 B, N, 및 Z 는 일부 예들에서, 프로세싱중인 콘텐츠 (예컨대, 이미지) 의 비트-심도 특성(들) 및/또는 프로세싱 파이프라인의 비트-심도에 기초할 수도 있다.
일부 예들에서, 단지 음의 디더링된 잡음이 적용될 수도 있으며, 따라서 디더 잡음은 플러스 및/또는 마이너스 A 의 진폭을 갖는다. 다른 예들에서, 단지 양의 디더 잡음이 적용될 수도 있으며, 따라서 디더 잡음은 플러스 및/또는 마이너스 A 의 진폭을 갖는다. 예를 들어, A 가 0.1 이면, 프로세싱 유닛 (1) 은 -0.1 내지 0.1 의 진폭을 가지는 디더 잡음을 적용하도록 구성될 수도 있다. 다른 예로서, A 가 2 이면, 프로세싱 유닛 (1) 은 -2 내지 2 를 가지는 디더 잡음을 적용하도록 구성될 수도 있다. 다른 예로서, A 가 4 이면, 프로세싱 유닛 (1) 은 프로세싱 유닛 (1) 이 단지 디더 잡음을 양 또는 음의 방향으로 적용하도록 구성된 예들에서, 0 내지 4 또는 -4 내지 0 의 진폭을 가지는 디더 잡음을 적용하도록 구성될 수도 있다. A 는 최소 및 최대 양쪽에 대해 동일한 값인 것으로 설명되었지만 (예컨대, A = 5 이면, 진폭은 -0.5 내지 0.5 일 수도 있다), 용어 +/-A 는 또한 최소 및 최대가 상이한 값들인 예들을 지칭할 수도 있다. 예를 들어, 진폭은 -0.5 내지 0.4375, -0.4375 내지 0.5, 또는 기타 등등의 범위일 수도 있다.
도 6 에 나타낸 예에서, A 는 0.5 의 값을 가지며, 이는 3 의 LUT 입력에 기초하여 2.5 로부터 3.5 까지 확장하는 수직 음영처리된 영역으로 도시된다 (즉, 3 마이너스 A (이 도시된 예에서는 0.5) 는 2.5 와 동일하며, 3 플러스 A (이 도시된 예에서는 0.5) 는 3.5 동일하다. 2.5 내지 3.5 의 범위는 입력 변화 범위, 디더링된 입력 변화 범위, 디더링된 LUT 입력 범위, LUT 입력 범위 등으로서 지칭될 수도 있다. 디더링된 입력 변화 범위는 [LUT 입력 값 - A, LUT 입력 값 + A] 로서 기술될 수도 있다. 단지 양의 진폭이 사용되는 예들에서, 디더링된 입력 변화 범위는 [LUT 입력 값, LUT 입력 값 + A] 로서 기술될 수도 있다. 단지 음의 진폭이 사용되는 예들에서, 디더링된 입력 변화 범위는 [LUT 입력 값 - A, LUT 입력 값] 으로서 기술될 수도 있다. LUT 입력 값의 디더링 이후, LUT 입력 값은 디더링된 입력 LUT 값으로서 지칭될 수도 있다.
일부 예들에서, A 의 값 (또는, 잡음 값들의 발생) 은 양자화기의 양자화 에러에 기초할 수도 있다. 이러한 예들에서, 양자화 에러는 양자화기의 일 예인 아날로그-대-디지털 변환기 (A/D 변환기) 의 양자화 에러를 지칭할 수도 있다. 예를 들어, A/D 변환기가 +/- 0.5 volts 의 양자화 에러를 가지면, 프로세싱 유닛 (1) 은 LUT 의 입력에 적용되는 디더 잡음이 +/-0.5 가 되도록 0.5 의 값을 이용할 수도 있다. 예를 들어, 도 6 은 일부 예들에서, 프로세싱 유닛 (1) 이 +/- 0.5 volts 의 양자화 에러에 기초하여 3 의 LUT 입력 값에 대해 LUT 의 입력에서 디더링하는 것을 도시할 수도 있다. 이러한 방법으로, 본원에서 설명되는 기법들은 A/D 변환기와 같은, 양자화기가 신호를 양자화함으로써 입력 신호의 실제 값 (따라서, 자연스러운 무작위화) 을 숨기기 때문에, 의도적인 무작위화로 현실을 모방하는 것을 도울 수도 있다. 따라서, 본원에서 설명된 바와 같이 디더 잡음을 적용하는 것은 LUT 입력 값에 맵핑되는 LUT 출력 값과 동일한 내삽된 LUT 출력 값을 초래하지 않을 (아마도 초래하지 않을) 수도 있지만, 복수의 LUT 값 입력들에 대해 본원에서 설명된 바와 같이 디더 잡음을 적용하는 것은 더욱 현실적인 출력 이미지를 초래할 수도 있다. 본원에서 설명되는 기법들은 하나 이상의 픽셀 입력 값들에 대응하는 하나 이상의 LUT 입력 값들에 적용될 수도 있지만, 본원에서 설명되는 기법들을 복수의 픽셀 입력 값들에 대응하는 복수의 LUT 입력 값들에 적용하는 것은 픽셀 출력 값들 (즉, LUT 출력 값들) 이 합계해서 보여질 때 윤곽선 아티팩트들을 감소시키거나 또는 방지하는 것과 같은, 더욱 현저한 효과들을 제공할 수도 있다.
일부 예들에서, 본원에서 설명되는 기법들은 윤곽선 아티팩트들을 제거하거나 또는 방지하기 보다는 고의로 도입하기 위해 적용될 수도 있다. 프로세싱 유닛 (1) 은 이미지 프로세싱 동안 디더 강도를 윤곽선 아티팩트들을 도입하기에 충분히 높게 조정하도록 구성될 수도 있다. 일부 예들에서, 윤곽선 아티팩트들의 도입은 이러한 아티팩트들이 예술적인 것 또는 기타 등등으로 간주될 수도 있기 때문에, 허용가능하거나 또는 심지어 바람직한 것으로 간주될 수도 있다. 프로세싱 유닛 (1) 은 (1) 프로세싱 동안 이미지에의 윤곽선 아티팩트들의 도입을 감소시키거나 또는 방지하거나 및/또는 이미지 프로세싱 동안 이미지에서 윤곽선 아티팩트들을 제거하거나, 및/또는 (2) 이미지 프로세싱 동안 윤곽선 아티팩트들을 증가시키거나 또는 도입하도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 윤곽선 아티팩트들을 제거하기 위해 복수의 픽셀들을 포함하는 이미지의 제 1 영역을 프로세싱하고, 윤곽선 아티팩트들을 추가하기 위해 복수의 픽셀들을 포함하는 이미지의 제 2 영역을 프로세싱하도록 구성될 수도 있다. 다른 예로서, 프로세싱 유닛 (1) 은 이미지 프로세싱 동안 이미지의 제 1 영역에 대한 윤곽선 아티팩트들의 도입을 제거하거나 또는 방지하도록 구성될 수도 있으며, 이미지 프로세싱 동안 이미지의 제 2 영역에 대한 윤곽선 아티팩트들을 제거하도록 구성될 수도 있다. 이 점에 있어서, 프로세싱 유닛 (1) 은 이미지의 하나 이상의 영역들을 하나 이상의 방법들로 프로세싱하도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 이미지가 하나 이상의 윤곽선 아티팩트들을 포함하는지 여부를 결정하도록 구성될 수도 있다. 프로세싱 유닛 (1) 은 하나 이상의 윤곽선 아티팩트들을 포함하도록 결정된 이미지의 하나 이상의 영역들을 식별하도록 구성될 수도 있다. 프로세싱 유닛 (1) 은 이미지 프로세싱 동안 이러한 아티팩트들을 포함하도록 결정된 이미지의 하나 이상의 영역들에서 임의의 윤곽선 아티팩트들을 제거하도록 구성될 수도 있으며, 이미지 프로세싱 동안 이미지의 나머지 부분에서 윤곽선 아티팩트들의 도입을 감소시키거나 또는 방지하도록 구성될 수도 있다.
일부 예들에서, 프로세싱 유닛 (1) 은 값들의 범위 내에서 LUT 출력 값을 내삽하도록 구성될 수도 있다. 값들의 범위는 디더링된 맵핑들 또는 이들의 서브세트, 예컨대, 도 6 에 나타낸 디더링된 맵핑들 또는 도 7 및 도 8 에 나타낸 서브세트들을 지칭할 수도 있다. 값들의 범위는 본원에서 설명되는 A 의 값에 기초할 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 값들의 범위 내에서 LUT 출력 값을 내삽하도록 구성될 수도 있으며, 여기서, 값들의 범위는 (1) 디더링될 LUT 입력 값에 근접한 LUT 입력 값의 제 1 값, (2) 디더링될 LUT 입력 값의 제 2 값, 및 (3) 이 예에서의 제 1 값과 제 2 값 사이의 하나 이상의 값들을 포함한다. 일부 예들에서, 이 예 및 후속하는 예들 중 임의의 예에서 제 1 값과 제 2 값 사이의 하나 이상의 값들은 하나 이상의 맵핑된 LUT 출력 값들, 하나 이상의 비-맵핑된 LUT 출력 값들, 하나 이상의 비-정수 LUT 출력 값들, 또는 임의의 이들의 조합들을 포함할 수도 있다.
다른 예에서, 프로세싱 유닛 (1) 은 값들의 범위 내에서 LUT 출력 값을 내삽하도록 구성될 수도 있으며, 여기서, 값들의 범위는 (1) 디더링될 LUT 입력 값에 근접하지 않는 LUT 입력 값의 제 1 값, (2) 디더링될 LUT 입력 값의 제 2 값, 및 (3) 이 예에서의 제 1 값과 제 2 값 사이의 하나 이상의 값들을 포함한다. 다른 예에서, 프로세싱 유닛 (1) 은 값들의 범위 내에서 LUT 출력 값을 내삽하도록 구성될 수도 있으며, 여기서, 값들의 범위는 (1) 디더링될 LUT 입력 값에 근접한 제 1 LUT 입력 값의 제 1 값, (2) 디더링될 LUT 입력 값에 근접한 제 2 LUT 입력 값의 제 2 값, 및 (3) 이 예에서의 제 1 값과 제 2 값 사이의 하나 이상의 값들을 포함한다. 다른 예에서, 프로세싱 유닛 (1) 은 값들의 범위 내에서 LUT 출력 값을 내삽하도록 구성될 수도 있으며, 여기서, 값들의 범위는 (1) 디더링될 LUT 입력 값에 근접하지 않고 그보다 작은 제 1 LUT 입력 값의 제 1 값, (2) 디더링될 LUT 입력 값에 근접하지 않고 그보다 큰 제 2 LUT 입력 값의 제 2 값, 및 (3) 이 예에서의 제 1 값과 제 2 값 사이의 하나 이상의 값들을 포함한다.
다른 예에서, 프로세싱 유닛 (1) 은 값들의 범위 내에서 LUT 출력 값을 내삽하도록 구성될 수도 있으며, 여기서, 값들의 범위는 (1) 디더링될 LUT 입력 값에 근접하고 그보다 작은 LUT 입력 값의 제 1 값, (2) 디더링될 LUT 입력 값에 근접하지 않고 그보다 큰 LUT 입력 값의 제 2 값, 및 (3) 이 예에서의 제 1 값과 제 2 값 사이의 하나 이상의 값들을 포함한다. 다른 예에서, 프로세싱 유닛 (1) 은 값들의 범위 내에서 LUT 출력 값을 내삽하도록 구성될 수도 있으며, 여기서, 값들의 범위는 (1) 디더링될 LUT 입력 값에 근접하고 그보다 큰 LUT 입력 값의 제 1 값, (2) 디더링될 LUT 입력 값에 근접하지 않고 그보다 작은 LUT 입력 값의 제 2 값, 및 (3) 이 예에서의 제 1 값과 제 2 값 사이의 하나 이상의 값들을 포함한다.
도 6 에 나타낸 특정의 예를 참조하면, 도 6 에 나타낸 LUT 는 8개의 가능한 입력 LUT 값들 (예컨대, LUT 에 입력될 수도 있는 3-비트 칼라 포맷인 8개의 가능한 픽셀 값들) 을 가능한 32 값들 (즉, 0 내지 31) 중 8개의 출력 LUT 값들에 맵핑한다. 도 6 은 3-비트 픽셀 입력 값을 5-비트 픽셀 입력 값에 맵핑하는 LUT 의 일 예이다. 도시된 예에서, 출력 LUT 값들의 일부는 하나 보다 많은 LUT 입력 값에 맵핑된다. 예를 들어, 도 6 에 나타낸 LUT 맵핑에 따라, [0, 1, 2, 3, 4, 5, 6, 7] 의 LUT 입력 값들은 [0, 0, 4, 16, 24, 28, 28, 28] 의 LUT 출력 값들에 각각 맵핑된다.
[2.5, 3.5] (즉, 2.5 내지 3.5) 의 디더링된 범위는 X-축으로부터 연장하는 수직 음영처리된 영역으로 도시된다. LUT 가 단지 선택 LUT 입력 값들을 선택 LUT 출력 값들에 맵핑하더라도, 프로세싱 유닛 (1) 은 내삽 (예컨대, 선형 내삽) 을 이용하여, 비-맵핑된 출력 LUT 값들 (예컨대, 맵핑된 출력 LUT 값과, 근접한 LUT 입력 값들 중 하나 또는 양쪽에 대응하는 출력 LUT 값(들) 사이의 중간 값들) 을 발생하도록 구성될 수도 있다. 예를 들어, LUT 입력 값을 디더링함이 없이, 프로세싱 유닛 (1) 은 LUT 입력 값을 프로세싱하여 16 의 LUT 출력 값을 발생 (예컨대, 출력) 하도록 구성될 수도 있다. 그러나, LUT 입력 값을 디더링함으로써, 프로세싱 유닛은 (3) 의 LUT 입력 값에 대해 2.5 내지 3.5 의 LUT 입력 범위를 프로세싱하여, 단지 16 의 단일 값 대신, 10 내지 20 (예컨대, 또한 [10, 20] 으로서 표현됨) 의 범위인 출력 변화를 초래하도록 구성될 수도 있다. 프로세싱 유닛 (1) 이 입력을 단일 입력으로부터 입력들의 범위 (예컨대, 2.5 내지 3.5) 로 증폭하였기 때문에, 16 의 정적 출력 LUT 값을 발생하는 대신, 10 내지 20 의 범위 중의 값이 3 의 LUT 입력 값에 대해 출력되도록, 3 의 LUT 입력 값에 대해, 가능한 출력 LUT 값들의 개수가 증가되었다.
일부 예들에서, 출력 값들의 내삽은 구분적 선형 맵핑 곡선의 그래디언트에 기초할 수도 있다. 예를 들어, 잡음 레벨은 구분적 선형 맵핑 곡선의 그래디언트에 따라서 적용되거나 또는 아니면 변조될 수도 있다. 도 6 은 이러한 내삽의 예를 도시한다. 2 와 3 의 LUT 입력 값들 사이의 점선은 하나의 구분적 선형 맵핑 곡선이며, 3 과 4 의 LUT 입력 값들 사이의 점선은 다른 구분적 선형 맵핑 곡선이다. 구분적 선형 맵핑 곡선의 그래디언트는 3 내지 3.5 인 경우보다는 2.5 내지 3 의 LUT 입력 범위인 경우에 더 가파르다. 그 결과, 일부 예들에서, 더 가파른 그래디언트는 덜 경사진 구분적 곡선들보다, 프로세싱 유닛 (1) 에 의해 발생될 더 많은 내삽된 값들에 상관될 수도 있다. 도 6 의 예에서, 이것은 (더 큰 구분적 그래디언트를 가지는) 2.5 내지 3 의 LUT 입력 범위에 대해 10 내지 16 의 범위인 가능한 LUT 출력 값들, 및 (더 적은 구분적 그래디언트를 가지는) 3 내지 3.5 의 LUT 입력 범위에 대해 16 내지 20 의 범위인 가능한 LUT 출력 값들을 갖는 경우이다.
일부 예들에서, LUT 입력 값과 근접한 LUT 입력 값 사이의 간극이 작으면, 잡음이 억제될 수도 있으며, 더 큰 간극들의 경우, 잡음은 증폭될 것이다. 도 6 은 이를, 3 내지 3.5 의 LUT 입력 범위에 대해 16 내지 20 의 범위인 출력 LUT 값들로 나타낸 바와 같이 잡음이 억제되고 2.5 내지 3 의 LUT 입력 범위에 대해 10 내지 16 의 범위인 출력 LUT 값들로 나타낸 바와 같이 잡음이 증폭되는 것으로, 나타낸다. 이러한 방법으로, 프로세싱 유닛 (1) 은 임의의 LUT 출력 값 간극들에 비례하여 디더 잡음 레벨들을 자동적으로 조정하도록 구성될 수도 있다. 예를 들어, 더 큰 간극은, 간극이 디스플레이될 때 출력 이미지에서 덜 감지가능하거나 또는 감지불가능하도록, 간극을 "채우거나", 제거하거나, 또는 감소시키기 위해, 더 작은 간극에 비해 더 많은 내삽된 값들을 자동적으로 수신할 수도 있다. 다른 예로서, 더 작은 간극은, 간극이 디스플레이될 때 출력 이미지에서 덜 감지가능하거나 또는 감지불가능하도록, 간극을 "채우거나", 제거하거나, 또는 감소시키기 위해, 더 큰 간극에 비해 더 적은 내삽된 값들을 자동적으로 수신할 수도 있다.
일부 예들에서, 프로세싱 유닛 (1) 은 디더링된 LUT 입력 범위에 대응하는 하나 이상의 출력 값들을 내삽하도록 구성될 수도 있다. 일 예에서, 프로세싱 유닛 (1) 은 ni 의 잡음 값 (예컨대, A 의 최소 값, A 의 최대 값, 또는 최소 값과 최대 값 사이의 A 의 임의의 중간 값과 같은, 위에서 설명된 변수 A 의 특정의 값) 을 발생시키도록 구성될 수도 있다. 잡음 값 ni 는 무작위 잡음 값 또는 비-무작위 잡음 값일 수도 있다. 잡음 값 ni 는 일부 프로그래밍가능 범위, 예컨대, +/- k (예컨대, +/- 0.5, +/- 1, -0.5 내지 0.75, -0.5 내지 0.4375, 등과 같은, 위에서 설명한 바와 같은 변수 A 의 최소 및 최대) 내에서 발생된 무작위 잡음 값 또는 비-무작위 잡음 값일 수도 있다. 잡음 값 ni 는 하나 이상의 소수점 이하의 자릿수들을 포함할 수도 있다. 프로세싱 유닛 (1) 에 의해 발생된 ni 의 값이 음이면, 프로세싱 유닛은 하측 내삽을 수행하도록 구성될 수도 있다. 프로세싱 유닛 (1) 에 의해 발생된 ni 의 값이 양이면, 프로세싱 유닛은 상측 내삽을 수행하도록 구성될 수도 있다.
일부 예들에서, 프로세싱 유닛 (1) 은 순서화된 디더를 이용하여 잡음 값 ni 를 발생시키도록 구성될 수도 있다. 순서화된 디더 (예컨대, 공간 디더) 는 정적 입력 (예컨대, 비디오 입력에서 일시 중지되거나 또는 반복하는 이미지 상의 고정된 잡음 패턴) 에 대해 정적일 수도 있다. 디더 값은 픽셀 위치에 의존할 수도 있으며, 시간적으로 변하는 성분을 갖지 않을 수도 있으며, 이는 예를 들어, 정적 비디오 상에서 플리커를 방지할 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 잡음 값이 주어진 픽셀 위치에 대해 시간에 따라 변하도록 (예컨대, 시간 디더링하도록) 잡음 값 ni 를 발생시키도록 구성될 수도 있다.
순서화된 디더를 참조하면, 프로세싱 유닛 (1) 은 하나 이상의 LUT 입력 값들이 연관되는 픽셀의 위치에 기초하여 잡음 값 ni 를 결정하도록 구성될 수도 있다. 예를 들어, RGB 칼라 포맷된 픽셀은 단일 픽셀 위치와 연관된 3개의 LUT 입력 값들을 (각각의 칼라 채널에 대해 하나씩) 가질 것이다.
일부 예들에서, 프로세싱 유닛 (1) 은 픽셀 위치에 기초하여 잡음 값을 계산하도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 다음과 같이, 위치 (x, y) 에서의 픽셀에 기초하여 ni 의 잡음 값을 계산하도록 구성될 수도 있으며: ni(x,y) = 2N-4(NOISE_TABLE[m]), 여기서,
Figure pct00001
, 0 ≤ m ≤ 15 이며, NOISE_TABLE = [7, -1, 5, -3, -5, 3, -7, 1, 4, -4, 6, -2, -8, 0, -6, 2] 이다.
이 수식은 A = 2^(N-4) 인 점에서 예시적이다. 예를 들어, 이 수식은 ni(x,y) = A*NOISE_TABLE[m] 로서 단순화될 수도 있으며, 여기서, A 는 본원에서 설명되는 디더 강도 진폭에 대한 변수일 수도 있다. 앞에서 설명한 바와 같이, A 는 일부 예들에서, ni(x,y) = (B^(N-Z))*NOISE_TABLE[m]) 이 되도록, B^(N-Z) 와 동일할 수도 있다. 또한, 다른 예들에서, NOISE_TABLE 값들은 어레이로 나타낸 (위에서 래스터 스캔 순서로 나타낸) 것과는 상이할 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 픽셀 위치와 독립적으로 잡음 값을 계산하도록 구성될 수도 있다.
ni(x,y) 수식은 모듈로 피연산자들에 의해 초래되는 NOISE_TABLE 인덱싱의 주기적인 반복으로 인해, 프로세싱될 이미지 전체에 걸쳐서 타일링된 4x4 잡음 패턴 매트릭스 (또는, 어레이) 로 변환된다. 다른 예들에서, 상기 수식에서의 NOISE_TABLE 인덱싱의 주기적인 반복은 모듈로 피연산자들을 이용하는 것과는 상이한 기법을 이용하여 구현될 수도 있다. 상기 수식에서, 변수 N 은 프로그래밍가능한 디더 강도이며, 프로세싱 유닛 (1) 이 디더를 증폭하도록 (또는, 약화시키도록) 구성될 수 있게 한다. 일부 예들에서, N 은 프로세싱중인 콘텐츠 (예컨대, 이미지) 의 비트-심도 특성(들) 및/또는 프로세싱 파이프라인의 비트-심도에 기초할 수도 있다. 일부 예들에서, N 은 A (예컨대, 진폭과 관련하여 본원에서 지칭되는 변수 A) 를 2 의 거듭제곱의 스텝들로 제어할 수도 있다. 예를 들어, N=0, B=2, 그리고 Z=4 일 때, 잡음 테이블 (또한, NOISE_TABLE 로 서 지칭됨) 에서의 하나 이상의 엔트리들 (예컨대, 모든 엔트리들) 은 2^(0-4) 로 곱해지며, 이는 1/16 과 같은 2^-4 또는 아니면 1/(2^4) 이 된다. 따라서, 이 예에서, NOISE_TABLE 에서의 하나 이상의 값들 (예컨대, 모든 값들) 이 -0.5 (예컨대, -8 에 1/16 을 곱한 최저 잡음 테이블 엔트리) 로부터 0.4375 (예컨대, 7 에 1/16 을 곱한 최고 잡음 테이블 엔트리) 까지의 범위인 디더 잡음 진폭을 효과적으로 제공하는 (1/16) 로 곱해질 수도 있다. 다른 예로서, N=1, B=2, 그리고 Z=4 일 때, 잡음 테이블 (즉, 잡음 테이블에서의 하나 이상의 엔트리들) 은 1/8 과 동일한 2^(1-4) 로 곱해진다. 따라서, 이 예에서는, NOISE_TABLE 에서의 하나 이상의 값들 (예컨대, 모든 값들) 이 -1.0 (예컨대, -8 에 1/8 로 곱한 최저 잡음 테이블 엔트리) 으로부터 0.875 (예컨대, 7 에 1/16 로 곱한 최고 잡음 테이블 엔트리) 까지의 범위인 디더 잡음 진폭을 효과적으로 제공하는 (1/8) 로 곱해질 수도 있다.
공간적으로, 프로세싱 유닛 (1) 에 의해 발생될 수도 있는 잡음은 4x4 매트릭스 패턴의 규칙적인 정사각형 그리드 타일링일 수도 있다. 위에 도시된 예시적인 NOISE_TABLE 은 4x4 매트릭스의 래스터 스캐닝된 선형 편성이다. 다른 예들에서, 매트릭스는 4x4 매트릭스보다 더 작거나 또는 클 수도 있다 (예컨대, 2x2, 8x8, 등).
상기 수식은 모듈로 피연산자를 포함한다. 다음은 모듈로 피연산자의 예들을 포함한다: 0 mod 4 = 0, 1 mod 4 = 1, 2 mod 4 = 2, 3 mod 4 = 3, 4 mod 4 = 0, 5 mod 4 = 1, 6 mod 4 = 2, 7 mod 4 = 3, 8 mod 4 = 0, 9 mod 4 = 1, 10 mod 4 = 2, 11 mod 4 = 3, 12 mod 4 = 0, 13 mod 4 = 1, 14 mod 4 = 2, 등. 예를 들어, (x mod 4) 연산을 (0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (5, 0), (6, 0), (7, 0), (8,0), 및 (9, 0) 의 예시적인 픽셀 위치들에 적용하는 것은 예시적인 픽셀 위치들의 x-좌표들에 대해 0, 1, 2, 3, 1, 2, 3, 0, 및 1 의 시퀀스를 각각 초래할 것이다. 이와 유사하게, (y mod 4) 연산을 동일한 예시적인 픽셀 위치들에 적용하는 것은 이들 예시적인 픽셀 위치들의 y-좌표들에 대해 0, 0, 0, 0, 0, 0, 0, 0, 0, 및 0 의 시퀀스를 초래할 것이다.
다른 예로서, (y mod 4) 연산을 (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (0, 7), (0, 8), (0, 9) 의 예시적인 픽셀 위치들에 적용하는 것은 예시적인 픽셀 위치들의 y-좌표들에 대해 0, 1, 2, 3, 1, 2, 3, 0, 및 1 의 시퀀스를 각각 초래할 것이다. 이와 유사하게, (x mod 4) 연산을 이 예시적인 픽셀 위치 세트에 적용하는 것은 이들 예시적인 픽셀 위치들의 x-좌표들에 대해 0, 0, 0, 0, 0, 0, 0, 0, 0, 및 0 의 시퀀스를 초래할 것이다.
프로세싱 유닛 (1) 이 2x2, 4x4, 8x8 또는 MXM NOISE_TABLE 매트릭스를 발생시키는데 이용될 수도 있는 시드 매트릭스 (및 위에서 설명된 NOISE_TABLE 엔트리들) 의 유도가 아래에 설명되며, 여기서, M 은 2 의 임의의 정수 거듭제곱이다. 다른 예들에서, 프로세싱 유닛 (1) 은 아래에서 설명되는 기법과는 상이한 시드 매트릭스 및 NOISE_TABLE 엔트리들을 유도할 수도 있다. 본 개시물은 잡음 테이블 (예컨대, NOISE_TABLE) 의 사용을 설명하지만, 프로세싱 유닛 (1) 이 잡음 테이블을 이용하여 본 개시물의 하나 이상의 기법들을 수행하도록 구성될 수도 있을 알 수 있다. 예를 들어, 프로세싱 유닛 (1) 은 상이한 데이터 구조 또는 상이한 알고리즘을 이용하여 본원에서 설명하는 하나 이상의 기법들을 수행하도록 구성될 수도 있다.
NOISE_TABLE 의 값들은 프로세싱 유닛 (1) 에 의해 Bayer 의 순서화된 디더 매트릭스들로부터 유도될 수도 있다. 프로세싱 유닛 (1) 은 다음 기본적인 2x2 매트릭스로 NOISE_TABLE 의 계산을 시작할 수도 있다:
Figure pct00002
2x2 매트릭스는 다음 재귀 수식 (recursion equation) 을 이용하여 예를 들어, 4x4 매트릭스 (예컨대, D4), 8x8 매트릭스 (예컨대, D8), 및 기타 등등 (예컨대, Dn 으로 표시된 nxn 매트릭스) 까지 증가될 수도 있다:
Figure pct00003
상기 수식을 이용하여, 프로세싱 유닛 (1) 은 4x4 매트릭스 D4 를 발생할 수도 있다. 상기 수식에서, Un 은 모두 1들로 이루어지는 사이즈 nxn 의 단위 매트릭스이다. 예를 들어, [5, 5, 5, 5] (래스터 스캔 순서로 나타낸 값들) 의 2x2 매트릭스는 또한 5*U2 로서 표현될 수도 있다. 상기 수식에서, D2(a,b)Un/2 은 (로우 a, 칼럼 b) 에서의 D2 의 값에 단위 매트릭스 Un/2 로 곱한 것을 의미하며, 여기서, 단위 매트릭스의 사이즈 뿐만 아니라 출력 매트릭스 (즉, Dn) 의 사이즈는 n 의 값에 의존한다. 따라서, D4 를 계산하기 위해, 상기 수식은 다음과 같이 된다:
Figure pct00004
상기 D4 에 대한 수식은 다음과 같이 간단하게 된다:
Figure pct00005
따라서, 상기 수식은 다음과 같이 추가로 간단하게 된다:
Figure pct00006
이 수식에 의하면, D4 는 다음 4x4 매트릭스와 동일하다:
Figure pct00007
프로세싱 유닛 (1) 은 다음과 같이 사이즈가 4x4 인 최종 매트릭스의 일 예를 발생하기 위해 (이 예에서, (120/16) 이며, 8 의 값으로 반올림될 수도 있는) D4 의 평균을 감산함으로써 D4 를 수정할 수도 있다:
Figure pct00008
예를 들어, 평균이 0 이 되거나 또는 0 에 가깝게 되도록 평균이 D4 매트릭스 값들로부터 감산될 수도 있으며, 이는 [0, x] 대신 [-x/2, x/2] 의 범위를 가지는 잡음을 생성할 수도 있다. 나타낸 D4 의 예에서, D4 의 모든 엘리먼트들의 산술 평균은 120 을 16 으로 나눈 값이며, 7.5 과 동일하다. 설명하는 바와 같이, 조정된 D4 매트릭스는 4x4 잡음 테이블의 일 예이다. 예를 들어, 나타낸 예에서, 평균은 8 로 절상되었다. 그러나, 다른 예들에서, 임의의 Dn 매트릭스의 평균은 절상 대신, 절하될 수도 있다 (예컨대, 상기 예에서 D4 의 평균은 7 로 절하될 수도 있다). 다른 예들에서, 임의의 Dn 매트릭스의 평균은 평균의 값 자체에 비해 근접한 또는 비-근접한 낮은 정수와, 근접한 또는 비-근접한 높은 정수 사이의 임의의 값에 무작위로 또는 비-무작위로 할당될 수도 있다 (예컨대, D4 의 평균은 상기 예에서 평균이 7.5 이므로 7 과 8 사이의 임의의 값으로 할당될 수도 있다). 이해의 목적들을 위해, 도 9 는 일반적으로 이용되는 Octave 또는 MATLAB 수치 분석 소프트웨어 패키지들에서 상기 수식을 이용한 NOISE_TABLE 의 계산을 나타낸다. 프로세싱 유닛 (1) 은 본 개시물 전체에 걸쳐서 설명된 임의의 기능을 수행하거나 또는 아니면 구현하도록 구성될 수도 있음을 알 수 있다.
프로세싱 유닛 (1) 은 일부 예들에서 NOISE_TABLE 을 발생시키거나, 또는 임의의 수식을 수행하거나 또는 아니면 계산하도록 구성되는 것으로 본원에서 설명되었지만, 프로세싱 유닛 (1) 은 본원에서 설명되는 NOISE_TABLE 또는 임의의 다른 NOISE_TABLE 로 사전-로드되도록 구성될 수도 있다. 이와 유사하게, 프로세싱 유닛 (1) 은 본원에서 설명되는 임의의 정보로 사전-로드되도록 구성될 수도 있다. 예를 들어, 임의의 사전-로드되는 정보는 프로세싱 유닛 (1) 의 내부 메모리 (5) 에 저장될 수도 있다. 다른 예들에서, 임의의 사전-로드되는 정보는 프로세싱 유닛 (1) 에 액세스가능한 시스템 메모리 (10) 에 저장될 수도 있다.
조정된 Dn (즉, 잡음 테이블로서 또한 지칭될 수도 있는, 매트릭스의 평균을 낮추기 위해, 각각의 엘리먼트로부터 평균 또는 어떤 다른 값이 감산된 이후의 Dn 매트릭스) 을 참조하면, 모든 엘리먼트들의 산술 평균은 0, 또는 0 에 가까운 임의의 값 (예컨대, -1 과 1 사이의 임의의 값) 일 수도 있다. 예를 들어, 상기 예시적인 조정된 D4 (또한, 위에서 설명된 예시적인 NOISE_TABLE) 를 참조하면, 모든 엘리먼트들의 산술 평균은 -0.5 이다. -0.5 가 0 에 가깝기 때문에, 디더 잡음이 명도 오프셋들 또는 다른 이미지 프로세싱 아티팩트들을 그렇지 않으면 초래할 출력 이미지에서의 현저한 DC 시프트를 부여하지 않을 수도 있다. 일부 예들에서, 조정된 Dn (예컨대, NOISE_TABLE) 의 칼럼들의 모두는 또한 0, 또는 0 에 가까운 임의의 값 (예컨대, -1 과 1 사이의 임의의 값) 의 평균을 가질 수도 있다. 예를 들어, 상기 예시적인 조정된 D4 (또한, 위에서 설명된 예시적인 NOISE_TABLE) 를 참조하면, 각각의 칼럼의 산술 평균은 0 에 가까운 -0.5 이며, 이는 디더 잡음이 명도 오프셋들을 그렇지 않으면 초래할 출력 이미지에서의 현저한 DC 시프트를 부여하지 않을 수도 있다는 것을 의미한다.
도 7 은 하측 내삽의 일 예에 따른 LUT 출력 값 내삽의 일 예를 나타낸다. 하측 내삽의 일 예에서, 프로세싱 유닛 (1) 은 이전 LUT 엔트리와 함께 입력 픽셀 값과 연관된 LUT 엔트리를 이용하도록 구성될 수도 있다. 프로세싱 유닛 (1) 은 2개의 지점들 (즉, LUT 에서의 현재의 LUT 입력 값 및 이전 LUT 입력 값) 을 이용하여, 디더링된 입력 범위 내에서 하나 이상의 내삽된 LUT 출력 값들을 계산하도록 구성될 수도 있다. 도 7 에 나타낸 예에서는, 하측 LUT 출력 값 내삽이 3 의 LUT 입력 값에 대해 도시된다. 도시된 예에서, 2 의 LUT 입력 값은 3 의 LUT 입력 값에 대한 이전 LUT 엔트리이다. 달리 말하면, LUT 입력 값 3 은 지점 0 (P0) 이며, 지점 1 (P1) 은 선형 내삽에 사용되는 LUT 에서의 이전 LUT 입력 값이다. P0 과 P1 을 연결하는 선은 중간 값들 (예컨대, 내삽된 LUT 출력 값들) 의 맵핑을 예시한다.
일부 예들에서, 프로세싱 유닛 (1) 은 다음과 같이 하측 내삽을 수행하도록 구성될 수도 있다:
Figure pct00009
상기 수식에서 제시된 값들은 다음과 같이 유도될 수도 있으며: P0 = (x0, y0) 및 P1 = (x1, y1), 여기서, y0 = LUT(x0) 그리고 y1 = LUT(x1) 이다. x = 입력 + ni 는, 디더 잡음이며, 여기서, x1 ≤ x ≤ x0 그리고 ni ≤ 0 이다. 앞에서 설명한 바와 같이, 변수 ni 는 일부 예들에서 변수 A 와 동일할 수도 있으며, 다른 예들에서는 A 에 대응하지 않을 수도 있다.
예를 들어, 프로세싱 유닛 (1) 이 3 의 LUT 입력 값을 수신한다고 가정한다. 보통, 3 의 LUT 입력 값은 16 에 맵핑될 것이다. 그러나, 대신, 프로세싱 유닛 (1) 은 LUT 출력 값 내삽을 수행하도록 구성될 수도 있다. 이 예에서, 프로세싱 유닛 (1) 은 +/-0.5 의 무작위 잡음 값을 발생시키도록 구성될 수도 있다. 이 예에서는, 발생된 잡음 값이 -0.5 라고 가정한다. ni 는 값이 음이기 때문에, 프로세싱 유닛 (1) 은 하측 내삽을 수행하도록 구성될 수도 있다. LUT 입력 값이 3 과 동일한 경우, P0 = (3, 16), P1 = (2, 4), 그리고 x = 2.5 이다. 이 값들을 이용하여, 프로세싱 유닛 (1) 은 10 의 내삽된 LUT 출력 값을 계산하도록 구성될 수도 있다. 도 7 에 나타낸 바와 같이, 2.5 의 디더링된 LUT 입력 값은 10 의 내삽된 LUT 출력 값에 대응한다.
다른 예에서, 프로세싱 유닛 (1) 이 다시 3 의 LUT 입력 값을 수신한다고 가정한다. 프로세싱 유닛 (1) 은 +/-0.5 의 무작위 잡음 값을 발생시키도록 다시 구성될 수도 있다. 그러나, 이러한 특정의 예에 있어서는, 발생된 잡음 값이 하측 LUT 출력 값 내삽을 트리거하는 -0.3 이라고 가정한다. LUT 입력 값이 3 과 동일한 경우, P0 = (3, 16), P1 = (2, 4), 그리고 x = 2.7 이다. 이 값들을 이용하여, 프로세싱 유닛 (1) 은 12.4 의 내삽된 LUT 출력 값을 계산하도록 구성될 수도 있다. 그러나, 12.4 의 LUT 출력 값은 이용불가능하다. 따라서, 프로세싱 유닛 (1) 은 내삽된 LUT 출력 값을 가장 가까운 정수 값으로 반올림하되, 중간 (12.5) 에서의 임의의 값이 예에 따라서 절상되거나 (예컨대, 13) 또는 절하되도록 (예컨대, 12) 구성될 수도 있다. 이러한 예에서, 12.4 의 내삽된 LUT 출력 값은 12 로 절하될 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 내삽된 LUT 출력 값의 임의의 소수점 이하의 자릿수(들) 를 절사하도록 구성될 수도 있다. 예를 들어, 12.4 의 내삽된 LUT 출력 값은 12 로 절사될 수도 있으며, 12.8 의 내삽된 LUT 출력 값은 또한 12 로 절사될 수도 있다.
다른 예들에서, 프로세싱 유닛 (1) 은 LUT 출력 값의 분수 성분을 표현하기 위해 하나 이상의 최하위 비트들을 추가하도록 구성될 수도 있다. 예를 들어, 정수 값을 발생시키기 위해 내삽된 LUT 출력 값을 반올림하거나 또는 절사하는 대신, 프로세싱 유닛 (1) 은 내삽된 LUT 출력 값을 가장 가까운 가용 분수 정밀도 또는 어떤 분수 정밀도로 반올림하도록 구성될 수도 있다. 일 예로서, 프로세싱 유닛 (1) 은 분수 정밀도를 0.5 의 증분들로 추가하기 위해 하나의 최하위 비트를 추가하도록 구성될 수도 있다. 이러한 예에서, 프로세싱 유닛 (1) 은 12.4 를 011001 의 2진 표현을 초래하는 12.5 로 반올림하도록 구성될 수도 있으며, 여기서, 1 의 최하위 비트가 12.5 의 .5 를 나타낸다. 다른 예로서, 프로세싱 유닛 (1) 은 분수 정밀도를 0.25 의 증분들로 추가하기 위해 2개의 최하위 비트들을 추가하도록 구성될 수도 있다 (예컨대, 00 = 0, 01 = 0.25, 10 = 0.5, 및 11 = 0.75). 이러한 예에서, 프로세싱 유닛 (1) 은 12.4 를 0110010 의 2진 표현을 초래하는 12.5 로 반올림하도록 구성될 수도 있으며, 여기서, 10 의 2개의 최하위 비트들은 12.5 의 .5 를 나타낸다. 다른 예에서, 12.7 의 내삽된 LUT 출력 값은 0110011 의 2진 표현을 초래하는 12.75 로 반올림될 수도 있으며, 여기서, 11 의 2개의 최하위 비트들이 12.75 의 .75 를 나타낸다.
다른 예들에서, 프로세싱 유닛 (1) 은 2진 표현으로부터, 2진 표현으로, 또는 2진 표현에서, 각각, 하나 이상의 최하위 비트들을 추가하거나, 추가하지 않거나, 제거하거나, 제거하지 않거나, 또는 수정하도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 프로세싱 동안 어떤 지점들에서 프루닝 백 (prune back) 함으로써 워드길이를 제어 하에서 유지하도록 구성될 수도 있다.
도 8 은 상측 내삽의 일 예에 따른 LUT 출력 값 내삽의 일 예를 나타낸다. 상측 내삽의 일 예에서, 프로세싱 유닛 (1) 은 다음 LUT 엔트리와 함께 입력 픽셀 값과 연관된 LUT 엔트리를 이용하도록 구성될 수도 있다. 프로세싱 유닛 (1) 은 2개의 지점들 (즉, LUT 에서의 현재의 LUT 입력 값 및 다음 LUT 입력 값) 을 이용하여, 디더링된 입력 범위 내에서 하나 이상의 내삽된 LUT 출력 값들을 계산하도록 구성될 수도 있다. 도 8 에 나타낸 예에서는, 상측 LUT 출력 값 내삽이 3 의 LUT 입력 값에 대해 도시된다. 도시된 예에서, 4 의 LUT 입력 값은 3 의 LUT 입력 값에 대한 다음 LUT 엔트리이다. 달리 말하면, LUT 입력 값 3 은 지점 0 (P0) 이며, 지점 2 (P2) 는 선형 내삽에서 사용되는 LUT 에서의 다음 LUT 입력 값이다. P0 과 P2 를 연결하는 선은 중간 값들 (예컨대, 내삽된 LUT 출력 값들) 의 맵핑을 예시한다.
일부 예들에서, 프로세싱 유닛 (1) 은 다음과 같이 상측 내삽을 수행하도록 구성될 수도 있다:
Figure pct00010
상기 수식에서 제시된 값들은 다음과 같이 유도될 수도 있으며: P0 = (x0, y0) 및 P2 = (x2, y2), 여기서, y0 = LUT(x0) 그리고 y2 = LUT(x2) 이다. x = 입력 + ni 는, 디더 잡음이며, 여기서, x0 ≤ x ≤ x2 그리고 ni ≥ 0 이다.
예를 들어, 프로세싱 유닛 (1) 이 3 의 LUT 입력 값을 수신한다고 가정한다. 보통, 3 의 LUT 입력 값은 16 에 맵핑될 것이다. 대신, 그러나, 프로세싱 유닛 (1) 은 LUT 출력 값 내삽을 수행하도록 구성될 수도 있다. 이 예에서, 프로세싱 유닛 (1) 은 +/-0.5 의 무작위 잡음 값을 발생시키도록 구성될 수도 있다. 이 예에서는, 발생된 잡음 값이 0.5 라고 가정한다. ni 가 값이 양이기 때문에, 프로세싱 유닛 (1) 은 상측 내삽을 수행하도록 구성될 수도 있다. LUT 입력 값이 3 과 동일한 경우, P0 = (3, 16), P2 = (4, 24), 그리고 x = 3.5 이다. 이 값들을 이용하여, 프로세싱 유닛 (1) 은 20 의 내삽된 LUT 출력 값을 계산하도록 구성될 수도 있다. 도 8 에 나타낸 바와 같이, 3.5 의 디더링된 LUT 입력 값은 20 의 내삽된 LUT 출력 값에 대응한다.
다른 예에서, 프로세싱 유닛 (1) 이 다시 3 의 LUT 입력 값을 수신한다고 가정한다. 프로세싱 유닛 (1) 은 다시 +/-0.5 의 무작위 잡음 값을 발생시키도록 구성될 수도 있다. 그러나, 이러한 특정의 예에 있어서, 발생된 잡음 값이 상측 LUT 출력 값 내삽을 트리거하는 0.1 이라고 가정한다. LUT 입력 값이 3 과 동일한 경우, P0 = (3, 16), P2 = (4, 24), 그리고 x = 3.1 이다. 이 값들을 이용하여, 프로세싱 유닛 (1) 은 16.8 의 내삽된 LUT 출력 값을 계산하도록 구성될 수도 있다. 그러나, 16.8 의 LUT 출력 값은 이용불가능하다. 따라서, 프로세싱 유닛 (1) 은 내삽된 LUT 출력 값을 가장 가까운 정수 값으로 반올림하되, 중간 (16.5) 에서의 임의의 값이 예에 따라 절상되거나 (예컨대, 17) 또는 절하되도록 (예컨대, 16) 구성될 수도 있다. 이러한 예에서, 16.8 의 내삽된 LUT 출력 값은 17 로 절상될 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 내삽된 LUT 출력 값의 임의의 소수점 이하의 자릿수(들) 를 절사하도록 구성될 수도 있다. 예를 들어, 16.8 의 내삽된 LUT 출력 값은 16 으로 절사될 수도 있다.
다른 예들에서, 프로세싱 유닛 (1) 은 LUT 출력 값의 분수 성분을 나타내기 위해 하나 이상의 최하위 비트들을 추가하도록 구성될 수도 있다. 예를 들어, 정수 값을 발생시키는 내삽된 LUT 출력 값을 반올림하거나 또는 절사하는 대신, 프로세싱 유닛 (1) 은 내삽된 LUT 출력 값을 가장 가까운 가용 분수 정밀도로 반올림하도록 구성될 수도 있다. 일 예로서, 프로세싱 유닛 (1) 은 분수 정밀도를 0.5 의 증분들로 추가하기 위해 하나의 최하위 비트를 추가하도록 구성될 수도 있다. 이러한 예에서, 프로세싱 유닛 (1) 은 16.8 로부터 10010 의 2진 표현을 초래하는 17 로 반올림하도록 구성될 수도 있으며, 여기서, 0 의 최하위 비트가 17.0 의 .0 을 나타낸다. 다른 예로서, 프로세싱 유닛 (1) 은 분수 정밀도를 0.25 의 증분들로 추가하기 위해 2개의 최하위 비트들을 추가하도록 구성될 수도 있다 (예컨대, 00 = 0, 01 = 0.25, 10 = 0.5, 그리고 11 = 0.75). 이러한 예에서, 프로세싱 유닛 (1) 은 16.8 로부터 1000111 의 2진 표현을 초래하는 16.75 로 반올림하도록 구성될 수도 있으며, 여기서, 11 의 2개의 최하위 비트들이 16.75 의 .75 를 나타낸다.
다른 예에서는, 프로세싱 유닛 (1) 이 4 의 LUT 입력 값을 수신한다고 가정한다. 프로세싱 유닛 (1) 은 +/-0.5 의 무작위 잡음 값을 발생시키도록 구성될 수도 있다. 그러나, 이러한 특정의 예에 있어서, 발생된 잡음 값이 0.0 이라고 가정한다. 이러한 예에서, 프로세싱 유닛 (1) 은 내삽을 수행하지 않도록 구성될 수도 있다. 대신, 프로세싱 유닛 (1) 은 임의의 내삽 (예컨대, 하측 또는 상측 LUT 출력 값 내삽, 또는 임의의 다른 내삽 기법) 을 트리거하는 대신, 24 의 맵핑된 LUT 출력 값을 이용하도록 구성될 수도 있다.
위에서 설명된 하측 및 상측 내삽들을 참조하면, 2개의 테이블 룩-업들, 즉, 입력 픽셀 값에 대응하는 LUT 입력 값에 대한 하나의 룩-업, 및 입력 픽셀 값에 대응하는 LUT 입력 값에 근접할 수도 있는 LUT 입력 값에 대한 제 2 룩-업이 발생할 수도 있다. 앞에서 설명한 바와 같이, 제 2 룩-업은 발생된 잡음 값이 음 또는 양인지 여부에 의존할 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 심지어 이것이 프로세싱 유닛 (1) 의 데이터 처리율 (through-put) 을 감소시키더라도 (예컨대, 클록 사이클 당 1 픽셀 미만), 위에서 설명된 2개의 테이블 룩-업들을 병렬로 수행하지 않도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 LUT 를 이용하여 제 1 룩-업을 수행하도록 구성될 수도 있으며, 그후 제 1 룩-업에 후속하여, 프로세싱 유닛 (1) 은 LUT 를 이용하여 제 2 룩-업을 수행하도록 구성될 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 예를 들어, 프로세싱 유닛 (1) 의 데이터 처리량 (예컨대, 클록 사이클 당 1 픽셀) 을 유지하기 위해, 위에서 설명된 2개의 테이블 룩-업들을 병렬로 수행하도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 동일한 LUT 가 2개의 상이한 룩-업들을 위해 병렬로 액세스될 수 있도록, 메모리 내 LUT 를 복제하도록 구성될 수도 있다. 다른 예로서, 프로세싱 유닛 (1) 은 LUT 의 복제 없이 위에서 설명된 2개의 테이블 룩-업들을 병렬로 수행하도록 구성될 수도 있다. 예를 들어, 프로세싱 유닛 (1) 은 LUT 를 2개의 절반들로 분할하도록 구성될 수도 있으며, 여기서, 절반 LUT 는 짝수 번호의 엔트리들의 전부를 포함하는 반면, 다른 절반 LUT 는 홀수 번호의 엔트리들의 모두를 포함할 수도 있다. 이러한 방법으로 2개의 절반-사이즈의 LUT들을 이용함으로써, 프로세싱 유닛 (1) 은 동일한 LUT 의 2개의 인스턴스들을 저장하는데 메모리 소비를 배가시키거나 또는 아니면 테이블 사이즈를 배가하는 것을 방지하도록 구성될 수도 있다.
다른 예들에서, 프로세싱 유닛 (1) 은 도 7 및/또는 도 8 과 관련하여 위에서 설명된 방법론과는 상이한 방법론에 따라서 하나 이상의 내삽된 LUT 출력 값들을 계산하도록 구성될 수도 있다.
도 10 은 본 개시물의 예시적인 방법을 나타내는 플로우차트이다. 도 10 의 방법은 하나 이상의 프로세싱 유닛들 (1) (예컨대, 하나 이상의 CPU들, 하나 이상의 GPU들, 하나 이상의 디스플레이 프로세싱 유닛들, 하나 이상의 다른 프로세싱 유닛들, 또는 임의의 이들의 조합들) 에 의해 수행될 수도 있다. 도 10 은 본 개시물의 하나 이상의 기법들에 따른 방법을 도시한다.
프로세싱 유닛 (1) 은 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하도록 구성될 수도 있다 (100). LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다. 제 1 픽셀 값은 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응할 수도 있다. 제 1 픽셀은 하나 이상의 픽셀 값들을 포함할 수도 있다. 프로세싱 유닛 (1) 은 제 1 LUT 입력 값에 대한 잡음 값을 발생시키도록 구성될 수도 있다 (102). 프로세싱 유닛 (1) 은 제 2 LUT 입력 값을 선택하도록 구성될 수도 있다 (104). 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 제 3 LUT 출력 값에 맵핑될 수도 있는 제 3 LUT 입력 값을 선택하도록 구성될 수도 있다.
프로세싱 유닛 (1) 은 제 1 LUT 입력 값에 대해 값들의 범위 내에서 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다 (106). 일부 예들에서, 프로세싱 유닛 (1) 은 잡음 값, 제 1 LUT 입력 값, 제 1 LUT 출력 값, 제 2 LUT 입력 값, 및 제 2 LUT 출력 값 중 하나 이상에 기초하여, 제 1 LUT 입력 값에 대해 값들의 범위 내에서 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다. 제 1 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값일 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 잡음 값, 제 3 LUT 입력 값, 제 3 LUT 출력 값, 제 2 LUT 입력 값, 및 제 2 LUT 출력 값 중 하나 이상에 기초하여, 제 1 LUT 입력 값에 대해 값들의 범위 내에서 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다. 이러한 예들에서, 제 2 LUT 입력 값 및/또는 제 3 LUT 입력 값은 제 1 LUT 입력 값에 근접할 수도 있거나 근접하지 않을 수도 있다. 프로세싱 유닛 (1) 은 제 1 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하도록 구성될 수도 있다 (108).
도 11 은 본 개시물의 예시적인 방법을 나타내는 플로우차트이다. 도 11 의 방법은 하나 이상의 프로세싱 유닛들 (1) (예컨대, 하나 이상의 CPU들, 하나 이상의 GPU들, 하나 이상의 디스플레이 프로세싱 유닛들, 하나 이상의 다른 프로세싱 유닛들, 또는 임의의 이들의 조합들) 에 의해 수행될 수도 있다. 도 11 은 본 개시물의 하나 이상의 기법들에 따른 방법을 도시한다.
프로세싱 유닛 (1) 은 이미지의 하나 이상의 픽셀들에 대응하는 복수의 픽셀 값들을 룩업 테이블 (LUT) 에 입력하도록 구성될 수도 있다 (120). LUT 는 하나 이상의 LUT 입력 값들을 LUT 에서의 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다. 복수의 픽셀 값들의 각각은 하나 이상의 LUT 출력 값들 중 하나에 맵핑되는 하나 이상의 LUT 입력 값들 중 하나에 각각 대응할 수도 있다. 하나 이상의 픽셀들은 하나 이상의 픽셀 값들을 포함할 수도 있다. 프로세싱 유닛 (1) 은 각각의 픽셀 값에 대응하는 각각의 LUT 입력 값에 대한 잡음 값을 발생시키도록 구성될 수도 있다 (122). 프로세싱 유닛 (1) 은 각각의 LUT 입력 값에 대한 제 2 LUT 입력 값을 선택하도록 구성될 수도 있다 (124). 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 각각의 LUT 입력 값에 대한 제 3 LUT 입력 값을 선택하도록 구성될 수도 있다. 제 3 LUT 입력 값은 제 3 LUT 출력 값에 맵핑된다.
프로세싱 유닛 (1) 은 값들의 범위 내에서 LUT 에 입력된 픽셀 값에 대응하는 각각의 LUT 입력 값에 대해, 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다 (126). 일부 예들에서, 프로세싱 유닛 (1) 은 LUT 에 입력된 각각의 픽셀 값에 각각 대응하는, 잡음 값, 제 1 LUT 입력 값, 제 1 LUT 출력 값, 제 1 LUT 입력 값, 및 제 2 LUT 출력 값 중 하나 이상에 기초하여, 값들의 범위 내에서 LUT 에 입력된 픽셀 값에 대응하는 각각의 LUT 입력 값에 대해, 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다. 적어도 하나의 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값일 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 LUT 에 입력된 각각의 픽셀 값에 각각 대응하는, 잡음 값, 제 3 LUT 입력 값, 제 3 LUT 출력 값, 제 2 LUT 입력 값, 및 제 2 LUT 출력 값 중 하나 이상에 기초하여, 값들의 범위 내에서 LUT 에 입력된 픽셀 값에 대응하는 각각의 LUT 입력 값에 대해, 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다. 이러한 예들에서, 제 2 LUT 입력 값 및/또는 제 3 LUT 입력 값은 제 1 LUT 입력 값에 근접할 수도 있거나 근접하지 않을 수도 있다. 프로세싱 유닛 (1) 은 각각의 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하도록 구성될 수도 있다 (128).
도 12 는 본 개시물의 예시적인 방법을 나타내는 플로우차트이다. 도 12 의 방법은 하나 이상의 프로세싱 유닛들 (1) (예컨대, 하나 이상의 CPU들, 하나 이상의 GPU들, 하나 이상의 디스플레이 프로세싱 유닛들, 하나 이상의 다른 프로세싱 유닛들, 또는 임의의 이들의 조합들) 에 의해 수행될 수도 있다. 도 12 는 본 개시물의 하나 이상의 기법들에 따른 방법을 도시한다.
프로세싱 유닛 (1) 은 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하도록 구성될 수도 있다 (130). LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다. 제 1 픽셀 값은 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응할 수도 있다. 제 1 픽셀은 하나 이상의 픽셀 값들을 포함할 수도 있다. 프로세싱 유닛 (1) 은 제 1 LUT 입력 값에 대한 잡음 값을 발생시키도록 구성될 수도 있다 (132). 프로세싱 유닛 (1) 은 제 2 LUT 입력 값을 선택하도록 구성될 수도 있다 (134). 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑될 수도 있다. 프로세싱 유닛 (1) 은 제 3 LUT 입력 값을 선택하도록 구성될 수도 있다 (136). 제 3 LUT 입력 값은 제 2 LUT 출력 값에 맵핑될 수도 있다. 제 2 LUT 입력 값 및/또는 제 3 LUT 입력 값은 제 1 LUT 입력 값에 근접할 수도 있거나 근접하지 않을 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 잡음 값, 제 1 LUT 입력 값에의 제 2 또는 제 3 LUT 입력 값의 근접, 및 제 1 LUT 입력 값에의 제 2 또는 제 3 LUT 입력 값의 비-근접 중 하나 이상에 기초하여, 제 2 LUT 입력 값 및/또는 제 3 LUT 입력 값을 선택하도록 구성될 수도 있다.
프로세싱 유닛 (1) 은 제 1 LUT 입력 값에 대해 값들의 범위 내에서 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다 (138). 일부 예들에서, 프로세싱 유닛 (1) 은 잡음 값, 제 3 LUT 입력 값, 제 3 LUT 출력 값, 제 2 LUT 입력 값, 및 제 2 LUT 출력 값 중 하나 이상에 기초하여, 제 1 LUT 입력 값에 대해 값들의 범위 내에서 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다. 제 1 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값일 수도 있다. 다른 예들에서, 프로세싱 유닛 (1) 은 잡음 값, 제 1 LUT 입력 값, 제 1 LUT 출력 값, 제 3 LUT 입력 값, 제 3 LUT 출력 값, 제 2 LUT 입력 값, 및 제 2 LUT 출력 값 중 하나 이상에 기초하여, 제 1 LUT 입력 값에 대해 값들의 범위 내에서 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다. 프로세싱 유닛 (1) 은 제 1 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하도록 구성될 수도 있다 (140).
도 13 은 본 개시물의 예시적인 방법을 나타내는 플로우차트이다. 도 13 의 방법은 하나 이상의 프로세싱 유닛들 (1) (예컨대, 하나 이상의 CPU들, 하나 이상의 GPU들, 하나 이상의 디스플레이 프로세싱 유닛들, 하나 이상의 다른 프로세싱 유닛들, 또는 임의의 이들의 조합들) 에 의해 수행될 수도 있다. 도 13 은 본 개시물의 하나 이상의 기법들에 따른 방법을 도시한다.
프로세싱 유닛 (1) 은 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하도록 구성될 수도 있다 (150). LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다. 제 1 픽셀 값은 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응할 수도 있다. 제 1 픽셀은 하나 이상의 픽셀 값들을 포함할 수도 있다. 프로세싱 유닛 (1) 은 제 1 LUT 입력 값에 대한 잡음 값을 발생시키도록 구성될 수도 있다 (152).
일부 예들에서, LUT 는 단일 LUT 로부터 유도되는 2개의 LUT들 중 제 1 LUT 일 수도 있다. 단일 LUT 는 복수의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑될 수도 있다. 제 1 LUT 는 복수의 입력 값들의 서브세트를 단일 LUT 의 하나 이상의 LUT 출력 값들에 맵핑할 수도 있으며, 단일 LUT 로부터 유도된 제 2 LUT 는 복수의 입력 값들의 상이한 서브세트를 단일 LUT 의 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다.
프로세싱 유닛 (1) 은 잡음 값에 기초하여 제 1 LUT 입력 값에 대해 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다 (154). 일부 예들에서, 제 1 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값일 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 제 2 LUT 입력 값을 선택하도록 구성될 수도 있다. 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 제 1 LUT 입력 값, 제 2 LUT 입력 값, 및 제 2 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다.
일부 예들에서, 프로세싱 유닛 (1) 은 제 2 및 제 3 LUT 입력 값을 선택하도록 구성될 수도 있다. 제 2 및 제 3 LUT 입력 값은 제 2 및 제 3 LUT 출력 값에 각각 맵핑될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 제 1 LUT 입력 값, 제 2 LUT 입력 값, 제 2 LUT 출력 값, 제 3 LUT 입력 값, 및 제 3 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 잡음 값, 제 1 LUT 입력 값에의 제 2 또는 제 3 LUT 입력 값의 근접, 및 제 1 LUT 입력 값에의 제 2 또는 제 3 LUT 입력 값의 비-근접 중 적어도 하나에 기초하여, 제 2 LUT 입력 값 또는 제 3 LUT 입력 값을 선택하도록 구성될 수도 있다.
프로세싱 유닛 (1) 은 제 1 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하도록 구성될 수도 있다 (156).
프로세싱 유닛 (1) 은 이미지의 제 2 픽셀에 대응하는 제 1 픽셀 값을 LUT 에 입력하도록 구성될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 제 2 픽셀 값의 제 1 픽셀 값을 위에서 설명된 제 1 픽셀의 제 1 픽셀 값과 동일한 방법으로 프로세싱하도록 구성될 수도 있다. 다른 예들에서, 제 2 픽셀의 제 1 픽셀 값이 입력되는 LUT 는 제 1 픽셀의 제 1 픽셀 값이 입력되는 LUT 와는 상이할 수도 있다. 예를 들어, LUT 는 단일 LUT 로부터 유도되는 2개의 LUT들 중 제 1 LUT 일 수도 있다. 단일 LUT 는 복수의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑될 수도 있다. 제 1 LUT 는 복수의 입력 값들의 서브세트를 단일 LUT 의 하나 이상의 LUT 출력 값들에 맵핑할 수도 있으며, 단일 LUT 로부터 유도된 제 2 LUT 는 복수의 입력 값들의 상이한 서브세트를 단일 LUT 의 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다.
프로세싱 유닛 (1) 은 제 1 픽셀의 제 1 픽셀 값을 단일 LUT 로부터 유도된 제 1 LUT 에 입력하고 제 2 픽셀의 제 1 픽셀 값을 단일 LUT 로부터 유도된 제 2 LUT 에 입력하도록 구성될 수도 있다. 이러한 예들에서, 프로세싱 유닛 (1) 은 위에서 설명된 제 1 픽셀의 제 1 픽셀 값과 동일하지만 하나의 차이가 제 1 및 제 2 픽셀들에 대한 제 1 픽셀 값이 입력되는 LUT 인 방법으로, 제 2 픽셀 값의 제 1 픽셀 값을 프로세싱하도록 구성될 수도 있다.
도 14 는 본 개시물의 예시적인 방법을 나타내는 플로우차트이다. 도 14 의 방법은 하나 이상의 프로세싱 유닛들 (1) (예컨대, 하나 이상의 CPU들, 하나 이상의 GPU들, 하나 이상의 디스플레이 프로세싱 유닛들, 하나 이상의 다른 프로세싱 유닛들, 또는 임의의 이들의 조합들) 에 의해 수행될 수도 있다. 도 14 는 본 개시물의 하나 이상의 기법들에 따른 방법을 도시한다.
프로세싱 유닛 (1) 은 이미지의 하나 이상의 픽셀들에 대응하는 복수의 픽셀 값들을 룩업 테이블 (LUT) 에 입력하도록 구성될 수도 있다 (160). LUT 는 하나 이상의 LUT 입력 값들을 LUT 에서의 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다. 복수의 픽셀 값들의 각각은 하나 이상의 LUT 출력 값들 중 하나에 맵핑되는 하나 이상의 LUT 입력 값들 중 하나에 각각 대응할 수도 있다. 하나 이상의 픽셀들은 하나 이상의 픽셀 값들을 포함할 수도 있다. 프로세싱 유닛 (1) 은 각각의 픽셀 값에 대응하는 각각의 LUT 입력 값에 대한 잡음 값을 발생시키도록 구성될 수도 있다 (162).
일부 예들에서, LUT 는 단일 LUT 로부터 유도되는 2개의 LUT들 중 제 1 LUT 일 수도 있으며, 여기서, 단일 LUT 는 복수의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑한다. 제 1 LUT 는 복수의 입력 값들의 서브세트를 단일 LUT 의 하나 이상의 LUT 출력 값들에 맵핑할 수도 있으며, 단일 LUT 로부터 유도된 제 2 LUT 는 복수의 입력 값들의 상이한 서브세트를 단일 LUT 의 하나 이상의 LUT 출력 값들에 맵핑할 수도 있다. 이러한 예들에서, 이미지의 하나 이상의 픽셀들에 대응하는 하나 이상의 픽셀들 값들은 단일 LUT 로부터 유도된 제 1 LUT 에 입력될 수도 있으며, 이미지의 하나 이상의 픽셀들에 대응하는 하나 이상의 픽셀 값들은 단일 LUT 로부터 유도된 제 2 LUT 에 입력될 수도 있다.
프로세싱 유닛 (1) 은 LUT 에 입력된 각각의 픽셀 값에 각각 대응하는 잡음 값에 기초하여, LUT 에 입력된 각각의 픽셀 값에 대응하는 각각의 LUT 입력 값에 대해, 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다 (164). 일부 예들에서, 적어도 하나의 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값일 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 각각의 LUT 입력 값에 대한 제 2 LUT 입력 값을 선택하도록 구성될 수도 있다. 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 LUT 에 입력된 각각의 픽셀 값에 각각 대응하는, 제 1 LUT 입력 값, 제 2 LUT 입력 값, 및 제 2 LUT 출력 값 중 적어도 하나에 추가로 기초하여, LUT 에 입력된 각각의 픽셀 값에 대응하는 각각의 LUT 입력 값에 대해, 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다.
일부 예들에서, 프로세싱 유닛 (1) 은 각각의 LUT 입력 값에 대한 제 2 및 제 3 LUT 입력 값을 선택하도록 구성될 수도 있다. 제 2 및 제 3 LUT 입력 값은 제 2 및 제 3 LUT 출력 값에 각각 맵핑될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 LUT 에 입력된 각각의 픽셀 값에 각각 대응하는, 제 1 LUT 입력 값, 제 2 LUT 입력 값, 제 2 LUT 출력, 제 3 LUT 입력 값, 및 제 3 LUT 출력 값 중 적어도 하나에 추가로 기초하여, LUT 에 입력된 각각의 픽셀 값에 대응하는 각각의 LUT 입력 값에 대해, 제 1 내삽된 LUT 출력 값을 발생시키도록 구성될 수도 있다. 일부 예들에서, 프로세싱 유닛 (1) 은 LUT 에 입력된 각각의 픽셀 값에 각각 대응하는, 잡음 값, 제 1 LUT 입력 값에의 제 2 또는 제 3 LUT 입력 값의 근접, 및 제 1 LUT 입력 값에의 제 2 또는 제 3 LUT 입력 값의 비-근접 중 적어도 하나에 기초하여, 각각의 LUT 입력 값에 대한 제 2 LUT 입력 값 또는 제 3 LUT 입력 값을 선택하도록 구성될 수도 있다.
프로세싱 유닛 (1) 은 각각의 내삽된 LUT 출력 값을 이용하여 이미지를 변환된 이미지로 변환하도록 구성될 수도 있다 (166).
본 개시물에 따르면, 용어 "또는" 은 문맥이 달리 지시하지 않는 한 "및/또는" 로서 중단될 (interrupted) 수도 있다. 게다가, "하나 이상의" 또는 "적어도 하나의" 또는 기타 등등과 같은 어구들이 본원에서 개시된 일부 특징들에 대해 사용되었지만 다른 것들에 대해서는 사용되지 않았을 수도 있으며; 이러한 용어가 사용되지 않은 특징들은, 문맥이 달리 지시하지 않는 한, 그러한 의미를 내포하는 것으로 해석될 수도 있다.
하나 이상의 예들에서, 본원에서 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 예를 들어, 용어 "프로세싱 유닛" 이 본 개시물 전체에 걸쳐서 사용되었지만, 이러한 프로세싱 유닛들이 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있음을 알 수 있다. 본원에서 설명된, 임의의 기능, 프로세싱 유닛, 기법, 또는 다른 모듈이 소프트웨어로 구현되면, 본원에서 설명된, 기능, 프로세싱 유닛, 기법, 또는 다른 모듈은 컴퓨터-판독가능 매체 상에 하나 이상의 명령들 또는 코드로서 저장되거나 또는 송신될 수도 있다. 컴퓨터-판독가능 매체들은 한 장소로부터 또 다른 장소로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함한, 컴퓨터 데이터 저장 매체들 또는 통신 매체들을 포함할 수도 있다. 이런 방법으로, 컴퓨터-판독가능 매체들은 일반적으로 (1) 비일시적 유형의 컴퓨터-판독가능 저장 매체, 또는 (2) 신호 또는 캐리어 파와 같은 통신 매체에 대응할 수도 있다. 데이터 저장 매체는 본 개시물에서 설명하는 기법들의 구현을 위한 명령들, 코드 및/또는 데이터 구조들을 취출하기 위해 하나 이상의 컴퓨터들 또는 하나 이상의 프로세서들에 의해 액세스될 수 있는 임의의 가용 매체들일 수도 있다. 비한정적인 예로서, 이러한 컴퓨터-판독가능 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광디스크 스토리지, 자기디스크 스토리지 또는 다른 자기 저장 디바이스들을 포함할 수 있다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용될 때, 컴팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 디스크들 (disks) 은 데이터를 자기적으로 보통 재생하지만, 디스크들 (discs) 은 레이저로 데이터를 광학적으로 재생한다. 앞에서 언급한 것들의 결합들이 또한 컴퓨터-판독가능 매체들의 범위 내에 포함되어야 한다. 컴퓨터 프로그램 제품은 컴퓨터-판독가능 매체를 포함할 수도 있다.
코드는 하나 이상의 디지털 신호 프로세서들 (DSPs), 범용 마이크로프로세서들, 주문형 집적회로들 (ASICs), 필드 프로그래밍가능 로직 어레이들 (FPGA들), 또는 다른 등가의 통합 또는 이산 로직 회로부와 같은, 하나 이상의 프로세서들에 의해 실행될 수도 있다. 따라서, 용어 "프로세서" 는, 본원에서 사용될 때 전술한 구조 중 임의의 구조 또는 본원에서 설명하는 기법들의 구현에 적합한 임의의 다른 구조를 지칭할 수도 있다. 게다가, 일부 양태들에서, 본원에서 설명하는 기능은 이미지 및/또는 비디오 프로세싱을 위해 구성된 전용 하드웨어 및/또는 소프트웨어 모듈들 내에 제공될 수도 있다. 또한, 이 기법들은 하나 이상의 회로들 또는 로직 엘리먼트들로 전적으로 구현될 수 있다.
본 개시물의 기법들은 무선 핸드셋, 집적 회로 (IC) 또는 IC들의 세트 (예컨대, 칩 세트) 를 포함한, 매우 다양한 디바이스들 또는 장치들로 구현될 수도 있다. 개시한 기법들을 수행하도록 구성되는 디바이스들의 기능적 양태들을 강조하기 위해서 다양한 컴포넌트들, 모듈들 또는 유닛들이 본 개시물에서 설명되지만, 상이한 하드웨어 유닛들에 의한 실현을 반드시 필요로 하지는 않는다. 대신, 위에서 설명한 바와 같이, 다양한 유닛들이 임의의 하드웨어 유닛에 결합되거나 또는 적합한 소프트웨어 및/또는 펌웨어와 함께, 위에서 설명한 바와 같은 하나 이상의 프로세서들을 포함한, 상호작용하는 하드웨어 유닛들의 컬렉션으로 제공될 수도 있다.
다양한 예들이 설명되었다. 이들 및 다른 예들은 다음 청구항들의 범위 이내이다.

Claims (30)

  1. 프로세싱 유닛에 의해, 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하는 단계로서, 상기 LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며, 상기 제 1 픽셀 값은 상기 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응하는, 상기 제 1 픽셀 값을 입력하는 단계;
    상기 프로세싱 유닛에 의해, 상기 제 1 LUT 입력 값에 대한 잡음 값을 발생시키는 단계;
    상기 프로세싱 유닛에 의해, 상기 잡음 값에 기초하여, 상기 제 1 LUT 입력 값에 대해 제 1 내삽된 LUT 출력 값을 발생시키는 단계; 및
    상기 프로세싱 유닛에 의해, 상기 제 1 내삽된 LUT 출력 값을 이용하여, 상기 이미지를 변환된 이미지로 변환하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 제 1 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값인, 방법.
  3. 제 1 항에 있어서,
    상기 프로세싱 유닛에 의해, 제 2 LUT 입력 값을 선택하는 단계를 더 포함하며, 상기 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑되는, 방법.
  4. 제 3 항에 있어서,
    상기 프로세싱 유닛에 의해, 상기 제 1 LUT 입력 값, 상기 제 2 LUT 입력 값, 및 상기 제 2 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 상기 제 1 내삽된 LUT 출력 값을 발생시키는 단계를 더 포함하는, 방법.
  5. 제 3 항에 있어서,
    상기 LUT 는 단일 LUT 로부터 유도되는 2개의 LUT들 중 제 1 LUT 이며,
    상기 단일 LUT 는 복수의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며,
    상기 제 1 LUT 는 상기 복수의 입력 값들의 서브세트를 상기 단일 LUT 의 상기 하나 이상의 LUT 출력 값들에 맵핑하며,
    상기 단일 LUT 로부터 유도된 제 2 LUT 는 상기 복수의 입력 값들의 상이한 서브세트를 상기 단일 LUT 의 상기 하나 이상의 LUT 출력 값들에 맵핑하는, 방법.
  6. 제 3 항에 있어서,
    상기 프로세싱 유닛에 의해, 제 3 LUT 입력 값을 선택하는 단계를 더 포함하며, 상기 제 3 LUT 입력 값은 제 3 LUT 출력 값에 맵핑되는, 방법.
  7. 제 6 항에 있어서,
    상기 프로세싱 유닛에 의해, 상기 제 1 LUT 입력 값, 상기 제 2 LUT 입력 값, 상기 제 2 LUT 출력 값, 상기 제 3 LUT 입력 값, 및 상기 제 3 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 상기 제 1 내삽된 LUT 출력 값을 발생시키는 단계를 더 포함하는, 방법.
  8. 제 6 항에 있어서,
    상기 프로세싱 유닛에 의해, 상기 잡음 값, 상기 제 1 LUT 입력 값에의 상기 제 2 또는 제 3 LUT 입력 값의 근접, 및 상기 제 1 LUT 입력 값에의 상기 제 2 또는 제 3 LUT 입력 값의 비-근접 중 적어도 하나에 기초하여, 상기 제 2 LUT 입력 값 또는 상기 제 3 LUT 입력 값을 선택하는 단계를 더 포함하는, 방법.
  9. 디바이스로서,
    이미지를 저장하는 메모리; 및
    하나 이상의 프로세서들을 포함하며,
    상기 하나 이상의 프로세서들은,
    상기 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하는 것으로서, 상기 LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며, 상기 제 1 픽셀 값은 상기 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응하는, 상기 제 1 픽셀 값을 입력하고;
    상기 제 1 LUT 입력 값에 대한 잡음 값을 발생시키고;
    상기 잡음 값에 기초하여 상기 제 1 LUT 입력 값에 대해 제 1 내삽된 LUT 출력 값을 발생시키고; 그리고
    상기 제 1 내삽된 LUT 출력 값을 이용하여 상기 이미지를 변환된 이미지로 변환하도록 구성되는, 디바이스.
  10. 제 9 항에 있어서,
    상기 제 1 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값인, 디바이스.
  11. 제 9 항에 있어서,
    상기 하나 이상의 프로세서들은 제 2 LUT 입력 값을 선택하도록 구성되며,
    상기 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑되는, 디바이스.
  12. 제 11 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 제 1 LUT 입력 값, 상기 제 2 LUT 입력 값, 및 상기 제 2 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 상기 제 1 내삽된 LUT 출력 값을 발생시키도록 구성되는, 디바이스.
  13. 제 11 항에 있어서,
    상기 LUT 는 단일 LUT 로부터 유도되는 2개의 LUT들 중 제 1 LUT 이며,
    상기 단일 LUT 는 복수의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며,
    상기 제 1 LUT 는 상기 복수의 입력 값들의 서브세트를 상기 단일 LUT 의 상기 하나 이상의 LUT 출력 값들에 맵핑하며,
    상기 단일 LUT 로부터 유도된 제 2 LUT 는 상기 복수의 입력 값들의 상이한 서브세트를 상기 단일 LUT 의 상기 하나 이상의 LUT 출력 값들에 맵핑하는, 디바이스.
  14. 제 11 항에 있어서,
    상기 하나 이상의 프로세서들은 제 3 LUT 입력 값을 선택하도록 구성되며,
    상기 제 3 LUT 입력 값은 제 3 LUT 출력 값에 맵핑되는, 디바이스.
  15. 제 14 항에 있어서,
    상기 하나 이상의 프로세서들은 상기 제 1 LUT 입력 값, 상기 제 2 LUT 입력 값, 상기 제 2 LUT 출력 값, 상기 제 3 LUT 입력 값, 및 상기 제 3 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 상기 제 1 내삽된 LUT 출력 값을 발생시키도록 구성되는, 디바이스.
  16. 제 14 항에 있어서,
    상기 하나 이상의 프로세서들은, 상기 잡음 값, 상기 제 1 LUT 입력 값에의 상기 제 2 또는 제 3 LUT 입력 값의 근접, 및 상기 제 1 LUT 입력 값에의 상기 제 2 또는 제 3 LUT 입력 값의 비-근접 중 적어도 하나에 기초하여, 상기 제 2 LUT 입력 값 또는 상기 제 3 LUT 입력 값을 선택하도록 구성되는, 디바이스.
  17. 이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하는 수단으로서, 상기 LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며, 상기 제 1 픽셀 값은 상기 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응하는, 상기 제 1 픽셀 값을 입력하는 수단;
    상기 제 1 LUT 입력 값에 대한 잡음 값을 발생시키는 수단;
    상기 잡음 값에 기초하여 상기 제 1 LUT 입력 값에 대해 제 1 내삽된 LUT 출력 값을 발생시키는 수단; 및
    상기 제 1 내삽된 LUT 출력 값을 이용하여 상기 이미지를 변환된 이미지로 변환하는 수단을 포함하는, 장치.
  18. 제 17 항에 있어서,
    상기 제 1 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값인, 장치.
  19. 제 17 항에 있어서,
    제 2 LUT 입력 값을 선택하는 수단을 더 포함하며,
    상기 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑되는, 장치.
  20. 제 19 항에 있어서,
    상기 제 1 LUT 입력 값, 상기 제 2 LUT 입력 값, 및 상기 제 2 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 상기 제 1 내삽된 LUT 출력 값을 발생시키는 수단을 더 포함하는, 장치.
  21. 제 19 항에 있어서,
    상기 LUT 는 단일 LUT 로부터 유도되는 2개의 LUT들 중 제 1 LUT 이며,
    상기 단일 LUT 는 복수의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며,
    상기 제 1 LUT 는 상기 복수의 입력 값들의 서브세트를 상기 단일 LUT 의 상기 하나 이상의 LUT 출력 값들에 맵핑하며,
    상기 단일 LUT 로부터 유도된 제 2 LUT 는 상기 복수의 입력 값들의 상이한 서브세트를 상기 단일 LUT 의 상기 하나 이상의 LUT 출력 값들에 맵핑하는, 장치.
  22. 제 19 항에 있어서,
    제 3 LUT 입력 값을 선택하는 수단을 더 포함하며,
    상기 제 3 LUT 입력 값은 제 3 LUT 출력 값에 맵핑되는, 장치.
  23. 제 22 항에 있어서,
    상기 제 1 LUT 입력 값, 상기 제 2 LUT 입력 값, 상기 제 2 LUT 출력 값, 상기 제 3 LUT 입력 값, 및 상기 제 3 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 상기 제 1 내삽된 LUT 출력 값을 발생시키는 수단; 및
    상기 잡음 값, 상기 제 1 LUT 입력 값에의 상기 제 2 또는 제 3 LUT 입력 값의 근접, 및 상기 제 1 LUT 입력 값에의 상기 제 2 또는 제 3 LUT 입력 값의 비-근접 중 적어도 하나에 기초하여, 상기 제 2 LUT 입력 값 또는 상기 제 3 LUT 입력 값을 선택하는 수단을 더 포함하는, 장치.
  24. 명령들을 저장하고 있는 비일시적 컴퓨터-판독가능 저장 매체로서,
    상기 명령들은, 실행될 때, 컴퓨팅 디바이스의 하나 이상의 프로세서들로 하여금,
    이미지의 제 1 픽셀에 대응하는 제 1 픽셀 값을 룩업 테이블 (LUT) 에 입력하게 하는 것으로서, 상기 LUT 는 하나 이상의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며, 상기 제 1 픽셀 값은 상기 LUT 에서의 제 1 LUT 출력 값에 맵핑되는 제 1 LUT 입력 값에 대응하는, 상기 제 1 픽셀 값을 입력하게 하고;
    상기 제 1 LUT 입력 값에 대한 잡음 값을 발생시키게 하고;
    상기 잡음 값에 기초하여 상기 제 1 LUT 입력 값에 대해 제 1 내삽된 LUT 출력 값을 발생시키게 하고; 그리고
    상기 제 1 내삽된 LUT 출력 값을 이용하여 상기 이미지를 변환된 이미지로 변환하게 하는, 비일시적 컴퓨터-판독가능 저장 매체.
  25. 제 24 항에 있어서,
    상기 제 1 내삽된 LUT 출력 값은 비-맵핑된 LUT 출력 값인, 비일시적 컴퓨터-판독가능 저장 매체.
  26. 제 24 항에 있어서,
    실행될 때, 상기 하나 이상의 프로세서들로 하여금, 제 2 LUT 입력 값을 선택하게 하는, 저장된 명령들을 더 포함하며,
    상기 제 2 LUT 입력 값은 제 2 LUT 출력 값에 맵핑되는, 비일시적 컴퓨터-판독가능 저장 매체.
  27. 제 26 항에 있어서,
    실행될 때, 상기 하나 이상의 프로세서들로 하여금,
    상기 제 1 LUT 입력 값, 상기 제 2 LUT 입력 값, 및 상기 제 2 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 상기 제 1 내삽된 LUT 출력 값을 발생시키게 하는, 저장된 명령들을 더 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  28. 제 26 항에 있어서,
    상기 LUT 는 단일 LUT 로부터 유도되는 2개의 LUT들 중 제 1 LUT 이며,
    상기 단일 LUT 는 복수의 LUT 입력 값들을 하나 이상의 LUT 출력 값들에 맵핑하며,
    상기 제 1 LUT 는 상기 복수의 입력 값들의 서브세트를 상기 단일 LUT 의 상기 하나 이상의 LUT 출력 값들에 맵핑하며,
    상기 단일 LUT 로부터 유도된 제 2 LUT 는 상기 복수의 입력 값들의 상이한 서브세트를 상기 단일 LUT 의 상기 하나 이상의 LUT 출력 값들에 맵핑하는, 비일시적 컴퓨터-판독가능 저장 매체.
  29. 제 26 항에 있어서,
    실행될 때, 상기 하나 이상의 프로세서들로 하여금, 제 3 LUT 입력 값을 선택하게 하는, 저장된 명령들을 더 포함하며,
    상기 제 3 LUT 입력 값은 제 3 LUT 출력 값에 맵핑되는, 비일시적 컴퓨터-판독가능 저장 매체.
  30. 제 29 항에 있어서,
    실행될 때, 상기 하나 이상의 프로세서들로 하여금,
    상기 제 1 LUT 입력 값, 상기 제 2 LUT 입력 값, 상기 제 2 LUT 출력 값, 상기 제 3 LUT 입력 값, 및 상기 제 3 LUT 출력 값 중 적어도 하나에 추가로 기초하여, 상기 제 1 내삽된 LUT 출력 값을 발생시키게 하고; 그리고
    상기 잡음 값, 상기 제 1 LUT 입력 값에의 상기 제 2 또는 제 3 LUT 입력 값의 근접, 및 상기 제 1 LUT 입력 값에의 상기 제 2 또는 제 3 LUT 입력 값의 비-근접 중 적어도 하나에 기초하여, 상기 제 2 LUT 입력 값 또는 상기 제 3 LUT 입력 값을 선택하게 하는, 저장된 명령들을 더 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
KR1020187010379A 2015-09-14 2016-08-03 디더 지향된 lut 출력 값 내삽 KR20180053715A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562218333P 2015-09-14 2015-09-14
US62/218,333 2015-09-14
US14/939,749 US9639920B2 (en) 2015-09-14 2015-11-12 Dither directed LUT output value interpolation
US14/939,749 2015-11-12
PCT/US2016/045345 WO2017048389A1 (en) 2015-09-14 2016-08-03 Dither directed lut output value interpolation

Publications (1)

Publication Number Publication Date
KR20180053715A true KR20180053715A (ko) 2018-05-23

Family

ID=58237000

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187010379A KR20180053715A (ko) 2015-09-14 2016-08-03 디더 지향된 lut 출력 값 내삽

Country Status (6)

Country Link
US (1) US9639920B2 (ko)
EP (1) EP3350768A1 (ko)
JP (1) JP2018530062A (ko)
KR (1) KR20180053715A (ko)
CN (1) CN108027963A (ko)
WO (1) WO2017048389A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10321164B2 (en) * 2015-09-29 2019-06-11 Apple Inc. System and method for improving graphics and other signal results through signal transformation and application of dithering
US9848141B2 (en) * 2016-05-10 2017-12-19 Semiconductor Components Industries, Llc Image pixels having processed signal storage capabilities
US10475164B2 (en) 2017-09-12 2019-11-12 Qualcomm Incorporated Artifact detection in a contrast enhanced output image
CN108322723B (zh) * 2018-02-06 2020-01-24 深圳创维-Rgb电子有限公司 一种色彩失真的补偿方法、装置和电视机
US11019014B2 (en) * 2018-12-06 2021-05-25 International Business Machines Corporation Simultaneous message blocking and delivery
KR20200084516A (ko) 2019-01-03 2020-07-13 삼성전자주식회사 디스플레이장치, 영상공급장치, 및 그 제어방법
US11153373B2 (en) * 2019-05-03 2021-10-19 EMC IP Holding Company LLC Method and system for performance-driven load shifting
US11183146B1 (en) * 2020-08-26 2021-11-23 Apple Inc. Curvature interpolation for lookup table

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5377041A (en) 1993-10-27 1994-12-27 Eastman Kodak Company Method and apparatus employing mean preserving spatial modulation for transforming a digital color image signal
JP4035176B2 (ja) 1995-11-06 2008-01-16 キヤノン株式会社 画像処理装置及び方法
US5905490A (en) 1996-02-26 1999-05-18 Seiko Epson Corporation Generating color-correction look-up-table addresses by multi-level half-toning
US6809740B1 (en) 2000-07-26 2004-10-26 Lexmark International, Inc. Dithered quantization using neighborhood mask array to approximate interpolate
US7656950B2 (en) 2002-05-29 2010-02-02 Diego Garrido Video interpolation coding
US7590299B2 (en) 2004-06-10 2009-09-15 Samsung Electronics Co., Ltd. Increasing gamma accuracy in quantized systems
JP4683994B2 (ja) * 2005-04-28 2011-05-18 オリンパス株式会社 画像処理装置、画像処理方法、電子カメラ、スキャナ
CN100479495C (zh) * 2007-02-09 2009-04-15 天津大学 采用运动检测和自适应加权滤波的去隔行方法
US8711249B2 (en) * 2007-03-29 2014-04-29 Sony Corporation Method of and apparatus for image denoising
US8401329B2 (en) 2007-07-04 2013-03-19 Nec Corporation Image processing device, display device and image processing method, and its program
JP5374217B2 (ja) * 2009-04-22 2013-12-25 キヤノン株式会社 画像処理装置およびその方法
JP2011091595A (ja) * 2009-10-22 2011-05-06 Kyocera Mita Corp 画像処理装置、画像処理方法及び画像形成装置
WO2012035749A1 (ja) 2010-09-17 2012-03-22 日本電気株式会社 映像符号化装置および映像復号装置

Also Published As

Publication number Publication date
WO2017048389A1 (en) 2017-03-23
EP3350768A1 (en) 2018-07-25
JP2018530062A (ja) 2018-10-11
CN108027963A (zh) 2018-05-11
US20170076431A1 (en) 2017-03-16
US9639920B2 (en) 2017-05-02

Similar Documents

Publication Publication Date Title
KR20180053715A (ko) 디더 지향된 lut 출력 값 내삽
JP5722761B2 (ja) 動画圧縮装置、画像処理装置、動画圧縮方法、画像処理方法、および動画圧縮ファイルのデータ構造
US8570441B2 (en) One pass video processing and composition for high-definition video
KR20190100416A (ko) 하이 다이내믹 레인지 이미지들에 대한 톤 곡선 매핑
JP2014056240A (ja) デュアル変調器ディスプレイ上での高速画像レンダリング
US10339850B2 (en) Low-latency display
JP2016213828A (ja) 広色域映像符号化用の知覚色変換
KR20110020712A (ko) 픽셀상에서 수행되는 테스트에 따른 색좌표 웨이트를 가진 서브픽셀 렌더링
US20150279055A1 (en) Mipmap compression
CN110291562B (zh) 缓冲器索引格式和压缩
US8760465B2 (en) Method and apparatus to increase bit-depth on gray-scale and multi-channel images (inverse dithering)
US9111328B2 (en) Texture compression and decompression
KR20230084153A (ko) 복수의 프레임들을 사용한 히스토그램 기반 및 적응적 톤 매핑을 위한 방법들 및 장치
US11263786B2 (en) Decoding data arrays
US8655063B2 (en) Decoding system and method operable on encoded texture element blocks
US10250892B2 (en) Techniques for nonlinear chrominance upsampling
US10475164B2 (en) Artifact detection in a contrast enhanced output image
US9129543B2 (en) Texture compression and decompression
US20110221775A1 (en) Method for transforming displaying images
US11582464B2 (en) Using morphological operations to process frame masks in video content
CN116843736A (zh) 场景渲染方法及装置、计算设备、存储介质和程序产品
JP2017536740A (ja) ハイブリッドブロックベースの圧縮
CN116129816B (zh) 像素渲染方法、装置、计算机设备和存储介质
US11601665B2 (en) Embedding frame masks in a video stream
US11301973B2 (en) Tone mapping method