KR20010071454A - 컴퓨터 시스템으로의 입력 데이터 제공시 비디오 반사를이용하는 방법 - Google Patents

컴퓨터 시스템으로의 입력 데이터 제공시 비디오 반사를이용하는 방법 Download PDF

Info

Publication number
KR20010071454A
KR20010071454A KR1020007014070A KR20007014070A KR20010071454A KR 20010071454 A KR20010071454 A KR 20010071454A KR 1020007014070 A KR1020007014070 A KR 1020007014070A KR 20007014070 A KR20007014070 A KR 20007014070A KR 20010071454 A KR20010071454 A KR 20010071454A
Authority
KR
South Korea
Prior art keywords
video
display
scene
video data
data signal
Prior art date
Application number
KR1020007014070A
Other languages
English (en)
Other versions
KR100354554B1 (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 KR20010071454A publication Critical patent/KR20010071454A/ko
Application granted granted Critical
Publication of KR100354554B1 publication Critical patent/KR100354554B1/ko

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Processing (AREA)
  • Control Of Indicators Other Than Cathode Ray Tubes (AREA)
  • Position Input By Displaying (AREA)
  • User Interface Of Digital Computer (AREA)
  • Digital Computer Display Output (AREA)

Abstract

비디오 카메라(501) 또는 그 밖의 비디오 소스에 연결되고, 디스플레이(116)를 구비한 컴퓨터 시스템으로의 입력 신호의 제공은, 비디오 카메라(501)에 의해 생성되고 장면을 표현한 비디오 데이터 신호를 포착하고, 이 장면이 디스플레이(116) 상에 반사되어 투명하게 보일 수 있도록 상기 장면을 디스플레이 상에 렌더링하고, 이 장면 내의 객체를 검출하기 위해 비디오 데이터 신호를 분석하고, 이 검출된 객체에 응답하여 컴퓨터 시스템에 대한 입력 신호를 생성함으로써 수행된다.

Description

컴퓨터 시스템으로의 입력 데이터 제공시 비디오 반사를 이용하는 방법{METHOD OF USING VIDEO REFLECTION IN PROVIDING INPUT DATA TO A COMPUTER SYSTEM}
유저(user)로부터의 입력 데이터를 컴퓨터 시스템으로 전달하기 위한 많은 기술 및 장치가 개발되고 있다. 키보드, 커서 이동 장치(예를 들어, 마우스, 트랙볼(trackball) 및 조이스틱(joystick)과 같은), 펜 앤 태블릿(pen and tablet) , 바코드 스캐너(bar code scanner) 및 그 밖의 장치들은 모두 선택된 업무를 수행하도록 컴퓨터에 명령하는데 사용되고 있다. 예를 들어 PC(Personal Computer)와 같은 컴퓨터 시스템에 연결된 비디오 카메라의 사용이 증가함으로써, 새롭고 흥미로운 방식으로 실시간(real-time) 비디오 카메라를 이용할 기회가 많아지고 있다. 그러나, PC 에서의 비디오 데이터에 대한 최근의 많은 애플리케이션(application)들은, 새로운 입력 패러다임(paradigm)의 가능성에 대한 고려없이, 다양한 디스플레이 특징에 집중되어 있다. 가치있는 것은 비디오 카메라의 능력을 이용하여 PC 유저들의 경험을 풍부하게 하고 PC를 보다 용이하게 사용하도록 하는 입력 기술일 것이다.
본 발명은 일반적으로는 컴퓨터 시스템에 관한 것이고, 특히 컴퓨터 시스템으로 입력 데이터를 제공하기 위한 방법에 관한 것이다.
도1은 본 발명의 실시예에 따른 비디오 반사(video reflection)를 설명하기 위한 샘플 디스플레이 부분을 도시한 도면.
도2는 본 발명의 실시예에 따라 OS 출력 그래픽 데이터와 함께 디스플레이된 투명한(transparent) 그래픽 데이터의 일례를 도시한 도면.
도3은 본 발명의 실시예에 따라 투명 방법으로 프로그램 되는데 적합한 샘플 컴퓨터 시스템을 도시한 도면.
도4는 본 발명의 실시예에 따라 투명 그래픽을 구현하기 위한 소프트웨어 및 하드웨어 스택을 도시한 도면.
도5는 본 발명의 실시예에 따라 투명 그래픽을 제공하기 위해 사용된 다수의 프레임 버퍼를 도시한 도면.
도6은 본 발명의 실시에에 따라 투명 그래픽 프레임 버퍼와 OS 출력 프레임 버퍼 간을 믹싱하는 교번 픽셀 기술(alternating pixel technique)을 도시한 도면.
도7은 본 발명의 실시예에 따라 투명 그래픽을 제공하는 시스템을 초기화 하기 위한 순서도.
도8은 본 발명의 실시예에 따른 이중 버퍼링 제어 과정을 보여주는 순서도.
도9는 본 발명의 실시예에 따른 컬러 믹싱 및 인터리빙 과정의 순서도.
도10은 본 발명의 실시예에 따라 비디오 반사 입력 기술을 제공하기 위한 애플리케이션 프로그램의 요소를 도시한 도면.
도11은 본 발명의 실시예에 따른 필터 그래프를 도시한 도면.
도12는 본 발명의 실시예에 따른 필터 초기화 과정의 순서도.
도13은 본 발명의 실시예에 따른 조정 입력 이벤트 과정의 순서도.
도14는 본 발명의 실시예에 따른 유효 입력 이벤트를 검출하는 과정의 순서도.
도15는 본 발명의 실시예에 따라 투명성(transparency)을 구비한 비디오 렌더러(renderer)의 프로세싱 스레드(processing thread)를 기술한 순서도.
도16은 본 발명의 실시예에 따른 투명성 믹서 코어(transparency mixer core)의 프로세싱 스레드를 기술한 순서도.
발명의 요약
본 발명의 실시예는 디스플레이를 구비한 시스템으로 입력 신호를 제공하기 위한 방법에 관한 것이며, 이 시스템은 비디오 데이터 신호의 소스(source)에 연결된다. 이 방법은 비디오 소스에 의해 생성된 비디오 데이터 신호를 포착하는 단계 - 여기서, 상기 비디오 데이터 신호는 장면(scene)을 나타냄 -, 이 장면이 디스플레이 상에 투명하게 보일 수 있도록 상기 장면을 디스플레이 상에 렌더링(rendering)하는 단계, 이 장면 내의 객체를 검출하기 위해 비디오 데이터 신호를 분석하는 단계, 및 검출된 객체에 응답하여 시스템에 대한 입력 신호를 생성하는 단계를 포함한다.
다음의 상세한 설명에서 본 발명의 다양한 양태가 기술된다. 설명을 위해, 특정한 수, 시스템 및 구성이 본 발명의 완전한 이해를 제공하도록 기술된다. 그러나, 이 기술 분야의 통상의 지식을 가진 자에게는 이러한 특정 세부사항 없이 본 발명이 실시될 수 있음이 명백할 것이다. 다른 예에서, 본 발명을 모호하게 하지 않도록 하기 위해 주지된 특징들은 생략되거나 또는 간략화된다.
본 발명의 일실시예는, 예를 들어 PC와 같은 컴퓨터 시스템으로 유저 입력 데이터 신호를 제공하기 위한 방법이다. 실시간 비디오 이미지는 PC에 연결된 비디오 카메라에 의해 포착되거나, 또는 그 외의 다른 비디오 데이터 신호의 소스로부터 수신되어, 이 포착된 비디오 이미지를 투명하게 만들어 디스플레이 상에 나타내도록 PC 디스플레이의 전체 스크린에 렌더링된다. 이 비디오 데이터 신호는, 정규(normal)의 전경(foreground) 디스플레이 이미지를 흐리지 않게 하기 위해, 정규 애플리케이션 프로그램 및 운영체계(Operating System: 이하, "OS"라 약칭함) 소프트웨어 디스플레이 출력 데이터 신호와 믹싱(mixing)된다. 그 결과, 비디오 카메라가 유저쪽을 가리키는 경우, 유저가 데스크탑 아이콘(desktop icons) 또는 애플리케이션 프로그램 디스플레이와 같은 다른 디스플레이 요소들을 보면서 상호 동작(interact)하는 동안에, 그 유저는 컴퓨터 스크린 상에 자신의 반사된 이미지도 볼 수 있게 된다. 이 반사된 이미지는 투명하게 디스플레이되기 때문에, 다른 디스플레이 요소를 디스플레이 하는데 방해를 주지 않는다.
여기서 본 발명의 일부 실시예들이 비디오 카메라를 참조하여 기술되고 있지만, 본 발명은 이에 한정되지 않는다. 대안적 실시예에서, 이 비디오 데이터 신호의 소스는, 예를 들어 비디오 카세트 레코더(VCR), 방송 텔레비전 신호 또는 미리 저장된 비디오 데이터 신호와 같은 어떠한 비디오 소스도 될 수 있다.
본 발명의 일부 실시예들의 특징 중 하나는 유저가 비디오 카메라에 의해 획득된 자신의 반사(reflection) 또는 이미지를 컴퓨터 스크린 상에서 볼 수 있다는 것이다. 이 비디오 반사를 이용하여, 유저는 비디오 카메라의 시야 안에 있는 실제 객체(예를 들어, 유저의 손 및 손가락과 같은)를 물리적으로 이동시킴으로써, 애플리케이션 프로그램 및 컴퓨터 시스템 GUI(Graphical User Interface)의 OS 디스플레이 요소와 상호 동작을 할 수 있다. 본 발명의 일부 실시예들의 입력 특성은 현재의 애플리케이션 프로그램의 수정없이 제공될 수 있다. 본 발명의 실시예에서, 이러한 이동은 유저가 마우스 또는 그 밖의 선택 장치와 함께 사용하여 아이콘 및 그 밖의 애플리케이션 요소를 잡거나 또는 선택하는 것과 같은 컴퓨터 시스템 내의 동작(action)을 명령하는데 사용될 수 있다. 유저의 반사된 이미지를 보면서 요구된 결과를 생성하는 이 물리적 이동 동작은 유저에게 매우 자연스럽고 직관적(intuitive)이다. 예를 들어, 유저가 그것에 대한 많은 생각없이 자신의 손으로 객체를 조작하는 동안, 거울에 반사된 자신의 이미지를 자주 본다. 또한, 통상적으로, 유저가 자신의 반사된 이미지를 보면서, 우성(dominant) 또는 비우성(non-dominant)의 손이나 또는 양 손 모두를 이용하여 동작을 수행하는 것이 용이하다. 대안적 실시예에서, 소정의 특정 프롭(prop)이 컴퓨터 내의 동작을 명령하는 객체로 사용될 수 있다. 이 프롭은 활성(active) 또는 비활성(inactive)일 수 있다. 활성 프롭은 발광 다이오드(LED) 빛과 같은 기계적 또는 전자적 메커니즘을 포함한다. 비활성 프롭은, 예를 들어 채색된 스틱(stick) 또는 패들(paddle), 패브릭 스와치(fabric swatch) 및 채색된 글러브(glove)와 같은 항목(item)일 수 있지만, 본 발명은 이에 대해 명확히 한정되지 않는다.
본 발명의 일부 실시예는 컴퓨터 마우스의 사용을 완전히 대체할 수는 없지만, 이것은 컴퓨터 시스템 내에서 유저 입력을 위한 강력한 새로운 패러다임이다. 특히, 이것은 실제의 객체를 이동시켜 컴퓨터 디스플레이 객체를 조작하는 자연스럽고 직접적인 방법을 제시한다. 다양한 타입의 애플리케이션 프로그램이 이 입력 패러다임의 유익한 사용을 수행하도록 확장될 수 있다. 예를 들어, 컴퓨터 게임에서 증가된 유저 상호 동작을 위해 비디오 반사를 통한 유저 입력을 적용할 수 있다. 유저가 비디오 디스플레이 데이터의 선택된 영역을 지시하는 비디오 프리젠테이션 시스템(video presentation system)을 사용하는데 용이하게 만들 수 있다. 화상 회의 애플리케이션(video-conference application)에서도 추가의 입력 특징을 제공하도록 확장될 수 있다. 특히, 유저와 디스플레이 사이의 거리가 비교적 먼 콤비네이션 PC/TV(combination PC/TV)에서 이 입력 특성을 이용할 수 있다. 또한, 예를 들어, 어린이와 같은 많은 유저를 위해, 실제 객체(자신의 손과 같은)를 조작하여 컴퓨터 시스템으로 입력을 전달하는 것은 다른 통상의 입력 장치보다 더욱 직관적이다.
일실시예에서, 프로세싱 및 디스플레이를 위해 PC로 전송된 비디오 데이터 신호 내의 픽셀의 컬러는 유저의 손과 같은 실제 객체의 이동을 추적하도록 분석될 수 있다. 이것은 유저의 손 또는 손가락에 채색된 점을 붙여서 사용하거나 또는 다른 컴퓨터 비전 방법을 통해 도움받을 수 있다. 선택적으로, 본 발명의 실시예의 컴퓨터 비전 요소가 입력 이벤트 생성기로 인식되는 객체를 분리 및 식별하도록 하기 위해, 독특한 컬러로 특정 객체(예를 들어, 손가락 또는 다른 지원과 같은)를 대체할 수 있다.
일실시예에서, PC 마우스의 커서는 유저의 집게 및 엄지 손가락의 이동에 따라 이동될 수 있다. 유저가 그의 집게 및 엄지 손가락를 집고, 포착된 비디오 이미지 안에서 이 검지 및 엄지 손가락의 이미지가 검출되면, 마우스 다운 이벤트(mouse down event)가 OS 소프트웨어로 발생될 수 있다. 또한, 특정 입력 신호 및 이벤트를 나타내는 그 밖의 이동이 대안의 실시예에서 정의될 수도 있다.
도1은 본 발명의 실시예에 따른 비디오 반사를 예시한 샘플 디스플레이 부분의 도면이다.
이 예에서, 유저의 이미지는 비디오 카메라에 의해 포착되어 투명 방식으로 디스플레이에 렌더링된다. 그리고 나서, 이 유저는 시스템에 대한 입력 신호 및 이벤트를 제공하기 위해, 예를 들어 애플리케이션 프로그램 아이콘과 같은 디스플레이 객체와 상호 동작한다.
본 발명의 일부 실시예의 기본적인 특성은 컴퓨터 디스플레이 상에 다른 디스플레이 데이터 신호의 층(layer) 위에 투명한 디스플레이 데이터 신호(예를 들어, 비디오 카메라에 의해 전송된 비디오 데이터 신호와 같은)의 층을 제공하여, 유저가 두 층을 동시에 명확하고 실질적으로 볼 수 있도록 하는 방법이다. 이 특성은 일반적인 사용에 대해 먼저 기술되고, 그 뒤에 본 발명의 일부 실시예의 입력 검출 방법과 함께 사용하는 것에 대해 기술될 것이다. 본질적으로, 투명한 창(window)을 디스플레이하는 능력은 애플리케이션 프로그램에 사용하기 위한 디스플레이 상에 가용한 최대 스크린 영역을 두 배로 만든다. 일실시예는 하나의 비디오 프레임 버퍼로부터의 픽셀과 다른 비디오 프레임 버퍼로부터의 픽셀을 인터리빙(interleaving)(또는 패턴에서의 교번)함으로써, 투명한 컴퓨터 그래픽 층을 생성하기 위한 방법이다. 이 실시예에서, 제1 프레임 버퍼로부터의 선택 픽셀은 제2 프레임 버퍼로부터의 대응 픽셀과 컬러 평균화함으로써 믹싱되어, 단독으로 공간 다중화(spatial multiplexing)를 사용함으로써 생성되는 "체커보드(checkerboard)" 효과를 감소시킨다. 또한, 상기 인터리빙의 정도가 조정 가능하고, 컬러 평균화가 가중될 수 있기 때문에, 디스플레이되는 이미지의 투명도(degree of transparency)는 제어될 수 있다.
이 실시예에서, OS 소프트웨어에서 사용되는 출력 프레임 버퍼는 이 투명 특징의 제공에 의해 영향받지 않으며, OS는 이 투명 동작을 인지하지 못한다. 따라서, 본 발명의 실시예에 의해 제공된 투명성 결과는 그것을 수행하기 위해 투명성에 대한 애플리케이션 프로그램의 수정을 요하지 않는다. 또한, 애플리케이션 프로그램 및 OS 윈도우에 대한 입력 동작은 투명한 전경 결과에 의해 영향받지 않는다.
본 발명의 실시예는 컴퓨터 그래픽 출력 데이터 또는 비디오 데이터의 적어도 두 개의 프레임 버퍼를 전자 신호의 형태로 결합(combining)함으로써 동작한다. 출력 또는 가시(visible) 프레임 버퍼의 픽셀은 두 입력 프레임 버퍼의 컨텐츠(contents)를 공간적으로 인터리빙 함으로써 생성된다. 이 실시예에서의 인터리빙은 하나의 프레임 버퍼의 픽셀과 다른 프레임 버퍼의 픽셀을 결합함으로써 달성된다. 이것은 서로 겹쳐진 두 개의 디스플레이 이미지의 착시(visual illusion)를 초래한다. 픽셀이 인터리빙됨에 따라, 제1 프레임 버퍼의 픽셀은 곧 대체될 제2 프레임 버퍼의 픽셀과 컬러 평균화된다. 컬러 평균화(color averaging)는 하나의 프레임 버퍼의 픽셀 상에서 이들과 다른 프레임 버퍼의 대응 픽셀과 평균함으로써 수행되는데, 이것은 출력 프레임 버퍼로 인터리빙하기 전에 또는 인터리빙 중에 수행된다. 이 결과는, 예를 들어 컴퓨터 모니터와 같은 디스플레이 상에서 실질적으로 동시에 가시적인 다수의 오버랩 이미지를 포함한다.
도2는 본 발명의 실시예에 따라 OS 출력 그래픽와 함께 디스플레이된 투명 그래픽 데이터의 일례를 도시한 도면이다. OS 출력 프레임 버퍼(10)는 아래의 도3에서 도시된 컴퓨터 시스템의 현재 디스플레이 데이터를 저장하는데 사용되는 메모리 영역이다. 이 OS 출력 프레임 버퍼는 OS에 대해 가용한 어떠한 메모리 내에서 할당될 수 있다. 프레임 버퍼는 2차원의 픽셀 데이터 어레이를 저장하기 위한 저장 장소의 집합이다. 이 OS 출력 프레임 버퍼는 컴퓨터 시스템의 OS 소프트웨어와 결합될 수 있으며, 이것은 컴퓨터 모니터(미도시) 상의 데이터 신호의 생성 및 디스플레이를 제어한다. 일실시예에서, OS 소프트웨어는 마이크로소프트 코퍼레이션사(Microsoft Corporation)의 OS 소프트웨어인 Windows 95?또는 Windows NT?로 구성되었지만, GUI를 지원하는 다른 OS 소프트웨어가 적용될 수도 있다. 이 일례에서, OS 출력 프레임 버퍼(10)는 도2에서 12, 14 및 16으로 각각 표시된 세 개의 오버랩 윈도우에 대한 애플리케이션 프로그램 디스플레이 데이터 신호를 포함한다.
투명 그래픽 프레임 버퍼(18)는 OS 출력 프레임 버퍼의 디스플레이 데이터 신호와 함께 실질적으로 동시에 디스플레이 되기 위한 투명 그래픽의 디스플레이 데이터를 저장하는데 사용되는 메모리 영역이다. 이 메모리 영역은 시스템 내의 가용한 어떤 메모리 내에라도 할당될 수 있다. 투명 그래픽 프레임 버퍼(18)는 비디오 카메라 또는 비디오 데이터 신호의 다른 소스로부터 수신된 비디오 데이터의 프레임을 저장하는데 사용될 수 있다. 도2에 도시된 예에서, 시계(20) 및 스톡 티커(stock ticker)(22)와 같은 디스플레이 요소들이 투명성의 이용을 예시한 샘플 애플리케이션 프로그램 디스플레이 특징으로 도시되었지만, 일반적인 어떠한 디스플레이 요소라도 본 발명에 따른 실시예의 사용을 통해 투명하게 만들어질 수 있다. 특히, 본 발명의 실시예에서, 포착된 비디오 프레임은 디스플레이 상에 투명한 이미지의 시퀀스(sequence)로 나타날 수 있다.
상기 OS 출력 프레임 버퍼 및 투명 그래픽 프레임 버퍼의 디스플레이 요소는 선택된 각 버퍼의 대응 픽셀과 컬러 믹싱함으로써 블록(24)에서 결합되는 동안, 컬러 믹싱 동작의 결과 픽셀과 OS 출력 프레임 버퍼의 픽셀이 인터리빙되어, 가시 디스플레이 버퍼(visible display buffer)(28)의 디스플레이 요소를 형성한다. 이 가시 디스플레이 버퍼는 세 개의 오버랩 윈도우(12, 14, 16)와, 그 윈도우의 겹쳐진 부분의 투명 디스플레이 요소로 나타난 시계(20) 및 스톡 티커(22) 디스플레이와 함께 도시된 형태로 나타난다. 이 예에서, 이 투명한 디스플레이 요소는 다른 디스플레이 요소와 부분적으로 겹쳐진다. 그러나, 투명 디스플레이 요소가 디스플레이 상에서 하나 또는 그 이상의 불투명(non-transparent) 윈도우 또는 디스플레이 요소의 범위 안에 전부 존재할 수 있음을 이해할 수 있을 것이다. 물론, 어떤 애플리케이션 프로그램으로 그리고 어떤 디스플레이 요소로써, 실질적으로 하나 또는 완전히 다른 것의 위의 두 개의 디스플레이 요소로부터의 데이터 디스플레이는 유저에 대해 이미지 품질 문제를 나타낼 수 있다. 그럼에도 불구하고, 다른 애플리케이션 프로그램에서 웰 디자인 방식(well designed manner)으로 투명한 디스플레이 요소를 겹치는 능력은 유익하고 바람직하다.
또한, 본 발명의 일부 실시예는 배경 윈도우(background window)에 겹쳐지는 투명 디스플레이 요소가 선택된 배경 윈도우에 대한 입력 동작에 거의 또는 전혀 영향을 주지 않도록 한다. 예를 들어, 투명한 디스플레이 요소가 배경 윈도우에 일부 또는 전체가 겹쳐질 때, 유저는 배경 윈도우에 디스플레이된 애플리케이션 프로그램의 입력 윈도우를 이용하여 상호 동작할 수 있다. 일반적으로, OS 소프트웨어는, 투명한 디스플레이 요소의 디스플레이에 실질적인 간섭없이, 입력 윈도우(마우스 엔트리(mouse entry) 또는 텍스트 엔트리(text entry)와 같은)에 대한 유저 입력 이벤트 또는 키 조작(strike)을 허용할 수 있다.
본 발명의 일부 실시예에 따라, 투명 결과를 생성하기 위한 방법은 디스플레이 컨텐츠의 최소한의 믹싱을 적용한다. 대신, 컴퓨터 모니터 상에서 인접 픽셀의 컬러 사이를 구별하는 인간 눈의 무능력(inability)에 의존한다(실제로, 인간의 눈은 각 픽셀을 그것의 이웃과 평균함). 픽셀이 이러한 방식으로 인터리빙된 경우, 큰 컴퓨터 모니터 및 낮은 디스플레이 해상도는 "체커보드" 효과를 초래할 수 있으므로, 약간의 믹싱이 적용된다. 일실시예에서, 제1 프레임 버퍼(OS 출력 프레임 버퍼와 같은)로부터의 픽셀의 1/2은 제2 프레임 버퍼(투명 그래픽 프레임 버퍼와 같은)로부터의 대응 픽셀의 1/2과 평균화되고, 이 두 프레임 버퍼의 픽셀은 제3 디스플레이 버퍼로 인터리빙된다. 픽셀의 비율(fraction)을 평균화함으로써, 투명 결과를 제공할 때 사용되는 프로세싱 전력이 감소될 수 있다. 대안의 실시예에서, 픽셀은 상이한 비율(percentage)로 평균화될 수 있고(예를 들어, 픽셀의 1/4, 픽셀의 1/8, 픽셀의 1/16, 픽셀의 1/32 또는 픽셀의 1/N, 여기서 N은 양의 정수), 그 비율은 능동적으로 변경될 수 있다.
도3은 본 발명에 따른 유저 입력 신호를 획득하기 위해 비디오 반사와 함께 투명 디스플레이를 생성하기 위한 방법의 실시예에 따라 프로그램되는데 적합한 샘플 컴퓨터 시스템을 도시한 도면이다. 샘플 시스템(100)은 예를 들어 여기서 요구되는 방법에 대한 프로세싱을 실행하는데 사용될 수 있다. 샘플 시스템(100)은 인텔 코퍼레이션사(Intel Corporation)의 PENTIUM?, PPENTIUM?Pro 및 PENTIUM?Ⅱ프로세서 기반의 컴퓨터 시스템을 나타내지만, 그 밖의 시스템(그 밖의 프로세서를 구비한 PC, 엔지니어링 워크스테이션(engineering workstation), 셋탑 박스 등을포함한)이 사용될 수도 있다. 샘플 시스템(100)은 프로세서 버스(105)를 통해 서로 연결된 마이크로프로세서(102)와 캐시 메모리(104)를 포함한다. 샘플 시스템(100)은 또한 고성능 I/O 버스(108) 및 표준 I/O 버스(118)를 포함한다. 프로세서 버스(105) 및 고성능 I/O 버스(108)는 호스트 브리지(host bridge)(106)에 의해 연결되는 반면, 고성능 I/O 버스(108)와 표준 I/O 버스(118)는 I/O 버스 브리지(110)에 의해 연결된다. 주 메모리(112)와 비디오 메모리(114)는 고성능 I/O 버스(108)에 연결되고, 비디오 디스플레이(116)는 비디오 메모리(114)에 연결된다. 대용량 기억 장치(120)와 키보드 및 지시 장치(122)는 표준 I/O 버스(118)에 연결된다. 일실시예에서, 비디오 카메라(501)는 또한 표준 I/O 버스(118)에 연결된다.
이들 요소들은 이 기술 분야에서 주지된 각각의 종래 기능들을 수행한다. 특히, 대용량 기억장치(120)는 본 발명에 따라 비디오 반사의 이용을 통해 유저 입력 신호를 획득하기 위한 방법의 실시예에 대한 실행가능 명령어를 장기간(long-term) 저장을 제공하는데 사용될 수 있고, 주 메모리(112)는 마이크로프로세서(102)에 의해 실행되는 본 발명에 따른 비디오 반사의 이용을 통한 유저 입력 신호를 획득하기 위한 방법의 실시예를 위한 실행가능 명령어를 보다 짧은 기간동안 저장하는데 사용된다.
도4는 본 발명의 실시예에 따른 투명 그래픽을 구현하기 위한 소프트웨어 및 하드웨어 스택을 도시한 도면이다. 투명한 디스플레이 객체를 이용하도록 설계된 애플리케이션 프로그램(200)은 투명한 디스플레이 객체를 정의 및 갱신하기 위한 투명성 지원 소프트웨어(202)에 의해 제공된 기능을 호출한다. 이 실시예에서는,이에 응답하여, 투명성 지원(202)은 OS 그래픽 렌더링 프로그래밍 인더페이스(그래픽 API)(204)를 호출한다. Windows95?OS 에서, 이것은 그래픽 장치 인터페이스(Graphic Device Interface: "GDI")일 수 있다. 또한, 이 실시예에서, 상기 투명성 지원 소프트웨어(202)는 OS의 비디오 하드웨어 제어 추상화(abstraction) 프로그래밍 인터페이스(비디오 제어 API)(206)를 호출한다. Windows95?OS 에서, 이것은 마이크로 코퍼레이션사의 DirectDrawTMAPI일 수 있다. 일부 OS에서, 그래픽 API(202) 및 비디오 제어 API(206)는 동일한 애플리케이션 프로그래밍 인터페이스 내에 존재하기 때문에 서로 구분이 불가능할 수 있다. 이 그래픽 API(204)는 도2에 도시된 투명 그래픽 프레임 버퍼(18)로 요구된 그래픽을 렌더링하는데 사용될 수 있다. 비디오 제어 API(206)는 프레임 버퍼 가시성(visibility)을 제어하고 모든 프레임 버퍼의 내용을 액세스하는데 사용될 수 있다. 이 실시예에서, 그래픽 API(204) 및 비디오 제어 API(206)는 비디오 카드(210)와 통신하기 위해 디스플레이 드라이버 소프트웨어(208)와 상호 동작한다. 비디오 카드(210)는 도3의 시스템에서의 비디오 디스플레이(116)를 제어한다. 비디오 카드는 디스플레이 데이터를 획득하기 위해 비디오 메모리(114)에 액세스한다. 투명성을 적용하지 않은 그 밖의 애플리케이션 프로그램(212)은 디스플레이 객체를 생성 및 갱신하기 위해 그래픽 API(204)와 상호 동작한다.
일반적으로, 이미지는 비디오 메모리(114) 내의 픽셀 데이터의 프레임 버퍼를 생성함으로써, 예를 들어 컴퓨터 모니터와 같은 디스플레이 상에 디스플레이될수 있다. 이 프레임 버퍼는 비디오 제어 API(206)에 의해 비디오 메모리의 가시 부분(visible portion)으로 설계될 수 있다. 만일, 비디오 메모리의 충분한 가용량, 다수의 프레임 버퍼가 정의된다면, 이것 중 단지 하나만이 현재의 가시적 디스플레이를 구성하기 위한 데이터 신호를 획득할 때(비디오 카드(210)에 의해) 사용된다. 주지된 이중 버퍼링 기술에서, 제1 프레임 버퍼가 "가시(visible)" 버퍼로 간주되고, 비디오 카드(210)가 현재 디스플레이 데이터 신호를 획득하기 위해 이로부터 데이터 신호를 판독하는 동안, 제2 프레임 버퍼(또는 "비가시(non-visible)" 버퍼)는 새로운 디스플레이 데이터로 기록된다. 그리고 나서, 이 실시예에서, 비디오 제어 API는 제2 프레임 버퍼를 가시 버퍼로 지정하고, 제1 프레임 버퍼를 비가시 버퍼로 지정함으로써, 프레임 버퍼를 "플립(flip)"하도록 호출된다. 이 기술의 사용은 디스플레이 데이터의 원할한 갱신을 제공하여, 그 결과 유저에 대해 미적으로 만족스러운 디스플레이를 제공한다. 본 발명의 실시예들은 정규 디스플레이 데이터와 결합하여 투명한 디스플레이 데이터 신호를 제공하기 위해 여분의 프레임 버퍼를 적용하도록 이 개념을 확장할 수 있다.
도5는 투명 그래픽을 제공하기 위한 다수의 프레임 버퍼의 실시예를 도시한 도면이다. 비디오 메모리의 적어도 하나의 지정된 부분이 컴퓨터 모니터 상에 동시에 가시적으로 디스플레이 되도록 할당될 수 있다. 이것은 "가시 디스플레이(visible display)"라고 불린다. 즉, 가시 디스플레이는 유저가 볼 수 있도록 컴퓨터 모니터 상에 현재 디스플레이된 비디오 메모리 영역으로부터의 디스플레이 데이터를 포함한다. 일반적으로, 이 실시예에서 OS 소프트웨어의 그래픽API(204)는 데이터 신호를 OS 출력 프레임 버퍼(10)에 기록한다. 현재 대부분의 시스템에서, 비디오 메모리(114) 내에 존재하는 OS 출력 프레임 버퍼는 가시 디스플레이를 위해 사용되고 있다. 그러나, 본 발명의 실시예에서는, 다른 프레임 버퍼가 가시 디스플레이로서 사용될 수 있다. 비디오 메모리(114) 또는 다른 액세스 가능 메모리 내에 모두 존재하는 제1 작업 프레임 버퍼(300) 및 제2 작업 프레임 버퍼(302)는 본 발명에 따른 디스플레이 데이터를 저장한다. 이 실시예에서, 각 프레임 버퍼는 픽셀 데이터 신호 어레이를 저장한다. 이 실시예에서의 어레이의 크기는 시스템의 현재 디스플레이 특성에 의존한다. 프레임 버퍼 어레이의 크기는, 예를 들어 680 픽셀 ×480 픽셀, 800 픽셀 ×600 픽셀, 또는 1280 픽셀 ×1024 픽셀이거나 또는 컴퓨터 모니터 및 OS 소프트웨어 설정에 따라 알맞은 크기일 수 있다. 각 픽셀은 적(R), 녹(G), 청(B), 및 선택적으로 불투명도(opacity)(A) 요소를 포함한다. 대안적으로, YUV 또는 YUVA 와 같은 다른 컬러 코딩 구조가 사용될 수도 있다. 이 실시예에서, 주 메모리(112) 또는 비디오 메모리(114) 내에 존재하는 다수의 투명 그래픽 프레임 버퍼(18, 19)는 투명성 지원 소프트웨어(202), 비디오 제어 API(206) 및 그래픽 API(204)에 의해 생성된 투명 디스플레이 데이터 신호를 저장한다. 이 투명 그래픽 프레임 버퍼(18, 19)는 투명하게 디스플레이된 이미지에 대한 빠른 갱신을 제공하는 작업 프레임 버퍼와 유사하게 "이중 버퍼링(double-buffered)"된다.
일실시예에서, 투명 그래픽 프레임 버퍼(18, 19)로부터의 데이터 신호는 OS 출력 프레임 버퍼(10)로부터의 데이터 신호와 컬러 믹싱 및 인터리빙 되고 나서,작업 프레임 버퍼 중의 하나에 저장된다. 대안의 실시예에서, 이 믹싱은 알파 블렌딩(alpha blending)을 위한 회로와 협력하여 달성될 수 있다. 작업 프레임 버퍼가 "비가시" 상태일 때, 상기 믹싱 및 인터리빙된 데이터가 작업 프레임 버퍼에 저장되어 진다(즉, 이 실시예에서 프레임 버퍼에 저장된 데이터는 컴퓨터 모니터 상에 현재 디스플레이 되지 않는다). 작업 프레임 버퍼 중의 하나가 비가시 상태에서 기록되고 있는 동안, 다른 작업 프레임 버퍼는 "가시" 상태가 되어 현재의 디스플에이 데이터 소스로 사용된다. 작업 프레임 버퍼에 대한 컬러 믹싱 및 인터리빙 동작이 완료되면, 비가시 작업 프레임 버퍼가 가시 작업 프레임 버퍼로 지정되고, 그 반대의 경우도 마찬가지이다. 이 실시예에서 작업 프레임 버퍼의 이중 버퍼링은 초당 적어도 8-15번의 비율로 반복된다. 추가적으로, 이 실시예에서의 투명 그래픽 프레임 버퍼의 사용은 또한 이중 버퍼링된다. 이 실시예에서, 현재 수정되는 프레임 버퍼 상에서 컬러 믹싱이 수행되지 않기 때문에, 투명 그래픽 프레임 버퍼의 이중 버퍼링이 적용되고, 믹싱되는 프레임 버퍼는 동시에 갱신되지 않을 수 있다. 이중 버퍼링이 없으면, 디스플레이된 이미지 내에 에러가 발생하거나 또는 불필요한 프로세싱 지연이 발생될 수 있다.
본 발명의 일부 실시예에서, 투명 그래픽 프레임 버퍼와 OS 출력 프레임 버퍼 중 하나의 픽셀의 인터리빙은 다음과 같이 수행된다. 일실시예에서, 투명 그래픽 프레임 버퍼 픽셀값과 공간적으로 대응하는 OS 출력 프레임 버퍼 픽셀값을 믹싱함으로써, 선택된 작업 프레임 버퍼 내의 선택적 픽셀들이 기록 되어진다. 선택된 작업 프레임 버퍼 내의 나머지 픽셀들은 OS 출력 프레임 버퍼로부터의 픽셀과 같이기록 되어진다. 다른 실시예에서, OS 출력 프레임 버퍼로부터의 픽셀은 선택된 작업 프레임 버퍼로 전송되는 블록이고, 투명 그래픽 프레임 버퍼로부터의 픽셀은 선택된 작업 프레임 버퍼의 픽셀과 이어서 공간적으로 다중화되고 컬러 평균화된다. 다른 실시예에서, 이 믹싱은 알파 블렌딩을 수행하기 위한 비디오 카드 상의 회로와 협력하여 수행될 수 있다. 알파 블렌딩을 위해 사용된 회로를 이용하는 경우, 인터리빙은 필요하지 않다는 것을 주목하자.
도6은 투명 그래픽 프레임 버퍼와 OS 출력 프레임 버퍼 중의 하나 간을 믹싱하는 픽셀을 선택하는 방법 중 하나의 실시예를 도시한 도면이다. 선택된 작업 프레임 버퍼 내의 "T+OS Mix"는 선택된 투명 그래픽 프레임 버퍼(T값)로부터의 픽셀과 OS 출력 프레임 버퍼(OS값)로부터의 픽셀과의 컬러 평균화된 믹싱을 포함한다. 선택된 작업 프레임 버퍼 내의 "OS" 픽셀은 OS 출력 프레임 버퍼로부터 복사된 공간상 대응 픽셀을 포함한다. 이 실시예에서, 컬러 평균화는 두 프레임 버퍼 내의 대응 위치로부터의 각 픽셀의 각 컬러 요소 상에서의 가중 평균화 구조(weighted averaging scheme)를 통해 수행될 수 있지만, 다른 실시예에서는 상이한 컬러 믹싱 기술이 적용될 수도 있다. 일실시예에서, 가중 평균화는 제1 픽셀의 요소값과 가중치를 곱하고 제2 픽셀의 동일한 요소값과 상이한 가중치를 곱합으로써 달성된다. 그리고 나서, 두 개의 가중된 컬러 요소는 함께 더해지고, 그 결과 합은 상기 두 개의 가중치의 합으로 나누어진다. 이 방법이 알파 블렌딩으로 알려져 있다. 이러한 교번 패턴(alternating pattern)을 이용하여, 투명한 결과를 생성하도록 적용된 프로세싱은, 예를 들어 프레임 버퍼의 모든 픽셀을 믹싱하는 것에 비해 반으로 줄여질 수 있다. 이 실시예에서, 비디오 메모리 내의 픽셀 데이터 이동은 드로잉(drawing) API 또는 비디오 제어 API에 의해 제공되는 블록 전달 동작에 의해 수행될 수 있다.
다른 실시예에서, 믹싱된 픽셀은 사용된 특정 인터리빙 패턴에 따라 선택된 작업 프레임 버퍼 내 픽셀의 1/4, 1/8 또는 1/N(여기서, N은 양의 정수)과 같은 그 밖의 비율을 포함할 수 있다. 또한, 그 밖의 실시예에서, 이 인터리빙 패턴은 수정될 수 있다. 예를 들어, 인터리빙 패턴은 투명 그래픽 프레임 버퍼와 OS 소프트웨어 프레임 버퍼로부터 수평으로 교번되는 라인을 포함할 수 있다. 대안적으로, 이 인터리빙 패턴은 투명 그래픽 프레임 버퍼와 OS 소프트웨어 프레임 버퍼로부터 수직으로 교번되는 라인을 포함할 수 있다. 체커보드 패턴의 조합 및 수평 또는 수직으로 교번되는 라인이 사용될 수도 있다. 이 기술 분야에 통상의 지식을 가진 자는 본 발명의 실시예에서 투명한 결과의 정도가 변경되는 다양한 인터리빙 패턴이 사용될 수 있음을 이해할 것이며, 본 발명은 어떠한 특정 패턴으로 그 범위가 한정되지 않는다.
본 발명의 다른 실시예에서, 인터리빙 패턴은 시간적으로 주기적 또는 비주기적인 비율, 또는 미리 설정된 방식으로 변경될 수 있다. 제1 인터리빙 패턴은 투명 그래픽 프레임 버퍼의 제1 생성을 위해 사용되고, 제2 인터리빙 패턴은 투명 그래픽 프레임 버퍼의 다음의 제2 생성을 위해 사용하기 위해, 예를 들어 상술한 상이한 인터리빙 패턴 중 어떤 두 개의 사용이 선택될 수 있다. 이 과정이 반복되어, 하이브리드 공간적(hybrid sptial), 컬러-믹싱된, 및 일시적인 투명성 방법을 구현하게 된다.
다른 실시예에서, 소프트웨어로 픽셀을 믹싱해야하는 필요성을 없애기 위해 특별한 목적의 회로가 사용될 수 있다.
결과적인 투명성 출력 내의 팽창(stretching) 또는 수축(shrinking) 결과를 얻기 위해, 투명 프레임 버퍼 내의 각 픽셀은 한 번 이상 사용되거나 또는 전혀 사용되지 않을 수 있다는 것을 주목해야 한다. 재사용 또는 생략 픽셀의 주파수 및 위치는 요구된 팽창 또는 수축량의 적어도 일부분에 의존한다.
도7은 투명 그래픽을 제공하는 시스템을 초기화하기 위한 실시예를 도시한 순서도이다. 블록(400)에서, OS 디스플레이 출력 제어 정보가 결정된다. 이 제어 정보는 디스플레이 크기, 컬러 해상도 및 그 밖의 데이터를 포함한다. 다음으로, 블록(402)에서, 두 개의 작업 프레임 버퍼가 이 실시예의 비디오 메모리 내에 할당된다. 이 동작은 이 실세예의 비디오 제어 API로의 호출에 의해 수행될 수 있다. 블록(404)에서, 정상적으로 가시 OS 출력 프레임 버퍼로부터의 데이터를 두 작업 프레임 버퍼 중 선택된 하나로 복사하기 위해, 블록 전달 동작이 수행 되어진다. 이 예에서는 제2 작업 프레임 버퍼가 먼저 선택되는 것으로 가정했지만, 제1 작업 프레임 버퍼도 역시 초기 작업 프레임 버퍼로 사용될 수 있다. 이 블록 전달은 이 실시예에서의 비디오 제어 API로의 호출에 의해 수행될 수 있다. 블록(406)에서, 비디오 제어 API에 대한 호출에 의해 OS 출력 프레임 버퍼가 "비가시" 상태로 설정되어 진다. 블록(408)에서, 선택된 작업 프레임 버퍼(예를 들어, 제2 작업 프레임 버퍼)가 비디오 제어 API에 대한 호출에 의해 볼 수 있게 될 수 있다. 일부 실시예에서, 블록(406) 및 블록(408)은 비디오 제어 API에 대한 단일 호출에 의해 수행될 수 있다. 이 때, 비디오 카드의 현재 디스플레이 출력 데이터는 OS 출력 프레임 버퍼가 아닌 선택된 작업 프레임 버퍼로부터 획득될 수 있다. 대안적 실시예에서, 동일한 결과를 만들기 위해 다른 API 가 역시 사용될 수 있다.
도8은 이중 버퍼링 제어 프로세싱의 실시예를 나타낸 순서도이다. 이 실시예에서, 시작 블록(410) 후, 비디오 제어 API에 대한 호출에 의해 OS 출력 프레임 버퍼를 비가시 제1 작업 프레임 버퍼로 복사하기 위해, 블록 전달 동작이 블록(412)에서 수행 되어진다. 블록(414)에서, 제1 작업 프레임 버퍼와 투명 그래픽 프레임 버퍼의 선택된 하나의 믹싱 및 인터리빙된 컨텐츠를 제1 작업 프레임 버퍼에 기록하기 위한 동작이 수행된다. 블록(416)에서, 제1 작업 프레임 버퍼가 가시 상태가 되고, 제2 작업 프레임 버퍼가 비가시 상태가 되어, 결과적으로, 두 프레임 버퍼를 현재의 디스플레이 출력 데이터 소스로 플립(flipping)하게 된다. 블록(418)에서, 비디오 제어 API에 대한 호출에 의해 OS 출력 프레임 버퍼를 비가시 제2 작업 프레임 버퍼로 복사하는 블록 전달 동작이 수행된다. 블록(420)에서, 제2 작업 프레임 버퍼와 투명 그래픽 프레임 버퍼 중 선택된 하나의 컬러 믹싱 및 인터리빙된 컨텐츠를 제2 작업 프레임 버퍼에 기록하기 위한 동작이 수행된다. 상기 선택된 투명 그래픽 프레임 버퍼는 블록(414)에서 이미 선택된 투명 그래픽 프레임 버퍼일 수 있다. 블록(422)에서는, 제2 작업 프레임 버퍼가 가시 상태가 되고, 제1 작업 프레임 버퍼가 비가시 상태가 되어, 결과적으로 두 프레임 버퍼를 현재의 디스플레이 출력 데이터 소스로 플립하게 된다. 이 과정은 블록(412)로 되돌아가 반복될 수 있다. 이전의 각 블록 중에, OS 소프트웨어는 추가의 디스플레이 데이터를 OS 출력 프레임 버퍼에 동시에 기록할 수 있다.
블록(414) 및 블록(420)의 컬러 믹싱 및 인터리빙 동작의 실시예가 도9를 참조하여 더 기술된다. 블록(426)에서, 현재 비가시(제1 또는 제2) 작업 프레임 버퍼의 메모리 위치가 현재 선택된 투명 그래픽 프레임 버퍼의 기준점(예, 점 M304)에 대해 결정된다. 블록(428)에서, 현재 비가시 작업 프레임 버퍼로부터의 픽셀의 데이터 신호값이 판독되고, 현재 선택된 투명 그래픽 프레임 버퍼로부터 공간적으로 대응하는 픽셀이 결정된다. 투명 그래픽 프레임 버퍼 이미지는 작업 프레임 버퍼의 부분에 적합하도록 팽창 또는 수축될 수 있기 때문에, 이 대응은 반드시 1:1 비율이 아닐 수 있다. 이 픽셀 대응 결정은 이 기술 분야에서 주지된 것이며, OS 소프트웨어에서의 팽창 블록 전달(예로, Window95?OS 에서의 StretchBlt)에 공통으로 사용될 수 있다. 다음으로, 이 실시예에서의 블록(430)에서, 작업 프레임 버퍼로부터의 픽셀과 현재 선택된 투명 그래픽 프레임 버퍼로부터의 픽셀을 가중 평균이 계산된다. 개별 픽셀 요소의 가중 평균은 컬러 요소 마다 컬러 요소 상에서 결정된다. 즉, 적(red) 요소가 평균화되고, 청(blue) 요소가 평균화되고, 녹(green) 요소가 평균화될 수 있다. 각 요소에 대해 주어지는 가중치는 픽셀의 결과적 투명도를 결정하지만, 동일한 가중치가 임의의 픽셀의 모든 요소에 대해 사용될 수 있다. 픽셀에 연관된 가중치는 투명성 레벨의 적어도 일부분에 영향을 준다. 이 가중치는 다양한 믹싱 비율을 수행하는 투명성을 적용한 애플리케이션 프로그램에 의해 조정될 수 있다. 또한, 이 투명성에 적용된 애플리케이션 프로그램은 유저가 직접 또는간접적으로 믹싱 비율을 제어하도록 하는 유저 인터페이스 소자를 제공할 수 있다.
가중 평균화 계산의 결과는 처리되고 있는 현재 픽셀로서 블록(432)에서의 작업 프레임 버퍼 내의 동일한 위치로 배치될 수 있다. 블록(434)에서, 현재 인터리빙 패턴(예로, 각 두 번째 픽셀, 각 네 번째 픽셀, 수평 또는 수직으로 교번된 라인 등)을 고려하여, 처리될 작업 프레임 버퍼 내의 다음의 위치가 결정된다. 블록(436)에서, 작업 프레임 버퍼 및 현재 선택된 투명 그래픽 프레임의 다른 픽셀이 처리되어야 한다면, 프로세싱은 블록(428)에서 다음의 픽셀에 계속된다. 그렇지 않으면, 컬러 믹싱 및 인터리빙 프로세싱은 블록(438)에서 종료된다.
대안적 실시예에서, 픽셀의 믹싱은 알파 블렌딩 회로를 이용한 비디오 제어 API 블록 전달을 통해 수행될 수 있다.
도10은 본 발명의 실시예에 따른 비디오 반사 입력 기술을 제공하는 애플리케이션 프로그램의 요소들을 예시한 도면이다. 비디오 데이터 신호(500)는 도3에 도시된 바와 같은 컴퓨터 시스템에 연결된 비디오 카메라(501), 또는 다른 어떤 비디오 소스에 의해 생성될 수 있다. 비디오 카메라는 표준 I/O 버스(118)에 연결되고, 대용량 기억 장치(120) 또는 주 메모리(112)에 저장될 비디오 데이터 신호(500)를 제공한다. 비디오 데이터 신호가 컴퓨터 시스템(100) 안에 들어오면, 이것들은 마이크로프로세서(102)에 의해 실행되는, 예를 들어 도10의 애플리케이션 프로그램(502) 및 필터 그래프 관리자(504)와 같은 프로그램에 의해 처리되게 된다. 도10을 다시 참조하면, 애플리케이션 프로그램(502)은 유저에 대해 요구된 기능성(functionality)을 제공하도록 설계된다. 최소한, 본 실시예에서의 애플리케이션 프로그램은 비디오 반사의 사용을 통한 유저 입력 특성을 제공하도록 설계된다. 이 애플리케이션 프로그램은 컴퓨터 시스템의 프로세서에 의해 실행되는 다른 애플리케이션 프로그램(미도시) 및 OS 소프트웨어(미도시)와 상호 동작할 수 있다. 애플리케이션 프로그램(502)이 본 발명의 일부 실시예에 따른 비디오 반사 사용을 통한 유저 입력 선택 특성을 제공하도록 설계된 경우, 이 애플리케이션 프로그램은 필터 그래프 관리자(504), 필터 초기화(506), 조정 입력 이벤트(508), 필터 그래프(510) 및 COM 인터페이스(512)를 포함한다.
일실시예에서, 필터 그래프(510)는 마이크로소프트 코퍼레이션사의 ActiveMovieTMAPI(DirecShowTM또는 DirectMediaTMAPI로도 알려진)의 필터 그래프 구조의 일부로서 생성될 수 있지만, 다른 실시예에서는 그 밖의 API가 사용될 수 있느며, 본 발명의 이에 대하여 그 범위가 제한되지 않는다. ActiveMovieTM은 멀티미디어 데이터 신호의 스트림 뿐만 아니라 이 구조를 사용하는 실행 시간 환경 소프트웨어(run-time environment software)를 제어 및 처리하여, 유저가 다양한 주지의 데이터 포맷으로 인코딩된 디지털 비디오 및 사운드를 PC 상에서 재생할 수 있도록 한다. 이 재생 능력은 마이크로 코퍼레이션사의 DirectXTMAPI 집합을 지원하는 비디오 및 오디오 하드웨어 카드를 이용하지만, 다른 API가 역시 사용될 수 있으며, 본 발명은 이에 대해 그 범위가 제한되지 않는다. ActiveMovieTM구조는 필터 그래프(510)에 호출된 구성에 연결되는 필터에게 호출된 모듈러 소프트웨어 요소(modular software component)를 이용하여 시간 표시(time-stamped) 멀티미디어 데이터 스트림을 제어 및 처리하는 방법을 정의한다.
필터 그래프 관리자(504)라 불리는 소프트웨어 객체는 필터 그래프(510)가 어떻게 어셈블링되는지, 그리고 데이터가 이 필터 그래프를 통해 어떻게 이동되는지를 제어하기 위해 애플리케이션 프로그램(502)에 의해 액세스된다. 이 예시된 필터 그래프 관리자는 필터 그래프를 생성하고 관리한다. 필터 그래프는 비디오 데이터 신호를 처리하기 위한 적어도 하나의 주문 필터(custom filter)를 포함한다. 이 필터 그래프 관리자(504)는 필터 그래프와 애플리케이션 프로그램(502) 간의 통신을 가능하게 하기 위해, COM(Component Object Moder) 인터페이스(512)의 집합을 제공한다. 애플리케이션 프로그랜(502)은 멀티미디어 데이터 스트림의 프로세싱을 제어하거나 또는 필터 이벤트를 검색하기 위해 필터 그래프 관리자 COM 인터페이스를 호출하게 된다. 애플리케이션 프로그램(502)은 연결된 비디오 카메라(501)로부터 입력되는 비디오 데이터 스트림을 처리하기 때문에, 이 실시예에서의 필터 그래프 관리자 및 필터 그래프는 이 애플리케이션 프로그램으로 결합된다. 다른 실시예에서는, 이 필터 그래프 관리자는 애플리케이션 프로그램에 독립된 개별 프로그램일 수 있다.
일실시예에서, 필터 그래프 구조의 모든 요소들은 COM 객체로 구현될 수 있다. 이것은 이를 통해 데이터 신호가 통과되는 필터 및 필터들 간의 연결을 제공하고 메모리를 배치하는 필터 요소들은 포함한다. 각 객체는 하나 또는 그 이상의 인터페이스를 구현하며, 이것의 각각은 절차(method)로 호출된 기 정의된 함수 집합을 포함한다. 일반적으로, 애플리케이션 프로그램(502)은 인터페이스를 연결하는 객체와 통신하기 위한 절차를 호출한다. 예를 들어, 이 애플리케이션 프로그램은 멀티미디터 데이터 스트림을 시작하는 런(Run) 절차와 같은, 필터 그래프의 객세 상의 IMediaControl 인터페이스 상의 절차를 호출할 수 있다. 그리고 나서, 필터 그래프 관리자는 필터 그래프(510)의 각 필터에 의해 연결된 IFilter 인터페이스 상에서 Run 절차를 호출한다.
필터 그래프(510)는 상이한 타입의 필터 집합을 포함할 수 있다. 대부분의 필터는 세 타입 중 하나로 분류될 수 있다. 소스 필터는 디스크 상의 파일, 위성 공급(satellite feed), 인터넷 서버 또는 비디오 카메라(501)와 같은 몇몇 소스로부터 데이터 신호를 수신하여, 이 데이터 신호를 필터 그래프로 보낸다. 변환 필터는 이 데이터 신호를 수신하여 처리하고, 이들을 다른 필터를 통해 통과시킨다. 렌더링 필터는 이 데이터 신호를 렌더링한다. 통상적으로, 처리된 데이터 신호는 컴퓨터 디스플레이와 같은 하드웨어 장치로 렌더링될 수 있지만, 이 데이터는 또한 미디어 입력(예를 들어, 메모리 또는 디스프 파일과 같은)을 받아들이는 어떠한 위치에도 렌더링될 수 있다.
일반적으로, 필터 그래프는, 예를 들어, 비디오 데이터와 같은 멀티미디어 데이터를 필터를 통해 스트리밍하도록 이용될 수 있다. 멀티미디어 데이터 스트림에서, 하나의 필터는 필터 그래프 내의 다음의 필터로 멀티미디어 데이터 다운스트림을 전달한다. 필터 그래프를 동작시키기 위해, 필터들은 소정의 순서로 연결되고, 멀티미디어 데이터 스트림은 소정의 순서로 시작 및 정지된다. 필터 그래프 관리자는 필터를 연결하고, 멀티미디어 데이터 스트림을 제어한다. 멀티미디어 데이터 스트림의 제어는 멀티미디어 데이터 스트림의 시작, 일시정지 또는 정지, 특정 기간 동안 데이터 스트림의 재생, 또는 데이터 스트림 내의 특정 지점 검색 등을 포함한다. 이 필터 그래프 관리자(504)는 애플리케이션 프로그램(502)이 이 동작을 지정하도록 하고, 그리고 나서 이를 수행하기 위해 필터 상의 적절한 절차를 호출한다. 또한, 이 필터 그래프 관리자는 필터가 애플리케이션 프로그램이 검색해야하는 이벤트 통지를 알리도록 한다. 이러한 방식에서, 이 애플리케이션 프로그램은, 멀티미디어 데이터가 이 필터 그래프를 통해 흐르고 나서, 이 필터 그래프 내에 설치된 애플리케이션 프로그램의 상태를 검색할 수 있다.
프로세싱 초기화 동안, 애플리케이션 프로그램(502)은 필터 그래프 관리자(504)가 이 필터 그래프를 기술한 그래프 파일(미도시)을 로드하도록 명령한다. 이 필터 그래프 관리자는 필터 초기화(506)로부터 검색된 그래프 파일 및 필터 동작 커맨드(command)을 바탕으로 필터 그래프(510)를 생성한다. 이 필터 동작 커맨드는 이름으로 필터를 지정하고, 필터에 대한 입력 및 제어 파라미터를 지정한다. 비디오 데이터(500)가 필터 그래프를 통해 스트리밍되고, 지정된 필터에 따라 처리될 때, 이벤트 통지(윈도우 메시지로도 알려진)가 COM 인터페이스(512)를 통해 필터 그래프로부터 조정 입력 이벤트(508)로 전송된다. 일실시예에서, 이 입력 이벤트는 마우스 다운 이벤트 또는 마우스 업 이벤트가 되도록 결정될 수 있다. 다른 실시예에서, 이 입력 이벤트는 비디오 데이터 스트림의 필터 그래프의 프로세싱 중에 검출된 어떠한 유저 입력 선택일 수 있다. 조정 입력 이벤트(508)는 이벤트 통지를 검색하고, 애플리케이션 프로그램(502)에 대해 이것을 조정한다. 일부 실시예에서, 이 조정 입력 이벤트(508)는 요구된 기능을 수행하기 위해 애플리케이션 프로그램 내의 다른 요소에 대한 호출을 포함할 수 있다.
도11은 본 발명에 따른 필터 그래프를 도시한 도면이다. 이 실시예서, 상기 필터 그래프는 비디오 포착 필터(520), 티 필터(tee filter)(522), 선택적 제1 및 제2 컬러 공간 변환기 필터(524, 526), 투명성 필터를 이용하는 비디오 렌더러(video renderer)(528), 컬러 분석기 필터(530) 및 블롭 검출기(blob detector)(532)를 포함하지만, 본 발명은 이에 대해 제한되지 않는다. 비디오 포착 필터(520)는 연결된 비디오 카메라 또는 다른 비디오 소스로부터 PC에 의해 수신된 비디오 데이터 신호의 개별 프레임을 포착한다. 비디오 데이터 신호의 각 프레임은 티 필터(522)로 전달된다. 이 티 필터는 이 비디오 데이터 신호를 실질적으로 유사한 2개의 데이터 스트림으로 분리한다. 이 데이터 스트림 중 하나는 제1 컬러 공간 변환기 필터(524)로 전달되고, 다른 하나는 제2 컬러 공간 변환기(526)로 전달된다. 제1 컬러 공간 변환기는, 비디오 데이터 신호의 컬러 공간을 시스템 디스플레이 컬러 공간과 유사하게 하기 위해, 제1 데이터 스트림을 변환한다. 일실시예에서, 비디오 데이터 신호의 픽셀 포맷은 비디오 카드 픽셀 포맷(예를 들어, 16 비트 RGB 컬러 또는 24비트 RGB 컬러)에 정합되어야 한다. 상기 제1 컬러 공간 변환기 필터로부터 변환된 데이터는 투명 필터를 구비한 비디오 렌더러(528)로 전달된다. 투명 필터를 구비한 비디오 렌더러(528)는 상기 제1 데이터 스트림을 도4 내지 도9에서 상술한 바와 같은 투명 방식으로 디스플레이 상에 렌더링한다. 또한, 비디오데이터 신호는, 장면의 한쪽에 있는 객체를 디스플레이의 동일한 쪽에 나타내도록 하기 위해(사실상, 이 장면은 디스플레이 상에 거울처럼 나타남), 각 프레임의 세로의 중심 라인에 대해 변환 또는 플립(flipping)될 수 있다.
이 실시예에서, 제2 컬러 공간 변환기 필터(526)는 제2 데이터 스트림을 상기 제2 데이터 스트림의 각 픽셀에 대해 RGBA 컬러 포맷으로 변환하는데, 여기서, 알파값은 여분의 픽셀 정보를 가지도록 사용될 수 있다. 제2 컬러 공간 변환기 필터로부터 변환된 데이터는 컬러 분석기 필터(530)로 전달될 수 있다. 이 컬러 분석기 필터는 제2 데이터 스트림의 픽셀을 분석하고, 특정 알파"A" 값 내에 지정된 컬러 범위 안의 픽셀값을 태깅(tagging)한다. 더해진 태그 정보를 갖는 제2 데이터 스트림은 블롭 검출기 필터(532)로 전달된다.
이 블롭 검출기 필터는 데이터 스트림을 분석하고, 소정의 알파값를 갖는 픽셀 블록을 찾아서, 애플리케이션 프로그램(502)의 제어 윈도우에 대해 이벤트 통지(예로, 메시지)를 알린다. 이 애플리케이션 프로그램은 이 이벤트 통지를 조정 입력 이벤트 함수(508)로 전달한다. 일실시예에서, 이 블롭 검출기 필터는 태깅된 소정 컬러의 실질적으로 근접한 블록을 찾도록 설정될 수 있다. 블록은 컬러의 블롭으로 또한 알려져 있다. 여기서, 블롭은 독특한 컬러를 갖는 소정의 물리적 특성을 가지며, 픽셀의 그룹으로서 디지털적으로 표현될 수 있다. 이 블록 검출기 필터는 이 검출된 블롭이 보고되는 특정 윈도우 조정을 알린다. 일실시예에서, 블롭 검출기 필터에 의해 비디오 데이터 스트림 내에서 블롭이 검출되고, 조정 입력 이벤트가 이 블롭이 집합 또는 소정의 기준에 다다른 것을 알리는 경우, 소정 패턴의블롭이 입력 이벤트가 되도록 결정된다. 비디오 데이터 스트림(즉, 현재의 비디오 프레임 내의) 내의 블롭의 위치는 또한 조정 입력 이벤트(508)로 전달될 수 있다.
도11에 도시된 실시예에서는, 블롭 검출기 필터 및 컬러 분석기 필터가 분리된 필터로 도시되어 있지만, 대안의 실시예에서는 이들 필터의 기능들이 하나의 필터로 결합되거나, 또는 비디오 렌더러 필터와 결합될 수 있다. 이 분야의 통상의 지식을 가진 자는 이러한 필터의 다양한 조합이 사용될 수 있음이 이해될 것이며, 본 발명은 이에 한정되지 않는다.
도12는 본 발명의 실시예에 따른 필터 초기화 프로세싱의 순서도를 도시한 도면이다. 일반적으로, 필터 초기화(506)는 필터 그래프 관리자(504)가 필터 그래프(510)를 생성 및 초기화 하고, 비디오 데이터 신호의 흐름이 비디오 필터로 시작되도록 명령한다. 블록(540)에서, 필터 초기화는 필터 그래프 관리자가 필터 그래프를 생성하도록 명령한다. 블록(542)에서, 투명 필터를 갖는 비디오 렌더러(video renderer)는 필터 그래프 내에 위치할 수 있다. 필터의 위치는 IFilter COM 인터페이스가 필터 이름 및 구성 인터페이스를 기반으로 검색되어 필터를 통해 획득됨을 의미한다. 다음으로, 블록(544)에서, 투명 필터를 구비한 비디오 렌더러의 초기화 파라미터가 설정된다. 예를 들어, 요구된 불투명도의 레벨은 다음의 비디오 데이터 신호 프로세싱을 위해 설정될 수 있다. 그 밖의 초기화 파라미터는 미러링(mirroring) 세팅 및 인터리빙 패턴을 포함한다. 블록(546)에서, 컬러 분석기 필터는 필터 그래프 내에 위치할 수 있다. 블록(548)에서, 비디오 데이터 스트림 내에서 컬러 분석기 필터에 의해 추적되는 픽셀의 컬러 범위 및 대응 알파값이설정된다. 예를 들어, 손가락 입력 이벤트를 추적하는 실시예에서, 컬러 분석기 필터가 소정 범위의 컬러값을 갖는 비디오 데이터 스트림 안의 픽셀을 태깅하기 위해, 이 손가락의 컬러 범위 및 알파값이 설정된다. 블록(550)에서, 블롭 검출기 필터는 필터 그래프 내에 위치한다. 블록(552)에서, 제어 윈도우 식별자, 알파값 및 대응하는 제어 메시지가 블롭 검출기 필터 내에 설정된다. 블록(554)에서, 필터 그래프를 통해 비디오 데이터 신호 흐름이 개시된다.
비디오 데이터 신호가 필터 그래프를 통해 흐르고 나면, 윈도우 메시지에 호출된 이벤트 통지가 블롭 검출기 필터(532)로부터 조정 입력 이벤트(508)에 의해 검색된다. 도13은 본 발명의 실시예에 따른 조정 입력 이벤트 프로세싱의 순서도를 도시한 도면이다. 프로세싱은 블록(560)에서 윈도우 메시지 준비 지시를 기다리면서 시작된다. 만일, 윈도우 메시지 준비 이벤트가 수신되지 않으면, 조정 입력 이벤트는 잠재적 입력 이벤트(potential input event)가 수신될 때까지 대기를 지속한다. 윈도우 메시지가 수신된 경우, 잠재적 입력 이벤트인지를 판단하기 위해 추가의 프로세싱이 수행될 수 있다. 블록(562)에서, 블록 검출기 필터에 의해 제1 블롭 타입 이벤트가 검출되었는지를 판단하기 위해 윈도우 메시지를 확인한다. 일실시예에서, 제1 블롭 타입은, 예를 들어 검지 손가락과 같이 비디오 프레임 내에서 발생하는 소정의 물리적 가공물(artifact)과 관련되고, 제2 블롭 타입은, 예를 들어 엄지 손가락과 같이 비디오 프레임 내에서 발생하는 다른 물리적 가공물과 관련되지만, 이 분야의 통상의 지식을 가진 자는 다양한 물리적 가공물 및 객체, 그리고 그들과 부합되는 컬러가 다양한 실시예에서 입력 지시자로 사용될 수 있음을 이해할 것이다. 이 실시예에서, 두 개의 구별되는 컬러가 지시자로 사용되었지만, 다른 실시예에서는 다른 수의 컬러가 적용될 수도 있다. 이 실시예에서, 만일, 제1 블롭 타입이 검출되면, 블록(564)에서, 비디오 데이터 스트림의 현재 비디오 프레임 내의 제1 블롭 타입의 크기 및 위치가 제1 타입 리스트로 표시된 데이터 구조 내에 기록 되어진다. 그리고 나서, 프로세싱은 다른 잠재적 입력 이벤트를 기다리도록 지속된다.
블록(562)에서, 만일 제1 블롭 타입이 검출되지 않으면, 프로세싱은 블록(566)에서, 블롭 검출기 필터(532)에 의해 제2 블롭 타입이 검출되었는지를 판단하기 위해 윈도우 메시지를 검사한다. 만일, 제2 블롭 타입이 검출되었다면, 블록(568)에서, 비디오 데이터 스트림의 현재 비디오 프레임 내의 제2 블롭 타입의 크기 및 위치가 제2 타입 리스트로 표시된 데이터 구조 안에 기록 되어진다. 만일, 제2 블롭 타입이 검출되지 않았다면, 프로세싱은 블록(570)에서, 블롭 검출기 필터에 의해 프레임 지시자의 끝이 검출되었는지를 판단하기 위해 윈도우 메시지를 검사한다. 프레임 지시자의 끝이 검출되었다면, 블록(572)은 현재의 비디오 프레임 내에서 유효한 입력 이벤트가 검출되었는지를 판단하기 위해 처리된다. 블록(572) 이후, 프로세싱은 블록(560)에서 다른 윈도우 메시지를 기다리도록 지속된다. 프레임 지시자의 끝이 검출된 경우, 프레임의 프로세싱 중에 검출된 블롭은 블롭 리스트 안에 저장된다. 일실시예에서, 제1 타입 및 제2 타입 리스트는 비디오 데이터 스트림 내에 표현되는 가능한 두 개의 상이한 물리적 객체의 발생을 저장한다. 다른 실시예에서는, 이 비디오 데이터 스트림 내에 표현된 물리적 객체의 대응 수를추적하기 위해, 어떤 수의 리스트가 사용될 수 있다.
만일, 프레임 지시자의 끝이 검출되지 않았다면, 블록(574)에서, 애플리케이션 종료 메시지가 수신되었는지를 판단하기 위해 윈도우 메시지를 확인한다. 만일, 애플리케이션 종료 메시지가 수신되었다면, 블록(576)에서, 필터 그래프가 정지되고, 블록(578)에서, 필터 그래프가 삭제되며, 블록(580)에서 애플리케이션 프로그램(502)은 종료(exit)하게 된다. 그렇지 않으면, 애플리케이션 종료 메시지가 수신되지 않아, 블록(560)에서 프로세싱은 윈도우 메시지를 기다리도록 지속된다.
도14는 유효한 입력 이벤트를 검출하기 위한 프로세싱의 순서도이다. 유효 입력 이벤트 프로세싱을 검출하는 시작점에서, 완전한 비디오 프레임이 필터 그래프에 의해 처리되고, 애플리케이션 프로그램(502)은 비디오 프레임 내에서 발생하는 적어도 2개의 블롭 리스트를 가진다. 일실시예에서, 이 두 리스트는 제1 블롭 타입 및 제2 블롭 타입 리스트이며, 각 리스트는 블롭 컬러 영역 공간을 표현한다. 그리고 나서, 유효 입력 이벤트 검출 프로세싱은 가장 가까운 블롭 쌍을 찾기 위해 블롭을 검색하는 단계를 포함한다. 선택된 임계 거리보다 가까운지를 판단하기 위해 각 쌍을 테스트한다. 만일, 하나 이상의 쌍이 검출되면, 이 가장 가까운 쌍은 다음의 프로세싱을 위해 사용된다. 블록(600)에서, 유효 입력 검출 프로세싱은 제1 블롭 타입의 끝에 다다랐는지를 판단한다. 만일, 제1 블롭 타입의 끝에 다다르지 않았다면, 블록(602)은 현재의 제1 블롭 타입에 대해 비디오 프레임 내에가 가장 가까운 제2 블롭 타입 내의 블롭을 찾고, 이 가장 가까운 제2 블롭 타입의 제2 블롭 타입 리스트 내의 인덱스를 제1 블롭 타입 리스트의 현재의 엔트리에 기록한다.이 실시예에서, 근사성(closeness)은 비디오 프레임의 2차원 평면에서의 두 블롭의 중심 사이의 공간적 거리로 정의된다. 블록(604)에서, 제1 블롭 타입 리스트 안의 다음의 엔트리가 처리되기 위해 선택된다. 블록(600)에서, 프로세싱은 다음의 제1 블롭 타입에 대해 지속된다. 만일, 블록(605)에서, 가용한 쌍이 없는 경우, 적합한 플래그 또는 다른 지시자가 제1 블롭 타입 리스트의 현재 엔트리 안에 설정된다.
제1 블롭 타입 리스트의 끝에 다다른 경우, 블록(606)은 제1 블롭 타입 리스트 내에서 가장 가까운 제1 블롭 타입/제2 블롭 타입 쌍을 찾도록 수행된다. 만일, 블록(608)에서, 가장 가까운 쌍이 임계 거리 이하인 경우, 블록(610)은 검출된 입력 이벤트를 컴퓨터 시스템의 OS 소프트웨어로 전달하도록 수행된다. 그리고 나서, 이 OS 소프트웨어는 필요에 따라 이 입력 이벤트를 다른 애플리케이션 프로그램으로 전달할 수 있다. 일실시예어서, 현재 비디오 프레임의 블롭의 위치가 매핑(map)되거나, 또는 입력 이벤트를 전하기 전에 스크린 좌표(규격화된 마우스 좌표)로 변환된다. 블록(610)에서, 만일, 가장 근접한 쌍이 임계 거리보다 크다면, 블록(611)은 다른 입력 이벤트를 OS 소프트웨어로 전달하도록 수행된다. 다음으로, 블록(612)에서, 제1 타입 블롭 리스트 및 제2 타입 블롭 리스트가 리셋된다. 유효 입력 이벤트 명령 프로세싱은 블록(614)에서 종료된다.
유저의 손가락의 이동을 검출함으로써 입력 이벤트를 조정하는 예를 기술하였지만, 이 분야의 통상의 지식을 가진 자는 상이한 컬러 및 이동의 많은 다른 물리적 객체가 입력 이벤트를 나타내기 위해 사용될 수 있음을 이해할 것이며, 본 발명은 여기에 도시된 특정예의 방식에 의해 그 범위가 한정되지는 않는다. 추가로,이 실시예에서, 리스트는 블롭 정보를 저장하는데 사용된다. 다른 실시예에서, 다른 데이터 구조가 사용될 수 있고, 블롭 쌍을 판단하기 위해 데이터 구조의 다른 검색 기술도 역시 사용될 수 있다.
도15는 본 발명의 실시예에 따라, 투명성을 갖는 비디오 렌더러의 프로세싱 스레드를 기술하기 위한 순서도이다. 투명 프로세싱을 구비한 비디오 렌더러는 블록(700)에서 시작한다. 블록(702)에서, 비디오 제어 API 객체(예를 들어, DirectDrawTM객체와 같은), 3개의 비디오 프레임 버퍼 및 제2 스레드가 생성된다. 블록(704)에서, 만일, 투명 그래픽 프레임 버퍼가 존재하기 않거나, 그 크기가 하나 또는 그 이상이 변경되었다면, 신규의 투명 그래픽 프레임 버퍼가 생성되고, 두명 그래픽 프레임 버퍼의 제1 버퍼가 현재 활성 프레임 버퍼로 표시된다. 블록(706)에서, 현재 활성 투명 그래픽 프레임 버퍼에 대한 그래픽 디스플레이 인터페이스(GDI) DC(Display Context)가 생성된다. 블록(708)에서, 비디오 렌더러가 블록(706)에서 생성된 투명 DC 상에 비디오 데이터 신호를 드로잉하는데 GDI가 사용된다. 다음으로, 블록(710)에서, 현재 비활성 투명 그래픽 프레임 버퍼가 활성으로 표시되고, 활성 투명 그래픽 버퍼가 비활성으로 표시된다. 블록(712)에서, 투명 DC가 삭제된다. 블록(714)에서, 신규의 비활성 투명 그래픽 프레임 버퍼가 컬러 믹싱 및 인터리빙 동작을 준비하도록 지시하기 위해 설정된다. 블록(716)에서, 비디오 렌더러는 비디오 데이터 스트림 내에 처리해야될 다른 비디오 프레임이 있는지를 판단한다. 만일, 다른 비디오 프레임이 있다면, 블록(740)에서 프레임 프로세싱이 계속된다. 만일, 처리할 다른 비디오 프레임이 존재하지 않으면, 블록(718)에서 프레임 버퍼가 소멸된다. 블록(720)에서, 비디오 렌더러는 제2 스레드(상기 블록(702)에서 생성된)가 종료되기를 기다린다. 그리고 나서, 비디오 렌더러 프로세싱은 블록(722)에서 종료한다.
도16은 본 발명의 실시예에 따른 투명성 믹서 코어(transparency mixer core)의 프로세싱 스레드를 기술하기 위한 순서도이다. 이 스레드는 도15의 블록(702)에서 생성된 제2 스레드이다. 제2 스레드는 주요 비디오 렌더러 프로세스와 독립된 프로세스 또는 태스크(task)일 수 있다. 제2 스레드가 생성된 후(블록(740)), 투명 DC는 투명 그래픽 프레임 버퍼가 완료되기를 기다린다. 일실시예에서, 투명 그래픽 프레임 버퍼는, 이것이 다른 데이터 신호와 컬러 믹싱 및 인터리빙하기 위해 준비되면 완성된다. 제2 스레드에 의해 대기하고 있는 이벤트는 도15의 블록(714)의 시스템 이벤트일 수 있다. 블록(744)에서, OS 출력 프레임 버퍼의 컨텐츠는 양쪽의 작업 프레임 버퍼에 블록 전달된다. 블록(746)에서, OS 출력 프레임 버퍼는 비가시 또는 비활성 상태로 설정되고, 작업 프레임 버퍼 중의 하나는 가시 상태가 된다. 이 두 동작은 디스플레이 상에 데이터 신호를 디스플레이 하기 위해 사용되는 프레임 버퍼를 효과적으로 "플립(flip)"한다. 이 지점에서, OS 출력 프레임 버퍼는 디스플레이 상에서 직접적으로 불 수 있는것은 아니다. 블록(748)에서, 제2 스레드는 소정의 시간 주기(예를 들어, 75 milliseconds) 동안 대기하거나, 또는 투명 그래픽 프레임 버퍼가 완성되기를 기다란다.
제2 스레드가 소정의 시간 주기 또는 투명 그래픽 프레임 버퍼가 완성(즉,비디오 데이터 신호로 로드된)되기를 기다리고 나서, 블록(750)에서, 제2 스레드는 비활성 투명 그래픽 프레임 버퍼의 컨텐츠를 비가시 작업 프레임 버퍼와 믹싱한다. 이 믹싱은, 예를 들어 상기 도8에서 기술한 잘차에 따라 수행될 수 있지만, 이 믹싱 동작은 또한 전용 믹싱 하드웨어에 의해 수행될 수 있다. 블록(752)에서, 가시 작업 프레임버퍼는 비가시 작업 프레임 버퍼로, 비가시 작업 프레임 버퍼는 가시 작업 프레임 버퍼로 되기 위해, 제2 스레드는 2개의 작업 프레임 버퍼를 플립한다. 만일, 블록(754)에서 모든 프레임 버퍼가 여전히 존재한다면, 추가의 컬러 믹싱 및 인터리빙 프로세싱이 이 투명 그래픽 프레임 버퍼 상에서 여전히 수행되고, 프로세싱은 블록(748)에서 계속된다. 그렇지 않고, 만일 프레임 버퍼 중 어느 것도 존재하지 않는 경우, 블록(756)은 투명 DC 스레드를 종료하도록 수행된다.
필터 그래프의 컬러 분석기 필터(530)의 일실시예의 프로세스는 아래의 테이블Ⅰ에 나타나 있다. 이 프로세스는 2 개의 입력, 즉 RGBA 포맷의 프레임(이것은 이후에 Hue, Saturation and Value(HSV) 포맷으로 변환됨) 및 프레임의 개별 픽셀의 컬러값을 정합하기 위한 컬러값 범위를 받는다. HSV 가 특정 범위의 컬러 내에 있는 경우, 픽셀은 정합으로 간주된다. Hue는 라인(line)이라기 보다는 써클(circle)이기 때문에, 정합하기 위한 Hue의 범위는 둘러싸이지 않은 범위(예로, 20-53), 또는 둘러싸인 범위(예로, 240-255, 0-20) 중의 하나일 수 있다. 매칭될 컬러의 범위는 상수이거나, 또는 비디오 카메라, 비디오 포착 하드웨어, 및 검출된 객체의 컬러 특성을 바탕으로 경험적으로 결정될 수 있다(그러나, 이 분야의 통상의 지식을 가진 자는 또한 컬러 범위가 자동적으로 결정되는 자동 조정을 생각할 수 있을 것이다).
테이블Ⅰ
블롭 검출기 필터의 일실시에의 프로세스가 아래의 테이블Ⅱ에 나타나 있다. 이 프로세스는 픽셀을 비디오 프레임 안에서 세로 방향으로 각 스캔 라인을 교대로 검사하여, 요구된 키 컬러에 정합하는 "런(runs)"이라 불리는 가로 방향으로 인접한 픽셀을 찾는다. 이 동작을 수행함에 따라, 프로세스는 현재의 스캔 라인 상의 런에 연결되고 이들과 결합된 다른 스캔 라인(예를 들어, 이전의 스캔 라인) 상의런을 찾게 된다. 현재의 스캔 라인에 연결되지 않은 런의 집합이 발견될 때마다, 이 프로세스는 런 집합을 요구된 키 컬러에 정합하는 인접 픽셀의 블롭으로 간주한다. 이 프로세스는 요구된 최소 및 최대 치수 안의 모든 블롭으로 돌아간다.
테이블Ⅱ
앞의 명세서에서, 본 발명은 바람직한 실시예가 설명되었으나, 첨부된 청구항에서 설명된 바와 같이, 본 발명의 보다 넓은 사상 및 범위에서 벗어나지 않는 한, 다양한 수정 및 변경이 가능하다는 것은 명백한 사실이다. 따라서, 본 명세서 및 도면은 제한적 관점이라기 보다는 하나의 예시로서 간주되어진다. 이에 따라, 본 발명의 범위는 첨부한 청구항에 의해서만 제한되어야 한다.

Claims (27)

  1. 비디오 데이터 신호의 소스에 연결되고 디스플레이를 구비한 시스템으로 입력 신호를 제공하는 방법에 있어서,
    상기 비디오 소스에 의해 생성된 비디오 데이터 신호를 포착하는 단계 - 여기서, 상기 비디오 데이터 신호는 장면(scene)을 표현함 -;
    상기 장면이 상기 디스플레이 상에 투명하게 보일 수 있도록 상기 장면을 상기 디스플레이 상에 렌더링(rendering)하는 단계;
    상기 장면 안의 객체(object)를 검출하기 위해 상기 비디오 데이터 신호를 분석하는 단계; 및
    상기 검출된 객체에 응답하여 상기 시스템을 위한 입력 신호를 생성하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 장면은 상기 시스템의 유저를 포함하고, 상기 렌더링된 장면은 상기 유저의 반사된 이미지를 포함하는
    방법.
  3. 제1항에 있어서,
    상기 검출된 객체는 상기 시스템 유저의 신체의 적어도 일부분을 포함하는
    방법.
  4. 제1항에 있어서,
    상기 검출된 객체는 적어도 하나의 소정의 프롭(prop)을 포함하는
    방법.
  5. 제1항에 있어서,
    상기 투명하게 렌더링된 장면에 추가하여 적어도 하나의 디스플레이 객체를 상기 디스플레이 상에 디스플레이하는 단계
    를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 적어도 하나의 디스플레이 객체를 선택함에 따라 상기 장면 안에서의 상기 검출된 객체의 이동을 해석하는 단계
    를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 적어도 하나의 디스플레이 객체는 아이콘(icon)인
    방법.
  8. 제1항에 있어서,
    상기 비디오 데이터 신호를 분석하는 단계는 상기 비디오 데이터 신호의 픽셀의 컬러값(color value)을 분석하는 단계, 및 선택된 컬러값을 갖는 픽셀을 태깅(tagging)하는 단계를 포함하는
    방법.
  9. 제8항에 있어서,
    태깅된 픽셀 블록을 상기 검출된 객체로 식별하는 단계, 및 상기 검출된 객체가 입력 이벤트를 나타내는 소정 기준의 객체에 정합하는 경우 대응하는 입력 신호를 생성하는 단계
    를 더 포함하는 방법.
  10. 제1항에 있어서,
    상기 입력 신호는 마우스-다운 이벤트(mouse-down event), 마우스-업 이벤트(mouse-up event) 및 커서 위치 이동(cursor position movement) 중의 적어도 하나인
    방법.
  11. 비디오 데이터 소스 및 디스플레이를 구비한 시스템 내의 장치에 있어서,
    상기 비디오 소스에 의해 생성된 비디오 데이터 신호를 포착하기 위한 수단 - 여기서, 상기 비디오 데이터 신호는 장면을 표현함 -;
    상기 장면이 상기 디스플레이 상에서 투명하게 보일 수 있도록 상기 장면을 상기 디스플레이 상에 렌더링하기 위한 수단;
    상기 장면 안의 객체를 검출하기 위해 상기 비디오 데이터 신호를 분석하기 위한 수단; 및
    상기 검출된 객체에 응답하여 상기 시스템을 위한 입력 신호를 생성하기 위한 수단
    을 포함하는 장치.
  12. 제11항에 있어서,
    상기 렌더링된 장면에 추가하여 적어도 하나의 디스플레이 객체를 상기 디스플레이 상에 디스플레이하기 위한 수단
    을 더 포함하는 장치.
  13. 제12항에 있어서,
    상기 적어도 하나의 디스플레이 객체를 선택함에 따라 상기 장면 안에서의 상기 검출된 객체의 이동을 해석하기 위한 수단
    을 더 포함하는 장치.
  14. 제13항에 있어서,
    상기 분석 수단은 상기 비디오 데이터 신호 픽셀의 컬러값을 분석하기 위한 수단, 및 선택된 컬러값을 갖는 픽셀을 태깅하기 위한 수단을 포함하는
    장치.
  15. 제14항에 있어서,
    태깅된 픽셀 블록을 상기 검출된 객체로 식별하기 위한 수단, 및 상기 검출된 객체가 입력 이벤트를 나타내는 소정 기준의 객체에 정합하는 경우 대응하는 입력 신호를 생성하기 위한 수단
    을 더 포함하는 장치.
  16. 비디오 데이터 소스 및 디스플레이를 구비한 시스템 내의 장치에 있어서,
    상기 비디오 소스에 의해 생성된 비디오 데이터 신호를 포착하기 위한 비디오 포착 회로(video capture circuitry) - 여기서, 상기 비디오 데이터 신호는 장면을 표현함 -;
    상기 장면이 상기 디스플레이 상에서 투명하게 보일 수 있도록 상기 장면을 상기 디스플레이 상에 렌더링하기 위한 비디오 렌더 회로(video render circuitry);
    상기 장면 안의 객체를 검출하기 위해 상기 비디오 데이터 신호를 분석하기 위한 컬러 분석기 회로(color analyzer circuitry); 및
    상기 검출된 객체에 응답하여 상기 시스템을 위한 입력 신호를 생성하기 위한 입력 조정기 회로(input handler circuitry)
    를 포함하는 장치.
  17. 다수의 머신-판독가능 명령어를 구비한 머신-판독가능 매체를 포함하는 물품(article)에 있어서,
    상기 명령어가 프로세서에 의해 실행되는 경우, 상기 명령어는 시스템이 비디오 소스에 의해 생성된 비디오 신호를 포착하도록 하고 - 여기서, 상기 비디오 신호는 장면을 표현함 -, 상기 장면이 상기 디스플레이 상에 투명하게 보일 수 있도록 상기 장면을 상기 디스플레이 상에 렌더링하도록 하고, 상기 장면 안의 객체를 검출하기 위해 상기 비디오 데이터 신호를 분석하도록 하며, 상기 검출된 객체에 응답하여 상기 시스템을 위한 입력 신호를 생성하도록 하는
    물품.
  18. 제17항에 있어서,
    상기 머신-판독가능 매체는 상기 렌더링된 장면이 상기 장면의 반사된 이미지를 포함하도록 상기 장면의 이미지를 렌더링하기 위한 명령어를 더 포함하는
    물품.
  19. 제17항에 있어서,
    상기 머신-판독가능 매체는 상기 투명하게 렌더링된 장면에 추가하여 적어도하나의 디스플레이 객체를 상기 디스플레이 상에 디스플레이하기 위한 명령어를 더 포함하는
    물품.
  20. 제19항에 있어서,
    상기 머신-판독가능 매체는 상기 적어도 하나의 디스플레이 객체를 선택함에 따라 상기 장면 안에서의 상기 검출된 객체의 이동을 해석하기 위한 명령어를 더 포함하는
    물품.
  21. 제17항에 있어서,
    상기 머신-판독가능 매체는 상기 비디오 데이터 신호 픽셀의 컬러값을 분석하고, 선택된 컬러값을 갖는 픽셀을 태깅하기 위한 명령어를 더 포함하는
    물품.
  22. 제21항에 있어서,
    상기 머신-판독가능 매체는 태깅된 픽셀 블록을 상기 검출된 객체로 식별하고, 상기 검출된 객체가 입력 이벤트를 나타내는 소정 기준의 객체에 정합하는 경우 대응하는 입력 신호를 생성하기 위한 명령어를 더 포함하는
    물품.
  23. 비디오 데이터 신호의 소스 및 디스플레이에 연결된 컴퓨터 시스템에서, 상기 컴퓨터 시스템으로 입력 신호를 제공하기 위한 장치에 있어서,
    상기 비디오 소스로부터 수신된 비디오 데이터 신호를 처리하기 위한 필터 그래프 - 여기서, 상기 비디오 데이터 신호는 상기 비디오 소스에 의해 포착된 장면을 표현하고, 상기 필터 그래프는 상기 장면이 상기 디스플레이 상에서 투명하게 보일 수 있도록 상기 장면을 상기 디스플레이 상에 렌더링하기 위한 비디오 렌더러 필터; 상기 비디오 데이터 신호의 픽셀의 컬러값을 분석하고, 소정 범위 내의 픽셀의 컬러값을 태깅하기 위한 컬러 분석기 필터; 및 상기 컬러 분석기 필터에 연결되어, 상기 비디오 신호 픽셀의 태깅된 컬러값을 분석하고, 선택된 컬러값을 갖는 픽셀 블록을 상기 장면의 검출된 객체로 식별하고, 잠재적 입력 이벤트의 통지(notification)를 제공하기 위한 블록 검출기 필터를 포함함 -; 및
    상기 통지를 분석하고, 상기 검출된 객체가 상기 컴퓨터 시스템에 대한 입력 신호를 나타내는지를 판단하기 위한 입력 이벤트 조정기
    를 포함하는 장치.
  24. 제23항에 있어서,
    상기 필터 그래프는 상기 비디오 소스로부터의 비디오 데이터의 개별적인 프레임을 포착하기 위한 비디오 포착 필터를 더 포함하는
    장치.
  25. 제24항에 있어서,
    상기 필터 그래프는 상기 비디오 포착 필터에 연결되어, 상기 비디오 데이터 신호를 실질적으로 유사한 적어도 2개의 데이터 스트림으로 분리하는 티 필터(tee filter) - 여기서, 상기 데이터 스트림의 제1 스트림은 상기 비디오 렌더러 필터로 전달되고, 상기 데이터 스트림의 제2 스트림은 상기 컬러 분석기 필터로 전달됨 - 를 더 포함하는
    장치.
  26. 제23항에 있어서,
    상기 렌더링된 장면은 상기 장면의 반사된 이미지를 포함하는
    장치.
  27. 제23항에 있어서,
    상기 필터 그래프와 상기 입력 이벤트 조정기 사이의 통신을 위한 메시지-기반 인터페이스
    를 더 포함하는 장치.
KR1020007014070A 1998-06-11 1999-05-25 컴퓨터 시스템으로의 입력 데이터 제공시 비디오 반사를이용하는 방법 KR100354554B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/096,282 1998-06-11
US09/096,282 US6088018A (en) 1998-06-11 1998-06-11 Method of using video reflection in providing input data to a computer system
PCT/US1999/011542 WO1999065014A1 (en) 1998-06-11 1999-05-25 Method of using video reflection in providing input data to a computer system

Publications (2)

Publication Number Publication Date
KR20010071454A true KR20010071454A (ko) 2001-07-28
KR100354554B1 KR100354554B1 (ko) 2002-09-30

Family

ID=22256652

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007014070A KR100354554B1 (ko) 1998-06-11 1999-05-25 컴퓨터 시스템으로의 입력 데이터 제공시 비디오 반사를이용하는 방법

Country Status (7)

Country Link
US (1) US6088018A (ko)
EP (1) EP1084489A4 (ko)
JP (2) JP4523155B2 (ko)
KR (1) KR100354554B1 (ko)
AU (1) AU4312999A (ko)
TW (1) TW554329B (ko)
WO (1) WO1999065014A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210086962A (ko) * 2019-12-31 2021-07-09 기가 바이트 테크놀러지 컴퍼니 리미티드 디스플레이 이미지를 이용하여 단축키를 자동으로 트리거하는 방법 및 전자 장치

Families Citing this family (77)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6370487B1 (en) 1998-04-23 2002-04-09 Micron Technology, Inc. Remote semiconductor microscopy
US6222561B1 (en) * 1998-09-17 2001-04-24 International Business Machines Corporation Render optimization using page alignment techniques
US6353450B1 (en) 1999-02-16 2002-03-05 Intel Corporation Placing and monitoring transparent user interface elements in a live video stream as a method for user input
NO311740B1 (no) * 2000-09-11 2002-01-14 Tormod Njoelstad Tegne-, skrive- og peke-redskap for datamaskinbaserte presentasjoner og kontorarbeid
US20040046747A1 (en) * 2000-09-26 2004-03-11 Eugenio Bustamante Providing input signals
JP3725460B2 (ja) * 2000-10-06 2005-12-14 株式会社ソニー・コンピュータエンタテインメント 画像処理装置、画像処理方法、記録媒体、コンピュータプログラム、半導体デバイス
US6768499B2 (en) * 2000-12-06 2004-07-27 Microsoft Corporation Methods and systems for processing media content
US7103677B2 (en) 2000-12-06 2006-09-05 Microsoft Corporation Methods and systems for efficiently processing compressed and uncompressed media content
US6834390B2 (en) * 2000-12-06 2004-12-21 Microsoft Corporation System and related interfaces supporting the processing of media content
US7114162B2 (en) 2000-12-06 2006-09-26 Microsoft Corporation System and methods for generating and managing filter strings in a filter graph
US6912717B2 (en) * 2000-12-06 2005-06-28 Microsoft Corporation Methods and systems for implementing dynamic properties on objects that support only static properties
US6961943B2 (en) * 2000-12-06 2005-11-01 Microsoft Corporation Multimedia processing system parsing multimedia content from a single source to minimize instances of source files
US6882891B2 (en) * 2000-12-06 2005-04-19 Microsoft Corporation Methods and systems for mixing digital audio signals
US7114161B2 (en) * 2000-12-06 2006-09-26 Microsoft Corporation System and related methods for reducing memory requirements of a media processing system
US6954581B2 (en) * 2000-12-06 2005-10-11 Microsoft Corporation Methods and systems for managing multiple inputs and methods and systems for processing media content
US7287226B2 (en) 2000-12-06 2007-10-23 Microsoft Corporation Methods and systems for effecting video transitions represented by bitmaps
US6959438B2 (en) 2000-12-06 2005-10-25 Microsoft Corporation Interface and related methods for dynamically generating a filter graph in a development system
US6983466B2 (en) * 2000-12-06 2006-01-03 Microsoft Corporation Multimedia project processing systems and multimedia project processing matrix systems
US7447754B2 (en) 2000-12-06 2008-11-04 Microsoft Corporation Methods and systems for processing multi-media editing projects
US6774919B2 (en) * 2000-12-06 2004-08-10 Microsoft Corporation Interface and related methods for reducing source accesses in a development system
US7343415B2 (en) 2001-03-29 2008-03-11 3M Innovative Properties Company Display of software notes indicating that content from a content provider site is available for display
US6943774B2 (en) * 2001-04-02 2005-09-13 Matsushita Electric Industrial Co., Ltd. Portable communication terminal, information display device, control input device and control input method
GB0109720D0 (en) 2001-04-20 2001-06-13 Koninkl Philips Electronics Nv Display apparatus and image encoded for display by such an apparatus
JP3645829B2 (ja) * 2001-05-14 2005-05-11 コナミ株式会社 画像の形成方法及び画像形成用のプログラム
US8364342B2 (en) * 2001-07-31 2013-01-29 Immersion Corporation Control wheel with haptic feedback
US7010794B2 (en) 2002-01-23 2006-03-07 Microsoft Corporation Methods and systems for predicting events associated with renderable media content samples
US7158675B2 (en) 2002-05-14 2007-01-02 Microsoft Corporation Interfacing with ink
US7343566B1 (en) 2002-07-10 2008-03-11 Apple Inc. Method and apparatus for displaying a window for a user interface
AU2002952371A0 (en) * 2002-10-31 2002-11-14 Robert Van Der Zijpp Mutli Image to Merged Image Software Process
US7426329B2 (en) 2003-03-06 2008-09-16 Microsoft Corporation Systems and methods for receiving, storing, and rendering digital video, music, and pictures on a personal media player
US20040201595A1 (en) * 2003-04-11 2004-10-14 Microsoft Corporation Self-orienting display
US7403661B2 (en) * 2004-02-12 2008-07-22 Xerox Corporation Systems and methods for generating high compression image data files having multiple foreground planes
JP4005061B2 (ja) * 2004-06-30 2007-11-07 株式会社ソニー・コンピュータエンタテインメント 情報処理装置、プログラム、および、情報処理装置におけるオブジェクト制御方法
EP1645944B1 (en) * 2004-10-05 2012-08-15 Sony France S.A. A content-management interface
DE102004062148A1 (de) * 2004-12-23 2006-07-13 Hella Kgaa Hueck & Co. Anordnung für ein Kraftfahrzeug mit einer Kamera und einer Anzeigevorrichtung zum Erfassen und Anzeigen eines Bildes der Umgebung
WO2006098255A1 (ja) * 2005-03-15 2006-09-21 Shunsuke Nakamura 画像表示方法およびその装置
WO2007000743A2 (en) * 2005-06-28 2007-01-04 Koninklijke Philips Electronics, N.V. In-zoom gesture control for display mirror
US8549442B2 (en) * 2005-12-12 2013-10-01 Sony Computer Entertainment Inc. Voice and video control of interactive electronically simulated environment
TWI301590B (en) 2005-12-30 2008-10-01 Ibm Handwriting input method, apparatus, system and computer recording medium with a program recorded thereon of capturing video data of real-time handwriting strokes for recognition
US8004540B1 (en) * 2006-10-10 2011-08-23 Adobe Systems Incorporated Display resolution boundary
US20080150962A1 (en) 2006-12-20 2008-06-26 Bezryadin Sergey N Image display using a computer system, including, but not limited to, display of a reference image for comparison with a current image in image editing
US7940982B1 (en) * 2007-05-31 2011-05-10 Zoran Corporation Method and apparatus for color space conversion using per-color selection of look-up table density
US8839142B2 (en) 2007-06-08 2014-09-16 Apple Inc. Desktop system object removal
JP4636064B2 (ja) * 2007-09-18 2011-02-23 ソニー株式会社 画像処理装置および画像処理方法、並びにプログラム
US9001036B2 (en) 2007-12-20 2015-04-07 University Of Central Florida Research Foundation, Inc. Systems and methods of camera-based fingertip tracking
US8199106B2 (en) * 2007-12-20 2012-06-12 University Of Central Florida Research Foundation, Inc. Systems and methods of camera-based fingertip tracking
US8358314B2 (en) * 2008-02-08 2013-01-22 Apple Inc. Method for reducing framebuffer memory accesses
CN101526872B (zh) * 2008-03-05 2013-01-09 上海普芯达电子有限公司 电容式感应屏按钮状态的监测方法和电容式感应系统
US20090251460A1 (en) * 2008-04-04 2009-10-08 Fuji Xerox Co., Ltd. Systems and methods for incorporating reflection of a user and surrounding environment into a graphical user interface
US8125495B2 (en) * 2008-04-17 2012-02-28 Microsoft Corporation Displaying user interface elements having transparent effects
US20090295682A1 (en) * 2008-05-30 2009-12-03 Fuji Xerox Co., Ltd. Method for improving sensor data collection using reflecting user interfaces
US9092053B2 (en) 2008-06-17 2015-07-28 Apple Inc. Systems and methods for adjusting a display based on the user's position
US8184143B2 (en) * 2008-06-27 2012-05-22 Sony Mobile Communications Ab Simulated reflective display
CN101364265B (zh) * 2008-09-18 2013-04-24 北京中星微电子有限公司 自动配置电子设备的设备参数的方法及摄像头
CN102577368B (zh) * 2009-04-16 2016-01-06 惠普开发有限公司 在虚拟协同系统中传送视觉表示
US8416262B2 (en) 2009-09-16 2013-04-09 Research In Motion Limited Methods and devices for displaying an overlay on a device display screen
CN101957712A (zh) * 2010-05-26 2011-01-26 宇龙计算机通信科技(深圳)有限公司 一种显示界面背景图片的显示控制方法、系统及移动终端
US9132352B1 (en) 2010-06-24 2015-09-15 Gregory S. Rabin Interactive system and method for rendering an object
CN101950227B (zh) * 2010-08-27 2012-12-26 宇龙计算机通信科技(深圳)有限公司 一种电容屏的按键区域设置方法及终端
CN102402279B (zh) * 2010-09-17 2016-05-25 腾讯科技(深圳)有限公司 基于手势的人机交互方法及系统
US10740117B2 (en) 2010-10-19 2020-08-11 Apple Inc. Grouping windows into clusters in one or more workspaces in a user interface
US9542202B2 (en) 2010-10-19 2017-01-10 Apple Inc. Displaying and updating workspaces in a user interface
US9292196B2 (en) 2010-10-19 2016-03-22 Apple Inc. Modifying the presentation of clustered application windows in a user interface
US9658732B2 (en) 2010-10-19 2017-05-23 Apple Inc. Changing a virtual workspace based on user interaction with an application window in a user interface
US10152192B2 (en) 2011-02-21 2018-12-11 Apple Inc. Scaling application windows in one or more workspaces in a user interface
TW201237773A (en) * 2011-03-15 2012-09-16 Wistron Corp An electronic system, image adjusting method and computer program product thereof
US8928589B2 (en) 2011-04-20 2015-01-06 Qualcomm Incorporated Virtual keyboards and methods of providing the same
CN102510425A (zh) * 2011-10-28 2012-06-20 上海华勤通讯技术有限公司 移动终端和实景显示方法
JP5935529B2 (ja) 2012-06-13 2016-06-15 ソニー株式会社 画像処理装置、画像処理方法、およびプログラム
JP2014016383A (ja) * 2012-07-05 2014-01-30 Toshiba Corp 画像処理装置および画像表示装置
CN103092616A (zh) * 2013-01-14 2013-05-08 深圳市金立通信设备有限公司 一种应用程序背景的显示方法及移动终端
US9672649B2 (en) * 2013-11-04 2017-06-06 At&T Intellectual Property I, Lp System and method for enabling mirror video chat using a wearable display device
ITCO20130068A1 (it) 2013-12-18 2015-06-19 Nu Tech S A S Di De Michele Marco & Co Metodo per fornire comandi d'utente ad un elaboratore elettronico e relativi programma per elaborare e circuito elettronico.
US9645641B2 (en) 2014-08-01 2017-05-09 Microsoft Technology Licensing, Llc Reflection-based control activation
US20170344112A1 (en) * 2016-05-31 2017-11-30 Fove, Inc. Gaze detection device
US10942575B2 (en) * 2017-06-07 2021-03-09 Cisco Technology, Inc. 2D pointing indicator analysis
CN112312203B (zh) * 2020-08-25 2023-04-07 北京沃东天骏信息技术有限公司 视频播放方法、装置和存储介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0146657B1 (en) * 1983-12-22 1987-04-01 International Business Machines Corporation Raster-scanned cathode ray tube display with cross-hair cursor
EP0154067A1 (en) * 1984-03-07 1985-09-11 International Business Machines Corporation Display apparatus with mixed alphanumeric and graphic image
US4988981B1 (en) * 1987-03-17 1999-05-18 Vpl Newco Inc Computer data entry and manipulation apparatus and method
JPS6465627A (en) * 1987-09-07 1989-03-10 Toshiba Corp Multiwindow display system
JP2580378B2 (ja) * 1990-09-07 1997-02-12 日本電信電話株式会社 画面共用制御方式
US5270688A (en) * 1990-12-12 1993-12-14 Apple Computer, Inc. Apparatus for generating a cursor or other overlay which contrasts with the background on a computer output display
JP3132021B2 (ja) * 1991-02-15 2001-02-05 ソニー株式会社 座標入力装置
US5534917A (en) * 1991-05-09 1996-07-09 Very Vivid, Inc. Video image based control system
US5283560A (en) * 1991-06-25 1994-02-01 Digital Equipment Corporation Computer system and method for displaying images with superimposed partially transparent menus
SE468963B (sv) * 1991-11-19 1993-04-19 Torbjoern Arvidsson Omstaellningsbart ergonomiskt manoeversystem
JP3244798B2 (ja) * 1992-09-08 2002-01-07 株式会社東芝 動画像処理装置
CA2109681C (en) * 1993-03-10 1998-08-25 Donald Edgar Blahut Method and apparatus for the coding and display of overlapping windows with transparency
US5436639A (en) * 1993-03-16 1995-07-25 Hitachi, Ltd. Information processing system
JP2552427B2 (ja) * 1993-12-28 1996-11-13 コナミ株式会社 テレビ遊戯システム
US5528263A (en) * 1994-06-15 1996-06-18 Daniel M. Platzker Interactive projected video image display system
JPH08139994A (ja) * 1994-11-09 1996-05-31 Hitachi Ltd 画像合成システム
US5594469A (en) * 1995-02-21 1997-01-14 Mitsubishi Electric Information Technology Center America Inc. Hand gesture machine control system
DE69634913T2 (de) * 1995-04-28 2006-01-05 Matsushita Electric Industrial Co., Ltd., Kadoma Schnittstellenvorrichtung
US5557759A (en) * 1995-06-07 1996-09-17 International Business Machines Corporation Video processor with non-stalling interrupt service
US5710877A (en) * 1995-12-29 1998-01-20 Xerox Corporation User-directed interaction with an image structure map representation of an image
JPH09330422A (ja) * 1996-06-07 1997-12-22 Hitachi Ltd 3次元グラフィック表示方法および表示システム
JPH1027082A (ja) * 1996-07-09 1998-01-27 Nec Home Electron Ltd 画像表示装置
US5982378A (en) * 1996-08-02 1999-11-09 Spatial Technology Inc. System and method for modeling a three dimensional object

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210086962A (ko) * 2019-12-31 2021-07-09 기가 바이트 테크놀러지 컴퍼니 리미티드 디스플레이 이미지를 이용하여 단축키를 자동으로 트리거하는 방법 및 전자 장치
US11471757B2 (en) 2019-12-31 2022-10-18 Giga-Byte Technology Co., Ltd. Electronic device and method of automatically triggering hot key using display image

Also Published As

Publication number Publication date
JP4523155B2 (ja) 2010-08-11
JP2002518717A (ja) 2002-06-25
KR100354554B1 (ko) 2002-09-30
JP2009181138A (ja) 2009-08-13
US6088018A (en) 2000-07-11
WO1999065014A1 (en) 1999-12-16
EP1084489A4 (en) 2003-01-02
EP1084489A1 (en) 2001-03-21
AU4312999A (en) 1999-12-30
TW554329B (en) 2003-09-21

Similar Documents

Publication Publication Date Title
KR100354554B1 (ko) 컴퓨터 시스템으로의 입력 데이터 제공시 비디오 반사를이용하는 방법
US6353450B1 (en) Placing and monitoring transparent user interface elements in a live video stream as a method for user input
US9036043B2 (en) System and method for generating and transmitting interactive coordinated presentations
US6894703B2 (en) Multi-user collaborative circular graphical user interfaces
US7327376B2 (en) Multi-user collaborative graphical user interfaces
US6297804B1 (en) Pointing apparatus
US9524140B2 (en) Apparatus and system for managing multiple computers
US8639812B2 (en) Apparatus and system for managing multiple computers
US20060112348A1 (en) Multiple-mode window presentation system and process
US7982751B2 (en) Methods and systems for controlling a computer using a video image and for combining the video image with a computer desktop
US11150861B1 (en) Apparatus and method for simultaneous multi-user screen and window sharing, capturing and coordination
GB2314245A (en) Graphical user interface
US20170109020A1 (en) Interactive presentation system
JP2011044061A (ja) 画像表示装置、入力装置、及び画像表示方法
JP2004259247A (ja) マルチユーザコラボラティブ円形グラフィカルユーザインタフェース
JP4109012B2 (ja) 解像度混合ディスプレイ
RU2566975C2 (ru) Система, способ и компьютерная программа для функционирования множества вычислительных устройств
US20240098213A1 (en) Modifying digital content transmitted to devices in real time via processing circuitry
US20230334792A1 (en) Interactive reality computing experience using optical lenticular multi-perspective simulation
US20230334791A1 (en) Interactive reality computing experience using multi-layer projections to create an illusion of depth
US20240185546A1 (en) Interactive reality computing experience using multi-layer projections to create an illusion of depth
US20130314424A1 (en) Display System for Electronic Device and Display Module Thereof
WO2023205145A1 (en) Interactive reality computing experience using multi-layer projections to create an illusion of depth
WO2024039885A1 (en) Interactive reality computing experience using optical lenticular multi-perspective simulation
WO2024039887A1 (en) Interactive reality computing experience using optical lenticular multi-perspective simulation

Legal Events

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

Payment date: 20090916

Year of fee payment: 8

LAPS Lapse due to unpaid annual fee