KR101213824B1 - 선형 광 값들을 이용한 이미지 처리 및 기타 이미지 처리 개선 - Google Patents

선형 광 값들을 이용한 이미지 처리 및 기타 이미지 처리 개선 Download PDF

Info

Publication number
KR101213824B1
KR101213824B1 KR1020067026069A KR20067026069A KR101213824B1 KR 101213824 B1 KR101213824 B1 KR 101213824B1 KR 1020067026069 A KR1020067026069 A KR 1020067026069A KR 20067026069 A KR20067026069 A KR 20067026069A KR 101213824 B1 KR101213824 B1 KR 101213824B1
Authority
KR
South Korea
Prior art keywords
delete delete
image information
information
processing
image
Prior art date
Application number
KR1020067026069A
Other languages
English (en)
Other versions
KR20070049113A (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 claimed from US10/902,325 external-priority patent/US7643675B2/en
Priority claimed from US10/987,378 external-priority patent/US7158668B2/en
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20070049113A publication Critical patent/KR20070049113A/ko
Application granted granted Critical
Publication of KR101213824B1 publication Critical patent/KR101213824B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/21Circuitry for suppressing or minimising disturbance, e.g. moiré or halo
    • 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/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/49Partial evaluation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/265Mixing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0117Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal
    • H04N7/012Conversion between an interlaced and a progressive signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/646Circuits for processing colour signals for image enhancement, e.g. vertical detail restoration, cross-colour elimination, contour correction, chrominance trapping filters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/68Circuits for processing colour signals for controlling the amplitude of colour signals, e.g. automatic chroma control circuits
    • H04N9/69Circuits for processing colour signals for controlling the amplitude of colour signals, e.g. automatic chroma control circuits for modifying the colour signals by gamma correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Color Image Communication Systems (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Color Television Systems (AREA)
  • Television Systems (AREA)

Abstract

(비선형 형태로 데이터를 처리하는 것에 비해) 아티팩트의 양을 줄이기 위해 선형 형태로 이미지 정보를 처리하기 위한 전략이 기술된다. 예시적인 처리 동작 유형은 스케일링, 합성, 알파 블렌딩, 에지 검출, 등을 포함할 수 있다. 보다 구체적인 구현으로, a) 선형이고; b) RGB 컬러 공간에 있고; c) (예를 들면, 부동 소숫점형 표현에 의해 제공된) 고 정밀도이고; d) 순차주사식이며; e) 풀 채널인 이미지 정보를 처리하기 위한 전략이 기술된다. 다른 개선 사항은 a) 처리 속도를 향상시키기 위한 의사-선형 공간에서의 이미지 정보 처리; b) 향상된 오차 분산 기법 구현; c) 동적으로 필터 커널 계산 및 적용; d) 최적의 방식으로 된 파이프라인 코드 제공; 및 e) 신규의 픽셀 셰이더 기법을 이용하는 다양한 처리 태스크 구현을 위한 전략을 제공한다.
선형 공간, 비월주사, 순차주사, 픽셀 셰이더, 오차 분산 기법, RGB 컬러 공간

Description

선형 광 값들을 이용한 이미지 처리 및 기타 이미지 처리 개선{IMAGE PROCESSING USING LINEAR LIGHT VALUES AND OTHER IMAGE PROCESSING IMPROVEMENTS}
본 출원은 발명자가 Glenn F. Evans 및 Stephen J. Estrop이며, 2004년 7월 29일에 출원되고 발명의 명칭이 "Strategies for Processing Image Information Using a Color Information Data Structure"인 계류중인 미국 출원 제10/902,325호('325 출원)의 일부 계속 출원이다. '325 출원은, 2003년 8월 1일에 출원된 미국 가출원 제60/492,029호('029 출원)의 우선권을 주장한다. 이 '325 출원과 '029 출원은 그 전체가 본 명세서에 참조로서 포함된다.
본 발명은 이미지 정보를 처리하기 위한 전략에 관한 것으로, 보다 상세히는 비디오 처리 파이프라인을 이용하여 비디오 이미지 정보를 처리하기 위한 전략에 관한 것이다.
비디오 처리 분야에 있어서의 예시적인 문제점들
오늘날 사용되고 있는 비디오 처리 기술은 수년에 걸친 이러한 기술의 진화를 추적함으로써 가장 잘 이해될 수 있다. 그 당시 산업이 직면했던 문제점들을 해결하는 특징들이 진화의 각종 단계에서 추가되어 왔다. 호환성과 일관성을 유지하기 위해, 이후의 기술들은, 이 특징들이 설계될 때 해결하고자 했던 문제점들이 그 이후 사라졌음에도 불구하고, 이 특징들 중 일부를 유지해왔다. 그 결과, 현재의 기술은, 서로 다른 시기에 산업이 직면했던 이전의 일련의 문제점들을 반영하는 이러한 역사적 기반의 특징들의 응집체라 할 수 있으며, 표준 그룹, 변화하는 기술 기반 제약 및 기회 사이에서 절충된다.
비디오 처리 기술의 상술된 특성의 결과, 이 분야에서 종사하고 있는 자들은 비디오 처리 기술의 특정 양태에 관해 고정 관념(entrenched mindset)을 지니게 되었다. 특정 비디오 정보를 어떻게 해석하는가에 관한 고정 관념이 있고, 이러한 비디오 정보를 어떻게 "올바르게" 처리하는가에 관한 고정 관념이 있다. 본 발명자에 의해 인식되는 바와 같이, 이러한 고정 관념들 중 다수가 제대로 된 것이 아니어서 재고될 필요가 있다.
고정 관념들 중 주요 고정 관념은, 비디오 정보가 일반적으로 방송 소스, 저장 매체(예를 들면, DVD 디스크), 또는 다른 소스로부터 이 정보가 수신되는 형태로 처리되어야만 한다는 것이다. 그러나, 많은 비디오 표준은 비디오 정보가 디스플레이되기 전에 처리되는 것을 기대하며 설계되지 않았다. 예를 들면, 종래의 텔레비전은 복잡한 처리 기능을 수용하지 않는다; 이 장치는 단지 비디오 정보를 수신하고 이를 디스플레이한다. 이와 같이, 비디오 정보가 수신되는 형태는 이러한 정보의 효율적인 처리를 즉시 수용하지 못한다.
그 결과, 용인된 비디오 정보의 여러 형태에 표준 처리 알고리즘을 직접 적용함으로써 다양한 아티팩트(artifacts)가 생겨났다. 일부 경우 당업자들은 이 아티팩트를 주목해왔다. 그러나, 이용되고 있는 기술의 기본 전제에 이의를 제기하 기보다는, 당업자들은 종종 이 문제점들을 개선하는 데 있어 편협적인 단편들에 의지해왔다. 이러한 해결책은 임의의 고유의 응용 상황에서의 문제점을 감출 수는 있지만, 대개 그 문제를 해결하지는 못한다.
예를 들면, 비디오 정보는 비선형이고(nonlinear), 비월주사되며(interlaced), 크로마 서브샘플링되고(chroma subsampled), 루마(luma)-관련 컬러 공간의 일부 변형(예를 들면, Y'U'V' 정보)으로 표현된 형태로 비디오 처리 파이프라인에 의해 종종 수신된다(용어 "비선형"은 들어오는 신호와 이 신호로부터 생성되는 결과 출력 밝기 간에 비선형 관계가 있다는 것을 의미함; 상기 문장에서의 다른 용어는 이하에 자세히 설명될 것임). 당업자들은 비디오 정보의 크기를 조정하거나, 비디오 정보를 다른 정보와 결합(합성)시키는 등에 의해, 규정된 방식으로 정보를 수정하기 위해, 이 정보에 각종 선형-유형의 처리 알고리즘을 적용하고자 할 수 있다. 본 발명자에 의해 인식되는 바와 같이, 이러한 특성의 비선형 비디오 정보를 처리할 때, 이러한 알고리즘 중 다수가 최적의 결과 또는 심지어는 옳은 결과를 제공하지 못한다. 비월주사 크로마 서브샘플링된 4:2:2 또는 4:2:0 정보(이하에 정의될 것임)로만 작업하면 이러한 나쁜 결과를 악화시킨다. 예를 들면, 4:2:2 또는 4:2:0으로 정보를 처리하면 비디오 처리 파이프라인의 다른 단계 전체에 걸쳐 오차를 전파하게 된다.
육안으로 식별할 수 있거나 또는 식별할 수 없는, 다양한 아티펙트로 된 처리된 결과의 결함이 분명히 나타난다. 다시 언급하자면, 당업자들은 나쁜 결과에 주목했지만 그 원인을 알아내지 못했다. 일부 경우, 이것은 당업자가 많은 비디오 코딩 표준의 복잡한 특성을 완전히 이해하지 못했기 때문일 수 있다. 다른 경우, 당업자들은 자신들이 비선형 정보를 처리하기 위해 선형 알고리즘을 이용하고 있다는 것을 모를 수도 있다; 사실, 일부 경우, 당업자들은 자신이 선형 정보를 다루고 있다고 잘못 알고 있을 수도 있다. 또한, 비디오 처리 분야에서는 일반적으로, 이미지 정보의 중간 처리 및 이러한 정보 수정이 아니라, 이미지 정보의 생성에 초점을 맞춰 왔다.
선형 유형의 알고리즘을 비선형 정보에 적용하는 것은, 비디오 처리 분야에서의 상술된 고정 관념의 단지 일례다. 이하에 설명되는 바와 같이, 예를 들면 디더링(dithering)의 경우에서와 같이, 최적의 결과를 만들지 못하는 많은 다른 기술이 정정되어 오고 있다. 예를 들면, 당업자들은, 적은 양의 임의 잡음을 입력 이미지 정보에 추가하여 그 결과 잡음 이미지를 양자화함으로써, 일부 디더링-양자화 알고리즘에 의해 발생된 아티팩트를 개선시키고자 할 수 있다. 이러한 기술은 잡음 이미지와 양자화된 결과 간의 차를 계산함으로써 양자화 오차를 평가한다. 이것은 디더링 아티팩트를 해결하는 효과가 있을 수 있지만, 그 대가로 본래의 이미지 정보에 추가된 임의 잡음의 양에 비례하여 출력 이미지의 잡음이 심해진다.
비디오 처리 업계에는, 중요하지만 포착하기 어려운 결점을 인식하지 못한 채, 관습적으로 그리고 익숙하기 때문에 계속해서 적용되고 있는 고정된 생각의 다른 예가 많이 있다. 본 명세서에 기술된 개선 사항의 주요 주제는, 대안의 해결책의 설계와 함께 이러한 완고한 생각을 재고하는 것을 포함한다.
비디오 처리 분야는 용어가 많다. 따라서, 서두의 항목으로서, 독자들을 돕 기 위해 비디오 처리 분야에서의 일부 논제에 대한 간단한 소개가 이하에 제공될 것이다. 예를 들면, 상술된 용어 일부(선형, 비월주사, 루마, 크로마-서브샘플링 등)가 이하에 정의된다. 용어에 있어서, 본 명세서 전반에서 사용되는 용어 "이미지 정보"는 움직임 비디오 정보를 포함하는(그러나 이에 제한되지는 않음) 임의의 종류의 시각적인 출력으로서 렌더링될 수 있는 광범위한 부류의 정보를 나타내는 데 사용된다.
배경 개념
ㆍ컬러 공간 및 관련된 고려사항
컬러는 3개의 성분을 이용하여 지정될 수 있다. 불연속적인 컬러 성분들을 이용하는 컬러 성분량의 전송에 의존하는 이미지 스트림을 성분 비디오라 지칭한다. 한 일반적인 지정법은 적색, 녹색 및 청색(RGB) 성분을 이용하여 정의한다. 보다 형식적으로, RGB 성분은 소정의 스펙트럼에 같은 컬러로 인식되는 컬러를 생성하는 기준 램프의 비례 강도를 기술한다. 일반적으로 RGB 컬러 공간은 자신의 컬러 프라이머리들 및 자신의 백색점에 관련된 크로마 값에 의해 지정될 수 있다. 백색점은 기준 흰색과 관련된 크로마를 지칭한다.
컬러 이미지들을 재현하는 전자 장치는 3가지 유형의 광원을 제공함으로써 사람의 시각의 3원색 성질을 보완한다. 이 3가지 유형의 광원은 사람 관측자에게 서로 다른 컬러로서 인지되는 서로 다른 스펙트럼 반응들을 산출한다. 예를 들면, 음극선관(CRT)은 적색, 녹색 및 청색의 형광체(phosphor)들을 제공하여 서로 다른 컬러들을 생성하고, 따라서, 상술된 RGB 컬러 공간의 일부 변형을 보완한다. 다른 기술들은 형광체를 이용하지 않지만, 그 외에도 적어도 3 종류의 빛을 발산하는 광원을 이용하여 색을 재현한다.
그러나, RGB 코딩 모델은 이미지 정보의 전송에서는 비효율적인 선택일 수 있고, 일부 기존의 표준을 잘 따르지 않는다. 따라서, 이미지 정보는 일반적으로 RGB가 아닌 몇몇의 코딩 모델을 이용하여 목표 장치에 전송된다. 수신 시에, 이미지 정보는 디스플레이 장치에 의해 프레젠테이션용 RGB-관련 컬러 공간으로 내부적으로 변환될 수 있다. 표제 "감마 고려사항" 하에 이하 기술될 바와 같이, 각 R, G, 또는 B 성분 데이터는 R', G' 및 B' 값이라 지칭되는 이 성분의 프리-감마(pre-gamma) 수정된 형태로 표현될 수도 있다(일반적으로 관례에 따라, 본 명세서에서 프라임 부호(prime)는 비선형 정보를 나타낸다).
이와 관련한 일반적인 용법은 루마-관련 성분(Y) 및 크로마-관련 성분을 참조하여 컬러를 정의하는 것이다. 루마는 일반적으로 빛의 인식되는 광도(밝기)를 지칭한다. "루마(luma)"(Y')라고 지칭되는, 루마는 비선형 대응부를 산출하기 위해 (이하 "감마 고려사항" 하에 기술될 방식으로) 프리-감마-수정된 형태(pre-gamma-corrected form)로 표현될 수 있다. 크로마 성분은 루마에 관련된 이미지 정보의 컬러 성분량을 정의한다. 예를 들면, 디지털 도메인에서, 심볼 "Cb"는 (통상적으로 8비트 값들에서의 -127...128 범위로부터) 차이 B'-Y'의, n 비트 정수형 스케일링된 표현에 대응하고, 심볼 "Cr"은 차이 R'-Y'의, n 비트 정수형 스케일링된 표현에 대응한다. 심볼 "Pb"는 Cb의 아날로그 대응부를 지칭하고, 심볼 "Pr"은 Cr의 아날로그 대응부를 지칭한다. 심볼 Pb 및 Pr은 또한 [-0.5...0.5]의 공칭 범 위를 가지는 디지털 정규화된 형태의 Cb 또는 Cr을 지칭할 수 있다. CbCr 및 PbPr에 의해 정의되는 성분 이미지 정보는 비선형 정보를 표현할 때 형식적으로 프라임 부호가 붙을 수 있다(예를 들면, Cb'Cr' 및 Pb'Pr'). 그러나, Pb, Pr, Cb 또는 Cr이 항상 비선형 데이터를 지칭하는 것은 아니기 때문에, 프라임 표기는 종종 편리성과 관례에 따라 생략될 수 있다(예를 들면, Y'PbPr이 Y'Pb'Pr' 대신에 사용됨).
컬러 성분량은 또한 (상술한 성분 비디오가 아닌) 복합 비디오로서 통신될 수 있다. 복합 신호는 루마 및 크로마 정보를 한 신호로 결합시킨다. 예를 들면, 코딩 시스템 Y'UV에서, U는 B-Y의 스케일된 버전을 나타내고 V는 R-Y의 스케일된 버전을 나타낸다. 그러면 이들 루마 및 크로마 성분은 하나의 신호를 제공하도록 처리된다. 코딩 시스템 Y'IQ는 상술한 방식으로 U 및 V 성분을 변환함으로써 형성된 또 다른 복합 코딩 시스템을 정의한다. 업계에서 역사적으로 이들 Y-관련 컬러 공간(Y'CbCr, Y'PbPr, YUV, YIQ 등)의 사용을 장려한 한 이유는, 이들 컬러 공간 내의 컬러 이미지 정보를 줄이는 것이 RGB 컬러 공간에 표현되는 이미지 정보에 비해 보다 쉽게 수행될 수 있기 때문이다. 이 컬러 공간은 또한 역행하여 흑백 이미지 정보를 위해 개발된 기존의 표준과 호환가능하다. "루마-관련 정보"라는 용어는 일반적으로 밝기-관련 성분 및 크로마-관련 성분을 지니는 임의의 컬러 공간을 지칭하며, 이것은 적어도 상술된 컬러 공간 전부를 포함한다.
하나 이상의 행렬 유사 변환을 이용하여 하나의 컬러 공간으로부터 다른 컬러 공간으로 컬러 성분량을 변환하는 것은 일반적으로 가능하다. 보다 형식적으로, 조건등색(metamerism)의 특성은 컬러 공간 계수의 한 집합을 매칭 함수의 다 른 집합에 의하여 표현하는 것을 가능하게 한다(여기서 "조건등색"은 컬러 공간 계수의 동일한 집합에 매핑되어 동일하게 인식되어 보이는 - 즉, 동일한 색으로 보이는 2개의 스펙트럼을 지칭한다).
ㆍ감마 고려사항
CRT는 선형 반응 변환 함수를 갖지 않는다. 다시 말하면, CRT에 적용되는 전압량과 CRT에 의해 생성되는 결과적인 루마의 관계는 선형 함수를 정의하지 않는다. 보다 상세히 기술하자면, CRT의 예측되는 이론적인 반응은 5/2승 법칙에 비례하는 반응을 가진다; 즉, 소정의 입력 전압 "V"에 대해, CRT의 결과 루마 "L"은 L=V2.5로 계산될 수 있다. 변환 함수는 또한 본 명세서에서는 "감마 반응 함수"라 지칭되며, 전압 신호의 지수는 "감마"라 지칭된다.
한편, 이미지 정보가 카메라 또는 3-D 렌더링 시스템에 의해 캡처될 때, 이미지 정보는 선형 RGB 컬러 공간으로 표현되고, 이것은 들어오는 신호와 출력 밝기 간에 선형 관계가 있다는 것을 의미한다. 카메라의 선형성과 디스플레이의 비선형성 간의 불일치를 해결하기 위해, 카메라는 통상적으로 감마의 반대(inverse)를 적용하여 생성된 신호를 미리-보상한다. 즉, 카메라의 변환 함수(때때로 인코딩 변환 함수라 지칭됨)는, CRT 루마 반응의 근사적인 역함수이다. 인코딩 변환 함수(또는 역 감마)의 적용 결과는 비선형 형태로 "감마 수정된" 이미지 정보를 산출한다. 비선형 신호가 디스플레이 장치를 지나갈 때, 선형에 가까운 루마가 산출된다. 다시 한번, 상술된 표기에 따라서, 비선형(또는 미리 보상된) 이미지 정보는, 예를 들면, R'G'B' 또는 Y'CbCr(여기서, Cb 및 Cr 성분의 프라임 부호가 내포되어 있음)과 같이 그 성분에 프라임 부호를 붙여 표시된다.
따라서, 이미지 정보를 루마-크로마 비선형 (보상된) 형태로 저장하고 전송하는 것이 일반적이며 표준이 되어 왔다. 호환성을 유지하기 위해, CRT에 디스플레이될 신호를 산출하는 모든 소스는 반드시 먼저 역함수를 신호에 적용해야만 한다.
특수한 고려사항으로서, 변환 함수를 이용하는 이미지 정보의 인코딩은 일반적으로 함수의 저전압 영역에 특수한 근사 함수를 적용시킨다. 즉, 인코딩 기법은 일반적으로 이러한 부분에 선형 세그먼트를 제공하여 이미지 센서 내의 잡음의 영향을 줄인다. 이 세그먼트는 "선형 테일(tail)"이라 지칭되며, 정의된 "토우 사면(toe slope)"을 가진다. 이 세그먼트는 실제 CRT에 제공된 이미지 정보의 질을 향상시키는데, 그 이유는 이 장치가 그 물리적 구조로 인해 0에 가까운 루마-전압 반응을 갖기 때문이다.
ㆍ루마 정보에 관련된 크로마 정보의 샘플링 및 정렬
사람의 시각은 빛의 크로마 성분보다 빛의 광도의 변화에 더 잘 반응한다. 코딩 시스템은 이러한 사실을 이용하여 루마 정보(Y')의 양에 관련하여 코딩된 크로마(CbCr) 정보의 총량을 줄인다. 이 기법은 크로마 서브-샘플링이라 지칭된다. 일반적으로 L:M:N으로서 표현된 숫자 표기가 이 샘플링 전략을 표현하는 데에 이용될 수 있는데, 여기서 "L"은 루마 성분(Y')의 샘플링 기준 인자를 나타내고, "M" 및 "N"은 루마 샘플링(Y')에 관련된 크로마 샘플링(예를 들면, 각각 Cb 및 Cr)을 지칭한다. 예를 들면, 4:4:4 표기는 매 루마 샘플 당 하나의 크로마 샘플이 존재하는 Y'CbCr 데이터를 나타낼 수 있다. 4:2:2 표기는 매 2개의 루마 샘플 당 (균일하게) 1개의 크로마 샘플이 존재하는 Y'CbCr 데이터를 나타낼 수 있다. 4:2:0 표기는 매 2×2 클러스터의 루마 샘플 당 하나의 크로마 샘플이 존재하는 Y'CbCr 데이터를 나타낼 수 있다. 4:1:1 표기는 매 4개의 루마 샘플 당 (균일하게) 하나의 크로마 샘플이 존재하는 Y'CbCr 데이터를 나타낼 수 있다.
코딩 전략이 크로마 정보보다 루마 정보를 더 제공하는 이들 환경에서, 디코더는 공급되는 크로마 정보에 기초하여 보간법(interpolation)을 수행함으로써 "상실된" 크로마 정보를 복원할 수 있다. 보다 일반적으로, 다운-샘플링(downsampling)은 이미지 샘플의 초기 집합에 비하여 더 작은 이미지 샘플을 산출하는 임의의 기법을 지칭한다. 업-샘플링(upsampling)은 이미지 샘플의 초기 집합에 비하여 더 많은 이미지 샘플을 산출하는 임의의 기법을 지칭한다. 그러므로, 상술된 보간법은 업-샘플링의 한 유형을 정의한다.
코딩 전략은 또한 크로마 샘플이 대응하는 루마 샘플에 공간적으로 "정렬"되는 방식을 지정한다. 코딩 전략들은 이와 관련하여 달라진다. 몇몇은 루마 샘플로 크로마 샘플을 정렬하여, 크로마 샘플이 루마 샘플 "위에" 바로 위치되도록 한다. 이를 코싸이팅(cositing)이라 지칭한다. 다른 전략은 루마 샘플의 2차원 배열 내의 빈틈의 공간에 크로마 샘플을 위치시킨다.
ㆍ양자화 고려사항
양자화는 불연속적인 숫자 값들이 컬러 성분들(또는 흑백 정보)의 신호 진폭 들에 할당되는 방법을 지칭한다. 디지털 도메인에서, 숫자 값들은 규정된 개수의 단계들로 컬러 공간 값의 규정된 범위(가뭇(gamut))에 걸쳐 있다. 예를 들면, 각각의 성분이 0 내지 255까지의 값을 가정할 수 있도록, 각 성분값을 기술하기 위한 255 단계를 이용하는 것이 일반적이다. 8 비트를 이용하여 각 컬러 값을 표현하는 것이 일반적이다.
고 정밀도(precision) 숫자를 저 정밀도 숫자로 변환하는 것은 종종 다양한 아티팩트를 산출할 수 있다. 플로이드-스텐버그 알고리즘과 같은 각종 오차 분산 알고리즘이 이러한 문제점을 해결하기 위해 고안되었다. 오차 분산 알고리즘은 이웃하는 픽셀 위치에 대한 양자화의 반올림 결과에 의해 산출되는 오차를 분산시킬 수 있다. 플로이드-스텐버그플로이드-스텐버그 추가의 배경 정보는 이하의 상세한 설명 내에서 제공된다.
ㆍ비월주사(interlaced) 대 순차주사(progressive) 표현 고려사항
원래, 텔레비전은 탑-다운(top-down) 순차주사 스위프(sweep) 방식으로 흑백 이미지만을 디스플레이했다. 오늘날, 종래의 텔레비전 신호는 비월주사 방식으로 주사된다. 비월주사 방식에서, 비디오 프레임의 제1 필드가 캡처되고, 바로 그 이후에, 비디오 프레임의 제2 필드(1/50초 또는 1/60초 이후)가 뒤따라온다. 제2 필드는 제1 필드의 주사 라인들 간의 틈 공간 내의 정보를 캡쳐하도록, 제2 필드는 제1 필드와 소량 정도 수직으로 관련된 오프셋이다. 사람 뷰어가 비디오 정보를 정보의 끊임없는 한 흐름으로 일반적으로 인식하도록 제1 및 제2 필드를 빨리 이어 디스플레이함으로써 비디오 정보가 제공된다.
그러나, 컴퓨터 모니터 및 다른 표시 장비는 탈-비월주사 방식인 순차주사 방식으로 이미지 정보를 디스플레이한다. 그러므로, 장치가 컴퓨터 모니터에 비월주사된 정보를 나타내기 위해서는, 장치는 대항 필드에 대한 데이터를 보간함("탈-비월주사"라고 지칭되는 프로세스)으로써 비월주사된 필드율로 순차주사식 프레임을 디스플레이해야 한다. 예를 들면, 비월주사된 필드를 디스플레이하기 위하여, 두 쪽 중 한 쪽에서 필드를 검사함으로써 라인들 간의 공간적 위치에 대해 "상실된" 데이터를 보간해야만 한다. 용어 "순차주사식 이미지 포맷"은 일반적으로 임의의 탈-비월주사된 이미지 포맷을 지칭한다.
(예를 들면, 비디오 카메라로부터의) 이미지 정보는 통상적으로, 예를 들면, 제1 필드가 제2 필드와 (의미론적으로) 분리되어 저장되는 비월주사 형태로 저장된다. 이미지 정보가 단지 비월주사 TV 디스플레이상에 디스플레이될 것이면, 그 Y'UV 비월주사 정보는 CRT로 바로 전달될 수 있다. CRT는 그 Y'UV 정보를 R'G'B' 정보로 내부적으로 변환하고, 이 신호를 이용하여 출력 건(guns)을 구동한다.
비월주사는 그것이 이미지 정보의 유효 수직 해상도를 두 배가 되게 하기 때문에 이롭다. 그러나, 비월주사는 또한 아티팩트를 만든다. 이것은, 물체가 60Hz로 이동될 수 있지만, 비월주사 표시에서는 정보의 반만이 매 30Hz마다 보여지기 때문이다. 이러한 현상에 의해 산출되는 아티팩트는 종종 "페더링(feathering)"이라 지칭된다. 이 아티팩트는 특히 대상이 짝수 라인과 홀수 라인으로 분리된 것으로 보이는 하이 모션 비디오(high motion video)의 디스플레이에서 나타난다.
상술된 배경 개념 각각에 대한 추가의 정보는 Charles Poyton의 "Digital Video and HDTV(Morgan Kaufmann Publishers, 2003)"과 같은, 많은 입문 텍스트에서 얻을 수 있다.
(비선형 형태의 데이터 처리에 비해) 아티팩트의 양을 감소시키는, 선형 형태의 이미지 정보 처리를 위한 전략이 기술된다. 처리 동작의 예시적인 유형으로는, 스케일링(scaling), 합성(compositing), 알파-블렌딩(alpha-bleding), 에지 검출(edge detection) 등이 있다. 더 구체적인 구현에서는, a) 선형이며, b) RGB 컬러 공간에 있고, c) (예를 들면, 부동 소수점형 표현으로 제공되는) 고 정밀도이며, d) 순차주사식이며, e) 풀(full) 채널인 이미지 정보를 처리하기 위한 전략이 기술된다. 다른 개선 사항은, a) 처리 속도를 향상시키기 위해 의사-선형 공간에서 이미지 정보를 처리하고, b) 개선된 오차 분산 기법을 구현하고, c) 필터 커널을 동적으로 계산하여 적용하고, d) 최적의 방식으로 파이프라인 코드를 생성하고, e) 신규의 픽셀 셰이더(shader) 기법을 이용하여 각종 처리 태스크를 구현하기 위한 전략을 제공한다.
도 1은 선형 포맷으로 이미지 정보를 처리하는 것을 포함하는 예시적인 이미지 처리 파이프라인을 도시하는 도면.
도 2는 도 1의 이미지 처리 파이프라인을 이용하여 선형 포맷으로 이미지 정보를 처리하기 위한 예시적인 처리를 도시하는 도면.
도 3은 아티팩트를 일으키지 않으면서 이미지 정보를 처리하는 데 있어서의 몇몇 도전 과제를 설명하기 위한 수단으로서 4:2:0 이미지 정보 샘플을 도시하는 도면.
도 4는 의사-선형 형태의 이미지 정보 처리를 수용하는 이미지 처리 파이프라인의 예시적인 부분을 도시하는 도면.
도 5는 도 4에 도시된 이미지 처리 파이프라인 부분을 이용하여 의사-선형 형태로 이미지 정보를 처리하기 위한 예시적인 처리를 도시하는 도면.
도 6 및 도 7은 디더링 및 오차 분산을 수행하는 공지된 접근법을 함께 설명하는 도면.
도 8은 도 6 및 도 7과 관련하여 기술된 모델에 비해 뛰어난 결과물을 산출하는, 디더링과 오차 분산을 제공하기 위한 예시적인 시스템을 도시하는 도면.
도 9는 도 8의 시스템을 이용하여 디더링과 오차 분산을 수행하기 위한 예시적인 처리를 도시하는 도면.
도 10은 필터 커널의 동적 계산을 포함하는, 스케일링을 수행할 때 필터링을 제공하기 위한 예시적인 시스템을 도시하는 도면.
도 11은 도 10의 시스템을 이용하여 필터링을 수행하기 위한 예시적인 처리를 도시하는 도면.
도 12는 본 명세서에 기술된 임의의 개선 사항을 포함할 수 있는 예시적인 이미지 처리 파이프라인을 도시하는 도면.
도 13은, 예를 들면, 특정 이미지 처리 적용에 필요하지 않은 코드 모듈을 제거함으로써, 도 12의 이미지 처리 파이프라인을 구현하는 데에 사용되는 효율적 인 코드를 생성하기 위한 예시적인 시스템을 도시하는 도면.
도 14는 도 13에 도시된 코드 최적화 시스템을 적용하기 위한 예시적인 처리를 도시하는 도면.
도 15는 픽셀 셰이더 기능을 포함하는 그래픽 처리 장치(graphical processing unit:GPU)를 이용함으로써 도 12의 이미지 처리 파이프라인을 구현하기 위한 예시적인 시스템을 도시하는 도면.
도 16은 공지의 픽셀 셰이더 설계를 도시하는 도면.
도 17은 통상적인 그래픽 적용에 관련하여 텍스처 정보를 다각형에 적용하는 것에 관한 일반적인 원리를 도시하는 도면.
도 18은 픽셀 셰이더를 이용하는 4-탭 필터의 예시적인 구현을 도시하는 도면.
도 19는 도 18의 필터의 동작을 설명하는 예시적인 처리를 도시하는 도면.
도 20은 픽셀 셰이더를 이용하는 도 1의 이미지 처리 파이프라인의 양태들의 보다 일반적인 구현을 도시하는 도면.
도 21은 이전의 도면들에 도시된 각종 특징의 양태들을 구현하기 위한 예시적인 컴퓨터 환경을 도시하는 도면.
명세서 및 도면 전체에 걸쳐 동일한 참조번호는 동일한 구성 요소 및 특징을 참조하도록 사용된다. 100 계열 번호는 도 1에 처음으로 나타난 특징을 지칭하고, 200 계열 번호는 도 2에 처음으로 나타난 특징을 지칭하며, 300 계열 번호는 도 3 에 처음으로 나타난 특징을 지칭하며, 그 이하도 마찬가지다.
이하의 설명은 이미지 처리 파이프라인을 개선시키기 위한 각종 전략을 설명한다. 본 전략은 종래 기술의 고정 관념들을 재고하면서 이미지 정보를 처리하는 새로운 방식을 제안한다. (섹션 A에 기술되어 있는) 제1 부류의 개선 사항은 이론적으로 모든 이미지 처리 파이프라인에 적용될 수 있다. (섹션 B에 기술되어 있는) 제2 부류의 개선 사항은 이미지 처리 파이프라인의 특정 기법에 고유한 응용 또는 특정 구현에 고유한 응용에만 특별히 적용될 수 있다.
한 예시적인 전략에 따르면, 이미지 처리 파이프라인에 의해 수신된 이미지 정보는 선형 형태로 변환된 다음, 이 형태로 처리된다. 한 예시적인 구현에서, 예를 들면, 수신된 루마-관련 이미지 정보(예를 들면, Y'CbCr)는 선형 RGB 형태로 변환되고 이 형태로 처리된다. 예시적인 처리 태스크로는, 탈-비월주사(de-interlacing), 크기 조정(resizing)(스케일링), 합성, 알파-블렌딩, 에지 검출, 선명화(shapening) 등이 있다. 선형 공간에서의 이미지 정보 처리는 일반적으로 아티팩트가 감소된 출력 결과를 생성하기 때문에, (비선형 공간에 비하여) 두드러진 이점을 갖는다.
또 다른 예시적인 전략에 따르면, 이미지 정보는 풀 채널(4:4:4) 및 고 정밀도 포맷으로 변환되고, 이 포맷으로 처리되고, 그 이후에 저 정밀도로의 정보의 양자화가 행해진다. 고 정밀도 정보는 부동 소수점형 포맷으로 표현될 수 있다. 풀 채널 및 고 정밀도 정보의 처리는, 아티팩트가 감소된 출력 결과를 산출할 수 있고, 이 정보가 파이프라인에서 처리되면서 크로마 해상도의 저하를 줄일 수 있기 때문에 바람직하다.
또 다른 예시적인 전략에 따르면, 4:2:0 비월주사 이미지 정보를 처리하기 위한 특별 규정(provision)이 제공된다. 이 특별 규정은 업-샘플링 동작과 탈-비월주사 동작을 통합하는 방식을 제공한다. 이 전략은 많은 이유로 유용하다. 예를 들면, 이 전략은 소위 "크로마-버그(chroma-bug)" 처리 아티팩트를 생성하지 않으면서 4:2:0 정보를 올바르게 처리할 것이라는 것을 더 잘 보장한다.
또 다른 예시적인 전략에 따르면, 이미지 정보를 이론적으로 정확한 선형 공간이 아닌, 의사-선형 공간으로 변환하기 위한 특수한 변환 함수가 적용될 수 있다. 이 적용 이후에 (비선형 신호로의 이들의 적용을 설명하기 위하여 선형-유형의 알고리즘을 수정할 필요 없이) 선형-유형의 알고리즘을 이용하는 이 의사-선형 공간에서의 이미지 정보 상의 처리가 행해진다. 이 전략은 사용가능한 처리 하드웨어를 이용하여 보다 빠르게 수행될 수 있는 수학 연산을 포함하기 때문에 유용하다. 이 전략은 또한 오차 수정 메커니즘을 이 알고리즘에 포함시킴으로써 이미지 처리 알고리즘을 수정할 필요성을 없앤다. 오차 수정 메커니즘의 목표는 비선형 데이터에 작용하는 선형 알고리즘의 사용의 부정적인 영향을 최소화하기 위한 것이었다. 그러나, 이러한 오차 메커니즘의 설계 및 적용은 종종 본래의 처리 알고리즘보다 더 복잡하게 되었다.
또 다른 예시적인 전략에 따르면, 고유의 오차 분산 알고리즘이 적용된다. 본래의 이미지 정보의 각 픽셀에 대해, 알고리즘은 본래의 이미지, 잡음 정보 및 오차 항에 의해 정의된 합계를 양자화한다. 이것은 그 특정 픽셀에 대한 양자화된 값을 산출한다. 다음, 알고리즘은 양자화된 값과 원래 값 간의 차를 계산하여 처리될 후속 픽셀에 대한 오차 항을 계산한다. 이 전략은 본질적으로 본래의 이미지 정보에 잡음을 부가하고, 그 잡음 이미지 정보를 양자화하는 종래 기술의 공지된 전략보다 뛰어나다. 이 공지된 기법은 본래의 이미지 정보가 아니라, 잡음 이미지 정보를 참조하여 오차 항을 계산한다. 따라서, 본 명세서에 개시된 전략과 달리, 공지의 기법은 본래의 이미지 정보에 부가된 잡음 정보에 비례하여 이 본래의 이미지 정보를 저하시킨다. 또 다른 개선사항으로서, 본 명세서에 기술된 전략은, 잡음 생성기가 목표(destination) 이미지 정보에서 아티팩트를 생성하지 않기 위해 충분히 긴 반복 주기와 충분한 "잡음-유사(noise-like)" 의사임의(pseudorandom) 특징을 갖는 잡음 생성기를 사용한다.
또 다른 전략에 따르면, 스케일링 동작을 수행하기 위해 캐츠뮬-롬(Catmull-Rom) 필터의 변형물이 이용된다. 이 전략은 이미지 정보를 크기 조정하기 위해 필요한 필터 커널의 개수와 각 커널이 필요로 하는 탭의 개수를 계산하고, 필터 커널을 사전에 계산하는 것을 포함한다. 이후 이 필터 커널이 이미지 정보에 적용된다. 보다 구체적으로는, 커널은 이미지 행과 열로 된 정보에 반복적으로 적용될 수 있다. 이 전략은 여러 이유로 바람직하다. 예를 들면, 동적으로 계산된 필터 커널을 이용하면 공지의 응용에서 발견되는 아티팩트를 어느 정도 줄일 수 있다. 필터 커널의 사전-계산은 필터의 실제 적용을 촉진시키기 때문에 바람직하다. 최소한의 반복적으로 적용되는 커널의 최소 세트를 현명하게 사용하면 부가적으로 효율-관련 이점을 얻을 수 있다.
또 다른 전략에 따르면, 이미지 처리 파이프라인을 구현하기 위한 코드를 생성하기 위한 기능이 기술된다. 이 기능은 파이프라인이 어떤 종류의 동작을 수행하도록 되어 있는지를 명시하는 요구사항을 수신한 다음, 이 기능을 구현하기 위해 코드 모듈을 이러한 모듈들의 라이브러리로부터 선택적으로 어셈블링한다. 이 기능은 필요하지 않은, 라이브러리로부터의 모듈은 라이브러리로부터 포함시키지 않는다. 이 전략은 여러 이유로 유용하다. 예를 들면, 이것은 더 효율적인 코드 생성을 도와, 더 빨리 실행될 수 있게 한다.
마지막으로, 또 다른 전략은 이미지 처리 파이프라인의 일부 양태 또는 이미지 처리 파이프라인의 기능 모두를 구현하는 GPU를 이용한다. 특정 구현에서는 이미지 필터링을 수행하기 위해 픽셀 셰이더(GPU 내의 디지털 신호 프로세서(digital signal processor:DSP))를 적용한다. 한 경우에서, 픽셀 셰이더의 하나 이상의 텍스처 유닛이 필터 커널의 가중치(weight)에 할당될 수 있고, 하나 이상의 다른 텍스처 유닛이 (커널의 탭과 관련된) 동일한 입력 이미지 정보의 다른 델타-시프트된 버전에 할당될 수 있다. 이 전략은, 픽셀 셰이더의 벡터 처리 기능으로 인해 CPU 구현에 비해 더 나은 처리 속도와 더 나은 처리 용량을 제공할 수 있기 때문에 유용하다.
전략들의 또 다른 특징 및 부수적인 이점은 본 명세서에서 설명될 것이다.
용어에 관해, 용어 "이미지 정보"는 임의의 시각적인 형태로 된, 사용자에 의해 소비될 수 있는 임의의 종류의 정보를 포함하고자 한다. 이미지 정보는 아날로그 포맷, 디지털 포맷, 이 둘의 조합과 같이 임의의 포맷으로 표현된 정보를 나 타낼 수 있다. 이미지 정보는 정지 이미지 정보(예를 들면, 디지털 사진) 및/또는 움직이는 정보(예를 들면, 동영상 정보)를 나타낼 수 있다. 또한 이미지 정보라는 용어를 사용하는 것은 추가의 변형을 고려한다.
용어 "이미지 처리 파이프라인"은 이미지 정보를 처리하기 위한 모든 기능을 지칭한다. 파이프라인은 연속된 방식, 즉 차례대로 이미지 정보 상에서 동작하는 적어도 두 개의 기능적 구성요소를 포함한다.
용어 "선형화"는 비선형의 사전-보상의 형태로부터 선형 형태로 이미지 정보를 변환하는 것을 지칭한다. 용어 "비선형화"는 선형화 동작의 역을 지칭한다.
용어 "루마-관련 이미지 정보"는 밝기-관련 성분(예를 들면, Y') 및 크로마 성분을 갖는 이미지 정보를 지칭한다. 용어 "루마-관련 컬러 공간"은 루마-관련 이미지 정보(예를 들면, Y'CrCb, 등)를 형성하기 위한 복수의 표준 중 임의의 하나를 지칭한다.
일반적으로, 본 명세서 내용의 구조적인 양태로서, 본 명세서에서 기술된 임의의 기능들은 소프트웨어, 펌웨어(예를 들면, 고정형 논리 회로), 수동 처리, 또는 이들 구현의 조합을 이용하여 구현될 수 있다. 본 명세서에서 이용되는 용어 "모듈", "기능" 및 "논리"는 일반적으로 소프트웨어, 펌웨어, 또는 소프트웨어와 펌웨어의 조합을 나타낸다. 소프트웨어 구현의 경우에서, 용어 모듈, 기능, 또는 논리는 처리 장치 또는 장치들(예를 들면, CPU 또는 CPU들) 상에서 실행될 때 특정 태스크를 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 고정형 및/또는 분리형(removable) 컴퓨터 판독가능 메모리 장치에 저장될 수 있다.
본 명세서 내용의 절차적인 양태에서는, 특정 순서로 수행되는 개별적인 단계들로 구성된 특정 동작이 기술된다. 이러한 구현은 예시적이며 제한적이지 않다. 본 명세서에 기술된 특정 단계들이 함께 그룹핑되어 하나의 동작으로 수행될 수 있고, 특정 단계들은 본 명세서에서 설명한 예에서 채용된 순서와는 다른 순서로 수행될 수 있다.
본 명세서는 이하의 내용을 포함한다.
A. 비디오 처리 파이프라인에 대한 예시적인 일반 개선사항
A.1. RGB(선형) 컬러 공간에서의 이미지 정보 처리
A.2. 파이프라인 내에서의 부동 소수점형 풀 채널 이미지 정보의 사용
A.3. 4:2:0 이미지 정보에 대한 특별 규정
A.4. 의사-선형 공간에서의 이미지 정보 처리
A.5. 오차 분산 알고리즘에 대한 개선사항
A.6. 필터 커널의 동적 계산
B. 비디오 처리 파이프라인에 대한 예시적인 구현-관련 개선사항
B.1. 파이프라인 처리 코드의 최적 생성
B.2. 이미지 처리를 수행하기 위한 GPU의 일반적인 사용
B.3. 픽셀 셰이더 관련 개선사항
C. 예시적인 컴퓨터 환경
A. 비디오 처리 파이프라인에 대한 예시적인 일반 개선사항
A.1. RGB (선형) 컬러 공간에서의 이미지 정보 처리
도 1은 이미지 정보(예를 들면, 비디오 정보)를 처리하기 위한 예시적인 이미지 처리 파이프라인(100)을 도시한다. 개관으로서, 상단의 행의 모듈들은 각종 소스 중 임의의 하나(카메라, 스캐너, 디스크, 저장 매체, 디지털 네트워크 등)로부터 이미지 정보를 수신하여 이 이미지 정보를 처리용 형태로 변환한다. 도면의 중간에 있는 큰 모듈은 이러한 처리를 나타내며, 처리된 이미지 정보를 산출한다. 가장 아래 행에 있는 모듈들은 처리된 이미지 정보를 목표 장소(예를 들면, 텔레비전, 컴퓨터 모니터, 저장 매체, 디지털 네트워크 등)에 출력하기에 적절한 임의의 형태로 변환한다.
본 개시물의 별도의 서브섹션들에서 식별된 이미지 처리 파이프라인(100)에 대한 몇 가지 고유하고 유익한 양태가 있다. 본 서브섹션에서는 선형 형태로 이미지 정보를 처리하는 것에 중점을 둘 것이다. RGB 컬러 공간 내에서 순차주사(탈-비월주사) 형태로 이미지 정보를 처리하는 것으로부터 추가적인 개선사항들이 발생한다. 반면, 종래 기술의 통상적인 접근방법은 4:4:4 또는 4:2:2 비월주사 Y'UV 정보 처리를 수행하는 것이다. 본 발명자에 의해 이해되는 바와 같이, 비선형 컬러 공간에서의 이미지 정보 처리는 다양한 아티팩트를 산출한다. 도 1의 파이프라인(100)으로 구현된 접근방법은 이러한 문제점을 극복한다.
이어서 도 1에 도시된 각 모듈을 설명한다.
상단의 모듈들에 관련해서, 비디더링(undithering) 모듈(102)은 제1 정밀도를 갖는 수신된 Y'CbCr 이미지 정보를 제2 정밀도를 갖는 이미지 정보로 변환하며, 여기서 제2 정밀도는 제1 정밀도보다 정밀도가 높다. 모듈(102)은 비디더링유형 처리를 수행함으로써 이 태스크를 수행한다. 즉, 디더링 동작(미도시)은 파이프라인(100)에 제공된 입력 이미지 정보를 제1 정밀도로 양자화하는 데에 사용될 수 있다. 모듈(102)은 사실상 이 양자화 연산의 역으로 적용하여 제2의 더 높은 정밀도를 산출한다.
업-샘플(up-sample) 모듈(104)은 제1 개수의 샘플을 갖는 입력 이미지 정보를 제2 개수의 샘플을 갖는 출력 이미지 정보로 변환시키며, 여기서 제2 개수는 제1 개수보다 많다. 통상적인 적용에서, 이미지 정보는 크로마 정보(Cb 또는 Cr)에 비해 루마 정보(Y')의 샘플이 더 많은 형태로 파이프라인에 의해 수신된다. 이것은 사람의 눈이 루마 정보에 더 민감하기 때문이며, 이로 인해 눈에 띄게 저하되는 것 없이 루마 정보에 비한 크로마 정보의 양을 줄일 수 있다. 업-샘플 모듈(104)은 통상적으로 크로마 샘플이 루마 샘플과 동등해지도록 크로마 샘플의 개수를 증가시키도록 동작한다. 예를 들면, 업-샘플 모듈(104)은 4:2:0 또는 4:2:2 Y'CbCr 이미지 정보를 4:4:4 Y'PbPr 정보로 변환시킬 수 있다. 모듈(104)에 의해 수행되는 이 업-샘플링 동작은 기존의 샘플을 보간함으로써(따라서 사실상 스케일링 동작을 수행함으로써) 샘플의 개수를 늘일 수 있다. 이러한 보간 기법은 종종, 정확한 결과를 제공하기 위해, 서로 다른 표준이 루마 정보에 대해 크로마 정보를 어떻게 배치시키는가에 대해 특별히 고려해야 한다.
모듈(106)은 4:4:4 Y'CbCr 이미지 정보를 다른 컬러 공간, 즉 R'G'B' 컬러 공간으로 변환시키기 위해 그 정보에 행렬 변환을 적용시킨다.
이후 모듈(108)은 변환 함수를 비선형 R'G'B' 이미지 정보에 적용시킴으로써 이 정보를 선형 형태로 변환시킨다. 여기서는 R'G'B' 이미지 정보와 관련된 프라임 부호(')는 이것이 비선형 형태임을 나타낸다는 것을 말하고자 한다; 이 부호가 없는 것(RGB)은 보통 (상술된 바와 같이, 신호가 비선형 정보를 지칭하는 것으로 일반적으로 이해되는 경우, 프라임 부호를 제거하는 것 역시 일반적이라는 것을 제외하고) 선형 데이터를 나타낸다. 도 1의 모듈(108) 아래에 도시된 도 1의 모델 변환 함수는 채용된 변환 함수의 일반적인 형태를 도시하며, 이 형태는 (도시되지 않은) CRT의 본질적인 변환 함수의 일반적인 형태이다. 이 모델 변환 함수는 또한 그 "토우" 영역에 적용되는 특별 고려사항을 설명하기 위해 그 곡선의 V=0 부분 근처에 선형 테일을 채용할 수 있다는 것을 나타낸다.
모듈(110)은 이미지 정보를 비월주사 형태에서 순차주사 형태로 변환하기 위해 이미지 정보에 탈-비월주사 동작을 선택적으로 수행한다. 이 태스크를 수행할 때, 모듈(110)은 RGB 이미지 정보 또는 본래의 Y'CbCr 이미지 정보(특정 경우, 예를 들면, 4:2:0 정보의 경우) 둘 중 하나를 이용하여 처리될 수 있다. 그러나, 탈-비월주사 동작은 선형 RGB 공간에서 수행되는 것이 바람직하다. 이것은 탈-비월주사가 사실상 (예를 들면 기존 샘플의 보간을 포함하는) 이미지 처리의 한 형태이기 때문이다. 따라서, 선형 공간에서 이 처리를 수행하면 더 정확한 결과를 산출할 것이다.
모듈(112)은 선형 RGB 정보의 컬러 프라이머리들을 선택적으로 변환하여 다른 컬러 공간에서 정보를 표현한다. 이 변환은 행렬 변환을 RGB 정보에 적용시켜, 비디오 처리 파이프라인의 다운스트림 구성요소에서 수행되는 처리에 대해 바람직 한 모든 프라이머리들에 대응하도록 컬러 프라이머리들을 변경하는 것을 포함할 수 있다. 한 예에서, 모듈(112)은 각종 상이한 유형의 이미지 정보를 하나의 공통된 컬러 공간으로 변환시킬 수 있으며, 이것은 이후의 동작에서 이 정보들이 함께 혼합되는 것을 용이하게 한다.
모듈(114)은 일반적으로 컬러 공간이 변환된 이미지 정보의 임의의 종류의 처리를 나타낸다. 이 시점에서, 처리는 이 특정 예에서 a) 선형 형태이고, b) RGB 컬러 공간에 있으며, c) 4:4:4 (풀 채널) 형태이며, d) 순차주사 형태인 이미지 정보에 대해 작용한다. 아티팩트를 줄이기 위해서는 처리 작업이 선형 컬러 공간에 일어나는 것이 바람직하지만, 이점을 취하기 위해 이 목록에 나열된 양태들 모두가 이미지 처리 파이프라인에 대해 제공될 필요는 없다.
어떤 경우에서든, 모듈(114)은 임의의 종류의 이미지 정보 처리를 수행할 수 있다. 기본적으로 이 처리는 임의의 종류의 이미지 필터링 동작을 포함하는 이미지 정보에 대한 임의의 변환, 예를 들어, 출력 이미지 = 소정의 함수(입력 이미지)를 포함한다. 이러한 처리 동작의 대표적이며 제한적이지 않는 목록으로는: a) 합성; b) 알파 블렌딩(alpha-blending)(예를 들어, 다양한 페이드(fade) 및 디졸브(dissolve)); c) 에지 검출; d) 선명화; e) 크기 조정(보다 큰 또는 보다 작은 크기의 이미지로 스케일링); f) 탈-비월주사(아직 수행되지 않았을 경우) 등을 포함한다. 합성은 한 유형의 이미지 정보를 또다른 유형의 이미지 정보와 혼합하는 것을 포함한다. 예를 들어, 모듈(114)을 사용하여 DVD 디스크로부터 획득된 비디오 이미지 정보의 상위에서 그래픽(예를 들어, 텍스트 정보)들을 조합할 수 있다. 알파 블렌딩은 (하나의 컬러가 다른 컬러에 블렌딩하는 정도를 결정하는) 알파 인자에 기초하여 컬러들을 서로 블렌딩하는 것을 포함한다. 예를 들어, 블렌딩 동작은 다음 수학식에 의해 제어된다:
최종 컬러 = 소스 컬러 * 소스 블렌드 인자 + 목적 컬러 * 목적 블렌드 인자.
이 수학식에서, 목적 픽셀 컬러는 기존의 장면 내의 픽셀의 컬러를 의미하고, 소스 픽셀 컬러는 블렌딩 엔진이 목적 픽셀에 추가하고자하는 새로운 픽셀 컬러를 의미한다. 블렌딩 인자는 0 내지 1 사이에서 변하며, 소스 및 목적 픽셀 컬러가 최종 컬러 값에 얼마나 많이 기여하는지를 제어하는 데 사용된다. 반복해 말하지만, 이들은 단지 수많은 잠재적인 처리 적용의 대표적 예일 뿐이다. 일반적으로, 다수의 전술된 비디오 처리 적용은 유사변환 가중치(affine weighting)를 소스 이미지 정보와 목표 이미지 정보 간의 전이에 적용한다. 이러한 종류의 응용에서, 비선형 가중치의 사용은 이미지 정보의 전체 루마를 너무 빨리 낮출 수 있다. 이는 본 해결책이 선형 이미지 정보의 처리에 의해 제거 또는 감소될 수 있는 아티팩트의 일례일 뿐이다.
도 1의 하단의 모듈들은 일반적으로 상단의 전술된 동작들을 역으로 행한다. 즉, 모듈(114)에서의 처리 이후, 모듈(116)은 RGB 컬러 공간으로 다시 되돌아가는 등과 같이, 이미지 정보를 다른 컬러 공간으로 선택적으로 변환시킨다. 모듈(118)은 이미지 정보가 비월주사 형태로 저장 또는 디스플레이될 필요가 있을 경우, 그 이미지 정보에 선택적인 재비월주사를 적용한다. 모듈(120)은 변환 함수를 적용하 여, RGB 이미지 정보를 (적절하다면) 비선형 형태 (R'G'B')로 다시 변환시킨다. 모듈(122)은 R'G'B' 이미지 정보의 컬러 공간을 그것의 크로마 성분(예를 들어, PbPr)으로부터 루마 성분(Y')을 분리한 포맷으로 다시 변경한다. 모듈(124)은 Y'PbPr 이미지 정보를 서브샘플링하여, 루마 샘플(Y')의 양에 비해 크로마 샘플(PbPr)의 양을 줄인다. 즉, 이 모듈(124)은 Y'PbPr 4:4:4 이미지 정보(매 루마 샘플당 하나의 크로마 샘플이 존재함)를 Y'PbPr 4:2:2 또는 4:2:0 이미지 정보(루마 샘플에 비해 적은 수의 크로마 샘플이 존재함)로 변환시킬 수 있다. 마지막으로, 모듈(126)은 이미지 정보에 양자화 연산을 적용한다. 양자화 연산은 이미지 정보를 저 정밀도로 변환시켜, 네트워크, 저장 장치, 디스플레이 등에 걸쳐 효율적으로 전송하는 것을 용이하게 하는 효과를 가진다. 양자화 연산은 디더링 동작(dithering operation)과 결합하여, 이 동작을 수행하지 않았다면 양자화에 의해 생성되는 오차를 제거함으로써 발생할 수 있는 아티팩트를 줄일 수 있다. 다음의 서브섹션에서 보다 상세하게 후술될 바와 같이, 디더링 동작은 이미지 정보가 처리되고 있을 때 이러한 오차를 이웃 픽셀들에 퍼트리는 효과를 가지므로, 아티팩트의 영향을 완화시킨다.
도 2는 전술된 동작을 흐름도 형태로 요약한 처리(200)를 나타낸다. 단계(202)는 입력 이미지 정보를 RGB 등의 선형 컬러 공간으로 변환시키는 것을 포함한다. 정보는 또한 순차주사형태로 탈-비월주사되고, 4:4:4 (풀 채널) 포맷으로 업-샘플링되는 것이 바람직하다. 따라서 단계(202)는 도 1의 상단의 모듈들에 대응한다.
단계(204)는 선형 형태로 된 이미지 정보에 대하여 임의의 종류의 처리 태스크들(및 그 조합)이 수행되는 것을 수반한다.
단계(206)는 처리된 선형 이미지 정보를 특정 응용이 요구하는 임의의 출력 포맷으로 변환시키는 것을 나타낸다. 이는 처리된 선형 이미지 정보를 비선형 컬러 공간으로 변환시키고, 그것을 재-비월주사하고, 다운-샘플링하고, 양자화하는 등을 포함할 수 있다. 단계(206)는 도 1의 하단의 모듈들에 대응한다.
A.2. 파이프라인 내에서의 부동 소수점형 풀 채널 이미지 정보의 사용
도 1을 다시 참조하면, 파이프라인(100)은 또한 공지된 전략에 비해 우수한 결과를 제공하는데, 이는 (a) 풀 채널 이미지 정보(즉, 4:4:4)를 사용하기 때문이며, 이 풀 채널 이미지 정보는 (b) 상대적으로 높은 정밀도 및 (c)선택적인 선형 시멘틱을 포함한다. 보다 구체적으로, 전술된 바와 같이, 파이프라인(100)은 수신한 이미지 정보를 본래 형태보다 높은 정밀도로 변환시킨다. 파이프라인(100)은 또한 정보 내의 루마 샘플에 비한 크로마 샘플의 양을 증가시킴으로써 이미지 정보를 풀 채널 형태(4:4:4)로 변환시킨다. 이후 다양한 처리 작업이 고 정밀도 및 풀 채널 이미지 정보 상에서 수행된다. 처리가 수행되고 난 후, 파이프라인(100)은 처리된 이미지 정보를 저 정밀도 서브샘플링된 형태로 선택적으로 다시 한번 변환시킬 수 있다.
일반적으로, 이미지 정보를 고 정밀도 및 풀 채널 형태로 변환시키는 것은 실제로 정보의 잡음 성분에 비한 정보의 신호 성분을 증폭시키므로, 이 정보에 대해서 수행되는 처리로 하여금 보다 정확한 결과를 산출할 수 있게 한다. 반대로, 파이프라인 내의 여러 중간 연결점에서 고 정밀도 및/또는 풀 채널 이미지 정보를 사용하지 못하는, 공지된 전략은 파이프라인을 따라 오차를 전파할 수 있고 (실제로 컬러 내용물을 상실함으로써) 이미지 정보의 해상도를 낮출 수 있다. 도 1은 일반적으로 처리 모듈(128)에 공급되는 참조 번호(128)가 부여된 정보 블록으로 고 정밀도 및 풀 채널 이미지 정보의 처리를 나타낸다(그러나 탈-비월주사 모듈(110)과 같이, 이 도면의 다른 모듈들도 고 정밀도 및 풀 채널 형태의 정보 처리로부터 이점을 얻을 수 있다).
일례가 설명을 보다 구체적으로 나타낼 것이다. 통상의 정밀도 4:2:0 또는 4:4:2 Y'UV 이미지 정보에 비하여, 고 정밀도 선형 RGB 이미지 정보에서 작업하는 것에 대한 이점을 고려해보자. 4:2:0 및 4:4:2 이미지 정보는 루마 정보의 양에 비해 (상대적으로) 1/2 및 1/4의 크로마 정보의 양을 제공한다. 전형적으로 고해상도(HD) 이미지 정보(특히 1920x1080i, 2.07 mpixel)는 1280x720p(0.92 mpixel) 또는 720x480p(0.35 mpixel) 해상도로 다운스케일링된다. 이와 관련하여 파이프라인이 4:2:0 서브샘플링 포맷으로 다운스케일링(예를 들어, 1920x1080 에서 1280x720으로) 동작을 수행하면, 파이프라인은 2.07 mpixel의 루마 정보 및 0.52 mpixel의 크로마 정보를 0.92 mpixel의 루마 정보 및 0.23 mpixel의 크로마 정보로 다운스케일링한다. 그러나 파이프라인이 먼저 4:4:4로 업-샘플링하고, 고 정밀도 RGB(예를 들어, 부동 소숫점형)로 변환시키고, 다운스케일링한 후, 4:4:4 YUV로 변환시키면, 파이프라인은 실제로 0.92 mpixel의 루마 정보 및 0.52 mpixel의 크로마 정보를 유지할이다. 즉, 이와 관련하여 고 정밀도 처리의 사용은 파이프라인이 거 의 모든 본래 크로마 정보를 유지할 수 있게 한다.
고 정밀도 중간 이미지 정보를 얻기 위한 한가지 방법은 부동 소수점형 포맷을 사용하여 정보를 나타내는 것이다. 부동 소수점형 수는 가수 성분 및 지수 성분을 갖는다. 지수 성분은 가수 성분이 어떻게 시프트되는지를 정의한다. 이 포맷에서는, 부동 소수점형 정보는 정보의 표현을 이에 따라 시프트하여(예를 들어, 지수 성분을 바꿈) 매우 낮은 값을 매우 높은 값으로 표현할 수 있다. 16 비트 부동 소수점형 표현, 32 비트 부동 소수점형 표현 등을 포함하는 임의의 수의 비트를 갖는 임의의 종류의 부동 소수점형 표현이 사용될 수 있다. 다른 종류의 부동 소수점형 표현이 사용될 수도 있지만, 이미지 처리 파이프라인(100)에서 사용하기 위한 부동 소수점형에 특별히 적절한 형태는 소위 FP16 부동 소수점형 포맷이다.
A.3. 4:2:0 이미지 정보에 대한 특별 규정
검토하자면, 배경기술에서 설명된 바와 같이, 4:4:4 이미지 정보는 매 4개의 Y' 샘플당 4개의 Cb 및 Cr 샘플을 포함한다. 4:2:2 이미지 정보는 4개의 Y' 샘플당 2개의 Cb 및 Cr 샘플을 포함한다. 4:2:0 이미지 정보는 각각의 스캔 라인 상에 Y'의 절반의 Cb 및 Cr 샘플, 및 Y'의 절반의 Cb 및 Cr 스캔 라인을 포함한다. 즉, 크로마 정보의 해상도는 수직 및 수평 방향 모두에서 루마 정보의 1/2이다. 예를 들어, 풀 이미지 해상도가 720x480이면, 크로마 정보는 오직 360x240에서 저장된다. 4:2:0에서는, 상실된 샘플들은 각각의 스캔 라인에 대하여 보간되어야할 뿐만 아니라, 크로마 정보의 전체 스캔 라인들이 앞의 및 뒤의 스캔 라인으로부터 보간되어야만 한다. 도 3은 MPEG2 비월주사식 4:2:0 이미지 정보의 예를 나타낸다. 4:2:0 이미지 정보의 처리에 대한 다른 정보는 Don Munsil 및 Stacey Spears의 "The Chroma Up-sampling Error and the 4:2:0 Interlaced Chroma Problem," DVD Benchmark (2001년 4월)(2002년 12월, 2003년 1월에 갱신됨)에서 찾을 수 있다.
4:2:0 이미지 정보에서의 크로마 정보의 부족 및 위치 정렬은 이 정보를 처리하는데 수많은 도전과제를 준다. 일반적으로, 문제점들은 처리 파이프라인(100) 내의 하나의 단계가 4:2:0 이미지 정보를 올바르게 해석하기 위해 처리 파이프라인(100) 내의 다른 단계의 분석을 요구하기 때문에 일어날 수 있다. 도 1의 업-샘플링 모듈(104) 및 행렬 변환 모듈(206)의 예를 고려해보자. 4:2:0 이미지 정보를 올바르게 해석하기 위해, 업-샘플링 모듈(104)은 컬러 정보가 이미지 정보 내에서 어떻게 표현되는지에 관한 지식을 선택적으로 요구하며, 상기 이미지 정보는 탈-비월주사 모듈(110)에 의해 제공되는 정보이다. 탈-비월주사 모듈(110)이 업-샘플링 모듈(104)에 비해 다운스트림에 위치되어있기 때문에, 이러한 지식은 업-샘플링 모듈(104)에는 사용불가능하다. 모듈(104 및 106)이 탈-비월주사 분석의 이점 없이 4:2:0 정보를 처리하면, 그들은 교정이 어렵거나 불가능할 수 있는 이미지 정보 내의 오차를 발생시킬 수 있다. 이러한 난점은 결국 (예를 들어, 4:2:2 이미지 정보와는 다른) 4:2:0 내의 스캔 라인이 탈-비월주사 분석에서 서로로부터 독립적으로 취급될 수 없다는 사실로부터 발생한 것이다.
이 도전과제를 해결하기 위해, 도 1의 파이프라인(100)은 4:2:0 이미지 정보를 처리하기 위한 특별 규약을 포함할 수 있다. 통상의 규약으로서, 파이프라인(100)은 각각의 단계가 어느 정보든 다음 단계에 의해 그 단계에 공급되는 것을 원자적으로(atomistically) 분석하도록 요구하기보다는, 상이한 단계에서 수행되는 분석(및 상이한 단계에서 사용가능한 정보)이 파이프라인 내의 다른 단계들에 보다 광범위하게 공유되게 하도록 수정될 수 있다.
파이프라인(100) 내의 탈-비월주사 모듈(110)의 위치에 의해 발생되는 문제점들에 특히 관련하여, 파이프라인(100)은 탈-비월주사 분석(모듈(110)에 의해 수행됨)이, 예를 들어, 업스트림 분석(모듈(104)에 의해 수행됨)에 관련하여 보다 조기에 수행되도록 수정될 수 있다. 도 1은 이 전술을 점선(130)으로 나타낸다. 이와 달리, 탈-비월주사 모듈(110)은 업스트림 모듈(104)에 공급되었던 본래 입력 이미지 정보를 또한 시험함으로써 탈-비월주사 분석을 수행할 수 있다. 즉, 탈-비월주사 모듈(110)은 본래 이미지 정보와 조합하여 모듈(108)의 출력에 대해 분석을 수행하여, 이미지 정보를 어떻게 탈-비월주사해야 할지를 보다 잘 이해할 수 있게 된다.
또한 파이프라인(100) 내에서 개별 모듈에 의해 개별적으로 수행된 분석을 공유하기 위해 모듈 통합 규약이 고안될 수 있으며, 이에 따라 4:2:0 이미지 정보 내의 크로마 정보의 부족을 보다 효율적으로 해결할 수 있다.
A.4. 의사-선형 공간에서의 이미지 정보 처리
다음 섹션은 아티팩트를 거의 생성하기 않는 이미지 처리 파이프라인을 고안하는 목표를 달성하였다. 그러나, 이미지 처리 파이프라인은 또한 출력 결과를 효율적인 방식으로 제공해야 한다. 이미지 처리 파이프라인은 충분한 속도 및 수용가능한 수의 처리 자원으로 행할 때 효율적인 방식으로 출력 결과를 제공한다. 결 국, 이 서브섹션은 도 1에 도시된 파이프라인(100)에 적용될 수 있는 다양한 근사치(approximation)를 제안하여, 파이프라인(100)의 복잡도를 낮춘다.
즉, 이 서브섹션은 도 1에 나타낸 파이프라인(100)에 대한 수정을 제안하여, 완전한 선형은 아니지만 거의 선형인 이미지 정보를 제공한다. 결과적으로, 이러한 변형은 이미지 정보를 이론적으로 정확한 선형 공간보다는 "의사 선형" 공간으로 변환시키기 위해 언급된다. (모듈(108 및 120) 내의) 변환 함수에 의해 요구되는 수학적 동작의 하드웨어 구현이 매우 간단해질 수 있으므로, 이미지 정보의 처리가 보다 빨라지고 효율적이게 된다는 이점이 있다. 보다 구체적으로, 선택된 동작은 통상적으로 (수학적으로 보다 정밀한) 그들의 본래 대응 함수보다 상당히 빠르게 실행된다. 의사 선형 공간 내에서의 이미지 처리의 부정적인 영향은 매우 작은데, 이는 의사 선형 이미지 정보가 거의 선형이기 때문이다. 따라서, 선형 특성에 대한 임의의 알고리즘은 수정 없이도 이러한 정보가 적용되어 대부분의 응용에 만족스러운 출력 결과를 제공할 수 있다.
도 4는 전술된 근사치에 관한 정보를 더욱 제공한다. 보다 구체적으로, 도 4는 도 1의 처리 파이프라인(100) 중 특정 모듈만의 수정을 나타내며, 따라서 도 1에 도시된 전체 처리 파이프라인(100)에 대한 간략한 설명만을 포함한다.
도 4에 도시된 파이프라인 발췌물(400)은 도 8의 변환 함수 모듈(108)을 대신하는 변환 함수 모듈(402)을 포함한다. (모듈(108)이 수행한 바와 같이) 이미지 정보에 수학적으로 정밀한 변환을 적용하여 이미지 정보를 선형 공간으로 변환시키는 대신, 모듈(402)은 이미지 정보를 전술된 의사 선형 공간으로 변환시키는 근사 치 변환 함수(g_approx(x))를 적용한다. 이 모듈(402)은 g_approx(x) 변환 함수가 도 1의 모듈(108)에 의해 요구되는 보다 정밀한 변환 함수보다 "저가이기" 때문에 g_approx(x) 변환 함수를 사용하는 것이다.
모듈(404)은 도 1의 처리 모듈(114)의 대응물을 나타낸다. 모듈(404)은 의사 선형 처리 공간 내에서 의사 선형 이미지 정보에 대해 임의의 수의 처리 작업을 수행한다.
모듈(406, 408 및 410)은 그 후 처리된 이미지 정보를 (예를 들어, 디스플레이, 저장 장치, 네트워크 목표 사이트 등으로) 출력하기에 적절한 포맷으로 변환시키는 작업을 수행한다. 모듈(406)은 특히 모듈(402)의 동작의 역, 즉 g_approx'(x)을 적용함으로써 모듈(402)의 영향을 제거하는 임무를 수행한다. 모듈(408)은 그 후 변환 함수 g_in(x)을 적용하여 모듈(406)의 출력을 선형화하는데, 이 동작은 다음 단계(410)가 선형 입력을 수용하도록 디자인되어 있기 때문에 수행된다. 그 후, 모듈(410)은 역의 변환 함수(g_out'(x))를 적용하여 최종 감마 정정된 출력 이미지 정보를 생성함으로써, 어떠한 출력 포맷이 요청되더라도 적합하게 한다. 실제 구현에서, 모듈(406, 408 및 410)은 모듈(402)에 의해 수행되는 F(x)로 나타낸 단일 변환으로 통합될 수 있다.
모듈(404)에 의해 의사 선형 컬러 공간에 적용되는 알고리즘은 도 1의 모듈(114) 내의 "정정된" 선형 컬러 공간에 적용된 알고리즘과 동일하다는 것은 중요한데, 즉, 도 4가 나타내는 처리 전략은 이미지 처리 알고리즘 자체의 특별한 편집을 요구하지는 않는다. 반대로, 알려진 종래 전략에 의해 취해진 접근법은 이미지 정보가 수신되는 어떠한 선형 공간에서도 처리를 수행하고 다양한 애드 훅(ad hoc) 및 애플리케이션 특정 정정 인자를 알고리즘에 적용하여, 어떤 아티팩트도 편집한다. 그러나, 이러한 정정 인자는 종종 부정확했고, 어떤 이벤트에서는 전형적으로 복잡했다. 보다 일반적으로, 종래 기술은 포괄적인 및 일반적으로 적용가능한 접근법을 의사 선형 형태로의 변환 정보에 적용하지 않으며, 이에 따라 이 의사 선형 형태는 전술된 방식으로 제거된다.
도 4의 전술된 모듈들을 구현하기 위해 사용될 수 있는 예시적인 근사치가 이 서브섹션에서 후술된다. 우선, 감마 처리를 수행하기 위해 사용되는 변환 함수는 전형적으로 멱함수(예를 들어, x0.45 또는
Figure 112006091641911-pct00001
의 역) 또는 몇몇 함수의 조합임을 명심하자. 멱함수는 전형적으로 사용가능한 하드웨어를 사용하여 매 픽셀 단위로 대해서 컴퓨팅하기에 매우 고가이다.
그러나, x0.45는 x의 제곱근과 대략 같으며, 또는 즉,
Figure 112006091641911-pct00002
임을 명심하자. 그리고, x1/0.45는 대략 x2와 같으며, 또는 즉,
Figure 112006091641911-pct00003
이다. 보통의 멱함수에 의해 요구되는 동작보다 (종종 상당히) 빠른 x1/2를 계산하기 위한 최적화된 하드웨어가 존재한다. 그리고 이 하드웨어는 단순히 곱셈 동작으로서의 제곱 x2를 매우 빠르게 수행할 수 있다. 따라서, 이 근사치는 변환 함수를 구현하는데 관련된 처리 비용을 상당히 절약할 수 있다.
보다 형식적으로, 모듈(402)에 의해 수행되는 함수 g_approx(x)는 x2 * sign(x)의 형태를 취할 수 있으며, 모듈(406)에 의해 수행되는 역의 변환 함수는 (abs(x))1/2 * sign (x)의 형태를 취할 수 있다.(특별 고려사항으로서, 변환 함수 및 역의 변환 함수는 선형 마지막 세그먼트를 거의 제로(0)로 적용할 수 있음을 명심하자.)
상기 접근법은 다음의 예시적인 일련의 동작을 사용하여 함수 g_in(x) 및 g_out(x)에 의해 표현되는 다른 입력 및 출력 전범위로 일반화될 수 있다:
1) 이미지 정보에 역의 선형 근사치 g_approx(x) = x2 =x*x을 적용한다. 모듈(402)이 이 단계를 수행할 수 있다.
2) 의사 선형 공간에서 데이터를 처리한다. 모듈(404)이 이 단계를 수행할 수 있다.
3) 선형 근사치 g_approx'(x)을 적용한다. 모듈(406)이 이 동작을 수행할 수 있다.
4) 변환 함수 g_in(x)를 적용하여 모듈(406)의 출력을 선형화한다. 모듈(408)이 이 동작을 수행할 수 있다.
5) 역의 변환 함수 g_out'(x)를 모듈(408)의 출력에 적용하여, 디자인된 g_out 공간 내의 정보를 생성한다.
단계 (3)-(5)는 단일 함수 F(x)로 통합될 수 있으며, 즉:
F(x) = g_out'(g_in(g_approx'(x)))이다.
파이프라인이 2.222의 감마를 2.4의 감마로 변환시키면, 함수 F(x)는 다음과 같이 표현될 수 있다:
Figure 112006091641911-pct00004
.
상기 알고리즘의 비용은 g_approx(x) 함수에 의해 요구되는 매우 "저렴한" 대화를 포함하며, 이는 의사 선형 공간에서의 정보의 처리가 뒤따라지며, F(x) 함수에 의해 요구되는 하나의 잠재적으로 고가의 대화가 뒤따라진다. 그러나 수학식 F(x)는 단순히 지수의 곱셈을 요하기 때문에, 이 함수의 비용은 본래의 역의 함수보다 높지 않다. 따라서, 도 4에 도시된 해결법은 잠재적으로 전체 선형화/비선형화 주기의 비용을 대략 반으로 줄이는 최종적인 효과를 갖는다. 전술된 바와 같이, 이 해결법은 모듈(404)에 의해 수행되는 알고리즘의 특별한 주문화를 요구하지 않는다는 의미에서 유용하다.
도 5는 전술된 동작을 요약한 처리(500)를 나타내며, 도 2에 나타낸 선형화 처리(200)에 대한 대응물이다. 단계(502)는 입력 이미지 정보를 의사 선형 공간으로 변환하는 것을 수반한다. 단계(504)는 모듈(404)을 사용하여 의사 선형 공간에서 이미지 정보에 대해 처리를 행하는 것을 수반한다. 그리고 단계(506)는 처리된 정보를 출력하기에 적절한 비선형 컬러 공간으로 변환하는 것을 수반한다.
A.5. 오차 확산 알고리즘에 대한 개선사항
양자화에 의해 요구되는 근사치가 올바르게 처리되지 않으면 아티팩트를 생성할 수 있으므로, 고 정밀도 이미지 정보의 저 정밀도 포맷으로의 양자화는 오차 를 발생시킬 수 있다. 다양한 오차 확산 알고리즘은 양자화에 의해 발생된 오차를 확산시켜 아티팩트를 최소화한다. 이러한 오차 확산은 디더링의 형태이다.
도 6은 양자화에 의해 발생된 오차를 확산하기 위한 알려진 플로이드-스텐버그 알고리즘의 적용을 나타낸다. 이미지 내의 픽셀(또는 보다 일반적으로, 화소)을 나타내는, 이미지 내의 포인트 X를 고려하자. 화소 X의 양자화는 오차 차이를 낳을 것이며, 이 오차 차이는 화소의 고 정밀도 표현과 그것이 양자화된 값 간의 차이로서 컴퓨팅된 것이다. 플로이드-스텐버그 알고리즘은 이 차이를 상이한 성분들로 나누고, 그 후 이러한 성분들을 소자 X에 이웃하는 (및 아직 알고리즘에 의해 처리되지 않은) 화소로 분산시킨다. 처리가 이러한 이웃 화소로 진행될 때, 이 화소로 이미 확산된 오차 요소는 화소에 추가될 것이며, 이에 따라 이 화소는 그 후, 전술된 방식으로, 예를 들어 그것을 양자화하고, 다른 오차 차이를 계산하고, 이 오차를 이웃 화소로 확산시킴으로써 전술된 방식으로 처리될 것이다. 전체 이미지에 대한 처리는 좌측에서 우측으로 및 하부에서 상부로 등의 다양한 방식으로 처리될 수 있다.
플로이드-스텐버그 알고리즘은 이웃 화소에 확산되는 오차 요소들에 상이한 가중치를 할당한다. 도 6은 소자 X에 시계방향으로 이웃한 화소에 할당된 가중치 7, 1, 5 및 3을 나타낸다. 보다 구체적으로, 오차 요소에 적용된 가중치 인자는 7/16, 1/16, 5/15 및 3/16이며, 여기서 분모 "16"은 이웃 화소에 할당된 가중치의 총합을 나타낸다.
그러나, 플로이드-스텐버그 등의 오차 확산 알고리즘은 때때로 여러 아티팩 트를 가진 목적 이미지를 생성한다. 이러한 아티팩트는 구체적으로 특정 이미지 컨텐츠에서 감지가능한 시각적으로 식별가능한 패턴으로 자신을 나타낼 수 있다. 알려진 전략들은 본래 이미지에 임의 잡음을 추가하여 오차 확산 알고리즘에 의해 생성되는 패턴들을 흐리게 함으로써, 이러한 문제점을 해결한다. 그러나 이 해결법은 다양한 약점을 가질 수 있다. 첫째, 알려진 기술들은 본래 이미지에 잡음을 추가하고, 그 후 기준선으로서 잡음이 있는 본래 이미지를 (보다 주의 깊게 후술된 방식으로) 양자화한다. 이 기술이 오차 확산 알고리즘에 의해 발생된 아티팩트를 감추는 효과를 갖기는 하지만, 이것은 또한 최종 목적 이미지를 저하시킨다. 즉, 목적 이미지 내의 잡음은 본래의 이미지에 추가된 잡음의 비를 높인다. 둘째, 알려진 전략은 상대적으로 짧은 반복 주기를 갖는 잡음 생성기를 사용하여 잡음을 추가할 수 있다. 이에 따라, 잡음 생성기는 (혹은 잡음 생성기가 가리도록 디자인된 오차 확산 아티팩트의 몇몇 흔적에 따라) 목적 이미지에서 시각적으로 식별가능한 그들만의 패턴형 아티팩트를 생성할 수 있다.
도 7은 전술된 문제점 중 전자를 보다 구체적으로 설명하는 처리(700)를 나타낸다. 처리(700)의 목적은 오차 확산 알고리즘을 사용하여 목적 이미지 정보("Final")를 생성하기 위해 본래 이미지 정보("Original")를 양자화하는 것이다. 단계(702)는 이미지 소자 i(즉, 픽셀)에 대한 본래 이미지 정보에 잡음 정보를 추가하여 "Temp" 이미지 정보를 생성하는 것을 수반한다. 단계(704)는 Temp 이미지 정보 및 "Error_Term(i)" 이미지 정보에 의해 정의된 합을 양자화함으로써 Final 이미지 정보를 생성하는 것을 수반한다. Error_Term은 조기에 처리된 화소 또는 소자들의 사전 양자화에 기초하여 화소 i에 추가된 오차 요소를 나타낸다. 단계(706)는 이렇게 컴퓨팅된 Final 이미지 정보에서 Temp 이미지 정보를 뺌으로써 다음 Error_Term 요소(처리될 향후 화소에 적용됨)를 정의하는 것을 수반한다. 알고리즘의 적용은 전술된 뒤따르는 결점을 갖는 잡음이 있는 이미지를 실제로 양자화하는 최종적인 효과를 낸다.
도 8은 본 기술 내의 전술된 문제점을 극복하는 시스템(800)을 도시한다. 디더링 모듈(802)은 오차 확산 알고리즘을 사용하여 본래 이미지 정보(804)를 목적 이미지 정보(806)로 변환시킨다. 오차 확산 알고리즘은 전술된 플로이드-스텐버그 알고리즘을 포함하지만, 이 알고리즘에만 한정되는 것은 아니다. 잡음 생성기(808)는 양자화 처리에 임의 잡음을 삽입하여, 오차 확산 알고리즘에 의해 생성된 아티팩트 중 몇몇을 명확하게 하는 것을 돕는다.
시스템(800)은 적어도 두 가지 점에서 알려진 전략과 상이하다. 첫째, 시스템(800)은 실제로 본래 이미지 정보(804)가 아닌 양자화 처리에 잡음 정보를 추가한다. 즉, 종래 기술에서, 본래 이미지 정보(804)는 본래 이미지에 잡음 정보를 더하기보다는 오차 항이 측정된 기준선을 유지한다. 따라서, 시스템(800) 내의 잡음의 양을 증가시키더라도 실제로 목적 이미지 정보(806)를 점차적으로 눈에 더욱 뜨이게 하지는 않으며, 이는 이웃 화소에 전파된 오차 항이 본래 이미지 정보(804)에 대한 목적 이미지 정보(806)의 편차의 측정을 보유하고 있고, 이에 따라 오차 확산 알고리즘이 양자화 처리에 추가된 임의 잡음의 영향을 계속적으로 정정하고자하기 때문이다.
도 9는 상기 처리를 설명하는 처리(900)를 나타낸다. 단계(902)는 화소 i에 대한 본래 이미지 정보, 잡음 정보 및 오차 항의 합을 양자화하여 화소 i에 대한 최종 이미지 정보를 생성하는 것을 수반한다. 단계(904)는 화소 i에 대한 최종 이미지 정보와 본래 이미지 정보 간의 차이를 컴퓨팅하여 이웃 화소(또는 소자들)에 확산될 오차 항을 컴퓨팅하는 것을 수반한다.
일례가 설명을 보다 구체적으로 나타낸다. 값 23.3을 갖는 화소를 가장 근사한 정수로 양자화하는 작업을 가정하자. 도 7에 나타낸 알려진 전략에서, +0.4의 잡음 정보가 값에 추가되어 그 값이 23.7가 되는 것을 가정하자. 이 화소에 대한 최종 이미지 값은 24가 될 것이며, 전파될 오차 항은 -0.3(최종 출력 이미지 값과 잡음이 있는 이미지 값(23.7) 간의 차)이 될 것이다. 반대로, 도 9의 개선된 전략에서는, 전파되는 오차 항은 -0.7(최종 출력 이미지 값과 본래 이미지 값 간의 차)이 될 것이다.
플로이드-스텐버그 오차 확산 알고리즘의 적용에 기초하여 상기 기술의 보다 형식적인 설명이 후술될 것이다. 이미지 내의 각각의 픽셀에 대하여, 알고리즘의 작업은 고 정밀도 값 V를 양자화하고 그것을 픽셀 어레이 P의 픽셀 위치 P(x, y)에 저장하기 위한 것이며, 여기서 P(x, y)는 V보다 낮은 정밀도를 갖는다. 알고리즘에 의해 생성된 오차 항은 픽셀 어레이 P와 동일한 크기를 가진 고 정밀도 오차 어레이 E에 저장된다. 픽셀 P(x, y)에 대한 오차 항은 E(x, y) 내의 대응하는 위치에 저장된다. 알고리즘 내의 함수 "round()"는 고 정밀도 수를 가장 근사한 저 정밀도 수로 반올림한다. 알고리즘 내의 함수 "random()"은 {-0.5..0.5} 범의 내의 임의 고 정밀도 수를 반환한다. 일시적인 값 "Desired" 및 "Error"는 고 정밀도 값이다. 실제 오차 전파 계수는 플로이드-스텐버그 오차 전파 알고리즘으로부터의 것이다.
알고리즘 1: 개선된 오차 확산
For each pixel x, y:
Desired = V + E(x, y)
P(x, y) = round(Desired + random())
Error = Desired - P(x, y)
E(x+1, y) = Error * 7/16
E(x-1, y+1) = Error * 1/16
E(x, y+l) = Error * 5/16
E(x+1, y+l) = Error * 3/16
End
두 번째 개선점으로서, 잡음 생성기(808)는 알려진 접근법과는 달리 상대적으로 긴 반복 패턴을 사용한다. "상대적으로 긴"이란 표현은 이미지 정보의 전체 프레임을 처리할 때 잡음 생성기(808)가 그것의 수들을 반복하지 않거나 적어도 목적 이미지 정보(806) 내에 감지가능한 아티팩트를 생성할 정도까지는 자신을 반복하지 않도록 명령함으로써 상대적인 간격으로 해석될 수 있다. 이 요구사항을 만족시킬 하나의 특정한 임의 수는 소위 R250 임의 잡음 생성기이다.
A.6. 필터 커널의 동적 계산
스케일링 필터는 이미지 정보가 소스 크기로부터 목적 크기로 크기가 조정될 때, 도 1에 도시된 파이프라인(100) 내의 여러 연결점에서 사용될 수 있다. 예를 들어, 모듈(114)에서 수행되는 처리는 애플리케이션 및/또는 사용자에 의해 입력된 제어 신호에 따라 이미지 정보를 증가시키거나 낮추며 스케일링하는 것을 수반한다. 스케일링은 또한 샘플링 모듈(104 및 124) 등의 파이프라인(100) 내의 다른 연결점에서 수행될 수 있다.
수많은 필터링 알고리즘이 스케일링 알고리즘에 관련하여 사용될 수 있다. 하나의 특정한 알려진 필터 유형은 소위 캐츠뮬-롬 필터이다. 이 종류의 필터를 이미지 정보의 크기를 조정하는 작업에 적용하면 이미지 정보 내의 에지가 소정 정도만큼 선명하게 될 것이다.
이 서브섹션은 이미지 정보 내의 픽셀 대 픽셀 기반 상에서 컴퓨팅되고 적용될 수 있는 스케일링을 위해 사용되는 필터(캐츠뮬-롬 형 필터 등, 그러나 이러한 종류의 필터에만 한정되는 것은 아님)를 설명한다. 이는 개념적으로 이미지 정보 내의 각각의 픽셀에 대한 개별 필터의 동적인 컴퓨팅 및 적용으로서 설명될 수 있다. 각각의 필터는 하나 이상의 커널을 포함할 수 있으며, 각각의 커널은 하나 이상의 탭을 가질 수 있다. 커널은 이미지 정보 내의 픽셀에 적용되는 가중치를 정의한다. 탭은 그것 상에서 커널이 활동하는 이미지 정보 샘플을 정의한다. 이 방식으로 필터 커널을 계산하고 적용하는 것을 실패하면, 비트 패턴 등의 목적 이미지 내의 다양한 아티팩트를 발생시킬 수 있다.
그러나, 각각의 픽셀에 대해 개별 필터 커널을 계산하는 것은 커널을 컴퓨팅 하는 데 시간을 많이 소모할 수 있다. 이는 몇몇 하드웨어 상에서의 이미지 정보의 실시간 표시를 불가능하게 할 수 있다. 이 문제를 해결하기 위해, 이 서브섹션은 입력 이미지 정보의 전체 행 또는 열에 대한 필터 위상 커널을 동적으로 컴퓨팅하고, 그 후 그러한 커널을 적용하는 효율적 전략에 대해 정의한다. 개괄적으로, 이 전략은 본래 이미지 정보의 열(또는 행)에 대해 요구되는 커널의 수를 계산하고, 그 커널에 의해 요구되는 탭의 수를 계산하고, 커널을 저장하기 위한 저장 어레이를 할당하고, 어레이 내의 요구되는 커널의 수를 계산 및 저장하는 것을 수반한다. 이러한 단계들은 어레이에 저장된 필터 커널을 이미지 정보에 적용하는 단계가 뒤따라 진다.
알고리즘을 적용하기 전에 커널이 계산되므로, 이 알고리즘은 효율적이다. 또한, 특정 예에서, 상대적으로 적은 수의 계산된 커널이 훨씬 많은 열 또는 행의 이미지 정보에 주기적으로 적용될 수 있기 때문에, 계산 절감이 이루어질 수 있다. 그리고 특정한 열 또는 행에 적용된 것과 동일한 커널이 이미지 정보 내의 다른 행 및 열에 (각각) 적용될 수 있다. 즉, 특정 적용의 크기 조정 요구사항에 따라, 이미지 정보 내의 매 단일 픽셀 마다 개별적인 필터가 컴퓨팅될 필요가 없다.
도 10은 전술된 디자인의 필터 모듈(1002)을 구현하기 위한 시스템(1000)의 개요를 나타낸다. 필터 모듈(1002)은 동적 커널 사전-계산 모듈(1004)을 포함한다. 이 모듈(1004)의 목적은 첫째로 특정 스케일링 동작에 대해 요구되는 커널의 수 및 커널에 대해 요구되는 탭의 수를 컴퓨팅하는 것이다. 커널 및 탭의 수는 이미지 정보의 크기가 (후술된 방식으로) 조정되는 방식에 따를 것이다. 그 후 사전 -계산 모듈(1004)은 바람직한 커널의 수를 사전-계산하고, 커널을 저장 모듈(1006) 내에 저장한다. 그 후 커널 적용 모듈(100)은 커널 저장 모듈(1006) 내의 커널을 이미지 정보에 적용하여, 원하는 필터링 거동을 달성한다. 전술된 바와 같이, 커널을 적용하기 전에 커널을 계산하는 것은 필터링 처리가 보다 빠르게 실행되게 하는 것을 돕는다. 또한, 몇몇의 커널에 대한 사전-계산만을 요구하는 그러한 스케일링 동작에 대한 필터 계산의 복잡도는 매우 상당한 정도까지 낮아진다.
도 10의 우측 부분은 커널(1010)이 이미지 정보(1014)의 특정 열(1012)에 반복적으로 어떻게 적용될 수 있는지를 나타낸다. 커널(1010)은 직렬 및 주기적 방식으로 적용된다(일 예시적 경우에서는, 각각의 커널이 하나의 출력 픽셀에 적용됨). 예를 들어, 이미지 정보의 상대적으로 긴 열에 대한 커널의 수가 작으면, 커널들은 연속적으로 적용되고 이미지 정보의 열이 처리될 때마다 몇 번이고 반복된다. 즉, 미리 저장된 커널은 리스트를 형성하고; 그들은 열에 차례로 적용되고, 리스트 내의 마지막 커널에 마주치면, 리스트의 상부로 되돌아가 그곳에서부터 또다시 끌어냄으로써 처리를 계속한다. 적용 기술의 반복적 거동은 도 10에 도시된 루프(1006)로 표현된다. 커널(1010)은 유사한 방식으로 다른 열에도 적용될 수 있다. 또한, 유사한 처리가 이미지 정보(1014)의 행에 적용되는 커널에 관련하여 반복될 수 있다.
커널 및 탭의 수를 계산하기 위해 모듈(1004)에 의해 사용될 수 있는 예시적 알고리즘이 후술된다. 모듈(1004)은 이 알고리즘을 개별적으로 이미지 정보(1014)의 x 및 y 차원으로 스케일링하는데 적용한다. 따라서, 알고리즘은 x 차원으로 스 케일링하도록 설정된 것이라도, 예를 들어, 너비에 대한 관계를 높이로 바꾸는 등에 의해 y 차원에도 적용될 수 있다. x 차원에서, 알고리즘에서 사용되는 "ScaleRatio"는 원하는 최종(목표) 이미지 너비에 대한 본래 이미지 너비의 비를 정의한다. 알고리즘에서 사용되는 "ceiling" 함수는 실수를 다음으로 보다 높은 정수로 반올림한다. 알고리즘 내의 "gcd" 함수는 2개의 정수 중 가장 큰 공통 분모를 계산한다.
알고리즘 2: 커널 및 탭의 수에 대한 계산
ScaleRatio = SourceWidth / DestinationWidth
if ScaleRatio < 1.0
ScaleRatio = 1.0
Taps = ceiling(ScaleRatio * 4)
if Taps is odd
Taps = Taps + 1
Kernels = DestinationWidth / gcd(SourceWidth, DestinationWidth)
예를 들어, 720 픽셀의 높이는 가진 소스 이미지 정보의 480 픽셀의 높이를 가진 목적 이미지 정보로의 수직 스케일링을 고려해보자. 상기 알고리즘을 이 시나리오에 적용하면 다음과 같은 결과가 나타난다:
ScaleRatio = 720/480 = 1.5
Taps = ceiling(ScaleRatio * 4) = 6
Kernels = 480 / gcd(720, 480) = 480 / 240 = 2
따라서, 모듈(1004)는 6개의 탭의 2개의 커널을 각각 사전-계산하고 사전 할당할 필요가 있다. 크기 조정 동작은 픽셀의 열을 따라 이동하면서 2개의 커널 간에 핑퐁 방식으로 번갈아가면서 일어날 것이다.
또다른 예로서, 721 픽셀의 높이를 가진 소스 이미지 정보의 480 픽셀의 높이를 가진 목적 이미지 정보로의 수직 스케일링을 고려해보자. 상기 알고리즘을 이 시나리오에 적용하면 다음과 같은 결과가 나타난다:
ScaleRatio = 721/480 = 1.5021
Taps = ceiling(ScaleRatio * 4) = 7
탭이 홀수이므로, 1을 더하여, 8을 만듦
Kernels = 480 / gcd(721,480) = 480 / 1 = 480
따라서, 모듈(1004)은 각각 8개의 탭의 480개의 커널을 사전-계산하고 미리 할당할 필요가 있다. 크기 조정 동작은 480 출력 픽셀의 모든 하나 하나에 대해 고유한 커널을 사용할 것이다. 그러나, 상당한 절약은 여전히 동일한 480개의 커널 세트가 픽셀의 모든 수직 열에서 사용될 수 있기 때문에 실현될 것이다. 또한, 실제 구현의 경우, 목적 크기와 소스 크기 간의 비는 꽤 단순한 비인 경향이 있으므로, 결과 커널 수가 관리가능한 수를 요구하게 한다. 사용자가 (전술된 임계치를 초과하는) 특별히 큰 필터 커널 수를 요하는 크기 조정 요구사항을 입력하는 것을 방지하는 특정 제한사항이 또한 부과될 수 있다.
도 11은 전술된 동작을 요약한 처리(1100)를 나타낸다. 단계(1102)는 이미지를 수평 및/또는 수직 차원으로 원하는 바대로 크기 조정하기 위해 요구되는 커 널(및 커널 당 탭)의 수를 결정하는 것을 수반한다. 사전-계산 모듈(1004)은 전술된 알고리즘을 사용하여 이 작업을 수행할 수 있다. 단계(1104)는 단계(1004)에서 계산된 커널의 수를 저장하기 위한 공간을 커널 저장 모듈(1006)에 할당하는 것을 수반한다. 단계(1106)는 실제로 커널을 사전-계산하고 저장하는 것을 수반한다. 그리고 단계(1108)는 저장 모듈(1006)에 저장된 사전-계산된 커널을 이미지 정보에 적용한 것을 수반한다. 이 적용은 임의의 주어진 행 또는 열을 처리하면서 커널을 거쳐 주기적으로 시퀀싱(sequencing)함으로써 진행된다.
B. 비디오 처리 파이프라인에 대한 예시적인 구현-관련 개선사항
B.I. 파이프라인 처리 코드의 최적 생성
다음 섹션은 섹션 A에 비해 보다 기술적으로 특수한 특성의, 도 1의 비디오 처리 파이프라인(100)에 대한 다수의 구현을 제공한다. 우선, 도 12는 이미지 처리 파이프라인(1200)의 고급 개요를 나타내며, 이미지 처리 파이프라인(1200)은 이 섹션의 개선점을 설명하기 위한 기반으로서의 역할을 할 것이다.
도 12에 도시된 파이프라인(1200)은 입력 단계(1202), 처리 단계(1204) 및 출력 단계(1206)로 정의된 처리 단계들을 포함한다. 입력 단계(1202)에 대하여, 입력 소스(1208)는 임의의 이미지 정보의 소스를 나타낸다. 소스(1208)는 새롭게 캡처된 이미지 정보(예를 들어, 카메라 또는 스캐너에 의해 생성됨), 또는 소정의 채널을 경유하여 입력 단계(1202)에 제공된 (예를 들어, 디스크로부터, IP 네트워크를 통하는 등으로 수신된) 미리 캡처된 이미지 정보를 포괄적으로 포함할 수 있다. 전자의 경우에는, 캡처 처리 기능(1210)이 소스(1208)로부터 수신된 이미지 정보에 대해 임의의 종류의 예비 처리를 수행할 수 있다. 후자의 경우에는, 디코더 기능(1212)이 스트림 기반 정보 추출 및 감압을 수행하여, 이미지 데이터를 생성한다. 일반적으로, 이러한 처리는 수신된 정보 내의 오디오 정보로부터 이미지 정보를 분리시키는 것, 정보를 감압하는 것 등을 포함할 수 있다. 처리 단계(1204)에 대해서, 처리 기능(1214)은 이미지 정보의 복수의 스트림을 합성 신호에 서로 혼합시키는 것과 같이 결과 이미지 정보에 대해 임의의 종류의 처리를 수행한다. 출력 단계에 대해서, 출력 처리 기능(1216)은 출력 장치(1218)로의 출력에 대비하여 처리된 이미지 정보 상에서 수행되는 임의의 종류의 처리를 나타낸다. 출력 장치(1218)는 텔레비전, 컴퓨터 모니터 등을 의미할 수 있다. 출력 장치는 또한 저장 장치를 의미할 수 있다. 또한, 출력 "장치"(또는 출력 기능(1216))는 장치 상의 저장에 대한 정보 또는 네트워크에 걸친 분산에 대한 정보를 준비하는 압축 및 포매팅 기능(멀티플렉서 등)을 제공할 수 있다.
일반적으로, 도 1에 나타낸 처리 동작은 임의의 방식으로 단계(1202, 1204, 1206)에 걸쳐 분산될 수 있다. 예를 들어, 처리 단계(1204)는 일반적으로 도 1에 나타낸 처리 모듈(114)을 구현한다. 단계(1202, 1204, 1206) 각각은 물리적으로 전술된 작업들을 수행하기 위한 단일 장비 또는 직렬 또는 병렬로 서로 연결된 복수의 장비로 구현될 수 있다. 기능는 소프트웨어 및 하드웨어의 임의의 조합으로 구현될 수 있다.
도 13은 도 12에 도시된 이미지 처리 파이프라인(1200)을 구성하기 위한 예시적 시스템(1300)을 나타낸다. 보다 상세히는, 예시적인 시스템(1300)은 파이프 라인(1200)을, 도 1에 도시된 이미치 처리 동작들의 임의의 조합을 수행하도록 구현하는 컴퓨터 코드를 자동적으로 생성하기 위한 기능을 포함할 수 있다.
상술한 방식으로 기능하기 위하여, 시스템(1300)은 구성 모듈(1302)을 포함한다. 구성 모듈(1302)은 구성된 파이프라인이 만족시켜야 하는 요구사항을 정의하는 파이프라인 요구사항 정보(1304)를 수신한다. 요구사항 정보(1304)는 복수의 컴포넌트를 가질 수 있다. 입력 요구사항 컴포넌트(1306)는 파이프라인이 수신하기로 예상되는 이미지 정보의 특징을 정의한다. 입력 요구사항 컴포넌트(1306)는 처리될 수 있는 단독의 종류의 이미지 정보를 정의할 수 있고 처리될 수 있는 복수의 허용되는 종류의 이미지 정보 세트를 정의할 수 있다. 허용되는 입력 정보의 복수의 특성을 통상적으로 기술하는 한가지 방식은 이용되고 있는 비디오 코딩 표준(들)을 기술하는 것인데, 이 표준은 허용되는 컬러 공간, 크로마 서브-샘플링 방식, 감마 변환 함수(gamma transfer fnction), 등과 같은, 이미지 정보가 가지는 모든 다수의 특징을 내포할 수 있다. 예를 들면, ITU-R 권고 BT.601은 이미지 정보의 스튜디오 디지털 코딩을 정의하는 국제 표준이다. 이 표준은 이미지 정보의 Y'CbCr 코딩을 이용한다. ITU-R 권고 BT.709는 고해상력 비디오 정보의 스튜디오 코딩을 정의하는 국제 표준이다. 고해상력(HD) 컨텐츠는 통상적으로 1920 x 1080, 1280 x 720 등의 표준 해상력(SD)보다 높은 비디오 컨텐츠를 나타낸다. 이들은 이미지 처리 파이프라인이 처리할 수 있는 다수의 비디오 코딩 표준들 중 단지 두 가지일 뿐이다.
출력 요구사항 컴포넌트(1308)는 파이프라인이 출력하기로 예상되는 이미지 정보의 특징을 정의한다. 즉, 출력 요구사항 컴포넌트(1308)는 특정 출력 장치에 적합하도록 생성될 수 있는 단독의 종류의 이미지 정보를 정의할 수 있거나, 서로 다른 종류의 출력 장치에 적합하도록 생성될 수 있는 복수의 허용되는 종류의 이미지 정보 세트를 정의할 수 있다. 또한, 허용되는 출력 정보의 복수의 특성을 통상적으로 기술하는 한 가지 방식은 이용되고 있는 비디오 코딩 표준(들)을 기술하는 것이다.
중간 처리 요구사항 컴포넌트(1310)는 파이프라인이 입력 이미지 정보에 대하여 수행해야 하는 처리 태스크의 특성을 정의한다. 임의의 개수의 처리 태스크는 크기 조정(스케일링), 합성, 알파-블렌딩, 에지 검출, 등을 포함하지만 이에 한정되지 않는 것으로 기술될 수 있다.
일반적으로, 사람인 오퍼레이터는 수동으로 파이프라인 요구사항(1304)을 선택할 수 있다. 대안으로, 하나 이상의 요구사항(1304)은 파이프라인이 채용될 환경으로부터 자동으로 추정될 수 있다.
입력 파이프라인 요구사항(1304)이 주어지면, 구성 모듈(1302)은 파이프라인 요구사항(1304)을 만족시키는 코드 모듈의 맞춤형 집단을 어셈블링하기 위하여 정적 분석을 이용하는 태스크를 수행하여 코드 모듈(1312)의 라이브러리와 대화한다. 이를 행하는 한 가지 방식은 임의의 종류의 중간 처리를 포함하는 임의의 종류의 출력 정보와 임의의 종류의 입력 정보를 매핑하는 마스터 수학식을 생성하는 것이다. 이 마스터 수학식은 복수의 컴포넌트를 포함할 것이다. 이들 컴포넌트는 라이브러리(1312)에 저장된 각각의 코드 모듈과 관련된다. 이 구현에서, 구성 모 듈(1302)은 입력 파이프라인 요구사항(1304)의 관점에서는 필요하지 않는 모든 컴포넌트를 제거함으로써 코드 모듈의 맞춤형 집단을 컴파일링하는 태스크를 수행한다. 이는 라이브러리(1312)로부터 특정 코드 모듈을 선택하고 다른 모듈은 배제하는 효과이다.
구성 모듈(1302)에 의해 수행되는 처리의 결과물은 최적화된 파이프라인 코드(1314)이며, 이 코드는 다음에 이미지 정보 처리에 적용될 수 있다. 이 코드(1314)는 이 코드가 필요로 하는 함수만을 수행하도록 유선형으로 된다(streamline). 결과적으로, 이 코드에 기초하여 작성된 파이프라인은 특정 애플리케이션에서는 결코 채용되지 않을 수 있는 다수의 서로 다른 태스크를 처리하기 위한 다양한 링크된 서브루틴을 가지는 소위 대형 catch-all 프로그램보다 빠르게 자신의 동작을 실행하는 잠재력을 가진다.
한 가지만 예를 들자면, 특정 애플리케이션에서의 비디오 파이프라인의 태스크는 비월주사식 4: 2: 2 Y'CbCr 이미지 정보를 중간 선형 순차주사식 4:4:4 RGB 컬러 공간으로 변환하여, RGB 컬러 공간에서 합성을 수행한 다음, 결과물인 처리된 정보를 텔레비전 세트에 출력하는 것이라 가정한다. 이러한 일련의 동작들은 몇 가지 동작(예를 들면, 업-샘플링, 변환 행렬 변환, 변한 함수 적용, 합성, 등)을 호출하지만, 그 외의 동작들은 호출하지 않는다. 따라서, 구성 모듈(1302)은 요구되는 계산을 수행하는 데에 필요한 코드만을 생성할 것이며 그 외의 것은 생성하지 않을 것이다.
모듈을 포함시키고 배제시키는 것에 대한 구성 동작을 상술하였다. 그러나, 보다 향상된 구성 기능이 특히 효과적인 방식으로 선택된 코드 모듈을 결합하는 것, 선택된 코드 모듈에 공통된 중복 코드를 제거하는 것, 등과 같은 다른 최적화 동작을 수행할 수 있다.
구성 모듈(1302)을 구현하는 방식이 복수 개 존재한다. 이러한 기능을 구현하는 한 가지 방식은 소스 코드를 분석하고 중복되는 코드를 제거하는 소정의 능력을 이미 갖춘 기존의 구성 도구(예를 들면, 종래의 C++ 컴파일러)를 이용하여 적절한 모듈을 가려내어 선택함으로써 파이프라인 코드를 최적화하는 선에서 태스크에 이러한 기능을 적용하는 것이다.
도 14는 상기 설명을 요약하는 처리(1400)를 흐름도 형태로 도시한다. 단계(1402)는 비디오 파이프라인 요구사항을 입력하는 것을 수반한다. 단계(1404)는 입력 요구사항을 만족시키는 최적의 코드를 결정하는 것을 수반한다. 단계(1406)는 최적의 코드를 출력하고 실행시키는 것을 수반한다.
B. 2. 이미지 처리를 수행하기 위한 GPU 의 일반적인 사용
도 15는 도 12에 도시된 이미지 파이프라인(및, 보다 추상적으로는, 도 1에 도시된 비디오 처리 동작(100))의 양태들을 구현하는 데 이용될 수 있는 예시적인 시스템(1500)의 개관을 도시한다. 시스템(1500)은 하나 이상의 CPU를 포함하는 (퍼스널 컴퓨터 등의) 컴퓨터를 나타낼 수 있다. 시스템(1500)은 그래픽 모듈 기능에 도 1에 도시된 소정의 이미지 처리 태스크(또는 모든 이미지 처리 태스크)를 할당한다. 그래픽 처리 기능은 하나 이상의 그래픽 처리 유닛(이 분야에서는 GPU라 칭함)을 포함할 수 있다. 일반적으로, 도 15는 시스템(1500)의 그래픽 모듈 기 능에 의해 수행될 수 있는 기능과 시스템(1500)의 CPU에 의해 수행될 수 있는 기능을 구분하는 점선을 포함한다(그렇지만 이 구분은 단지 예시적인 것이며, 다른 CPU/GPU 할당이 가능하다).
배경 지식에 의하면, GPU는 일반적으로 CPU와 유사한 처리 장치이지만, 일반적으로 분기-형 결정을 수행하는 데 있어 더 작은 능력을 가진다. 시스템은 통상적으로 GPU를 이용하여 (정점 셰이더, 픽셀 셰이더 등을 포함하는) 3-차원 처리 파이프라인을 이용하여 정보의 렌더링 등의, 반복적으로 수행되는 정보-집약적 렌더링 태스크를 수행한다. 그러므로 GPU 이용의 주요 산업(mainstay)은 게이밍 및 시뮬레이션 기술이며, 이 기술은 GPU를 이용하여 다양한 장면, 캐릭터, 특수 효과 등을 렌더링한다. 반복적이거나 정보-집약적 태스크를 GPU에 할당하는 것은 시스템의 CPU를 기타 하이-엔드(high-end) 관리집약적 태스크를 수행하는 것으로부터 해방시키므로 이러한 시스템의 성능을 향상시킨다. 이 경우, 게이밍 정보를 생성하기 보다는, 시스템(1500)은 그래픽 모듈 기능을 채용하여 수신된 이미지 정보(예를 들면, 비디오 정보)를 임의의 종류의 출력 장치에 출력하기 전에 수정한다. 예를 들면, 시스템(1500)의 한 적용은 DVD로부터 비디오 정보를 수신하고, (예를 들면, 비디오 정보에서 텍스트 레터링을 결합시킴으로써) 그래픽 기능 내의 비디오 정보에 대한 합성을 수행하고, 그 다음 결과물 신호를 텔레비전 장치에 출력하는 것이다.
상술한 개관과 함께, 도 15의 예시적인 컴포넌트 각각이 차례로 이하 기술될 것이다. 이후의 서브섹션(B.3)은 그래픽 모듈 기능이 도 1에 도시된 파이프라 인(100)의 양태들을 구현하는 데에 채용될 수 있는 방식에 관련하여 보다 구체적인 정보를 제공할 것이다.
우선, 시스템(1500)은 복수의 소스들 중 임의의 하나로부터 이미지 정보를 수신한다. 예를 들면, 시스템(1500)은 (인터넷에 연결된 원격 소스 등의) 네트워크(1502), 임의의 종류의 데이터베이스(1504), (광 디스크, DVD, 등과 같은) 임의의 종류의 컴퓨터 판독가능 디스크 매체(1506), 또는 몇몇의 다른 소스(1508)로부터 이미지 정보를 수신할 수 있다. 어떠한 경우라도, 수신된 정보는 이미지 정보와 오디오 정보의 조합을 포함할 수 있다. 디멀티플렉스 유닛(1510)은 이미지 정보로부터 오디오 정보를 분리한다. 오디오 처리 기능(1512)은 오디오 정보를 처리한다.
이미지 디코더(1514)는 이미지 정보를 처리한다. 이미지 디코더(1514)는 압축된 이미지 정보를 그 수신된 포맷으로부터 소정의 다른 포맷으로 변환 등을 할 수 있다. 이미지 디코더(1514)의 출력은 소위 순수한 이미지 정보 뿐만 아니라 이미지가 서브-스트림 정보도 포함할 수 있다. 순수한 이미지 정보는 표시 장치 상에 랜더링될 주요 이미지 스트림을 구성한다. 이미지 서브-스트림 정보는, 클로즈-캡셔닝 정보, (다양한 그래픽적인 편집 컨트롤 등의) 임의의 종류의 그래픽적인 오버레이 정보, DVD 플레이어가 표시하는 다양한 종류의 서브-이미지 등의 순수한 이미지 정보에 관련된 임의의 보충 정보를 구성할 수 있다. (다른 구현에서, 비디오 디코더의 특정 양태들이 그래픽 모듈 기능에 할당될 수 있다.)
일 예시적인 구현에서, 비디오 믹싱 렌더러(VMR) 모듈(1516)은 이렇게 수신 된 이미지 정보의 처리에 있어 중심 역할을 수행한다. 개관으로서, VMR 모듈(1516)은 그래픽 인터페이스(1518) 및 디스플레이 드라이버(1520)와 대화하여, 그 다음에 그래픽 모듈(1522)을 제어한다. 이러한 대화는 그래픽 모듈(1522)의 기능을 조사하는 것을 포함할 수 있다. 이 대화는 또한 그래픽 인터페이스(1518), 디스플레이 드라이버(1520), 및 그래픽 모듈(1522)에 의한 이미지 정보 처리를 조정하는 것을 포함한다. 일 구현에서, 그래픽 인터페이스(1318)는 마이크로소프트®사의 DirectX가 제공한 DirectDraw 기능을 이용하여 구현될 수 있다. DirectDraw는 이러한 환경에서 VMR 모듈(1516)을 그래픽 모듈(1522)에 통신적으로 연결시키기 위한 메시징 도관(conduit)으로서 작용한다. 그래픽 모듈(1522)이 직접 컴퓨터 또는 유사한 장치 내의 고정된 모듈을 구성할 수 있거나, 이 그래픽 모듈(1522)은 그래픽 카드 등의 착탈가능한 유닛을 구성할 수 있다. (일반적으로, 본 개시물의 제1 섹션에서 언급된 공통적으로 할당된 적용사항은 VMR 모듈(1516)이 그래픽 모듈(1522)과 대화하는 데에 이용할 수 있는 예시적인 데이터 구조에 관련하는 상세한 사항을 제공한다; 이 대화는 본 개시물의 주요 논점이 아니기 때문에, 이러한 대화의 상세한 설명은 본원에서 반복되지 않는다.)
그래픽 모듈(1522)은 그 자체가 하나 이상의 그래픽 처리 장치(GPU)(1524)를 포함한다. 상술한 바와 같이, 시스템은 도 1에 도시된 처리 동작들의 임의의 조합을 GPU(1524)에 할당할 수 있다. GPU(1524)는 픽셀 셰이더(1526)를 이용하여 이들 태스크를 수행한다. 픽셀 셰이더는 픽셀 단위로 된 이미지 정보에 대하여 임의의 종류의 동작을 수행할 수 있는 기능을 말한다. 서브섹션 B.3은 통상적인 픽셀 셰 이더의 아키텍처, 및 도 1에 도시된 동작들을 수행하는 데에 이러한 기술을 채용할 수 있는 방식에 관련되는 추가적인 정보를 제공한다.
GPU(1524)는 그래픽 모듈(1522)에 관련된 로컬 메모리(1528)와 대화할 수 있다. 이 로컬 메모리(1528)는 임의의 수의 저장-관련 목적들을 제공할 수 있다. 예를 들면, 이 메모리(1528)는 최후 이미지 표면을 저장할 수 있고 그 다음 이 이미지 표면이 (디스플레이 모니터, 텔레비전 유닛, 저장 장치, 네트워크 타깃, 등과 같은) 출력 장치(1530)로 전달된다.
B.3. 픽셀 셰이더 관련 개선사항
배경 기술에 의하면, 도 16은 3D 처리 파이프라인에 일반적으로 이용되는 픽셀 셰이더(1600)에 대하여 공지된 아키텍처를 도시한다. 통상적인 픽셀 셰이더 애플리케이션에서의 각각의 픽셀은 4개의 부동 소수점형 값의 벡터, 예를 들면, RGBA(적, 녹, 청, 알파)로 나타낼 수 있는데, RGBA에서의 각각의 값은 개별적인 채널에 대응한다. 픽셀 셰이더(1600) 아키텍처는 입력 데이터에 대한 동작들을 수행하기 위한 산술 논리 유닛(ALU)(1610), 및 일련의 입출력 레지스터(1602, 1604, 1606, 1608)를 포함한다. 보다 상세히는, 레지스터는 컬러 레지스터(1602)를 포함한다. 이들 레지스터(1602)는 되풀이되는 정점 컬러 데이터를 정점 셰이더(도시 생략)로부터 픽셀 셰이더(1600)로 스트리밍한다. 상수 레지스터(1604)는 픽셀 셰이더(1600)에 사용자 정의 상수를 제공한다. 출력/임시 레지스터(1606)는 중간 계산을 위한 임시 저장소를 제공한다. 이 레지스터 세트 내에서, 레지스터 r0은 또한 픽셀 셰이더(1600)의 출력을 수신한다. 텍스처 레지스터(1608)는 픽셀 셰이더 ALU(1610)에 텍스처 데이터를 제공한다. 픽셀 셰이더 ALU(1610)는 프로그램에 기초하여 산술 및 텍스처 어드레싱 명령어를 실행시킨다. 프로그램은 허용가능 픽셀 셰이더 커맨드의 세트로부터 선택되는 명령어의 집합체를 포함한다.
다음의 논의는 픽셀 셰이더 ALU(1610)에 이미지 정보 및 필터 가중치들을 제공하는 텍스처 레지스터(1608)(이하, 보다 일반적으로 "유닛"이라 칭함)의 사용에 특히 초점을 맞출 것이다. 그러므로, 추가적인 서두의 정보가 도 17에 관련하는 텍스처의 개념에 관련되어 제공될 것이다.
간단히 설명하자면, 게임 애플리케이션에서, 텍스처는 캐릭터, 장면, 등을 정의하는 다각형 표면으로 "붙여넣기"되는 이미지를 정의한다. 도 17은 텍스처(1702)가 다각형(1704)에 적용되는 텍스처링 적용 동작(1700)을 도시한다. 다각형(1704)은 직사각형 형태로 조립되는 2개의 삼각형 원형으로 구성된다. 다각형(1704)은 4개의 정점 V1, V2, V3, 및 V4를 포함한다. 각 정점은 텍스처 좌표들을 포함한다. 텍스처 좌표는 종래의 U 및 V 기준 시스템에 관련하여 지정된다. 이 기준 시스템에서, U 좌표는 일반적으로 X축에 대응하고, V 좌표는 일반적으로 Y축에 대응한다. U축의 값은 0.0 내지 1.0의 범위 내로 제한되고 V축의 값도 마찬가지로 0.0 내지 1.0의 범위 내로 제한된다.
텍스처는 텍스처(1702)가 다각형(1704)으로 위치되어야 하는 방식을 지정하는 정점에 관련하여 조정된다. 도 17의 예시적인 경우, 정점 V1은 텍스처(1702)의 상부의 좌측 모서리에 대응하는 텍스처 좌표 0.0, 0.0을 가진다. 정점 V2는 표면(1702)의 상부의 우측 모서리에 대응하는 텍스처 좌표 1.0, 0.0을 가진다. 정점 V3은 텍스처(1702)의 좌측 에지의 중앙에 대응하는 텍스처 좌표 0.0, 0.5를 가진다. 정점 V4는 텍스처(1702)의 우측 에지의 중앙에 대응하는 텍스처 좌표 1.0, 0.5를 가진다. 따라서, 텍스처(1702)가 텍스처 좌표에 따라 다각형(1704)에 매핑될 때, 텍스처(1702)의 상부 반이 다각형(1704)에 적용될 것이다. 텍스처(1702)의 다각형(1704)으로의 적용의 결과는 텍스처링된 표면(1706)으로 나타난다.
3D 처리 파이프라인은 통상적으로 게이밍 정보의 생성에 관련하여 개발된, 복수의 특수 텍스처 처리 동작을 할 수 있게 한다. 하나의 특수 동작은 랩(wrap) 모드라 칭한다. 랩 모드에서, 3D 처리 파이프라인은 텍스처를 복수회 반복하여, 예를 들면, 한 경우 동일한 내용을 가지는 텍스처의 행 또는 행렬을 생성할 것이다. 미러 모드는 또한 인접하는 텍스처를 복제하지만, 거울에서와 같이 텍스처를 플리핑(filp)한다(반사시킨다).
일반적인 특성을 가지는 임의의 픽셀 셰이더 주제와 관련된 다른 정보는 워드웨어 출판사(Wordware Publishing)가 2002에 발간한 Wolfgang F. Engel이 저술한 "Direct3D ShaderX: Vertex and Pixel Shader Tips and Tricks"등과 같은 복수의 상업적으로 이용가능한 관련 서적에서 찾을 수 있다.
상술한 도입부와 함께, 나머지 설명은 픽셀 셰이더를 이용하여 도 1에 도시된 이미지 처리 파이프라인의 양태들을 구현하기 위한 예시적인 신규 기법을 설명한다.
우선, 도 18은 4개의 탭을 가지는 커널을 포함하는 이미지 처리 필터를 구현하기 위한 (도 15의) 픽셀 셰이더(1526)의 예시적인 적용(1800)을 도시한다. 도 18에 도시된 처리 유형은 도 1의 파이프라인(100)에 의해 수행된 다수의 다른 동작에도 기본이 되기 때문에, 도 18에 관련하여 설명하는 원리는 픽셀 셰이더(1526)에 의해 수행될 수 있는 다른 종류의 처리에 적용된다. 4개의 탭 필터 커널의 경우는 물론 예시적일 뿐이다; 다음의 예는 어떻게 이 모델이 다른 필터 설계들로 확장될 수 있는지를 설명한다.
일반적으로, GPU(1524)는 하나 이상의 입력 이미지를 전반적으로 스캔하고, 각각으로부터 픽셀 값들을 추출하고, 이 입력들에 기초하여 계산을 적용하고, 단일한 픽셀을 출력한다. 이 연산은
Figure 112006091641911-pct00005
Figure 112006091641911-pct00006
으로서 표현될 수 있다. 다시 말해서, 이 일반적인 표현식은 결과
Figure 112006091641911-pct00007
가 수학상으로 다양한 입력 신호
Figure 112006091641911-pct00008
Figure 112006091641911-pct00009
및, 선택 사항인, 다양한 정의된 상수
Figure 112006091641911-pct00010
의 소정의 함수에 의존함을 보여준다.
필터를 이용하는 이미지 처리에 관하여 구체적으로는, 픽셀 셰이더(1526)는 하나 이상의 입력 이미지들의 입력을, 이 이미지에 적용될 관련 필터 가중치와 함께 요구한다. 보다 형식적으로는, 출력 픽셀에 관련된 출력
Figure 112006091641911-pct00011
을 생성하는 필터는 다음과 같이 정의될 수 있다:
Figure 112006091641911-pct00012
다시 말하면, 픽셀
Figure 112006091641911-pct00013
에 대한 출력은 서로 다른 입력 항의 가중된 합계를 나타낸다. 커널은 이 입력 항에 적용될 가중치 정보를 나타낸다. 또한 서로 다른 입력 항는 입력 이미지 정보의 동일한 발췌물의 시프트된 버전들을 나타낼 수 있다.
도 18은 픽셀 셰이더(1526)가 상기 수학식을 구현할 수 있는 방식을 도시한다. 도시된 4개의 탭 예(1800)는 픽셀 셰이더 ALU(1804)에 입력을 제공하는 일련의 텍스처 유닛(1802)을 도시한다. 여기에 도시된 접근법은 첫번째 텍스처 유닛에 필터 가중치를 할당하고, 동일한 이미지 정보의 4개의 서로 다른 델타-시프트된 버전을 (커널의 4개의 탭을 나타내는) 다음의 4개의 텍스처 유닛에 할당하는 것이다. 픽셀 셰이더 ALU(1804)는 (하나의 판독 동작으로) 텍스처 유닛에 저장된 정보를 판독하고, (하나의 기록 동작으로) 특정 픽셀에 대한 하나의 출력을 제공한다. 이러한 과정이 복수회 반복되어 전체 이미지를 처리한다. 이러한 접근법은 "Taps" 필터 탭의 지원 윈도우를 가지는 1-D 회선 필터를 정의한다.
도 18에 도시된 예(1800)의 동작은 다음과 같이 보다 형식적으로 표현될 수 있다. 사용중인 예시적인 1-D 커널은 너비가 "w"인 픽셀 폭, 및 w[-1], w[0], w[2], 및 w[3]인 커널 가중치를 가진다. 가중치 텍스처는 각 픽셀에 대하여 필터 커널의 4개의 가중치를 계산함으로써 계산된다. 1-D 커널은 또한 in[-1], in[0], in[1], 및 in[2]로서 정의된 4개의 입력을 포함한다. 기호 △는 1/w로서 정의된 다. 이러한 사항이 주어지면, 다음의 정보가 텍스처 유닛 1-5에 할당된다.
텍스처 1: 좌표가 0...1인 "가중치 텍스처";
텍스처 2: 좌표가
Figure 112006091641911-pct00014
(즉, 0-△ 내지 1-△)인 입력 이미지, in[-1]
텍스처 3: 좌표가
Figure 112006091641911-pct00015
인 입력 이미지, in[0]
텍스처 4: 좌표가
Figure 112006091641911-pct00016
인 입력 이미지, in[1], 및
텍스처 5: 좌표가
Figure 112006091641911-pct00017
델타(즉, 0+2*△ 내지 1+2*△)인 입력 이미지, in[2]
tn이 텍스처 유닛"n"으로부터 페칭(fetch)된 픽셀을 나타낸다면, 픽셀 셰이더 ALU(1804)에 의해 수행된 계산은 다음의 프로그램에 의해 표현될 수 있다.
알고리즘 3: 픽셀 셰이더를 이용하는 필터 구현
Figure 112006091641911-pct00018
Figure 112006091641911-pct00019
다시 말하면, 처음에는 어레이 w가 제1 텍스처 유닛(t1)에 저장된 가중치 정보의 값에 할당된다. 그 다음 가중치 w에 의해 텍스처 유닛 t2-t5에 포함된 시프트된 이미지 정보를 수정함으로써 출력 결과(Out.rgba)가 형성된다. 레지스터 정보에 첨부된 서픽스(suffix)가 채널 정보를 정의한다. 따라서, 출력 Out.rgba는 적색, 녹색, 청색 및 알파 채널에 저장된 4개의 부동 소수점형들의 벡터를 나타낸다. 상술한 알고리즘은 가중치 정보를 저장하는 데에 1개의 유닛이 할당되기 때문에 "탭들" + 1 입력 텍스처 유닛을 필요로 할 것임을 알 수 있다.
일반적으로, 입력 이미지 정보가 RGB 포맷으로 표현되는 경우, 텍스처 유닛은 적색, 녹색, 및 청색 성분과 동일한 양을 저장할 수 있다. 그러나, 픽셀 셰이더가 (YUV 등의) 루마-관련 이미지 정보를 처리하는 것에 적용되는 경우, 텍스처 유닛은 크로마 정보(U, V)보다 루마 정보를 더 많이 저장할 수 있다. 이러한 규정은 사람의 눈이 크로마 정보 보다는 루마 정보에 더 민감하여, 만족스러운 출력 결과를 얻기 위해서는 루마 정보만큼 많은 양의 크로마 정보를 저장하고 처리할 필요가 없다는 사실을 이용한 것이다.
상술한 접근법의 다수의 변형물 및 최적물이 고려된다.
한 변형물에 따르면, 상술한 랩 모드는 임의의 텍스처를 이미지 정보의 무한 적인 타일로서 처리하는 데에 이용될 수 있다. 이 모드를 이용하여, 하나의 접근법은 입력 가중치 텍스처의 좌표를, 0...1이 아닌, 0 내지 1.0/
Figure 112006091641911-pct00020
로 설정하는 것이다. 이 텍스처를 적용함에 있어서, 텍스처 프리패치(prefetch) 유닛이 텍스처에 저장된 가중치 정보의 다음 사본으로 자동적으로 "랩 어라운드(wrap around)"할 것이다. 이 규정은 설계자로 하여금 커널의 저장소 요구량은 줄이면서도, 그 정보가 필요할 때마다 복제가 적용되는 것을 보장하게 해준다.
다른 변형물에 따르면, 커널은 4개 이상의 탭을 가질 수 있다. 이러한 상황을 해결하기 위하여, 한 구현에서는 커널 가중치 정보 세트를 4개의 값의 그룹으로 나누고 각각을 추가적인 입력 "가중치" 텍스처에 할당할 수 있다. 6개의 탭이 있는 경우를 고려한다. 이 경우, 일 구현은 2개의 가중치 텍스처(첫번째 텍스처는 4개의 값을 가지고, 두번째 텍스처는 나머지 2개의 값을 가지며, 2개의 슬롯은 이용되지 않은 상태로 남겨둔다)를 이용할 수 있다. 이 구현은 또한 6개의 입력 이미지 텍스처를 필요로 한다. 그러므로, 이 설계를 구현하기 위하여, 6개의 탭을 가지고 1번에 필터링을 수행하는 데에 8개의 텍스처 GPU가 이용될 수 있다.
다른 변형물에 따르면, 탭의 개수는 텍스처 유닛의 개수를 초과할 수 있다. 출력 이미지 정보의 계산은 "탭" 항들을 합산한 것을 나타냄을 유의한다. 따라서, 이 합산 계산을 복수의 처리 과정으로 나눔으로써 보다 많은 개수의 탭이 계산될 수 있다. 예를 들면, 필터 커널이 12개의 탭을 가지는 경우, 일 구현은:
Figure 112006091641911-pct00021
로서
Figure 112006091641911-pct00022
을 계산할 수 있다.
그 다음 이 구현은 마지막 과정:
Figure 112006091641911-pct00023
(3개의 판독, 1개의 기록)을 이용하여 결과들을 결합시킨다.
다른 가능한 구현은 다음의 일련의 연산들을 통해 집단적인
Figure 112006091641911-pct00024
결과를 형성할 수 있다:
Figure 112006091641911-pct00025
(기록)
Figure 112006091641911-pct00026
(판독, 판독, 기록)
Figure 112006091641911-pct00027
(판독, 판독, 기록)
이 접근법들 중 후자는 전자의 접근법보다 실질적으로 적은 메모리를 요구하지만, 또한 전자의 접근법에 비해 2배의 메모리 액세스를 요구한다(예를 들면, 4개의 판독 및 3개의 기록). 이러한 후자의 전략의 특징은, GPU 상의 판독-수정-기록 사이클이 매우 고가이기 때문에, 융통성 없게 되거나 불가능할 수도 있다.
다른 변형물에 따르면, 일 구현은 정의된 이미지 정보 이외의 모든 픽셀을 블랙(또는 소정의 다른 디폴트 값)으로 처리하는 특수 모드("킬 픽셀")를 제공할 수 있다. 이 규정은 디스플레이되지 않아야 할 정보에서의 자동적으로 에지 "숨기기" 조건에 적용될 수 있다.
다른 변현물에 따르면, 일 구현은 이미지 정보 처리에 있어 상기 언급한 미러 모드를 적용할 수 있다. 이 모드는 이미지 정보의 경계 외의 이미지 정보를 참조할 때 수평으로 또는 수직으로 이미지 정보를 반사시킨다.
도 19는 다수의 상술한 특징들을 요약하는 처리(1900)를 도시한다. 단계(1902)는 픽셀 셰이더의 다양한 입력 유닛에 다양한 입력 정보를 할당하는 것을 수반한다. 이러한 정보는 다양한 텍스처 유닛에 적용되는 이미지 정보 및 가중치 정보, 다양한 상수 유닛에 적용되는 상수들 등을 포함할 수 있다. 단계(1904)는 픽셀 셰이더 ALU(1804)에 적용되는 프로그래밍 명령어에 기초하여 픽셀 단위로 출력 이미지 정보를 계산하는 것을 수반한다. 단계(1906)는 추가적인 패스(pass)들이 필요한지를 판정한다. 필요하다면, 처리(1900)는 도 19에 도시된 하나 이상의 동작들을 복수회 반복한다. 단계(1908)는 최종 출력 결과를 산출한다.
마지막 논제로서, 도 20은 도 1에 관련하여 소개된 몇 가지 동작들을 수행하는 픽셀 셰이더(1526)의 적용을 도시한다. 구체적으로 도 20은 파이프라인이 4:2:2 YUV 이미지 정보를 수신하고, 업-샘플링하고, 선형 RGB 양식으로 변환하고, 결과인 선형 정보 상에서의 스케일링을 수행하는 일 예시적인 적용을 나타낸다. 도 20에 도시된 처리는 도 18 및 19에 관련하여 상기 개발된 개념에 기초한다.
(NV12 등의) 혼성 평면형 포맷(hybrid plannar format)으로 표현된 4:2:0 이 미지 정보는 루마 평면과 크로마 평면으로 구성되도록 처리될 수 있음을 유의한다. 그러므로 이 정보에서의 특정 동작들을 병렬로 수행하는 것이 가능하다.
한 접근법은 텍스처 유닛을 2개의 그룹으로 나누는 것인데, 그 중 한 그룹은 크로마 성분을 보간하는 데에 이용된다. 이 업-샘플링 동작은 4:4:4 크로마 정보를 생성하는 데에 이용될 수 있는 스케일링 확대 동작을 호출한다. 그 다음 픽셀 셰이더(1526)는 변환 행렬을 이용하여 대응하는 R'G'B' 정보를 픽셀 단위로 계산하는 데에 이 루마 및 보간된 크로마 성분을 이용할 수 있다. 그 다음 픽셀 셰이더(1526)는 이미지 정보를 선형화하는 데에 이 변환 함수를 적용할 수 있다. 그 다음, 픽셀 셰이더(1526)는 제2 텍스처 유닛 그룹을 이용하여 RGB 공간에서 스케일링을 더 수행하는 데에 이용될 수 있다.
보다 형식적으로, 다음은 상기-식별된 방식으로 이미지 정보를 변환하는 데에 이용될 수 있는 예시적인 일련의 단계들을 식별한다.
1) 제1 스케일링 동작을 수행하기 위하여 (도 18에 도시된) 상술한 방식으로 텍스처 1-5를 구축한다.
2) 상술한 스케일링 동작을 이용하여 루마 정보의 샘플링률의 2배가 되는 샘플링률로 CbCr 정보를 계산한다.
3) Y'CbCr 대 R'G'B' 컬러 공간 변환 행렬을 행렬 M인 16개의 상수의 어레이로 로딩한다.
4) 다음과 같이 R'G'B' 정보를 계산한다.
Figure 112006091641911-pct00028
5) 변환 함수를 이용하여 R'G'B'로부터 RGB를 계산한다.
6) (도 18을 참조하여) 상술한 알고리즘을 이용하지만 여기서는 텍스처 6-12를 가지고 스케일링된 선형 RGB 데이터를 계산함으로써 제2 스케일링 동작을 수행한다.
7) 가로 방향의 스케일링이 수행된 후, RGB 정보에 세로 방향의 스케일링을 적용한다.
도 20은 상술한 알고리즘을 흐름도 형태로 설명한 처리(2000)를 도시한다. 단계(2002)는 적절한 텍스처 유닛(예를 들면, 제1 텍스처 유닛 세트)에 정보를 할당하는 것을 포함한다. 단계(2004)는 제1 텍스처 유닛 세트를 이용하여 크로마 정보를 업-샘플링하는 것을 수반한다. 단계(2006)는 픽셀 셰이더(1526)로의 컬러 공간 변환을 수행하는 데에 이용하기 위한 상수를 로딩하는 것을 수반한다. 단계(2008)는 상수를 이용하여 이미지 정보를 비선형 R'G'B' 형태로 변환하는 것을 수반한다. 단계(2010)는 R'G'B' 정보를 선형 RGB 형태로 변환하는 것을 수반한다. 단계(2012)는 RGB 정보를 스케일링하는 것을 수반한다.
C. 예시적인 컴퓨팅 환경
일 예시적인 구현에서, 앞의 도면들에 도시된 처리의 다양한 양태는 컴퓨팅 장비에 의해 수행될 수 있다. 이 경우, 도 21은 앞의 도면들에 도시된 처리의 양태를 구현하는 데에 이용될 수 있는 예시적인 컴퓨터 환경(2100)에 관련된 정보를 제공한다. 예를 들면, 컴퓨터는 도 1에 도시된 이미지 처리 파이프라인(100) 중 일부 또는 모두를 구현하는 데에 이용될 수 있다.
컴퓨팅 환경(2100)은 범용 유형의 컴퓨터(2102) 및 디스플레이 장치(2104)를 포함한다. 그러나, 컴퓨팅 환경(2100)은 다른 종류의 컴퓨팅 장비를 포함할 수 있다. 예를 들면, 도시되지는 않았지만, 컴퓨터 환경(2100)은 핸드-헬드 또는 랩탑 장치, 셋톱 박스, 게임 콘솔, 비디오 처리/표시 장치(예를 들면, 텔레비전, DVR, 등)로 통합된 처리 기능, 메인프레임 컴퓨터, 등을 포함할 수 있다. 또한, 도 21은 설명을 용이하게 하기 위하여 모두 그루핑된 컴퓨터 환경(2100)의 구성 요소를 도시한다. 그러나, 컴퓨팅 환경(2100)은 분산형 처리 구성을 채용할 수 있다. 분산형 컴퓨팅 환경에서, 컴퓨팅 자원은 이 환경 전반에 걸쳐 물리적으로 분산 배치될 수 있다.
예시적인 컴퓨터(2102)는 하나 이상의 프로세서 또는 프로세싱 유닛(2106), 시스템 메모리(2108), 및 버스(2110)를 포함한다. 버스(2110)는 다양한 시스템 컴포넌트를 모두 접속시킨다. 예를 들면, 버스(2110)는 프로세서(2106)를 시스템 메모리(2108)에 접속시킨다. 버스(2110)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스 또는 프로세서, AGP(accelerated graphics port), 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 임의의 유형의 버스 구조 또는 버스 구조들의 조합을 이용하여 구현될 수 있다. 컴퓨터(2102)는 상술한 바와 같이 하나 이상의 GPU 유닛(도시 생략)에 연결될 수도 있다.
컴퓨터(2102)는 각각이 분리형 또는 비분리형일 수 있는 다양한 유형의 휘발성 및 비휘발성 매체를 포함하는 다양한 컴퓨터 판독가능 매체 또한 포함할 수 있다. 예를 들면, 시스템 메모리(2108)는 RAM(2112) 등의 휘발성 메모리, 및 ROM(2114) 등의 비휘발성 메모리의 형태로 된 컴퓨터 판독가능 매체를 포함한다. ROM(2114)은 시동중과 같은 때에 컴퓨터(2102) 내의 구성요소들간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 입출력 시스템(2116; BIOS)을 포함한다. RAM(2112)은 일반적으로 프로세싱 유닛(2106)에 즉시 액세스할 수 있는 형태로 된 프로그램 모듈 및/또는 데이터를 포함한다.
다른 유형의 컴퓨터 저장 매체는 비분리형 비휘발성 자기 매체로부터 판독하고 그 자기 매체에 기록하기 위한 하드 디스크 드라이브(2118), 분리형 비휘발성 자기 디스크(2122)로부터 판독하고 그 자기 디스크에 기록하기 위한 자기 디스크 드라이브(2120), 및 CD-ROM, DVD-ROM 또는 기타 광 매체 등의 분리형 비휘발성 광 디스크(2126)로부터 판독하고/거나 그 광 디스크에 기록하기 위한 광 디스크 드라이브(2124)를 포함한다. 하드 디스크 드라이브(2118), 자기 디스크 드라이브(2120), 및 광 디스크 드라이브(2124)는 각각 하나 이상의 데이터 매체 인터페이스(2128)에 의해 시스템 버스(2110)에 접속된다. 대안으로, 하드 디스크 드라이브(2118), 자기 디스크 드라이브(2120), 및 광 디스크 드라이브(2124)는 SCSI 인터 페이스(도시 생략), 또는 다른 연결 메카니즘에 의해 시스템 버스(2110)에 접속될 수 있다. 도시되지는 않았지만, 컴퓨터(2102)는 자기 카세트 또는 다른 자기 저장 장치, 플래시 메모리 카드, CD-ROM, DVD 또는 다른 광 저장 장치, EEPROM(electrically erasable programmable read-only memory), 등과 같은 다른 유형의 컴퓨터 판독가능 매체를 포함할 수 있다.
일반적으로, 상기 식별된 컴퓨터 판독가능 매체는 컴퓨터(2102)에 의한 사용을 위한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다. 예를 들면, 판독가능 매체는 운영 체제(2130), 애플리케이션 모듈(2132), 기타 프로그램 모듈(2134), 및 프로그램 데이터(2136)를 저장할 수 있다.
컴퓨터 환경(2100)은 다양한 입력 장치를 포함할 수 있다. 예를 들면, 컴퓨터 환경(2100)은 컴퓨터(2102)에 커맨드 및 정보를 입력하기 위한 키보드(2138) 및 포인팅 장치(2140)(예를 들면, "마우스")를 포함한다. 컴퓨터 환경(2100)은 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 직렬 포트, 스캐너, 카드 판독 장치, 디지털 또는 비디오 카메라, 등과 같은 다른 입력 장치(도시 생략)를 포함할 수 있다. 입/출력 인터페이스(2142)는 입력 장치를 프로세싱 유닛(2106)에 연결시킨다. 보다 상세히는, 입력 장치는 병렬 포트, 직렬 포트, 게임 포트, USB(universal serial bus) 포트 등과 같은 임의의 종류의 인터페이스 및 버스 구조를 통해 컴퓨터(2102)에 연결될 수 있다.
컴퓨터 환경(2100)은 또한 디스플레이 장치(2104)를 포함한다. 비디오 어댑 터(2144)는 디스플레이 장치(2104)를 버스(2110)에 연결한다. 디스플레이 장치(2104) 외에도, 컴퓨터 환경(2100)은 스피커(도시 생략), 프린터(도시 생략), 등과 같은 기타 출력 주변 장치를 포함할 수 있다.
컴퓨터(2102)는 원격 컴퓨팅 장치(2146)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작한다. 원격 컴퓨팅 장치(2146)는 범용 퍼스널 컴퓨터, 휴대용 컴퓨터, 서버, 게임 콘솔, 네트워크 확장 장치 등을 포함하는 임의의 종류의 컴퓨터 장비를 포함할 수 있다. 원격 컴퓨팅 장치(2146)는 컴퓨터(2102)에 관련하여 상술한 특징 모두 또는 그 일부의 서브셋을 포함할 수 있다.
WAN, LAN 등과 같은 원격 컴퓨팅 장치(2146)와 컴퓨터(2102)를 연결시키는 데에 임의의 유형의 네트워크(2148)가 이용될 수 있다. 컴퓨터(2102)는 광대역 접속, 모뎀 접속, DSL 접속, 또는 기타 접속 전략을 이용할 수 있는 네트워크 인터페이스(2150)를 통해 네트워크(2148)에 연결된다. 도시되지는 않았지만, 컴퓨팅 환경(2100)은 컴퓨터(2102)를 (변조된 무선 신호, 변조된 적외선 신호, 등을 통하여) 원격 컴퓨팅 장치(2146)에 접속시키기 위한 무선 통신 기능을 제공할 수 있다.
마치면서, 이 개시물에 복수의 예들이 대안으로(예를 들면, 경우 A 또는 경우 B) 제시되었다. 또한, 이 개시물은 한 구현에서의 대안들(예를 들면, 경우 A 또는 경우 B)을 결합하는 경우들을 수용하지만, 모든 예에서 이들 결합하는 경우들을 특별히 언급하지는 않을 수 있다.
또한, 복수의 특징들이, 이들 특징들이 해결할 수 있는 예시적인 문제점을 먼저 식별함으로써 본원에 기술되었다. 이러한 전개 방식은 다른 이들이 본원에서 기술된 방식으로 문제점을 인식하고/거나 명료하게 표현한다는 것에 대한 승인을 구성하고 있지는 않다. 비디오 처리 분야에서 나타나는 문제점의 인식 및 표현은 본 발명의 일부로서 이해되어야 한다.
본 발명이 구조적 특징 및/또는 방법론적인 행위에 특정된 언어로 기술되었지만, 첨부된 특허 청구 범위에 정의된 발명은 기술된 특정 특징 또는 행위에 제한되어야 할 필요는 없다고 이해되어야 한다. 오히려, 특정 특징 및 행위는 첨부된 발명을 구현하는 예시적인 형태로서 개시된다.

Claims (62)

  1. 선형 형태로 이미지 정보를 처리하기 위한 방법으로서,
    비월주사식(interlaced)의 비선형 형태로 된 이미지 정보를 수신하는 단계,
    상기 이미지 정보에 전달(transfer) 함수를 적용시킴으로써 상기 이미지 정보를 선형 형태로 변환하는 단계,
    상기 이미지 정보를 탈-비월주사(de-interlacing)함으로써 상기 이미지 정보를 순차주사식(progressive) 형태로 변환하는 단계; 및
    순차주사식의 선형 형태로 된 상기 이미지 정보에 대한 처리를 수행하는 단계를 포함하되,
    상기 처리를 수행하는 단계는 상기 순차주사식의 선형 형태로 된 상기 이미지 정보에 대해 적어도 스케일링 동작을 수행하는 단계를 포함하고,
    상기 스케일링 동작은,
    본래 이미지 치수 및 원하는 최종 이미지 치수에 기초하여 필터 커널의 수를 사전-계산하는 단계 - 상기 필터 커널은 상기 이미지 정보 내의 픽셀들에 적용되는 가중치를 정의함 - ;
    상기 본래 이미지 치수의 상기 원하는 최종 이미지 치수에 대한 비율에 기초하여 각각의 커널이 가져야하는 탭의 수를 결정하는 단계 - 상기 탭은 상기 커널이 작용하는(act on) 이미지 정보 샘플들을 정의함 - ; 및
    상기 사전-계산된 필터 커널 및 상기 결정된 탭을 적용하여 상기 이미지 정보를 처리하는 단계를 포함하는
    이미지 정보 처리 방법.
  2. 제1항에 있어서,
    수신된 상기 이미지 정보는 루마(luma)-관련 컬러 공간에 있는
    이미지 정보 처리 방법.
  3. 제2항에 있어서,
    상기 이미지 정보의 상기 선형 형태로의 변환 이전에, 상기 이미지 정보에 변환 행렬을 적용함으로써 상기 이미지 정보를 비선형 R'G'B' 컬러 공간으로 변환시키는 단계를 더 포함하는
    이미지 정보 처리 방법.
  4. 제1항에 있어서,
    상기 방법은 이미지 처리 파이프라인을 정의하고,
    상기 이미지 처리 파이프라인을 구현하는 데에 코드 프로그램이 이용되는
    이미지 정보 처리 방법.
  5. 제4항에 있어서,
    상기 코드 프로그램의 코드는,
    상기 이미지 처리 파이프라인의 요구사항을 입력하고,
    상기 요구사항을 구현하는 데에 이용될 수 있는 코드 모듈들의 라이브러리로부터의 코드 모듈들을 어셈블리함으로써 생성되는
    이미지 정보 처리 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 제1항에 기재된 방법을 구현하도록 구성되는 컴퓨터-판독가능 명령어를 저장하는
    컴퓨터 판독가능 기록 매체.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
KR1020067026069A 2004-07-29 2006-12-11 선형 광 값들을 이용한 이미지 처리 및 기타 이미지 처리 개선 KR101213824B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US10/902,325 US7643675B2 (en) 2003-08-01 2004-07-29 Strategies for processing image information using a color information data structure
US10/902,325 2004-07-29
PCT/US2004/024707 WO2005013087A2 (en) 2003-08-01 2004-07-30 Strategies for processing image information using a color information data structure
USPCT/US04/24707 2004-07-30
US10/987,378 2004-11-12
US10/987,378 US7158668B2 (en) 2003-08-01 2004-11-12 Image processing using linear light values and other image processing improvements
PCT/US2005/026761 WO2006015107A2 (en) 2004-07-29 2005-07-28 Image processing using linear light values and other image processing improvements

Publications (2)

Publication Number Publication Date
KR20070049113A KR20070049113A (ko) 2007-05-10
KR101213824B1 true KR101213824B1 (ko) 2012-12-24

Family

ID=37500256

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067026069A KR101213824B1 (ko) 2004-07-29 2006-12-11 선형 광 값들을 이용한 이미지 처리 및 기타 이미지 처리 개선

Country Status (9)

Country Link
EP (4) EP1771812B1 (ko)
JP (1) JP4989470B2 (ko)
KR (1) KR101213824B1 (ko)
CN (1) CN1981294B (ko)
AT (1) ATE524923T1 (ko)
AU (2) AU2005269370B2 (ko)
BR (1) BRPI0511474B1 (ko)
CA (1) CA2569211C (ko)
WO (1) WO2006015107A2 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5012493B2 (ja) * 2007-02-20 2012-08-29 セイコーエプソン株式会社 映像出力装置、映像出力方法及び映像出力プログラム、映像処理システム、並びに映像処理装置、映像処理方法及び映像処理プログラム
US8843913B2 (en) 2007-06-05 2014-09-23 Intel Corporation Dynamic linking and loading of post-processing kernels
KR101032835B1 (ko) * 2010-07-21 2011-05-06 서울대학교산학협력단 백터 그래픽스 기술에 있어서 스캔라인 기반의 랜더링 방법 및 그에 따른 장치
CN102295061A (zh) * 2011-05-19 2011-12-28 上海海事大学 基于图像处理的船舶水尺自动检测方法
US9258517B2 (en) * 2012-12-31 2016-02-09 Magnum Semiconductor, Inc. Methods and apparatuses for adaptively filtering video signals
US9241128B2 (en) 2013-02-14 2016-01-19 Warner Bros. Entertainment Inc. Video conversion technology
US9223551B1 (en) 2014-07-22 2015-12-29 Here Global B.V. Rendergraph compilation method and use thereof for low-latency execution
JP6381344B2 (ja) * 2014-07-31 2018-08-29 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
US9852536B2 (en) 2014-08-05 2017-12-26 Qualcomm Incorporated High order filtering in a graphics processing unit
US9454841B2 (en) * 2014-08-05 2016-09-27 Qualcomm Incorporated High order filtering in a graphics processing unit
US10080005B2 (en) 2015-11-09 2018-09-18 Netflix, Inc. High dynamic range color conversion correction
US10715772B2 (en) 2015-11-09 2020-07-14 Netflix, Inc. High dynamic range color conversion correction
US10742986B2 (en) 2015-11-09 2020-08-11 Netflix, Inc. High dynamic range color conversion correction
US10679544B2 (en) * 2016-01-29 2020-06-09 Barco Nv Digital image processing chain and processing blocks and a display including the same

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020145610A1 (en) * 1999-07-16 2002-10-10 Steve Barilovits Video processing engine overlay filter scaler

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463372A (en) * 1982-03-24 1984-07-31 Ampex Corporation Spatial transformation system including key signal generator
JP3020544B2 (ja) * 1990-04-06 2000-03-15 株式会社日立製作所 画像信号の走査変換装置
US5235432A (en) * 1991-11-22 1993-08-10 Creedon Brendan G Video-to-facsimile signal converter
JPH0659908A (ja) * 1992-08-11 1994-03-04 Toshiba Corp プログラム実行装置
US5526051A (en) * 1993-10-27 1996-06-11 Texas Instruments Incorporated Digital television system
JP3381755B2 (ja) * 1994-10-11 2003-03-04 セイコーエプソン株式会社 画像の粒状性を減らすための改良された適応性のあるフィルタリングおよび閾値設定の方法及び装置
US5715073A (en) * 1995-02-03 1998-02-03 Eastman Kodak Company Processing by separate stages monochrome digital images to provide halftone color images
US6370198B1 (en) * 1997-04-07 2002-04-09 Kinya Washino Wide-band multi-format audio/video production system with frame-rate conversion
US6028677A (en) * 1997-09-16 2000-02-22 Hewlett-Packard Co. Method and apparatus for converting a gray level pixel image to a binary level pixel image
US6034733A (en) * 1998-07-29 2000-03-07 S3 Incorporated Timing and control for deinterlacing and enhancement of non-deterministically arriving interlaced video data
GB9918643D0 (en) * 1999-08-06 1999-10-13 Canon Kk Geometry pipeline for computer graphics
US6671068B1 (en) * 1999-09-30 2003-12-30 Sharp Laboratories Of America, Inc. Adaptive error diffusion with improved edge and sharpness perception
AUPQ377899A0 (en) * 1999-10-29 1999-11-25 Canon Kabushiki Kaisha Phase three kernel selection
JP2001204045A (ja) * 2000-01-24 2001-07-27 Mitsubishi Electric Corp 動き検出装置
US6940557B2 (en) * 2001-02-08 2005-09-06 Micronas Semiconductors, Inc. Adaptive interlace-to-progressive scan conversion algorithm
KR20030023711A (ko) * 2001-05-23 2003-03-19 코닌클리케 필립스 일렉트로닉스 엔.브이. 디더링 방법 및 장치
US6788312B1 (en) * 2001-08-06 2004-09-07 Nvidia Corporation Method for improving quality in graphics pipelines through a frame's top and bottom field processing with conditional thresholding and weighting techniques
US7039909B2 (en) * 2001-09-29 2006-05-02 Intel Corporation Method and apparatus for performing compiler transformation of software code using fastforward regions and value specialization
JP2003153079A (ja) * 2001-11-08 2003-05-23 Sony Corp 画像処理装置と画像処理方法
JP2004023328A (ja) * 2002-06-14 2004-01-22 Matsushita Electric Ind Co Ltd 画像処理装置、画像処理方法、プログラム、および媒体

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020145610A1 (en) * 1999-07-16 2002-10-10 Steve Barilovits Video processing engine overlay filter scaler

Also Published As

Publication number Publication date
EP2364028A3 (en) 2012-03-28
EP2364029A2 (en) 2011-09-07
EP2365472A2 (en) 2011-09-14
WO2006015107A2 (en) 2006-02-09
WO2006015107A3 (en) 2006-04-27
AU2010238551B2 (en) 2011-08-18
CN1981294B (zh) 2010-12-22
EP2365472A3 (en) 2013-09-25
BRPI0511474A (pt) 2007-12-26
AU2005269370A1 (en) 2006-02-09
KR20070049113A (ko) 2007-05-10
CA2569211C (en) 2014-04-22
EP1771812A2 (en) 2007-04-11
EP1771812A4 (en) 2007-11-21
ATE524923T1 (de) 2011-09-15
BRPI0511474B1 (pt) 2017-11-21
EP2364028B1 (en) 2014-11-26
AU2010238551A1 (en) 2010-11-18
JP4989470B2 (ja) 2012-08-01
CA2569211A1 (en) 2006-02-09
EP2364029A3 (en) 2011-12-21
JP2008508802A (ja) 2008-03-21
AU2005269370B2 (en) 2010-07-29
EP1771812B1 (en) 2011-09-14
EP2364028A2 (en) 2011-09-07
CN1981294A (zh) 2007-06-13

Similar Documents

Publication Publication Date Title
KR101213824B1 (ko) 선형 광 값들을 이용한 이미지 처리 및 기타 이미지 처리 개선
US7158668B2 (en) Image processing using linear light values and other image processing improvements
US8570441B2 (en) One pass video processing and composition for high-definition video
KR100604102B1 (ko) 디지털 다목적 디스크 비디오 처리 방법 및 장치
US7876378B1 (en) Method and apparatus for filtering video data using a programmable graphics processor
RU2402811C2 (ru) Обработка изображений с помощью линейных параметров светоустановки и других усовершенствований обработки изображений
US20070097142A1 (en) Resampling chroma video using a programmable graphics processing unit to provide improved color rendering
US10225485B1 (en) Method and apparatus for accelerated tonemapping
US8594441B1 (en) Compressing image-based data using luminance
JPWO2017203941A1 (ja) 画像処理装置、および画像処理方法、並びにプログラム
US8279240B2 (en) Video scaling techniques
Roch et al. Interactive local tone mapping operator with the support of graphics hardware

Legal Events

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

Payment date: 20151118

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161123

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171117

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181115

Year of fee payment: 7