KR20140026898A - System and method for a virtual keyboard - Google Patents

System and method for a virtual keyboard Download PDF

Info

Publication number
KR20140026898A
KR20140026898A KR1020120092650A KR20120092650A KR20140026898A KR 20140026898 A KR20140026898 A KR 20140026898A KR 1020120092650 A KR1020120092650 A KR 1020120092650A KR 20120092650 A KR20120092650 A KR 20120092650A KR 20140026898 A KR20140026898 A KR 20140026898A
Authority
KR
South Korea
Prior art keywords
key
row
histogram
column
finger
Prior art date
Application number
KR1020120092650A
Other languages
Korean (ko)
Other versions
KR101385263B1 (en
Inventor
쳉-펑 쓰
래명 차
구재을
정광희
Original Assignee
주식회사 셀루온
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 셀루온 filed Critical 주식회사 셀루온
Priority to KR1020120092650A priority Critical patent/KR101385263B1/en
Publication of KR20140026898A publication Critical patent/KR20140026898A/en
Application granted granted Critical
Publication of KR101385263B1 publication Critical patent/KR101385263B1/en

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

Abstract

The present invention relates to a method for capturing an image of a work area including a display of a virtual keyboard having a plurality of keys and detecting a key selected among the plurality of the keys. Detecting the selected key includes analyzing a variation of the optical intensity in the captured image and detecting objects within the work area. Detecting the objects includes generating a first line histogram based on the optical intensity of each line of each captured image, generating a first row histogram based on the optical intensity of each row of each captured image and identifying a key selected on the basis of the first line histogram and the first row histogram. The method includes outputting an identifier of the selected key to a host device.

Description

가상 키보드를 위한 시스템 및 방법{SYSTEM AND METHOD FOR A VIRTUAL KEYBOARD}SYSTEM AND METHOD FOR A VIRTUAL KEYBOARD}

본 개시 내용은 키보드와 같은 텍스트 입력을 수행하기 위한 검출 영역에서, 하나 이상의 손가락과 같은, 객체 또는 객체들의 존재를 광학적으로 감지하는 시스템 및 방법에 관한 것이다.The present disclosure is directed to a system and method for optically detecting the presence of an object or objects, such as one or more fingers, in a detection area for performing text input, such as a keyboard.

현재, 스마트폰이나 터치패널을 가진 장치와 같이 작고, 가벼운 휴대용 장치가 널리 보급되었다. 이러한 휴대용 장치를 위하여, 텍스트와 문자 입력을 위한 쉬운 방법들이 몇몇 있다. 일부 장치들은 문자 입력을 위하여 작은 빌트인 또는 온보드 기계식 키보드 또는 터치 패널 위에 작은 프린트된 가상 키보드를 포함한다. 일부 상기 터치 패널은 스마트폰에 포함되므로, 크기가 작다. 다른 터치 패널은 iPad 또는 Kindle과 같이, 더 큰 장치에 포함되어, 더 큰 터치 패널 상의 프린트된 키보드를 사용한다. 터치 패널이란 디스플레이 영역 또는 스크린 안에서 터치의 존재와 위치를 검출할 수 있는 전자적 가상 디스플레이 이다. 터치 패널은 게임 콘솔, 일체형 컴퓨터, 타플렛 컴퓨터 및 스마트폰 등 장치에 일반적으로 사용된다.Currently, small, light handheld devices such as smartphones or devices with touch panels have become widespread. For these portable devices, there are some easy ways for entering text and characters. Some devices include a small built-in or onboard mechanical keyboard or a small printed virtual keyboard on the touch panel for text entry. Some of the touch panels are included in a smartphone, and thus are small in size. Other touch panels are included in larger devices, such as the iPad or Kindle, to use a printed keyboard on the larger touch panel. A touch panel is an electronic virtual display capable of detecting the presence and position of a touch within a display area or screen. Touch panels are commonly used in devices such as game consoles, integrated computers, tablet computers, and smartphones.

이러한 키보드들은 문자 메시지와 같이 작은 수의 문자를 입력하기에는 충분하지만, 200 단어 이상과 같은 긴 텍스트를 입력하기에는 충분하지 않는다. 일부 경우에는, 특히 나이 많은 사람들에게, 스마트폰의 상기 가상 및 수동 키보드는 한 문자를 치기에도 너무 작다. 결과적으로, 그러한 키보드의 사용자들은 많은 오타를 발생시킨다. 한편, 터치 패널 장치를 위한 가상 키보드는 단지 표준 키 크기를 달성하기 위해서 거의 스크린의 반을 차지할 수 있다.These keyboards are sufficient to enter a small number of characters, such as text messages, but not enough to enter long text, such as more than 200 words. In some cases, especially for older people, the virtual and manual keyboard of a smartphone is too small to type a single character. As a result, users of such keyboards generate many typos. On the other hand, a virtual keyboard for a touch panel device can occupy almost half of the screen just to achieve a standard key size.

텍스트 입력을 검출하기 위한 가상 키보드들이 제안되어 왔다. 예를 들어, "Device and Method for Generating a Virtual Keyboard/Display"라는 명칭으로 Liu et al.에게 허여된 미국 특허 제7,215,327호는 작업 표면을 스캔하여 사용자의 손가락의 위치와 움직임을 검출하기 위하여 두개의 스캐닝 레이저를 사용한다. 그 장치는 두 반사된 스캐닝 레이저로부터 수신한 시간의 차이를 비교함으로써 손가락의 위치를 검출한다.Virtual keyboards have been proposed for detecting textual input. For example, US Pat. No. 7,215,327, issued to Liu et al. Under the name "Device and Method for Generating a Virtual Keyboard / Display," describes two methods for scanning the working surface to detect the position and movement of a user's finger. Use a scanning laser. The device detects the position of the finger by comparing the difference in time received from the two reflected scanning lasers.

다른 예로는, "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도 또는 더 커야 한다. 그러한 큰 시야 각도에서는, 렌즈 왜곡이 너무 커서 호모그래피 변환이 객체의 실세계 위치를 계산하는 데 큰 오류를 야기할 수 있다. 결과적으로, 올바른 키를 선택하는 데 문제가 발생할 수 있다.Another example is U.S. Pat.No. 6,710,700 issued to Tomasi et al. Under the name "Quasi-three-dimensional Method and Apparatus to Detect and Localize Interaction of User-Object and Virtual Transfer Device". The virtual input using two optical systems is described. The first optical system OS1 projects light rays parallel to the working surface, and the second optical system OS2 receives and detects the light reflected from the first optical system OS1. Using homography, the actual position of an object in the real world can be calculated from the image pixel coordinates. In order to implement the virtual keyboard, the viewing angle of the second optical system OS2 must be 90 degrees or larger. At such large viewing angles, the lens distortion is so large that homography transformations can cause large errors in calculating the real world position of the object. As a result, problems may arise in selecting the correct key.

본 발명은 복수의 키들을 가지는 가상 키보드의 표시를 포함하는 작업 영역의 이미지를 캡처하고, 상기 복수의 키들 중에 선택된 키를 검출하는 방법 및 시스템을 제공하는 것을 목적으로 한다.It is an object of the present invention to provide a method and system for capturing an image of a work area comprising an indication of a virtual keyboard having a plurality of keys and detecting a selected key among the plurality of keys.

본 개시 내용은 풀사이즈의, 거의 무게가 없는 가상 키보드에 관한 것으로, 상기 키보드는 스크린 또는 터치 패널을 차지하지 않고, 따라서 스크린 또는 터치 패널의 정보를 가리지 않는다.The present disclosure relates to a full-size, virtually weightless virtual keyboard that does not occupy a screen or touch panel and thus does not obscure information on the screen or touch panel.

상기 가상 키보드는 작업 표면 위에 키보드 패턴을 생성하도록 구성된 메모리를 가진 프로세서, 광원, 이미지 센서를 포함하는 시스템의 일부이다. 상기 키보드 패턴은 휴대용 장치 위로 프린트되거나, 또는 작업 표면 위로 광학적으로 투사될 수 있다. 상기 프린트된 휴대용 키보드 패턴은 어떤 종이 한장이거나, 작업 표면 위에 미리 그려지거나, 또는 별도의 터치 패널 장치와 같은 스크린 위에 표시된 키보드 이미지일 수 있다. 키보드 패턴을 광학적으로 투사하는 것은 DOE(Diffractive Optical Elements) 또는 DLP(Digital Light Processing)과 같은 여러 가지 기술들을 사용하여 달성할 수 있다. 다른 대안으로는, 상기 키보드는 단순히 사용자를 적절한 키 위치로 안내하게 돕는 사진이나 기타 키보드의 물리적인 표현일 수 있다.The virtual keyboard is part of a system that includes a processor, a light source, and an image sensor having a memory configured to generate a keyboard pattern on a work surface. The keyboard pattern can be printed onto a portable device or optically projected onto a work surface. The printed portable keyboard pattern may be a piece of paper, a pre-drawn on a work surface, or a keyboard image displayed on a screen, such as a separate touch panel device. Optically projecting keyboard patterns can be accomplished using various techniques such as diffeactive optical elements (DOE) or digital light processing (DLP). Alternatively, the keyboard may simply be a photo or other physical representation of the keyboard to help guide the user to the appropriate key location.

본 개시 내용은 작업 영역의 이미지를 캡처하고, 상기 작업 영역은 복수의 키를 가지는 가상 키보드의 표시를 포함하고, 상기 이미지는 화소의 행과 열을 포함하는 방법에 관한 것이다. 상기 방법은, 캡처한 이미지에서 광의 강도의 변화를 분석하여 작업 영역 안의 객체를 검출하는 것을 포함하는, 복수의 키에서 선택된 키를 검출하는 것을 포함한다. 상기 객체의 검출은, 각 캡처한 이미지의 각 행의 광의 강도에 기초하여 제 1 행 히스토그램을 생성하는 것과, 각 캡처한 이미지의 각 열의 광의 강도에 기초하여 제 1 열 히스토그램을 생성하는 것과, 상기 제 1 행 히스토그램 및 제 1 열 히스토그램에 기초하여 선택된 키를 식별하는 것을 포함한다. 더하여, 상기 방법은 호스트 장치로 선택된 키의 식별자를 출력하는 것을 포함한다.The present disclosure relates to a method of capturing an image of a work area, the work area comprising a display of a virtual keyboard having a plurality of keys, the image comprising rows and columns of pixels. The method includes detecting a key selected from the plurality of keys, the method comprising detecting a change in intensity of light in the captured image to detect an object in the work area. Detecting the object comprises generating a first row histogram based on the intensity of light in each row of each captured image, generating a first column histogram based on the intensity of light in each column of each captured image, Identifying the selected key based on the first row histogram and the first column histogram. In addition, the method includes outputting an identifier of the selected key to the host device.

본 발명에 따르면, 복수의 키들을 가지는 가상 키보드의 표시를 포함하는 작업 영역의 이미지를 캡처하고, 상기 복수의 키들 중에 선택된 키를 검출하는 방법 및 시스템을 구현할 수 있다.According to the present invention, a method and system for capturing an image of a work area including a display of a virtual keyboard having a plurality of keys and detecting a selected key among the plurality of keys can be implemented.

도 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은 손가락 팁의 중심에 연관된 부화소 값의 그래픽 표현이다.
1A is a side view of a virtual keyboard system in accordance with an aspect of the present disclosure.
FIG. 1B is an isometric view of the virtual keyboard system shown in FIG. 1A.
2A-2F, 3A-3D, 4A-4C are images and histograms of fingers in a region of interest according to one embodiment of the disclosure.
5 is a portion of a keyboard pattern related to the images of FIGS. 2A-2F, 3A-3D, 4A-4C.
6 is a schematic diagram of a virtual keyboard system having an embedded processor according to one embodiment of the disclosure.
7 is a block diagram of one method performed by a virtual keyboard system according to an embodiment of the present disclosure.
8 is a flowchart of a method of a virtual keyboard system for performing a finger tip detection routine in accordance with an embodiment of the present disclosure.
9 is a flow chart of a method of a virtual keyboard system for performing a touch detection routine according to one embodiment of the disclosure.
10 is a flow chart of a method of a virtual keyboard system for performing a touch position calculation routine according to another embodiment of the disclosure.
11 is a flow chart of a method of a virtual keyboard system for performing a key blocking detection routine according to one embodiment of the disclosure.
12 is a flowchart of a method of a virtual keyboard system for performing a key event generation routine according to one embodiment of the disclosure.
13 is a block diagram of an alternative embodiment of a virtual keyboard system.
14 is an X-axis calibration table according to one embodiment of the disclosure.
15 is a Y-side calibration table according to an embodiment of the present disclosure.
16 is a plan view of superimposed coordinates on an apparatus and a work surface according to the present disclosure.
17 is a graphical representation of subpixel values associated with the center of a finger tip.

다음 설명에서는 개시 내용의 여러 실시예의 이해를 위하여 어떤 특정한 구체적인 내용을 제시하는 경우가 있다. 그러나, 본 분야의 기술자라면 본 개시 내용은 이러한 구체적인 내용 없이도 실현될 수 있음을 이해할 것이다. 다른 경우들에서는 본 개시 내용의 실시예들의 설명을 불필요하게 흐리게 하지 않도록 센서와 이미지 프로젝션(projection)에 관한 잘 알려진 구조들은 상술하지 않았다.In the following description, certain specific details are set forth in order to provide a thorough understanding of various embodiments of the disclosure. However, one of ordinary skill in the art appreciates that the present disclosure may be practiced without these specific details. In other instances well-known structures for sensor and image projection have not been described in detail so as not to unnecessarily obscure the description of embodiments of the present disclosure.

문맥상 달리 해석될 필요가 없는 경우, 다음 상세와 청구 전부에 있어, "구성한다"(comprise)라는 용어는 개방적, 포괄적인 의미로, 즉, "포함하고, 그러나 한정하지 않는"의 의미로, 쓰인다.Unless the context otherwise requires, in the following detailed description and in the claims, the term "comprise" is used in an open, inclusive sense, that is, in the sense of "including, but not limited to," Used.

또한, 이 상세 전체에서 "일 실시예"의 의미는 그 실시예와 관련하여 서술한 특정한 기능, 구조 혹은 특성이 최소한 하나 이상의 실시예에 포함된다는 뜻이다. 따라서, 이 상세 여기저기에서 나타나는 "일 실시예"는 반드시 동일 실시예를 나타내는 것이 아니다. 또한, 그 특정한 기능, 구조, 특성은 하나나 그 이상의 실시예에서 어떤 방식으로도 결합될 수 있다.Also, throughout this specification, "an embodiment" means that a particular function, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. Accordingly, "an embodiment" shown throughout this detail does not necessarily refer to the same embodiment. In addition, the specific functions, structures, and features may be combined in any way in one or more embodiments.

도면에서, 같은 참조 번호는 비슷한 기능이나 구성요소를 나타낸다. 도면에 나타난 크기나 상대적 위치는 항상 비율에 맞게 그려진 것은 아니다. 예를 들어, 여러 기능들의 모양들은 비율에 맞게 그려지지 않고, 도면의 가독성을 높이는 쪽으로 확대되고 위치되었다.In the drawings, like reference numerals refer to similar functions or components. The size or relative position shown in the figures is not always drawn to scale. For example, the shapes of the various functions are not drawn to scale, but enlarged and positioned to increase the readability of the drawings.

도 1a는 하우징(10)의 바닥(14)와 정면(15)에 인접하여 위치한 광원 유닛(12)를 포함하는 하우징(10)을 갖는 가상 키보드 장치(9)의 측면도이다. 가상 키보드 장치(9) 안에는, 광 투사 시스템(26)이 하우징(10)의 윗면(18)에 인접하여 위치하고, 광 감지 시스템(16)은 광 투사 시스템(26)과 광원 유닛(12) 사이에 위치한다. 상기 투사 시스템(26)은 검출 영역(23) 안에서 작업 표면(22) 위로 키보드 패턴(38)을 투사한다(도 1b 참조).FIG. 1A is a side view of a virtual keyboard device 9 having a housing 10 that includes a light source unit 12 positioned adjacent the bottom 14 and front 15 of the housing 10. In the virtual keyboard device 9, a light projection system 26 is located adjacent the top face 18 of the housing 10, and the light sensing system 16 is located between the light projection system 26 and the light source unit 12. Located. The projection system 26 projects the keyboard pattern 38 over the working surface 22 in the detection area 23 (see FIG. 1B).

사용자의 손가락(24)은 광원 유닛(12)에 의해 생성된 부채 모양 광 빔(20)과 교차하게 나타내었다. 상기 사용자 손가락은 작업 표면(22)를 건드릴 수도 있지만, 부채꼴 광 빔(20)을 파괴하기만 하면 검출된다. 검출 영역(23)은 광 빔(20)과 센서 시스템(16)에 의해 검출될 수 있는 영역으로 정의되는 2차원 영역이다. 작업 표면(22)는 센서 또는 기계적 또는 전기적 구성요소를 포함하지 않고, 탁자 표면, 비행기 쟁반, 종이 한장, 또는 기타 모든 적당한 표면이 될 수 있다. 상기 검출 영역(23)은 이미지 센서(16)이 그 안에서 사용자 손가락(24)의 팁 또는 스타일러스나 펜의 팁과 같은 기타 팁의 이미지를 캡처할 수 있는 모든 영역이다.The user's finger 24 is shown to intersect the fan shaped light beam 20 generated by the light source unit 12. The user finger may touch the working surface 22 but is detected only by breaking the sector light beam 20. The detection area 23 is a two-dimensional area defined as an area that can be detected by the light beam 20 and the sensor system 16. The working surface 22 does not include sensors or mechanical or electrical components, and may be a table surface, an airplane tray, a piece of paper, or any other suitable surface. The detection area 23 is any area where the image sensor 16 can capture an image of the tip of the user's finger 24 or other tip, such as the tip of a stylus or pen, therein.

광원 유닛(12)은 적외선(IR) 대역(700nm~1,400nm)과 같은, 특정 주파수 대역의 얇은 부채 모양 광 빔(20)을 방사한다. 이상적으로는, 얇은 부채 모양 광 빔(20)은 작업 표면(22)에 평행하고 가깝다. 광 감지 시스템(16)은 작업 표면(22)를 내려다 보도록 각도가 주어지거나 기타 방법으로 구성되고, 검출 영역(23) 안의 작업 표면(22) 위의 사용자의 활동을 계속해서 검출한다.The light source unit 12 emits a thin fan-shaped light beam 20 of a specific frequency band, such as an infrared (IR) band (700 nm to 1,400 nm). Ideally, the thin fan shaped light beam 20 is parallel and close to the working surface 22. The light sensing system 16 is angled or otherwise configured to look down the work surface 22, and continues to detect the user's activity on the work surface 22 in the detection area 23.

하우징(10)은 광을 작업 표면(22) 위로 투사하게 설정된 광원(25)을 포함할 수 있다. 상기 광원(25)는 사용자에게 시야(36)의 경계선에 대한 가시적 표시를 제공하여, 사용자의 손가락 동작이 시야(36) 안에 있을 수 있게 한다. 광(25)은 LED, 백열등 등 일 수 있다. 추가적으로, 광원(25)의 강도는 사용자에 의해 필요한 강도로 증가시키거나 감소시킬 수 있다.The housing 10 can include a light source 25 set to project light onto the work surface 22. The light source 25 provides the user with a visual indication of the boundary of the field of view 36, allowing the user's finger movements to be in the field of view 36. Light 25 may be an LED, an incandescent lamp, or the like. In addition, the intensity of the light source 25 can be increased or decreased to the intensity required by the user.

일 실시예에서, 광원(25)은 작업 표면(22)의 일부를 밝히도록 위치할 수 있다. 광원(25)은 오직 센서 시스템(16)에 의해 검출될 수 있는 손가락 움직임의 대략의 영역을 사용자에게 나타내는 기능 만 할 수 있다. 한 시행예에서, 상기 센서 시스템은 광원 유닛(12)에 상응하는 주파수의 광으로 설정되어 사용자 손가락(24)로부터의 반사를 개선하도록 설정된다. 광원(25)이 센서 시스템(16)과 투사 시스템(26) 위에 있는 것으로 나타나 있지만, 광원(25)은 센서 시스템(16) 아래나 옆에 위치할 수 있다. 일 실시예에 따르면, 광원(25)은 장치(9) 위, 주변, 근접하게 미관적으로 좋은 디자인을 만들기 위하여 위치된 복수의 광원을 포함할 수 있다.In one embodiment, the light source 25 may be positioned to illuminate a portion of the work surface 22. The light source 25 can only function to indicate to the user an approximate area of finger movement that can be detected by the sensor system 16. In one embodiment, the sensor system is set to light at a frequency corresponding to the light source unit 12 so as to improve reflection from the user finger 24. Although light source 25 is shown above sensor system 16 and projection system 26, light source 25 may be located below or next to sensor system 16. According to one embodiment, the light source 25 may comprise a plurality of light sources positioned on the device 9 in order to create aesthetically good design in close proximity to the periphery.

일 실시예에서, 광 빔(20)은 작업 표면(22)와 평행하게 투사되고 그 작업 표면에서 일정 거리(21) 떨어진다. 일 실시예에서, 그 거리(21)는 3에서 10mm 사이이다. 그러나, 광 빔(20)은 가령 불균일, 불규칙 혹은 각도 있는 작업 표면들과 같은 비정규적 작업 표면들에는 다른 각도로 투사될 수 있다. 광원 유닛(12)은 특정 주파수의 광을 얇은 부채꼴의 광 빔(20)으로 투사할 수 있는 LED, 레이저 혹은 다른 광원이 될 수 있다. 광 빔(20)은 0.1 mm에서 0.5 mm 범위, 또는 대체적으로, 3mm에서 5mm 범위의 두께를 가진다. 광 빔(20)은 광 빔(20)의 빔 내에 있을 때 손가락 팁을 비추기에 충분한 강도로 방사한다. 그 광은 어떠한 주파수여도 상관없지만, 비가시적일 것이 선호된다. 즉, 주파수 범위가 1에서 430THz인 적외선(IR) 영역이 선호되는 선택이다.In one embodiment, the light beam 20 is projected parallel to the work surface 22 and is a distance 21 away from the work surface. In one embodiment, the distance 21 is between 3 and 10 mm. However, the light beam 20 may be projected at different angles to irregular work surfaces, such as irregular, irregular or angular work surfaces. The light source unit 12 may be an LED, laser or other light source capable of projecting light of a particular frequency into the thin fan shaped light beam 20. The light beam 20 has a thickness in the range of 0.1 mm to 0.5 mm, or in the range of 3 mm to 5 mm. The light beam 20 emits with sufficient intensity to illuminate the finger tip when in the beam of the light beam 20. The light may be of any frequency, but is preferably invisible. In other words, an infrared (IR) region with a frequency range of 1 to 430 THz is the preferred choice.

일 실시예에서는, 광원 유닛(12)은 광 빔(20)을 깜빡이며 투사한다. 광 빔(20)을 깜빡이며 투사하는 것은 광 빔(20)을 계속적으로 투사하는 것에 비하여 전력 소비를 절약하는 장점이 있다. 예를 들어, 광원 유닛(12)가 주파수 30Hz, 듀티 사이클(duty cycle) 50%로 깜빡이며 광을 투사한다면, 광원 유닛(12)은 다른 경우에 비하여 절반의 시간만 켜져 있게 된다. 추가적인 전력 효율은 배터리 수명을 늘리거나 절약된 전력만큼 광 빔(20)의 강도를 증가시키는데 사용할 수 있다. 광 빔(20)의 강도가 클수록 센서 시스템(16)으로 캡처하는 이미지의 신호대잡음비(signal-to-noise ratio) 특성이 좋아진다. 신호대잡음비가 증가하면 측정 정확도가 증가하고 따라서 장치(9)의 정확도와 성능이 개선된다.In one embodiment, the light source unit 12 flashes and projects the light beam 20. Flashing and projecting the light beam 20 has the advantage of saving power consumption as compared to continuously projecting the light beam 20. For example, if the light source unit 12 flashes at a frequency of 30 Hz and a duty cycle of 50% and projects light, the light source unit 12 is only turned on for half the time as compared to other cases. Additional power efficiency can be used to increase battery life or increase the intensity of the light beam 20 by the saved power. The greater the intensity of the light beam 20, the better the signal-to-noise ratio characteristic of the image captured by the sensor system 16. Increasing the signal-to-noise ratio increases the measurement accuracy and thus improves the accuracy and performance of the device 9.

도 1b는 도 1a의 가상 키보드 장치(9)가 가상 작업 표면(22) 위로 키보드 패턴(38)을 투사하는 등각도를 보여준다. 처음에는, 작업 표면(22) 위 또는 검출 영역(23) 안에 손가락이 없다. 사용자는 광 빔(20)에 의해 창조된 평면을 파괴하기 위하여 손가락(24)이나 스타일러스 등 하나 혹은 그 이상의 손가락 팁을 이용하여 키를 선택할 수 있다. 일 실시예에서, 사용자의 손가락(24)은 반드시 오직 검출 영역(23) 안에서 광선을 파괴해야 가상 키보드(38)의 키를 선택할 수 있다. 그러나, 다른 실시예에서는, 장치(9)는 손가락 팁이 작업 표면(22)를 터치하였을 때 사용자의 손가락(24)이 키를 선택하였다고 결정한다.FIG. 1B shows an isometric view of the virtual keyboard device 9 of FIG. 1A projecting the keyboard pattern 38 onto the virtual work surface 22. Initially, there are no fingers on the working surface 22 or in the detection area 23. The user can select a key using one or more finger tips, such as a finger 24 or a stylus, to destroy the plane created by the light beam 20. In one embodiment, the user's finger 24 must destroy the ray only in the detection area 23 to select the keys of the virtual keyboard 38. However, in another embodiment, the device 9 determines that the user's finger 24 has selected a key when the finger tip has touched the work surface 22.

센서 시스템(16)은 광 빔(20)의 평면에서 팁 또는 팁들의 존재를 검출한다. 상기 센서 시스템(16)은 도 2a 및 도 3a에 나타난 바와 같이 직사각형이거나, 원형이거나, 광 빔(20)의 모양과 일치하거나, 또는 기타 적당한 모양의 시야(36)의 이미지를 찍는다.Sensor system 16 detects the presence of a tip or tips in the plane of light beam 20. The sensor system 16 takes an image of the field of view 36 in a rectangular, circular, coincident with the shape of the light beam 20, or other suitable shape as shown in FIGS. 2A and 3A.

상기 광선이 두께를 가지는 결과로, 손가락(24)이 작업 표면(22)에 가까이 가면 갈수록, 이미지에서 그 모양을 나타내는 광의 강도가 커진다. 즉, 손가락(24)이 최초로 광 빔(20)을 터치하거나 관통할 때, 그에 대응하는 이미지는 손가락(24)을 나타내는 작은 광의 영역을 포함한다. 상기 손가락이 광 빔(20)을 더 깊이 관통함에 따라, 이미지에서 대응하는 광의 영역은 커진다. 최종적으로, 상기 손가락이 작업 표면(22)를 터치하면, 손가락(24)은 가장 큰 이미지를 돌려준다.As a result of the thickness of the light beam, the closer the finger 24 is to the work surface 22, the greater the intensity of light in its image that represents its shape. That is, when the finger 24 first touches or penetrates the light beam 20, the corresponding image includes a small area of light representing the finger 24. As the finger penetrates the light beam 20 deeper, the area of the corresponding light in the image becomes larger. Finally, when the finger touches the work surface 22, the finger 24 returns the largest image.

이미지 센서 시스템(16)은 계속해서 키보드의 검출 연역(23) 안에서 광원(12)에 의해 비추어지는 사용자 객체(손가락과 같은)의 이미지들을 수집한다. 상기 이미지들은 그 뒤 분석되고, 키 누름 또는 이벤트는 사용자 손가락(24)에 의해 프린트되거나 투사된 키들이 터치되는 것의 결과로서 보고된다. 장치(9)의 센서 시스템(16)은 시야(36) 안의 손가락 팁 또는 손가락 팁들의 위치를 검출하기 위하여, 복수의 이미지들(100, 104)를 캡처하도록 구성된다(도 2a, 3a 참조). 이미지들(100,104)은 다양한 글자들을 타이핑하는 제 1 손가락(106)과 제 2 손가락(108)의 이미지들의 예이다.The image sensor system 16 subsequently collects images of a user object (such as a finger) that is illuminated by the light source 12 within the detection region 23 of the keyboard. The images are then analyzed and a key press or event is reported as a result of the keys printed or projected by the user's finger 24 being touched. The sensor system 16 of the device 9 is configured to capture a plurality of images 100, 104 in order to detect the position of a finger tip or finger tips within the field of view 36 (see FIGS. 2A, 3A). Images 100 and 104 are examples of images of first finger 106 and second finger 108 that type various letters.

어떤 객체가 시야(36)에 들어가기 전에, 광 센서(16)는 어두운 이미지들을 캡처하며, 즉, 아무 객체나 손가락이 검출되지 않는다. 손가락(24)이 작업 표면(22) 위의 투사된 키보드 패턴(38)의 키를 터치하기 위하여 내려갈 때, 손가락이 부채 모양 광 빔(20)을 관통하거나 터치하는 즉시, 손가락의 아래 부분(손가락 팁)이 광원(12)에 의해 비추어진다. 손가락(24)의 비추어진 부분의 광의 반향이 그 후 광 센서 시스템(16)에 의해 촬영되거나 수신된다. 키를 터치한 후, 손가락은 검출 영역(23)을 떠나기 위해 위로 이동한다. 손가락(24)이 부채 모양 광 빔(20)과 상호작용 하지 않게 되면, 광 센서(16)은 광의 반향을 수신하지 않기 때문에 상기 손가락 팁을 검출하지 않는다.Before any object enters the field of view 36, the light sensor 16 captures dark images, ie no object or finger is detected. As the finger 24 descends to touch the keys of the projected keyboard pattern 38 on the work surface 22, as soon as the finger penetrates or touches the fan-shaped light beam 20, the lower part of the finger (finger) Tip) is illuminated by the light source 12. Echoes of light in the illuminated portion of the finger 24 are then captured or received by the light sensor system 16. After touching the key, the finger moves up to leave the detection area 23. If the finger 24 does not interact with the fan shaped light beam 20, the light sensor 16 does not detect the finger tip because it does not receive the echo of light.

센서 시스템(16)은 광 렌즈와 그에 대응하는 광 필터를 가지고 있는데, 그 필터는 상기 광원이 사용하는 주파수 대역이 아닌 광을 차단하고 원하는 광의 대역을 이미지 센서로 허용한다. 더 자세히는, 상기 대응하는 필터는 광원의 주파수 대역을 갖는 들어오는 광의 통과를 허용하고 그 나머지는 차단하도록 설계되었다. 광학 필터는 광원 유닛(12)에서 사출되는 광 빔(20)의 주파수 외의 상당한 광의 일부를 차단할 수 있다. 광학 필터는 광 빔(20)의 주파수에 따라 저주파 필터, 고주파 필터 혹은 중간주파 필터가 될 수 있다. 일 실시예에서는 광 빔(20)이 적외선 주파수대에서 사출되고 광학 필터는 적외선 주파수대 이외의 모든 주파수를 차단한다.The sensor system 16 has an optical lens and a corresponding optical filter, which blocks light other than the frequency band used by the light source and allows the band of desired light to the image sensor. More specifically, the corresponding filter is designed to allow the passage of incoming light with the frequency band of the light source and block the rest. The optical filter may block some of the significant light outside the frequency of the light beam 20 emitted from the light source unit 12. The optical filter may be a low frequency filter, a high frequency filter, or an intermediate frequency filter according to the frequency of the light beam 20. In one embodiment, the light beam 20 is emitted in the infrared frequency band and the optical filter blocks all frequencies other than the infrared frequency band.

센서 시스템(16)의 광학 필터는 센서 시스템(16) 내에 제조될 수 있다. 많은 이미지 센서들은 제조 시 마이크로 렌즈 층을 도포하기 전에 도포된 컬러 필터 배열(color filter array, CFA)를 포함한다. 그렇지 않으면, 이미지 센서 제조 후 렌즈 위에 필름 형태의 물질을 덮어 광 빔(20)의 주파수를 제외한 모든 주파수를 차단하도록 할 수 있다.Optical filters of the sensor system 16 may be manufactured in the sensor system 16. Many image sensors include a color filter array (CFA) applied prior to applying the micro lens layer in manufacturing. Otherwise, after manufacturing the image sensor, a film-like material may be covered on the lens to block all frequencies except the frequency of the light beam 20.

광학 필터가 대부분의 들어오는 광을 막고 정해진 광의 범위만 통과시키기 때문에, 이미지의 화소 값들은 반향된 광의 양 또는 광의 강도를 나타낸다. 따라서, R(red), G(green), B(blue) 이미지는 존재하지 않는다. 본 개시 내용에 의해 생성된 이미지들은 단지 강도 이미지 또는 그레이 레벨(grey level) 이미지들이다. 주변 광의 간섭을 줄이기 위해, 먼저 이미지를 그 전의 배경 이미지로부터 차분하거나 그 반대로 할 수 있다. 이 배경 이미지는 장치가 켜지고 수집된 이미지들이 안정적일 때 수집되고, 일정 기간 동안 사용자의 활동이 없을 경우 업데이트된다(도 8 참조). 배경 이미지 차분 처리 후, 하나 또는 그 이상의 손가락들이나 객체들을 검출하는데 여러 알려진 이미지 세그멘테이션(segmentation) 기술들이 사용될 수 있다. 특히, 계산 효율을 이유로 히스토그램 기반 방법들이 적용되는데, 아래에 더 자세히 설명한다. 이미지 세그멘테이션 후, 손가락 또는 손가락 팁 등 후보 객체들이 정의되고, 이들은 이후에 크기에 따라 더욱 스크린(screen) 된다.Because the optical filter blocks most incoming light and passes only a range of light, the pixel values of the image indicate the amount of reflected light or the intensity of the light. Therefore, R (red), G (green), B (blue) images do not exist. The images generated by the present disclosure are only intensity images or gray level images. To reduce the interference of ambient light, the image can first be subtracted from its previous background image and vice versa. This background image is collected when the device is turned on and the collected images are stable and updated when there is no user activity for a period of time (see FIG. 8). After background image differential processing, various known image segmentation techniques can be used to detect one or more fingers or objects. In particular, histogram-based methods are applied for computational efficiency reasons, which are described in more detail below. After image segmentation, candidate objects such as fingers or finger tips are defined, which are then further screened according to size.

일 실시예에서는, 장치(9)는 저전력 움직임 검출 센서 장치를 포함하여, 움직임이 검출될 때 그 장치가 광 시스템(12) 및 센서 시스템(16)으로 신호를 보낼 수 있다. 이것은 저전력 모드를 위한 것으로, 가령 일정 시간 동안 시야(36) 내에 움직임이 없을 경우 광 시스템(12)와 센서 시스템(16)이 절전 모드(sleep mode)로 들어간다. 움직임이 검출되면, 광 시스템(12)는 부채꼴의 광선을 사출하기 시작하고 센서 시스템(16)은 이미지를 캡처하기 시작한다.In one embodiment, the device 9 includes a low power motion detection sensor device that can signal the optical system 12 and the sensor system 16 when a motion is detected. This is for a low power mode, such that the optical system 12 and sensor system 16 enter a sleep mode if there is no motion in the field of view 36 for a period of time. When motion is detected, light system 12 begins to emit a fan-shaped beam and sensor system 16 begins to capture an image.

장치(9)는 장치(9)의 운영 상태 혹은 모드를 제어하기 위한 파워 버튼(30)을 포함할 수 있다. 추가적으로, 파워 버튼(30)은 블루투스와 같은 통신 프로토콜을 통해 장치(9)와 호스트 장치를 연결하는 데 사용될 수 있다. 예를 들어, 파워 버튼(30)을 두 번 누르는 것으로 장치(9)가 내부 블루투스 전파를 활성화 하려 한다는 것을 나타낼 수 있다. 더 나아가, 장치(9)는 장치(9)가 수면모드에서 더욱 빨리 회복할 수 있는 저전력 대기 모드로 들어가기 위하여 파워 버튼(32)를 이용할 수 있다. 예를 들어, 사용자는 파워 버튼을 3 번 누르는 것으로 저전력 대기 모드 또는 수면 모드로 들어갈 수 있다. 그렇지 않으면, 장치(9)는 파워 버튼(30)을 몇 초 동안 누르고 있으면 저전력 대기 모드로 들어가도록 프로그램 될 수 있다.The device 9 may comprise a power button 30 for controlling the operating state or mode of the device 9. In addition, the power button 30 can be used to connect the device 9 and the host device via a communication protocol such as Bluetooth. For example, pressing the power button 30 twice may indicate that the device 9 is about to activate internal Bluetooth propagation. Furthermore, the device 9 may use the power button 32 to enter a low power standby mode where the device 9 can recover from sleep mode more quickly. For example, a user may enter a low power standby or sleep mode by pressing the power button three times. Otherwise, the device 9 can be programmed to enter the low power standby mode by holding down the power button 30 for a few seconds.

하우징(10)은 또한 장치(9)와 호스트 장치의 연결을 대체하여 통신 포트(32)를 포함할 수 있다. 예를 들어, 통신 포트(32)는 USB 포트, 파이어와이어(FireWire) 포트, 미니 USB 포트 등이 될 수 있다. 장치(9)는 통신 포트(32)를 통하여 호스트에 연결될 때 장치(9)가 모든 무선 통신 전파 혹은 장치(9)에 내장된 모든 배터리를 끄도록 설정될 수 있다. 장치(9)는 또한 통신 포트(32)를 통하여 호스트 장치에 직접 연결되었을 경우 자동으로 충전 모드로 들어갈 수 있다.The housing 10 may also include a communication port 32 to replace the connection of the device 9 with the host device. For example, the communication port 32 may be a USB port, a FireWire port, a mini USB port, or the like. The device 9 may be set such that when connected to the host via the communication port 32 the device 9 turns off all radio communication propagation or all the batteries contained in the device 9. The device 9 can also enter the charging mode automatically when connected directly to the host device via the communication port 32.

위에 언급한 바와 같이, 도 2a와 도 3a는 사용자가 키보드 패턴(38) 위에 키 누름을 실행함에 따라 센서 시스템(16)이 찍은 이미지들(100, 104)의 간략화된 예들이다. 도 5에 나타난 바와 같이, 설명의 편의를 위하여, 상기 이미지들은 키보드 패턴(38)의 부분(35)으로 제한되었다. 본 실시예에서, 상기 부분(35)은 장치(9)에서 보는 표준 QWERTY 키보드의 왼쪽 편에 대응한다.As mentioned above, FIGS. 2A and 3A are simplified examples of images 100 and 104 taken by sensor system 16 as the user presses a key over keyboard pattern 38. As shown in FIG. 5, for ease of explanation, the images are limited to portions 35 of the keyboard pattern 38. In this embodiment, the part 35 corresponds to the left side of the standard QWERTY keyboard seen by the device 9.

이미지들(100, 104)은 도해의 편의를 위해 10 x 10의 화소의 배열(116)으로 나타내었다. 실제로는, 각 이미지는 수많은 화소들(116)을 가질 수 있다. 예를 들어, 도 4a는 20열 x 10행에 대응하는 200화소의 이미지의 부분(322)을 포함한다. 상기 부분(322)이 잘려나온 이미지는 2,000행과 2,000열에 해당하는 4,000,000 전체 화소를 가질 수 있다.Images 100 and 104 are shown in an array 116 of 10 x 10 pixels for ease of illustration. In practice, each image can have a number of pixels 116. For example, FIG. 4A includes a portion 322 of an image of 200 pixels corresponding to 20 columns by 10 rows. The image from which the portion 322 is cut out may have 4,000,000 total pixels corresponding to 2,000 rows and 2,000 columns.

본 개시 내용의 일 실시예에 따르면, 센서 시스템(16)은 다양한 해상도를 갖는 CCD 혹은 CMOS 이미지 센서일 수 있다. 이러한 이미지 센서는 각 이미지에 수십만에서 수백만에 이르는 화소들 포함할 수 있고, 그 화소들은 행(135)과 열(134)의 행열로 이루어진다. 하나의 실시예에서, 센서 시스템(16)은 상대적으로 낮은 해상도의 이미지 센서로 구현된다. 예를 들어, 센서 시스템(16)은 640 행과 480 열의 화소를 갖는 VGA 이미지 센서일 수 있다. 다른 예로는, 센서 시스템(16)은 352 행과 288 열의 화소를 갖는 CIF 이미지 센서일 수 있다. 그러나, 센서 시스템(16)은 여기에 언급한 것 이외에도 더 높거나 낮은 어떠한 해상도의 이미지 센서로 구현될 수 있다.According to one embodiment of the present disclosure, sensor system 16 may be a CCD or CMOS image sensor with various resolutions. Such an image sensor may include hundreds of thousands to millions of pixels in each image, which are comprised of rows 135 and columns 134. In one embodiment, sensor system 16 is implemented with a relatively low resolution image sensor. For example, sensor system 16 may be a VGA image sensor with 640 rows and 480 columns of pixels. As another example, sensor system 16 may be a CIF image sensor having 352 rows and 288 columns of pixels. However, sensor system 16 may be implemented with an image sensor of any higher or lower resolution in addition to those mentioned herein.

센서 시스템(16)은 특정 주파수의 이미지들을 캡처하도록 설정될 수 있다. 일 실시예에서는, 센서 시스템(16)이 초당 30 프레임의 속도로 이미지를 캡처한다. 전력 소비 절감을 위해 작업 표면 상의 움직임이 검출되었을 때만 이미지를 캡처하게끔 이미지가 캡처되는 속도를 구성할 수 있다.Sensor system 16 may be configured to capture images of a particular frequency. In one embodiment, sensor system 16 captures an image at a rate of 30 frames per second. To reduce power consumption, you can configure the rate at which images are captured so that they are captured only when movement on the work surface is detected.

일 실시예에서는 센서 시스템(16)은 광원 유닛(12)의 광의 깜빡임과 이미지 캡처를 동기화한다. 예를 들어, 부채꼴의 광 빔(20)이 1 밀리세컨드 동안 켜지도록 깜빡이면 센서 시스템(16)의 셔터는 3 밀리세컨드 동안 열린다. 셔터는 광이 깜빡이기 이전에 1 밀리세컨드 동안 열리고 깜빡인 후에 1밀리세컨드 동안 열려서 손가락이나 스타일러스의 팁을 정확하게 캡처할 수 있다. 위에서 언급한 것처럼, 광 빔(20)을 깜빡이는 것은 빔당 더 많은 전력을 사용할 수 있게 하여 더 강한 광 빔(20)으로 귀착된다. 더 강한 광 빔(20)으로 팁들의 반사 또는 기타 방법으로 비추어진 팁들이 이미지에 더 많이 나타난다.In one embodiment, the sensor system 16 synchronizes the image capture with the blinking of the light of the light source unit 12. For example, if the fan-shaped light beam 20 blinks to turn on for 1 millisecond, the shutter of sensor system 16 opens for 3 milliseconds. The shutter opens for 1 millisecond before the light blinks and then opens for 1 millisecond to capture the tip of the finger or stylus accurately. As mentioned above, flashing the light beam 20 makes more power available per beam resulting in a stronger light beam 20. More tips reflected by the stronger light beam 20, or otherwise reflected by the tips, appear in the image.

깜빡이는 광 빔(20)의 주파수는 이미지 센서(16)의 상세에서 결정될 수 있다. 예를 들면, 광 빔(20)은 이미지 센서(16)이 초당 30프레임으로 캡처하도록 설정된 경우 광 빔(20)은 30Hz로 깜빡인다. 어떤 이미지 센서(16)들은 보통 스트로브 출력 핀(strobe output pin)이라 불리는 핀들을 포함하는데, 이 핀들은 광 빔(20)의 깜빡임과 센서 시스템(16)의 이미지 캡처를 동기화하는 데 쓰일 수 있다. 이 스트로브 출력 핀은 광원 유닛(12)에 신호를 보내어 광 빔(20)의 사출을 시작하도록 하는데, 이는 센서 시스템(16)이 이미지를 캡처하였을 때, 또 센서 시스템(16)이 이미지를 캡처하도록 스케줄 된 때에서 얼마 후에 일어나서 사용자 손가락(24)을 밝히는데 이용가능한 광을 최대화한다.The frequency of the blinking light beam 20 can be determined in the details of the image sensor 16. For example, the light beam 20 blinks at 30 Hz when the image sensor 16 is set to capture 30 frames per second. Some image sensors 16 include pins, commonly referred to as strobe output pins, which can be used to synchronize the blinking of the light beam 20 with the image capture of the sensor system 16. This strobe output pin sends a signal to the light source unit 12 to begin ejection of the light beam 20, which causes the sensor system 16 to capture the image when the sensor system 16 captures the image. Wake up some time after the scheduled time to maximize the light available to illuminate the user's finger 24.

만일 센서 시스템(16)이 광원 시스템(12)과 부정확하게 동기화되는 경우, 장치(9)는 팁(24)의 존재를 정확하게 검출하지 못할 수 있다. 이러한 검출 오류를 피하기 위해, 광원 유닛(12)에서 나오는 깜빡임은 나이퀴스트 학설(Nyquist theorem)에 따라 센서 시스템(16)의 캡처 주파수보다 최소한 두 배가 될 수 있다.If sensor system 16 is incorrectly synchronized with light source system 12, device 9 may not accurately detect the presence of tip 24. To avoid this detection error, flickering from the light source unit 12 may be at least twice the capture frequency of the sensor system 16 according to the Nyquist theorem.

이미지들(100, 104)은 실시간으로 즉시 처리되고, 그 후 검출 영역(23)에 손가락이 없다고 결정되면 폐기된다. 장치는 이미지들을 분석하기 위하여 처리 및 제어 시스템(218)을 포함한다; 그러나, 대안적인 실시예에서는, 여기에 설명하는 대로 이미지들을 처리하기 위하여 호스트나 동반 장치를 사용할 수 있다.Images 100 and 104 are processed immediately in real time and then discarded if it is determined that there is no finger in detection area 23. The apparatus includes a processing and control system 218 to analyze the images; However, in alternative embodiments, a host or companion device may be used to process the images as described herein.

도 6은 처리 및 제어 시스템(218)과 호스트(210)를 포함하는 가상 키보드 시스템(200)을 도식으로 나타낸 것이다. 처리 및 제어 시스템(218)은 광 감지 시스템(16)으로부터 이미지들을 수신하고, 사용자의 손가락들을 검출하기 위한 일련의 루틴들을 수행하고, 상기 이미지들에서 손가락 팁을 검출하고, 상기 손가락이 작업 표면을 터치하거나 검출 영역(23)에 들어간 시점을 찾고, 어떤 키가 터치되었는지 결정한다. 키 터치가 결정되면, 호스트(210)로 'Key-down' 이벤트가 보고된다. 만약 상기 손가락이 후속의 이미지에서도 여전히 그 키를 터치하고 있는 경우, 상기 손가락이 작업 표면(22)을 터치하고 있는 동안 계속 각 이미지 프레임마다 'Key-held' 이벤트가 보고된다. 상기 손가락이 상기 키로부터 멀리 이동하면, 'Key-up' 이벤트가 보고된다.6 diagrammatically illustrates a virtual keyboard system 200 that includes a processing and control system 218 and a host 210. The processing and control system 218 receives images from the light sensing system 16, performs a series of routines for detecting the user's fingers, detects a finger tip in the images, and the finger may The time point for touching or entering the detection area 23 is found, and it is determined which key is touched. If a key touch is determined, a 'Key-down' event is reported to the host 210. If the finger is still touching the key in subsequent images, a 'Key-held' event is reported for each image frame while the finger is touching the work surface 22. If the finger moves away from the key, a 'Key-up' event is reported.

게다가, 처리 및 제어 시스템(218)은 작업 표면(22)을 하나 이상의 손가락이 터치하는지 결정하고, 각 손가락의 동작에 대하여 적절한 이벤트를 발생시킨다. 상기 각 이벤트는 도 6-12에 관하여 아래에서 더 자세히 설명될 것이다. 특히, 한 루틴이 열 그리고 행 히스토그램을 계산하고 그 히스토그램의 피크를 결정함으로써 손가락으 비추어지는 부분을 검출한다.In addition, the processing and control system 218 determines whether one or more fingers touch the work surface 22 and generates an appropriate event for the operation of each finger. Each of these events will be described in more detail below with respect to FIGS. 6-12. In particular, one routine detects where the finger shines by calculating column and row histograms and determining the peaks of the histograms.

예를 들어, 도 2b와 도 3b를 보면 이미지들(100, 104)의 각각의 열 히스토그램들(110, 114)이 처리 및 제어 시스템(218)에 의해 생성된다. 도 2c, 도 2e는 도 2a과 동일한 객체들의 이미지를 찍은 것으로, 각각 도 2d, 도 2f의 행 히스토그램들(610, 612)을 생성하기 위하여 처리된 것이다. 도 3c는 도 3a 및 그에 따르는 행 히스토그램(616)으로부터의 두 객체들의 이미지이다. 상기 각 히스토그램들은 아래에 더 자세히 설명될 것이다.For example, referring to FIGS. 2B and 3B, respective thermal histograms 110, 114 of images 100, 104 are generated by processing and control system 218. 2C and 2E are images of the same objects as those of FIG. 2A and are processed to generate row histograms 610 and 612 of FIGS. 2D and 2F, respectively. FIG. 3C is an image of two objects from FIG. 3A and the corresponding row histogram 616. Each of the histograms will be described in more detail below.

가상 키보드 시스템(200)은 투사 시스템(26), 센서 시스템(16), 광원 유닛(12)을 포함한다. 처리 및 제어 시스템(218)은 중앙처리장치(CPU)(220), 메모리(222), 통신 유닛(224), 투사 제어 유닛(225), 센서 제어 유닛(227), 광원 드라이버(223)를 포함한다. 통신 링크(217a, 217b, 217c)는 투사 시스템(26), 센서 시스템(16) 광원 유닛(12)을 각각 처리 및 제어 시스템(218)으로 연결한다.The virtual keyboard system 200 includes a projection system 26, a sensor system 16, and a light source unit 12. The processing and control system 218 includes a central processing unit (CPU) 220, a memory 222, a communication unit 224, a projection control unit 225, a sensor control unit 227, and a light source driver 223. do. The communication links 217a, 217b, 217c connect the projection system 26 and the sensor system 16 light source unit 12 to the processing and control system 218, respectively.

처리 및 제어 시스템(218)은 센서 시스템(16)으로부터 수집한 이미지들을 처리하고, 사용자 컴퓨터, 스마트폰, 랩탑, 또는 기타 사용자로부터 텍스트 입력을 받는 전자 장치와 같은 호스트 장치(210)와 통신한다. 시스템(200)은 통신 링크(214)를 통하여 호스트 장치(210)와 연결된다. 상기 통신 링크(214)는 유선 또는 무선이 될 수 있다. 호스트는 호스트(210)와 장치(200) 사이에 데이터 전송을 위한 통신 프로토콜을 제어할 수 있다. 상기 호스트(210)는 통신 링크(214)를 통하여 배터리 충전 서비스를 제공할 수 있다.The processing and control system 218 processes the images collected from the sensor system 16 and communicates with a host device 210, such as an electronic device that receives text input from a user computer, smartphone, laptop, or other user. System 200 is coupled with host device 210 via communication link 214. The communication link 214 may be wired or wireless. The host may control a communication protocol for data transmission between the host 210 and the device 200. The host 210 may provide a battery charging service via the communication link 214.

예를 들어, 도 2a는 부채 모양 광 빔(20)에 의해 비추어진 제 1 손가락(106), 제 2 손가락(108)을 포함하는 센서 시스템(16)에 의해 찍힌 제 1 이미지(100)이다. 제 1 손가락(106)은 제 1 이미지(106)의 제 1 모서리(118)에 가까이 위치한다. 제 1 손가락(106)이 비추어짐에 따라, 초생달 모양 혹은 곡선 모양이 캡처된다. 이 초생달 모양 혹은 곡선 모양이 일반적으로 인간의 손가락 혹은 펜이나 원통형 스타일러스와 같은 다른 곡선 객체가 촬영되는 모양이다. 만약 정사각형 객체가 사용된다면, 이미지는 다른 직사각형 모양을 캡처할 것이다.For example, FIG. 2A is a first image 100 taken by a sensor system 16 comprising a first finger 106, a second finger 108, illuminated by a fan shaped light beam 20. The first finger 106 is located close to the first edge 118 of the first image 106. As the first finger 106 is illuminated, a crescent or curved shape is captured. This crescent or curved shape is typically the shape of a human finger or other curved object such as a pen or cylindrical stylus. If a square object is used, the image will capture another rectangular shape.

도 6의 처리 및 제어 시스템(218)은 이러한 이미지들을 분석하여 손가락(24)이 언제 작업 표면(22)을 터치하는지 결정하고 키의 선택 또는 키 터치를 검출하도록 구성된다. 처리 및 제어 시스템(218)은 이미지들(100, 104)을 캡처하고 어떤 이벤트가 발생하였다면 무슨 이벤트가 발생하였는지 결정하도록 구성된다.The processing and control system 218 of FIG. 6 is configured to analyze these images to determine when the finger 24 touches the work surface 22 and to detect a selection of keys or key touch. The processing and control system 218 is configured to capture the images 100, 104 and to determine what event occurred if an event occurred.

CPU(220)는 이미지 센서 보정, 이미지 상관관계, 디지털 신호 처리 등과 같은 메모리(222)에 저장된 명령을 실행하고, 사용자에 의해 어떤 키가 선택되는지 결정한다. 처리 및 제어 시스템(218)은 호스트 장치(210)로부터 명령(instruction)을 받고, 호스트 장치(210)로 명령을 전달하고, 작업 영역(23)에서 사용자의 손가락 또는 손가락들로부터의 텍스트 입력을 나타내는 데이터를 전송하기 위하여 통신 유닛(224)을 사용할 수 있다.The CPU 220 executes commands stored in the memory 222 such as image sensor correction, image correlation, digital signal processing, and the like, and determines which key is selected by the user. The processing and control system 218 receives an instruction from the host device 210, sends an instruction to the host device 210, and indicates text input from the user's finger or fingers in the work area 23. The communication unit 224 can be used to send data.

센서 제어 유닛(227)은 셔터 시간, 프레임 레이트, 이미지 센서의 시작 행 및 열(134), 끝 행 및 열(134) 등과 같은 센서 시스템(16)의 파라미터를 설정하고 작업 표면(22)의 스냅샷을 찍도록 센서를 발사한다. 처리 및 제어 시스템(218)은 센서 시스템(16)으로부터 이미지들을 읽고 메모리(222)에 저장한다.The sensor control unit 227 sets parameters of the sensor system 16 such as shutter time, frame rate, start row and column 134, end row and column 134 of the image sensor, and snaps the working surface 22. Fire the sensor to take a shot. Processing and control system 218 reads images from sensor system 16 and stores them in memory 222.

투사 제어 유닛(225)은 투사 시스템(26)의 전반적인 출력을 제어하고 투사 시스템(26)을 켜거나 끈다. 광원 드라이버(223)는 광원 유닛(12)을 켜고 끄도록 광원 유닛(12)을 제어하고 출력을 조정할 수 있다. 처리 및 제어 시스템(218)은 광원 유닛(12)와 센서 시스템(16)을 동기화한다. 작업 표면(22)의 스냅샷을 만들기 위하여, 처리 및 제어 시스템(218)은 광원 드라이버(223)가 광원을 켜도록 제어하고 센서 제어 유닛(227)이 각 이미지를 수집하기 위하여 센서 시스템의 셔터를 열도록 제어한다. 상기 이미지를 노출하기에 충분한, 일정 시간 후에, 임베디드 처리 및 제어 시스템(218)은 광원을 끄고 셔터를 닫는다. 상기 이미지는 그 후 메모리에 저장된다.The projection control unit 225 controls the overall output of the projection system 26 and turns the projection system 26 on or off. The light source driver 223 may control the light source unit 12 and adjust the output to turn on and off the light source unit 12. The processing and control system 218 synchronizes the light source unit 12 with the sensor system 16. To take a snapshot of the work surface 22, the processing and control system 218 controls the light source driver 223 to turn on the light source and the sensor control unit 227 to release the shutter of the sensor system to collect each image. Control to open. After a period of time sufficient to expose the image, the embedded processing and control system 218 turns off the light source and closes the shutter. The image is then stored in memory.

처리 및 제어 시스템(218)은 상술한 바와 같이 센서 시스템(16)과 광원 유닛(12)을 동기화할 수 있다. 임베디드 처리 및 제어 시스템(218)은 연속된 또는 깜빡이는 광 빔(20)을 사출하도록 광원 유닛(12)을 제어할 수 있다. 시스템(200)은 호스트(210)와 무선 연결(214)을 통해 통신하는 동안 처리 및 제어 시스템(218)의 CPU(220)와 메모리(222)에 의지하도록 설정되어, 호스트 장치(10)와 시스템(200) 사이의 대역폭(bandwidth)을 보존할 수 있다.The processing and control system 218 may synchronize the sensor system 16 with the light source unit 12 as described above. Embedded processing and control system 218 may control light source unit 12 to emit a continuous or flashing light beam 20. System 200 is configured to rely on CPU 220 and memory 222 of processing and control system 218 to communicate with host 210 via a wireless connection 214 to host device 10 and the system. Bandwidth between 200 may be preserved.

도 7은, 본 개시 내용의 일 실시예에 따른 가상 키보드 시스템이 수행하는 한 방법의 블록도이다. 이미지 센서 시스템(16)은 투사된 키보드 패턴(38)의 작업 표면(22)의 이미지들을 수집한다. 이들 이미지들은 통신 링크(217b)를 통하여 이미지 센서 시스템(16)으로부터 처리 및 제어 시스템(218)로 전송된다.7 is a block diagram of one method performed by a virtual keyboard system according to an embodiment of the present disclosure. The image sensor system 16 collects images of the working surface 22 of the projected keyboard pattern 38. These images are transmitted from the image sensor system 16 to the processing and control system 218 via a communication link 217b.

처리 및 제어 시스템(218)은 상기 이미지들을 수신하고, 상기 이미지들을 처리하고 검출 영역 안의 손가락 팁들의 x 및 y 좌표로된 위치를 식별하는 팁 검출 루틴(228)을 수행한다. 팁 검출 루틴(228)은 도 8에 관하여 아래에서 더 자세히 설명될 것이다. 이어서, 터치 검출 루틴(230)은 손가락 팁이 하나라도 작업 표면을 터치하는지, 손가락 팁이 하나라도 아직 작업 표면 위에 있는지 보기 위하여 검출된 손가락 팁들을 처리하고 차단한다. 터치 검출 루틴(230)은 도 9에 관하여 아래에서 더 자세히 설명될 것이다.Processing and control system 218 receives the images, performs a tip detection routine 228 that processes the images and identifies the location in x and y coordinates of the finger tips within the detection area. The tip detection routine 228 will be described in more detail below with respect to FIG. 8. The touch detection routine 230 then processes and blocks the detected finger tips to see if any of the finger tips touch the work surface, and whether even one finger tip is still on the work surface. The touch detection routine 230 will be described in more detail below with respect to FIG. 9.

터치 위치 계산 루틴(232)은 작업 표면(22)을 터치하는 손가락 팁들에 대한 정보를 수신하고 그 터치하는 팁들의 위치(x, y)를 결정하기 위하여 교정 테이블(234)에 액세스한다. 터치 위치 루틴(232)은 도 10에 관하여 아래에서 더 자세히 설명될 것이다. 키 식별 루틴(236)은 상기 위치(x, y)와 어떤 키가 연관되는지 결정하기 위하여 키 맵 표(238)을 검색하거나 기타 방법으로 액세스한다. 상기 검출된 키 정보는 식별되어 키 이벤트 생성 루틴(240)으로 보내진다. 게다가, 상기 검출된 키 정보는 현재 검출된 손가락 팁들에 의해 차단된 키가 없는지 보기 위하여 키 차단 검출 루틴(242)에 의해 분석된다. 상기 키 차단 루틴(242)과 키 식별 루틴(236)은 도 11에 관하여 아래에서 더 자세히 설명될 것이다.The touch position calculation routine 232 receives the information about the finger tips touching the work surface 22 and accesses the calibration table 234 to determine the position (x, y) of the touching tips. The touch position routine 232 will be described in more detail below with respect to FIG. 10. Key identification routine 236 searches or otherwise accesses key map table 238 to determine which key is associated with the location (x, y). The detected key information is identified and sent to the key event generation routine 240. In addition, the detected key information is analyzed by the key block detection routine 242 to see if there are no keys blocked by the currently detected finger tips. The key breaking routine 242 and key identification routine 236 will be described in more detail below with respect to FIG.

키 차단 검출 루틴(242)은 키 이벤트 저장 루틴(244)으로부터 이전에 검출된 키들에 대한 정보를 수신한다. 키 차단 검출 루틴이 어떤 키들이 차단되었다고 결정하면, 그 차단된 키들은 키 이벤트 생성 루틴(240)으로 보고된다. 키 이벤트 생성 루틴은 검출된 터치된 키, 차단된 키들, 이전에 선택된 키들에 기초하여 키 이벤트를 생성한다. 상기 키 이벤트는 그 후 호스트(210)로 전송된다. 키 이벤트 생성 루틴(240)은 도 12에 관하여 아래에서 더 자세히 설명될 것이다.The key lock detection routine 242 receives information about previously detected keys from the key event storage routine 244. If the key lock detection routine determines that some keys have been blocked, the blocked keys are reported to the key event generation routine 240. The key event generation routine generates a key event based on the detected touched key, blocked keys, and previously selected keys. The key event is then sent to host 210. The key event generation routine 240 will be described in more detail below with respect to FIG. 12.

도 8은 팁 검출 루틴(228)에 의해 실행되는 일련의 단계들의 순서도이다. 일반적으로, 일단 켜지면, 장치(9)는 작업 표면(22)의 이미지를 연속적으로 찍는다. 위에 언급한 바와 같이, 장치(9)에 의해 캡처된 최초의 이미지들은 손가락(24)을 포함하지 않을 것이고, 배경 이미지들로 간주된다. (246)에서, 가상 키보드의 초기화 동안, 상기 배경 이미지가 취득되고, 일정 시간 동안 사용자의 활동이 없으면 업데이트된다. 배경 이미지는 메모리(222)에 저장되거나 미래의 이미지들과의 비교를 위하여 기타 방법으로 저장될 수 있다.8 is a flowchart of a series of steps executed by the tip detection routine 228. In general, once turned on, the device 9 continuously takes an image of the working surface 22. As mentioned above, the first images captured by the device 9 will not include the finger 24 and are considered background images. At 246, during initialization of the virtual keyboard the background image is acquired and updated if there is no user activity for a period of time. The background image may be stored in memory 222 or in other ways for comparison with future images.

다른 대안으로는, 센서 시스템(16)은 연속적으로 이미지들을 찍고 그 바로 직전 이미지와 현재 이미지를 비교할 수 있다. 상기 배경 이미지는, 100 프레임의 이미지들과 같이 큰 수의 매우 유사한 연속적인 이미지들이 일단 캡처되면 저장되거나 업데이트된다. 일단 현재 이미지가 배경 이미지와 다르다고 식별되면, 그 현재 이미지는 단계(250)에서 배경 이미지 데이터를 제거하기 위하여 처리된다.Alternatively, the sensor system 16 can take images continuously and compare the current image with the immediately preceding image. The background image is stored or updated once a large number of very similar consecutive images are captured, such as 100 frames of image. Once it is identified that the current image is different from the background image, the current image is processed at step 250 to remove the background image data.

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)으로부터 광의 강도의 평균이 사용될 수 있고, 이것은 다른 비율에 의한 합계와 유사할 것이다.At 248, the images of FIG. 2A or 3A are received by tip detection routine 228. After the background image is extracted or removed, at 250, a column direction histogram is calculated from the difference image at step 252. The histograms are sums of rows and columns of pixels. For example, as shown in FIG. 2A, the crescent shape of the first finger 106 appears across three pixels 120, 122, and 124. The crescent shape of the second finger 108 appears across the four pixels 126, 128, 130, and 132. 2B is a histogram 110 showing the sum of each column 134 of the array of pixels 116. More specifically, the values of column 134 of each pixel 116 are summed to determine the intensity of light per column 134. The histogram 110 includes two spikes 136, 138 corresponding to the first and second fingers 106, 108, respectively. In alternative embodiments, an average of the intensity of light from histogram 110 may be used, which will be similar to the sum by other ratios.

제 1 스파이크(136)의 강도는 제 2 스파이크(138)보다 큰데, 이는 제 1 손가락(106)의 초생달 모양이 제 2 손가락(108)의 초생달 모양보다 크기 때문이다. 제 1 스파이크(136)는 제 1 손가락(106)의 이미지의 대부분을 포함하는 화소(122)를 포함하는 열의 중심과 일치된다. 상기 화소(122)는 화소들 배열(116)에서 가장 큰 화소당 강도를 갖는다. 제 2 스파이크(138)의 강도는 제 2 손가락(108)의 중심 부분에 대응하는, 화소(128)와 화소(130)를 포함하는 두 인접한 열들의 경계와 일치한다. 게다가, 제 1 손가락(106)은 이미지 센서(16)에 더 가깝기 때문에 더 세다.The intensity of the first spike 136 is greater than the second spike 138 because the crescent shape of the first finger 106 is larger than the crescent shape of the second finger 108. The first spike 136 coincides with the center of the column that includes the pixel 122 that includes most of the image of the first finger 106. The pixel 122 has the largest intensity per pixel in the pixel array 116. The intensity of the second spike 138 coincides with the boundary of two adjacent columns comprising the pixel 128 and the pixel 130, corresponding to the central portion of the second finger 108. In addition, the first finger 106 is stronger because it is closer to the image sensor 16.

예를 들어, 일 실시예에서, 이미지 센서는 화소 배열의 각 화소(116)에 입사하는 광자(photon)의 강도를 캡처할 것이다. 각각 제 1 손가락(106)을 제 2 손가락(108)에 비교했을 때와 같이, 이미지 센서(16)에 가까운 객체들은 센서에서 더 먼 곳에 위치한 객체들에 비하여 이미지 센서로 캡처한 광자들이 높은 입사 강도를 제공할 것이다. 광자들의 강도는 가장 최근 리셋 시간부터 측정되는데, 이는 센서를 덮는 셔터의 열림일 수 있다. 광자 강도는 그 다음에 전압으로 변환된다. 화소 배열의 행의 각 화소는 동시에 읽어질 수 있다. 화소 배열의 모든 행을 읽은 후, 장치(9)는 각 열(134)의 각 화소를 더하여 화소 배열의 모든 열(134) 평균 강도를 계산할 수 있다. 이미지 센서가 시야(36) 혹은 검출 영역(23) 내의 특정 주파수의 필터된 반사들을 캡처하기 때문에, 히스토그램(예를 들면 강도와 열 번호의 도표)는 화소의 평균 강도의 상당한 증가가 손가락 혹은 손가락 팁의 반사에 대응하는 열들을 나타낸다.For example, in one embodiment, the image sensor will capture the intensity of photons incident on each pixel 116 of the pixel array. Objects closer to the image sensor 16 are more incident photons captured by the image sensor than objects located further away from the sensor, such as when each of the first finger 106 is compared to the second finger 108. Will provide. The intensity of the photons is measured from the most recent reset time, which may be the opening of the shutter covering the sensor. Photon intensity is then converted to voltage. Each pixel of the row of the pixel array can be read simultaneously. After reading all the rows of the pixel array, the device 9 may calculate the average intensity of all columns 134 of the pixel array by adding each pixel of each column 134. Since the image sensor captures filtered reflections of a particular frequency within the field of view 36 or detection area 23, the histogram (eg, plot of intensity and column number) shows that a significant increase in the average intensity of the pixel is a finger or finger tip. Represents the columns corresponding to the reflection of.

이어서, 열 방향 히스토그램의 이동 평균(111)은 단계(254)에서 결정된다. 도 2b에 나타난 상기 이동 평균(111)은 미리 정해진 윈도우 폭 n에 대하여 계산된다. 예를 들어, 윈도우 (2m+1)의 열 k의 이동 평균(111)은 다음 공식에 따라 계산된다:The moving average 111 of the column histogram is then determined in step 254. The moving average 111 shown in FIG. 2B is calculated for a predetermined window width n. For example, the moving average 111 of column k of window (2m + 1) is calculated according to the following formula:

Figure pat00001
Figure pat00001

COLUMN(i)는 열 i의 열 합계이다. 선호되는 실시예에서, 윈도우 폭은 홀수이다. 합해지는 데이터는 계산되는 열 k의 왼쪽과 오른쪽으로 m 열들을 포함한다. 예를 들어, 이동 평균(111)은 21 전체 열들을 합하고 21로 나누어 계산될 수 있다. 즉, 열 k에서 왼쪽으로 10 열, 더하기 열 k, 더하기 열 k에서 오른쪽으로 10 열이다.COLUMN (i) is the sum of the columns of column i. In a preferred embodiment, the window width is odd. The sum data includes m columns to the left and right of the column k to be calculated. For example, the moving average 111 may be calculated by summing 21 total columns and dividing by 21. That is, ten columns to the left in column k, plus column k, and ten columns to the right in column k.

단계(256)에서, 팁 검출 루틴(228)은 열 방향 합계들 또는 평균들 중에 어떤 열들이 이동 평균(111)보다 큰지 결정한다. 이동 평균(111)보다 큰 열들에 대응하는 세그먼트들(136a, 138a)은 검출 영역(23)에서 손가락(24)을 검출하기 위한 좋은 후보들이다.In step 256, the tip detection routine 228 determines which of the column direction sums or averages is greater than the moving average 111. Segments 136a and 138a corresponding to columns larger than moving average 111 are good candidates for detecting finger 24 in detection area 23.

258에서, 세그먼트(136a, 138a)와 연관된 열들은 행 방향 히스토그램(610, 612)을 결정하기 위해 처리되는 데이터를 제한하기 위하여 이미지(248)로부터 분리되거나 기타 방법으로 잘라진다. 예를 들어, 도 2c와 2e는 각각 세그먼트들(136a, 138a)와 연관되는 행 방향 히스토그램들을 위하여 이미지(100)으로부터 분리된 열들의 집합(134)의 예들이다.At 258, the columns associated with segments 136a and 138a are separated from or otherwise truncated from image 248 to limit the data processed to determine row direction histograms 610 and 612. For example, FIGS. 2C and 2E are examples of sets of columns 134 separated from image 100 for row directional histograms associated with segments 136a and 138a, respectively.

하나의 실시예에서, 열 히스토그램(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를 참조한다.In one embodiment, based on where thermal histogram 110 intersects moving average 111, that is, points 186, 188 at first spike 136 and points at second spike 138 ( Based on 190 and 192, tip detection routine 228 determines the width of first slice 184 and second slice 194 of image 100. From the points above, the tip detection routine 228 may include a first slice 184 having three rows containing the first finger 106 and a second slice having four rows including the second finger 108 ( 194). In some embodiments, the slice determined from the points 186, 188, 190, 192 only includes the majority of the finger, and the edge of the finger in the image is not included in the slice, see FIG. 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를 참조한다.At 258, the rows of the first and second slices 184, 194 are combined to form row histograms 610, 612, respectively. In step 260, moving averages 611 and 613 are generated for each of the row direction histograms 610 and 612. As in the column histogram, segments 614 and 615 of the histogram larger than the moving average are identified in step 262. Rows associated with the segments 614, 615 are identified. For example, in FIG. 2D, the first finger 106 is in only one row of the first row 180. In FIG. 2E, the second finger 108 is in only one row of the second row 182. In practice, one finger is likely to occupy several rows of pixels 116, see FIG. 4A.

264에서, 열 좌표들과 행 좌표들에 대응하는 손가락 팁 후보들이 형성된다. 예를 들어, 열 좌표들 (m, n)과 행 좌표들 (r, s)은 손가락 팁 후보를 내포하는 이미지의 블록을 정의할 수 있다. 이것은 이미지(100)에서 각 슬라이스(184, 194)에 대하여 반복된다.At 264, finger tip candidates corresponding to column coordinates and row coordinates are formed. For example, column coordinates (m, n) and row coordinates (r, s) can define a block of an image containing a finger tip candidate. This is repeated for each slice 184, 194 in the image 100.

점들(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)를 가진다. 상기 열 좌표들은 보관되고 손가락이 어떤 문자를 선택하였는지 결정하기 위하여 교정 테이블들에 의하여 사용될 것이다.Points 186 and 188 and points 190 and 192 generate first column coordinates for first finger 106 and second finger 108, respectively. For example, if the columns are numbered from the left edge, the points 186, 188 may be associated with the first column edge 202 and the second column edge 205 to form column coordinates 202, 205. Can be. The points 190, 192 of the second finger 108 then have column coordinates 206, 210 corresponding to the third row corner 206, the fourth row corner 210. The column coordinates are stored and will be used by the calibration tables to determine which character the finger selected.

행 좌표는 히스토그램(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)가 제공된다.The row coordinates are determined by the points 618, 620 of the histogram 610 and correspond to the height of the first finger 106, as detailed below. Row coordinates may be determined by points 618 and 620 corresponding to the first row edge 601 and the second row edge 602. Thus, the row coordinates for the first finger 106 are (601, 602). The points 622 and 624 where the row histogram 612 and the moving average 613 intersect correspond to the second finger 108. The points also correspond to the third row edge 607 and the fourth row edge 608. This provides row coordinates 607, 608 for the second finger 108.

제 1 손가락은 열 좌표 (202, 205)와 행 좌표 (601, 602)를 가지고 제 2 손가락은 열 좌표 (206, 210)와 행 좌표 (607, 608)을 가진다. 이 좌표들은 팁 박스를 정의한다, 즉, 어떤 이미지에서 팁의 경계들로, 아래 상술하는 바와 같이 다른 루틴에 의해 사용될 수 있다.The first finger has column coordinates 202, 205 and row coordinates 601, 602 and the second finger has column coordinates 206, 210 and row coordinates 607, 608. These coordinates define the tip box, ie the boundaries of the tip in some images, which can be used by other routines as detailed below.

일단 손가락 팁 후보들이 얻어지고 열과 행 좌표들이 결정되면, 팁 검출 루틴(228)은 (266)에서 손가락 팁 필터를 수행한다. 상기 필터는 손가락 팁 후보들의 블록 크기에 기초하여 손가락 팁을 걸러 낸다, 즉, 열 좌표 (m, n)와 행 좌표 (r, s)에 기초하여 걸러 낸다. 팁 검출 루틴(228)은 손가락 팁 이미지 데이터를 출력한다, 즉, (268)에서 연관된 행과 열 좌표를 포함하는 손가락 팁 또는 손가락 팁들의 정보를 출력한다.Once finger tip candidates are obtained and column and row coordinates are determined, tip detection routine 228 performs a finger tip filter at 266. The filter filters finger tips based on the block size of the finger tip candidates, ie based on column coordinates (m, n) and row coordinates (r, s). The tip detection routine 228 outputs finger tip image data, that is, outputs information of the finger tip or finger tips including the associated row and column coordinates at 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)에 의해 도시된다.3A is another example of detecting coordinates of rows and columns from the histograms. The second image 104 relates to another key press of the first and second fingers 106, 108. The first and second fingers 106, 108 appear close to each other in the third image 104. The first finger 106 is located at six pixels 160, 162, 164, 166, 168, 170. Pixels 160 and 170 are in one column, pixels 162 and 168 are in a second column, and pixels 164 and 166 are in a third column. When the respective rows are averaged or added, the intensity of the first finger 106 is shown by the first spike 172 of the third histogram 114 of FIG. 3B.

제 2 손가락(108)은 네 화소들(174, 176, 178, 166)에 위치한다. 화소(166) 또한 제 1 손가락(106)의 일부분을 포함한다. 제 3 히스토그램(114)은, 제 1, 제 2 손가락들(106, 108) 양쪽의 일부를 포함하는, 화소(166)를 가지는 열에 대응하는 밸리(valley)(180)를 가진다. 제 3 히스토그램(114)은 또한 제 2 손가락(108)의 가장 두꺼운 일부에 대응하는 제 2 스파이크(182)를 가지고 있는데, 이는 이미지 센서가 캡처한 광 중 최대 강도가다.The second finger 108 is located at four pixels 174, 176, 178, 166. Pixel 166 also includes a portion of first finger 106. The third histogram 114 has a valley 180 corresponding to the column with the pixel 166, which includes some of both the first and second fingers 106, 108. The third histogram 114 also has a second spike 182 corresponding to the thickest portion of the second finger 108, which is the maximum intensity of light captured by the image sensor.

제 1, 제 2 손가락들(106, 108)을 촬영해서 생긴 초생달 모양은 사용자의 손가락 크기 및 이미지 센서로부터의 거리에 따라 영역을 달리한다. 그 특정한 영역은 본 개시 내용에서는 상관이 없는데, 이는 각 이미지의 각 열이 더해져 강도 스파이크를 결정하기 때문이다. 또한, 만약 다른 객체들이 사용된다면, 그 이미지들은 반드시 초생달 모양이 되는 것은 아니다. 예를 들어, 만약 직사각형 스타일러스가 사용된다면, 이미지 센서는 그 스타일러스의 직사각형 표시를 캡처할 것이다.The crescent shape generated by photographing the first and second fingers 106 and 108 varies in area depending on the size of the user's finger and the distance from the image sensor. That particular area is irrelevant in this disclosure because each column of each image is added to determine the intensity spike. Also, if other objects are used, the images are not necessarily crescent shaped. For example, if a rectangular stylus is used, the image sensor will capture a rectangular representation of that stylus.

이동 평균(626) 위의 히스토그램(114)의 일부분을 찾아내기 위하여 이동 평균(626)이 결정된다. 위에 검토한 바와 같이, 히스토그램(626)의 부분(628)은 이미지의 가장 센 화소를 결정하는 것을 도울 수 있고 손가락의 중심점을 결정하는 것을 도울 수 있다. 상기 이미지에서, 제 1, 제 2 손가락들은 아래 설명하는 키 차단 루틴에 의해 평가되고 분리되는 하나의 손가락으로 보일 수 있다.Moving average 626 is determined to find a portion of histogram 114 above moving average 626. As discussed above, portion 628 of histogram 626 can help determine the strongest pixel of the image and can help determine the center point of the finger. In the image, the first and second fingers can be seen as one finger that is evaluated and separated by the key blocking routine described below.

도 9는 본 발명의 실시예에 따라 터치 검출 루틴(230)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 268에서, 팁 검출 루틴(228)으로부터의 손가락 팁 이미지 데이터는 터치 검출 루틴(230)에 의해 수신된다. 작업 표면(22) 상의 손가락의 터치는 3개의 조건들이 충족될 경우에 결정된다. 조건들은 사용자가 작업 표면을 터치하거나 키(key)를 선택하는 것을 의도하는지를 결정하기 위해 제공된다. 손가락이 충분히 신속하게 이동하여 빔을 아주 충분하게 침투하는 경우, 루틴은 사용자가 키를 선택하기 위해 터치하는 것을 의도하였다고 결정한다.9 is a flowchart of a method of a virtual keyboard system for executing a touch detection routine 230 in accordance with an embodiment of the present invention. At 268, finger tip image data from the tip detection routine 228 is received by the touch detection routine 230. The touch of the finger on the working surface 22 is determined when three conditions are met. Conditions are provided to determine if the user intends to touch the work surface or select a key. If the finger moves fast enough to penetrate the beam very sufficiently, the routine determines that the user intended to touch to select a key.

이 3개의 조건들은 이미지들에서 팁이 나타나는 동안의 카운트 또는 팁 에이지(age), 빔 두께와 비교되는 팁 치수, 및 팁 치수 임계값과 비교되는 팁 치수를 산출하는 것을 포함한다. 272에서, 팁 에이지는 팁이 나타나는 연속적인 프레임들의 수에 의해 결정된다. 카운트는 팁이 프레임에서 검출되자마자 시작된다. 카운트 또는 에이지는 팁이 검출되는 최초의 프레임에 대해 제로(zero)이다. 카운트 제로 이후의 각각의 연속적인 프레임에 대하여, 팁이 여전히 검출되는 각각의 프레임에 대해 1 카운트가 추가된다. 따라서, 팁이 다음 프레임에서 나타나는 경우, 팁 에이지는 1이 된다. 제 1 기준을 충족시키기 위하여, 카운트 또는 팁 에이지는 2개의 연속적인 이미지 프레임들보다 크거나 같아야하고, 6개의 연속적인 이미지 프레임들보다 작거나 같아야 한다.These three conditions include calculating the count or tip age while the tip appears in the images, the tip dimension compared to the beam thickness, and the tip dimension compared to the tip dimension threshold. At 272, the tip age is determined by the number of consecutive frames in which the tip appears. The count starts as soon as a tip is detected in the frame. The count or age is zero for the first frame where the tip is detected. For each successive frame after count zero, one count is added for each frame where the tip is still detected. Thus, if the tip appears in the next frame, the tip age is one. To meet the first criterion, the count or tip age must be greater than or equal to two consecutive image frames and less than or equal to six consecutive image frames.

팁 에이지가 제 1 기준을 충족하지 않는 경우, 터치 검출 루틴(230)은 274에서 "터치 검출되지 않음"을 반환한다. 팁 에이지가 제 1 기준을 충족하는 경우, 터치 검출 루틴(230)은 276에서 제 2 기준을 실행한다.If the tip age does not meet the first criterion, the touch detection routine 230 returns "Touch not detected" at 274. If the tip age meets the first criterion, the touch detection routine 230 executes the second criterion at 276.

제 2 기준은 팁 이미지의 치수를 결정하고, 상기 치수를 광 빔(20)의 두께와 비교한다. 팁의 치수는 팁이 맞추어지는 행(row)들의 수에 의해 결정된다. 예를 들어, 행 좌표들(601, 602)을 가지는 제 1 손가락(106)은 1 행의 치수를 가진다.The second criterion determines the dimension of the tip image and compares that dimension with the thickness of the light beam 20. The dimension of the tip is determined by the number of rows in which the tip is fitted. For example, the first finger 106 with row coordinates 601, 602 has a dimension of one row.

광 빔(20)의 두께는 이미지의 하나의 단부(end)로부터 다른 단부까지 일정하지 않다. 예를 들어, 광 빔(20)의 두께는 광원(12)에 가까울수록 작고, 광 빔(20)의 두께는 광원(12)으로부터 멀수록 크다. 따라서, 제 1 손가락(106)은 제 2 손가락(108)과는 상이한 두께의 광 빔(20)과 상호작용한다. 위에서 언급된 바와 같이, 손가락들은 장치(9)에 가까울수록 더 크게 나타나고, 이것은 손가락들이 더 많은 광을 반사하기 때문이다.The thickness of the light beam 20 is not constant from one end to the other end of the image. For example, the thickness of the light beam 20 is smaller as closer to the light source 12, and the thickness of the light beam 20 is larger as farther from the light source 12. Thus, the first finger 106 interacts with a light beam 20 of a different thickness than the second finger 108. As mentioned above, the fingers appear larger the closer to the device 9, because the fingers reflect more light.

장치(9)가 소매업자 또는 고객에게 수송되기 전에 테스트되고 있는 경우와 같은 빔 교정(beam calibration) 동안에, 빔 두께 테이블이 생성되거나 그렇지 않을 경우에는 얻어진다. 빔 두께 테이블은 빔의 어떤 두께를 팁 높이의 치수와 비교할 것인지를 결정하기 위하여 행 좌표들로 액세스될 수 있다. 제 2 기준을 충족시키기 위하여, 손가락은 빔의 적어도 1/3을 침투해야 한다. 따라서, 치수는 광 빔의 두께의 1/3보다 크거나 같아야 한다. 빔의 두께는 광원 변동들 및 다른 상황들에 기초하여 변동될 수 있으므로, 치수는 실제 두께의 1/3과 비교된다. 빔 두께의 다른 크기들은 장치(9)의 광원의 성질들 및 강도(intensity)에 기초하여 비교될 수 있다.During beam calibration, such as when the device 9 is being tested before being shipped to a retailer or customer, a beam thickness table is created or otherwise obtained. The beam thickness table can be accessed with row coordinates to determine which thickness of the beam to compare with the dimension of the tip height. In order to meet the second criterion, the finger must penetrate at least one third of the beam. Thus, the dimension must be greater than or equal to 1/3 of the thickness of the light beam. Since the thickness of the beam can vary based on light source variations and other situations, the dimension is compared with one third of the actual thickness. Different sizes of beam thicknesses can be compared based on the properties and intensity of the light source of the device 9.

치수가 276에서 제 2 기준을 충족시키지 않는 경우, 터치 검출 루틴은 274에서 "터치 검출되지 않음"을 출력한다. 그러나, 276에서 제 2 기준이 충족되는 경우, 터치 검출 루틴은 278에서 제 3 기준이 충족되는지를 결정한다.If the dimension does not meet the second criterion at 276, the touch detection routine outputs "Touch not detected" at 274. However, if the second criterion is met at 276, the touch detection routine determines whether the third criterion is met at 278.

제 3 기준은 278에서, 하나의 프레임으로부터 다음 프레임까지 팁 치수에 있어서의 변화를 팁 치수 임계값과 비교한다. 작업 표면 상에서의 손가락의 터치를 검출하기 위하여, 제 1 프레임 및 연속적인 프레임으로부터의 팁 치수는 팁 치수 임계값보다 많이 변화해야 한다. 치수는 팁 높이 또는 팁이 걸쳐 있는 행들의 수라고 지칭될 수 있다.The third criterion compares the change in tip dimension from one frame to the next at 278 with the tip dimension threshold. In order to detect the touch of a finger on the working surface, the tip dimensions from the first frame and the continuous frame must vary by more than the tip dimension threshold. The dimension may be referred to as the tip height or the number of rows over which the tip spans.

팁 치수 임계값은 상수가 아니며, 오히려, 장치(9)로부터의 손가락의 거리에 종속된다. 팁 치수 임계값은 손가락이 센서(16)에 더 가까울 때에 더 크고, 손가락이 센서(16)로부터 더 멀리 떨어져 있을 때에 더 작다. 행 및 열 좌표들에 의해 결정되는 팁 치수 임계값들을 갖는 테이블은 단계(278)를 실행하기 위하여 팁 검출 루틴(230)에 의해 액세스될 수 있다. 이미지들을 테이블 내의 손가락들의 크기 또는 높이들과 비교하는 것은 작업 표면(22)에서 키 터치를 검출하기 위한 정보를 제공한다. 광원(12)의 플리커(flicker)와 같은 결함들은 이러한 테이블의 유용성에 영향을 줄 수 있다. 예를 들어, 광이 더 어두워질 때, 빔의 두께는 더 얇아지고, 이것은 손가락 주위에서 수집된 데이터에 영향을 준다.The tip dimension threshold is not constant but rather depends on the distance of the finger from the device 9. The tip dimension threshold is larger when the finger is closer to the sensor 16 and smaller when the finger is further away from the sensor 16. A table with tip dimension thresholds determined by row and column coordinates may be accessed by tip detection routine 230 to execute step 278. Comparing the images with the size or heights of the fingers in the table provides information for detecting a key touch on the work surface 22. Defects such as the flicker of the light source 12 can affect the usefulness of this table. For example, when the light gets darker, the thickness of the beam becomes thinner, which affects the data collected around the finger.

대안적인 실시예에서는, 이미지들을 비교하고 이미지 시퀀스(image sequence)에서 손가락 크기의 큰 증가가 언제 있는지를 결정함으로써 키 터치가 결정된다. 일단 손가락이 부채꼴 광 빔(fan beam)(20)을 파괴하면, 장치는 비교 루틴을 시작한다. 이미지들에서의 손가락의 크기가 결정된다. 처리 및 제어 시스템(218)은 크기가 증가하고 있는지를 결정하기 위하여 순차적인 이미지들을 비교한다. 크기에 있어서의 증가가 결정된 후, 처리 및 제어 시스템(218)은 또 다른 2-3 개의 프레임들을 대기하고, 손가락 크기가 증가하였는지, 감소하였는지, 동일하게 머물러 있는지를 결정한다. 손가락 크기가 감소한 경우, 손가락은 작업 표면(22)을 터치하지 않았다. 손가락 크기가 동일하게 머물러 있는 경우, 처리 및 제어 시스템(218)은 또 다른 2-3 개의 프레임들을 대기하고, 변화가 발생하였는지를 결정한다. 손가락 크기가 프레임들의 임계 개수 동안에 증가하는 경우, 키 터치가 검출된다.In an alternative embodiment, the key touch is determined by comparing the images and determining when there is a large increase in finger size in the image sequence. Once the finger breaks the fan beam 20, the device starts the comparison routine. The size of the finger in the images is determined. The processing and control system 218 compares the sequential images to determine if the size is increasing. After the increase in size is determined, the processing and control system 218 waits for another 2-3 frames and determines whether the finger size has increased, decreased, or stayed the same. When the finger size was reduced, the finger did not touch the work surface 22. If the finger size remains the same, the processing and control system 218 waits for another 2-3 frames and determines if a change has occurred. If the finger size increases during the threshold number of frames, a key touch is detected.

278에서, 치수에 있어서의 변화가 제 3 기준을 충족하지 않는 경우, 터치 검출 루틴은 274에서 "터치 검출되지 않음"을 출력한다. 그러나, 278에서 제 3 기준이 충족되는 경우, 터치 검출 루틴은 280에서 터치 검출을 반환한다.At 278, if the change in dimension does not meet the third criterion, the touch detection routine outputs "Touch not detected" at 274. However, if the third criterion is satisfied at 278, the touch detection routine returns touch detection at 280.

대안적인 실시예에서, 팁 높이 대신에, 제 3 기준은 일련의 이미지들에서 손가락이 나타나는 시간 기간과 연관될 수 있다. 이 시간 기간은 작업 표면(22)을 향해 이동하는 손가락의 속도를 결정하기 위해 이용된다. 속도가 제로일 때에 터치가 검출되어, 손가락의 모든 이동은 일시적으로 정지되었다.In an alternative embodiment, instead of the tip height, the third criterion may be associated with the time period during which the finger appears in the series of images. This time period is used to determine the speed of the finger moving towards the work surface 22. When the speed was zero, a touch was detected, and all the movements of the finger were temporarily stopped.

하나의 실시예에서, 이미지 센서(16)는 초(second) 당 30 내지 60 프레임들에서 동작하고, 얇은 광 빔은 빔 두께에 있어서 3 ~ 5 mm의 범위에 있다. 따라서,손가락(24)이 광 빔(20)을 차단하고 작업 표면(22)을 터치하므로, 손가락(24)의 이미지들의 1-3 개의 프레임들만 있을 수 있다. 그러나, 그렇게 적은 이미지들은 손가락(24)의 속도의 정확한 계산을 방해할 수 있다.In one embodiment, the image sensor 16 operates at 30 to 60 frames per second, and the thin light beam is in the range of 3-5 mm in beam thickness. Thus, since the finger 24 blocks the light beam 20 and touches the work surface 22, there may be only 1-3 frames of images of the finger 24. However, so few images may interfere with accurate calculation of the speed of the finger 24.

도 10은 터치 위치 계산 루틴(232)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 터치 검출 루틴이 280에서 터치 검출을 반환하는 경우, 터치 위치 계산 루틴(232)이 실행된다. 터치 위치 계산 루틴(232)은 행 및 열 좌표들 (r,s) 및 (m,n)과 같은, 단계(268)로부터의 손가락 팁 이미지 데이터를 수신한다. 행 및 열 좌표들은 손가락 팁이 발견될 가능성이 있는 이미지의 블록을 정의한다. 하나의 실시예에서, 블록은 도 4a에서와 같이 직사각형이지만, 다른 형상의 블록들이 이용될 수도 있다.10 is a flowchart of a method of a virtual keyboard system for executing a touch position calculation routine 232. If the touch detection routine returns touch detection at 280, the touch position calculation routine 232 is executed. The touch position calculation routine 232 receives finger tip image data from step 268, such as row and column coordinates (r, s) and (m, n). Row and column coordinates define a block of the image where the finger tip is likely to be found. In one embodiment, the block is rectangular as in FIG. 4A, but other shaped blocks may be used.

282에서, 터치 위치 계산 루틴(232)은 손가락과 연관된 블록을 결정하기 위하여 행 및 열 좌표들을 처리한다. 대안적인 실시예에서, 팁의 좌측 우측, 상부, 및 하부 경계에 의해 정의되는 팁 박스(tip box)와 같이, 행 및 열 좌표들에 의해 정의되는 블록보다 크기가 더 작을 수 있는 손가락 팁을 더욱 정밀하게 정의하기 위하여, 블록이 추가로 처리된다. 팁 경계들은 블록 내의 다른 화소들에 비해 최대의 강도를 가지는 화소를 찾음으로써 결정된다. 이것은 화소들을 개별적으로 비교함으로써, 또는 블록의 중심을 결정하고 가장 큰 강도를 갖는 화소를 찾기 위하여 중심 근처의 다수의 화소들을 비교함으로써 달성될 수 있다. 예를 들어, 도 2c에서, 최대의 강도를 갖는 화소는 열 에지(column edge)들(203 및 204) 사이의 열 및 행 에지(row edge)들(601 및 602) 사이의 행일 것이다. 화소의 좌표들은 (행 에지, 열 에지)에 의해 표현될 수 있어서, 좌표들은 (601, 203)일 것이다.At 282, the touch position calculation routine 232 processes the row and column coordinates to determine the block associated with the finger. In an alternative embodiment, the finger tip may be further smaller than the block defined by the row and column coordinates, such as a tip box defined by the left right, top, and bottom boundaries of the tip. To define precisely, the block is processed further. Tip boundaries are determined by finding a pixel that has the greatest intensity relative to other pixels in the block. This can be accomplished by comparing the pixels individually, or by comparing multiple pixels near the center to determine the center of the block and find the pixel with the greatest intensity. For example, in FIG. 2C, the pixel with maximum intensity would be a row between column and row edges 601 and 602 between column edges 203 and 204. The coordinates of the pixel can be represented by (row edge, column edge), so the coordinates will be (601, 203).

화소가 최대의 강도를 가짐으로써, 블록 내의 팁 박스가 결정될 수 있다. 터치 위치 계산 루틴(232)은 최대 화소 근처의 화소들과 비교하기 위한 임계 강도 값을 결정한다. 임계 강도 값은 최대 강도를 가지는 화소의 강도의 백분율(percentage)이다. 예를 들어, 최대 강도의 50%의 강도는 임계 강도 값일 수 있다. 이어서, 터치 위치 계산 루틴(232)은 팁 박스의 우측 및 좌측 경계들을 결정하고, 즉, 터치 위치 계산 루틴(232)은 팁 박스의 행 경계들을 결정한다. 터치 위치 계산 루틴(232)은 최대 강도를 가지는 화소의 우측의 단일 화소를 비교하는데, 이것은 우측의 화소가 임계 강도 값보다 큰지를 알아보기 위한 것이며, 더 클 경우, 터치 위치 계산 루틴(232)은 최대 강도를 가지는 화소의 2개 우측의 화소를 비교한다. 터치 위치 계산 루틴(232)은 비교되는 화소가 임계 강도 값보다 작을 때까지, 최대 강도를 가지는 화소의 우측의 각각의 화소를 계속 비교한다. 화소가 임계 강도 값보다 작은 경우, 임계 강도 값보다 작은 화소의 1개 전의 화소의 좌표들은 팁 박스의 우측 경계로서 이용된다.As the pixel has the maximum intensity, the tip box in the block can be determined. The touch position calculation routine 232 determines a threshold intensity value for comparison with pixels near the maximum pixel. The threshold intensity value is a percentage of the intensity of the pixel with the maximum intensity. For example, an intensity of 50% of the maximum intensity may be a threshold intensity value. The touch position calculation routine 232 then determines the right and left boundaries of the tip box, that is, the touch position calculation routine 232 determines the row boundaries of the tip box. The touch position calculation routine 232 compares a single pixel on the right side of the pixel with the maximum intensity, to see if the pixel on the right is greater than the threshold intensity value, and if larger, the touch position calculation routine 232 The two right side pixels of the pixel having the maximum intensity are compared. The touch position calculation routine 232 continues comparing each pixel on the right side of the pixel with the maximum intensity until the pixel being compared is less than the threshold intensity value. If the pixel is smaller than the threshold intensity value, the coordinates of the pixel one pixel earlier than the threshold intensity value are used as the right boundary of the tip box.

이 동일한 처리는 팁 박스의 좌측 경계를 결정하기 위하여 최대 강도를 가지는 화소의 좌측의 동일한 행의 화소들에 대해 계속된다. 또한, 터치 위치 계산 루틴(232)은 동일한 열의 화소들을 비교하는 유사한 처리를 통해 팁 박스의 상부 및 하부 경계들을 최대 강도를 가지는 화소로서 결정한다.This same process continues for the pixels in the same row on the left side of the pixel with the maximum intensity to determine the left boundary of the tip box. In addition, the touch position calculation routine 232 determines the upper and lower boundaries of the tip box as the pixel having the maximum intensity through a similar process of comparing the pixels in the same column.

팁 박스의 경계들이 일단 정의되면, 터치 위치 계산 루틴(232)은 284에서, 팁의 중심의 부화소 해상도(subpixel resolution)를 결정한다. 도 4a는 장치(9)에 의해 촬영 및 처리되는 바와 같이 손가락(324)의 팁 박스(322)를 포함하는 이미지의 부분이다. 이 팁 박스는 열 에지(300)로부터 열 에지(320)로 그리고 행 에지(400)로부터 행 에지(410)로 연장되는 200개의 화소들을 포함한다. 손가락(324)의 최대 강도를 갖는 화소는 (405, 310)에서 화소를 가질 수 있어서, (405, 310)에서 화소의 좌측, 우측, 상부 및 하부의 화소들을 임계값과 비교함으로써 팁 박스가 형성된다.Once the boundaries of the tip box are defined, the touch position calculation routine 232 determines, at 284, the subpixel resolution of the center of the tip. 4A is a portion of an image that includes a tip box 322 of a finger 324 as captured and processed by the device 9. This tip box includes 200 pixels extending from column edge 300 to column edge 320 and from row edge 400 to row edge 410. The pixel with the maximum intensity of the finger 324 may have a pixel at 405, 310, such that a tip box is formed by comparing the pixels on the left, right, top and bottom of the pixel with a threshold at 405, 310. do.

284에서, 부화소 해상도는 팁(324)의 중심을 결정하기 위해 이용된다. 터치 위치 계산 루틴(232)은 팁 박스(322)에 대한 열방향 히스토그램(column-wise histogram)(326) 및 행방향 히스토그램(row-wise histogram)(328)을 결정한다. 각각의 화소들은 히스토그램들을 형성하기 위하여 각각의 행 및 열에서 함께 더해진다. 손가락(324)의 중심의 좌표들(행, 열)은 행 및 열 히스토그램들(328, 326)로부터 결정된다. 예를 들어, 히스토그램들을 기준으로, 손가락(324)의 중심은 (405.5, 309)에 있다. 좌표들은 정수(integer) 값일 필요가 없고, 실제로, 정수가 아닌 값들을 가지는 것은 손가락들의 더욱 정밀한 중심에 이르게 한다.At 284, subpixel resolution is used to determine the center of tip 324. The touch position calculation routine 232 determines a column-wise histogram 326 and a row-wise histogram 328 for the tip box 322. Each pixel is added together in each row and column to form histograms. The coordinates (row, column) of the center of the finger 324 are determined from the row and column histograms 328, 326. For example, with respect to histograms, the center of finger 324 is at (405.5, 309). The coordinates need not be integer values, and in fact, having non-integer values leads to a more precise center of the fingers.

센서(16)에 더 가까운 손가락들이 더 크게 나타나고 센서로부터 더 멀리 떨어져 있는 손가락들보다 더욱 양호한 해상도를 가지므로, 부화소 중심 검출이 유익하다. 부화소 해상도를 가지는 중심점을 결정하는 것이 더욱 정확하고, 이것은 키(key)의 사용자의 선택에 대한 더욱 정밀한 해독을 제공한다.Subpixel center detection is beneficial because fingers closer to the sensor 16 appear larger and have better resolution than fingers further away from the sensor. Determining the center point with subpixel resolution is more accurate, which provides a more accurate decryption of the user's selection of keys.

286에서, 터치 위치 계산 루틴(232)은 교정 테이블(234)을 액세스함으로써, 그리고 팁 중심(행, 열)의 쌍일차 보간(bilinear interpolation)을 이용함으로써, 팁의 중심으로부터 키보드와 연관된 (x,y) 좌표들에서 물리적 위칠르 결정한다. 특히, 검출된 객체들의 중심들 (행, 열)은 도 14 및 도 15의 교정 테이블들과 같은 교정 테이블들을 이용함으로써 실세계의 좌표들로 변환된다.At 286, the touch position calculation routine 232 accesses the calibration table 234 and utilizes bilinear interpolation of the center of the tip (rows, columns) to thereby associate (x, y) Determine the physical widgets in the coordinates. In particular, the centers (rows, columns) of the detected objects are converted to coordinates in the real world by using calibration tables such as the calibration tables of FIGS. 14 and 15.

더욱 구체적으로, 쌍일차 보간은 손가락 팁의 중심의 부화소 값에 기초하여 팁의 물리적 위치에 대한 (x,y) 좌표들을 제공하기 위해 이용된다. 물리적 위치는 사용자에 의해 어떤 키가 선택되었는지를 결정하기 위해 이용될 것이다. 중심의 부화소 값은 더욱 초기의 처리 단계에서 결정된다. 부화소 값으로부터, 연관된 화소가 결정된다.More specifically, bilinear interpolation is used to provide (x, y) coordinates for the physical location of the tip based on the subpixel value of the center of the finger tip. The physical location will be used to determine which key was selected by the user. The central subpixel value is determined at an earlier stage of processing. From the subpixel values, the associated pixel is determined.

도 17은 정수가 아닌 행 밀 열 값들, (r, c)를 가지는 부화소 중심(630)을 기초로 한 연관된 화소의 그래픽 표현이다. 도 17은 물리적 위치의 좌표들의 x 값과 연관된다. 물리적 위치의 좌표들의 y 값은 유사한 방식으로 결정된다.17 is a graphical representation of an associated pixel based on subpixel center 630 with non-integer row mill column values, (r, c). 17 is associated with the x value of the coordinates of the physical location. The y values of the coordinates of the physical location are determined in a similar manner.

x 및 y 값들은 x-교정 테이블 및 y-교정 테이블로부터 각각 집합되고, 도 14 및 도 15를 참조한다. x 및 y 값들은 (r,c) 좌표들 및 가장 근접한 정수인 행 및 열 값들, 예를 들어, 도 17로부터의 r1, r2, c1, 및 c2로부터 결정된다.The x and y values are collected from the x-correction table and the y-correction table, respectively, and refer to FIGS. 14 and 15. The x and y values are determined from (r, c) coordinates and the row and column values that are the nearest integers, for example r1, r2, c1, and c2 from FIG.

쌍일차 보간을 수행하기 위하여, 시스템은 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 값들의 그룹을 결정할 수 있다.To perform bilinear interpolation, the system assumes r1 <r <r2 and c1 <c <c2, and r1, r2, c1 and c2 are all integers. And r2 = r1 + 1 and c2 = c1 + 1. To facilitate discussion, in the embodiment of FIG. 17, the subpixel value at the center of the finger is (2.2,633.2), r is equal to 2.2 and c is equal to 633.2. Thus, r1 is equal to 2 and r2 is equal to 3. In addition, c1 is equal to 633 and c2 is equal to 634. Once the system has r, r1, r2, c, c1 and c2, the system can determine the group of x and y values from the x-correction table and the y-correction table to determine the (x, y) coordinates. .

도 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)이다.As shown in FIG. 17, four x values may be determined from the subpixel values, X 11 , X 12 , X 21 and X 22 at the center of the finger tip. The rows and columns for X 11 are (2,633) and the value for x from the x-calibration table of FIG. 14 is 302. More specifically, the x value for X 11 is (r1, c1), for X 12 , the value is (r1, c2), for X 21 , the value is (r2, c1) and for X 22 , The value is (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)에 의해 연산될 수 있다.By these values, the value X (rc) of pixel (r, c) is X (r, c) = X 11 * (r2-r) * (c2-c) + X 21 * (r-r1) * ( c2-c) + X 12 * (r2-r) * (c-c1) + X 22 * (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)에 의해 연산될 수 있다.Similarly, the value Y (rc) of pixel (r, c) is equal to Y (r, c) = Y 11 * (r2-r) * (c2-c) + Y 21 * (r-r1) * (c2 -c) + Y 12 * (r2-r) * (c-c1) + Y 22 * (r-r1) * (c-c1) can be calculated.

X(r,c) 및 Y(r,c) 값들에 의해, 시스템은 키 맵을 액세스할 수 있고 사용자에 의해 어떤 키들이 선택되었는지를 결정할 수 있다.The X (r, c) and Y (r, c) values allow the system to access the key map and determine which keys have been selected by the user.

교정 테이블들로 돌아가면, 이들은 이미지 좌표들(행, 열)로부터 실세계 좌표들(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)인 것으로 간주될 것이다.Returning to the calibration tables, these consist of mapping from image coordinates (row, column) to real world coordinates (x, y). 14 and 15 are exemplary X-axis calibration table 500 and Y-axis calibration table 600 used to translate the position of an object from the images to the position of the object relative to the keyboard. FIG. 16 is a top view of the apparatus 9 illustrating the X-axis and the Y-axis as referenced in the calibration tables 500, 600. Points 0,0 on the X and Y axes of FIG. 16 pass through the center of the device 9. The light beam 20 is centered on the Y-axis and extends in both the positive and negative directions on the X-axis. The light beam 20 extends to what is commonly referred to as the negative Y-axis, but since only half of the Y-axis is relevant to this discussion, all values discussed for the Y-axis would be considered positive. will be.

도 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에 의해 표현된다.14 is an X-axis calibration table 500 having a plurality of rows 504 and columns 502. Columns 502 represent columns 1-8 and 633-640. Rows 500 include rows 1-8, 236-243, and 473-480. X-axis calibration table 500 includes 640 columns and 480 rows, which is consistent with a VGA sensor. In row 1, column 1, the value is negative 313 (-313), which may correspond to 31.3 mm. This value may correspond to point A on the X-axis of FIG. 16. The sensor system cannot accurately capture tips too close to the device 9, so the values illustrated in the X-axis calibration table 500 start at a distance away from the device 9. In row 1, column 640, the value is positive 380, which may correspond to 30.8 mm. This value is represented by point B on the X-axis of FIG. 16.

행 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)에 대응하고, 이것은 센서 시스템에 의해 촬영되도록 이용가능하다.In row 480, column 1, the value is negative 4414 (-4414), which may correspond to 441.4 mm. This value is represented by point C on the X-axis of FIG. 16. In row 480, column 640, the value is positive 4346, which may correspond to 434.6 mm. This value can be represented by point D on the X-axis of FIG. 16. The area 188 defined by points A, B, C and D, which are transformed to the boundaries of the light beam 20, corresponds to the detectable area 23, which is available to be imaged by the sensor system.

도 15에서, Y-축 교정 테이블(600)은 행들(1-8, 236-243, 및 473-480)을 포함한다. 각각의 행의 값들은 376으로부터 5995까지 서서히 증가한다. Y-축 교정 테이블(600)의 각 열은 매 행에 대해 동일한 수들을 포함한다. 열들의 수는 X-축 교정 테이블(500)에서의 행들의 수에 대응한다. Y-축 교정 테이블(600)의 각 열에 대해 행 값들을 반복하는 것은 각 이미지에 대한 위치 정보를 결정함에 있어서 소프트웨어를 도울 수 있다.In FIG. 15, Y-axis calibration table 600 includes rows 1-8, 236-243, and 473-480. The values in each row slowly increase from 376 to 5995. Each column of the Y-axis calibration table 600 contains the same numbers for each row. The number of columns corresponds to the number of rows in the X-axis calibration table 500. Repeating the row values for each column of the Y-axis calibration table 600 can assist the software in determining the location information for each image.

예를 들어, 행 및 열 히스토그램들(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)에 의해 이용된다.For example, in the coordinates (row, column) of the center of the finger 324 determined from the row and column histograms 328, 326, the (x, y) coordinates representing the position associated with the virtual keyboard are the calibration table. It can be located using the. If the row center coordinates are 242 and the column center coordinates are 636, the X coordinate value will be 1312 and the y coordinate value will be 1796. As another example, if the row center coordinate value is 2.5 and the column center v coordinate value is 6.5, four values from the x-axis table and four values from the y-axis table will be calculated, i.e., x- For the axis table, column 2, row 6 (-317), column 3, row 6 (-316), column 2, row 7 (-318), and column 3, row 7 (-317) will be calculated. The average of all the values is -317, which will be the x coordinate. Similarly, for the y-axis table, column 2, row 6 382, column 3, row 6 382, column 2, row 7 384, and column 3, row 7 384 are calculated. will be. The average of all these values is 383, which will return the coordinates of (-317,383) corresponding to the user's finger in the detectable area 23. This position coordinate from the tables will be output from the position detection routine 232, at 288. The location coordinates are used by the key identification routine 236 to determine the selected key from the key map 238.

이 실시예에서는, 작업 표면 상의 전방으로부터 후방까지의 거리를 나타내기 위하여 480 화소들이 이용가능하다는 것에 주목해야 한다. 측면 대 측면 거리에 비례하는 전방-대-후방 거리가 구현되어야 할 경우, 행들 사이를 나타낸 거리들은 열들 사이를 나타낸 거리들에 비해 더 클 수 있다. 열들 사이의 차이들이 행들 사이의 거리들과 상이할 수 있는 두 번째 이유는 작업 표면 상의 작업 영역의 형상과 관련이 있다. 광원 유닛(12)으로부터 연장되는 광 빔(20)은 하우징으로부터 각을 이루어 연장된다. 따라서, 센서(16)로부터 멀리 떨어져 있는 데이터를 캡처하는 화소들은 센서(16)에 더 근접한 작업 영역의 부분으로부터 데이터를 캡처하는 화소들보다 위치에 있어서 더 큰 변화들을 나타낼 수 있다.It should be noted that in this embodiment, 480 pixels are available to represent the distance from front to back on the working surface. If a front-to-rear distance proportional to the side to side distance is to be implemented, the distances shown between the rows may be greater than the distances shown between the columns. The second reason that the differences between the columns may differ from the distances between the rows is related to the shape of the work area on the work surface. The light beam 20 extending from the light source unit 12 extends at an angle from the housing. Thus, pixels capturing data remote from sensor 16 may exhibit larger changes in position than pixels capturing data from a portion of the work area closer to sensor 16.

교정 테이블(500)은 장치의 테스팅 동안에 생성될 수 있다. 예를 들어, 교정 테이블은 장치의 전방에 고유의 이미지를 배치하고, 이미지를 캡처하고, 그 다음으로 그 이미지에 대해 데이터 처리를 수행함으로써 생성될 수 있다. 대안적으로, 교정 테이블(500)은 작업 영역 내에 객체를 배치하고, 이미지를 캡처하고, 작업 영역에서 객체의 위치를 변화시키고, 이미지를 다시 캡처하고, 작업 영역 내의 객체가 이미지 센서에서의 화소들과 어떻게 상관되는지를 결정하기 위하여 데이터를 처리함으로써 수동으로 생성될 수 있다.The calibration table 500 can be created during testing of the device. For example, a calibration table can be created by placing a unique image in front of the device, capturing the image, and then performing data processing on that image. Alternatively, the calibration table 500 places objects in the work area, captures an image, changes the position of the object in the work area, recaptures the image, and the objects in the work area are pixels in the image sensor. It can be generated manually by processing the data to determine how it correlates with.

교정 테이블은 메모리 내에 저장될 수 있고, 가상 메모리 장치 상에 위치된 프로세서에 의해 이용될 수 있다. 대안적으로, 교정 테이블은 호스트 장치가 장치와 통신할 수 있도록 동작 가능한 호스트 장치 상의 드라이버들의 설치 동안에 호스트 장치 상에 설치될 수 있다.The calibration table may be stored in memory and used by a processor located on the virtual memory device. Alternatively, the calibration table may be installed on the host device during installation of drivers on the host device that are operable to enable the host device to communicate with the device.

도 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'에 대응한다. 위치 좌표들은 교정 테이블들로부터 데이터를 검색하기 위하여 팁의 중심점을 이용함으로써 결정된다.Returning to FIG. 7, the location coordinates of the tip are fed to the key identification routine 236, which accesses a key map to determine the currently selected key based on the location coordinates. For example, looking at image 100 of FIG. 2A, the (x, y) coordinates of the tip correspond to the keys on the keyboard of FIG. 5. For example, the position coordinates for the first finger 106 correspond to '5' on the portion 35 of the keyboard pattern 38 and the second finger 108 corresponds to 'x'. Also, the image 104 of FIG. 3A includes a first finger 106 that selects the letter 'e', and the second finger 108 corresponds to the letter 's'. Position coordinates are determined by using the center point of the tip to retrieve data from the calibration tables.

도 11은 키 차단 검출 루틴(242)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 키 차단 검출 루틴(242)은 이미지 센서(16)의 투시도로부터 임의 키들이 임의의 다른 키들에 의해 차단되는 것을 검출하기 위한 것이다. 일부 키 스트로크(key stroke)들은 예를 들어, 일부 글자들을 대문자로 시작하기 위하여, 손가락들을 매우 근접하게 함께 또는 중첩하여 촬영할 것이다. 예를 들어, 문자 'a'를 대문자로 하기 위해서는, 키들 'SHIFT +A'가 선택되어야 한다. 'SHIFT' 키가 먼저 눌러지고, 그 다음으로, 'A' 키가 눌러진다. 키 'A'가 눌러지기 전에, 'SHIFT' 키를 누르는 손가락은 이미지에서 볼 수 있다. 키 'A'가 일단 눌러지면, 'SHIFT' 키를 여전히 누르고 있는 손가락은 'A' 키를 누르고 있는 손가락에 의해 차단될 수 있다. 그 결과, 차단된 손가락은 촬영되지 않을 수 있거나 부분적으로만 촬영될 수 있다.11 is a flowchart of a method of a virtual keyboard system for executing a key block detection routine 242. The key lock detection routine 242 is for detecting from the perspective of the image sensor 16 that any keys are blocked by any other keys. Some key strokes will shoot the fingers very closely together or overlapping, for example, to start some letters with a capital letter. For example, to capitalize the letter 'a', the keys 'SHIFT + A' must be selected. The 'SHIFT' key is pressed first, followed by the 'A' key. Before the key 'A' is pressed, the finger pressing the 'SHIFT' key can be seen in the image. Once the key 'A' is pressed, the finger still holding the 'SHIFT' key can be blocked by the finger holding the 'A' key. As a result, the blocked finger may not be photographed or may be photographed only partially.

294에서, 키 검출 루틴(242)은 키 식별 루틴(236)으로부터 현재의 키 정보를 수신하고, 임의의 이전에 촬영된 키들이 현재의 이미지에서 더 이상 나타나지 않는지를 결정한다. 현재의 키 정보는 위치 좌표들 및 키 맵으로부터 복귀될 때에 선택된 키 또는 키들이다. 키 검출 루틴은 이전의 키 리스트를 현재의 키 리스트와 비교한다. 이전의 키들의 일부 키들이 현재의 이미지에서 더 이상 존재하지 않는 경우, 그 키들은 차단될 수 있거나, 사용자에 의해 더 이상 선택되지 않을 수 있다.At 294, key detection routine 242 receives current key information from key identification routine 236 and determines if any previously photographed keys no longer appear in the current image. The current key information is the selected key or keys when returned from the location coordinates and the key map. The key detection routine compares the previous key list with the current key list. If some of the previous keys no longer exist in the current image, they may be blocked or may no longer be selected by the user.

296에서, 루틴(242)은 팁 검출 루틴(228)으로 268에서, 손가락 팁 이미지 데이터 출력을 수신하며, 도 8을 참조한다. 다음으로, 키 차단 검출 루틴(242)은 열방향 비교에 기초하여, 임의의 누락 키들이 현재의 이미지 내에 위치된 현재의 손가락 팁들과 중첩하는지를 결정한다. 예를 들어, 누락 키들 중의 하나가 현재의 손가락 팁 이미지 데이터의 열들과 60 퍼센트만큼 중첩하는 경우, 누락 키는 차단된 키일 수 있다. 중첩 퍼센트는 이미지 센서의 구성 및 장치(9)의 특성들에 기초하여 필요에 따라 조절될 수 있다.At 296, routine 242 receives finger tip image data output at 268 to tip detection routine 228, see FIG. 8. Next, the key block detection routine 242 determines whether any missing keys overlap with current finger tips located within the current image based on the column comparison. For example, if one of the missing keys overlaps with the columns of current finger tip image data by 60 percent, the missing key may be a blocked key. The superposition percentage can be adjusted as needed based on the configuration of the image sensor and the characteristics of the device 9.

도 3a에서, 제 2 손가락(108)의 일부분만 이미지 센서(16)에 의해 볼 수 있다. 제 2 손가락(108)이 먼저 내려 놓아져서, 이미지(104) 이전의 이미지에서는, 촬영된 유일한 손가락이 손가락(108)인 경우에는, 제 2 손가락(108)은 gsuwo의 키 행 좌표들(604, 606) 및 현재의 키 열 좌표들(207, 209)을 가질 수 있고, 이것은 도 5의 's'에 대응한다.In FIG. 3A, only a portion of the second finger 108 is visible by the image sensor 16. The second finger 108 is put down first, so in the image before the image 104, if the only finger photographed is the finger 108, the second finger 108 is the key row coordinates 604 of gsuwo; 606 and current key column coordinates 207, 209, which corresponds to 's' in FIG. 5.

도 3a의 이미지에서, 시스템은 (603,606)의 현재의 키 행 좌표들 및 (205,209)의 현재의 키 열 좌표들을 갖는 하나의 큰 손가락을 검출할 수 있다. 295에서, 키 차단 검출 루틴(242)은 누락 키 's'가 현재의 키 'e'와 적어도 60% 중첩되었다고 결정할 것이다.In the image of FIG. 3A, the system can detect one large finger having current key row coordinates of 603, 606 and current key column coordinates of 205, 209. At 295, key block detection routine 242 will determine that the missing key 's' overlaps at least 60% with the current key 'e'.

298에서, 키 차단 검출 루틴(242)은 누락 키가 현재의 키에 의해 이미지 센서(16)로부터 분리되어 있는지를 결정한다. 분리되어 있다면, 루틴(242)은 330에서, 누락 키가 차단된 키라고 출력한다. 이미지 센서로부터의 거리의 결정은 행 좌표 수들을 비교함으로써 달성될 수 있다. 예를 들어, 더 낮은 행 수들이 이미지 센서에 더 가까운 경우에는, 그 행 수들이 현재의 키의 행 수들보다 더 크면, 키가 차단된다.At 298, the key block detection routine 242 determines whether the missing key is separated from the image sensor 16 by the current key. If so, the routine 242 outputs, at 330, that the missing key is a blocked key. Determination of the distance from the image sensor can be accomplished by comparing the row coordinate numbers. For example, if lower row numbers are closer to the image sensor, the key is blocked if the row numbers are greater than the row numbers of the current key.

키 식별 루틴(236)으로부터 출력된 현재의 키 정보와, 키 차단 검출 루틴(242)으로부터 출력된 차단된 키 데이터는 키 이벤트 생성 루틴(key event generation routine)(240)에 의해 수신된다. 도 12는 키 이벤트 생성 루틴(240)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 332에서, 키 이벤트 생성 루틴(240)은 차단된 키들을 현재의 키 리스트에 추가한다. 334에서, 키 이벤트 생성 루틴(240)은 현재의 키 리스트를 이전의 키 리스트와 비교하고, 이벤트가 출력되어야 하는지를 결정한다. 아래는 가능한 키 이벤트들의 리스트이다.The current key information output from the key identification routine 236 and the blocked key data output from the key breaking detection routine 242 are received by the key event generation routine 240. 12 is a flowchart of a method of a virtual keyboard system for executing a key event generation routine 240. At 332, key event generation routine 240 adds the blocked keys to the current key list. At 334, key event generation routine 240 compares the current key list with the previous key list and determines if an event should be output. Below is a list of possible key events.

● KEY-DOWN EVENT : 키가 이전의 키 리스트가 아니라 현재의 키 리스트에 있는 경우, 키 다운 이벤트는 336에서, 키와 연관되어 출력된다.KEY-DOWN EVENT: If the key is in the current key list rather than the previous key list, the key down event is output at 336 in association with the key.

● KEY-UP EVENT : 키가 현재의 키 리스트가 아니라 이전의 키 리스트에만 있는 경우, 키 업 이벤트는 336에서, 키와 연관되어 출력된다.KEY-UP EVENT: If the key is in the previous key list instead of the current key list, the key up event is output at 336 in association with the key.

● KEY-HELD EVENT : 키가 현재 및 이전의 키 리스트에 모두 있는 경우, 키 유지(held) 이벤트는 336에서, 유지된 키와 연관되어 출력된다.KEY-HELD EVENT: If the key is in both the current and previous key list, the key hold event is output at 336 in association with the held key.

키 이벤트들은 화면 또는 디스플레이 상에서 적절한 텍스트를 디스플레이하기 위하여 호스트에 의해 수신된다.Key events are received by the host to display the appropriate text on the screen or display.

도 13은 합성 키 테이블(338), 교정 테이블, 및 키 맵 테이블을 사용하는 가상 키보드 시스템의 대안적인 실시예의 방법의 순서도이다. 합성 키 테이블은 교정 테이블(x, y 테이블들) 및 키 맵 테이블을 조합함으로써 생성된다. 이것은 팁의 위치를 결정하는 단계를 제거하고, 그 대신에, 특정 키에 맵핑하기 위하여 행 및 열 좌표들을 이용한다. 따라서, 연산 성능은 상당히 개선될 수 있다.13 is a flow chart of a method of an alternative embodiment of a virtual keyboard system that uses a composite key table 338, a calibration table, and a key map table. The composite key table is created by combining the calibration table (x, y tables) and the key map table. This eliminates the step of determining the position of the tip, and instead uses the row and column coordinates to map to a specific key. Thus, computational performance can be significantly improved.

예를 들어, 도 2a에 대하여 위에서 논의된 바와 같이, 팁 블록과 연관된 행 및 열 좌표들은 합성 키 테이블을 액세스하여 손가락들에 의해 선택된 키들을 결정하기 위해 이용될 수 있다. 도 2a에서, 제 1 손가락(106)은 '5'를 선택하고, 제 2 손가락(108)은 'x'를 선택한다. 제 1 손가락(106)은 행 좌표들(601, 602) 및 열 좌표들(202, 205)을 가지고, 제 2 손가락(108)은 행 좌표들(607, 608) 및 열 좌표들(206, 210)을 가진다.For example, as discussed above with respect to FIG. 2A, the row and column coordinates associated with the tip block can be used to access the composite key table to determine the keys selected by the fingers. In FIG. 2A, the first finger 106 selects '5' and the second finger 108 selects 'x'. The first finger 106 has row coordinates 601, 602 and column coordinates 202, 205, and the second finger 108 has row coordinates 607, 608 and column coordinates 206, 210. )

상기 설명된 다양한 실시예들은 추가적인 실시예들을 제공하기 위하여 조합될 수 있다. 상기 상세한 설명을 고려하여 실시예들에 대해 이러한 그리고 다른 변경들이 행해질 수 있다. 일반적으로, 다음의 청구항들에서는, 사용되는 용어들이 명세서 및 청구항들에서 개시된 특정한 실시예들로 청구항들을 한정하도록 해석되는 것이 아니라, 이러한 청구항들에 대해 부여된 균등물들의 전체 범위와 함께 모든 가능한 실시예들을 포함하도록 해석되어야 한다. 따라서, 청구항들은 개시 내용에 의해 제한되지 않는다.The various embodiments described above can be combined to provide further embodiments. These and other changes may be made to the embodiments in light of the above detailed description. In general, in the following claims, the terms used are not to be construed to limit the claims to the specific embodiments disclosed in the specification and claims, but rather all possible implementations with the full scope of equivalents to which such claims are entitled. It should be interpreted to include examples. Accordingly, the claims are not limited by the disclosure.

Claims (18)

복수의 키(key)들을 가지는 가상 키보드의 표시를 포함하는 작업 영역의 이미지들을 캡처하는 단계;
상기 복수의 키들 중의 선택된 키를 검출하는 단계; 및
상기 선택된 키의 식별자를 호스트 장치에 출력하는 단계를 포함하고,
상기 선택된 키를 검출하는 단계는,
상기 캡처된 이미지들에서의 광 강도의 변형들에 대해 상기 캡처된 이미지들을 분석함으로써 상기 작업 영역에서 객체를 검출하는 단계; 및
제 1 행 히스트그램 및 제 1 열 히스토그램에 기초하여 상기 선택된 키의 식별자를 결정하는 단계를 포함하고,
상기 객체를 검출하는 단계는,
상기 캡처된 이미지들의 각각에서 행들 각각에서의 광 강도에 기초하여 제 1 행 히스토그램을 생성하는 단계; 및
상기 캡처된 이미지들의 각각에서 열들 각각에서의 광 강도에 기초하여 제 1 열 히스토그램을 생성하는 단계를 포함하는, 방법.
Capturing images of a work area including an indication of a virtual keyboard having a plurality of keys;
Detecting a selected one of the plurality of keys; And
Outputting an identifier of the selected key to a host device;
Detecting the selected key,
Detecting an object in the work area by analyzing the captured images for variations in light intensity in the captured images; And
Determining an identifier of the selected key based on a first row histogram and a first column histogram,
Wherein detecting the object comprises:
Generating a first row histogram based on light intensity in each of the rows in each of the captured images; And
Generating a first column histogram based on light intensity in each of the columns in each of the captured images.
청구항 1에 있어서,
상기 객체가 상기 작업 영역에서 작업 표면을 터치하는지를 검출하는 단계를 더 포함하고,
상기 검출하는 단계는,
각각의 캡처된 이미지로부터 배경 이미지를 추출하는 단계;
상기 제 1 열 히스토그램에 대한 열 이동 평균 및 상기 제 1 행 히스토그램에 대한 행 이동 평균을 결정하는 단계;
상기 열 이동 평균보다 큰 상기 제 1 열 히스토그램의 세그먼트들을 결정하는 단계;
상기 열 이동 평균보다 큰 상기 제 1 열 히스토그램의 세그먼트들과 연관된 열들의 서브세트(subset)를 결정하는 단계;
상기 행 이동 평균보다 큰 상기 제 1 행 히스토그램의 세그먼트들을 결정하는 단계; 및
상기 행 이동 평균보다 큰 상기 제 1 행 히스토그램의 세그먼트들과 연관된 행들의 서브세트를 결정하는 단계를 포함하는, 방법.
The method according to claim 1,
Detecting whether the object touches a work surface in the work area;
Wherein the detecting comprises:
Extracting a background image from each captured image;
Determining a column moving average for the first column histogram and a row moving average for the first row histogram;
Determining segments of the first column histogram that are greater than the column moving average;
Determining a subset of columns associated with segments of the first column histogram that is greater than the column moving average;
Determining segments of the first row histogram that are greater than the row moving average; And
Determining a subset of rows associated with segments of the first row histogram that is greater than the row moving average.
청구항 2에 있어서,
상기 작업 표면 상에서 연장되는 광 빔을 제공하는 단계를 더 포함하고,
상기 광 빔은 상기 객체가 상기 광 빔과 상호작용할 때에 캡처된 이미지들에서 광 강도를 생성하도록 구성되는, 방법.
The method according to claim 2,
Providing a light beam extending on the working surface,
The light beam is configured to generate light intensity in the captured images when the object interacts with the light beam.
청구항 3에 있어서,
상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
상기 행들의 서브세트에 기초하여 각각의 캡처된 이미지에서 상기 객체의 치수를 결정하는 단계; 및
상기 객체의 상기 치수와 상기 광 빔의 두께와 비교하는 단계를 더 포함하는, 방법.
The method of claim 3,
Detecting whether the object touches the work surface comprises:
Determining the dimension of the object in each captured image based on the subset of rows; And
Comparing the dimension of the object to a thickness of the light beam.
청구항 2에 있어서,
상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
상기 객체를 포함하는 연속적인 캡처된 이미지들의 수를 카운트하는 단계; 및
상기 연속적인 캡처된 이미지들의 수가 하한 터치 임계값보다 높고 상한 터치 임계값보다 작은지를 결정하는 단계를 더 포함하는, 방법.
The method according to claim 2,
Detecting whether the object touches the work surface comprises:
Counting a number of successive captured images containing the object; And
Determining if the number of consecutive captured images is higher than a lower touch threshold and less than an upper touch threshold.
청구항 2에 있어서,
상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
연속적인 캡처된 이미지를 비교함으로써 상기 객체의 치수가 증가하고 있는지를 결정하는 단계를 더 포함하는, 방법.
The method according to claim 2,
Detecting whether the object touches the work surface comprises:
Determining whether the dimension of the object is increasing by comparing successive captured images.
청구항 1에 있어서,
상기 제 1 행 히스토그램 및 상기 제 1 열 히스토그램에 기초하여 상기 선택된 키의 식별자를 결정하는 단계는,
상기 행들의 서브세트 및 상기 열들의 서브세트를 분석함으로써 상기 객체의 중심을 결정하는 단계;
상기 객체의 중심의 좌표들을 결정하기 위하여 교정 테이블을 액세스하는 단계; 및
키 맵을 액세스함으로써 상기 좌표들로부터 상기 선택된 키의 식별자를 결정하는 단계를 포함하는, 방법.
The method according to claim 1,
Determining an identifier of the selected key based on the first row histogram and the first column histogram,
Determining a center of the object by analyzing the subset of rows and the subset of columns;
Accessing a calibration table to determine coordinates of the center of the object; And
Determining an identifier of the selected key from the coordinates by accessing a key map.
청구항 7에 있어서,
상기 객체의 중심을 결정하는 단계는,
상기 행들의 서브세트에 기초하여 제 2 행 히스토그램을 생성하는 단계;
상기 열들의 서브세트에 기초하여 제 2 열 히스토그램을 생성하는 단계;
상기 제 2 행 히스토그램의 제 1 피크를 결정하는 단계; 및
상기 제 2 열 히스토그램의 제 2 피크를 결정하는 단계를 포함하는, 방법.
The method of claim 7,
Determining the center of the object,
Generating a second row histogram based on the subset of rows;
Generating a second column histogram based on the subset of columns;
Determining a first peak of the second row histogram; And
Determining a second peak of the second column histogram.
복수의 키들을 가지는 키보드의 표시를 가지는 작업 영역;
상기 작업 영역의 이미지들을 캡처하도록 구성된 이미지 센서 모듈로서, 상기 각각의 캡처된 이미지는 화소들의 행들 및 열들을 포함하는, 상기 이미지 센서 모듈; 및 상기 캡처된 이미지들에서 광 강도의 변동들에 대해 상기 캡처된 이미지들을 분석하도록 구성된 키 선택 모듈로서, 상기 광 강도의 변동들은 상기 작업 영역에서 객체와 연관되는, 상기 키 선택 모듈을 포함하는 장치를 포함하고,
상기 키 선택 모듈은,
상기 캡처된 이미지들의 각각에서 상기 행들 각각의 광 강도에 기초하여 제 1 행 히스토그램을 생성하고,
상기 캡처된 이미지들의 각각에서 상기 열들 각각의 광 강도에 기초하여 제 1 열 히스토그램을 생성하고,
상기 제 1 행 히스토그램 및 상기 제 1 열 히스토그램에 기초하여 상기 복수의 키들의 선택된 키의 식별자를 결정하고,
상기 선택된 키의 상기 식별자를 호스트 장치로 출력하도록 더 구성되는, 시스템.
A work area having a display of a keyboard having a plurality of keys;
An image sensor module configured to capture images of the working area, wherein each captured image comprises rows and columns of pixels; And a key selection module configured to analyze the captured images for variations in light intensity in the captured images, wherein the variations in light intensity are associated with an object in the work area. Including,
The key selection module,
Generate a first row histogram based on the light intensity of each of the rows in each of the captured images,
Generate a first column histogram based on the light intensity of each of the columns in each of the captured images,
Determine an identifier of a selected key of the plurality of keys based on the first row histogram and the first column histogram,
And output the identifier of the selected key to a host device.
청구항 9에 있어서,
상기 키 선택 모듈은,
상기 캡처된 이미지들에서 상기 객체를 검출하도록 구성된 객체 검출 모듈;
상기 객체가 상기 작업 영역의 작업 표면을 터치하는지를 검출하도록 구성된 터치 검출 모듈;
상기 객체에 의해 터치된 상기 작업 표면 상의 위치에 대응하는 상기 캡처된 이미지들로부터의 좌표를 결정하도록 구성된 위치 모듈;
상기 캡처된 이미지들로부터의 상기 좌표에 기초하여 상기 선택된 키의 식별자를 결정하도록 구성된 키 식별 모듈; 및
사용자에 의한 텍스트 입력과 연관된 호스트 장치로 키 이벤트 식별자를 출력하도록 구성된 키 이벤트 생성 모듈을 포함하는, 시스템.
The method of claim 9,
The key selection module,
An object detection module configured to detect the object in the captured images;
A touch detection module configured to detect whether the object touches a work surface of the work area;
A location module configured to determine coordinates from the captured images corresponding to a location on the working surface touched by the object;
A key identification module configured to determine an identifier of the selected key based on the coordinates from the captured images; And
And a key event generation module configured to output a key event identifier to a host device associated with text input by a user.
청구항 10에 있어서,
상기 키 이벤트 생성 모듈은,
현재의 키 리스트 및 이전의 키 리스트를 저장하도록 구성된 키 이벤트 저장 모듈; 및
차단된 키를 식별하기 위하여 상기 현재의 키 리스트 및 상기 이전의 키 리스트를 비교하도록 구성된 키 차단 검출 모듈을 더 포함하는, 시스템.
The method of claim 10,
The key event generation module,
A key event storage module configured to store a current key list and a previous key list; And
And a key block detection module configured to compare the current key list and the previous key list to identify a blocked key.
청구항 10에 있어서,
상기 객체 검출 모듈은,
각각의 캡처된 이미지로부터 배경 이미지를 추출하고,
상기 제 1 열 히스토그램에 대한 열 이동 평균 및 상기 제 1 행 히스토그램에 대한 행 이동 평균을 결정하고,
상기 열 이동 평균보다 큰 상기 제 1 열 히스토그램의 세그먼트들을 결정하고,
상기 열 이동 평균보다 큰 상기 제 1 열 히스토그램의 상기 세그먼트들과 연관된 열들의 서브세트를 결정하고,
상기 행 이동 평균보다 큰 상기 제 1 행 히스토그램의 세그먼트들을 결정하고,
상기 행 이동 평균보다 큰 상기 제 1 행 히스토그램의 상기 세그먼트들과 연관된 행들의 서브세트를 결정하도록 더 구성되는, 시스템.
The method of claim 10,
The object detection module,
Extract the background image from each captured image,
Determine a column moving average for the first column histogram and a row moving average for the first row histogram,
Determine segments of the first column histogram that are greater than the column moving average,
Determine a subset of columns associated with the segments of the first column histogram that is greater than the column moving average,
Determine segments of the first row histogram that are greater than the row moving average,
And determine a subset of rows associated with the segments of the first row histogram that is greater than the row moving average.
청구항 10에 있어서,
상기 장치는 상기 작업 표면 상에 연장되는 광 빔을 제공하도록 구성되고, 상기 광 빔은 상기 객체가 상기 광 빔과 상호작용할 때에 상기 캡처된 이미지들에서 광 강도를 생성하도록 구성되는, 시스템.
The method of claim 10,
The apparatus is configured to provide a light beam extending on the working surface, the light beam configured to generate light intensity in the captured images when the object interacts with the light beam.
청구항 13에 있어서,
상기 터치 검출 모듈은,
상기 행들의 서브세트에 기초하여 각각의 캡처된 이미지에서 상기 객체의 치수를 결정하고,
상기 객체의 상기 치수를 상기 광 빔의 두께와 비교하도록 더 구성되는, 시스템.
The method according to claim 13,
The touch detection module,
Determine the dimension of the object in each captured image based on the subset of rows,
Further compare the dimension of the object to a thickness of the light beam.
청구항 10에 있어서,
상기 터치 검출 모듈은 상기 객체를 포함하는 연속적인 캡처된 이미지들의 수를 카운트하고, 상기 연속적인 캡처된 이미지들의 수가 하한 터치 임계값보다 크고 상한 터치 임계값보다 작은지를 결정하도록 더 구성되는, 시스템.
The method of claim 10,
And the touch detection module is further configured to count the number of consecutive captured images comprising the object and to determine whether the number of consecutive captured images is greater than a lower touch threshold and less than an upper touch threshold.
청구항 10에 있어서,
상기 터치 검출 모듈은 연속적인 캡처된 이미지들을 비교하고, 상기 객체의 치수가 증가하고 있는지를 결정하도록 구성되는, 시스템.
The method of claim 10,
And the touch detection module is configured to compare successive captured images and determine if the dimension of the object is increasing.
청구항 9에 있어서,
상기 키 선택 모듈은 상기 행들의 서브세트 및 상기 열들의 서브세트를 분석하고, 상기 객체의 중심의 좌표들을 결정하기 위하여 교정 테이블을 액세스하고, 키 맵을 액세스함으로써 상기 좌표들로부터 상기 선택된 키의 식별자를 결정하도록 구성되는, 시스템.
The method of claim 9,
The key selection module analyzes the subset of rows and the subset of columns, accesses a calibration table to determine coordinates of the center of the object, and accesses a key map to identify an identifier of the selected key from the coordinates. Configured to determine a system.
청구항 17에 있어서,
상기 키 선택 모듈은 상기 행들의 서브세트에 기초하여 제 2 행 히스토그램을 생성하고, 상기 열들의 서브세트에 기초하여 제 2 열 히스토그램을 생성하고, 상기 제 2 행 히스토그램의 제 1 피크를 결정하고, 상기 제 2 열 히스토그램의 제 2 피크를 결정하도록 구성되는, 시스템.
18. The method of claim 17,
The key selection module generates a second row histogram based on the subset of rows, generates a second column histogram based on the subset of columns, determines a first peak of the second row histogram, And determine a second peak of the second column histogram.
KR1020120092650A 2012-08-23 2012-08-23 System and method for a virtual keyboard KR101385263B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020120092650A KR101385263B1 (en) 2012-08-23 2012-08-23 System and method for a virtual keyboard

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120092650A KR101385263B1 (en) 2012-08-23 2012-08-23 System and method for a virtual keyboard

Publications (2)

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

Family

ID=50641258

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120092650A KR101385263B1 (en) 2012-08-23 2012-08-23 System and method for a virtual keyboard

Country Status (1)

Country Link
KR (1) KR101385263B1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101675228B1 (en) * 2015-06-30 2016-11-10 주식회사 알엔디플러스 3d touchscreen device, touchscreen device and method for comtrolling the same and display apparatus
CN107203085A (en) * 2016-03-18 2017-09-26 意法半导体股份有限公司 The projection MEMS device and relative manufacturing process of the micro projector of flying spot type
CN109062419A (en) * 2018-08-09 2018-12-21 郑州大学 A kind of laser projection virtual keyboard of optimization

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6614422B1 (en) * 1999-11-04 2003-09-02 Canesta, Inc. Method and apparatus for entering data using a virtual input device
EP1336172B1 (en) * 2000-09-07 2007-06-27 Canesta, Inc. Quasi-three-dimensional method and apparatus to detect and localize interaction of user-object and virtual transfer device
TW594549B (en) 2002-12-31 2004-06-21 Ind Tech Res Inst Device and method for generating virtual keyboard/display
US7173605B2 (en) * 2003-07-18 2007-02-06 International Business Machines Corporation Method and apparatus for providing projected user interface for computing device

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101675228B1 (en) * 2015-06-30 2016-11-10 주식회사 알엔디플러스 3d touchscreen device, touchscreen device and method for comtrolling the same and display apparatus
CN107203085A (en) * 2016-03-18 2017-09-26 意法半导体股份有限公司 The projection MEMS device and relative manufacturing process of the micro projector of flying spot type
US10018835B2 (en) 2016-03-18 2018-07-10 Stmicroelectronics S.R.L. Projective MEMS device for a picoprojector of the flying spot type and related manufacturing method
CN107203085B (en) * 2016-03-18 2020-06-30 意法半导体股份有限公司 Projection MEMS device, system, apparatus and method of manufacturing the same
US10895740B2 (en) 2016-03-18 2021-01-19 Stmicroelectronics S.R.L. Projective MEMS device for a picoprojector of the flying spot type and related manufacturing method
CN109062419A (en) * 2018-08-09 2018-12-21 郑州大学 A kind of laser projection virtual keyboard of optimization

Also Published As

Publication number Publication date
KR101385263B1 (en) 2014-04-16

Similar Documents

Publication Publication Date Title
US8937596B2 (en) System and method for a virtual keyboard
KR101851264B1 (en) System and Method for a Virtual Multi-touch Mouse and Stylus Apparatus
US9720511B2 (en) Hand and object tracking in three-dimensional space
US8971565B2 (en) Human interface electronic device
US10203765B2 (en) Interactive input system and method
US9557811B1 (en) Determining relative motion as input
US7557935B2 (en) Optical coordinate input device comprising few elements
US6947032B2 (en) Touch system and method for determining pointer contacts on a touch surface
US7313255B2 (en) System and method for optically detecting a click event
US20170351324A1 (en) Camera-based multi-touch interaction apparatus, system and method
US20110267262A1 (en) Laser Scanning Projector Device for Interactive Screen Applications
CN105593786B (en) Object&#39;s position determines
TWI450154B (en) Optical touch system and object detection method therefor
CN113892254A (en) Image sensor under display
KR20160108386A (en) 3d silhouette sensing system
WO2013109609A2 (en) Enhanced contrast for object detection and characterization by optical imaging
JP5510907B2 (en) Touch position input device and touch position input method
GB2530150A (en) Information processing apparatus for detecting object from image, method for controlling the apparatus, and storage medium
KR101385263B1 (en) System and method for a virtual keyboard
CN102446034B (en) Optical touch control system and object sensing method thereof
CN105278760B (en) Optical touch system
EP2332027A1 (en) Interactive displays
KR101197284B1 (en) Touch system and touch recognizition method thereof
CN115793893B (en) Touch writing handwriting generation method and device, electronic equipment and storage medium
KR20130051760A (en) Optical touch panel and touch point detection method thereof

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