KR101385263B1 - 가상 키보드를 위한 시스템 및 방법 - Google Patents

가상 키보드를 위한 시스템 및 방법 Download PDF

Info

Publication number
KR101385263B1
KR101385263B1 KR1020120092650A KR20120092650A KR101385263B1 KR 101385263 B1 KR101385263 B1 KR 101385263B1 KR 1020120092650 A KR1020120092650 A KR 1020120092650A KR 20120092650 A KR20120092650 A KR 20120092650A KR 101385263 B1 KR101385263 B1 KR 101385263B1
Authority
KR
South Korea
Prior art keywords
key
row
column
histogram
finger
Prior art date
Application number
KR1020120092650A
Other languages
English (en)
Other versions
KR20140026898A (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 주식회사 셀루온
Priority to KR1020120092650A priority Critical patent/KR101385263B1/ko
Publication of KR20140026898A publication Critical patent/KR20140026898A/ko
Application granted granted Critical
Publication of KR101385263B1 publication Critical patent/KR101385263B1/ko

Links

Images

Classifications

    • 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/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/042Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means
    • G06F3/0425Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means using a single imaging device like a video camera for tracking the absolute position of a single or a plurality of objects with respect to an imaged reference surface, e.g. video camera imaging a display or a projection screen, a table or a wall surface, on which a computer generated image is displayed or projected
    • G06F3/0426Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means using a single imaging device like a video camera for tracking the absolute position of a single or a plurality of objects with respect to an imaged reference surface, e.g. video camera imaging a display or a projection screen, a table or a wall surface, on which a computer generated image is displayed or projected tracking fingers with respect to a virtual keyboard projected or printed on the surface
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Position Input By Displaying (AREA)

Abstract

본 개시 내용은 복수의 키들을 가지는 가상 키보드의 표시를 포함하는 작업 영역의 이미지를 캡처하고, 상기 복수의 키들 중에 선택된 키를 검출하는 방법에 관한 것이다. 상기 선택된 키를 검출하는 것은, 캡처한 이미지에서 광의 강도의 변화를 분석하여 작업 영역 안의 객체를 검출하는 것을 포함한다. 상기 객체의 검출는, 각 캡처한 이미지의 각 행의 광의 강도에 기초하여 제 1 행 히스토그램을 생성하는 것과, 각 캡처한 이미지의 각 열의 광의 강도에 기초하여 제 1 열 히스토그램을 생성하는 것과, 상기 제 1 행 히스토그램 및 제 1 열 히스토그램에 기초하여 선택된 키를 식별하는 것을 포함한다. 상기 방법은 호스트 장치로 선택된 키의 식별자를 출력하는 것을 포함한다.

Description

가상 키보드를 위한 시스템 및 방법{SYSTEM AND METHOD FOR A VIRTUAL KEYBOARD}
본 개시 내용은 키보드와 같은 텍스트 입력을 수행하기 위한 검출 영역에서, 하나 이상의 손가락과 같은, 객체 또는 객체들의 존재를 광학적으로 감지하는 시스템 및 방법에 관한 것이다.
현재, 스마트폰이나 터치패널을 가진 장치와 같이 작고, 가벼운 휴대용 장치가 널리 보급되었다. 이러한 휴대용 장치를 위하여, 텍스트와 문자 입력을 위한 쉬운 방법들이 몇몇 있다. 일부 장치들은 문자 입력을 위하여 작은 빌트인 또는 온보드 기계식 키보드 또는 터치 패널 위에 작은 프린트된 가상 키보드를 포함한다. 일부 상기 터치 패널은 스마트폰에 포함되므로, 크기가 작다. 다른 터치 패널은 iPad 또는 Kindle과 같이, 더 큰 장치에 포함되어, 더 큰 터치 패널 상의 프린트된 키보드를 사용한다. 터치 패널이란 디스플레이 영역 또는 스크린 안에서 터치의 존재와 위치를 검출할 수 있는 전자적 가상 디스플레이 이다. 터치 패널은 게임 콘솔, 일체형 컴퓨터, 태블릿 컴퓨터 및 스마트폰 등 장치에 일반적으로 사용된다.
이러한 키보드들은 문자 메시지와 같이 작은 수의 문자를 입력하기에는 충분하지만, 200 단어 이상과 같은 긴 텍스트를 입력하기에는 충분하지 않는다. 일부 경우에는, 특히 나이 많은 사람들에게, 스마트폰의 상기 가상 및 수동 키보드는 한 문자를 치기에도 너무 작다. 결과적으로, 그러한 키보드의 사용자들은 많은 오타를 발생시킨다. 한편, 터치 패널 장치를 위한 가상 키보드는 단지 표준 키 크기를 달성하기 위해서 거의 스크린의 반을 차지할 수 있다.
텍스트 입력을 검출하기 위한 가상 키보드들이 제안되어 왔다. 예를 들어, "Device and Method for Generating a Virtual Keyboard/Display"라는 명칭으로 Liu et al.에게 허여된 미국 특허 제7,215,327호는 작업 표면을 스캔하여 사용자의 손가락의 위치와 움직임을 검출하기 위하여 두개의 스캐닝 레이저를 사용한다. 그 장치는 두 반사된 스캐닝 레이저로부터 수신한 시간의 차이를 비교함으로써 손가락의 위치를 검출한다.
다른 예로는, "Quasi-three-dimensional Method and Apparatus to Detect and Localize Interaction of User-Object and Virtual Transfer Device"라는 명칭으로 토마시 등(Tomasi et al.)에게 허여된 미국 특허 제6,710,700 호에서는 가상 키보드와 두 광학 시스템을 사용하는 가상 입력을 설명한다. 제 1 광학 시스템 OS1은 작업 표면에 평행하게 광선을 투사하고, 제 2 광학 시스템 OS2는 제 1 광학 시스템 OS1으로부터 반사된 광을 수신하여 검출한다. 호모그래피를 사용하여, 이미지 화소 좌표로부터 현실 세계의 객체의 실제 위치가 계산될 수 있다. 가상 키보드를 구현하기 위하여, 제 2 광학 시스템 OS2의 시야 각도는 90도 또는 더 커야 한다. 그러한 큰 시야 각도에서는, 렌즈 왜곡이 너무 커서 호모그래피 변환이 객체의 실세계 위치를 계산하는 데 큰 오류를 야기할 수 있다. 결과적으로, 올바른 키를 선택하는 데 문제가 발생할 수 있다.
본 발명은 복수의 키들을 가지는 가상 키보드의 표시를 포함하는 작업 영역의 이미지를 캡처하고, 상기 복수의 키들 중에 선택된 키를 검출하는 방법 및 시스템을 제공하는 것을 목적으로 한다.
본 개시 내용은 풀사이즈의, 거의 무게가 없는 가상 키보드에 관한 것으로, 상기 키보드는 스크린 또는 터치 패널을 차지하지 않고, 따라서 스크린 또는 터치 패널의 정보를 가리지 않는다.
상기 가상 키보드는 작업 표면 위에 키보드 패턴을 생성하도록 구성된 메모리를 가진 프로세서, 광원, 이미지 센서를 포함하는 시스템의 일부이다. 상기 키보드 패턴은 휴대용 장치 위로 프린트되거나, 또는 작업 표면 위로 광학적으로 투사될 수 있다. 상기 프린트된 휴대용 키보드 패턴은 어떤 종이 한장이거나, 작업 표면 위에 미리 그려지거나, 또는 별도의 터치 패널 장치와 같은 스크린 위에 표시된 키보드 이미지일 수 있다. 키보드 패턴을 광학적으로 투사하는 것은 DOE(Diffractive Optical Elements) 또는 DLP(Digital Light Processing)과 같은 여러 가지 기술들을 사용하여 달성할 수 있다. 다른 대안으로는, 상기 키보드는 단순히 사용자를 적절한 키 위치로 안내하게 돕는 사진이나 기타 키보드의 물리적인 표현일 수 있다.
본 개시 내용은 작업 영역의 이미지를 캡처하고, 상기 작업 영역은 복수의 키를 가지는 가상 키보드의 표시를 포함하고, 상기 이미지는 화소의 행과 열을 포함하는 방법에 관한 것이다. 상기 방법은, 캡처한 이미지에서 광의 강도의 변화를 분석하여 작업 영역 안의 객체를 검출하는 것을 포함하는, 복수의 키에서 선택된 키를 검출하는 것을 포함한다. 상기 객체의 검출은, 각 캡처한 이미지의 각 행의 광의 강도에 기초하여 제 1 행 히스토그램을 생성하는 것과, 각 캡처한 이미지의 각 열의 광의 강도에 기초하여 제 1 열 히스토그램을 생성하는 것과, 상기 제 1 행 히스토그램 및 제 1 열 히스토그램에 기초하여 선택된 키를 식별하는 것을 포함한다. 더하여, 상기 방법은 호스트 장치로 선택된 키의 식별자를 출력하는 것을 포함한다.
본 발명에 따르면, 복수의 키들을 가지는 가상 키보드의 표시를 포함하는 작업 영역의 이미지를 캡처하고, 상기 복수의 키들 중에 선택된 키를 검출하는 방법 및 시스템을 구현할 수 있다.
도 1a는 본 개시 내용의 일 양태에 따른 가상 키보드 시스템의 측면도이다.
도 1b는 도 1a에 나타내는 가상 키보드 시스템의 등각도이다.
도 2a 내지 도 2f, 도 3a 내지 도 3d, 도 4a 내지 도 4c는, 본 개시 내용의 일 실시예에 따른 관심 영역에서의 손가락들의 이미지들과 히스토그램들이다.
도 5는 도 2a 내지 도 2f, 도 3a 내지 도 3d, 도 4a 내지 도 4c의 이미지들에 관련된 키보드 패턴의 일부이다.
도 6은 본 개시 내용의 일 실시예에 따른 임베디드 프로세서를 갖는 가상 키보드 시스템의 개략적인 도면이다.
도 7은, 본 개시 내용의 일 실시예에 따른 가상 키보드 시스템이 수행하는 한 방법의 블록도이다.
도 8은 본 개시 내용의 일 실시예에 따른 손가락 팁 검출 루틴을 수행하는 가상 키보드 시스템의 방법의 순서도이다.
도 9은 본 개시 내용의 일 실시예에 따른 터치 검출 루틴을 수행하는 가상 키보드 시스템의 방법의 순서도이다.
도 10은 본 개시 내용의 다른 실시예에 따른 터치 위치 계산 루틴을 수행하는 가상 키보드 시스템의 방법의 순서도이다.
도 11은 본 개시 내용의 일 실시예에 따른 키 차단(blocking) 검출 루틴을 수행하는 가상 키보드 시스템의 방법의 순서도이다.
도 12는 본 개시 내용의 일 실시예에 따른 키 이벤트 생성 루틴을 수행하는 가상 키보드 시스템의 방법의 순서도이다.
도 13은 가상 키보드 시스템의 대안적인 실시예의 블록도이다.
도 14는 본 개시 내용의 일 실시예에 따른 X축 교정 테이블이다.
도 15는 본 개시 내용의 일 실시예에 따른 Y측 교정 테이블이다.
도 16은 본 개시 내용에 따른 장치와 작업 표면 위에 좌표를 겹친 평면도이다.
도 17은 손가락 팁의 중심에 연관된 부화소 값의 그래픽 표현이다.
다음 설명에서는 개시 내용의 여러 실시예의 이해를 위하여 어떤 특정한 구체적인 내용을 제시하는 경우가 있다. 그러나, 본 분야의 기술자라면 본 개시 내용은 이러한 구체적인 내용 없이도 실현될 수 있음을 이해할 것이다. 다른 경우들에서는 본 개시 내용의 실시예들의 설명을 불필요하게 흐리게 하지 않도록 센서와 이미지 프로젝션(projection)에 관한 잘 알려진 구조들은 상술하지 않았다.
문맥상 달리 해석될 필요가 없는 경우, 다음 상세와 청구 전부에 있어, "구성한다"(comprise)라는 용어는 개방적, 포괄적인 의미로, 즉, "포함하고, 그러나 한정하지 않는"의 의미로, 쓰인다.
또한, 이 상세 전체에서 "일 실시예"의 의미는 그 실시예와 관련하여 서술한 특정한 기능, 구조 혹은 특성이 최소한 하나 이상의 실시예에 포함된다는 뜻이다. 따라서, 이 상세 여기저기에서 나타나는 "일 실시예"는 반드시 동일 실시예를 나타내는 것이 아니다. 또한, 그 특정한 기능, 구조, 특성은 하나나 그 이상의 실시예에서 어떤 방식으로도 결합될 수 있다.
도면에서, 같은 참조 번호는 비슷한 기능이나 구성요소를 나타낸다. 도면에 나타난 크기나 상대적 위치는 항상 비율에 맞게 그려진 것은 아니다. 예를 들어, 여러 기능들의 모양들은 비율에 맞게 그려지지 않고, 도면의 가독성을 높이는 쪽으로 확대되고 위치되었다.
도 1a는 하우징(10)의 바닥(14)와 정면(15)에 인접하여 위치한 광원 유닛(12)를 포함하는 하우징(10)을 갖는 가상 키보드 장치(9)의 측면도이다. 가상 키보드 장치(9) 안에는, 광 투사 시스템(26)이 하우징(10)의 윗면(18)에 인접하여 위치하고, 광 감지 시스템(16)은 광 투사 시스템(26)과 광원 유닛(12) 사이에 위치한다. 상기 투사 시스템(26)은 검출 영역(23) 안에서 작업 표면(22) 위로 키보드 패턴(38)을 투사한다(도 1b 참조).
사용자의 손가락(24)은 광원 유닛(12)에 의해 생성된 부채 모양 광 빔(20)과 교차하게 나타내었다. 상기 사용자 손가락은 작업 표면(22)를 건드릴 수도 있지만, 부채꼴 광 빔(20)을 파괴하기만 하면 검출된다. 검출 영역(23)은 광 빔(20)과 센서 시스템(16)에 의해 검출될 수 있는 영역으로 정의되는 2차원 영역이다. 작업 표면(22)는 센서 또는 기계적 또는 전기적 구성요소를 포함하지 않고, 탁자 표면, 비행기 쟁반, 종이 한장, 또는 기타 모든 적당한 표면이 될 수 있다. 상기 검출 영역(23)은 이미지 센서(16)이 그 안에서 사용자 손가락(24)의 팁 또는 스타일러스나 펜의 팁과 같은 기타 팁의 이미지를 캡처할 수 있는 모든 영역이다.
광원 유닛(12)은 적외선(IR) 대역(700nm~1,400nm)과 같은, 특정 주파수 대역의 얇은 부채 모양 광 빔(20)을 방사한다. 이상적으로는, 얇은 부채 모양 광 빔(20)은 작업 표면(22)에 평행하고 가깝다. 광 감지 시스템(16)은 작업 표면(22)를 내려다 보도록 각도가 주어지거나 기타 방법으로 구성되고, 검출 영역(23) 안의 작업 표면(22) 위의 사용자의 활동을 계속해서 검출한다.
하우징(10)은 광을 작업 표면(22) 위로 투사하게 설정된 광원(25)을 포함할 수 있다. 상기 광원(25)는 사용자에게 시야(36)의 경계선에 대한 가시적 표시를 제공하여, 사용자의 손가락 동작이 시야(36) 안에 있을 수 있게 한다. 광(25)은 LED, 백열등 등 일 수 있다. 추가적으로, 광원(25)의 강도는 사용자에 의해 필요한 강도로 증가시키거나 감소시킬 수 있다.
일 실시예에서, 광원(25)은 작업 표면(22)의 일부를 밝히도록 위치할 수 있다. 광원(25)은 오직 센서 시스템(16)에 의해 검출될 수 있는 손가락 움직임의 대략의 영역을 사용자에게 나타내는 기능 만 할 수 있다. 한 시행예에서, 상기 센서 시스템은 광원 유닛(12)에 상응하는 주파수의 광으로 설정되어 사용자 손가락(24)로부터의 반사를 개선하도록 설정된다. 광원(25)이 센서 시스템(16)과 투사 시스템(26) 위에 있는 것으로 나타나 있지만, 광원(25)은 센서 시스템(16) 아래나 옆에 위치할 수 있다. 일 실시예에 따르면, 광원(25)은 장치(9) 위, 주변, 근접하게 미관적으로 좋은 디자인을 만들기 위하여 위치된 복수의 광원을 포함할 수 있다.
일 실시예에서, 광 빔(20)은 작업 표면(22)와 평행하게 투사되고 그 작업 표면에서 일정 거리(21) 떨어진다. 일 실시예에서, 그 거리(21)는 3에서 10mm 사이이다. 그러나, 광 빔(20)은 가령 불균일, 불규칙 혹은 각도 있는 작업 표면들과 같은 비정규적 작업 표면들에는 다른 각도로 투사될 수 있다. 광원 유닛(12)은 특정 주파수의 광을 얇은 부채꼴의 광 빔(20)으로 투사할 수 있는 LED, 레이저 혹은 다른 광원이 될 수 있다. 광 빔(20)은 0.1 mm에서 0.5 mm 범위, 또는 대체적으로, 3mm에서 5mm 범위의 두께를 가진다. 광 빔(20)은 광 빔(20)의 빔 내에 있을 때 손가락 팁을 비추기에 충분한 강도로 방사한다. 그 광은 어떠한 주파수여도 상관없지만, 비가시적일 것이 선호된다. 즉, 주파수 범위가 1에서 430THz인 적외선(IR) 영역이 선호되는 선택이다.
일 실시예에서는, 광원 유닛(12)은 광 빔(20)을 깜빡이며 투사한다. 광 빔(20)을 깜빡이며 투사하는 것은 광 빔(20)을 계속적으로 투사하는 것에 비하여 전력 소비를 절약하는 장점이 있다. 예를 들어, 광원 유닛(12)가 주파수 30Hz, 듀티 사이클(duty cycle) 50%로 깜빡이며 광을 투사한다면, 광원 유닛(12)은 다른 경우에 비하여 절반의 시간만 켜져 있게 된다. 추가적인 전력 효율은 배터리 수명을 늘리거나 절약된 전력만큼 광 빔(20)의 강도를 증가시키는데 사용할 수 있다. 광 빔(20)의 강도가 클수록 센서 시스템(16)으로 캡처하는 이미지의 신호대잡음비(signal-to-noise ratio) 특성이 좋아진다. 신호대잡음비가 증가하면 측정 정확도가 증가하고 따라서 장치(9)의 정확도와 성능이 개선된다.
도 1b는 도 1a의 가상 키보드 장치(9)가 가상 작업 표면(22) 위로 키보드 패턴(38)을 투사하는 등각도를 보여준다. 처음에는, 작업 표면(22) 위 또는 검출 영역(23) 안에 손가락이 없다. 사용자는 광 빔(20)에 의해 창조된 평면을 파괴하기 위하여 손가락(24)이나 스타일러스 등 하나 혹은 그 이상의 손가락 팁을 이용하여 키를 선택할 수 있다. 일 실시예에서, 사용자의 손가락(24)은 반드시 오직 검출 영역(23) 안에서 광선을 파괴해야 가상 키보드(38)의 키를 선택할 수 있다. 그러나, 다른 실시예에서는, 장치(9)는 손가락 팁이 작업 표면(22)를 터치하였을 때 사용자의 손가락(24)이 키를 선택하였다고 결정한다.
센서 시스템(16)은 광 빔(20)의 평면에서 팁 또는 팁들의 존재를 검출한다. 상기 센서 시스템(16)은 도 2a 및 도 3a에 나타난 바와 같이 직사각형이거나, 원형이거나, 광 빔(20)의 모양과 일치하거나, 또는 기타 적당한 모양의 시야(36)의 이미지를 찍는다.
상기 광선이 두께를 가지는 결과로, 손가락(24)이 작업 표면(22)에 가까이 가면 갈수록, 이미지에서 그 모양을 나타내는 광의 강도가 커진다. 즉, 손가락(24)이 최초로 광 빔(20)을 터치하거나 관통할 때, 그에 대응하는 이미지는 손가락(24)을 나타내는 작은 광의 영역을 포함한다. 상기 손가락이 광 빔(20)을 더 깊이 관통함에 따라, 이미지에서 대응하는 광의 영역은 커진다. 최종적으로, 상기 손가락이 작업 표면(22)를 터치하면, 손가락(24)은 가장 큰 이미지를 돌려준다.
이미지 센서 시스템(16)은 계속해서 키보드의 검출 영역(23) 안에서 광원(12)에 의해 비추어지는 사용자 객체(손가락과 같은)의 이미지들을 수집한다. 상기 이미지들은 그 뒤 분석되고, 키 누름 또는 이벤트는 사용자 손가락(24)에 의해 프린트되거나 투사된 키들이 터치되는 것의 결과로서 보고된다. 장치(9)의 센서 시스템(16)은 시야(36) 안의 손가락 팁 또는 손가락 팁들의 위치를 검출하기 위하여, 복수의 이미지들(100, 104)를 캡처하도록 구성된다(도 2a, 3a 참조). 이미지들(100,104)은 다양한 글자들을 타이핑하는 제 1 손가락(106)과 제 2 손가락(108)의 이미지들의 예이다.
어떤 객체가 시야(36)에 들어가기 전에, 광 센서(16)는 어두운 이미지들을 캡처하며, 즉, 아무 객체나 손가락이 검출되지 않는다. 손가락(24)이 작업 표면(22) 위의 투사된 키보드 패턴(38)의 키를 터치하기 위하여 내려갈 때, 손가락이 부채 모양 광 빔(20)을 관통하거나 터치하는 즉시, 손가락의 아래 부분(손가락 팁)이 광원(12)에 의해 비추어진다. 손가락(24)의 비추어진 부분의 광의 반향이 그 후 광 센서 시스템(16)에 의해 촬영되거나 수신된다. 키를 터치한 후, 손가락은 검출 영역(23)을 떠나기 위해 위로 이동한다. 손가락(24)이 부채 모양 광 빔(20)과 상호작용 하지 않게 되면, 광 센서(16)은 광의 반향을 수신하지 않기 때문에 상기 손가락 팁을 검출하지 않는다.
센서 시스템(16)은 광 렌즈와 그에 대응하는 광 필터를 가지고 있는데, 그 필터는 상기 광원이 사용하는 주파수 대역이 아닌 광을 차단하고 원하는 광의 대역을 이미지 센서로 허용한다. 더 자세히는, 상기 대응하는 필터는 광원의 주파수 대역을 갖는 들어오는 광의 통과를 허용하고 그 나머지는 차단하도록 설계되었다. 광학 필터는 광원 유닛(12)에서 사출되는 광 빔(20)의 주파수 외의 상당한 광의 일부를 차단할 수 있다. 광학 필터는 광 빔(20)의 주파수에 따라 저주파 필터, 고주파 필터 혹은 중간주파 필터가 될 수 있다. 일 실시예에서는 광 빔(20)이 적외선 주파수대에서 사출되고 광학 필터는 적외선 주파수대 이외의 모든 주파수를 차단한다.
센서 시스템(16)의 광학 필터는 센서 시스템(16) 내에 제조될 수 있다. 많은 이미지 센서들은 제조 시 마이크로 렌즈 층을 도포하기 전에 도포된 컬러 필터 배열(color filter array, CFA)를 포함한다. 그렇지 않으면, 이미지 센서 제조 후 렌즈 위에 필름 형태의 물질을 덮어 광 빔(20)의 주파수를 제외한 모든 주파수를 차단하도록 할 수 있다.
광학 필터가 대부분의 들어오는 광을 막고 정해진 광의 범위만 통과시키기 때문에, 이미지의 화소 값들은 반향된 광의 양 또는 광의 강도를 나타낸다. 따라서, R(red), G(green), B(blue) 이미지는 존재하지 않는다. 본 개시 내용에 의해 생성된 이미지들은 단지 강도 이미지 또는 그레이 레벨(grey level) 이미지들이다. 주변 광의 간섭을 줄이기 위해, 먼저 이미지를 그 전의 배경 이미지로부터 차분하거나 그 반대로 할 수 있다. 이 배경 이미지는 장치가 켜지고 수집된 이미지들이 안정적일 때 수집되고, 일정 기간 동안 사용자의 활동이 없을 경우 업데이트된다(도 8 참조). 배경 이미지 차분 처리 후, 하나 또는 그 이상의 손가락들이나 객체들을 검출하는데 여러 알려진 이미지 세그멘테이션(segmentation) 기술들이 사용될 수 있다. 특히, 계산 효율을 이유로 히스토그램 기반 방법들이 적용되는데, 아래에 더 자세히 설명한다. 이미지 세그멘테이션 후, 손가락 또는 손가락 팁 등 후보 객체들이 정의되고, 이들은 이후에 크기에 따라 더욱 스크린(screen) 된다.
일 실시예에서는, 장치(9)는 저전력 움직임 검출 센서 장치를 포함하여, 움직임이 검출될 때 그 장치가 광 시스템(12) 및 센서 시스템(16)으로 신호를 보낼 수 있다. 이것은 저전력 모드를 위한 것으로, 가령 일정 시간 동안 시야(36) 내에 움직임이 없을 경우 광 시스템(12)와 센서 시스템(16)이 절전 모드(sleep mode)로 들어간다. 움직임이 검출되면, 광 시스템(12)는 부채꼴의 광선을 사출하기 시작하고 센서 시스템(16)은 이미지를 캡처하기 시작한다.
장치(9)는 장치(9)의 운영 상태 혹은 모드를 제어하기 위한 파워 버튼(30)을 포함할 수 있다. 추가적으로, 파워 버튼(30)은 블루투스와 같은 통신 프로토콜을 통해 장치(9)와 호스트 장치를 연결하는 데 사용될 수 있다. 예를 들어, 파워 버튼(30)을 두 번 누르는 것으로 장치(9)가 내부 블루투스 전파를 활성화 하려 한다는 것을 나타낼 수 있다. 더 나아가, 장치(9)는 장치(9)가 수면모드에서 더욱 빨리 회복할 수 있는 저전력 대기 모드로 들어가기 위하여 파워 버튼(32)를 이용할 수 있다. 예를 들어, 사용자는 파워 버튼을 3 번 누르는 것으로 저전력 대기 모드 또는 수면 모드로 들어갈 수 있다. 그렇지 않으면, 장치(9)는 파워 버튼(30)을 몇 초 동안 누르고 있으면 저전력 대기 모드로 들어가도록 프로그램 될 수 있다.
하우징(10)은 또한 장치(9)와 호스트 장치의 연결을 대체하여 통신 포트(32)를 포함할 수 있다. 예를 들어, 통신 포트(32)는 USB 포트, 파이어와이어(FireWire) 포트, 미니 USB 포트 등이 될 수 있다. 장치(9)는 통신 포트(32)를 통하여 호스트에 연결될 때 장치(9)가 모든 무선 통신 전파 혹은 장치(9)에 내장된 모든 배터리를 끄도록 설정될 수 있다. 장치(9)는 또한 통신 포트(32)를 통하여 호스트 장치에 직접 연결되었을 경우 자동으로 충전 모드로 들어갈 수 있다.
위에 언급한 바와 같이, 도 2a와 도 3a는 사용자가 키보드 패턴(38) 위에 키 누름을 실행함에 따라 센서 시스템(16)이 찍은 이미지들(100, 104)의 간략화된 예들이다. 도 5에 나타난 바와 같이, 설명의 편의를 위하여, 상기 이미지들은 키보드 패턴(38)의 부분(35)으로 제한되었다. 본 실시예에서, 상기 부분(35)은 장치(9)에서 보는 표준 QWERTY 키보드의 왼쪽 편에 대응한다.
이미지들(100, 104)은 도해의 편의를 위해 10 x 10의 화소의 배열(116)으로 나타내었다. 실제로는, 각 이미지는 수많은 화소들(116)을 가질 수 있다. 예를 들어, 도 4a는 20열 x 10행에 대응하는 200화소의 이미지의 부분(322)을 포함한다. 상기 부분(322)이 잘려나온 이미지는 2,000행과 2,000열에 해당하는 4,000,000 전체 화소를 가질 수 있다.
본 개시 내용의 일 실시예에 따르면, 센서 시스템(16)은 다양한 해상도를 갖는 CCD 혹은 CMOS 이미지 센서일 수 있다. 이러한 이미지 센서는 각 이미지에 수십만에서 수백만에 이르는 화소들 포함할 수 있고, 그 화소들은 행(135)과 열(134)의 행열로 이루어진다. 하나의 실시예에서, 센서 시스템(16)은 상대적으로 낮은 해상도의 이미지 센서로 구현된다. 예를 들어, 센서 시스템(16)은 640 행과 480 열의 화소를 갖는 VGA 이미지 센서일 수 있다. 다른 예로는, 센서 시스템(16)은 352 행과 288 열의 화소를 갖는 CIF 이미지 센서일 수 있다. 그러나, 센서 시스템(16)은 여기에 언급한 것 이외에도 더 높거나 낮은 어떠한 해상도의 이미지 센서로 구현될 수 있다.
센서 시스템(16)은 특정 주파수의 이미지들을 캡처하도록 설정될 수 있다. 일 실시예에서는, 센서 시스템(16)이 초당 30 프레임의 속도로 이미지를 캡처한다. 전력 소비 절감을 위해 작업 표면 상의 움직임이 검출되었을 때만 이미지를 캡처하게끔 이미지가 캡처되는 속도를 구성할 수 있다.
일 실시예에서는 센서 시스템(16)은 광원 유닛(12)의 광의 깜빡임과 이미지 캡처를 동기화한다. 예를 들어, 부채꼴의 광 빔(20)이 1 밀리세컨드 동안 켜지도록 깜빡이면 센서 시스템(16)의 셔터는 3 밀리세컨드 동안 열린다. 셔터는 광이 깜빡이기 이전에 1 밀리세컨드 동안 열리고 깜빡인 후에 1밀리세컨드 동안 열려서 손가락이나 스타일러스의 팁을 정확하게 캡처할 수 있다. 위에서 언급한 것처럼, 광 빔(20)을 깜빡이는 것은 빔당 더 많은 전력을 사용할 수 있게 하여 더 강한 광 빔(20)으로 귀착된다. 더 강한 광 빔(20)으로 팁들의 반사 또는 기타 방법으로 비추어진 팁들이 이미지에 더 많이 나타난다.
깜빡이는 광 빔(20)의 주파수는 이미지 센서(16)의 상세에서 결정될 수 있다. 예를 들면, 광 빔(20)은 이미지 센서(16)이 초당 30프레임으로 캡처하도록 설정된 경우 광 빔(20)은 30Hz로 깜빡인다. 어떤 이미지 센서(16)들은 보통 스트로브 출력 핀(strobe output pin)이라 불리는 핀들을 포함하는데, 이 핀들은 광 빔(20)의 깜빡임과 센서 시스템(16)의 이미지 캡처를 동기화하는 데 쓰일 수 있다. 이 스트로브 출력 핀은 광원 유닛(12)에 신호를 보내어 광 빔(20)의 사출을 시작하도록 하는데, 이는 센서 시스템(16)이 이미지를 캡처하였을 때, 또 센서 시스템(16)이 이미지를 캡처하도록 스케줄 된 때에서 얼마 후에 일어나서 사용자 손가락(24)을 밝히는데 이용가능한 광을 최대화한다.
만일 센서 시스템(16)이 광원 시스템(12)과 부정확하게 동기화되는 경우, 장치(9)는 팁(24)의 존재를 정확하게 검출하지 못할 수 있다. 이러한 검출 오류를 피하기 위해, 광원 유닛(12)에서 나오는 깜빡임은 나이퀴스트 학설(Nyquist theorem)에 따라 센서 시스템(16)의 캡처 주파수보다 최소한 두 배가 될 수 있다.
이미지들(100, 104)은 실시간으로 즉시 처리되고, 그 후 검출 영역(23)에 손가락이 없다고 결정되면 폐기된다. 장치는 이미지들을 분석하기 위하여 처리 및 제어 시스템(218)을 포함한다; 그러나, 대안적인 실시예에서는, 여기에 설명하는 대로 이미지들을 처리하기 위하여 호스트나 동반 장치를 사용할 수 있다.
도 6은 처리 및 제어 시스템(218)과 호스트(210)를 포함하는 가상 키보드 시스템(200)을 도식으로 나타낸 것이다. 처리 및 제어 시스템(218)은 광 감지 시스템(16)으로부터 이미지들을 수신하고, 사용자의 손가락들을 검출하기 위한 일련의 루틴들을 수행하고, 상기 이미지들에서 손가락 팁을 검출하고, 상기 손가락이 작업 표면을 터치하거나 검출 영역(23)에 들어간 시점을 찾고, 어떤 키가 터치되었는지 결정한다. 키 터치가 결정되면, 호스트(210)로 'Key-down' 이벤트가 보고된다. 만약 상기 손가락이 후속의 이미지에서도 여전히 그 키를 터치하고 있는 경우, 상기 손가락이 작업 표면(22)을 터치하고 있는 동안 계속 각 이미지 프레임마다 'Key-held' 이벤트가 보고된다. 상기 손가락이 상기 키로부터 멀리 이동하면, 'Key-up' 이벤트가 보고된다.
게다가, 처리 및 제어 시스템(218)은 작업 표면(22)을 하나 이상의 손가락이 터치하는지 결정하고, 각 손가락의 동작에 대하여 적절한 이벤트를 발생시킨다. 상기 각 이벤트는 도 6-12에 관하여 아래에서 더 자세히 설명될 것이다. 특히, 한 루틴이 열 그리고 행 히스토그램을 계산하고 그 히스토그램의 피크를 결정함으로써 손가락의 비추어지는 부분을 검출한다.
예를 들어, 도 2b와 도 3b를 보면 이미지들(100, 104)의 각각의 열 히스토그램들(110, 114)이 처리 및 제어 시스템(218)에 의해 생성된다. 도 2c, 도 2e는 도 2a과 동일한 객체들의 이미지를 찍은 것으로, 각각 도 2d, 도 2f의 행 히스토그램들(610, 612)을 생성하기 위하여 처리된 것이다. 도 3c는 도 3a 및 그에 따르는 행 히스토그램(616)으로부터의 두 객체들의 이미지이다. 상기 각 히스토그램들은 아래에 더 자세히 설명될 것이다.
가상 키보드 시스템(200)은 투사 시스템(26), 센서 시스템(16), 광원 유닛(12)을 포함한다. 처리 및 제어 시스템(218)은 중앙처리장치(CPU)(220), 메모리(222), 통신 유닛(224), 투사 제어 유닛(225), 센서 제어 유닛(227), 광원 드라이버(223)를 포함한다. 통신 링크(217a, 217b, 217c)는 투사 시스템(26), 센서 시스템(16) 광원 유닛(12)을 각각 처리 및 제어 시스템(218)으로 연결한다.
처리 및 제어 시스템(218)은 센서 시스템(16)으로부터 수집한 이미지들을 처리하고, 사용자 컴퓨터, 스마트폰, 랩탑, 또는 기타 사용자로부터 텍스트 입력을 받는 전자 장치와 같은 호스트 장치(210)와 통신한다. 시스템(200)은 통신 링크(214)를 통하여 호스트 장치(210)와 연결된다. 상기 통신 링크(214)는 유선 또는 무선이 될 수 있다. 호스트는 호스트(210)와 장치(200) 사이에 데이터 전송을 위한 통신 프로토콜을 제어할 수 있다. 상기 호스트(210)는 통신 링크(214)를 통하여 배터리 충전 서비스를 제공할 수 있다.
예를 들어, 도 2a는 부채 모양 광 빔(20)에 의해 비추어진 제 1 손가락(106), 제 2 손가락(108)을 포함하는 센서 시스템(16)에 의해 찍힌 제 1 이미지(100)이다. 제 1 손가락(106)은 제 1 이미지(106)의 제 1 모서리(118)에 가까이 위치한다. 제 1 손가락(106)이 비추어짐에 따라, 초생달 모양 혹은 곡선 모양이 캡처된다. 이 초생달 모양 혹은 곡선 모양이 일반적으로 인간의 손가락 혹은 펜이나 원통형 스타일러스와 같은 다른 곡선 객체가 촬영되는 모양이다. 만약 정사각형 객체가 사용된다면, 이미지는 다른 직사각형 모양을 캡처할 것이다.
도 6의 처리 및 제어 시스템(218)은 이러한 이미지들을 분석하여 손가락(24)이 언제 작업 표면(22)을 터치하는지 결정하고 키의 선택 또는 키 터치를 검출하도록 구성된다. 처리 및 제어 시스템(218)은 이미지들(100, 104)을 캡처하고 어떤 이벤트가 발생하였다면 무슨 이벤트가 발생하였는지 결정하도록 구성된다.
CPU(220)는 이미지 센서 보정, 이미지 상관관계, 디지털 신호 처리 등과 같은 메모리(222)에 저장된 명령을 실행하고, 사용자에 의해 어떤 키가 선택되는지 결정한다. 처리 및 제어 시스템(218)은 호스트 장치(210)로부터 명령(instruction)을 받고, 호스트 장치(210)로 명령을 전달하고, 작업 영역(23)에서 사용자의 손가락 또는 손가락들로부터의 텍스트 입력을 나타내는 데이터를 전송하기 위하여 통신 유닛(224)을 사용할 수 있다.
센서 제어 유닛(227)은 셔터 시간, 프레임 레이트, 이미지 센서의 시작 행 및 열(134), 끝 행 및 열(134) 등과 같은 센서 시스템(16)의 파라미터를 설정하고 작업 표면(22)의 스냅샷을 찍도록 센서를 발사한다. 처리 및 제어 시스템(218)은 센서 시스템(16)으로부터 이미지들을 읽고 메모리(222)에 저장한다.
투사 제어 유닛(225)은 투사 시스템(26)의 전반적인 출력을 제어하고 투사 시스템(26)을 켜거나 끈다. 광원 드라이버(223)는 광원 유닛(12)을 켜고 끄도록 광원 유닛(12)을 제어하고 출력을 조정할 수 있다. 처리 및 제어 시스템(218)은 광원 유닛(12)와 센서 시스템(16)을 동기화한다. 작업 표면(22)의 스냅샷을 만들기 위하여, 처리 및 제어 시스템(218)은 광원 드라이버(223)가 광원을 켜도록 제어하고 센서 제어 유닛(227)이 각 이미지를 수집하기 위하여 센서 시스템의 셔터를 열도록 제어한다. 상기 이미지를 노출하기에 충분한, 일정 시간 후에, 임베디드 처리 및 제어 시스템(218)은 광원을 끄고 셔터를 닫는다. 상기 이미지는 그 후 메모리에 저장된다.
처리 및 제어 시스템(218)은 상술한 바와 같이 센서 시스템(16)과 광원 유닛(12)을 동기화할 수 있다. 임베디드 처리 및 제어 시스템(218)은 연속된 또는 깜빡이는 광 빔(20)을 사출하도록 광원 유닛(12)을 제어할 수 있다. 시스템(200)은 호스트(210)와 무선 연결(214)을 통해 통신하는 동안 처리 및 제어 시스템(218)의 CPU(220)와 메모리(222)에 의지하도록 설정되어, 호스트 장치(10)와 시스템(200) 사이의 대역폭(bandwidth)을 보존할 수 있다.
도 7은, 본 개시 내용의 일 실시예에 따른 가상 키보드 시스템이 수행하는 한 방법의 블록도이다. 이미지 센서 시스템(16)은 투사된 키보드 패턴(38)의 작업 표면(22)의 이미지들을 수집한다. 이들 이미지들은 통신 링크(217b)를 통하여 이미지 센서 시스템(16)으로부터 처리 및 제어 시스템(218)로 전송된다.
처리 및 제어 시스템(218)은 상기 이미지들을 수신하고, 상기 이미지들을 처리하고 검출 영역 안의 손가락 팁들의 x 및 y 좌표로된 위치를 식별하는 팁 검출 루틴(228)을 수행한다. 팁 검출 루틴(228)은 도 8에 관하여 아래에서 더 자세히 설명될 것이다. 이어서, 터치 검출 루틴(230)은 손가락 팁이 하나라도 작업 표면을 터치하는지, 손가락 팁이 하나라도 아직 작업 표면 위에 있는지 보기 위하여 검출된 손가락 팁들을 처리하고 차단한다. 터치 검출 루틴(230)은 도 9에 관하여 아래에서 더 자세히 설명될 것이다.
터치 위치 계산 루틴(232)은 작업 표면(22)을 터치하는 손가락 팁들에 대한 정보를 수신하고 그 터치하는 팁들의 위치(x, y)를 결정하기 위하여 교정 테이블(234)에 액세스한다. 터치 위치 루틴(232)은 도 10에 관하여 아래에서 더 자세히 설명될 것이다. 키 식별 루틴(236)은 상기 위치(x, y)와 어떤 키가 연관되는지 결정하기 위하여 키 맵 표(238)을 검색하거나 기타 방법으로 액세스한다. 상기 검출된 키 정보는 식별되어 키 이벤트 생성 루틴(240)으로 보내진다. 게다가, 상기 검출된 키 정보는 현재 검출된 손가락 팁들에 의해 차단된 키가 없는지 보기 위하여 키 차단 검출 루틴(242)에 의해 분석된다. 상기 키 차단 루틴(242)과 키 식별 루틴(236)은 도 11에 관하여 아래에서 더 자세히 설명될 것이다.
키 차단 검출 루틴(242)은 키 이벤트 저장 루틴(244)으로부터 이전에 검출된 키들에 대한 정보를 수신한다. 키 차단 검출 루틴이 어떤 키들이 차단되었다고 결정하면, 그 차단된 키들은 키 이벤트 생성 루틴(240)으로 보고된다. 키 이벤트 생성 루틴은 검출된 터치된 키, 차단된 키들, 이전에 선택된 키들에 기초하여 키 이벤트를 생성한다. 상기 키 이벤트는 그 후 호스트(210)로 전송된다. 키 이벤트 생성 루틴(240)은 도 12에 관하여 아래에서 더 자세히 설명될 것이다.
도 8은 팁 검출 루틴(228)에 의해 실행되는 일련의 단계들의 순서도이다. 일반적으로, 일단 켜지면, 장치(9)는 작업 표면(22)의 이미지를 연속적으로 찍는다. 위에 언급한 바와 같이, 장치(9)에 의해 캡처된 최초의 이미지들은 손가락(24)을 포함하지 않을 것이고, 배경 이미지들로 간주된다. (246)에서, 가상 키보드의 초기화 동안, 상기 배경 이미지가 취득되고, 일정 시간 동안 사용자의 활동이 없으면 업데이트된다. 배경 이미지는 메모리(222)에 저장되거나 미래의 이미지들과의 비교를 위하여 기타 방법으로 저장될 수 있다.
다른 대안으로는, 센서 시스템(16)은 연속적으로 이미지들을 찍고 그 바로 직전 이미지와 현재 이미지를 비교할 수 있다. 상기 배경 이미지는, 100 프레임의 이미지들과 같이 큰 수의 매우 유사한 연속적인 이미지들이 일단 캡처되면 저장되거나 업데이트된다. 일단 현재 이미지가 배경 이미지와 다르다고 식별되면, 그 현재 이미지는 단계(250)에서 배경 이미지 데이터를 제거하기 위하여 처리된다.
248에서, 도 2a 또는 도 3a의 이미지들이 팁 검출 루틴(228)에 의해 수신된다. 상기 배경 이미지가 추출되거나 제거된 후, (250)에서, 열 방향 히스토그램이 단계(252)에서 상기 차분 이미지로부터 계산된다. 상기 히스토그램들은 화소들의 행들과 열들의 합들이다. 예를 들어, 도 2a에 나타난 바와 같이, 제 1 손가락(106)의 초생달 모양은 세 개의 화소들(120, 122, 124)을 가로질러 나타난다. 제 2 손가락(108)의 초생달 모양은 네 개의 화소들(126, 128, 130, 132)을 가로질러 나타난다. 도 2b는 화소들의 배열(116)의 각 열(134)의 합계를 나타내는 히스토그램(110)이다. 더욱 구체적으로, 각 화소들(116)의 열(134)의 값들은 열(134)당 광의 강도를 결정하기 위해 합해진다. 히스토그램(110)은 제 1, 제 2 손가락들(106, 108)에 대응하는 두 스파이크들(136, 138)을 각각 포함한다. 대안적인 실시예에서는, 히스토그램(110)으로부터 광의 강도의 평균이 사용될 수 있고, 이것은 다른 비율에 의한 합계와 유사할 것이다.
제 1 스파이크(136)의 강도는 제 2 스파이크(138)보다 큰데, 이는 제 1 손가락(106)의 초생달 모양이 제 2 손가락(108)의 초생달 모양보다 크기 때문이다. 제 1 스파이크(136)는 제 1 손가락(106)의 이미지의 대부분을 포함하는 화소(122)를 포함하는 열의 중심과 일치된다. 상기 화소(122)는 화소들 배열(116)에서 가장 큰 화소당 강도를 갖는다. 제 2 스파이크(138)의 강도는 제 2 손가락(108)의 중심 부분에 대응하는, 화소(128)와 화소(130)를 포함하는 두 인접한 열들의 경계와 일치한다. 게다가, 제 1 손가락(106)은 이미지 센서(16)에 더 가깝기 때문에 더 세다.
예를 들어, 일 실시예에서, 이미지 센서는 화소 배열의 각 화소(116)에 입사하는 광자(photon)의 강도를 캡처할 것이다. 각각 제 1 손가락(106)을 제 2 손가락(108)에 비교했을 때와 같이, 이미지 센서(16)에 가까운 객체들은 센서에서 더 먼 곳에 위치한 객체들에 비하여 이미지 센서로 캡처한 광자들이 높은 입사 강도를 제공할 것이다. 광자들의 강도는 가장 최근 리셋 시간부터 측정되는데, 이는 센서를 덮는 셔터의 열림일 수 있다. 광자 강도는 그 다음에 전압으로 변환된다. 화소 배열의 행의 각 화소는 동시에 읽어질 수 있다. 화소 배열의 모든 행을 읽은 후, 장치(9)는 각 열(134)의 각 화소를 더하여 화소 배열의 모든 열(134) 평균 강도를 계산할 수 있다. 이미지 센서가 시야(36) 혹은 검출 영역(23) 내의 특정 주파수의 필터된 반사들을 캡처하기 때문에, 히스토그램(예를 들면 강도와 열 번호의 도표)는 화소의 평균 강도의 상당한 증가가 손가락 혹은 손가락 팁의 반사에 대응하는 열들을 나타낸다.
이어서, 열 방향 히스토그램의 이동 평균(111)은 단계(254)에서 결정된다. 도 2b에 나타난 상기 이동 평균(111)은 미리 정해진 윈도우 폭 n에 대하여 계산된다. 예를 들어, 윈도우 (2m+1)의 열 k의 이동 평균(111)은 다음 공식에 따라 계산된다:
Figure 112012067983730-pat00001
COLUMN(i)는 열 i의 열 합계이다. 선호되는 실시예에서, 윈도우 폭은 홀수이다. 합해지는 데이터는 계산되는 열 k의 왼쪽과 오른쪽으로 m 열들을 포함한다. 예를 들어, 이동 평균(111)은 21 전체 열들을 합하고 21로 나누어 계산될 수 있다. 즉, 열 k에서 왼쪽으로 10 열, 더하기 열 k, 더하기 열 k에서 오른쪽으로 10 열이다.
단계(256)에서, 팁 검출 루틴(228)은 열 방향 합계들 또는 평균들 중에 어떤 열들이 이동 평균(111)보다 큰지 결정한다. 이동 평균(111)보다 큰 열들에 대응하는 세그먼트들(136a, 138a)은 검출 영역(23)에서 손가락(24)을 검출하기 위한 좋은 후보들이다.
258에서, 세그먼트(136a, 138a)와 연관된 열들은 행 방향 히스토그램(610, 612)을 결정하기 위해 처리되는 데이터를 제한하기 위하여 이미지(248)로부터 분리되거나 기타 방법으로 잘라진다. 예를 들어, 도 2c와 2e는 각각 세그먼트들(136a, 138a)와 연관되는 행 방향 히스토그램들을 위하여 이미지(100)으로부터 분리된 열들의 집합(134)의 예들이다.
하나의 실시예에서, 열 히스토그램(110)이 어디서 이동 평균(111)과 교차하는지에 기초하여, 즉, 제 1 스파이크(136)에서 점들(186, 188)과 제 2 스파이크(138)에서 점들(190, 192)에 기초하여, 팁 검출 루틴(228)은 이미지(100)의 제 1 슬라이스(184)와 제 2 슬라이스(194)의 폭을 결정한다. 상기 점들로부터, 팁 검출 루틴(228)은 제 1 손가락(106)을 포함하는 3개의 열들을 가지는 제 1 슬라이스(184)와 제 2 손가락(108)을 포함하는 4개의 열들을 가지는 제 2 슬라이스(194)를 취한다. 어떤 실시예에서는, 점들(186, 188, 190, 192)로부터 결정된 슬라이스는 단지 손가락의 대부분을 포함할 뿐이고, 이미지에서 그 손가락의 가장자리는 그 슬라이스에 포함되지 않으며, 도 4a를 참조한다.
258에서, 제 1 , 제 2 슬라이스(184, 194)의 행들은 각 합해져서 행 히스토그램들(610, 612)을 형성한다. 단계(260)에서, 행 방향 히스토그램(610, 612) 각각에 대한 이동 평균(611, 613)이 생성된다. 열 방향 히스토그램에서와 같이, 단계(262)에서 이동 평균보다 큰 히스토그램의 세그먼트(614, 615)가 식별된다. 세그먼트들(614, 615)와 연관되는 행들이 식별된다. 예를 들어, 도 2d에서, 제 1 손가락(106)은 제 1 행(180) 오직 한 개의 행에만 있다. 도 2e에서, 제 2 손가락(108)은 제 2 행(182) 오직 한 개의 행에만 있다. 실제로는, 하나의 손가락은 여러 행들의 화소들(116)을 차지할 가능성이 높으며, 도 4a를 참조한다.
264에서, 열 좌표들과 행 좌표들에 대응하는 손가락 팁 후보들이 형성된다. 예를 들어, 열 좌표들 (m, n)과 행 좌표들 (r, s)은 손가락 팁 후보를 내포하는 이미지의 블록을 정의할 수 있다. 이것은 이미지(100)에서 각 슬라이스(184, 194)에 대하여 반복된다.
점들(186, 188)과 점들(190, 192)은 각각 제 1 손가락(106)과 제 2 손가락(108)을 위한 제 1 열 좌표를 생성한다. 예를 들어, 만약 열들을 왼쪽 모서리로부터 번호를 매긴다면, 점들(186, 188)은 제 1 열 모서리(202)와 제 2 열 모서리(205)와 연관되어 열 좌표 (202, 205)를 형성할 수 있다. 제 2 손가락(108)의 점들(190, 192)은 그러면 제 3 열 모서리(206), 제 4 열 모서리(210)에 대응하는 열 좌표 (206, 210)를 가진다. 상기 열 좌표들은 보관되고 손가락이 어떤 문자를 선택하였는지 결정하기 위하여 교정 테이블들에 의하여 사용될 것이다.
행 좌표는 히스토그램(610)의 점들(618, 620)에 의해 결정되고, 아래 상술하는 바와 같이, 제 1 손가락(106)의 높이에 대응한다. 행 좌표는 제 1 행 모서리(601)와 제 2 행 모서리(602)에 대응하는 점들(618, 620)에 의해 결정될 수 있다. 따라서, 제 1 손가락(106)에 대한 행 좌표는 (601, 602) 이다. 행 히스토그램(612)과 이동 평균(613)이 교차하는 점들(622, 624)은 제 2 손가락(108)에 대응하다. 상기 점들은 또한 제 3 행 모서리(607)과 제 4 행 모서리(608)에 대응한다. 이로써 제 2 손가락(108)에 대한 행 좌표 (607, 608)가 제공된다.
제 1 손가락은 열 좌표 (202, 205)와 행 좌표 (601, 602)를 가지고 제 2 손가락은 열 좌표 (206, 210)와 행 좌표 (607, 608)을 가진다. 이 좌표들은 팁 박스를 정의한다, 즉, 어떤 이미지에서 팁의 경계들로, 아래 상술하는 바와 같이 다른 루틴에 의해 사용될 수 있다.
일단 손가락 팁 후보들이 얻어지고 열과 행 좌표들이 결정되면, 팁 검출 루틴(228)은 (266)에서 손가락 팁 필터를 수행한다. 상기 필터는 손가락 팁 후보들의 블록 크기에 기초하여 손가락 팁을 걸러 낸다, 즉, 열 좌표 (m, n)와 행 좌표 (r, s)에 기초하여 걸러 낸다. 팁 검출 루틴(228)은 손가락 팁 이미지 데이터를 출력한다, 즉, (268)에서 연관된 행과 열 좌표를 포함하는 손가락 팁 또는 손가락 팁들의 정보를 출력한다.
도 3a는 상기 히스토그램들로부터 행과 열의 좌표를 검출하는 또 다른 예이다. 제 2 이미지(104)는 제 1, 제 2 손가락(106, 108)의 또 다른 키 누름에 관한 것이다. 제 1, 제 2 손가락들(106, 108)은 제 3 이미지(104)에 서로 가깝게 나타난다. 제 1 손가락(106)은 여섯 화소들(160, 162, 164, 166, 168, 170)에 위치한다. 화소(160)와 화소(170)는 한 열에 있고, 화소(162)와 화소(168)는 두 번째 열에 있고, 화소(164)와 화소(166)은 세 번째 열에 있다. 상기 각 열들이 평균되거나 더해지면 제 1 손가락(106)의 강도는 도 3b의 제 3 히스토그램(114)의 제 1 스파이크(172)에 의해 도시된다.
제 2 손가락(108)은 네 화소들(174, 176, 178, 166)에 위치한다. 화소(166) 또한 제 1 손가락(106)의 일부분을 포함한다. 제 3 히스토그램(114)은, 제 1, 제 2 손가락들(106, 108) 양쪽의 일부를 포함하는, 화소(166)를 가지는 열에 대응하는 밸리(valley)(180)를 가진다. 제 3 히스토그램(114)은 또한 제 2 손가락(108)의 가장 두꺼운 일부에 대응하는 제 2 스파이크(182)를 가지고 있는데, 이는 이미지 센서가 캡처한 광 중 최대 강도가다.
제 1, 제 2 손가락들(106, 108)을 촬영해서 생긴 초생달 모양은 사용자의 손가락 크기 및 이미지 센서로부터의 거리에 따라 영역을 달리한다. 그 특정한 영역은 본 개시 내용에서는 상관이 없는데, 이는 각 이미지의 각 열이 더해져 강도 스파이크를 결정하기 때문이다. 또한, 만약 다른 객체들이 사용된다면, 그 이미지들은 반드시 초생달 모양이 되는 것은 아니다. 예를 들어, 만약 직사각형 스타일러스가 사용된다면, 이미지 센서는 그 스타일러스의 직사각형 표시를 캡처할 것이다.
이동 평균(626) 위의 히스토그램(114)의 일부분을 찾아내기 위하여 이동 평균(626)이 결정된다. 위에 검토한 바와 같이, 히스토그램(626)의 부분(628)은 이미지의 가장 센 화소를 결정하는 것을 도울 수 있고 손가락의 중심점을 결정하는 것을 도울 수 있다. 상기 이미지에서, 제 1, 제 2 손가락들은 아래 설명하는 키 차단 루틴에 의해 평가되고 분리되는 하나의 손가락으로 보일 수 있다.
도 9는 본 발명의 실시예에 따라 터치 검출 루틴(230)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 268에서, 팁 검출 루틴(228)으로부터의 손가락 팁 이미지 데이터는 터치 검출 루틴(230)에 의해 수신된다. 작업 표면(22) 상의 손가락의 터치는 3개의 조건들이 충족될 경우에 결정된다. 조건들은 사용자가 작업 표면을 터치하거나 키(key)를 선택하는 것을 의도하는지를 결정하기 위해 제공된다. 손가락이 충분히 신속하게 이동하여 빔을 아주 충분하게 침투하는 경우, 루틴은 사용자가 키를 선택하기 위해 터치하는 것을 의도하였다고 결정한다.
이 3개의 조건들은 이미지들에서 팁이 나타나는 동안의 카운트 또는 팁 에이지(age), 빔 두께와 비교되는 팁 치수, 및 팁 치수 임계값과 비교되는 팁 치수를 산출하는 것을 포함한다. 272에서, 팁 에이지는 팁이 나타나는 연속적인 프레임들의 수에 의해 결정된다. 카운트는 팁이 프레임에서 검출되자마자 시작된다. 카운트 또는 에이지는 팁이 검출되는 최초의 프레임에 대해 제로(zero)이다. 카운트 제로 이후의 각각의 연속적인 프레임에 대하여, 팁이 여전히 검출되는 각각의 프레임에 대해 1 카운트가 추가된다. 따라서, 팁이 다음 프레임에서 나타나는 경우, 팁 에이지는 1이 된다. 제 1 기준을 충족시키기 위하여, 카운트 또는 팁 에이지는 2개의 연속적인 이미지 프레임들보다 크거나 같아야하고, 6개의 연속적인 이미지 프레임들보다 작거나 같아야 한다.
팁 에이지가 제 1 기준을 충족하지 않는 경우, 터치 검출 루틴(230)은 274에서 "터치 검출되지 않음"을 반환한다. 팁 에이지가 제 1 기준을 충족하는 경우, 터치 검출 루틴(230)은 276에서 제 2 기준을 실행한다.
제 2 기준은 팁 이미지의 치수를 결정하고, 상기 치수를 광 빔(20)의 두께와 비교한다. 팁의 치수는 팁이 맞추어지는 행(row)들의 수에 의해 결정된다. 예를 들어, 행 좌표들(601, 602)을 가지는 제 1 손가락(106)은 1 행의 치수를 가진다.
광 빔(20)의 두께는 이미지의 하나의 단부(end)로부터 다른 단부까지 일정하지 않다. 예를 들어, 광 빔(20)의 두께는 광원(12)에 가까울수록 작고, 광 빔(20)의 두께는 광원(12)으로부터 멀수록 크다. 따라서, 제 1 손가락(106)은 제 2 손가락(108)과는 상이한 두께의 광 빔(20)과 상호작용한다. 위에서 언급된 바와 같이, 손가락들은 장치(9)에 가까울수록 더 크게 나타나고, 이것은 손가락들이 더 많은 광을 반사하기 때문이다.
장치(9)가 소매업자 또는 고객에게 수송되기 전에 테스트되고 있는 경우와 같은 빔 교정(beam calibration) 동안에, 빔 두께 테이블이 생성되거나 그렇지 않을 경우에는 얻어진다. 빔 두께 테이블은 빔의 어떤 두께를 팁 높이의 치수와 비교할 것인지를 결정하기 위하여 행 좌표들로 액세스될 수 있다. 제 2 기준을 충족시키기 위하여, 손가락은 빔의 적어도 1/3을 침투해야 한다. 따라서, 치수는 광 빔의 두께의 1/3보다 크거나 같아야 한다. 빔의 두께는 광원 변동들 및 다른 상황들에 기초하여 변동될 수 있으므로, 치수는 실제 두께의 1/3과 비교된다. 빔 두께의 다른 크기들은 장치(9)의 광원의 성질들 및 강도(intensity)에 기초하여 비교될 수 있다.
치수가 276에서 제 2 기준을 충족시키지 않는 경우, 터치 검출 루틴은 274에서 "터치 검출되지 않음"을 출력한다. 그러나, 276에서 제 2 기준이 충족되는 경우, 터치 검출 루틴은 278에서 제 3 기준이 충족되는지를 결정한다.
제 3 기준은 278에서, 하나의 프레임으로부터 다음 프레임까지 팁 치수에 있어서의 변화를 팁 치수 임계값과 비교한다. 작업 표면 상에서의 손가락의 터치를 검출하기 위하여, 제 1 프레임 및 연속적인 프레임으로부터의 팁 치수는 팁 치수 임계값보다 많이 변화해야 한다. 치수는 팁 높이 또는 팁이 걸쳐 있는 행들의 수라고 지칭될 수 있다.
팁 치수 임계값은 상수가 아니며, 오히려, 장치(9)로부터의 손가락의 거리에 종속된다. 팁 치수 임계값은 손가락이 센서(16)에 더 가까울 때에 더 크고, 손가락이 센서(16)로부터 더 멀리 떨어져 있을 때에 더 작다. 행 및 열 좌표들에 의해 결정되는 팁 치수 임계값들을 갖는 테이블은 단계(278)를 실행하기 위하여 팁 검출 루틴(230)에 의해 액세스될 수 있다. 이미지들을 테이블 내의 손가락들의 크기 또는 높이들과 비교하는 것은 작업 표면(22)에서 키 터치를 검출하기 위한 정보를 제공한다. 광원(12)의 플리커(flicker)와 같은 결함들은 이러한 테이블의 유용성에 영향을 줄 수 있다. 예를 들어, 광이 더 어두워질 때, 빔의 두께는 더 얇아지고, 이것은 손가락 주위에서 수집된 데이터에 영향을 준다.
대안적인 실시예에서는, 이미지들을 비교하고 이미지 시퀀스(image sequence)에서 손가락 크기의 큰 증가가 언제 있는지를 결정함으로써 키 터치가 결정된다. 일단 손가락이 부채꼴 광 빔(fan beam)(20)을 파괴하면, 장치는 비교 루틴을 시작한다. 이미지들에서의 손가락의 크기가 결정된다. 처리 및 제어 시스템(218)은 크기가 증가하고 있는지를 결정하기 위하여 순차적인 이미지들을 비교한다. 크기에 있어서의 증가가 결정된 후, 처리 및 제어 시스템(218)은 또 다른 2-3 개의 프레임들을 대기하고, 손가락 크기가 증가하였는지, 감소하였는지, 동일하게 머물러 있는지를 결정한다. 손가락 크기가 감소한 경우, 손가락은 작업 표면(22)을 터치하지 않았다. 손가락 크기가 동일하게 머물러 있는 경우, 처리 및 제어 시스템(218)은 또 다른 2-3 개의 프레임들을 대기하고, 변화가 발생하였는지를 결정한다. 손가락 크기가 프레임들의 임계 개수 동안에 증가하는 경우, 키 터치가 검출된다.
278에서, 치수에 있어서의 변화가 제 3 기준을 충족하지 않는 경우, 터치 검출 루틴은 274에서 "터치 검출되지 않음"을 출력한다. 그러나, 278에서 제 3 기준이 충족되는 경우, 터치 검출 루틴은 280에서 터치 검출을 반환한다.
대안적인 실시예에서, 팁 높이 대신에, 제 3 기준은 일련의 이미지들에서 손가락이 나타나는 시간 기간과 연관될 수 있다. 이 시간 기간은 작업 표면(22)을 향해 이동하는 손가락의 속도를 결정하기 위해 이용된다. 속도가 제로일 때에 터치가 검출되어, 손가락의 모든 이동은 일시적으로 정지되었다.
하나의 실시예에서, 이미지 센서(16)는 초(second) 당 30 내지 60 프레임들에서 동작하고, 얇은 광 빔은 빔 두께에 있어서 3 ~ 5 mm의 범위에 있다. 따라서,손가락(24)이 광 빔(20)을 차단하고 작업 표면(22)을 터치하므로, 손가락(24)의 이미지들의 1-3 개의 프레임들만 있을 수 있다. 그러나, 그렇게 적은 이미지들은 손가락(24)의 속도의 정확한 계산을 방해할 수 있다.
도 10은 터치 위치 계산 루틴(232)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 터치 검출 루틴이 280에서 터치 검출을 반환하는 경우, 터치 위치 계산 루틴(232)이 실행된다. 터치 위치 계산 루틴(232)은 행 및 열 좌표들 (r,s) 및 (m,n)과 같은, 단계(268)로부터의 손가락 팁 이미지 데이터를 수신한다. 행 및 열 좌표들은 손가락 팁이 발견될 가능성이 있는 이미지의 블록을 정의한다. 하나의 실시예에서, 블록은 도 4a에서와 같이 직사각형이지만, 다른 형상의 블록들이 이용될 수도 있다.
282에서, 터치 위치 계산 루틴(232)은 손가락과 연관된 블록을 결정하기 위하여 행 및 열 좌표들을 처리한다. 대안적인 실시예에서, 팁의 좌측 우측, 상부, 및 하부 경계에 의해 정의되는 팁 박스(tip box)와 같이, 행 및 열 좌표들에 의해 정의되는 블록보다 크기가 더 작을 수 있는 손가락 팁을 더욱 정밀하게 정의하기 위하여, 블록이 추가로 처리된다. 팁 경계들은 블록 내의 다른 화소들에 비해 최대의 강도를 가지는 화소를 찾음으로써 결정된다. 이것은 화소들을 개별적으로 비교함으로써, 또는 블록의 중심을 결정하고 가장 큰 강도를 갖는 화소를 찾기 위하여 중심 근처의 다수의 화소들을 비교함으로써 달성될 수 있다. 예를 들어, 도 2c에서, 최대의 강도를 갖는 화소는 열 에지(column edge)들(203 및 204) 사이의 열 및 행 에지(row edge)들(601 및 602) 사이의 행일 것이다. 화소의 좌표들은 (행 에지, 열 에지)에 의해 표현될 수 있어서, 좌표들은 (601, 203)일 것이다.
화소가 최대의 강도를 가짐으로써, 블록 내의 팁 박스가 결정될 수 있다. 터치 위치 계산 루틴(232)은 최대 화소 근처의 화소들과 비교하기 위한 임계 강도 값을 결정한다. 임계 강도 값은 최대 강도를 가지는 화소의 강도의 백분율(percentage)이다. 예를 들어, 최대 강도의 50%의 강도는 임계 강도 값일 수 있다. 이어서, 터치 위치 계산 루틴(232)은 팁 박스의 우측 및 좌측 경계들을 결정하고, 즉, 터치 위치 계산 루틴(232)은 팁 박스의 행 경계들을 결정한다. 터치 위치 계산 루틴(232)은 최대 강도를 가지는 화소의 우측의 단일 화소를 비교하는데, 이것은 우측의 화소가 임계 강도 값보다 큰지를 알아보기 위한 것이며, 더 클 경우, 터치 위치 계산 루틴(232)은 최대 강도를 가지는 화소의 2개 우측의 화소를 비교한다. 터치 위치 계산 루틴(232)은 비교되는 화소가 임계 강도 값보다 작을 때까지, 최대 강도를 가지는 화소의 우측의 각각의 화소를 계속 비교한다. 화소가 임계 강도 값보다 작은 경우, 임계 강도 값보다 작은 화소의 1개 전의 화소의 좌표들은 팁 박스의 우측 경계로서 이용된다.
이 동일한 처리는 팁 박스의 좌측 경계를 결정하기 위하여 최대 강도를 가지는 화소의 좌측의 동일한 행의 화소들에 대해 계속된다. 또한, 터치 위치 계산 루틴(232)은 동일한 열의 화소들을 비교하는 유사한 처리를 통해 팁 박스의 상부 및 하부 경계들을 최대 강도를 가지는 화소로서 결정한다.
팁 박스의 경계들이 일단 정의되면, 터치 위치 계산 루틴(232)은 284에서, 팁의 중심의 부화소 해상도(subpixel resolution)를 결정한다. 도 4a는 장치(9)에 의해 촬영 및 처리되는 바와 같이 손가락(324)의 팁 박스(322)를 포함하는 이미지의 부분이다. 이 팁 박스는 열 에지(300)로부터 열 에지(320)로 그리고 행 에지(400)로부터 행 에지(410)로 연장되는 200개의 화소들을 포함한다. 손가락(324)의 최대 강도를 갖는 화소는 (405, 310)에서 화소를 가질 수 있어서, (405, 310)에서 화소의 좌측, 우측, 상부 및 하부의 화소들을 임계값과 비교함으로써 팁 박스가 형성된다.
284에서, 부화소 해상도는 팁(324)의 중심을 결정하기 위해 이용된다. 터치 위치 계산 루틴(232)은 팁 박스(322)에 대한 열방향 히스토그램(column-wise histogram)(326) 및 행방향 히스토그램(row-wise histogram)(328)을 결정한다. 각각의 화소들은 히스토그램들을 형성하기 위하여 각각의 행 및 열에서 함께 더해진다. 손가락(324)의 중심의 좌표들(행, 열)은 행 및 열 히스토그램들(328, 326)로부터 결정된다. 예를 들어, 히스토그램들을 기준으로, 손가락(324)의 중심은 (405.5, 309)에 있다. 좌표들은 정수(integer) 값일 필요가 없고, 실제로, 정수가 아닌 값들을 가지는 것은 손가락들의 더욱 정밀한 중심에 이르게 한다.
센서(16)에 더 가까운 손가락들이 더 크게 나타나고 센서로부터 더 멀리 떨어져 있는 손가락들보다 더욱 양호한 해상도를 가지므로, 부화소 중심 검출이 유익하다. 부화소 해상도를 가지는 중심점을 결정하는 것이 더욱 정확하고, 이것은 키(key)의 사용자의 선택에 대한 더욱 정밀한 해독을 제공한다.
286에서, 터치 위치 계산 루틴(232)은 교정 테이블(234)을 액세스함으로써, 그리고 팁 중심(행, 열)의 쌍일차 보간(bilinear interpolation)을 이용함으로써, 팁의 중심으로부터 키보드와 연관된 (x,y) 좌표들에서 물리적 위칠르 결정한다. 특히, 검출된 객체들의 중심들 (행, 열)은 도 14 및 도 15의 교정 테이블들과 같은 교정 테이블들을 이용함으로써 실세계의 좌표들로 변환된다.
더욱 구체적으로, 쌍일차 보간은 손가락 팁의 중심의 부화소 값에 기초하여 팁의 물리적 위치에 대한 (x,y) 좌표들을 제공하기 위해 이용된다. 물리적 위치는 사용자에 의해 어떤 키가 선택되었는지를 결정하기 위해 이용될 것이다. 중심의 부화소 값은 더욱 초기의 처리 단계에서 결정된다. 부화소 값으로부터, 연관된 화소가 결정된다.
도 17은 정수가 아닌 행 밀 열 값들, (r, c)를 가지는 부화소 중심(630)을 기초로 한 연관된 화소의 그래픽 표현이다. 도 17은 물리적 위치의 좌표들의 x 값과 연관된다. 물리적 위치의 좌표들의 y 값은 유사한 방식으로 결정된다.
x 및 y 값들은 x-교정 테이블 및 y-교정 테이블로부터 각각 집합되고, 도 14 및 도 15를 참조한다. x 및 y 값들은 (r,c) 좌표들 및 가장 근접한 정수인 행 및 열 값들, 예를 들어, 도 17로부터의 r1, r2, c1, 및 c2로부터 결정된다.
쌍일차 보간을 수행하기 위하여, 시스템은 r1<r<r2 및 c1<c<c2이고, r1, r2, c1 및 c2는 모두 정수인 것으로 가정한다. 또한, r2=r1+1 및 c2=c1+1이다. 논의를 용이하게 하기 위하여, 도 17의 실시예에서, 손가락의 중심의 부화소 값은 (2.2,633.2)이고, r은 2.2와 동일하고 c는 633.2와 동일하다. 따라서, r1은 2와 동일하고 r2는 3과 동일하다. 또한, c1은 633과 동일하고 c2는 634와 동일하다. 일단 시스템이 r, r1, r2, c, c1 및 c2를 가진다면, 시스템은 (x,y) 좌표를 결정하기 위하여 x-교정 테이블 및 y-교정 테이블로부터 x 및 y 값들의 그룹을 결정할 수 있다.
도 17에 도시된 바와 같이, 4개의 x 값들은 손가락 팁의 중심의 부화소 값, X11, X12, X21 및 X22로부터 결정될 수 있다. X11에 관한 행 및 열은 (2,633)이고, 도 14의 x-교정 테이블로부터의 x에 대한 값은 302이다. 더욱 구체적으로, X11에 대한 x 값은 (r1,c1)이고, X12에 대해, 값은 (r1,c2)이고, X21에 대해, 값은 (r2,c1)이고, X22에 대해, 값은 (r2,c1)이다.
이러한 값들에 의해, 화소 (r,c)의 값 X(rc)는 X(r,c) = X11*(r2-r)*(c2-c) + X21*(r-r1)*(c2-c) + X12*(r2-r)*(c-c1) + X22*(r-r1)*(c-c1)에 의해 연산될 수 있다.
이와 유사하게, 화소 (r,c)의 값 Y(rc)는 Y(r,c) = Y11*(r2-r)*(c2-c) + Y21*(r-r1)*(c2-c) + Y12*(r2-r)*(c-c1) + Y22*(r-r1)*(c-c1)에 의해 연산될 수 있다.
X(r,c) 및 Y(r,c) 값들에 의해, 시스템은 키 맵을 액세스할 수 있고 사용자에 의해 어떤 키들이 선택되었는지를 결정할 수 있다.
교정 테이블들로 돌아가면, 이들은 이미지 좌표들(행, 열)로부터 실세계 좌표들(x,y)로의 맵핑(mapping)으로 구성된다. 도 14 및 도 15는 이미지들로부터 키보드에 대한 객체의 위치로 객체의 위치를 변환하기 위해 이용되는 예시적인 X-축 교정 테이블(500) 및 Y-축 교정 테이블(600)이다. 도 16은 교정 테이블들(500, 600)에서 참조되는 바와 같이 X-축 및 Y-축을 예시하는 장치(9)의 평면도이다. 도 16의 X 및 Y 축 상의 점 0,0은 장치(9)의 중심을 통과한다. 광 빔(20)은 Y-축 상에 중심이 있고, X-축 상의 양(positive) 및 음(negative)의 방향 모두에 연장된다. 광 빔(20)은 음의 Y-축이라고 통상적으로 참조되는 것으로 연장되지만, Y-축의 절반만이 이 논의에 관련되므로, Y-축에 대해 논의된 모든 값들은 양(positive)인 것으로 간주될 것이다.
도 14는 복수의 행들(504) 및 열들(502)을 가지는 X-축 교정 테이블(500)이다. 열들(502)은 열들(1-8 및 633-640)을 나타낸다. 행들(500)은 행들(1-8, 236-243, 및 473-480)을 포함한다. X-축 교정 테이블(500)은 640개의 열들 및 480개의 행들을 포함하며, 이것은 VGA 센서와 일치한다. 행 1, 열 1에서, 값은 음의 313(-313)이고, 이것은 31.3 mm에 대응할 수 있다. 이 값은 도 16의 X-축 상의 점 A에 대응할 수 있다. 센서 시스템은 장치(9)에 너무 근접한 팁들을 정확하게 캡처(capture)할 수 없으므로, X-축 교정 테이블(500)에서 예시된 값들은 장치(9)로부터 이격된 거리에서 시작한다. 행 1, 열 640에서, 값은 양의 380이고, 이것은 30.8 mm에 대응할 수 있다. 이 값은 도 16의 X-축 상의 점 B에 의해 표현된다.
행 480, 열 1에서, 값은 음의 4414(-4414)이고, 이것은 441.4 mm에 대응할 수 있다. 이 값은 도 16의 X-축 상의 점 C에 의해 표현된다. 행 480, 열 640에서, 값은 양의 4346이고, 이것은 434.6 mm에 대응할 수 있다. 이 값은 도 16의 X-축 상의 점 D에 의해 표현될 수 있다. 광 빔(20)의 경계로 변환되는 점들 A, B, C 및 D에 의해 정의되는 영역(188)은 검출가능 영역(23)에 대응하고, 이것은 센서 시스템에 의해 촬영되도록 이용가능하다.
도 15에서, Y-축 교정 테이블(600)은 행들(1-8, 236-243, 및 473-480)을 포함한다. 각각의 행의 값들은 376으로부터 5995까지 서서히 증가한다. Y-축 교정 테이블(600)의 각 열은 매 행에 대해 동일한 수들을 포함한다. 열들의 수는 X-축 교정 테이블(500)에서의 행들의 수에 대응한다. Y-축 교정 테이블(600)의 각 열에 대해 행 값들을 반복하는 것은 각 이미지에 대한 위치 정보를 결정함에 있어서 소프트웨어를 도울 수 있다.
예를 들어, 행 및 열 히스토그램들(328, 326)로부터 결정되는 손가락(324)의 중심의 좌표들(행,열)에 있어서, 가상 키보드와 연관된 위치를 나타내는 (x,y) 좌표들은 교정 테이블들을 이용하여 위치될 수 있다. 행 중심 좌표가 242이고 열 중심 좌표가 636인 경우, X 좌표값은 1312일 것이고, y 좌표값은 1796일 것이다. 또 다른 예로서, 행 중심 좌표값이 2.5이고 열 중심 v 좌표값이 6.5인 경우, x-축 테이블로부터의 4개의 값들 및 y-축 테이블로부터의 4개의 값들이 산출될 것이고, 즉, x-축 테이블에 대해, 열 2, 행 6(-317), 열 3, 행 6(-316), 열 2, 행 7(-318), 및 열 3, 행 7(-317)이 산출될 것이다. 모든 값들의 평균은 -317이고, 이것은 x 좌표일 것이다. 이와 유사하게, y-축 테이블에 대해, 열 2, 행 6(382), 열 3, 행 6(382), 열 2, 행 7(384), 및 열 3, 행 7(384)이 산출될 것이다. 이 모든 값들의 평균은 383이고, 이것은 검출가능 영역(23)에서 사용자의 손가락에 대응하는 (-317,383)의 좌표들을 반환할 것이다. 테이블들로부터의 이러한 위치 좌표는 288에서, 위치 검출 루틴(232)으로부터 출력될 것이다. 위치 좌표들은 키 맵(238)으로부터 선택된 키를 결정하기 위해 키 식별 루틴(236)에 의해 이용된다.
이 실시예에서는, 작업 표면 상의 전방으로부터 후방까지의 거리를 나타내기 위하여 480 화소들이 이용가능하다는 것에 주목해야 한다. 측면 대 측면 거리에 비례하는 전방-대-후방 거리가 구현되어야 할 경우, 행들 사이를 나타낸 거리들은 열들 사이를 나타낸 거리들에 비해 더 클 수 있다. 열들 사이의 차이들이 행들 사이의 거리들과 상이할 수 있는 두 번째 이유는 작업 표면 상의 작업 영역의 형상과 관련이 있다. 광원 유닛(12)으로부터 연장되는 광 빔(20)은 하우징으로부터 각을 이루어 연장된다. 따라서, 센서(16)로부터 멀리 떨어져 있는 데이터를 캡처하는 화소들은 센서(16)에 더 근접한 작업 영역의 부분으로부터 데이터를 캡처하는 화소들보다 위치에 있어서 더 큰 변화들을 나타낼 수 있다.
교정 테이블(500)은 장치의 테스팅 동안에 생성될 수 있다. 예를 들어, 교정 테이블은 장치의 전방에 고유의 이미지를 배치하고, 이미지를 캡처하고, 그 다음으로 그 이미지에 대해 데이터 처리를 수행함으로써 생성될 수 있다. 대안적으로, 교정 테이블(500)은 작업 영역 내에 객체를 배치하고, 이미지를 캡처하고, 작업 영역에서 객체의 위치를 변화시키고, 이미지를 다시 캡처하고, 작업 영역 내의 객체가 이미지 센서에서의 화소들과 어떻게 상관되는지를 결정하기 위하여 데이터를 처리함으로써 수동으로 생성될 수 있다.
교정 테이블은 메모리 내에 저장될 수 있고, 가상 메모리 장치 상에 위치된 프로세서에 의해 이용될 수 있다. 대안적으로, 교정 테이블은 호스트 장치가 장치와 통신할 수 있도록 동작 가능한 호스트 장치 상의 드라이버들의 설치 동안에 호스트 장치 상에 설치될 수 있다.
도 7로 돌아가면, 팁의 위치 좌표들은 키 식별 루틴(236)으로 공급되고, 이 키 식별 루틴은 위치 좌표들에 기초하여 현재 선택된 키를 결정하기 위하여 키 맵(key map)을 액세스한다. 예를 들어, 도 2a의 이미지(100)를 보면, 팁의 (x,y) 좌표들은 도 5의 키보드 상의 키에 대응한다. 예를 들어, 제 1 손가락(106)에 대한 위치 좌표는 키보드 패턴(38)의 부분(35) 상의 '5'에 대응하고, 제 2 손가락(108)은 'x'에 대응한다. 또한, 도 3a의 이미지(104)는 문자 'e'를 선택하는 제 1 손가락(106)을 포함하고, 제 2 손가락(108)은 문자 's'에 대응한다. 위치 좌표들은 교정 테이블들로부터 데이터를 검색하기 위하여 팁의 중심점을 이용함으로써 결정된다.
도 11은 키 차단 검출 루틴(242)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 키 차단 검출 루틴(242)은 이미지 센서(16)의 투시도로부터 임의 키들이 임의의 다른 키들에 의해 차단되는 것을 검출하기 위한 것이다. 일부 키 스트로크(key stroke)들은 예를 들어, 일부 글자들을 대문자로 시작하기 위하여, 손가락들을 매우 근접하게 함께 또는 중첩하여 촬영할 것이다. 예를 들어, 문자 'a'를 대문자로 하기 위해서는, 키들 'SHIFT +A'가 선택되어야 한다. 'SHIFT' 키가 먼저 눌러지고, 그 다음으로, 'A' 키가 눌러진다. 키 'A'가 눌러지기 전에, 'SHIFT' 키를 누르는 손가락은 이미지에서 볼 수 있다. 키 'A'가 일단 눌러지면, 'SHIFT' 키를 여전히 누르고 있는 손가락은 'A' 키를 누르고 있는 손가락에 의해 차단될 수 있다. 그 결과, 차단된 손가락은 촬영되지 않을 수 있거나 부분적으로만 촬영될 수 있다.
294에서, 키 검출 루틴(242)은 키 식별 루틴(236)으로부터 현재의 키 정보를 수신하고, 임의의 이전에 촬영된 키들이 현재의 이미지에서 더 이상 나타나지 않는지를 결정한다. 현재의 키 정보는 위치 좌표들 및 키 맵으로부터 복귀될 때에 선택된 키 또는 키들이다. 키 검출 루틴은 이전의 키 리스트를 현재의 키 리스트와 비교한다. 이전의 키들의 일부 키들이 현재의 이미지에서 더 이상 존재하지 않는 경우, 그 키들은 차단될 수 있거나, 사용자에 의해 더 이상 선택되지 않을 수 있다.
296에서, 루틴(242)은 팁 검출 루틴(228)으로 268에서, 손가락 팁 이미지 데이터 출력을 수신하며, 도 8을 참조한다. 다음으로, 키 차단 검출 루틴(242)은 열방향 비교에 기초하여, 임의의 누락 키들이 현재의 이미지 내에 위치된 현재의 손가락 팁들과 중첩하는지를 결정한다. 예를 들어, 누락 키들 중의 하나가 현재의 손가락 팁 이미지 데이터의 열들과 60 퍼센트만큼 중첩하는 경우, 누락 키는 차단된 키일 수 있다. 중첩 퍼센트는 이미지 센서의 구성 및 장치(9)의 특성들에 기초하여 필요에 따라 조절될 수 있다.
도 3a에서, 제 2 손가락(108)의 일부분만 이미지 센서(16)에 의해 볼 수 있다. 제 2 손가락(108)이 먼저 내려 놓아져서, 이미지(104) 이전의 이미지에서는, 촬영된 유일한 손가락이 손가락(108)인 경우에는, 제 2 손가락(108)은 gsuwo의 키 행 좌표들(604, 606) 및 현재의 키 열 좌표들(207, 209)을 가질 수 있고, 이것은 도 5의 's'에 대응한다.
도 3a의 이미지에서, 시스템은 (603,606)의 현재의 키 행 좌표들 및 (205,209)의 현재의 키 열 좌표들을 갖는 하나의 큰 손가락을 검출할 수 있다. 295에서, 키 차단 검출 루틴(242)은 누락 키 's'가 현재의 키 'e'와 적어도 60% 중첩되었다고 결정할 것이다.
298에서, 키 차단 검출 루틴(242)은 누락 키가 현재의 키에 의해 이미지 센서(16)로부터 분리되어 있는지를 결정한다. 분리되어 있다면, 루틴(242)은 330에서, 누락 키가 차단된 키라고 출력한다. 이미지 센서로부터의 거리의 결정은 행 좌표 수들을 비교함으로써 달성될 수 있다. 예를 들어, 더 낮은 행 수들이 이미지 센서에 더 가까운 경우에는, 그 행 수들이 현재의 키의 행 수들보다 더 크면, 키가 차단된다.
키 식별 루틴(236)으로부터 출력된 현재의 키 정보와, 키 차단 검출 루틴(242)으로부터 출력된 차단된 키 데이터는 키 이벤트 생성 루틴(key event generation routine)(240)에 의해 수신된다. 도 12는 키 이벤트 생성 루틴(240)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 332에서, 키 이벤트 생성 루틴(240)은 차단된 키들을 현재의 키 리스트에 추가한다. 334에서, 키 이벤트 생성 루틴(240)은 현재의 키 리스트를 이전의 키 리스트와 비교하고, 이벤트가 출력되어야 하는지를 결정한다. 아래는 가능한 키 이벤트들의 리스트이다.
● KEY-DOWN EVENT : 키가 이전의 키 리스트가 아니라 현재의 키 리스트에 있는 경우, 키 다운 이벤트는 336에서, 키와 연관되어 출력된다.
● KEY-UP EVENT : 키가 현재의 키 리스트가 아니라 이전의 키 리스트에만 있는 경우, 키 업 이벤트는 336에서, 키와 연관되어 출력된다.
● KEY-HELD EVENT : 키가 현재 및 이전의 키 리스트에 모두 있는 경우, 키 유지(held) 이벤트는 336에서, 유지된 키와 연관되어 출력된다.
키 이벤트들은 화면 또는 디스플레이 상에서 적절한 텍스트를 디스플레이하기 위하여 호스트에 의해 수신된다.
도 13은 합성 키 테이블(338), 교정 테이블, 및 키 맵 테이블을 사용하는 가상 키보드 시스템의 대안적인 실시예의 방법의 순서도이다. 합성 키 테이블은 교정 테이블(x, y 테이블들) 및 키 맵 테이블을 조합함으로써 생성된다. 이것은 팁의 위치를 결정하는 단계를 제거하고, 그 대신에, 특정 키에 맵핑하기 위하여 행 및 열 좌표들을 이용한다. 따라서, 연산 성능은 상당히 개선될 수 있다.
예를 들어, 도 2a에 대하여 위에서 논의된 바와 같이, 팁 블록과 연관된 행 및 열 좌표들은 합성 키 테이블을 액세스하여 손가락들에 의해 선택된 키들을 결정하기 위해 이용될 수 있다. 도 2a에서, 제 1 손가락(106)은 '5'를 선택하고, 제 2 손가락(108)은 'x'를 선택한다. 제 1 손가락(106)은 행 좌표들(601, 602) 및 열 좌표들(202, 205)을 가지고, 제 2 손가락(108)은 행 좌표들(607, 608) 및 열 좌표들(206, 210)을 가진다.
상기 설명된 다양한 실시예들은 추가적인 실시예들을 제공하기 위하여 조합될 수 있다. 상기 상세한 설명을 고려하여 실시예들에 대해 이러한 그리고 다른 변경들이 행해질 수 있다. 일반적으로, 다음의 청구항들에서는, 사용되는 용어들이 명세서 및 청구항들에서 개시된 특정한 실시예들로 청구항들을 한정하도록 해석되는 것이 아니라, 이러한 청구항들에 대해 부여된 균등물들의 전체 범위와 함께 모든 가능한 실시예들을 포함하도록 해석되어야 한다. 따라서, 청구항들은 개시 내용에 의해 제한되지 않는다.

Claims (18)

  1. 이미지 센서 시스템 및 처리 및 제어 시스템을 포함하는 가상 키보드 시스템에서 가상 키보드를 생성하기 위한 방법으로서,
    상기 이미지 센서 시스템에 의해, 가상 키보드의 입력장치를 만들기 위한 복수의 키(key)들을 가지는 가상 키보드의 표시를 포함하는 작업 영역의 이미지들을 캡처하는 단계;
    상기 처리 및 제어 시스템에 의해, 상기 복수의 키들 중의 선택된 키를 검출하는 단계; 및
    상기 처리 및 제어 시스템에 의해, 상기 선택된 키의 식별자를 호스트 장치에 출력하는 단계를 포함하고,
    상기 선택된 키를 검출하는 단계는,
    상기 캡처된 이미지들에서의 광 강도의 변형들에 대해 상기 캡처된 이미지들을 분석함으로써 상기 작업 영역에서 객체를 검출하는 단계; 및
    제 1 행 히스토그램 및 제 1 열 히스토그램에 기초하여 상기 선택된 키의 식별자를 결정하는 단계를 포함하고,
    상기 객체를 검출하는 단계는,
    상기 캡처된 이미지들의 각각에서 행들 각각에서의 광 강도에 기초하여 제 1 행 히스토그램을 생성하는 단계; 및
    상기 캡처된 이미지들의 각각에서 열들 각각에서의 광 강도에 기초하여 제 1 열 히스토그램을 생성하는 단계를 포함하는, 방법.
  2. 청구항 1에 있어서,
    상기 처리 및 제어 시스템에 의해, 상기 객체가 상기 작업 영역에서 작업 표면을 터치하는지를 검출하는 단계를 추가로 포함하고,
    상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
    각각의 캡처된 이미지로부터 배경 이미지를 추출하는 단계;
    상기 제 1 열 히스토그램에 대한 열 이동 평균 및 상기 제 1 행 히스토그램에 대한 행 이동 평균을 결정하는 단계;
    상기 열 이동 평균보다 큰 상기 제 1 열 히스토그램의 세그먼트들을 결정하는 단계;
    상기 열 이동 평균보다 큰 상기 제 1 열 히스토그램의 세그먼트들과 연관된 열들의 서브세트(subset)를 결정하는 단계;
    상기 행 이동 평균보다 큰 상기 제 1 행 히스토그램의 세그먼트들을 결정하는 단계; 및
    상기 행 이동 평균보다 큰 상기 제 1 행 히스토그램의 세그먼트들과 연관된 행들의 서브세트를 결정하는 단계를 포함하는, 방법.
  3. 청구항 2에 있어서,
    상기 이미지 센서 시스템에 의해, 상기 작업 표면 상에서 확산되는 광 빔을 제공하는 단계를 추가로 포함하고,
    상기 광 빔은 상기 객체가 상기 광 빔과 상호작용할 때에 캡처된 이미지들에서 광 강도를 생성하도록 구성되는, 방법.
  4. 청구항 3에 있어서,
    상기 처리 및 제어 시스템에 의해, 상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
    상기 행들의 서브세트에 기초하여 각각의 캡처된 이미지에서 상기 객체의 치수를 결정하는 단계; 및
    상기 객체의 상기 치수와 상기 광 빔의 두께를 비교하는 단계를 추가로 포함하는, 방법.
  5. 청구항 2에 있어서,
    상기 처리 및 제어 시스템에 의해, 상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
    상기 객체를 포함하는 연속적인 캡처된 이미지들의 수를 카운트하는 단계; 및
    상기 연속적인 캡처된 이미지들의 수가 터치 최저 임계값보다 높고 터치 최고 임계값보다 작은지를 결정하는 단계를 추가로 포함하는, 방법.
  6. 청구항 2에 있어서,
    상기 처리 및 제어 시스템에 의해, 상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
    연속적인 캡처된 이미지들을 비교함으로써 상기 객체의 치수가 증가하고 있는지를 결정하는 단계를 추가로 포함하는, 방법.
  7. 청구항 2에 있어서,
    상기 처리 및 제어 시스템에 의해, 상기 제 1 행 히스토그램 및 상기 제 1 열 히스토그램에 기초하여 상기 선택된 키의 식별자를 결정하는 단계는,
    상기 행들의 서브세트 및 상기 열들의 서브세트를 분석함으로써 상기 객체의 중심을 결정하는 단계;
    상기 객체의 중심의 좌표들을 결정하기 위하여 교정 테이블을 액세스하는 단계; 및
    저장된 키 맵을 액세스하여 상기 좌표들로부터 상기 선택된 키의 식별자를 결정하는 단계를 포함하는, 방법.
  8. 청구항 7에 있어서,
    상기 처리 및 제어 시스템에 의해, 상기 객체의 중심을 결정하는 단계는,
    상기 행들의 서브세트에 기초하여 제 2 행 히스토그램을 생성하는 단계;
    상기 열들의 서브세트에 기초하여 제 2 열 히스토그램을 생성하는 단계;
    상기 제 2 행 히스토그램의 제 1 피크를 결정하는 단계; 및
    상기 제 2 열 히스토그램의 제 2 피크를 결정하는 단계를 포함하는, 방법.
  9. 복수의 키들을 가지는 키보드 이미지의 표시를 가지는 작업 영역; 및
    이미지 센서 모듈 및 키 선택 모듈을 가지는 장치를 포함하는 시스템으로서,
    상기 이미지 센서 모듈은 상기 작업 영역의 이미지들을 캡처하도록 구성되고, 각각의 캡처된 이미지는 화소들의 행들 및 열들을 포함하고,
    상기 키 선택 모듈은 상기 캡처된 이미지들에서 광 강도의 변동들에 대해 상기 캡처된 이미지들을 분석하도록 구성되고, 상기 광 강도의 변동들은 상기 작업 영역에서 객체와 연관되고,
    상기 키 선택 모듈은,
    상기 캡처된 이미지들의 각각에서 상기 행들 각각의 광 강도에 기초하여 제 1 행 히스토그램을 생성하고,
    상기 캡처된 이미지들의 각각에서 상기 열들 각각의 광 강도에 기초하여 제 1 열 히스토그램을 생성하고,
    상기 제 1 행 히스토그램 및 상기 제 1 열 히스토그램에 기초하여 상기 복수의 키들의 선택된 키의 식별자를 결정하고,
    상기 선택된 키의 상기 식별자를 호스트 장치로 출력하도록 추가로 구성되는, 시스템.
  10. 청구항 9에 있어서,
    상기 키 선택 모듈은,
    상기 캡처된 이미지들에서 상기 객체를 검출하도록 구성된 객체 검출 모듈;
    상기 객체가 상기 작업 영역의 작업 표면을 터치하는지를 검출하도록 구성된 터치 검출 모듈;
    상기 객체에 의해 터치된 상기 작업 표면 상의 위치에 대응하는 상기 캡처된 이미지들로부터의 좌표를 결정하도록 구성된 위치 모듈;
    상기 캡처된 이미지들로부터의 상기 좌표에 기초하여 상기 선택된 키의 식별자를 결정하도록 구성된 키 식별 모듈; 및
    사용자에 의한 텍스트 입력과 연관된 호스트 장치로 키 이벤트 식별자를 출력하도록 구성된 키 이벤트 생성 모듈을 포함하는, 시스템.
  11. 청구항 10에 있어서,
    상기 키 이벤트 생성 모듈은,
    현재의 키 리스트 및 이전의 키 리스트를 저장하도록 구성된 키 이벤트 저장 모듈; 및
    차단된 키를 식별하기 위하여 상기 현재의 키 리스트 및 상기 이전의 키 리스트를 비교하도록 구성된 키 차단 검출 모듈을 더 포함하는, 시스템.
  12. 청구항 10에 있어서,
    상기 객체 검출 모듈은,
    각각의 캡처된 이미지로부터 배경 이미지를 추출하고,
    상기 제 1 열 히스토그램에 대한 열 이동 평균 및 상기 제 1 행 히스토그램에 대한 행 이동 평균을 결정하고,
    상기 열 이동 평균보다 큰 상기 제 1 열 히스토그램의 세그먼트들을 결정하고,
    상기 열 이동 평균보다 큰 상기 제 1 열 히스토그램의 상기 세그먼트들과 연관된 열들의 서브세트를 결정하고,
    상기 행 이동 평균보다 큰 상기 제 1 행 히스토그램의 세그먼트들을 결정하고,
    상기 행 이동 평균보다 큰 상기 제 1 행 히스토그램의 상기 세그먼트들과 연관된 행들의 서브세트를 결정하도록 추가로 구성되는, 시스템.
  13. 청구항 10에 있어서,
    상기 장치는 상기 작업 표면 상에 연장되는 광 빔을 제공하도록 구성되고, 상기 광 빔은 상기 객체가 상기 광 빔과 상호작용할 때에 상기 캡처된 이미지들에서 광 강도를 생성하도록 구성되는, 시스템.
  14. 청구항 12에 있어서,
    상기 터치 검출 모듈은,
    상기 행들의 서브세트에 기초하여 각각의 캡처된 이미지에서 상기 객체의 치수를 결정하고,
    상기 객체의 상기 치수를 상기 광 빔의 두께와 비교하도록 추가로 구성되는, 시스템.
  15. 청구항 10에 있어서,
    상기 터치 검출 모듈은,
    상기 객체를 포함하는 연속적인 캡처된 이미지들의 수를 카운트하고, 상기 연속적인 캡처된 이미지들의 수가 터치 최저 임계값보다 크고 터치 최고 임계값보다 작은지를 결정하도록 추가로 구성되는, 시스템.
  16. 청구항 10에 있어서,
    상기 터치 검출 모듈은 연속적인 캡처된 이미지들을 비교하고, 상기 객체의 치수가 증가하고 있는지를 결정하도록 구성되는, 시스템.
  17. 청구항 12에 있어서,
    상기 키 선택 모듈은 상기 행들의 서브세트 및 상기 열들의 서브세트를 분석하고, 상기 객체의 중심의 좌표들을 결정하기 위하여 교정 테이블을 액세스하고, 키 맵을 액세스함으로써 상기 좌표들로부터 상기 선택된 키의 식별자를 결정하도록 구성되는, 시스템.
  18. 청구항 17에 있어서,
    상기 키 선택 모듈은 상기 행들의 서브세트에 기초하여 제 2 행 히스토그램을 생성하고, 상기 열들의 서브세트에 기초하여 제 2 열 히스토그램을 생성하고, 상기 제 2 행 히스토그램의 제 1 피크를 결정하고, 상기 제 2 열 히스토그램의 제 2 피크를 결정하도록 구성되는, 시스템.
KR1020120092650A 2012-08-23 2012-08-23 가상 키보드를 위한 시스템 및 방법 KR101385263B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120092650A KR101385263B1 (ko) 2012-08-23 2012-08-23 가상 키보드를 위한 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120092650A KR101385263B1 (ko) 2012-08-23 2012-08-23 가상 키보드를 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20140026898A KR20140026898A (ko) 2014-03-06
KR101385263B1 true KR101385263B1 (ko) 2014-04-16

Family

ID=50641258

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120092650A KR101385263B1 (ko) 2012-08-23 2012-08-23 가상 키보드를 위한 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101385263B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101675228B1 (ko) * 2015-06-30 2016-11-10 주식회사 알엔디플러스 3차원 터치스크린 장치, 터치스크린 장치 및 그 제어방법 그리고 디스플레이 장치
ITUA20161818A1 (it) * 2016-03-18 2017-09-18 St Microelectronics Srl Dispositivo mems proiettivo per un picoproiettore di tipo flying spot e relativo metodo di fabbricazione
CN109062419A (zh) * 2018-08-09 2018-12-21 郑州大学 一种优化的激光投影虚拟键盘

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020079847A (ko) * 2000-02-11 2002-10-19 카네스타, 인코포레이티드 가상 입력 장치를 사용하여 데이터를 입력하는 방법 및 장치
KR20030038732A (ko) * 2000-09-07 2003-05-16 카네스타, 인코포레이티드 사용자 오브젝트와 가상 전달 장치의 상호작용을 탐색하고배치하는 준 3차원 방법 및 장치
KR20050009668A (ko) * 2003-07-18 2005-01-25 인터내셔널 비지네스 머신즈 코포레이션 컴퓨팅 장치용 투사식 사용자 인터페이스를 제공하기 위한방법 및 장치
US7215327B2 (en) 2002-12-31 2007-05-08 Industrial Technology Research Institute Device and method for generating a virtual keyboard/display

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020079847A (ko) * 2000-02-11 2002-10-19 카네스타, 인코포레이티드 가상 입력 장치를 사용하여 데이터를 입력하는 방법 및 장치
KR20030038732A (ko) * 2000-09-07 2003-05-16 카네스타, 인코포레이티드 사용자 오브젝트와 가상 전달 장치의 상호작용을 탐색하고배치하는 준 3차원 방법 및 장치
US7215327B2 (en) 2002-12-31 2007-05-08 Industrial Technology Research Institute Device and method for generating a virtual keyboard/display
KR20050009668A (ko) * 2003-07-18 2005-01-25 인터내셔널 비지네스 머신즈 코포레이션 컴퓨팅 장치용 투사식 사용자 인터페이스를 제공하기 위한방법 및 장치

Also Published As

Publication number Publication date
KR20140026898A (ko) 2014-03-06

Similar Documents

Publication Publication Date Title
US8937596B2 (en) System and method for a virtual keyboard
KR101851264B1 (ko) 가상 멀티터치 마우스와 스타일러스 장치를 위한 시스템 및 그 방법
US9557811B1 (en) Determining relative motion as input
US9720511B2 (en) Hand and object tracking in three-dimensional space
US10203765B2 (en) Interactive input system and method
US8971565B2 (en) Human interface electronic device
US7557935B2 (en) Optical coordinate input device comprising few elements
US20110267262A1 (en) Laser Scanning Projector Device for Interactive Screen Applications
US6947032B2 (en) Touch system and method for determining pointer contacts on a touch surface
CN105593786B (zh) 对象位置确定
US7313255B2 (en) System and method for optically detecting a click event
US20200389575A1 (en) Under-display image sensor
TWI450154B (zh) 光學觸控系統及其物件偵測方法
JP2013250882A5 (ko)
KR20160108386A (ko) 3d 실루엣 감지 시스템
JP5510907B2 (ja) タッチ位置入力装置及びタッチ位置入力方法
KR101385263B1 (ko) 가상 키보드를 위한 시스템 및 방법
GB2530150A (en) Information processing apparatus for detecting object from image, method for controlling the apparatus, and storage medium
CN102446034B (zh) 光学触控系统及其物件侦测方法
EP2332027A1 (en) Interactive displays
KR100962511B1 (ko) 전자펜 마우스 및 그 동작 방법
KR101197284B1 (ko) 터치 시스템 및 그 터치 인식 방법
KR20130136314A (ko) 터치 패널 장치
KR20130051760A (ko) 광학식 터치 패널 및 광학식 터치 패널의 터치 지점 감지 방법
IL171978A (en) Optical coordinate input device comprising few elements

Legal Events

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

Payment date: 20180410

Year of fee payment: 5