KR20080021637A - 디지털 이미지 처리에서의 효과 그래프를 통한 변환들의축적 - Google Patents

디지털 이미지 처리에서의 효과 그래프를 통한 변환들의축적 Download PDF

Info

Publication number
KR20080021637A
KR20080021637A KR1020077028391A KR20077028391A KR20080021637A KR 20080021637 A KR20080021637 A KR 20080021637A KR 1020077028391 A KR1020077028391 A KR 1020077028391A KR 20077028391 A KR20077028391 A KR 20077028391A KR 20080021637 A KR20080021637 A KR 20080021637A
Authority
KR
South Korea
Prior art keywords
effect
image data
digital image
transform
graph
Prior art date
Application number
KR1020077028391A
Other languages
English (en)
Inventor
스티븐 제임스 화이트
도날드 엠. 마쉬
데니스 디멘돌스
더글라스 에이. 리카드
징양 수
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080021637A publication Critical patent/KR20080021637A/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/206Drawing of charts or graphs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Image Processing (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Abstract

수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리, 예를 들어 비파괴 처리하기 위한 방법 및 시스템이 제공된다. 비파괴 처리에서는 품질 및 성능 면에서 데이터가 언제, 어디서 변환되는지가 매우 중요하다. 변환은 수직 배향 효과 그래프의 더 아래에서 발생할수록 더 좋다. 따라서, 변환들을 효과 그래프 아래로 가능한 최저 포인트까지 푸시하고, 변환들이 위치했을 수 있는 위치가 아니라 최저 포인트에서 변환들을 적용하기 위한 방법들이 제공된다. 본 명세서에 기술된 방법들을 구현하기 위한 시스템들도 제공된다.
Figure P1020077028391
디지털 이미지 처리, 효과 그래프, 변환, 비파괴 처리

Description

디지털 이미지 처리에서의 효과 그래프를 통한 변환들의 축적{ACCUMULATING TRANSFORMS THROUGH AN EFFECT GRAPH IN DIGITAL IMAGE PROCESSING}
비디오 카드 또는 그래픽 처리 유닛(GPU)은 매우 높은 속도의 메모리를 사용하고 이를 픽셀 데이터에 대한 간단한 계산을 매우 효율적으로 처리할 수 있는 특수 프로세서에 결합시킨다는 점에서 중앙 처리 유닛(CPU)과 다르다. 비디오 카드는 범용 프로세서가 아니다. 그러나, 비디오 카드는 예를 들어 어느 표면이 사용자에게 보여져야 하고 어느 표면이 숨겨져야 하는 것은 물론, 어느 텍스처들이 그들 표면 상에 맵핑되어야 이들이 3차원(3D) 장면에서 사실적으로 보일 것인지를, CPU가 동일 태스크를 달성할 수 있는 것보다 훨씬 빠르게 계산할 수 있다. 이것은 주로, CPU가 다양한 범용 태스크를 적절히 수행할 수 있지만 임의의 특정 동작에 최적화되어 있지 않은 반면, 비디오 카드는 매우 특수화된 하드웨어를 사용하여 한 번에 하나의 기능만을 수행한다는 사실에 기인한다.
비디오 카드(GPU)는 통상적으로 두 가지 주요 목적에 이용되어 왔다. 첫째, GPU는 사용자의 스크린 상에서의 간단한 그래픽 연산을 가속화하는 데 사용되어 왔다. 예를 들어, 사용자가 표시 장치(예를 들어, 통상의 컴퓨터 모니터) 상에 표시된 문서를 스크롤할 때, 많은 수의 픽셀이 이동하게 된다. 이러한 액션에 필요한 계산 요구로 인해, 통상의 CPU는 이 태스크를 달성함에 있어서 특별히 빠르거나 효 율적이지 않다. 따라서, 보다 빠르고 효율적인 스크롤링을 달성하기 위하여 CPU와 함께 GPU가 사용될 수 있다.
둘째, GPU는 간단한 프리미티브를 렌더링하는 데(예를 들어, 칼라로 영역을 채우고, 라인을 그리는 등) 사용되어 왔다. 간단한 그래픽 연산의 가속화에서와 같이, GPU는 통상의 CPU보다 빠르고 효율적으로 간단한 프리미티브를 렌더링할 수 있다.
더 최근에, 비디오 게임은 더욱 대중화되기 시작하여 그러한 게임에서 현실감 및 속도의 향상에 대한 요구를 증가시켜 왔다. 따라서, 비디오 게임 제작자들은 비디오 렌더링, 예를 들어 음영, 반사, 텍스처 맵핑 등을 제공하면서 3차원 장면을 렌더링하여 사용자 입력에 여전히 빠르게 응답하면서 장면이 가능한 한 사실적으로 보이도록 해야 하는 복잡한 문제에 직면하기 시작하였다.
비디오 카드는 전술한 특정 영역들 외에 CPU 기능을 가속화하는 데에는 사용되지 않았다.
비디오 게임 제작 외의 영역에서의 디지털 이미지의 이용도 최근에 증가하고 있다. 그러나, 디지털 이미지가 더 커지고(메가 픽셀 이상) 픽셀이 더 깊어짐(채널당 적어도 16 비트)에 따라, 이들은 통상의 CPU에서 이용 가능한 연산 자원들을 무리하게 요구하고 있어서, 디지털 이미지의 처리를 더 느리고 덜 효율적이게 하고 있다.
<발명의 요약>
본 발명의 실시예들은 수직 배향 효과 그래프를 이용한 디지털 이미지 데이 터의 처리, 예를 들어 비파괴적 처리에 관한 것이다. 비파괴적 처리에 있어서는, 데이터가 언제, 어디서 변환되는가가 품질 및 성능 면에서 매우 중요하다. 변환은 수직 배향 효과 그래프의 더 아래에서 발생할수록 좋다. 따라서, 본 발명의 실시예들은 변환들을 효과 그래프의 아래로 가능한 가장 낮은 포인트까지 푸시하고 이들이 배치되었을 수 있는 위치가 아니라 그 포인트에서 이들을 적용하는 것과 관련된다.
본 발명은 첨부된 도면들을 참조하여 아래에 상세히 설명된다.
도 1은 본 발명의 구현에 이용하기에 적합한 예시적인 컴퓨팅 환경의 블록도이다.
도 2는 본 발명의 일 실시예에 따라 3개의 입력 및 2개의 출력을 갖는 예시적인 혼합 효과의 개략도이다.
도 3은 본 발명의 일 실시예에 따라 마스크에 의해 지시되는 바와 같이 입력 이미지의 영역들을 선택적으로 블러링하는 예시적인 효과 그래프의 개략도이다.
도 4는 본 발명의 일 실시예에 따른 예시적인 효과 그래프의 개략도이다.
도 5는 본 발명의 일 실시예에 따라 각각의 효과에 대해 도시된 카운트를 가진 예시적인 효과 그래프의 개략도이다.
도 6은 본 발명의 일 실시예에 따라 블러링 효과와 연관된 마스크를 나타내는 예시적인 효과 그래프의 개략도이다.
도 7은 본 발명의 일 실시예에 따라 효과 그래프에서 사용하기 위한 예시적 인 계층의 개략도이다.
도 8은 본 발명의 일 실시예에 따라 효과 그래프의 예시적인 완전 연결 계층의 개략도이다.
도 9는 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도이다.
도 10은 본 발명의 일 실시예에 따라 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도이다.
도 11은 본 발명의 일 실시예에 따라 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도이다.
도 12는 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도이다.
도 13은 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도이다.
도 14는 본 발명의 일 실시예에 따라 디지털 이미지 데이터의 처리를 위한 효과 그래프를 생성하기 위한 방법을 나타내는 흐름도이다.
도 15는 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도이다.
도 16은 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도로서, 도 16의 방법은 도 15의 방법 후에 발생할 수 있는 추가 처리 단계를 나타낸다.
도 17은 본 발명의 일 실시예에 따라 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도이다.
도 18은 본 발명의 일 실시예에 따라 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도이다.
본 명세서에서 본 발명의 내용은 법정 요건을 만족하도록 구체적으로 설명된다. 그러나, 설명 자체는 본 특허의 범위를 제한하는 것을 의도하지 않는다. 오히려, 발명자들은 청구되는 내용이 다른 현재 또는 미래의 기술들과 관련하여 이 명세서에서 설명되는 것과 다른 단계들 또는 그와 유사한 단계들의 조합을 포함하도록 다른 방법으로 구현될 수도 있음을 고려하였다. 더욱이, 본 명세서에서 "단계" 및/또는 "블록"이라는 용어가 이용되는 방법들의 상이한 요소들을 의미하기 위해 사용될 수도 있지만, 이들 용어는 개별 단계들의 순서가 명시적으로 기술되지 않는 한, 그리고 그 외에는 본 명세서에서 개시되는 다양한 단계 사이의 임의의 특정 순서를 의미하는 것으로 해석되어서는 안 된다.
본 발명의 실시예들은 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 시스템 및 방법을 제공한다. 본 발명의 개요를 간략히 설명하는 본 발명의 예시적인 운영 환경이 아래에 설명된다.
다양한 도면에서 동일 참조 번호가 동일 컴포넌트를 나타내는 도면들을 일반적으로 참조하면, 특히 도 1을 먼저 참조하면, 본 발명을 구현하기 위한 예시적인 운영 환경이 도시되고 일반적으로 컴퓨팅 시스템 환경(100)으로 지정되어 있다. 컴퓨팅 시스템 환경(100)은 적합한 컴퓨팅 환경의 일례에 불과하며, 본 발명의 용도 또는 기능성의 범위에 관해 어떤 제한을 암시하고자 하는 것은 아니다. 컴퓨팅 환경(100)이 예시적인 운영 환경(100)에 도시된 컴포넌트들 중 임의의 하나 또는 그 컴포넌트들의 임의의 조합과 관련하여 어떤 의존성 또는 요구사항을 갖는 것으로 해석되어서는 안 된다.
본 발명은 많은 기타 범용 또는 특수 목적의 컴퓨팅 시스템 환경 또는 구성에서 동작할 수 있다. 본 발명에서 사용하는 데 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경 및/또는 구성의 예로는 퍼스널 컴퓨터, 서버 컴퓨터, 핸드-헬드 또는 랩톱 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능한 가전제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 전화 시스템, 상기 시스템들이나 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만 이에 제한되는 것은 아니다.
본 발명은 일반적으로 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령어와 관련하여 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 또한 통신 네트워크를 통해 연결되어 있는 원격 처리 장치들에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실시되도록 설계된다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 메모리 저장 장치를 비롯한 로컬 및 원격 컴퓨터 저장 매체 둘다에 위치할 수 있다.
도 1과 관련하여, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 처리 장치(120), 시스템 메모리(130), 및 시스템 메모리를 비롯한 각종 시스템 컴포넌트들을 처리 장치(120)에 연결시키는 시스템 버스(121)를 포함하지만 이에 제한되는 것은 아니다. 시스템 버스(121)는 메모리 버스 또는 메모리 컨트롤러, 주변 장치 버스 및 각종 버스 아키텍처 중 임의의 것을 이용하는 로컬 버스를 비롯한 몇몇 유형의 버스 구조 중 어느 것이라도 될 수 있다. 예로서, 이러한 아키텍처는 ISA(industry standard architecture) 버스, MCA(micro channel architecture) 버스, EISA(Enhanced ISA) 버스, VESA(video electronics standard association) 로컬 버스, 그리고 메자닌 버스(mezzanine bus)로도 알려진 PCI(peripheral component interconnect) 버스 등을 포함하지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 통상적으로 각종 컴퓨터 판독가능 매체를 포함한다. 컴퓨터(110)에 의해 액세스 가능한 매체는 그 어떤 것이든지 컴퓨터 판독가능 매체가 될 수 있고, 이러한 컴퓨터 판독가능 매체는 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함하지만 이에 제한되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터(110)에 의해 액세스되고 원하는 정보를 저장할 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 통신 매체는 통상적으로 반송파(carrier wave) 또는 기타 전송 메커니즘(transport mechanism)과 같은 피변조 데이터 신호(modulated data signal)에 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터 등을 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는, 신호 내에 정보를 인코딩하도록 그 신호의 특성들 중 하나 이상을 설정 또는 변경시킨 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 배선 접속(direct-wired connection)과 같은 유선 매체, 그리고 음향, RF, 적외선, 기타 무선 매체와 같은 무선 매체를 포함한다. 상술된 매체들의 모든 조합이 또한 컴퓨터 판독가능 매체의 영역 안에 포함되는 것으로 한다.
시스템 메모리(130)는 판독 전용 메모리(ROM)(131) 및 랜덤 액세스 메모리(RAM)(132)와 같은 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동 중과 같은 때에, 컴퓨터(110) 내의 구성요소들 사이의 정보 전송을 돕는 기본 루틴을 포함하는 기본 입/출력 시스템(BIOS)(133)은 통상적으로 ROM(131)에 저장되어 있다. RAM(132)은 통상적으로 처리 장치(120)가 즉시 액세스 할 수 있고 및/또는 현재 동작시키고 있는 데이터 및/또는 프로그램 모듈을 포함한다. 예로서, 도 1은 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시하고 있지만 이에 제한되는 것은 아니다.
컴퓨터(110)는 또한 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장매체를 포함한다. 단지 예로서, 도 1은 비이동식·비휘발성 자기 매체에 기록을 하거나 그로부터 판독을 하는 하드 디스크 드라이브(141), 이동식·비휘발성 자기 디스크(152)에 기록을 하거나 그로부터 판독을 하는 자기 디스크 드라이브(151), CD-ROM 또는 기타 광 매체 등의 이동식·비휘발성 광 디스크(156)에 기록을 하거나 그로부터 판독을 하는 광 디스크 드라이브(155)를 포함한다. 예시적인 운영 환경에서 사용될 수 있는 기타 이동식/비이동식, 휘발성/비휘발성 컴퓨터 기억 매체로는 자기 테이프 카세트, 플래시 메모리 카드, DVD, 디지털 비디오 테이프, 고상(solid state) RAM, 고상 ROM 등이 있지만 이에 제한되는 것은 아니다. 하드 디스크 드라이브(141)는 통상적으로 인터페이스(140)와 같은 비이동식 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광 디스크 드라이브(155)는 통상적으로 인터페이스(150)와 같은 이동식 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
위에서 설명되고 도 1에 도시된 드라이브들 및 이들과 관련된 컴퓨터 저장 매체는, 컴퓨터(110)에 대한 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터를 저장한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146), 및 프로그램 데이터(147)를 저장하는 것으로 도시되어 있다. 여기서 주의할 점은 이들 컴포넌트가 운영 체제(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)와 동일하거나 그와 다를 수 있다는 것이다. 이에 관해, 운영 체제(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)에 다른 번호가 부여되어 있다는 것은 적어도 이들이 다른 사본(copy)이라는 것을 나타내기 위한 것이다. 사용자는 키보드(162), 마이크(163) 및 마우스, 트랙볼(trackball) 또는 터치 패드와 같은 포인팅 장치(161) 등의 입력 장치를 통해 명령 및 정보를 컴퓨터(110)에 입력할 수 있다. 다른 입력 장치(도시 생략)로는 마이크, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 및 기타 입력 장치는 종종 시스템 버스에 결합된 사용자 입력 인터페이스(160)를 통해 처리 장치(120)에 접속되지만, 병렬 포트, 게임 포트 또는 USB(universal serial bus) 등의 다른 인터페이스 및 버스 구조에 의해 접속될 수도 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치도 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속될 수 있다. 모니터 외에, 컴퓨터는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있고, 이들은 출력 주변장치 인터페이스(195)를 통해 접속될 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 사용하여 네트워크화된 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 또 하나의 퍼스널 컴퓨터, 핸드-헬드 장치, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 통상의 네트워크 노드일 수 있고, 통상적으로 컴퓨터(110)와 관련하여 상술된 구성요소들의 대부분 또는 그 전부를 포함한다. 도 1에 도시된 논리적 접속으로는 LAN(171) 및 WAN(173)이 있지만, 기타 네트워크를 포함할 수도 있다. 이러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷, 및 인터넷에서 일반적인 것이다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(110)는 통상적으로 인터넷과 같은 WAN(173)을 통해 통신을 설정하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속된다. 네트워크화된 환경에서, 컴퓨터(110) 또는 그의 일부와 관련하여 기술된 프로그램 모듈은 원격 메모리 저장 장치에 저장될 수 있다. 예로서, 도 1은 원격 애플리케이션 프로그램(185)이 원격 컴퓨터(180)에 있는 것으로 도시하고 있지만 이에 제한되는 것은 아니다. 도시된 네트워크 접속은 예시적인 것이며 이 컴퓨터들 사이에 통신 링크를 설정하는 기타 수단이 사용될 수 있다는 것을 이해할 것이다.
컴퓨터(110)의 많은 다른 내부 컴포넌트가 도시되지 않지만, 이 분야의 전문가들은 이러한 컴포넌트들 및 그 상호접속이 잘 알려져 있음을 알 것이다. 따라서, 컴퓨터(110)의 내부 구성에 관한 추가 상세는 본 발명과 관련하여 개시될 필요가 없다.
컴퓨터(110)가 턴온 또는 리셋될 때, ROM(131)에 저장된 BIOS(133)는 처리 장치(120)에게 하드 디스크 드라이브(141)에서 RAM(132)으로 운영 체제 또는 그의 필요 부분을 로딩하도록 지시한다. 운영 체제(144)로서 지시된 운영 체제의 사본 부분이 RAM(132)에 로딩되면, 처리 장치(120)는 운영 체제 코드를 실행하여, 운영 체제(134)의 사용자 인터페이스와 연관된 비주얼 요소들이 모니터(191) 상에 표시되게 한다. 일반적으로, 애플리케이션 프로그램(145)이 사용자에 의해 열릴 때, 프로그램 코드 및 관련 데이터가 하드 디스크 드라이브(141)로부터 판독되고, 필요한 부분이 RAM(132)에 복사되는데, 복사된 부분은 본 명세서에서 참조 번호 135로 표시된다.
전술한 바와 같이, 본 발명의 실시예들은 디지털 이미지 처리에 있어서 비디오 카드 또는 GPU의 가속 능력을 이용하기 위한 시스템 및 방법을 제공한다. 이러한 방법 및 시스템은 예를 들어 도 1의 비디오 인터페이스(190)를 이용할 수 있다. 본 명세서에 사용되는 "디지털 이미지"라는 용어는 정적 및/또는 동적 디지털 이미지를 포함하는 임의의 디지털 이미지 데이터를 지칭하며, 그의 임의 및 모든 조합 또는 변형은 본 발명의 범위 내에 있는 것으로 고려된다는 것을 이 분야의 전문가들은 이해할 것이다. 본 명세서에 설명되는 시스템 및 방법을 이용하면, 픽셀 데이터는 가속된 속도로, 즉 CPU가 자체적으로 할 수 있는 것보다 빠르게 다양한 방식으로 변환될 수 있다.
본 발명의 실시예들은 또한 비파괴적인 편집을 GPU 가속과 통합한다. 본 명세서에서 사용되는 "비파괴적 편집" 또는 "비파괴적 처리"라는 용어는 렌더링이 요청된 이미지 데이터만이 요청 시에, 즉 데이터를 중간 단계들로 편평화(flattening) 또는 저장하지 않고, 렌더링되는 편집(또는 처리)을 지칭한다. 즉, 렌더링은 이미지가 렌더링될 때마다 요청시에 변경되지 않은 최초 로딩된 이미지 데이터로부터 시작하여 발생한다.
종래 애플리케이션들은 다양한 정도로 CPU 처리와 조합하여 비파괴적 편집을 시도하였다. 그러나, 이는 CPU 처리가 충분히 느려서 그 성능이 그 시기에 우세했던 비교적 작은 이미지들에 대한 편평화 모델의 성능에 매칭될 수 없었으므로 완전히 실현되지는 못했다. 그러나, 더 최근에, 매우 큰(메가 픽셀) 사진 이미지들이 대중화되어 비파괴적인 편집 모델이 더욱 요구되고 있다.
본 발명의 실시예들에 의해 고려되는 바와 같이, GPU를 비파괴적 편집과 조합하여 이용하는 것은 이미지 처리 성능을 대단히 자주 통상의 CPU 기반 편평화 모델보다 훨씬 높게 한다. 실제로, GPU의 비교적 적은 메모리 풋프린트(편평화는 매우 메모리 집약적이다) 및 GPU에서 CPU 메모리로 이미지 데이터를 판독하기 위한 제한된 대역폭이 주어질 경우에 편평화 모델은 GPU 구현에 적합하지 않다.
비파괴 편집과 GPU의 조합은 요청시 렌더링을 위해 필요한 비트들만의 GPU로의 로딩을 허가한다. 따라서, 최초 픽셀들 모두가 각각의 편집에 대해 충분한 해상도로 처리되는 것을 보장할 필요가 없어진다.
본 발명의 실시예들에 따른 방법 및 시스템은 GPU 가속 능력을 CPU 디지털 이미지 처리 모델에 통합한다. 즉, GPU는 단지 특수 특징 등으로서 주변에 제공되는 것이 아니라 디지털 이미지 처리 모델 아키텍처에 통합된다. 이러한 방식으로, CPU 및 GPU 처리가 통합되며, 따라서 디지털 이미지 처리 분야에 종사하는 사용자들(예를 들어, 프로그래머 또는 개발자)은 CPU 처리 또는 GPU 처리만을 선택할 필요 없이 예를 들어 장점 또는 능력이 타겟 장치에 맞는 2개의 모델을 교대로 사용할 수 있다.
GPU가 시스템 아키텍처에 통합되지만, GPU의 사용은 옵션 컴포넌트로서 제공된다는 점에 유의해야 한다. 따라서, 렌더링 장치가 가능한 비디오 카드를 포함하는 경우에는, 시스템은 필요하거나 원할 때 그의 가속 능력을 요청할 수 있다. 그러나, 시스템이 가능한 비디오 카드를 포함하지 않는 경우에는, GPU가 디지털 이미지의 처리를 위해 계속 사용될 수 있다.
본 발명의 방법 및 시스템은 효과 그래프를 생성하고 GPU, CPU 또는 이 둘의 소정 조합을 이용하여 효과 그래프를 와이어링하는 기능을 제공한다. 본 발명의 실시예들에 따른 디지털 이미지 처리 모델 아키텍처는 본 명세서에 효과로서 지칭되는 요소들로 구성된다. 본 명세서에서 사용되는 효과라는 용어는 기본 이미지 처리 클래스를 지칭한다. 즉, 효과는 기본적으로 픽셀 연산자이다. 버퍼 및 픽셀 데이터를 수용하고, 데이터를 조작하고, 변경된 픽셀을 출력한다. 예를 들어, 선명화 효과는 이미지 픽셀을 수용하고, 픽셀 에지를 선명화하여, 수용된 이미지 픽셀보다 선명한 이미지를 출력한다. 다른 예로서, 노출 효과는 이미지 픽셀 데이터를 수용하고, 픽셀의 칼라 균형을 조절하여, 수용된 것으로부터 변경된 칼라 균형을 갖는 이미지를 출력한다. 따라서, 효과의 주요 기능은 픽셀 처리이다.
상이한 효과들, 예를 들어 마스킹, 혼합, 회전 등이 다양한 이미지 처리 알고리즘을 구현하기 위해 정의될 수 있다. 아래에 더욱 충분히 설명되는 바와 같이, 사용자들은 미리 정의된 효과들을 함께 와이어링하여 원하는 결과를 달성할 수 있다. 원할 경우, 사용자는 흥미있는 이미지 처리 알고리즘을 구현하기 위해 새로운 효과를 정의할 수도 있다. 효과는 임의 수의 입력 이미지를 처리하여 임의 수의 출력 이미지를 생성할 수 있다. 입력 및 출력의 수는 생성시에 결정되며, 효과의 재생성 없이는 변경될 수 없다. 각각의 입력 또는 출력의 의미는 효과 자체의 의해 정의된다. 대부분의 경우, 의미는 순서 종속적(order-dependent)이다.
단지 예로서, 도 2는 3개의 입력과 2개의 출력을 가진 혼합 효과의 개략도를 나타낸다. 이 특정 혼합 효과는 그의 세 번째 입력(입력 2)에 제공된 마스크에 의해 변조된 그의 첫 번째 두 입력(입력 1 및 입력 1)을 혼합한다. 이 예에서, 제1 출력(출력 0)은 칼라 이미지를 생성하는 반면, 제2 출력(출력 1)은 회색 음영 내의 이미지를 생성한다. 많은 효과는 하나의 출력만을 생성한다.
소정의 방식에서, 효과들이 함께 와이어링될 수 있기 전에 각각의 효과가 무엇을 행하는지를 사용자가 이해해야 한다는 점에서 효과들은 집적 회로와 같이 동작한다. 집적 회로와 같이, 함께 와이어링된 효과들의 집합은 부분들의 합을 초과하는 복합적인 결과를 달성할 수 있다.
효과들이 함께 와이어링될 때, 이들은 효과 그래프를 형성한다. 본 명세서에서 사용되는 효과 그래프라는 용어는 지향성 비순환 그래프(DAG)를 지칭한다. 효과 그래프는 모든 연결이 데이터 흐름 방향(하나의 효과의 출력에서 다음 효과의 입력으로)을 의미하므로 "지향성"이다. 효과 그래프는 루프가 허용되지 않으므로, 즉 그래프를 통한 어떠한 경로도 효과의 출력이 그의 입력들 중 하나로서 돌아오게 하지 못하므로 "비순환"이다. 효과 그래프는 효과의 출력이 다수의 효과의 입력들을 공급할 수 있으므로 "트리"가 아니라 "그래프"이다. 효과 그래프들은 다수의 효과를 함께 연결하여 다수의 보다 간단한 구성 블록으로부터 구성되는 복합적인 출력을 달성한다.
도 3을 참조하면, 마스크에 의해 지시되는 입력 이미지의 영역들을 선택적으로 블러링하는 예시적인 효과 그래프(300)의 개략도가 도시되어 있다. 이미지 효과 개체(310)가 블러링 효과 개체(312) 및 혼합 효과 개체(314) 양자에 어떻게 이미지 데이터를 제공하는지에 유의한다. 이것은 트리 구조에서는 가능하지 않을 것이다. 또한, 효과 그래프(300)에는 순환이 없다. 즉, 예를 들어 혼합 효과 개체(314)의 출력은 다른 효과 개체들(이미지 효과 개체(310), 블러링 효과 개체(314) 또는 마스크 효과 개체(316)) 중 한 개체의 입력이 아니다. 본 발명의 모델은 효과 그래프가 렌더링 및/또는 변경될 때 순환을 자동으로 검사하여 무한 루프를 방지한다.
효과가 렌더링을 위해 요청될 때, 각 효과와 관련하여 몇 가지 흥미로운 일들이 발생한다. 먼저, 각 효과는 기존의 캐싱된 버퍼를 이용하여 요청이 만족될 수 있는지를 판정한다. 캐싱 전략들이 아래에서 보다 상세히 설명되지만, 지금은 소정 작업의 출력이 적당한 캐시 내에 이미 존재하는 경우에는 그 작업을 행할 필요가 없는 것으로 생각하기에 충분하다. 요청이 기존 캐시 버퍼에 의해 부분적으로 만족될 수 있는 경우(이것은 자주 예를 들어 사용자가 이미지를 팬잉하거나 윈도우의 크기를 조절할 때 발생한다), 중복 픽셀들은 캐시에서 새로운 이미지 버퍼로 복사되며, 이어서 잔여 픽셀들은 새로운 버퍼의 적당한 부분들로 렌더링되고 복사된다.
효과들은 두 가지 상이한 방법, 즉 CPU를 동작시키는 필수 렌더링 방법(소프트웨어 렌더링) 및 GPU를 동작시키는 옵션 렌더링 방법(각각의 효과가 하드웨어(GPU) 또는 소프트웨어(CPU)에서 렌더링을 시도해야 하는지를 결정하는 하드웨어 렌더링)을 이용하여 렌더링될 수 있다. 선택은 사용자에 의해(각각의 효과와 연관된 소프트웨어 렌더링 전용 오버라이드가 존재한다), 애플리케이션에 의해, 그리고/또는 현재의 콘텍스트에 의해(콘텍스트 내의 소프트웨어 렌더링 전용 오버라이드는 클라이언트 또는 그래프 내의 임의의 상위 효과가 서브 그래프의 소프트웨어 렌더링을 강제하는 것을 허용한다) 지시될 수 있다. 소프트웨어 오버라이드가 지시되지 않는 경우, 기본 클래스는 하드웨어에서 효과를 렌더링하려고 시도할 것이며, 가능하다면, 요청된 결과를 포함하는 이미지 버퍼가 반환될 것이다. 효과가 하드웨어에서 렌더링될 수 없는 경우, 소프트웨어 렌더링이 발생할 것이다.
어느 렌더링 방법이 호출되는지에 영향을 미칠 수 있는 동적 조건들이 또한 존재한다는 점에 유의한다. 예를 들어, 효과는 하드웨어 렌더링을 요청하지만, 비디오 카드의 가용 메모리를 초과하는 임시 버퍼들을 할당하려는 시도가 행해지는 메모리 초과 예외를 포착할 수 있다. 디폴트 응답은 효과가 소프트웨어 렌더링(CPU)을 요청하여 그가 필요로 하는 결과를 얻는 것이다. 즉, 모델은 GPU 메모리가 부족한 경우 CPU로 복귀할 수 있다. 이러한 방식으로, 성능은 자원 가용성에 기초하여 최적화될 수 있다.
이미지 버퍼는 시스템 메모리(CPU 메모리), 비디오 메모리(GPU 메모리) 또는 이들 양자에 저장된 이미지(픽셀) 데이터를 표현하며, 효과 그래프를 통해 하나의 효과에서 다른 효과로 전달된다. 사용자는 단순히 그가 데이터를 처리하고 싶어하는 위치에서 처리하고 싶어하는 데이터를 요청할 수 있고, 이미지 버퍼는 필요한 경우 데이터를 자동으로 그 위치에 복사할 것이므로, 데이터의 실제 위치는 일반적으로 사용자에게 중요하지 않다. 즉, 이미지 버퍼는 픽셀 데이터가 저장되어 있는 곳에 대한 상세를 숨기며, 자동으로 효과에 대해 적절한 위치에서 이용 가능하게 한다.
이미지 버퍼는 효과에 의해 이미지 데이터를 판독하고 기입하는 데 사용되는 주요 클래스이다. 이미지 버퍼는 일반적으로 사용자가 렌더링하기를 원할 수 있는 이미지의 크기에 비해 아주 작은 최대 크기를 갖는다. 예를 들어, 일 실시예에서, 하드웨어 제한에 의해 지시되는 최대 폭 또는 높이는 어느 치수에서나 2K 픽셀을 초과하지 않을 수 있다. 특정 효과 그래프는 심지어 단일 패스에서 2K 픽셀을 렌더링하지 못할 수도 있다. 최대 크기는 그래프에 포함된 특정 효과들에 의존한다. 예를 들어, 큰 반경의 블러링 효과는 그가 기입하는 것보다 훨씬 더 많은 픽셀을 판독해야 하며, 따라서 그가 생성할 수 있는 최대 버퍼 크기는 그가 그의 입력을 오버샘플링하는 양만큼 감소된다.
사용자들은 렌더링 요청을 행할 때 이러한 제한을 쉽게 예측할 수 없다. 따라서, 사용자들은 그들이 필요로 하는 것만을 요청한다. 그러나, 반환되는 버퍼는 요청된 것과 다른 크기일 것이다.
이미지 버퍼의 인스턴스는 할당되고 재요청(reclaim)될 수 없는 메모리를 유지한다. 이미지 버퍼들은 효과에 의해 능동적으로 판독 또는 기입되고 있는 이미지 데이터를 유지하는 데 유용하다.
때로는, 효과가 렌더링 패스들 사이에서 이미지 데이터를 캐싱하기를 원할 수 있다. 그러나, 이 데이터는 이미지 버퍼에 유지되는 경우에는 재요청될 수 없다. 효과 그래프의 나머지가 렌더링됨에 따라, 비디오 메모리가 낮아지는 경우, 엔진은 충분한 자원을 재요청할 수 없는 경우에는 소프트웨어 렌더링으로 복귀해야 한다.
이미지 캐시 개체는 이미지 데이터를 캐싱하는 대안적인 방법이다. 이미지 캐시 개체는 효과가 후속 렌더링 동안 재사용하기를 원하지만 그렇게 했다면 재생성할 수 있는 이미지 데이터에 대한 참조를 유지하는 것을 허가한다. 이미지 캐시 개체를 유지하고 이미지 버퍼 개체를 릴리스함으로써, 효과는 메모리가 비디오 메모리의 부족시 재요청되는 것을 가능하게 한다. 목표는 다른 효과들이 낮은 메모리 시나리오에서 소프트웨어(CPU) 렌더링으로 복귀하는 것이 아니라 하드웨어(GPU) 가속을 이용할 수 있게 하는 것이다. 사용자는 그가 나중에 판독하기를 원할 수 있는 임의의 이미지 버퍼로부터 이미지 캐시 인스턴스에 취득할 수 있다. 이어서, 이미지 버퍼는 이미지 캐시가 계속 유지되는 동안 릴리스될 수 있다. 이것은 이미지 데이터에 대한 참조를 유지하며, 필요한 경우 그의 콘텐츠의 재요청을 허가한다.
트리들과 달리, 효과들의 그래프들로의 조직은 렌더링 동안 몇 가지 과제를 제시한다. 예를 들어, 도 4의 개략도에 도시된 것과 같은 효과 그래프를 고려한다. 도시된 효과 그래프(400)에서, 이미지 데이터가 하부 이미지 효과 개체(410)에서 상부 혼합 효과 개체인 혼합 효과 B(418)의 출력으로 흐르는 4가지 방법이 존재한다. 첫째, 이미지 데이터는 이미지 효과 개체(410)에서 혼합 효과 개체 A(414)로, 이어서 혼합 효과 개체 B(418)로 흐를 수 있다. 둘째, 이미지 데이터는 이미지 효과 개체(410)에서 레벨 효과 개체(412)로, 이어서 혼합 효과 개체 A(414)로, 이어서 혼합 효과 개체 B(418)로 흐를 수 있다. 셋째, 이미지 데이터는 이미지 효과 개체(410)에서 레벨 효과 개체(412)로, 이어서 혼합 효과 개체 A(414)로, 이어서 블러링 효과 개체(416)로, 이어서 혼합 효과 개체 B(418)로 흐를 수 있다. 넷째, 이미지 데이터는 이미지 효과 개체(410)에서 혼합 효과 개체 A(414)로, 이어서 블러링 효과 개체(416)로, 이어서 혼합 효과 개체 B(418)로 흐를 수 있다.
효과 그래프를 통한 4개 패스가 관리하기 어려운 것으로 보이지 않을 수도 있지만, 조합 확률은 지수적이다. 다소 더 많은 효과가 추가 혼합 효과들과 결합되는 경우, 그래프를 통한 고유 경로들의 수는 수백 또는 수천에 이르게 된다. 나이브(naive) 렌더링 모델은 그래프의 하부 근처에서 효과들을 여러 번 렌더링해야 하는데, 이는 매번 동일 출력을 생성하게 된다. 이러한 지수적 증가 및 동일 효과들의 반복 렌더링은 디지털 이미지 처리를 매우 비효율적이고 느리게 한다.
본 발명의 실시예들의 모델은 각 효과에서 자동 버퍼 캐싱을 포함함으로써 이러한 과다 렌더링의 전부는 아니더라도 그 일부를 경감한다. 예를 들어, 도 4의 효과 그래프 내의 혼합 개체 효과 A(414)가 캐시를 유지하는 경우에, 이 효과는 그의 입력들을 렌더링하도록 레벨 효과(412) 및 이미지 효과(410)에 대해 2개의 추가 요청을 행하는 대신에 그에 대한 후속 렌더링 요청시마다 간단히 캐시를 반환할 수 있다. 이 예에서, 이미지 효과 개체(410)는 그의 출력에 대해 4번이 아니라 두 번만 요청된다.
보다 구체적으로, 효과 그래프를 이용하여 원시 이미지로부터 최종 출력에 도달하기 위하여, 경로를 따르는 각각의 효과는 그의 출력에 대해 쿼리되어야 한다. 그러나, 효과는 그의 입력 버퍼가 렌더링될 때까지 그의 출력을 렌더링할 수 없다. 따라서, 그의 출력에 대한 요청시, 각 효과는 그의 입력을 쿼리한다(즉, 그의 입력 효과들의 이미지 버퍼들을 쿼리하여 이들 상에 동작할 수 있다). 그러나, 효과의 입력들은 그들 각각의 입력 버퍼들이 렌더링될 때까지 그들의 출력을 렌더링할 수 없으며, 따라서 그 자신의 입력들을 쿼리해야 한다. 이러한 쿼리 프로세스는 효과 그래프의 상부(최종 출력이 렌더링되는 곳)에서 입력(예를 들어, 원시 이미지, JPEG 등)이 렌더링되는 하부까지 내내 계속된다. 또한, 이 프로세스는 효과 그래프를 통한 잠재적 경로를 한 번에 하나씩 따름으로써 각 쿼리에 대해 완료되어야 한다. 예를 들어, 도 4의 효과 그래프를 이용하는 전술한 예에서, 혼합 효과 개체 B(418)가 2개의 입력만을 갖지만, 이들 입력 각각은 그의 출력을 렌더링하기 위해 2개의 상이한 경로를 따라 그의 입력들을 쿼리해야 한다. 각각의 효과는 각각의 잠재적 경로에 대한 이미지 버퍼를 생성하며, 최종 효과(이 예에서는 혼합 효과 개체 B(418))에 최종 효과를 출력하는 데 필요한 입력들 중 하나를 제공한다.
그러나, 효과 그래프 내의 중간 효과들(예를 들어, 레벨 효과 개체(412), 혼합 효과 개체 A(414), 및 블러링 효과 개체(416))에 의해 캐싱이 이용되는 경우, 각각의 중간 효과는 효과 그래프가 렌더링된 가장 최근의 이전 시간 동안 계산된 쿼리 결과를 유지 또는 캐싱할 수 있다. 이러한 방식으로, 쿼리가 효과 그래프의 상부에서 개시될 때, 조사되고 있는 2개의 경로 사이에 공통인 중간 효과에 도달하는 경우, 효과 그래프의 하부까지 다시 내내 쿼리할 필요가 없다. 즉, 쿼리는 조사되고 있는 경로들 사이에 공통인 첫 번째 효과까지만 후퇴하면 된다. 이러한 효과 그래프의 두 경로 사이의 공통 효과를 찾고 그 포인트에 정보를 캐싱 또는 유지하는 것은 전술한 잠재적인 지수 계산들을 경감시킨다.
효과 그래프를 통한 최초 패스 동안 캐시가 어느 효과에 유지되어야 하는지를 결정하기 위하여(그리고 더 쿼리되지 않을 효과에서의 불필요한 캐싱을 방지하기 위하여), 렌더링이 시작되기 전에 그래프의 사전 렌더링 패스가 수행된다. 사전 렌더링 패스는 픽셀에 대해 임의의 실제 계산이 수행되기 전에 효과 그래프의 어느 영역이 쿼리될 것인지를 식별하며, 렌더링 동안 여러 번 요청될 그 영역의 부분들은 물론 예상될 수 있는 쿼리 인스턴스들의 수를 식별한다. 이어서, 렌더링시, 다수의 쿼리를 요구하는 것으로 식별된 임의의 효과는 최대 횟수로 호출될 때까지 관련 이미지 버퍼 내에 쿼리된 정보를 캐싱할 수 있다. 이 시점에서, 이미지 버퍼는 그 안에 포함된 정보가 다시 요청되지 않을 것이므로 릴리스될 수 있다.
도 4에 도시된 예에서, 혼합 효과 개체(414)는, 블러링 효과 개체(416)가 기입하는 것보다 많은 픽셀을 판독함에 따라 두 가지 상이한 크기를 갖는 이미지 버퍼들에 대해 쿼리된다. 이 경우, 보다 큰 이미지 버퍼가 먼저 요청되고, 제2 요청은 추가 렌더링 없이 만족될 수 있는 것은 행운이다. 그러나, 보다 큰 이미지 버퍼 요청이 보다 작은 이미지 버퍼 요청 뒤에 오는 경우, 이 요청은 쉽게 만족되지 못할 것이다.
렌더링 요청들이 크기 증가 순으로 행해질 때 부적절한 성능을 피하기 위하여, 본 발명의 모델은 사전 렌더링 패스의 성능을 제공한다. 사전 렌더링 패스는 동일 정보에 대한 다수의 쿼리에 종속하는 효과 그래프의 부분들을 식별하는 것과 관련하여 위에서 설명되었다. 사전 렌더링 패스 동안, 각 효과는 또한 유사한 렌더링 요청들을 포함하는 경계 직사각형을 축적한다. 따라서, 후속 렌더링 동안, 효과는 현재의 요청에 대해 필요한 것보다 큰 출력 버퍼를 생성할 수 있어서, 동일 캐시를 이용하여 추가 비용 없이 추가 요청을 만족시킬 수 있을 것으로 예상된다.
이러한 이미지 캐싱은 하나의 문제를 피하지만, 캐시 버퍼들을 보유하기 위해 많은 비디오 메모리가 확보되어야 하고 이들 중 일부는 재사용되지 못할 수 있다는 점에서 다른 문제를 야기한다. 간단한 해결책은, 캐시 버퍼들을 할당하기 위한 시도가 행해져 메모리 초과 예외가 반환될 때마다 최근 최소 사용 방식(least-recently-used basis)으로 캐시 버퍼들을 재요청하는 것일 것이다. 그러나, 이것은 비디오 메모리가 자주 전체 용량이 가동되는 것을 의미하며(이는 비디오 메모리의 임의 다른 사용자에게 바람직하지 않다), 이는 거의 모든 할당에 대해 예외 처리의 오버헤드를 초래한다.
도 5를 참조하면, 각 효과에 대해 도시된 카운트를 가진 효과 그래프의 개략도가 도시되고 참조 번호 500으로 지시되어 있다. 각 효과는 얼마나 많은 커낵터들이 출력에 연결되는지를 카운트하는 그의 출력들 각각과 연관된 카운터를 갖는다. 효과가 그의 입력 버퍼들 중 하나를 이용하여 완료될 때마다, 효과는 대응하는 입력 효과를 요청하여 출력 버퍼를 릴리스하며, 그 출력에 대한 카운터는 감소된다. 카운터가 0에 도달할 때, 효과는 현재의 렌더링 패스 동안 그 출력 버퍼에 대한 더 이상의 요청이 수신되지 않을 것으로 가정하며, 따라서 효과는 그의 출력 캐시를 릴리스한다. 제한된 비디오 카드(GPU) 메모리로 인해 필요한 것보다 많은 임의의 정보를 유지하는 것은 바람직하지 않으므로, 이미지 버퍼들은 단일 렌더링 패스 동안만 유지된다.
효과가 캐시를 갖는 경우에도, 효과는 여전히, 렌더링을 위해 그의 입력 효과들을 필요로 하지는 않지만, 그들에게 그들의 출력 버퍼 캐시들을 릴리스하도록 지시해야 한다. 이것은 효과 카운터들이 적절히 조정되는 것을(결과적으로, 캐시들이 적절히 릴리스되는 것을) 보증하기 위해 필요하다.
렌더링이 완료된 후, 상부 효과는 그래프 내에 단일 캐시만을 유지할 것이다. 실제로, 후술하는 바와 같이, 사용자가 상호작용 렌더링을 가속화하기 위해 추가 캐시들을 유지하기를 원할 수 있는 다른 이유가 존재한다. 본 예는 여기서 간단히 캐싱이 어떻게 지수 렌더링을 방지하는 데 이용될 수 있는지를 설명하기 위해 제공된다.
상호작용 렌더링을 가속화하기 위하여, 하나의 렌더링 패스에서 다음 패스로 변경되지 않은 효과 그래프의 부분들에 대한 캐시들을 유지하는 것이 유용하다. 사용자가 일반적으로 프로젝트를 구축하는 방법은 한 번에 하나의 계층 또는 효과이다(계층들은 후술된다). 사용자는 예를 들어 이미지의 노출을 조정하기 위해 효과를 추가한 후, 이미지의 온도를 조정하기 위해 다른 효과를 추가한 다음, 이미지를 선명화하기 위해 제3 효과를 추가할 것이다. 이러한 효과들의 단계식 추가로 인해, 사용자는 일반적으로 가장 최근에 추가된 효과만을 한 번에 조정하는데, 예를 들어 사용자는 온도 효과를 추가하기 전에 모든 노출 조정을 완료할 것이다. 그러나, 렌더링 패스를 각각 필요로 하는 둘 이상의 노출 조정이 필요할 수 있다.
이러한 일반적인 프로젝트 시나리오를 조정하고, 이전 렌더링 패스 이후 변경되지 않은 효과 그래프의 부분들의 불필요한 재 렌더링을 방지하기 위하여, 효과 기본 클래스는 효과가 최종 렌더링 패스 이후에 변경된 때 설정되는 "오염 플래그"를 포함한다. 사전 렌더링 그래프 트래버스(사전 렌더링 패스) 동안, 오염은 효과 그래프를 통해 위로 전파되어, 오염 효과와 그래프의 루트 사이의 임의 경로 상에 캐시들을 배치한다.
오염은 변경되고 있지 않은 그래프의 부분들에 대한 캐시들을 유지하는 데 사용된다. 임의의 오염 효과는 다음 렌더링 패스에 대해서도 오염 가능성이 높은 것으로 가정된다. 이것은 사용자가 파라미터 값을 조정하거나 한 번에 하나의 효과를 변경하고 있는 경우이다.
예를 들어, 사용자가 도 6의 개략도에 도시된 효과 그래프 내의 블러링 효과와 연관된 마스크 상에 페인팅하고 있는 것을 가정한다. 사전 렌더링 패스 동안, 상부 혼합 효과인 혼합 효과 B(618)는 그가 오염되지 않은 2개의 입력 효과(혼합 효과 A(614) 및 블러링 효과(616)) 및 오염된 제3 입력 효과(마스크 효과(620))를 가짐을 검출한다. 효과가 이러한 그의 입력들 간의 오염 불일치를 검출할 때마다, 효과는 마스크 효과(620)가 다음 렌더링 패스 상에서 변경될 유일한 입력인 것으로 추정하며, 비오염 입력 효과들에게 그들의 캐시들 상에 유지되도록 지시한다. 도시된 시나리오에서, 혼합 효과 B(618)는 블러링 효과(616) 및 혼합 효과 A(614)에게 그들의 캐시들 상에 유지되도록 지시하며, 마스크 효과(620)에게 그의 캐시를 릴리스하도록 지시할 것이다. (이미지 효과(610) 및 레벨 효과(612)는 혼합 효과 A(614)에 대한 입력을 제공하므로 다음 렌더링 패스 상에서 쿼리되지 않을 것이라는 것에 유의한다.) 이러한 선택적인 캐싱은 "크로스 렌더링 캐싱"으로 지칭될 수 있으며, 혼합 효과 B(618) 및 마스크 효과(620)만이 각각의 렌더링 패스 동안 실제 작업을 행하면 되므로 가속화된 상호작용 렌더링과 관련한 성능 향상은 상당하다.
전술한 바와 같이, 크로스 렌더링 캐싱의 이점은 특히, 대부분의 사용자가 그들의 프로젝트를 한 번에 하나의 계층 또는 효과씩 구축하고 일반적으로 효과 그래프의 상부에 있는 그들이 추가한 최종 계층 또는 효과를 통상적으로 조정하는 경우에 흥미롭다. 본 발명의 실시예들의 동적 렌더링 모델에서, 사용자는 임의의 시간에 임의의 계층 또는 효과를 자유롭게 변경한다. 크로스 렌더링 캐싱을 이용하면, 효과 그래프의 상부 근처에서의 조정은 하부 근처에서의 조정보다 빠를 것이다.
크로스 렌더링 캐싱에 있어서, 캐시들은 처리 동작들의 지수적 증가를 피하기 위한 목적의 캐싱과 관련된 경우인 단일 렌더링 패스 동안만이 아니라 특정 디지털 이미지 데이터(즉, 단일 이미지)에 대한 렌더링 동작들 전반에서 유지됨에 유의한다.
효과 그래프에서 "계층들"의 개념은 본 명세서에서 여러 번 언급되고 있다. 본 발명의 실시예들의 효과 그래프 모델에서, 효과들은 "원자성(atomic)" 이미지 처리 요소들이다. 계층들은 흥미로운 시나리오들을 어드레스하는 유용한 방식으로 효과들을 결합한다. 계층들은 효과 그래프를 구축하지만, 이들의 처리 또는 렌더링에 직접 관여하지는 않는다.
계층들이 도움이 되는 이유를 이해하기 위하여, 조정 계층 모델을 고려한다. 다양한 상이한 유형의 조정이 지원되지만, 이들 모두는 마스크 및 혼합 모드를 지원한다는 것을 고려한다. 이것은 마스킹 및 혼합 기능을 개별 효과들로 분할한 후 여러 간단한 효과들을 함께 와이어링하여 달성하고자 하는 복합적인 결과를 달성함으로써 이루어진다. 그러나, 반복되는 편집 유닛들이 존재할 때, 사용자들은 동일 효과들을 함께 반복하여 와이어링해야 하며, 그래프를 최적화하기 위한 국지화된 지능을 개발하기는 어렵다. 예를 들어, 마스크 효과는 비어 있는 경우 생략될 수 있으며, 혼합 효과는 혼합 모드 및 마스크가 존재하지 않는 경우에 생략될 수 있다.
계층들을 표준 이미지 편집 파이프라인들의 생성을 간략화하는 스마트 매크로로서 간주할 수 있다. 실제로, 파이프라인의 개념은 계층들에 의해 도입된다. 계층은 단일 이미지 입력을 취하여 단일 출력을 생성한다. 물론, 계층 내의 효과들은 임의로 복합적인 서브 그래프들로 조직될 수 있다.
계층은 임의의 효과를 취하고, 옵션 마스크에 의해 제어되는 임의의 혼합 모드들에 대한 지원을 추가한다. 일례로, 이것은 도 7에 도시된 개략도와 같이 보이는데, 계층은 일반적으로 참조 번호 700으로 지시된다. 각 계층은 그의 효과들을 소유하며, 이들을 함께 동적으로 와이어링하여 그의 효과 그래프 부분을 생성한다. 이것은 스마트 동적 최적화를 그래프에 적용할 수 있다. 예를 들어, 계층은 그의 효과들이 변경될 때 이벤트들을 수신하므로, 계층이 파라미터를 혼합하는 혼합 효과(710)가 그의 최소값으로 변경되었음을 통지하는 경우, 계층은 그가 구축하는 효과 그래프에서 혼합 효과 및 마스크 효과(712)를 제외할 수 있다.
도 7의 효과 그래프는 혼합 효과(710), 마스크 효과(712) 및 주 효과(714)가 함께 와이어링될 수 있는 가장 일반적인 방법을 나타낸다. 그러나, 계층은 이들 세 효과 사이의 보다 복잡한 관계들을 지원한다. 몇몇 경우에, 마스크 효과는 계층의 입력 이미지에 기초하여 마스크 데이터를 자동으로 생성할 수 있다. 주 효과는 입력 이미지 데이터에 의존하거나 의존하지 않을 수 있다. 몇몇 경우에, 주 효과는 마스크 데이터에 대한 액세스를 필요로 할 수 있다.
완전 연결된 계층은 도 8의 개략도처럼 보일 수 있다. 물론, 계층들은 도 8에 도시된 것보다 훨씬 더 복잡해질 수 있다. 계층들은 임의로 와이어링된 다수의 효과를 가진 개략도에 도시된 효과들 중 임의의 효과를 대체할 수 있다.
단일 채널 이미지 버퍼를 출력하는 효과는 마스크 효과로서 기능할 수 있다. 마스크들은 상수 픽셀 기반 마스크(즉, 단일 채널 이미지 효과) 또는 상수 벡터 기반 마스크(즉, 벡터 기반 데이터를 단일 채널 출력 버퍼로 래스터화함)일 수 있다. 또한, 몇몇 상황에서, 마스크는 입력 데이터로부터 동적으로 생성될 수 있다. 일반적으로, 이것은 소정의 기준, 예를 들어 특정 칼라 범위를 만족시키는 픽셀들의 사용자의 동적 선택에 의해 달성될 수 있다.
예를 들어, 도 8의 마스크 효과를 참조하면, 사용자가 파이프라인에 다가오는 특정 이미지 내의 음영들을 조명하기를 원하는 것으로 가정한다. 따라서, 사용자는 노출 계층을 효과 그래프에 추가하고, 그 계층 상에 마스크를 배치하여, 마스크가 이미지의 음영 영역 내에만 배치되게 한다. 일반적으로, 마스크들은 픽셀 선택들 상에 페인팅되거나 그에 기초하여 첨부되며, 따라서 이들은 정적이다. 그러나, 본 발명의 실시예들에 따르면, 픽셀 데이터 및 마스크들은 사용자가 예를 들어 어두움을 위해 하늘을 선택하는 것을 허가하는 명령을 포함시킴으로써 동적으로 될 수 있다. 이것은 하늘의 특정 칼라 범위의 기준을 만족시키는 픽셀들의 사용자의 동적 선택에 의해 달성될 수 있다. 이어서, 파이프라인이 변경될 때마다(예를 들어, 회전 계층의 추가에 의해), 마스크는 사용자에 의해 다시 페인팅되는 것이 아니라 자동으로 다시 계산된다.
동적 마스킹과 같은 자동 보정이 GPU에서 행해질 수 있는 경우에, 이것은 매우 강력한 시나리오인데, 이는 마스크가 입력 범위와 동일한 해상도로 생성될 것이기 때문이다. 상수 마스크들과 달리, 벡터들의 래스터화 또는 이미지 샘플들의 보간이 필요하지 않다.
동적 마스킹의 주요 이점들 중 하나는 사용자가 파이프라인을 변경하고 적절한 경우에 동적 마스크들을 이러한 변경에 적응하게 하는 것을 동적 마스크들이 허가한다는 점이다. 일례는 레드아이일 것이다. 레드아이는 역포화 효과 계층 상에 퓨필을 배치하기 위해 마스크를 이용하여 퓨필의 영역을 역포함시킴으로써 보정될 수 있다. 마스크의 정적 설정(알고리즘에 의해 레드 픽셀들 상의 선택을 이용하거나 수동으로)은 기반 이미지가 이동(예를 들어, 병진 이동, 회전 또는 스케일링)될 경우에는 실패할 것이다. 그러나, 동적 마스크는 레드 퓨필들이 이미지 내에 있는지를 다시 검출하고 마스크를 재설정할 수 있다.
계층 클래스는 혼합 효과들이 3개의 입력(혼합할 2개의 이미지 플러스 하나의 마스크)을 가질 것으로 예상한다. 각 혼합 알고리즘은 개별 효과 서브클래스로 표현된다. 일반적으로, 공통 기본 클래스를 보증하기에 충분한 공통 코드가 존재할 것이다. 사용자가 계층의 혼합 모드를 변경할 때, 이전 혼합 효과는 폐기되며, 효과 그래프가 재구축될 때, 새로운 혼합 효과가 그 자리를 차지한다.
마스크 효과가 혼합 효과에 연결되지 않은 경우 혼합 효과가 요구되지 않으며(계층의 출력은 단순히 주 효과의 출력이다), 완전 불투명 마스크가 가정된다.
"단일 입력, 단일 출력" 계층 모델은 효과 그래프 구축 프로세스를 상당히 간략화한다. 계층들의 추가 이점은 사용자가 생성한 파이프라인의 구성을 저장하기를 원할 때 명백해진다. 효과 그래프와 관련하여, 저장은 실제로는 달성하기가 상당히 어려운 태스크이다. 각 효과는 그 자신을 직렬화하도록(즉, 그의 설정들 등을 저장하도록) 요청되어야 할 것이며, 이 정보를 이용하여, 효과 그래프는 예를 들어 XML 내로 기술되어야 할 것이다. 그래프가 다수의 계층을 포함하고 이들 각각을 기술할 수 있다는 것을 렌더링 엔진 자체가 알 때 계층 모델은 이를 더 간단하게 한다. 이어서, 계층들은 그들 자신을 기술하도록 요청된다. 각 계층이 내부적으로 구축된 그 각각의 그래프를 갖게 됨에 따라 이 정보는 저장될 필요가 없게 된다.
효과 직렬화에 대한 계층 직렬화의 추가 이점은 계층들이 트리들 내에 있고 효과들이 DAG들일 수 있는(일반적으로는 DAG들이다) 그래프들 내에 있다는 점이다. 트리의 그리디 심도 제1 반복 직렬화가 수행된다(예를 들어, 각 노드에서, 효과는 그의 자식들을 쿼리하여 그들 자신을 기술한 후, 그 자신을 기술할 수 있다). DAG에서, 이것은 효과 DAG들에서 렌더링이 지수적으로 되는 것을 방지하기 위한 캐싱과 관련하여 전술한 것과 동일한 모든 이유로 지수적으로 된다. 따라서, 효과 레벨이 아니라 계층 레벨에서 이러한 문제를 해결하는 것이 훨씬 더 쉽다.
본 발명의 실시예들에 따른 동적 디지털 처리 이미지 모델에서, 데이터가 언제, 어디서 변환되는지는 품질 및 성능 면에서 아주 중요하다. 품질 관계를 이해하기 위하여, 사용자가 통상의 이미지 처리 모델을 이용하여 이미지를 회전시키기를 원하는 것으로 가정한다. 이미지가 원하는 방향에 있는 것으로 결정되면, 렌더링 엔진은 새로운 회전된 값에서 이미지를 다시 샘플링하여 그 데이터로부터 새로운 픽셀 세트를 생성해야 한다. 이어서, 사용자가 이미지를 다시 회전시키는 경우, 통상의 렌더링 엔진은 이전 회전 이전에 이미지가 어디서 시작했는지를 기억하지 못한다. 따라서, 이것은 단순히 이미지를 다시 회전시키며(이전에 이미지가 회전되었음을 알지 못함), 완료시 이미지를 다시 샘플링하여 다시 새로운 이미지를 생성한다. 이 프로세스는 추가 회전 보정이 수행됨에 따라 계속되어, 데이터가 다시 샘플링되고 새로운 이미지가 매번 생성될 수 있다. 이러한 접근 방식의 문제점은 데이터가 다시 샘플링될 때마다 데이터가 열화된다는 점이다.
그러나, 본 발명의 실시예들에 따른 동적 디지털 처리 이미지 모델에서는 모든 조정이 동적이다. 따라서, 사용자가 이미지를 회전시킬 때, 렌더링 엔진은 이미지가 회전된 누적 양을 기억한다. 즉, 렌더링 엔진은 회전 변경을 행하도록 요청될 때마다, 최초 데이터로 되돌아가 회전을 적용한다. 따라서, 이미지가 회전 변경에 이어 재생성될 때, 이미지는 초기 데이터 이미지로부터 한 번만 다시 샘플링된다. 이것은 이미지가 견뎌야 하는 열화의 양을 크게 줄인다.
또한, 이러한 거동은 소정의 회전을 각각 추가하는 프로젝트의 상이한 레벨들에서 상이한 변환들이 존재하는 경우에도 유지될 수 있다. 효과 그래프 전반에서의 모든 변환의 누적 양은 합산되어 한 번만 적용된다. 이러한 적용은, 모든 변환을 누산하고 이들이 적용되기 전에 가능한 한 파이프라인 아래로 멀리 푸시하는 렌더링 엔진 내의 메카니즘이 존재하므로, 통상적으로 파이프라인의 하부 계층 근처에서 수행된다. 이러한 방식으로, 변환들은 정확한 렌더링을 생성하는 데 필요한 최소 수의 픽셀들 상에 필요한 것 이상 자주 수행되지 않는다.
변환들이 효과 그래프를 통해 푸시되는 것을 중지시킬 수 있는 두 가지 사건이 존재한다는 점에 유의해야 한다. 예를 들어, 변환된 픽셀들 상에서 어떻게 동작하는지를 이해하지 못하는 효과를 만날 수 있으며, 따라서 그 특정 효과는 변환되지 않은 이미지 상에서 동작해야 하며, 변환은 효과가 적용된 후에만 적용된다.
이와 같은 상황에 적응하기 위하여, 사전 렌더링 패스 동안, 후술하는 바와 같이 각 효과는 그가 어떤 종류의 변환을 처리할 수 있는지, 어떤 종류의 변환을 처리할 수 없는지를 엔진에게 통지한다.
전술한 바와 같이, 변환들이 언제 발생하는지도 성능 관점에서 중요하다. 효과 그래프 파이프라인에서, 가능한 한 작은 데이터를 처리하는 것이 가장 효율적이다. 사용자가 매우 큰 이미지(예를 들어, 10억 픽셀)를 로딩하여 이 이미지의 편집을 시작하기를 원하는 것으로 가정한다. 이미지의 해상도에서 동작하는 대신(예를 들어, 10억 픽셀 상에서 동작하는 대신), 본 발명의 실시예들의 동적 렌더링 모델은 사용자가 실제로 보고 있는 해상도에서, 예를 들어 이백만 픽셀들 상에서, 또는 사용되고 있는 표시 장치가 이미지를 출력하는 해상도에서 동작한다. 파이프라인 내의 가장 이른 가능한 순간에 이미지의 해상도를 줄임으로써 이후에 이미지를 처리하는 모든 효과가 훨씬 더 작은 데이터의 해상도를 처리하게 하는 것이 바람직하다. 따라서, 효과들은 훨씬 더 빠르게 이미지 상에서 동작할 수 있으며, 훨씬 더 적은 GPU 또는 CPU 이미지 메모리를 사용할 수 있다. 이러한 결과를 가능하게 하기 위해 데이터에 스케일링 팩터가 적용된다는 점에 유의해야 한다. 그러나, 품질 관계와 관련하여 전술한 바와 같이, 스케일링을 처리할 수 없는 효과들, 즉 스케일링된 데이터를 처리하는 방법을 모르는 효과들이 존재할 수 있다. 따라서, 사전 렌더링 패스 동안, 각 효과는 그가 이러한 유형의 정보를 처리할 수 없는지를 엔진에게 알리며, 그러한 효과가 스케일링되지 않은 데이터를 이미 처리한 때까지 스케일링이 발생하지 않을 것이다.
가능한 한 파이프라인 아래로 멀리 변환들을 푸시하는 효과는, 렌더링 엔진이 특정 변환이 효과 그래프 내의 보다 낮은 아래의 다른 변환 위치에서 실제로 적용될 수 있는 것으로 결정한 경우에 사용자가 지정한 위치에서 특정 변환이 발생하지 않는 결과를 낳을 수 있다는 점에 유의해야 한다.
단지 예로서, 사용자가 블러링 효과(5의 픽셀 반경으로 블러링) 및 다운 샘플링 또는 스케일링 효과(10의 팩터로)를 가진 효과 그래프를 생성한 것으로 가정한다. 사용자는 적용될 블러링 반경 및 스케일링된 이미지를 예상할 것이다. 그러나, 실제로는, 다운 샘플링 효과는 변환이므로, 이것이 그래프 아래로 푸시될 수 있는 경우, 이것이 샘플에 먼저 적용된 후, 블러링이 보다 낮은 해상도의 이미지에 적용될 것이다. 블러링 효과는 이 예에서 사용자 관점에서의 동일한 전체 효과를 위해 예를 들어 1/2로 변경되어야 할 것이라는 점에 유의한다. 블러링 효과가 자신이 스케일링된 이미지를 블러링 처리할 수 없음을 렌더링 엔진에게 선언하는 경우, 스케일링 효과는 파이프라인에서 그의 아래로 푸시되지 않을 것이다.
이제, 도 9를 참조하면, 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법(900)을 나타내는 흐름도가 도시되어 있다. 먼저, 블록 910에서 도시된 바와 같이, 복수의 효과 개체가 수신된다. 효과 개체들은 위에서 널리 설명되었으며, 단지 예로서 혼합 효과 개체, 마스크 효과 개체, 블러링 효과 개체 등을 포함할 수 있다. 복수의 효가 개체가 수신되면, 블록 912에 지시된 바와 같이 복수의 효과 개체 중 적어도 일부를 이용하여 효과 개체들이 효과 그래프로 와이어링된다. 효과 그래프는 필요 및/또는 소망에 따라 CPU 메모리, GPU 메모리 및 CPU 메모리와 GPU 메모리의 조합 중 임의의 것을 이용하여 렌더링될 수 있다.
이어서, 블록 914에 지시된 바와 같이, 처리될 디지털 이미지 데이터가 수신된다. 이어서, 디지털 이미지 데이터는 블록 916에 지시된 바와 같이 효과 그래프를 이용하여 처리된다. 일 실시예에서, 디지털 이미지 데이터의 처리는 수신된 디지털 이미지 데이터의 적어도 일부의 비파괴적 처리를 포함할 수 있다. 이어서, 처리된 디지털 이미지 데이터가 적어도 하나의 이미지 버퍼와 관련하여 CPU 메모리 및 GPU 메모리 중 적어도 하나에 저장될 수 있다. 이것은 블록 918로 지시된다.
본 발명의 실시예들에 따른 이미지 버퍼들은 GPU와 CPU 사이에서 자동으로, 사용자 개입 없이 전달될 수 있다는 점에 유의해야 한다. 또한, 본 발명의 실시예들에 따른 이미지 버퍼들은 제1 픽셀 데이터 포맷에서 제2 픽셀 데이터 포맷으로 자동으로, 사용자 개입 없이 변환될 수 있다.
도 10을 참조하면, 본 발명의 일 실시예에 따라 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법(1000)을 나타내는 흐름도가 도시되어 있는데, 디지털 이미지 데이터는 효과 그래프의 하부에서 효과 그래프의 상부로 처리된다. 먼저, 블록 1010에 지시된 바와 같이, 2개의 분기 경로를 시작하는 접점에 위치한 효과 개체를 가진 수직 배향 효과 그래프가 수신된다. 이어서 또는 동시에, 블록 1012에 지시된 바와 같이, 효과 그래프를 이용하여 처리될 디지털 이미지 데이터가 수신된다. 이어서, 블록 1014에 지시된 바와 같이, 효과 그래프의 하부에서 상부로의 효과 그래프의 제1 처리 패스가 2개의 분기 경로 중 첫 번째를 따라 수행된다.
처리 동안, 디지털 이미지 데이터의 적어도 일부가 효과 개체의 출력과 연관된 이미지 버퍼 내에 캐싱된다. 이것은 블록 1016에 지시된다. 이어서, 블록 1018에 지시된 바와 같이, 제2 처리 패스는 효과 개체와 연관된 이미지 버퍼로부터 연장된 효과 그래프의 제2 처리 패스가 수행된다.
도 11을 참조하면, 본 발명의 일 실시예에 따라 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법(1100)을 나타내는 흐름도가 도시되어 있는데, 디지털 이미지 데이터는 효과 그래프의 하부에서 효과 그래프의 상부로 처리된다. 먼저, 블록 1110에 지시된 바와 같이, 수직 배향 효과 그래프가 수신된다. 효과 그래프는 제1 및 제2 효과 개체들을 포함한다. 이어서, 또는 동시에, 블록 1112에 지시된 바와 같이, 효과 그래프를 이용하여 처리될 디지털 이미지 데이터가 수신된다. 이어서, 블록 1114에 지시된 바와 같이, 제1 및 제2 효과 개체들을 포함하는 효과 그래프의 적어도 일부의 제1 처리 패스가 수행된다. 이어서, 블록 1116에 지시된 바와 같이, 디지털 이미지 데이터의 적어도 일부가 제1 효과 개체의 출력과 연관된 이미지 버퍼 내에 캐싱된다.
이어서, 블록 1118에 지시된 바와 같이, 제2 효과 개체와 연관된 하나 이상의 사용자 변경이 검출된다. 이어서, 블록 1120에 지시된 바와 같이, 효과 개체의 출력과 연관된 이미지 버퍼로부터 연장하는 제2 처리 패스가 수행된다.
이제, 도 12를 참조하면, 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법(1200)을 나타내는 흐름도가 도시되어 있다. 먼저, 블록 1210에 지시된 바와 같이, 효과 그래프가 수신된다. 효과 그래프는 디지털 이미지 데이터를 저장하기 위한 관련 이미지 버퍼를 각각 구비한 복수의 효과 개체를 포함한다. 이어서, 또는 동시에, 블록 1212에 지시된 바와 같이, 효과 그래프를 이용하여 처리될 디지털 이미지 데이터가 수신된다. 이어서, 블록 1214에 도시된 바와 같이, 효과 그래프의 사전 렌더링 패스가 수행된다. 이어서, 블록 1216에 지시된 바와 같이, 디지털 이미지 데이터가 효과 그래프를 이용하여 처리된다.
도 13을 참조하면, 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 개체를 처리하기 위한 방법(1300)을 나타내는 흐름도가 도시되어 있다. 먼저, 블록 1310에 지시된 바와 같이, 효과 그래프가 수신된다. 효과 그래프는 디지털 이미지 데이터를 저장하기 위한 관련 이미지 버퍼를 각각 구비한 복수의 효과 개체를 포함한다. 이어서 또는 동시에, 블록 1312에 지시된 바와 같이, 효과 그래프를 이용하여 처리될 디지털 이미지 개체가 수신된다. 이어서, 효과 그래프와 연관된 GPU에서 디지털 이미지 데이터를 처리하기에 충분한 메모리가 이용 가능한지를 판정한다. 이것은 블록 1314에 지시된다. 블록 1316에 지시된 바와 같이, 효과 그래프와 연관된 GPU에 디지털 이미지 데이터를 처리하기에 충분한 이용 가능한 메모리가 존재하는 경우, 디지털 이미지 데이터가 GPU를 이용하여 처리된다. 그러나, GPU에 디지털 이미지 데이터를 처리하기에 충분한 이용 가능한 메모리가 존재하지 않는 것으로 판정되면, 디지털 이미지 데이터의 적어도 일부는 효과 그래프와 연관된 CPU를 이용하여 처리된다. 이것은 블록 1318에 지시된다.
이제, 도 14를 참조하면, 본 발명의 일 실시예에 따라 디지털 이미지 데이터의 처리를 위한 효과 그래프를 생성하기 위한 방법(1400)을 나타내는 흐름도가 도시되어 있다. 먼저, 블록 1410에 지시된 바와 같이, 복수의 논리 효과를 포함하는 관련 논리 효과 서브그래프를 각각 구비한 하나 이상의 효과 계층이 제공된다. 이어서, 블록 1412에 지시된 바와 같이, 디지털 이미지 데이터의 처리에 관한 입력이 수신된다. 이러한 입력은 단지 예로서 계층에 포함된 주 효과의 유형, 계층 인터페이스에 적용되는 설정들(예를 들어, 100%와 동일한 불투명도) 및 다른 설정들 및 특성들을 포함할 수 있다. 이어서, 블록 1414에 지시된 바와 같이, 수신된 입력이 디지털 이미지 데이터의 처리시에 논리 효과들 각각에 갖는 영향력이 결정된다. 이어서, 블록 1416에 지시된 바와 같이, 결정된 영향력에 따라 물리적 효과 서브그래프가 생성된다. 이어서, 블록 1418에 도시된 바와 같이, 물리적 효과 서브그래프를 이용하여 이미지가 렌더링될 수 있다.
도 15를 참조하면, 본 발명의 일 실시예에 따라 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법을 나타내는 흐름도가 도시되어 있다. 먼저, 블록 1510에 지시된 바와 같이, 효과 계층과 연관된 적어도 하나의 마스크 효과 개체를 구비한 효과 그래프가 수신된다. 이어서 또는 동시에, 블록 1512에 지시된 바와 같이, 디지털 이미지 데이터가 수신된다. 이어서, 블록 1514에 지시된 바와 같이, 기준을 만족하는 수신된 디지털 이미지 데이터의 적어도 일부의 선택에 관한 입력이 수신된다. 이어서, 블록 1516에 지시된 바와 같이, 적어도 하나의 마스크 효과 개체가 디지털 이미지 데이터에 적용된다.
일 실시예에서, 청구항 15의 방법은 도 16에 도시된 추가 처리 단계들을 포함할 수 있다. 먼저, 블록 1610에 지시된 바와 같이, 디지털 이미지 데이터의 변경에 관한 입력이 수신된다. 이어서, 블록 1612에 지시된 바와 같이, 수신된 입력에 따라 디지털 이미지 데이터를 변경하여 변경된 디지털 이미지 데이터를 생성한다. 이어서, 블록 1614에 지시된 바와 같이, 적어도 하나의 마스크 효과 개체가 변경된 디지털 이미지 데이터에 적용되고, 적어도 하나의 마스크 효과 개체가 기준을 만족하도록 자동으로 변경된다.
도 17을 참조하면, 본 발명의 일 실시예에 따라 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법(1700)을 나타내는 흐름도가 도시되어 있는데, 디지털 이미지 데이터는 효과 그래프의 하부에서 그의 상부로 처리된다. 먼저, 블록 1710에 지시된 바와 같이, 제1 수직 위치에 위치하는 제1 변환 효과 개체를 구비하는 수직 배향 효과 그래프가 수신된다. 이어서, 블록 1712에 지시된 바와 같이, 제1 변환 효과 개체가 제1 수직 위치보다 효과 그래프의 하부에 더 가까운 제2 수직 위치에서 디지털 이미지 데이터에 적용될 수 있는지를 판정한다. 블록 1714에 지시된 바와 같이, 제1 변환 효과 개체가 제2 수직 위치에서 디지털 이미지 데이터에 적용되지 못할 수 있는 것으로 판정되면, 제1 변환 효과 개체는 제1 수직 위치에서 적용된다.
그러나, 제1 변환 효과 개체가 제2 수직 위치에서 디지털 이미지 데이터에 적용될 수 있는 것으로 판정되면, 제2 수직 위치에 위치하는 변환 효과 개체가 존재하는지를 판정한다. 이것은 블록 1716에 지시된다. 블록 1718에 지시된 바와 같이, 제2 수직 위치에 위치하는 변환 효과 개체가 존재하지 않는 경우, 제1 변환 효과 개체는 제1 수직 위치가 아니라 제2 수직 위치에서 적용된다. 그러나, 블록 1720에 지시된 바와 같이, 제2 수직 위치에 변환 효과 개체가 존재하는 것으로 판정되면, 제1 및 제2 변환 효과 개체들이 제2 수직 위치에서 누적 적용된다.
이제, 도 18을 참조하면, 본 발명의 일 실시예에 따라 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법(1800)을 나타내는 흐름도가 도시되어 있다. 먼저, 블록 1810에 지시된 바와 같이, 초기 변환 값을 가진 디지털 이미지 데이터가 수신된다. 이어서, 또는 동시에, 블록 1812에 지시된 바와 같이, 적어도 하나의 변환 효과 개체를 가진 효과 그래프가 수신된다. 이어서, 블록 1814에 지시된 바와 같이, 수신된 디지털 이미지 데이터가 변환 효과 개체에서 초기 변환 값에서 제1 변환된 변환 값으로 변환된다. 이어서, 블록 1816에 지시된 바와 같이, 디지털 이미지 데이터가 변환 효과 개체에서 초기 변환 값에서 제2 변환된 변환 값으로 변환된다.
위에 비추어, 본 발명의 일 실시예는 디지털 이미지 데이터를 편집하기 위한 시스템에 관련된다. 시스템은 관련 GPU 메모리를 가진 그래픽 처리 유닛(GPU), 및 GPU 메모리를 이용하여 디지털 이미지 데이터의 적어도 일부를 비파괴적으로 편집하기 위한 편집 컴포넌트를 포함한다. 일 실시예에서, 편집 컴포넌트는 GPU 메모리 및 GPU 메모리와 CPU 메모리의 조합 중 하나를 이용하여 수신된 디지털 이미지 데이터의 적어도 일부를 비파괴 편집할 수 있다.
시스템은 디지털 이미지 데이터를 편집하는 데 이용될 수 있는 효과 그래프를 형성하도록 함께 와이어링되는 복수의 효과 개체를 수신하기 위한 효과 그래프 수신 컴포넌트를 더 포함할 수 있다. 또한, 시스템은 편집할 디지털 이미지 데이터를 수신하기 위한 데이터 수신 컴포넌트를 더 포함할 수 있다.
다른 실시예에서, 본 발명은 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법에 관련된다. 이 방법은 복수의 효과 개체를 수신하고, 복수의 효과 개체의 적어도 일부를 함께 효과 그래프로 와이어링하는 단계를 포함하는데, 이 효과 그래프는 CPU 메모리 및 GPU 메모리 중 적어도 하나를 이용하여 와이어링될 수 있다. 일 실시예에서, 수신된 디지털 이미지 데이터의 처리는 디지털 이미지 데이터의 적어도 일부의 비파괴 처리를 포함할 수 있다. 방법은 처리될 디지털 이미지 데이터를 수신하고, 그리고/또는 원하는 대로 효과 그래프를 이용하여 수신된 디지털 이미지 데이터를 처리하는 단계를 더 포함할 수 있다. 또한, 방법은 CPU 메모리 및 GPU 메모리 중 적어도 하나 내에 이미지 버퍼와 관련하여 디지털 이미지 데이터를 저장하는 단계를 포함할 수 있다.
추가 실시예에서, 본 발명은 디지털 이미지 데이터를 처리하기 위한 시스템에 관련된다. 시스템은 처리할 디지털 이미지 데이터를 수신하기 위한 데이터 수신 컴포넌트, 수신된 디지털 이미지 데이터의 처리에 이용할, 복수의 효과 개체를 포함하는 효과 그래프를 취득하기 위한 효과 그래프 취득 컴포넌트, 및 효과 그래프 및 CPU 메모리와 GPU 메모리 중 적어도 하나를 이용하여 디지털 이미지 데이터를 처리하기 위한 처리 컴포넌트를 포함한다. 일 실시예에서, 효과 그래프 취득 컴포넌트는 복수의 효과 개체 중 적어도 일부를 함께 와이어링하여 효과 그래프를 생성할 수 있다. 다른 실시예에서, 처리 컴포넌트는 효과 그래프 및 GPU 메모리 및 GPU 메모리와 CPU 메모리의 조합 중 적어도 하나를 이용하여 디지털 이미지 데이터의 적어도 일부를 비파괴 처리할 수 있다. 원한다면, 시스템은 CPU 메모리 및 GPU 메모리 중 적어도 하나에 디지털 이미지 데이터를 저장하기 위한 저장 컴포넌트를 더 포함할 수 있다.
추가 실시예에서, 본 발명은 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법에 관련되는데, 디지털 이미지 데이터는 효과 그래프의 하부에서 상부로 처리된다. 방법은 2개의 분기 경로를 시작하는 접점에 위치하는 효과 개체를 포함하는 수직 배향 효과 그래프를 수신하는 단계, 효과 그래프를 이용하여 처리할 디지털 이미지 데이터를 수신하는 단계, 2개의 분리 경로 중 첫번째를 따르는 효과 그래프의 하부에 상부로의 효과 그래프의 제1 처리 패스를 수행하는 단계, 및 처리 동안 효과 개체의 출력과 연관된 이미지 버퍼에 디지털 이미지 데이터의 적어도 일부를 캐싱하는 단계를 포함한다.
다른 실시예에서, 본 발명은 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법에 관한 것인데, 디지털 이미지 데이터는 효과 그래프의 하부에서 상부로 처리된다. 방법은 적어도 제1 효과 개체 및 제2 효과 개체를 포함하는 수직 배향 효과 그래프를 수신하는 단계-제2 효과 개체가 제1 효과 개체보다 효과 그래프의 상부에 가까움-, 효과 그래프를 이용하여 처리할 디지털 이미지 데이터를 수신하는 단계, 제1 및 제2 효과 개체를 포함하는 효과 그래프의 적어도 일부의 제1 처리 패스를 수행하는 단계, 및 제1 효과 개체의 출력과 연관된 이미지 버퍼에 디지털 이미지 데이터의 적어도 일부를 캐싱하는 단계를 포함한다. 방법은 제2 효과 개체와 관련하여 사용자 변경을 검출하는 단계를 더 포함할 수 있다.
다른 실시예에서, 본 발명은 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 시스템에 관한 것인데, 디지털 이미지 데이터는 효과 그래프의 하부에서 상부로 처리된다. 시스템은 2개의 분리 경로를 시작하는 접점에 위치하는 효과 개체를 포함하는 수직 배향 효과 그래프를 수신하기 위한 제1 수신 컴포넌트를 포함한다. 시스템은 효과 그래프를 이용하여 처리할 디지털 이미지 데이터를 수신하기 위한 제2 수신 컴포넌트, 효과 그래프의 하부에서 상부로의 처리 패스를 수행하기 위한 제1 처리 컴포넌트, 처리 동안 효과 개체의 출력과 연관된 버퍼 내에 디지털 이미지 데이터의 적어도 일부를 캐싱하기 위한 캐싱 컴포넌트, 및 2개의 분기 경로 중 하나에 따라 효과 그래프의 제2 처리 패스를 수행하기 위한 제2 처리 컴포넌트를 포함하며, 제2 처리 패스는 효과 그래프의 출력과 연관된 이미지 버퍼로부터 연장된다.
다른 실시예에서, 본 발명은 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법에 관한 것이다. 방법은 디지털 이미지 데이터를 저장하기 위한 관련 이미지 버퍼를 각각 구비하는 복수의 효과 개체를 포함하는 효과 그래프를 수신하는 단계, 효과 그래프를 이용하여 처리할 디지털 이미지 데이터를 수신하는 단계, 및 디지털 이미지 데이터의 처리 전에 효과 그래프의 사전 렌더링 패스를 수행하는 단계를 포함한다.
또 다른 실시예에서, 본 발명은 효과 개체를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법에 관한 것이다. 방법은 디지털 이미지 데이터를 저장하기 위한 관련 이미지 버퍼를 각각 구비하는 복수의 효과 개체를 포함하는 효과 그래프를 수신하는 단계, 효과 그래프를 이용하여 처리할 디지털 이미지 데이터를 수신하는 단계, 및 디지털 이미지 데이터를 처리하기 위하여 효과 그래프와 연관된 GPU 내에 충분한 메모리가 이용 가능한지를 판정하는 단계를 포함한다.
또한, 본 발명의 실시예는 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법과 관련된다. 방법은 디지털 이미지 데이터를 저장하기 위한 관련 이미지 버퍼를 각각 구비한 복수의 효과 개체를 포함하는 효과 그래프를 수신하는 단계, 효과 그래프를 이용하여 처리할 디지털 이미지 데이터를 수신하는 단계, 및 복수의 효과 개체와 연관된 이미지 버퍼들 중 하나 이상이 디지털 이미지 데이터의 처리 동안 캐싱되는지를 판정하는 단계를 포함한다.
다른 실시예에서, 본 발명은 디지털 이미지 데이터의 처리를 위한 효과 그래프를 생성하기 위한 방법에 관련된다. 방법은 복수의 논리 효과를 포함하는 관련 논리 효과 서브그래프를 각각 구비하는 하나 이상의 효과 계층을 제공하는 단계, 디지털 이미지 데이터의 처리에 관한 입력을 수신하는 단계, 수신된 입력이 디지털 이미지 데이터의 처리시에 각각의 논리 효과에 대해 갖는 영향력을 결정하는 단계, 및 결정된 영향력에 따라 물리 효과 서브그래프를 생성하는 단계를 포함한다.
또 다른 실시예에서, 본 발명은 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법에 관한 것이다. 방법은 효과 계층과 연관된 적어도 하나의 마스크 효과 개체를 구비한 효과 그래프를 수신하는 단계, 디지털 이미지 데이터를 수신하는 단계, 기준을 만족하는 디지털 이미지 데이터의 적어도 일부의 선택에 관한 입력을 수신하는 단계, 및 수신된 디지털 이미지 데이터에 적어도 하나의 마스크 효과 개체를 적용하는 단계를 포함한다.
또 다른 실시예에서, 본 발명은 디지털 이미지 데이터를 처리하기 위한 시스템과 관련된다. 시스템은 3개 이상의 논리 효과를 포함하는 관련 논리 효과 서브그래프를 각각 구비하는 하나 이상의 효과 계층을 제공하기 위한 제공 컴포넌트, 논리 효과들 각각이 디지털 이미지 데이터의 처리시에 갖는 영향력에 따라 논리 효과 서브그래프를 물리 효과 서브그래프로 변환하기 위한 변환 컴포넌트, 및 물리 효과 서브그래프를 이용하여 이미지를 렌더링하기 위한 렌더링 컴포넌트를 포함한다. 시스템은 추출된 디지털 이미지 데이터를 분석 결과로 변환하기 위한 변환 컴포넌트, 및/또는 원하는 경우에 분석 결과를 주 효과로 전달하기 위한 전달 컴포넌트를 더 포함할 수 있다.
또 다른 실시예에서, 본 발명은 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법과 관련되는데, 디지털 이미지 데이터는 효과 그래프의 하부에서 상부로 처리된다. 방법은 제1 수직 위치에 위치하는 제1 변환 효과를 구비하는 수직 배향 효과 그래프를 수신하는 단계, 및 제1 변환 효과 개체가 제1 수직 위치보다 효과 그래프의 하부에 더 가까운 제2 수직 위치에서 디지털 이미지 데이터에 적용될 수 있는지를 판정하는 단계를 포함한다. 제1 변환 효과 개체가 제2 수직 위치에서 디지털 이미지 데이터에 적용될 수 있는 것을 판정되면, 방법은 제1 수직 위치가 아니라 제2 수직 위치에서 제1 변환 효과 개체를 적용하는 단계를 더 포함할 수 있다. 그러나, 제1 변환 개체가 제2 수직 위치에서 디지털 이미지 데이터에 적용되지 못할 수 있는 것으로 판정되면, 방법은 제1 수직 위치에서 제1 변환 효과 개체를 적용하는 단계를 더 포함할 수 있다.
추가 실시예에서, 본 발명은 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 시스템에 관한 것이다. 시스템은 제1 수직 위치에 위치하는 제1 변환 효과 개체를 구비하는 수직 배향 효과 그래프를 수신하기 위한 수신 컴포넌트, 제1 변환 효과 개체가 제1 수직 위치보다 효과 그래프의 하부에 더 가까운 제2 수직 위치에서 디지털 이미지 데이터에 적용될 수 있는지를 판정하기 위한 판정 컴포넌트, 및 제1 변환 효과 개체가 제2 수직 위치에서 적용될 수 있는 것으로 판정된 경우에 제1 변환 효과 개체를 제1 수직 위치가 아니라 제2 수직 위치에서 적용하기 위한 적용 컴포넌트를 포함한다.
또 다른 실시예에서, 본 발명은 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법에 관한 것이다. 방법은 초기 변환 값을 갖는 디지털 이미지 데이터를 수신하는 단계, 적어도 하나의 변환 효과 개체를 갖는 효과 그래프를 수신하는 단계, 수신된 디지털 이미지 데이터를 적어도 하나의 변환 효과 개체에서 초기 변환값에서 제1 변환된 변환 값으로 변환하는 단계, 및 수신된 디지털 이미지 데이터를 적어도 하나의 변환 효과 개체에서 초기 변환 값에서 제2 변환된 변환 값으로 변환하는 단계를 포함한다.
본 발명의 실시예들은 또한 본 명세서에 설명되는 방법들을 수행하기 위한 컴퓨터 실행가능 명령들을 구비한 하나 이상의 컴퓨터 판독가능 매체는 물론, 방법들을 수행하도록 프로그래밍된 컴퓨터들과 관련된다.
본 발명은 특정 실시예들과 관련하여 설명되었는데, 이는 모든 면에서 제한적이 아니라 예시적인 것을 의도한다. 본 발명의 범위를 벗어나지 않고 대안적인 실시예들이 이 분야의 전문가들에게 자명할 것이다.
전술한 바로부터, 본 발명은 시스템 및 방법에 자명하고 고유한 다른 이점들과 함께 전술한 모든 목표 및 목적을 달성하도록 양호하게 적응된 것임을 알 것이다. 소정의 특징 및 하위 조합들이 유용하고, 다른 특징 및 하위 조합과 관련 없이 이용될 수 있음을 이해할 것이다. 이것은 청구범위의 범위로 간주되고 그 안에 있다.

Claims (20)

  1. 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리 - 상기 디지털 이미지 데이터는 상기 효과 그래프의 하부에서 상부로 처리됨 - 하기 위한 방법으로서,
    제1 수직 위치에 위치하는 제1 변환 효과 개체를 갖는 수직 배향 효과 그래프를 수신하는 단계; 및
    상기 제1 수직 위치보다 상기 효과 그래프의 하부에 더 가까운 제2 수직 위치에서 상기 제1 변환 효과 개체가 디지털 이미지 데이터에 적용될 수 있는지를 판정하는 단계
    를 포함하는 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법.
  2. 제1항에 있어서, 상기 제1 변환 효과 개체가 상기 제2 수직 위치에서 상기 디지털 이미지 데이터에 적용될 수 있는 것으로 판정된 경우, 상기 제1 수직 위치가 아니라 상기 제2 수직 위치에서 상기 제1 변환 효과 개체를 적용하는 단계를 더 포함하는 방법.
  3. 제1항에 있어서, 상기 제1 변환 효과 개체가 상기 제2 수직 위치에서 상기 디지털 이미지 데이터에 적용되지 못할 수 있는 것으로 판정된 경우, 상기 제1 수 직 위치에서 상기 제1 변환 효과 개체를 적용하는 단계를 더 포함하는 방법.
  4. 제1항에 있어서, 제1 변환 효과 개체가 상기 제2 수직 위치에 위치하는 방법.
  5. 제4항에 있어서, 상기 제1 변환 효과 개체가 상기 제2 수직 위치에서 상기 디지털 이미지 데이터에 적용될 수 있는 것으로 판정된 경우, 상기 제2 위치에서 상기 제1 및 제2 변환 효과 개체들을 누적 적용하는 단계를 더 포함하는 방법.
  6. 제1항에 있어서, 상기 효과 그래프는 제1 수직 위치보다 상기 효과 그래프의 하부에 더 가깝고 상기 제2 수직 위치보다 상기 효과 그래프의 상부에 더 가까운 효과 개체를 포함하고, 상기 제1 변환 효과 개체가 상기 제2 수직 위치에서 상기 디지털 이미지 데이터에 적용될 수 있는지를 판정하는 단계는 상기 효과 개체가 상기 제1 변환 효과 개체에 따라 변환된 디지털 이미지 데이터를 처리할 수 있는지에 관한 입력을 수신하는 단계를 포함하는 방법.
  7. 제6항에 있어서, 상기 효과 개체가 상기 제1 변환 효과 개체에 따라 변환된 디지털 이미지 데이터를 처리할 수 있는지에 관한 입력을 수신하는 단계는 상기 효과 개체로부터 입력을 수신하는 단계를 포함하는 방법.
  8. 제6항에 있어서, 상기 제1 변환 효과 개체는 적어도 두 부분을 포함하고, 상기 효과 개체가 상기 제1 변환 효과 개체에 따라 변환된 디지털 이미지 데이터를 처리할 수 있는지에 관한 입력을 수신하는 단계는 상기 효과 개체가 상기 적어도 두 부분 각각에 따라 변환된 디지털 이미지 데이터를 처리할 수 있는지에 관한 입력을 수신하는 단계를 포함하는 방법.
  9. 제8항에 있어서, 상기 효과 개체가 상기 적어도 두 부분 모두보다 적은 것에 따라 변환된 디지털 이미지 데이터를 처리할 수 있음을 지시하는 입력이 수신되는 경우, 상기 효과 개체가 처리할 수 있도록 상기 디지털 이미지 데이터를 변환하는 상기 변환 효과 개체의 부분들만을 상기 제1 수직 위치가 아니라 상기 제2 수직 위치에서 적용하는 단계를 더 포함하는 방법.
  10. 제1항의 방법을 수행하기 위한 컴퓨터 실행가능 명령들을 구비한 하나 이상의 컴퓨터 판독가능 매체.
  11. 제1항의 방법을 수행하도록 프로그래밍된 컴퓨터.
  12. 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 시스템으로서,
    제1 수직 위치에 위치하는 제1 변환 효과 개체를 갖는 수직 배향 효과 그래 프를 수신하기 위한 수신 컴포넌트;
    상기 제1 변환 효과 개체가 상기 제1 수직 위치보다 상기 효과 그래프의 하부에 더 가까운 제2 수직 위치에서 디지털 이미지 데이터에 적용될 수 있는지를 판정하기 위한 판정 컴포넌트; 및
    상기 제1 변환 효과 개체가 상기 제2 수직 위치에서 적용될 수 있는 것으로 판정된 경우에 상기 제1 변환 효과 개체를 상기 제1 수직 위치가 아니라 상기 제2 수직 위치에서 적용하기 위한 적용 컴포넌트
    를 포함하는 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 시스템.
  13. 제12항에 있어서, 상기 효과 그래프는 상기 제1 수직 위치보다 상기 효과 그래프의 하부에 더 가깝고 상기 제2 수직 위치보다 상기 효과 그래프의 상부에 더 가까운 효과 개체를 포함하고, 상기 시스템은 상기 효과 개체가 상기 변환 효과 개체에 따라 변환된 디지털 이미지 데이터를 처리할 수 있는지에 관한 입력을 상기 효과 개체로부터 수신하기 위한 입력 수신 컴포넌트를 더 포함하는 시스템.
  14. 제12항에 있어서, 제2 변환 효과 개체가 상기 제2 수직 위치에 위치하고, 상기 시스템은 상기 제1 및 제2 변환 효과 개체들을 축적하기 위한 축적 컴포넌트를 더 포함하는 시스템.
  15. 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법으로서,
    초기 변환 값을 갖는 디지털 이미지 데이터를 수신하는 단계;
    적어도 하나의 변환 효과 개체를 갖는 수직 배향 효과 그래프를 수신하는 단계;
    상기 수신된 디지털 이미지 데이터를 상기 적어도 하나의 변환 효과 개체에서 상기 초기 변환값에서 제1의 변환된 변환 값으로 변환하는 단계; 및
    상기 수신된 디지털 이미지 데이터를 상기 적어도 하나의 변환 효과 개체에서 상기 초기 변환 값에서 제2의 변환된 변환 값으로 변환하는 단계
    를 포함하는 수직 배향 효과 그래프를 이용하여 디지털 이미지 데이터를 처리하기 위한 방법.
  16. 제15항에 있어서, 상기 제1 및 제2 변환 값들을 지시하는 입력을 수신하는 단계를 더 포함하는 방법.
  17. 제15항에 있어서,
    상기 수신된 디지털 이미지 데이터를 상기 초기 변환 값에서 제1의 변환된 변환 값으로 변환한 후에 상기 수신된 디지털 이미지 데이터를 다시 샘플링하는 단계; 및
    상기 제1 변환 값을 갖는 변경된 디지털 이미지 데이터를 생성하는 단계
    를 더 포함하는 방법.
  18. 제15항에 있어서,
    상기 수신된 디지털 이미지 데이터를 상기 초기 변환 값에서 제2의 변환된 변환 값으로 변환한 후에 상기 수신된 디지털 이미지 데이터를 다시 샘플링하는 단계; 및
    상기 제2 변환 값을 갖는 변경된 디지털 이미지 데이터를 생성하는 단계
    를 더 포함하는 방법.
  19. 제15항에 있어서, 상기 제2 변환 값을, 적어도 부분적으로 상기 초기 변환 값과 상기 제1 변환 값 간의 차를 포함하는 누적 값으로서 계산하는 단계를 더 포함하는 방법.
  20. 제15항에 기재된 방법을 수행하기 위한 컴퓨터 실행가능 명령들을 구비한 하나 이상의 컴퓨터 판독가능 매체.
KR1020077028391A 2005-06-24 2006-06-07 디지털 이미지 처리에서의 효과 그래프를 통한 변환들의축적 KR20080021637A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/166,738 2005-06-24
US11/166,738 US7519233B2 (en) 2005-06-24 2005-06-24 Accumulating transforms through an effect graph in digital image processing

Publications (1)

Publication Number Publication Date
KR20080021637A true KR20080021637A (ko) 2008-03-07

Family

ID=37595654

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077028391A KR20080021637A (ko) 2005-06-24 2006-06-07 디지털 이미지 처리에서의 효과 그래프를 통한 변환들의축적

Country Status (6)

Country Link
US (1) US7519233B2 (ko)
EP (1) EP1897030A2 (ko)
JP (1) JP5254788B2 (ko)
KR (1) KR20080021637A (ko)
CN (1) CN101203864B (ko)
WO (1) WO2007001761A2 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8026920B2 (en) * 2005-09-13 2011-09-27 Microsoft Corporation Extensible visual effects on active content in user interfaces
US7274377B2 (en) * 2005-10-28 2007-09-25 Seiko Epson Corporation Viewport panning feedback system
US7477777B2 (en) * 2005-10-28 2009-01-13 Aepx Animation, Inc. Automatic compositing of 3D objects in a still frame or series of frames
US8107758B2 (en) * 2008-04-16 2012-01-31 Microsoft Corporation Block based image processing
US8370759B2 (en) * 2008-09-29 2013-02-05 Ancestry.com Operations Inc Visualizing, creating and editing blending modes methods and systems
US8225074B2 (en) * 2008-10-02 2012-07-17 Nec Laboratories America, Inc. Methods and systems for managing computations on a hybrid computing platform including a parallel accelerator
AU2009202377A1 (en) * 2009-06-15 2011-01-06 Canon Kabushiki Kaisha Combining overlapping objects
IT201600122898A1 (it) * 2016-12-02 2018-06-02 Ecole Polytechnique Fed Lausanne Epfl Metodi e apparati per codificare e decodificare immagini o flussi video digitali

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4498778A (en) * 1981-03-30 1985-02-12 Technical Arts Corporation High speed scanning method and apparatus
CN1147822C (zh) * 1993-03-25 2004-04-28 Mgi软件公司 图象处理的方法和系统
US5644364A (en) * 1993-04-16 1997-07-01 Avid Technology, Inc. Media pipeline with multichannel video processing and playback
US6357047B1 (en) * 1997-06-30 2002-03-12 Avid Technology, Inc. Media pipeline with multichannel video processing and playback
JP3359401B2 (ja) * 1993-12-02 2002-12-24 富士通株式会社 図形編集装置およびその方法
US5777629A (en) * 1995-03-24 1998-07-07 3Dlabs Inc. Ltd. Graphics subsystem with smart direct-memory-access operation
US5854634A (en) * 1995-12-26 1998-12-29 Imax Corporation Computer-assisted animation construction system using source poses within a pose transformation space
JPH10320573A (ja) * 1997-05-22 1998-12-04 Sega Enterp Ltd 画像処理装置及び画像処理方法
AU4701999A (en) * 1998-06-19 2000-01-05 Equator Technologies, Inc. Decoding an encoded image having a first resolution directly into a decoded image having a second resolution
GB2340361B (en) * 1998-07-31 2002-11-06 Sony Uk Ltd Digital video processing
US6487565B1 (en) * 1998-12-29 2002-11-26 Microsoft Corporation Updating animated images represented by scene graphs
US6429860B1 (en) * 1999-06-15 2002-08-06 Visicomp, Inc. Method and system for run-time visualization of the function and operation of a computer program
JP3321570B2 (ja) * 1999-09-14 2002-09-03 株式会社ソニー・コンピュータエンタテインメント 動画作成方法、記憶媒体およびプログラム実行装置
JP3286633B2 (ja) * 1999-09-14 2002-05-27 株式会社ソニー・コンピュータエンタテインメント 画像作成方法、記憶媒体およびプログラム実行装置
US7050955B1 (en) * 1999-10-01 2006-05-23 Immersion Corporation System, method and data structure for simulated interaction with graphical objects
WO2002088877A2 (en) * 2001-04-26 2002-11-07 Celcorp System and method for the automatic creation of a graphical representation of navigation paths generated by an intelligent planner
GB2392072B (en) * 2002-08-14 2005-10-19 Autodesk Canada Inc Generating Image Data
GB0220138D0 (en) * 2002-08-30 2002-10-09 Kaydara Inc Matte extraction using fragment processors
US8704837B2 (en) * 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations

Also Published As

Publication number Publication date
CN101203864A (zh) 2008-06-18
JP2008544402A (ja) 2008-12-04
WO2007001761A2 (en) 2007-01-04
EP1897030A2 (en) 2008-03-12
US20070008337A1 (en) 2007-01-11
JP5254788B2 (ja) 2013-08-07
US7519233B2 (en) 2009-04-14
CN101203864B (zh) 2011-05-25
WO2007001761A3 (en) 2007-11-01

Similar Documents

Publication Publication Date Title
US7554550B2 (en) Non-destructive processing of digital image data
US20060290705A1 (en) Performing a pre-rendering pass in digital image processing
US7295208B2 (en) Translating layers into effect graphs in digital image processing
US9978115B2 (en) Sprite graphics rendering system
US7619628B2 (en) Caching digital image data
US11676321B2 (en) Graphics library extensions
US8730253B2 (en) Decomposing cubic Bezier segments for tessellation-free stencil filling
US8803896B2 (en) Providing a coherent user interface across multiple output devices
US9881391B2 (en) Procedurally defined texture maps
KR20080021637A (ko) 디지털 이미지 처리에서의 효과 그래프를 통한 변환들의축적
US9245358B2 (en) Systems and methods for generating refined, high fidelity normal maps for 2D and 3D textures
US10319068B2 (en) Texture not backed by real mapping
US8810587B2 (en) Conversion of contiguous interleaved image data for CPU readback
DE102021130031A1 (de) Erscheinungsbildgesteuerte automatische dreidimensionale modellierung
US8823715B2 (en) Efficient writing of pixels to tiled planar pixel arrays
CN113628315B (zh) 射线锥追踪和纹理过滤的技术
Jönsson Real-time rendering of very large 3D scenes using hierarchical mesh simplification

Legal Events

Date Code Title Description
A201 Request for examination
SUBM Surrender of laid-open application requested