KR100887462B1 - 감마 정정의 결여를 보상하기 위한 알파 정정 - Google Patents

감마 정정의 결여를 보상하기 위한 알파 정정 Download PDF

Info

Publication number
KR100887462B1
KR100887462B1 KR1020030086793A KR20030086793A KR100887462B1 KR 100887462 B1 KR100887462 B1 KR 100887462B1 KR 1020030086793 A KR1020030086793 A KR 1020030086793A KR 20030086793 A KR20030086793 A KR 20030086793A KR 100887462 B1 KR100887462 B1 KR 100887462B1
Authority
KR
South Korea
Prior art keywords
alpha
value
correction
gamma
corrected
Prior art date
Application number
KR1020030086793A
Other languages
English (en)
Other versions
KR20040048839A (ko
Inventor
플렛존씨.
라푸노브미카일엠.
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040048839A publication Critical patent/KR20040048839A/ko
Application granted granted Critical
Publication of KR100887462B1 publication Critical patent/KR100887462B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/503Blending, e.g. for anti-aliasing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Picture Signal Circuits (AREA)
  • Processing Of Color Television Signals (AREA)
  • Image Processing (AREA)
  • Transforming Electric Information Into Light Information (AREA)

Abstract

폰트 글리프의 블렌딩 계수(알파값)에 대하여, 텍스트 렌더링 프로세스에서의 감마 정정의 결여를 보상하기 위한 알파 정정이 행해진다. 알파 정정은, 디스플레이 디바이스의 소정의 감마값에 대응하는 정정 계수의 집합을 선택하는 것과, 알려진 알파값, 전경 색상 및 정정 계수의 집합으로부터 정정된 알파값을 계산하는 것을 포함한다. 그 후, 정정된 알파값은 감마 정정없이 해당 디스플레이 화소의 전경 및 배경 색상을 블렌딩하는 데에 사용될 수 있다. 따라서, 알파 정정은 감마 정정을 수행하도록 구성되지 않은 GPU에 의해 수행됨으로써, 텍스트 렌더링이 행해질 수 있는 속도가 증가된다.
알파 정정, 감마 정정, 텍스트 렌더링, 폰트 글리프

Description

감마 정정의 결여를 보상하기 위한 알파 정정{ALPHA CORRECTION TO COMPENSATE FOR LACK OF GAMMA CORRECTION}
도 1은 감마 정정의 결여를 보상하기 위하여 필터링된 알파값을 정정하기 위한 방법을 나타낸 흐름도.
도 2는 소정의 감마값에 대응하는 정정 계수의 집합을 계산하는 동안 수행될 수 있는 소정의 동작들을 포함하는 최적화 루틴의 흐름도.
도 3은 최적의 정정 계수의 집합을 계산하는 데에 포함될 수 있는 제한된 최적화의 일 실시예를 나타낸 흐름도.
도 4는 알려진 알파값, 전경 및 정정 계수로부터 정정된 알파값을 계산하는 다이어그램 및 해당 공식을 나타낸 도면.
도 5는 감마 정정을 포함하지 않는 렌더링 프로세스 동안, GPU에 의해 이용될 수 있는 컴포넌트 및 엘리먼트의 기능 블럭도.
도 6은 본 발명의 엘리먼트를 구현하는 데에 적합한 운영 환경을 제공하는 운영 시스템의 일 실시예를 나타낸 도면.
<도면의 주요 부분에 대한 부호의 설명>
621 : 프로세싱 유닛
622 : 시스템 메모리
623 : 시스템 버스
624 : ROM
625 : 랜덤 액세스 메모리(RAM)
626 : 기본 입출력 시스템(BIOS)
본 발명은 디스플레이 렌더링 프로세스(display rendering process)에 관한 것으로, 특히 알파값 정정(alpha value correction)을 포함하는 폰트 글리프 렌더링 프로세스(font glyph rendering process)에 관한 것이다.
표준 소프트웨어 텍스트 렌더링에서, 하나 이상의 폰트 글리프는 디스플레이 디바이스에 디스플레이되는 텍스트의 각각의 이미지를 나타낸다. 마찬가지로, 각각의 폰트 글리프는, 폰트 글리프의 전경 색상(foreground color)의 얼마만큼이 해당 폰트 글리프를 디스플레이하는 데에 사용되는 각 화소에 대한 배경(background)에 더해져야 하는지를 나타내는 하나 이상의 블렌딩 계수(blending coefficient)에 의해 표현된다. 전형적으로, 이러한 블렌딩 계수들은 알파(α)값으로 칭해진다. 또한, 전경과 배경 간의 블렌딩에 의해 다른 이미지도 표현될 수 있다.
알파값이 일단 결정되고 나면, 그 알파값은 각 화소의 전경과 배경 색상을 블렌딩하는 데에 사용될 수 있다. 이상적으로, 블렌딩은 선형 색상 공간(linear color space)에서 발생하는데, 이러한 선형 색상 공간에서, 예를 들어 최소값은 화 소를 렌더링하는 데에 광자(photon)가 사용되지 않을 것임을 나타내고, 최대값은 최대량의 광자가 사용될 것임을 나타낸다. 그러나, 디스플레이 디바이스가 색상을 렌더링하는 방식에 있어서의 비선형성을 보상하기 위하여, 블렌딩으로부터 유도된 화소 색상에 대하여, 전형적으로 렌더링되기 전에 감마 정정 프로세스가 행해져야 한다. 감마 정정은 디스플레이 디바이스의 감마값을 본질적으로 보상한다. 디스플레이 디바이스의 감마값은 디바이스마다 다르다. 디스플레이 디바이스에서 이미지를 렌더딩하는 데에 이용되는 블렌딩 및 감마 정정 프로세스는 본 기술 분야에 잘 알려져 있는 렌더링 프로세스이다.
블렌딩 및 감마 정정은 전형적으로 소프트웨어 어플리케이션을 통하여 발생한다. 그러나, 텍스트 렌더링 프로세스는 CPU의 자원을 필요로 하는 대신에, 그래픽 프로세싱 유닛(GPU)과 같은 전용 하드웨어 컴포넌트에 의해 수행되는 경우에 훨씬 더 신속하게 수행될 수 있다. 그러나, GPU를 이용하여 블렌딩을 수행하는 데에 있어서의 한가지 문제점은, 현존하는 GPU는 감마 정정을 수행하도록 구성되어 있지 않다는 것이다. 그리고, 감마 정정이 수행되지 않는다면, 알파값이 ClearType 방법을 통해 필터링되는 경우, 디스플레이 디바이스의 비선형성(감마값)으로 인해, 렌더링된 텍스트는 디스플레이된 텍스트 캐릭터의 에지 부근에 바람직하지 않은 색상 프린지(color fringe)를 가질 수 있다. 또한, 배경값은 GPU 내에 저장되고 CPU에 의해 저속으로만 액세스 가능하기 때문에, 문제는 더 복합적으로 된다.
마이크로소프트 NT4 운영 시스템에서, CPU 사이클을 절약하기 위하여, 블렌딩 이후에는 감마 정정이 수행되지 않는다. 근사값으로서, 알파값은 블렌딩 이전 에 그 알파값 자체에 감마 정정을 수행함으로써 조절된다. 그러나, 이러한 근사값은 전경 색상이 어두운지 밝은지를 고려하지 않은 것이기 때문에 부정확하다. 전경 색상을 무시하고 알파를 조절하면, 가능한 전경 색상의 절반에 대하여 근사값의 에러가 증가한다.
따라서, 현재 본 기술 분야에서는, 전경 색상의 지식을 이용하면서, 배경 색상에는 액세스하지 않고, 또한 감마 정정도 필요로 하지 않는 텍스트 렌더링을 가속화하는 개선된 방법이 필요하다.
본 발명은 감마 정정의 결여를 보상하기 위하여, 폰트 글리프에 대응하는 필터링된 알파값을 정정하는 방법, 시스템 및 해당 컴퓨터 프로그램 제품에 관한 것이다.
본 발명의 한 양태에 따르면, 알파 정정을 수행하는 것은, 디스플레이 디바이스의 소정의 감마값에 대응하는 정정 계수의 집합을 선택하는 동작과, 감마 정정없이 해당 디스플레이 화소의 전경과 배경 색상을 블렌딩하는 데에 사용될 수 있는 정정된 알파값을 계산하는 동작을 포함한다. 본 발명은 감마 정정을 불필요하게 하고, 또한 알파 정정은 배경 색상에 액세스할 필요가 없기 때문에, 폰트 글리프를 렌더링하기 위한 프로세스는 대부분 GPU에 의해 수행될 수 있으므로, 텍스트 렌더링이 이루어질 수 있는 전체 속도가 증가한다.
일 실시예에서, 정정된 알파값은 공식 αcorrected = α+ α(1-α)(c1αf + c2α+ c3f + c4)를 통해 GPU 상에서 계산된다. 여기에서, αcorrected는 정정된 알파, α는 알파, f는 감마 정정된 전경 휘도(luminance), (c1, c2, c3, c4 )는 정정 계수의 집합이다. 이 공식은 각 알파값마다 1회씩 적용된다.
그 후, 각 디스플레이 화소에 대한 정정된 알파값을 획득하면, 디스플레이 화소의 전경과 배경 색상이 블렌딩됨으로써, 폰트 글리프가 감마 정정없이 색상 프린지를 발생시키지 않고 디스플레이될 수 있게 하는 적합한 화소 디스플레이값이 생성된다.
정정된 알파값의 유도를 돕는 데에 사용되는 최적의 정정 계수의 집합 (c1, c2, c3, c4)은 알파 정정의 에러를 최소화함으로써 계산될 수 있다. 그 후, 감마 정정 없이 블렌딩이 이루어질 수 있다. 이와 같은 알파 정정 에러의 최소화는 소프트웨어 설계시에 이루어질 수 있으며, 제한된 최적화 알고리즘(constrained optimization algorithm) 또는 다른 유사한 프로시져에 의해 수행될 수 있다.
본 발명의 다른 특징 및 이점은 이하의 상세한 설명에 개시될 것이며, 부분적으로는 이하의 상세한 설명으로부터 명백히 알 수도 있고 본 발명의 구현에 의해 학습될 수도 있다. 본 발명의 특징 및 이점은 첨부된 특허청구범위에 특히 지적되어 있는 수단 및 조합에 의해 실현 및 획득될 수 있다. 여기에 개시된 것과 그 이외의 본 발명의 특징은 이하의 상세한 설명 및 첨부된 특허청구범위로부터 완전히 분명해질 것이며, 이하에 개시된 것과 같은 본 발명의 구현에 의해 학습될 수 있다.
상기에 언급된 것과 그 이외의 본 발명의 이점 및 특징이 획득될 수 있는 방법을 설명하기 위하여, 이하에서는, 상기에 간단하게 개시된 본 발명이 첨부된 도면들에 나타나 있는 특정 실시예들을 참조하여 보다 더 상세하게 설명될 것이다. 이러한 도면들은 단지 본 발명의 전형적인 실시예를 나타내고 있을 뿐이므로, 본 발명의 범위를 제한하기 위한 것이 아님을 이해해야 하며, 본 발명은 첨부 도면들을 이용하여 보다 상세하고 구체적으로 설명될 것이다.
본 발명은 감마 정정의 결여를 보상하기 위하여 이미지 렌더링 프로세스 동안 알파 정정을 수행하는 방법, 시스템 및 해당 컴퓨터 프로그램 제품에 관한 것이다. 이하에 더 상세하게 설명되는 것과 같이, 본 발명의 실시예는 다양한 컴퓨터 하드웨어를 포함하는 전용 또는 범용 컴퓨터를 포함하거나, 그에 의해 실행될 수 있다. 특히, 본 발명의 실시는 그래픽 프로세싱 유닛(GPU)에 의해 실현될 수 있다.
또한, 본 발명의 범위 내에 포함되는 실시예는, 그 내부에 저장된 컴퓨터 실행가능 명령 또는 데이터 구조를 포함 또는 운반하는 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 예를 들어, 이러한 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM, 또는 광 디스크 저장 장치, 자기 디스크 저장 장치 또는 다른 자기 저장 장치와 같은 다른 물리적 저장 매체, 또는 컴퓨터 실행가 능 명령이나 데이터 구조의 형식으로 원하는 프로그램 코드 수단을 운반 또는 저장하는 데에 사용될 수 있으며 범용 또는 전용 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있지만, 이들로 제한되는 것은 아니다. 정보가 네트워크 또는 다른 통신 접속(유선, 무선, 또는 유선과 무선의 조합)을 통해 컴퓨터에 전달 또는 제공되는 경우, 컴퓨터는 그 접속을 적합하게 컴퓨터 판독가능 매체로서 본다. 따라서, 이러한 임의의 접속은 적합하게 컴퓨터 판독가능 매체로 칭할 수 있다. 상기에 언급된 것들의 조합도 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다. 컴퓨터 실행가능 명령은 예를 들어 범용 컴퓨터, 전용 컴퓨터, 또는 GPU와 같은 전용 프로세싱 디바이스가 일정한 기능 또는 기능군을 수행하게 하는 명령 및 데이터를 포함한다.
알파 정정
도 1은 감마 정정의 결여를 보상하기 위하여 필터링된 알파값을 정정하는 한 방법의 흐름도(100)를 나타내고 있다. 폰트 글리프 렌더링 프로세스에서, 블렌딩 계수로서도 알려져 있는 필터링된 알파값은, 폰트 글리프를 디스플레이하는 데에 사용되는 각 화소에 대해 유도된다. 일부 실시예에서는, 각 디스플레이 화소마다 단 하나의 알파값만이 계산된다. 다른 실시예에서는, 마이크로소프트사의 ClearType? 기술을 이용하여, 각각의 화소 서브컴포넌트(subcomponent)(예를 들어, 적색, 녹색, 청색 서브컴포넌트)에 대하여 별도의 알파값이 계산된다. 따라서, 본 발명은 다양한 실시예로 확장되므로, 각각의 디스플레이 화소에 대하여 일정한 개수의 알파값만이 유도되는 실시예로 제한되지 않음을 알 수 있을 것이다.
도 1에 도시된 바와 같이, 감마 정정의 결여를 보상하기 위하여 필터링된 알파값을 정정하는 한 방법은, 이하에서 도 2 내지 5를 참조하여 더 상세하게 설명될 다양한 동작(act){동작(110, 120, 140, 150, 160)} 및 단계(step){단계(130)}를 포함한다.
처음에 나타난 동작은 그래픽 블렌딩 프로세스에 사용될 수 있는 필터링된 알파값을 수신하는 것을 포함한다 {동작(110)}. 전형적으로, 현존하는 폰트 글리프 렌더링 프로세스에서, 필터링된 알파값은 블렌딩 중과 감마 정정 전에 사용된다. 그러나, 본 발명에 따르면, 필터링된 알파값은, 블렌딩 후 감마 정정이 불필요한 방식으로 디스플레이 화소의 전경과 배경 색상을 블렌딩하는 데에 사용될 수 있는 조절 또는 정정된 알파값을 유도하는 데에 사용된다. 임의의 소스로부터 획득될 수 있는 필터링된 알파값은, 일반적으로 디스플레이될 폰트 글리프의 형상을 기술한다.
또한, 도시된 방법은 디스플레이 화소 전경 색상을 수신하는 동작{동작(115)}을 포함한다. 이하에서 도 2 내지 5를 참조하여 설명되는 바와 같이, 본 발명은 이와 같은 디스플레이 화소 전경 색상의 수신에 의해, 알려진 전경 색상 및 최적 정정 계수에 기초하여 원하는 알파 정정을 수행할 수 있게 된다.
도 1에 따라, 하나 이상의 감마값 각각에 대하여 정정 계수의 집합이 계산된다 {동작(120)}. 정정 계수의 집합이 반드시 계산에 의해 유도되어야 하는 것은 아니며, 다른 실시예에서는 수동으로 튜닝될 수도 있음에 유의한다. 또한, 도 1의 다른 모든 동작은 이미지가 렌더링되고 있는 중에만 수행될 수 있는 데에 반하여, 동작(120)은 소프트웨어 설계시에 행해질 수 있다.
본 실시예에서, 각각의 감마값은 c1, c2, c3, c4를 포함하는 4개의 정정 계수와 관련된다. 정정 계수는 임의의 선택된 범위의 감마값에 대하여 계산될 수 있다. 폰트 글리프를 렌더링하기 위하여 사용될 디스플레이 디바이스의 감마값은 선택된 감마값의 집합 중 하나로서 포함되는 것이 바람직하다. 일 실시예에서, 선택된 감마값의 집합은 1.0 내지 2.2의 범위(0.1 단위) 내의 감마값을 포함하지만, 이 범위는 변경될 수 있다.
일 실시예에 따르면, 다양한 감마값에 대응하는 정정 계수의 집합을 계산하는 동작은, 도 2의 흐름도(200)에 나타낸 동작들을 소프트웨어 설계시에 수행함으로써 달성된다. 첫번째로 나타나는 동작은 감마를 선택된 범위 내의 감마값 중의 최저값(예를 들어, 상기에 제공된 범위에서는 1.0)으로 설정한다 {동작(210)}. 다음으로, 감마값에 대응하는 최적의 정정 계수의 집합을 결정하기 위하여, 해당 감마값을 사용하여, 제한된 최적화(constrained optimization)가 수행된다 {동작(220)}. 일 실시예에 따르면, 이것은 제한된 최적화 루틴을 도 3의 흐름도(300)에 나타난 동작들과 결합하는 것에 의해 달성된다.
도 3의 흐름도(300)는 블렌딩된 전경 및 배경 색상의 순수한 출력과 정정된 출력 간의 계산된 에러를 최소화하기 위하여 수행될 수 있는 복수의 동작들을 포함한다. 더 상세하게는, 휘도의 순수한 출력과 정정된 출력 간의 차이는 알파, 전경, 배경 및 정정 계수 c1, c2, c3, c4의 다양한 소정의 값을 사용하여 계산된다. 이것은 디스플레이 디바이스의 감마값과 같은 소정의 감마값과 연관된 최적의 정정 계수를 결정하기 위하여 제한된 최적화 루틴을 돕기 위해 행해질 수 있다.
초기에, 에러, 전경, 배경 및 알파값은 0으로 설정된다 {동작(310-316)}. 다음으로, 소정의 제한 조건의 집합을 만족시키는 정정 계수의 제1 집합을 사용하여, 정정된 알파가 계산된다 {동작(320)}. 일 실시예에 따르면, 정정된 알파는 공식 αcorrected = α+ α(1-α)(c1αf + c2α+ c3f + c4)로부터 유도되고, 여기에서 αcorrected는 정정된 알파, α는 알파, f는 감마 정정된 전경 휘도이다. 도 4에서는, 정정된 알파 공식이 도 4의 기본 형식(410)은 물론, 기능 차트(400)로도 나타나 있다.
일 실시예에서, 이러한 제한된 최적화{동작(220)} 동안 이용되는 소정의 제한 조건의 집합은, (c4 ≥-1); (c3 + c4 ≥-1); (c1 + c2 + c3 + c4 ≤1); (c4 ≥-4); (c3 + c4 ≥-4)를 포함한다. 이러한 제한 조건은 도 4의 정정이 단조롭고 [0, 1] 범위 밖의 값을 생성하지 않을 것을 보장하도록 선택되었다. 그러나, 이러한 제한 조건의 집합은 단지 이용될 수 있는 하나의 적합한 제한 조건의 집합을 예시하고 있을 뿐이므로, 본 발명의 범위를 제한하는 것으로 해석되어서는 안 된다. 제한된 최적화 동안, f, α 및 B(배경)의 각각의 가능한 값에 대하여 순수한 출력과 정정된 출력 간의 에러를 계산하기 위하여, 정정 계수의 값은 제한 조건의 범위 내에서 증분적으로 조절될 것이다. 이 때, f, α 및 B는 약 0 내지 약 1 사이에서 약 0.02의 단위로 증분된다.
일반적으로, 계산된 출력은 동작(320)으로부터의 정정된 알파값을 사용하여 계산된다 {동작(330)}. 더 상세하게는, 계산된 출력은 감마 정정된 전경 f = F(1/γ) 및 감마 정정된 배경 b = B(1/γ)의 블렌딩된 값을 포함한다. 여기에서, f는 감마 정정된 전경, F는 소정의 전경값, γ는 감마값, b는 감마 정정된 배경, B는 소정의 배경값이다. 정정된 출력은 동작(330)에 따라 계산된다.
또한, 순수한 출력은 알파(α)를 사용하여, 소정의 전경(F)을 소정의 배경(B)과 블렌딩함으로써 계산될 수 있다. 그 후, 정정된 출력과 순수한 출력 간의 차이의 제곱이 계산되고{동작(342)}, 중요도 가중치(importance weight)로 승산된다{동작(346)}. 마지막으로, 가중되고 제곱된 차이는 에러값에 가산된다 {동작(346)}. 그리고나서, 동작(348, 350, 352, 354, 356, 358)에 의해 결정된 바에 따라, F, B 및 α의 모든 값들이 에러를 계산하는 데에 사용될 때까지, 이 동작들은 반복된다. 그리고나서, F, B 및 α의 각 조합에서 소정의 감마값에 대한 최소 에러가 결정될 때까지, c1, c2, c3, c4의 다양한 조합을 이용하여, 에러가 반복적으로 재계산된다. 그 다음, 에러는 도 3에 나타난 최적화 루틴에 리턴된다 {동작(360)}.
도 3에 도시된 동작은 제한된 최적화에 적합한 비용 함수(cost function)를 계산하기 위한 하나의 적합한 방법을 포함한다. 제한된 최적화 루틴은 최소 에러를 구하기 위하여 이러한 비용 함수를 필요로 한다. 하나의 적합한 제한된 최적화 루틴은, 순차적 2차 프로그래밍(Sequential Quadratic Programming)을 구현하는 매트랩(Matlab)의 fmincon 함수이다. 매트랩의 fmincon 함수 및 순차적 2차 프로그 래밍은 본 기술 분야에 잘 알려져 있다. 그러나, 상기의 예는 단순히 설명을 위한 것이므로, 본 발명의 범위를 제한하는 것으로 해석되어서는 안 된다. 특히, 다른 기술 및 알고리즘도 소정의 감마값의 집합 및 소정의 제한 조건의 집합에 대응하는 최적의 정정 계수를 획득하는 데에 사용될 수 있다. 예를 들어, (선형 공간에 반대되는) 감마 정정된 공간에서 에러가 계산되는 경우, 도 3에서 계산된 비용 함수에서는 정정 계수 c1, c2, c3, c4가 2차이다. 그러므로, 최적화는 분석적으로(선형 시스템을 해석하여) 수행될 수 있으며, 제한된 최적화 루틴을 필요로 하지 않는다.
그 다음, 도 2에 나타난 바와 같이, 제한된 최적화로부터 얻어진 최적 정정 계수 c1, c2, c3, c4는 최적 계수 c1, c2, c3, c4를 획득하는 데에 사용되었던 감마값과 연관된다 {동작(230)}. 최적 정정 계수와 대응 감마값 간의 연관은 예를 들어 테이블 또는 다른 데이터 구조로 이루어질 수 있다. 또한, 최소 에러를 얻는 데에 사용되었던 F, B 및 α의 값도 이후의 참조를 위하여 최적 계수와 연관될 수 있다. 동작(240 및 250)에 의해 나타난 바와 같이, 최적화 루틴(200)은 감마값의 소정 범위 내의 각 감마값에 대하여 최적 정정 계수가 결정될 때까지 반복적으로 수행된다.
최적 계수 및 감마값과 연관된 데이터 구조는 예를 들어 소프트웨어 패키지의 한 부분으로서와 같이 하나 이상의 컴퓨터 판독가능 매체에 저장될 수 있다. 이미지가 레스터화(rasterizing)될 필요가 있는 경우, 정정 계수는 폰트 글리프 렌더링 프로세스 동안의 액세스를 위해 GPU에 제출된다. 일 실시예에서, 관련 데이 터 구조는 GPU에 직접 저장된다. 다른 실시예에서, 관련 데이터 구조는 GPU 내에 저장되기 전에, 특정 하드웨어 조건을 수용하기 위하여 전경 색상값 및/또는 소정의 상수와 미리 결합된다.
이미지 렌더링 동안, GPU에 의해 수신된 필터링된 알파값에 대한 알파 정정을 수행하기 위하여, 관련 데이터 구조가 액세스된다 {단계(130)}. 단계(130)는 알파 정정을 수행하기 위하여 임의의 개수의 대응 동작을 포함할 수 있음을 알 것이다. 일 실시예에서, 알파 정정을 수행하는 단계{단계(130)}는 디스플레이의 소정의 감마값에 대응하는 정정 계수의 집합을 선택하는 대응 동작{동작(140)}을 포함한다. 이것은, 예를 들어 전술한 관련 데이터 구조를 액세스하고, 디스플레이의 감마값과 연관되어 있는 정정 계수를 선택함으로써 달성될 수 있다. 한 바람직한 실시예에 따르면, 정정 계수를 선택 또는 수신하는 동작{동작(140)}은 디스플레이 렌더링시에 수행되는 반면에, 선택된 정정 계수의 집합을 계산하는 동작{동작(120)}은 설계시에 수행된다.
다음으로, 정정 계수 및 전경 색상을 사용하여, 디스플레이 화소의 전경 및 배경을 블렌딩하는 데에 사용될 정정된 알파값을 계산된다{동작(150)}. 일 실시예에서, 이것은 상기에서 도 4를 참조하여 도시되고 설명된 공식(410)을 사용하여 달성된다. 특히, αcorrected = α+ α(1-α)(c1αf + c2α+ c3f + c4)이며, 여기에서 c1, c2, c3, c4는 정정 계수를 포함하고, f는 디스플레이 화소의 알려진 전경 색상, α는 디스플레이 화소의 알려진 알파값이다. 전술한 바와 같이, 정정된 α값은 디스플레이 화소마다 임의의 횟수만큼 계산될 수 있다. 예를 들어, 정정된 α는 디스플레이 회소와 각 화소 서브컴포넌트에 대하여 계산될 수 있지만, 이에 한정되는 것은 아니다. 특히, 적색, 녹색 및 청색 화소 서브컴포넌트를 포함하는 디스플레이 화소는 3개의 정정된 α값을 계산하는 데에 사용되는 3개의 필터링된 α값을 포함할 수 있다. 이것은 마이크로소프트사의 ClearType® 렌더링 기술을 사용하여 폰트 글리프를 렌더링하는 데에 특히 유용함을 알 수 있을 것이다.
정정된 α값이 계산된 후{동작(150)}, 그 정정된 α값은 대응하는 디스플레이 화소의 전경과 배경 색상을 블렌딩하기 위한 그래픽 블렌딩 프로세스{동작(160)}를 수행하는 데에 사용될 수 있다.
일 실시예에 따르면, 알파 정정을 수행하는 단계 및 블렌딩 동작{동작(160)}을 수행하는 단계{단계(130)}는 GPU 내에서 수행되며, 이것은 폰트 글리프 렌더링이 행해질 수 있는 속도가 증가되는 것을 돕는다.
도 5는 전술한 렌더링 프로세스의 한 구현예를 나타내고 있다. 그러나, 상기의 구현은 단지 설명을 위한 것이므로, 본 발명의 범위를 제한하는 것으로 해석되어서는 안 된다는 것을 알 것이다. 상기의 예는 컴퓨터 프로그래밍 실무 분야의 기술자들에 의해 재현될 수 있다. 도 5에 도시된 실시예는, 본 발명의 렌더링 프로세스가 현존하는 하드웨어의 기반에 적합하며, 복수의 색상 채널이 병렬로 계산될 수 있음을 나타내고 있다.
본 실시예는, 다양한 하드웨어 타입에 대하여 통합된 API(application program interface)를 제공하는 마이크로소프트사의 DirectX®에 기초하는 프로그램 모듈을 이용하여 구현될 수 있다. 일 실시예에 따르면, 화소 쉐이더(pixel shader) 버젼 1.1 및 블렌딩 팩터 매커니즘(blending factor mechanism)(이하에서 마이크로소프트 DirectX® 용어가 사용됨)을 지원하는 것으로 가정하는 한, 본 구현은 완전히 디바이스 독립적(device independent)이지는 않다.
도 5에서, 다이어그램(500)은 하드웨어와 소프트웨어 블럭 간의 데이터 흐름을 나타낸다. 입력 데이터는 "감마 레벨"(512), "전경 색상"(514) 및 "알파 텍스쳐(texture)"(520) 블럭으로서 디스플레이된다. 감마 레벨은 디스플레이 디바이스의 물리적인 디스플레이 특징을 반영하는 수치이다. 감마 레벨은 미리 계산된 테이블 또는 다른 관련 데이터 구조로부터 적합한 정정 계수 c1, c2, c3, c4를 선택하는 데에 사용된다. 정정 계수의 선택은 "다항 비율 계산기(polynomial ratios calculator)"(510)에서 이루어진다. 또한, 다항 비율 계산기는 전경 색상을 구하고, 대응 비율을 계산하여 화소 쉐이더(540)의 상수 레지스터(constant register)에 저장한다.
디스플레이를 위한 형상{텍스트 조각(text fragment)}은 "알파 텍스쳐" 블럭(520)으로서 나타난 알파값의 2차원 어레이로서 준비된다. 알파값은 "샘플러 1"(530), "샘플러 2"(532) 및 "샘플러 3"(534)로서 주어진 3개의 샘플러를 사용하여, 화소당 3회씩 알파 텍스쳐로부터 페치된다. 샘플러들은 적색, 녹색 및 청색 서브컴포넌트를 위한 알파값을 화소 쉐이더(540)에 제공한다.
화소 쉐이더(540)는 비선형 계산을 실행하고, 적색, 녹색 및 청색 서브컴포넌트에 대한 정정된 알파값의 벡터를 생성한다. 이 벡터값들은 출력 레스터화기(output rasterizer)(550)에 제공된다. 출력 레스터화기(550)는 화소 쉐이더(540)로부터 획득된 알파값을 사용하여, 렌더 타겟 표면(560)으로부터 페치된 배경 색상과, 블렌딩 팩터로서 공급된 전경 색상 간의 선형 블렌딩을 제공한다. 결과적인 색상값은 렌더 타겟 표면(560)에 저장된다.
화소 쉐이더(540)는 부동 소수점값의 4차원 벡터로 동작한다. 벡터 컴포넌트는 각각 알파, 적색, 녹색 및 청색 컴포넌트에 대응하는 첨자 .a, .r, .g 및 .b를 사용하여 참조된다. 이 벡터를 보유할 수 있는 엔티티는 "레지스터"(도시되지 않음)로 칭해진다. 화소 쉐이더(540)는, 상술한 알파 정정을 수행하기 위하여 입력 레지스터(tn, 즉 t0, t1, t2 등), 상수 레지스터(cn) 및 임시 레지스터(rn)를 이용하여 동작한다. 이하에 제공되는 예에서는, 임시 레지스터 r0가 출력 레지스터로서 기능한다.
본 실시예에 따르면, 화소 쉐이더(540)는, 본 발명의 특정 동작을 수행하기 위하여, 특수화된 어셈블리 언어 또는 다른 적합한 프로그래밍 언어로 기록된 컴퓨터 실행가능 명령으로 제어될 수 있는 조절가능한 하드웨어 블럭이다. 이하의 예는 컴포넌트에 대한 선형-3차 알파 정정(per-component linear-cubic alpha correction)을 구현할 수 있는 컴퓨터 실행가능 명령을 포함하는 화소 쉐이더 프로그램의 일 실시예이다. 본 실시예에 따르면, 이 프로그램은 각 화소에 대하여 실행된다. 이하의 프로그램은, 전술한 바와 같이, 바람직하게 미리 준비된 상수 레지스터 c0 …c5 내에 다항 비율을 수용한다. 다항 비율은 감마 레벨 또는 전경 색 상이 변화하는 때에 계산된다. 이하에서, 각각의 상수 레지스터의 의미가 화소 쉐이더 프로그램에 대한 해설에서 설명된다.
ps.1.1 // declare pixel shader version
// fetch alpha values from samplers to input registers t0, t1 and t2
tex t0 // fetch red alpha
tex t1 // fetch green alpha
tex t2 // fetch blue alpha
// combine the alpha values into single vector,
// along the way multiplying these values by
// alpha value of foreground color. This requires
// constant registers c0 .. c2 to be prepared following way:
// c0.rgba = f.a, 0, 0, 0
// c1.rgba = 0, f.a, 0, 0
// c2.rgba = 0, 0, f.a, 0
// where f.a is foreground alpha.
mad r0, t0.a, c0, c0.a // set red (c0.a replicates 0)
mad r0, t1.a, c1, r0 // set green
mad r0, t2.a, c2, r0 // set blue
// Now r0 contains the alpha vector, deferred below as "x".
// Calculate the formula r0 = x + x*(1-x)*(A*x + B),
// where vectors A and B are prepared in constant
// registers c3 and c4 respectively. Due to typical hardware
// limitation (any value in cn should be in {-1, 1} diapason)
// the registers really contain decreased values : c3 = A/4 and c4 = B/4.
mad r1, c3, r0, c4 // r1 = (A/4)*x + (B/4)
mul_x4 r1, r1, 1-r0 // r1 = (1-x)*(A*x + B)
mad r0, r0, r1, r0 // r0 = x + x*(1-x)*(A*x + B)
// end of pixel shader program.
이하의 예는 다항 비율 계산기(520)에서 프로세스를 구현하기 위한 C++ 언어 컴퓨터 실행가능 명령을 포함한다.
#include <d3d9.h>
// The definition of the structure used to keep cubic-linear
// gamma correction table.
struct GammaTableRow { float c1, float c2, float c3, float c4 };
// Separate instance of GammaTableRow needed for each particular gamma level;
// it defines following non-linear transformation:
// alpha_corrected =
// alpha + alpha*(1-alpha)*(c1*alpha*f + c2*alpha + c3*f + c4),
// where f is foreground color component.
// The definition of the 4-dimensional vector structure:
struct Vector4d { float r, float g, float b, float a; };
HRESULT PolynomialRatiosCalculator(
const GammaTable* pTable,
int gammaLevel,
const Vector4f& f, //fore color
IDirect3DDevice9* pD3DDevice
)
{
// fetch the coefficients row for given gamma level:
const GammaTableRow& coefs = pTable [gammalevel];
// declare the array of constant registers values:
Vector4d c[5];
// Calculate the values of constant registers c0 .. c2:
c[0].r = f.a; c[0].g = 0; c[0].b = 0; c[0].a = 0;
c[1].r= 0; c[1].g = 0; c[1].b = 0; c[1].a = 0;
c[2].r= 0; c[2].g = f.a; c[2].b = f.a; c[2].a = 0;
// Calculate values A and B (see comments to pixel shader program)
// in constant registers c3 and c4:
c[3].r = (coefs.c1*f.r + coefs.c2)/4;
c[3].g = (coefs.c1*f.g + coefs.c2)/4;
c[3].b = (coefs.c1*f.b + coefs.c2)/4;
c[3].a = 0;
c[4].r = (coefs.c3*f.r + coefs.c4)/4;
c[4].g = (coefs.c3*f.g + coefs.c4)/4;
c[4].b = (coefs.c3*f.b + coefs.c4)/4;
c[4].a = 0;
// now submit prepared data to pixel shader constant registers:
HRESULT hr = pD3DDevice ->SetPixelShaderConstantF(0,c,5);
return hr;
상기의 예는 렌더링동안 수행될 수 있는 다른 동작의 설명을 포함하지 않음을 알아야 한다. 특히, 상기의 설명은 텍스쳐 준비(texture preparation), 출력 레스터화기 조절, 버텍스 버퍼(vertex buffer)에 대한 조작, 및 렌더링 동안 수행될 수 있는 다른 동작을 설명하고 있지 않다. 이 동작들은 상기에 언급된 마이크로소프트 DirectX?의 사용에 있어서의 표준 동작이기 때문에 설명되지 않는 것이다. 따라서, 본 발명의 방법, 시스템 및 컴퓨터 프로그램 제품은 예를 들어 텍스쳐 준비, 출력 레스터화기 조절 및 버텍스 버퍼 조작을 포함하지만 이들로 제한되지는 않는 다른 렌더링 동작을 포함할 수 있음을 알아야 한다.
요약하면, 본 발명은 감마 정정의 결여를 보상하기 위하여 GPU에서 알파 정정을 제공한다. 이것은 폰트 글리프 및 다른 이미지를 렌더링하는 전체 속도를 상 당히 증가시킬 수 있음을 알 수 있을 것이다. 상기 예들 중 다수는 폰트 글리프를 렌더링하는 것을 특별히 언급하여 설명되었지만, 본 발명은 폰트 글리프 이외의 다른 이미지를 렌더링하는 데에도 확장될 수 있음을 알아야 한다. 따라서, 본 발명은 감마 정정의 결여를 보상하기 위하여 알파 정정을 수행하는 방식으로, 감마 정정없이 임의의 이미지를 렌더링하는 데에 광범위하게 확장된다.
운영 환경
도 6 및 이하의 논의는 본 발명의 소정 엘리먼트를 구현하는 데에 적합한 컴퓨터 환경에 대한 간략하고 개괄적인 설명을 제공하기 위한 것이다. 그러나, 본 발명은 임의의 특정한 컴퓨터화 환경으로 제한되는 것은 아니며, 광범위한 컴퓨터화 시스템에서 실현될 수 있음이 강조된다.
일 실시예에 따르면, 본 발명은 프로그램 모듈과 같이 컴퓨팅 디바이스에 의해 실행될 수 있는 컴퓨터 실행가능 명령을 저장하는 하나 이상의 컴퓨터 판독가능 매체를 포함한다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 요약 데이터 타입을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 데이터 구조와 관련된 컴퓨터 실행가능 명령 및 프로그램 모듈은 본 명세서에 개시된 방법의 단계들을 실행하기 위한 프로그램 코드 수단의 예를 나타낸다. 이러한 실행가능 명령 또는 관련 데이터 구조의 특정 시퀀스는 이러한 단계들에 기술된 기능을 구현하기 위한 대응 동작의 예들을 나타낸다.
본 기술 분야의 숙련된 기술자라면, 본 발명이 개별적인 컴퓨팅 디바이스는 물론, 퍼스널 컴퓨터, 핸드핼드형 디바이스, 마이크로프로세서 시스템, 마이크로프 로세서 기반 또는 프로그램가능 소비자 전자기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 그 컴포넌트 등을 포함하는 다양한 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실행될 수 있음을 알 수 있을 것이다. 본 발명은, 통신 네트워크를 통하여 (유선 링크, 무선 링크 또는 유선과 무선 링크의 조합에 의해) 링크된 로컬 또는 원격 프로세싱 디바이스에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서도 실현될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 디바이스 양자 모두에 배치될 수 있다.
특히 도 6을 참조하면, 본 발명의 소정 엘리먼트를 구현하기 위한 예시적인 시스템은, 프로세싱 유닛(621), 컴퓨터 판독가능 매체를 포함하는 시스템 메모리(622), 및 시스템 메모리(622)를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(621)에 연결하는 시스템 버스(623)를 포함하는 기존의 컴퓨터(620) 형태의 범용 컴퓨팅 시스템을 포함한다. 시스템 버스(623)는 다양한 버스 아키텍쳐 중 임의의 것을 사용하는 메모리 버스 또는 메모리 컨트롤러, 주변 버스 또는 로컬 버스를 포함하는 버스 구조의 수개의 유형 중 임의의 것일 수 있다. 시스템 메모리는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM)(625)를 포함한다. 기동 시 등에 컴퓨터(620) 내의 엘리먼트들 간의 정보 전달을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(BIOS)(626)은 ROM(624) 내에 저장될 수 있다.
또한, 컴퓨터(620)는 자기 하드 디스크(629)에 대한 판독 또는 기입을 위한 자기 하드 디스크 드라이브(627), 탈착식 자기 디스크에 대한 판독 또는 기입을 위한 자기 디스크 드라이브(628), CD-ROM 또는 다른 광학 매체와 같은 탈착식 광 디 스크(631)에 대한 판독 또는 기입을 위한 광 디스크 드라이브(630)를 포함할 수 있다. 자기 하드 디스크 드라이브(627), 자기 디스크 드라이브(628) 및 광 디스크 드라이브(630)는 각각 하드 디스크 드라이브 인터페이스(632), 자기 디스크 드라이브 인터페이스(633) 및 광 드라이브 인터페이스(634)에 의해 시스템 버스(623)에 접속된다. 드라이브 및 관련 컴퓨터 판독가능 매체는 컴퓨터 실행가능 명령, 데이터 구조, 프로그램 모듈 또는 컴퓨터(620)를 위한 다른 데이터의 불휘발성 저장을 제공한다. 또한, 이러한 저장 매체들은, 전술한 바와 같이 정정 계수를 감마값과 연관시키는 데이터 구조를 저장하는 데에도 사용될 수 있다. 본 명세서에 개시된 예시적인 환경은 자기 하드 디스크(639), 탈착식 자기 디스크(629) 및 탈착식 광 디스크(631)를 채용하지만, 자기 카세트, 플래시 메모리카드, 디지탈 다기능 디스크(DVD), 베르누이 카트리지(Bernoulli catridge), RAM, ROM 등을 포함하는 다른 유형의 데이터 저장용 컴퓨터 판독가능 매체도 사용될 수 있다.
하나 이상의 프로그램 모듈을 포함하는 프로그램 코드 수단은, 운영 시스템(635), 하나 이상의 애플리케이션 프로그램(636), 다른 프로그램 모듈(637) 및 프로그램 데이터(638)를 포함하여, 하드 디스크(639), 자기 디스크(629), 광 디스크(631), ROM(624) 또는 RAM(625) 상에 저장될 수 있다. 사용자는 키보드(640), 포인팅 디바이스(642) 또는 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등과 같은 다른 입력 디바이스(도시되지 않음)를 통해, 커맨드 및 정보를 컴퓨터(620)에 입력할 수 있다. 여기에 개시된 것과 그 이외의 입력 디바이스들은 종종 시스템 버스(623)에 연결된 직렬 포트 인터페이스(646)를 통하여 프로세싱 유 닛(621)에 접속된다. 다르게는, 입력 디바이스는, 병렬 포트, 게임 포트 또는 USB(universal serial bus)와 같은 다른 인터페이스에 의해 접속될 수 있다. 모니터(647) 또는 다른 디스플레이 디바이스도 비디오 어댑터(648)와 같은 인터페이스를 통해 시스템 버스(623)에 접속된다. 이와 관련하여, 비디오 어댑터(648)는 전술한 바와 같은 GPU를 포함하는 것으로 간주된다. 퍼스널 컴퓨터는, 전형적으로 모니터에 이외에 스피커 및 프린터와 같은 다른 주변 출력 디바이스(도시되지 않음)를 포함한다.
컴퓨터(620)는 원격 컴퓨터(649a 및 649b)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속을 사용하여 네트워크된 환경에서 동작할 수 있다. 원격 컴퓨터(649a 및 649b)는 각각 다른 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스(peer device) 또는 다른 공통 네트워크 노드일 수 있으며, 도 6에는 메모리 저장 디바이스(650a 및 650b)와 그 관련 애플리케이션 프로그램(636a 및 636b)만이 도시되어 있지만, 전형적으로 컴퓨터(620)와 관련하여 상기에서 언급된 엘리먼트들 중의 다수 또는 전부를 포함할 수 있다. 도 6에 도시된 논리적 접속은 근거리 네트워크(LAN)(651) 및 광역 네트워크(WAN)(652)를 포함하지만, 이들은 일례로 제시된 것일 뿐, 제한을 위한 것은 아니다. 이러한 네트워크 환경은 오피스내 또는 기업내 컴퓨터 네트워크, 인트라넷 또는 인터넷에서 흔한 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(620)는 네트워크 인터페이스 또는 어댑터(653)를 통해 로컬 네트워크(651)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(620)는 모뎀(654), 무선 링크, 또는 인터넷과 같은 광역 네 트워크(652) 상에서의 통신을 설정하기 위한 다른 수단을 포함할 수 있다. 외장형 또는 내장형의 모뎀(654)은 직렬 포트 인터페이스(646)를 통해 시스템 버스(623)에 접속된다. 네트워크된 환경에서, 컴퓨터(620) 또는 그 일부와 관련하여 도시된 프로그램 모듈은 원격 메모리 저장 장치 내에 저장될 수 있다. 도시된 네트워크 접속은 예시적인 것이며, 광역 네트워크(652) 상에서의 통신을 설정하기 위한 다른 수단도 사용될 수 있음을 알아야 한다.
본 발명은 그 취지 또는 근본적인 특징을 벗어나지 않고서 다른 특별한 형태로 실현될 수 있음을 알 수 있을 것이다. 상기의 실시예들은 모든 면에서 예시적인 것일 뿐 제한적이지 않은 것으로 해석되어야 한다. 그러므로, 본 발명의 범위는 상기의 상세한 설명이 아니라 첨부된 특허청구범위에 의해 지시된다. 청구범위의 의미 및 범위 내에 드는 모든 변경도 그 범위 내에 포함되어야 한다.
본 발명에 따르면, 전경 색상의 지식을 이용하면서, 배경 색상에는 액세스하지 않고, 또한 감마 정정도 필요로 하지 않는 텍스트 렌더링을 가속화할 수 있다.

Claims (26)

  1. 이미지를 디스플레이하도록 구성된 복수의 화소를 갖는 디스플레이 디바이스에 접속되며, 상기 이미지를 디스플레이하는 화소의 전경(foreground) 및 배경(background) 색상을 제어하기 위하여 알파값(alpha value)을 사용하여 블렌딩 프로세스(blending process)를 수행하도록 구성된 그래픽 프로세싱 유닛을 포함하는 컴퓨팅 시스템에서, 감마 정정(gamma correction)없이 상기 디스플레이 디바이스에서의 상기 이미지의 디스플레이가 가능하도록, 상기 그래픽 프로세싱 유닛에 의해 수신된 알파값을 정정하는 방법에 있어서,
    하나 이상의 소정의 감마값에 대한 정정 계수의 집합을 수신하는 단계 - 상기 소정의 감마값 중 적어도 하나는 상기 디스플레이 디바이스의 감마값을 포함함 -;
    상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 화소의 전경 및 배경 색상을 결정하기 위하여, 상기 그래픽 프로세싱 유닛에 의해 그래픽 블렌딩 프로세스를 수행하는 데에 사용될 수 있는 필터링된 알파값을 수신하는 단계;
    상기 화소의 하나 이상의 전경 색상을 수신하는 단계;
    정정된 알파값을 구하기 위하여, 상기 필터링된 알파값에 대하여 알파 정정을 수행하는 단계 - 상기 알파 정정은 상기 정정 계수 및 상기 전경 색상을 이용함 -; 및
    상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 데에 사용되는 화소값을 결정하기 위하여, 상기 정정된 알파값을 사용하여, 상기 화소의 상기 전경 및 배경 색상에 작용하는 그래픽 블렌딩 프로세스를 수행하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 알파 정정을 수행하는 단계는,
    상기 디스플레이 디바이스의 감마값에 대응하는 정정 계수의 집합을 선택하는 단계; 및
    상기 필터링된 알파값, 상기 전경 색상 및 상기 선택된 정정 계수의 집합을 사용하여, 상기 정정된 알파값을 계산하는 단계
    를 포함하는 방법.
  3. 제1항에 있어서,
    감마 정정없이, 상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서,
    상기 필터링된 알파값은, 상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 데에 사용되는 각 화소에 대해 3개의 필터링된 알파값의 집합을 포함하는 방법.
  5. 제4항에 있어서,
    상기 정정된 알파값은 상기 필터링된 알파값 각각에 대응하는 3개의 정정된 알파값의 집합을 포함하고, 상기 정정된 알파값은 상기 필터링된 알파값으로부터 유도되는 방법.
  6. 제1항에 있어서,
    상기 하나 이상의 감마값 각각에 대한 최적화(optimization)를 수행함으로써, 상기 하나 이상의 감마값 각각에 대한 정정 계수의 집합을 계산하는 단계를 더 포함하며, 상기 최적화는 상기 알파 정정의 에러를 최소화하는 방법.
  7. 제6항에 있어서,
    상기 하나 이상의 감마값은 1.0 내지 2.2 범위 내에서 0.1 단위로 증가하는 감마값을 포함하는 방법.
  8. 제6항에 있어서,
    상기 최적화는 제한 조건(constraint)의 집합에 의해 제한되고, 상기 제한 조건의 집합은 상기 정정된 알파값이 0 내지 1의 범위 내에 있을 것을 보장하도록 선택되는 방법.
  9. 제1항에 있어서,
    상기 하나 이상의 감마값 각각에 대한 정정 계수의 집합은, 제1 정정 계수, 제2 정정 계수, 제3 정정 계수 및 제4 정정 계수를 포함하고,
    상기 알파 정정을 수행하는 단계는 알파 정정된 값을 계산하는 것을 포함하고,
    각각의 알파 정정된 값은 (알파 정정된 값) = (α+ (1 - α)(c1αf + c2α+ c3f + c4))의 형태를 취하며, 여기에서 α는 해당하는 필터링된 알파값, f는 상기 알파값에 대응하는 화소의 전경, c1은 제1 정정 계수, c2는 제2 정정 계수, c3 는 제3 정정 계수, c4는 제4 정정 계수인 방법.
  10. 이미지를 디스플레이하도록 구성된 복수의 화소를 갖는 디스플레이 디바이스에 접속되며, 상기 이미지를 디스플레이하는 화소의 전경 및 배경 색상을 제어하기 위하여 알파값을 사용하여 블렌딩 프로세스를 수행하도록 구성된 그래픽 프로세싱 유닛을 포함하는 컴퓨팅 시스템에서, 감마 정정없이 상기 디스플레이 디바이스에서의 상기 이미지의 디스플레이가 가능하도록, 상기 그래픽 프로세싱 유닛에 의해 수신된 알파값을 정정하는 방법에 있어서,
    하나 이상의 소정의 감마값에 대한 정정 계수의 집합을 수신하는 단계 - 상기 소정의 감마값 중 적어도 하나는 상기 디스플레이 디바이스의 감마값을 포함함 -;
    상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 화소의 전경 및 배경 색상을 결정하기 위하여, 상기 그래픽 프로세싱 유닛에 의해 그래픽 블렌딩 프로세스를 수행하는 데에 사용될 수 있는 하나 이상의 필터링된 알파값을 수신하는 단계;
    상기 화소의 하나 이상의 전경 색상을 수신하는 단계;
    상기 디스플레이 디바이스의 감마값에 대응하는 정정 계수의 집합을 선택하는 단계;
    상기 필터링된 알파값, 상기 전경 색상 및 상기 선택된 정정 계수의 집합을 사용하여, 상기 정정된 알파값을 계산하는 단계; 및
    상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 데에 사용되는 화소값을 결정하기 위하여, 상기 정정된 알파값을 사용하여, 상기 화소의 상기 전경 및 배경 색상에 작용하는 그래픽 블렌딩 프로세스를 수행하는 단계
    를 포함하는 방법.
  11. 제10항에 있어서,
    감마 정정없이, 상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 단계를 더 포함하는 방법.
  12. 제10항에 있어서,
    상기 필터링된 알파값은, 상기 디스플레이 디바이스에서 상기 이미지를 디스 플레이하는 데에 사용되는 각 화소에 대한 3개의 필터링된 알파값의 집합을 포함하는 방법.
  13. 제12항에 있어서,
    상기 정정된 알파값은 상기 이미지를 디스플레이하는 각각의 화소에 대응하는 3개의 정정된 알파값의 집합을 포함하고, 상기 정정된 알파값은 상기 필터링된 알파값으로부터 유도되는 방법.
  14. 제10항에 있어서,
    하나 이상의 감마값 각각에 대한 최적화를 수행함으로써 상기 하나 이상의 감마값 각각에 대한 정정 계수의 집합을 계산하는 단계를 더 포함하는 방법.
  15. 제14항에 있어서,
    상기 하나 이상의 감마값은 1.0 내지 2.2 범위 내에서 0.1 단위로 증가하는 감마값을 포함하는 방법.
  16. 제14항에 있어서,
    상기 최적화는 제한 조건의 집합에 의해 제한되고, 상기 제한 조건의 집합은 상기 정정된 알파값이 0 내지 1의 범위 내에 있을 것을 보장하도록 선택되는 방법.
  17. 제10항에 있어서,
    상기 하나 이상의 감마값 각각에 대한 상기 정정 계수의 집합은, 제1 정정 계수, 제2 정정 계수, 제3 정정 계수 및 제4 정정 계수를 포함하고,
    상기 정정된 알파값을 계산하는 단계는 알파 정정된 값을 계산하는 것을 포함하고,
    각각의 알파 정정된 값은 (알파 정정된 값) = (α+ (1 - α)(c1αf + c2α+ c3f + c4))의 형태를 취하며, 여기에서 α는 해당하는 필터링된 알파값, f는 상기 알파값에 대응하는 화소의 전경, c1은 제1 정정 계수, c2는 제2 정정 계수, c3는 제3 정정 계수, c4는 제4 정정 계수인 방법.
  18. 이미지를 디스플레이하도록 구성된 복수의 화소를 갖는 디스플레이 디바이스에 접속되며, 상기 이미지를 디스플레이하는 화소의 전경 및 배경 색상을 제어하기 위하여 알파값을 사용하여 블렌딩 프로세스를 수행하도록 구성된 그래픽 프로세싱 유닛을 포함하는 컴퓨팅 시스템에서 사용되기 위한 것으로, 감마 정정없이 상기 디스플레이 디바이스에서의 상기 이미지의 디스플레이가 가능하도록, 상기 그래픽 프로세싱 유닛에 의해 수신된 알파값을 정정하는 방법을 구현하기 위한 컴퓨터 실행가능 명령을 갖는 컴퓨터 판독가능 매체에 있어서,
    상기 방법은,
    하나 이상의 소정의 감마값에 대한 정정 계수의 집합을 수신하는 단계 - 상기 소정의 감마값 중 적어도 하나는 상기 디스플레이 디바이스의 감마값을 포함함 -;
    상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 화소의 전경 및 배경 색상을 결정하기 위하여, 상기 그래픽 프로세싱 유닛에 의해 그래픽 블렌딩 프로세스를 수행하는 데에 사용될 수 있는 하나 이상의 필터링된 알파값을 수신하는 단계;
    하나 이상의 전경 색상을 수신하는 단계;
    상기 디스플레이 디바이스의 감마값에 대응하는 정정 계수의 집합을 선택하는 단계;
    상기 필터링된 알파값 및 상기 선택된 정정 계수의 집합을 사용하여, 상기 정정된 알파값을 계산하는 단계 - 상기 정정된 알파값을 계산하는 단계는 상기 정정 계수 및 상기 전경 색상을 이용함-; 및
    상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 데에 사용되는 화소값을 결정하기 위하여, 상기 정정된 알파값을 사용하여, 상기 화소의 상기 전경 및 배경 색상에 작용하는 그래픽 블렌딩 프로세스를 수행하는 단계
    를 포함하는 컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 컴퓨터 판독가능 매체는 물리적 저장 매체를 포함하는 컴퓨터 판독가능 매체.
  20. 제18항에 있어서,
    상기 방법은 감마 정정없이 상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 단계를 더 포함하는 컴퓨터 판독가능 매체.
  21. 제18항에 있어서,
    상기 필터링된 알파값은, 상기 디스플레이 디바이스에서 상기 이미지를 디스플레이하는 데에 사용되는 각 화소에 대해 3개의 필터링된 알파값의 집합을 포함하는 컴퓨터 판독가능 매체.
  22. 제21항에 있어서,
    상기 정정된 알파값은 상기 이미지를 디스플레이하는 각각의 화소에 대응하는 3개의 정정된 알파값의 집합을 포함하고, 상기 정정된 알파값은 상기 필터링된 알파값으로부터 유도되는 컴퓨터 판독가능 매체.
  23. 제18항에 있어서,
    상기 방법은, 상기 하나 이상의 감마값 각각에 대한 최적화를 수행함으로써, 상기 하나 이상의 감마값 각각에 대한 정정 계수의 집합을 계산하는 단계를 더 포함하며, 상기 최적화는 상기 알파 정정의 에러를 최소화하는 컴퓨터 판독가능 매체.
  24. 제23항에 있어서,
    상기 하나 이상의 감마값은 1.0 내지 2.2 범위 내에서 0.1 단위로 증가하는 감마값을 포함하는 컴퓨터 판독가능 매체.
  25. 제23항에 있어서,
    상기 최적화는 제한 조건의 집합에 의해 제한되고, 상기 제한 조건의 집합은 상기 정정된 알파값이 0 내지 1의 범위 내에 있을 것을 보장하도록 선택되는 컴퓨터 판독가능 매체.
  26. 제18항에 있어서,
    상기 하나 이상의 감마값 각각에 대한 정정 계수의 집합은, 제1 정정 계수, 제2 정정 계수, 제3 정정 계수 및 제4 정정 계수를 포함하고,
    상기 정정된 알파값을 계산하는 단계는 알파 정정된 값을 계산하는 단계를 포함하고,
    각각의 알파 정정된 값은 (알파 정정된 값) = (α+ (1 - α)(c1αf + c2α+ c3f + c4))의 형태를 취하며, 여기에서 α는 해당하는 필터링된 알파값, f는 상기 알파값에 대응하는 화소의 전경, c1은 제1 정정 계수, c2는 제2 정정 계수, c3는 제3 정정 계수, c4는 제4 정정 계수인 컴퓨터 판독가능 매체.
KR1020030086793A 2002-12-03 2003-12-02 감마 정정의 결여를 보상하기 위한 알파 정정 KR100887462B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/308,510 2002-12-03
US10/308,510 US6933947B2 (en) 2002-12-03 2002-12-03 Alpha correction to compensate for lack of gamma correction

Publications (2)

Publication Number Publication Date
KR20040048839A KR20040048839A (ko) 2004-06-10
KR100887462B1 true KR100887462B1 (ko) 2009-03-10

Family

ID=32325857

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030086793A KR100887462B1 (ko) 2002-12-03 2003-12-02 감마 정정의 결여를 보상하기 위한 알파 정정

Country Status (6)

Country Link
US (3) US6933947B2 (ko)
EP (1) EP1429293B1 (ko)
JP (1) JP3955562B2 (ko)
KR (1) KR100887462B1 (ko)
CN (1) CN100336011C (ko)
BR (1) BR0306750A (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102328054B1 (ko) * 2020-05-13 2021-11-17 주식회사 한글과컴퓨터 전자 문서에 삽입되어 있는 개체의 원본 데이터 유지를 위한 개체 보호 기능을 제공하는 전자 장치 및 그 동작 방법
KR102328047B1 (ko) * 2020-05-13 2021-11-17 주식회사 한글과컴퓨터 워터마크용 이미지를 통해 문서 상에 문서 보안 등급에 대한 정보를 삽입할 수 있는 전자 장치 및 그 동작 방법

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US6933947B2 (en) 2002-12-03 2005-08-23 Microsoft Corporation Alpha correction to compensate for lack of gamma correction
US7289126B1 (en) * 2003-05-23 2007-10-30 Nvidia Corporation Gamma-corrected texel storage in a graphics memory
US8035646B2 (en) * 2003-11-14 2011-10-11 Microsoft Corporation Systems and methods for downloading algorithmic elements to a coprocessor and corresponding techniques
JP2005151282A (ja) * 2003-11-18 2005-06-09 Fuji Xerox Co Ltd 画像処理装置、画像処理方法、およびプログラム
US7312801B2 (en) * 2005-02-25 2007-12-25 Microsoft Corporation Hardware accelerated blend modes
US20070070067A1 (en) * 2005-04-29 2007-03-29 Modviz, Inc. Scene splitting for perspective presentations
US7522173B1 (en) 2006-02-23 2009-04-21 Nvidia Corporation Conversion of data in an sRGB format to a compact floating point format
CN101631189B (zh) * 2008-07-15 2012-08-29 鸿富锦精密工业(深圳)有限公司 图像合成系统及方法
US8139075B2 (en) * 2008-12-10 2012-03-20 Microsoft Corp. Color packing glyph textures with a processor
US8325177B2 (en) * 2008-12-29 2012-12-04 Microsoft Corporation Leveraging graphics processors to optimize rendering 2-D objects
CN102122323A (zh) * 2011-02-21 2011-07-13 四川大学 基于GPU的Gamma分析方法的快速实现
US9171386B2 (en) 2011-10-11 2015-10-27 Microsoft Technology Licensing, Llc Caching coverage values for rendering text using anti-aliasing techniques
KR20140122539A (ko) * 2013-04-10 2014-10-20 삼성디스플레이 주식회사 표시 장치 및 그 구동 방법
US9779528B2 (en) * 2014-09-12 2017-10-03 Microsoft Technology Licensing, Llc Text realization
KR102472131B1 (ko) * 2015-09-03 2022-11-29 삼성전자주식회사 쉐이더 프로그램을 생성하는 방법 및 장치
CN114286163B (zh) * 2021-12-24 2024-02-13 苏州亿歌网络科技有限公司 一种序列图的录制方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07282274A (ja) * 1994-04-04 1995-10-27 Mitsubishi Electric Corp グラフィック表示装置
WO1998036379A2 (en) * 1997-02-03 1998-08-20 Micron Technology, Inc. A method and apparatus for performing chroma key, transparency and fog operations
KR20020015973A (ko) * 2000-08-23 2002-03-02 야마우치 히로시 그래픽 시스템용 재순환 쉐이드 트리 블렌더
EP1429293A2 (en) * 2002-12-03 2004-06-16 Microsoft Corporation Alpha correction to compensate for lack of gamma correction

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5128658A (en) * 1988-06-27 1992-07-07 Digital Equipment Corporation Pixel data formatting
JP3332404B2 (ja) * 1992-02-27 2002-10-07 キヤノン株式会社 画像モニタ装置及びその制御装置
JPH0775633A (ja) * 1993-06-30 1995-03-20 Shimadzu Corp 画像処理装置
US5473737A (en) * 1993-10-12 1995-12-05 International Business Machines Corporation Method and apparatus for displaying a composite image made up of a foreground image and a background image
KR960003448A (ko) 1994-06-09 1996-01-26 김광호 텔레비젼 화면 조정용 테스트 패턴 디스플레이 방법 및 그 장치
US6459428B1 (en) * 1998-02-17 2002-10-01 Sun Microsystems, Inc. Programmable sample filtering for image rendering
US6393145B2 (en) * 1999-01-12 2002-05-21 Microsoft Corporation Methods apparatus and data structures for enhancing the resolution of images to be rendered on patterned display devices
US6738526B1 (en) * 1999-07-30 2004-05-18 Microsoft Corporation Method and apparatus for filtering and caching data representing images
EP1290643A2 (en) * 2000-05-16 2003-03-12 Sun Microsystems, Inc. Graphics system using a blur filter
CN1338662A (zh) * 2000-08-15 2002-03-06 二一零零科技股份有限公司 改进的影像处理技术
US6879717B2 (en) * 2001-02-13 2005-04-12 International Business Machines Corporation Automatic coloring of pixels exposed during manipulation of image regions
US6831645B2 (en) * 2002-03-05 2004-12-14 Sun Microsystems, Inc. System and method for performing font operations when background color is transparent
US6897879B2 (en) * 2002-03-14 2005-05-24 Microsoft Corporation Hardware-enhanced graphics acceleration of pixel sub-component-oriented images
US7369139B2 (en) * 2003-11-20 2008-05-06 Honeywell International, Inc. Background rendering of images

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07282274A (ja) * 1994-04-04 1995-10-27 Mitsubishi Electric Corp グラフィック表示装置
WO1998036379A2 (en) * 1997-02-03 1998-08-20 Micron Technology, Inc. A method and apparatus for performing chroma key, transparency and fog operations
KR20020015973A (ko) * 2000-08-23 2002-03-02 야마우치 히로시 그래픽 시스템용 재순환 쉐이드 트리 블렌더
EP1429293A2 (en) * 2002-12-03 2004-06-16 Microsoft Corporation Alpha correction to compensate for lack of gamma correction
EP1429293A3 (en) 2002-12-03 2005-11-09 Microsoft Corporation Alpha correction to compensate for lack of gamma correction

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102328054B1 (ko) * 2020-05-13 2021-11-17 주식회사 한글과컴퓨터 전자 문서에 삽입되어 있는 개체의 원본 데이터 유지를 위한 개체 보호 기능을 제공하는 전자 장치 및 그 동작 방법
KR102328047B1 (ko) * 2020-05-13 2021-11-17 주식회사 한글과컴퓨터 워터마크용 이미지를 통해 문서 상에 문서 보안 등급에 대한 정보를 삽입할 수 있는 전자 장치 및 그 동작 방법

Also Published As

Publication number Publication date
US20050151753A1 (en) 2005-07-14
EP1429293B1 (en) 2013-05-29
US20050237339A1 (en) 2005-10-27
CN100336011C (zh) 2007-09-05
EP1429293A3 (en) 2005-11-09
BR0306750A (pt) 2004-12-28
US7142220B2 (en) 2006-11-28
JP3955562B2 (ja) 2007-08-08
EP1429293A2 (en) 2004-06-16
JP2004185008A (ja) 2004-07-02
KR20040048839A (ko) 2004-06-10
US20040104917A1 (en) 2004-06-03
CN1514344A (zh) 2004-07-21
US6933947B2 (en) 2005-08-23
US6985157B2 (en) 2006-01-10

Similar Documents

Publication Publication Date Title
US6985157B2 (en) Alpha correction to compensate for lack of gamma correction
US7986330B2 (en) Method and apparatus for generating gammacorrected antialiased lines
JP5294313B2 (ja) ベジェ曲線描画装置、ベジェ曲線描画方法およびプログラム
US9165399B2 (en) System, method, and computer program product for inputting modified coverage data into a pixel shader
US8749576B2 (en) Method and system for implementing multiple high precision and low precision interpolators for a graphics pipeline
US7190366B2 (en) Method and system for a general instruction raster stage that generates programmable pixel packets
US6469700B1 (en) Per pixel MIP mapping and trilinear filtering using scanline gradients for selecting appropriate texture maps
JP4989470B2 (ja) 線形光量値および他の画像処理の改良を使用した画像処理
US7038678B2 (en) Dependent texture shadow antialiasing
KR20160051154A (ko) 렌더링 방법, 렌더링 장치 및 전자 장치
US7106352B2 (en) Automatic gain control, brightness compression, and super-intensity samples
US20080252652A1 (en) Programmable graphics processing element
US5760792A (en) Fifo logical addresses for control and error recovery
JP4783298B2 (ja) フォントヒンティング言語における制約の反復的解決方法及びそのコンピュータプログラム
US7400330B2 (en) Magnification of indirection textures
US5801714A (en) Vertex list management system
US6731303B1 (en) Hardware perspective correction of pixel coordinates and texture coordinates
US8432394B1 (en) Method and system for implementing clamped z value interpolation in a raster stage of a graphics pipeline
US6750862B1 (en) Method and system for performing enhanced lighting functions for texture map data
JP2002341855A (ja) アンチエリアスフォント生成器
JP2898569B2 (ja) コンピュータゲーム開発用ビデオアクセラレータボード
JP2005077750A (ja) 表示装置装置および文字表示制御方法
Connal 2D Software Render Core for Prototyping in Development Environments
KR20080077990A (ko) 디지털 이미지에 효과들을 적용하기 위한 방법을 수행하기위한 컴퓨터 사용가능 명령어들을 갖는 하나 이상의 컴퓨터판독가능 매체, 및 복수의 픽셀 값들을 갖는 디지털이미지에 대한 효과들의 적용을 모으기 위한 시스템
JP2007264866A (ja) グラフィックシステム、破線テクスチャ画像生成装置、及び、破線テクスチャ画像生成方法

Legal Events

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

Payment date: 20130121

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20140123

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20150121

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20160127

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20170201

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180201

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20190129

Year of fee payment: 11