KR20140026898A - System and method for a virtual keyboard - Google Patents
System and method for a virtual keyboard Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/041—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
- G06F3/042—Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means by opto-electronic means
- G06F3/0425—Digitisers, 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/0426—Digitisers, 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
Abstract
Description
본 개시 내용은 키보드와 같은 텍스트 입력을 수행하기 위한 검출 영역에서, 하나 이상의 손가락과 같은, 객체 또는 객체들의 존재를 광학적으로 감지하는 시스템 및 방법에 관한 것이다.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
사용자의 손가락(24)은 광원 유닛(12)에 의해 생성된 부채 모양 광 빔(20)과 교차하게 나타내었다. 상기 사용자 손가락은 작업 표면(22)를 건드릴 수도 있지만, 부채꼴 광 빔(20)을 파괴하기만 하면 검출된다. 검출 영역(23)은 광 빔(20)과 센서 시스템(16)에 의해 검출될 수 있는 영역으로 정의되는 2차원 영역이다. 작업 표면(22)는 센서 또는 기계적 또는 전기적 구성요소를 포함하지 않고, 탁자 표면, 비행기 쟁반, 종이 한장, 또는 기타 모든 적당한 표면이 될 수 있다. 상기 검출 영역(23)은 이미지 센서(16)이 그 안에서 사용자 손가락(24)의 팁 또는 스타일러스나 펜의 팁과 같은 기타 팁의 이미지를 캡처할 수 있는 모든 영역이다.The user's
광원 유닛(12)은 적외선(IR) 대역(700nm~1,400nm)과 같은, 특정 주파수 대역의 얇은 부채 모양 광 빔(20)을 방사한다. 이상적으로는, 얇은 부채 모양 광 빔(20)은 작업 표면(22)에 평행하고 가깝다. 광 감지 시스템(16)은 작업 표면(22)를 내려다 보도록 각도가 주어지거나 기타 방법으로 구성되고, 검출 영역(23) 안의 작업 표면(22) 위의 사용자의 활동을 계속해서 검출한다.The
하우징(10)은 광을 작업 표면(22) 위로 투사하게 설정된 광원(25)을 포함할 수 있다. 상기 광원(25)는 사용자에게 시야(36)의 경계선에 대한 가시적 표시를 제공하여, 사용자의 손가락 동작이 시야(36) 안에 있을 수 있게 한다. 광(25)은 LED, 백열등 등 일 수 있다. 추가적으로, 광원(25)의 강도는 사용자에 의해 필요한 강도로 증가시키거나 감소시킬 수 있다.The
일 실시예에서, 광원(25)은 작업 표면(22)의 일부를 밝히도록 위치할 수 있다. 광원(25)은 오직 센서 시스템(16)에 의해 검출될 수 있는 손가락 움직임의 대략의 영역을 사용자에게 나타내는 기능 만 할 수 있다. 한 시행예에서, 상기 센서 시스템은 광원 유닛(12)에 상응하는 주파수의 광으로 설정되어 사용자 손가락(24)로부터의 반사를 개선하도록 설정된다. 광원(25)이 센서 시스템(16)과 투사 시스템(26) 위에 있는 것으로 나타나 있지만, 광원(25)은 센서 시스템(16) 아래나 옆에 위치할 수 있다. 일 실시예에 따르면, 광원(25)은 장치(9) 위, 주변, 근접하게 미관적으로 좋은 디자인을 만들기 위하여 위치된 복수의 광원을 포함할 수 있다.In one embodiment, the
일 실시예에서, 광 빔(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
일 실시예에서는, 광원 유닛(12)은 광 빔(20)을 깜빡이며 투사한다. 광 빔(20)을 깜빡이며 투사하는 것은 광 빔(20)을 계속적으로 투사하는 것에 비하여 전력 소비를 절약하는 장점이 있다. 예를 들어, 광원 유닛(12)가 주파수 30Hz, 듀티 사이클(duty cycle) 50%로 깜빡이며 광을 투사한다면, 광원 유닛(12)은 다른 경우에 비하여 절반의 시간만 켜져 있게 된다. 추가적인 전력 효율은 배터리 수명을 늘리거나 절약된 전력만큼 광 빔(20)의 강도를 증가시키는데 사용할 수 있다. 광 빔(20)의 강도가 클수록 센서 시스템(16)으로 캡처하는 이미지의 신호대잡음비(signal-to-noise ratio) 특성이 좋아진다. 신호대잡음비가 증가하면 측정 정확도가 증가하고 따라서 장치(9)의 정확도와 성능이 개선된다.In one embodiment, the
도 1b는 도 1a의 가상 키보드 장치(9)가 가상 작업 표면(22) 위로 키보드 패턴(38)을 투사하는 등각도를 보여준다. 처음에는, 작업 표면(22) 위 또는 검출 영역(23) 안에 손가락이 없다. 사용자는 광 빔(20)에 의해 창조된 평면을 파괴하기 위하여 손가락(24)이나 스타일러스 등 하나 혹은 그 이상의 손가락 팁을 이용하여 키를 선택할 수 있다. 일 실시예에서, 사용자의 손가락(24)은 반드시 오직 검출 영역(23) 안에서 광선을 파괴해야 가상 키보드(38)의 키를 선택할 수 있다. 그러나, 다른 실시예에서는, 장치(9)는 손가락 팁이 작업 표면(22)를 터치하였을 때 사용자의 손가락(24)이 키를 선택하였다고 결정한다.FIG. 1B shows an isometric view of the
센서 시스템(16)은 광 빔(20)의 평면에서 팁 또는 팁들의 존재를 검출한다. 상기 센서 시스템(16)은 도 2a 및 도 3a에 나타난 바와 같이 직사각형이거나, 원형이거나, 광 빔(20)의 모양과 일치하거나, 또는 기타 적당한 모양의 시야(36)의 이미지를 찍는다.
상기 광선이 두께를 가지는 결과로, 손가락(24)이 작업 표면(22)에 가까이 가면 갈수록, 이미지에서 그 모양을 나타내는 광의 강도가 커진다. 즉, 손가락(24)이 최초로 광 빔(20)을 터치하거나 관통할 때, 그에 대응하는 이미지는 손가락(24)을 나타내는 작은 광의 영역을 포함한다. 상기 손가락이 광 빔(20)을 더 깊이 관통함에 따라, 이미지에서 대응하는 광의 영역은 커진다. 최종적으로, 상기 손가락이 작업 표면(22)를 터치하면, 손가락(24)은 가장 큰 이미지를 돌려준다.As a result of the thickness of the light beam, the closer the
이미지 센서 시스템(16)은 계속해서 키보드의 검출 연역(23) 안에서 광원(12)에 의해 비추어지는 사용자 객체(손가락과 같은)의 이미지들을 수집한다. 상기 이미지들은 그 뒤 분석되고, 키 누름 또는 이벤트는 사용자 손가락(24)에 의해 프린트되거나 투사된 키들이 터치되는 것의 결과로서 보고된다. 장치(9)의 센서 시스템(16)은 시야(36) 안의 손가락 팁 또는 손가락 팁들의 위치를 검출하기 위하여, 복수의 이미지들(100, 104)를 캡처하도록 구성된다(도 2a, 3a 참조). 이미지들(100,104)은 다양한 글자들을 타이핑하는 제 1 손가락(106)과 제 2 손가락(108)의 이미지들의 예이다.The
어떤 객체가 시야(36)에 들어가기 전에, 광 센서(16)는 어두운 이미지들을 캡처하며, 즉, 아무 객체나 손가락이 검출되지 않는다. 손가락(24)이 작업 표면(22) 위의 투사된 키보드 패턴(38)의 키를 터치하기 위하여 내려갈 때, 손가락이 부채 모양 광 빔(20)을 관통하거나 터치하는 즉시, 손가락의 아래 부분(손가락 팁)이 광원(12)에 의해 비추어진다. 손가락(24)의 비추어진 부분의 광의 반향이 그 후 광 센서 시스템(16)에 의해 촬영되거나 수신된다. 키를 터치한 후, 손가락은 검출 영역(23)을 떠나기 위해 위로 이동한다. 손가락(24)이 부채 모양 광 빔(20)과 상호작용 하지 않게 되면, 광 센서(16)은 광의 반향을 수신하지 않기 때문에 상기 손가락 팁을 검출하지 않는다.Before any object enters the field of
센서 시스템(16)은 광 렌즈와 그에 대응하는 광 필터를 가지고 있는데, 그 필터는 상기 광원이 사용하는 주파수 대역이 아닌 광을 차단하고 원하는 광의 대역을 이미지 센서로 허용한다. 더 자세히는, 상기 대응하는 필터는 광원의 주파수 대역을 갖는 들어오는 광의 통과를 허용하고 그 나머지는 차단하도록 설계되었다. 광학 필터는 광원 유닛(12)에서 사출되는 광 빔(20)의 주파수 외의 상당한 광의 일부를 차단할 수 있다. 광학 필터는 광 빔(20)의 주파수에 따라 저주파 필터, 고주파 필터 혹은 중간주파 필터가 될 수 있다. 일 실시예에서는 광 빔(20)이 적외선 주파수대에서 사출되고 광학 필터는 적외선 주파수대 이외의 모든 주파수를 차단한다.The
센서 시스템(16)의 광학 필터는 센서 시스템(16) 내에 제조될 수 있다. 많은 이미지 센서들은 제조 시 마이크로 렌즈 층을 도포하기 전에 도포된 컬러 필터 배열(color filter array, CFA)를 포함한다. 그렇지 않으면, 이미지 센서 제조 후 렌즈 위에 필름 형태의 물질을 덮어 광 빔(20)의 주파수를 제외한 모든 주파수를 차단하도록 할 수 있다.Optical filters of the
광학 필터가 대부분의 들어오는 광을 막고 정해진 광의 범위만 통과시키기 때문에, 이미지의 화소 값들은 반향된 광의 양 또는 광의 강도를 나타낸다. 따라서, 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
장치(9)는 장치(9)의 운영 상태 혹은 모드를 제어하기 위한 파워 버튼(30)을 포함할 수 있다. 추가적으로, 파워 버튼(30)은 블루투스와 같은 통신 프로토콜을 통해 장치(9)와 호스트 장치를 연결하는 데 사용될 수 있다. 예를 들어, 파워 버튼(30)을 두 번 누르는 것으로 장치(9)가 내부 블루투스 전파를 활성화 하려 한다는 것을 나타낼 수 있다. 더 나아가, 장치(9)는 장치(9)가 수면모드에서 더욱 빨리 회복할 수 있는 저전력 대기 모드로 들어가기 위하여 파워 버튼(32)를 이용할 수 있다. 예를 들어, 사용자는 파워 버튼을 3 번 누르는 것으로 저전력 대기 모드 또는 수면 모드로 들어갈 수 있다. 그렇지 않으면, 장치(9)는 파워 버튼(30)을 몇 초 동안 누르고 있으면 저전력 대기 모드로 들어가도록 프로그램 될 수 있다.The
하우징(10)은 또한 장치(9)와 호스트 장치의 연결을 대체하여 통신 포트(32)를 포함할 수 있다. 예를 들어, 통신 포트(32)는 USB 포트, 파이어와이어(FireWire) 포트, 미니 USB 포트 등이 될 수 있다. 장치(9)는 통신 포트(32)를 통하여 호스트에 연결될 때 장치(9)가 모든 무선 통신 전파 혹은 장치(9)에 내장된 모든 배터리를 끄도록 설정될 수 있다. 장치(9)는 또한 통신 포트(32)를 통하여 호스트 장치에 직접 연결되었을 경우 자동으로 충전 모드로 들어갈 수 있다.The
위에 언급한 바와 같이, 도 2a와 도 3a는 사용자가 키보드 패턴(38) 위에 키 누름을 실행함에 따라 센서 시스템(16)이 찍은 이미지들(100, 104)의 간략화된 예들이다. 도 5에 나타난 바와 같이, 설명의 편의를 위하여, 상기 이미지들은 키보드 패턴(38)의 부분(35)으로 제한되었다. 본 실시예에서, 상기 부분(35)은 장치(9)에서 보는 표준 QWERTY 키보드의 왼쪽 편에 대응한다.As mentioned above, FIGS. 2A and 3A are simplified examples of
이미지들(100, 104)은 도해의 편의를 위해 10 x 10의 화소의 배열(116)으로 나타내었다. 실제로는, 각 이미지는 수많은 화소들(116)을 가질 수 있다. 예를 들어, 도 4a는 20열 x 10행에 대응하는 200화소의 이미지의 부분(322)을 포함한다. 상기 부분(322)이 잘려나온 이미지는 2,000행과 2,000열에 해당하는 4,000,000 전체 화소를 가질 수 있다.
본 개시 내용의 일 실시예에 따르면, 센서 시스템(16)은 다양한 해상도를 갖는 CCD 혹은 CMOS 이미지 센서일 수 있다. 이러한 이미지 센서는 각 이미지에 수십만에서 수백만에 이르는 화소들 포함할 수 있고, 그 화소들은 행(135)과 열(134)의 행열로 이루어진다. 하나의 실시예에서, 센서 시스템(16)은 상대적으로 낮은 해상도의 이미지 센서로 구현된다. 예를 들어, 센서 시스템(16)은 640 행과 480 열의 화소를 갖는 VGA 이미지 센서일 수 있다. 다른 예로는, 센서 시스템(16)은 352 행과 288 열의 화소를 갖는 CIF 이미지 센서일 수 있다. 그러나, 센서 시스템(16)은 여기에 언급한 것 이외에도 더 높거나 낮은 어떠한 해상도의 이미지 센서로 구현될 수 있다.According to one embodiment of the present disclosure,
센서 시스템(16)은 특정 주파수의 이미지들을 캡처하도록 설정될 수 있다. 일 실시예에서는, 센서 시스템(16)이 초당 30 프레임의 속도로 이미지를 캡처한다. 전력 소비 절감을 위해 작업 표면 상의 움직임이 검출되었을 때만 이미지를 캡처하게끔 이미지가 캡처되는 속도를 구성할 수 있다.
일 실시예에서는 센서 시스템(16)은 광원 유닛(12)의 광의 깜빡임과 이미지 캡처를 동기화한다. 예를 들어, 부채꼴의 광 빔(20)이 1 밀리세컨드 동안 켜지도록 깜빡이면 센서 시스템(16)의 셔터는 3 밀리세컨드 동안 열린다. 셔터는 광이 깜빡이기 이전에 1 밀리세컨드 동안 열리고 깜빡인 후에 1밀리세컨드 동안 열려서 손가락이나 스타일러스의 팁을 정확하게 캡처할 수 있다. 위에서 언급한 것처럼, 광 빔(20)을 깜빡이는 것은 빔당 더 많은 전력을 사용할 수 있게 하여 더 강한 광 빔(20)으로 귀착된다. 더 강한 광 빔(20)으로 팁들의 반사 또는 기타 방법으로 비추어진 팁들이 이미지에 더 많이 나타난다.In one embodiment, the
깜빡이는 광 빔(20)의 주파수는 이미지 센서(16)의 상세에서 결정될 수 있다. 예를 들면, 광 빔(20)은 이미지 센서(16)이 초당 30프레임으로 캡처하도록 설정된 경우 광 빔(20)은 30Hz로 깜빡인다. 어떤 이미지 센서(16)들은 보통 스트로브 출력 핀(strobe output pin)이라 불리는 핀들을 포함하는데, 이 핀들은 광 빔(20)의 깜빡임과 센서 시스템(16)의 이미지 캡처를 동기화하는 데 쓰일 수 있다. 이 스트로브 출력 핀은 광원 유닛(12)에 신호를 보내어 광 빔(20)의 사출을 시작하도록 하는데, 이는 센서 시스템(16)이 이미지를 캡처하였을 때, 또 센서 시스템(16)이 이미지를 캡처하도록 스케줄 된 때에서 얼마 후에 일어나서 사용자 손가락(24)을 밝히는데 이용가능한 광을 최대화한다.The frequency of the blinking
만일 센서 시스템(16)이 광원 시스템(12)과 부정확하게 동기화되는 경우, 장치(9)는 팁(24)의 존재를 정확하게 검출하지 못할 수 있다. 이러한 검출 오류를 피하기 위해, 광원 유닛(12)에서 나오는 깜빡임은 나이퀴스트 학설(Nyquist theorem)에 따라 센서 시스템(16)의 캡처 주파수보다 최소한 두 배가 될 수 있다.If
이미지들(100, 104)은 실시간으로 즉시 처리되고, 그 후 검출 영역(23)에 손가락이 없다고 결정되면 폐기된다. 장치는 이미지들을 분석하기 위하여 처리 및 제어 시스템(218)을 포함한다; 그러나, 대안적인 실시예에서는, 여기에 설명하는 대로 이미지들을 처리하기 위하여 호스트나 동반 장치를 사용할 수 있다.
도 6은 처리 및 제어 시스템(218)과 호스트(210)를 포함하는 가상 키보드 시스템(200)을 도식으로 나타낸 것이다. 처리 및 제어 시스템(218)은 광 감지 시스템(16)으로부터 이미지들을 수신하고, 사용자의 손가락들을 검출하기 위한 일련의 루틴들을 수행하고, 상기 이미지들에서 손가락 팁을 검출하고, 상기 손가락이 작업 표면을 터치하거나 검출 영역(23)에 들어간 시점을 찾고, 어떤 키가 터치되었는지 결정한다. 키 터치가 결정되면, 호스트(210)로 'Key-down' 이벤트가 보고된다. 만약 상기 손가락이 후속의 이미지에서도 여전히 그 키를 터치하고 있는 경우, 상기 손가락이 작업 표면(22)을 터치하고 있는 동안 계속 각 이미지 프레임마다 'Key-held' 이벤트가 보고된다. 상기 손가락이 상기 키로부터 멀리 이동하면, 'Key-up' 이벤트가 보고된다.6 diagrammatically illustrates a
게다가, 처리 및 제어 시스템(218)은 작업 표면(22)을 하나 이상의 손가락이 터치하는지 결정하고, 각 손가락의 동작에 대하여 적절한 이벤트를 발생시킨다. 상기 각 이벤트는 도 6-12에 관하여 아래에서 더 자세히 설명될 것이다. 특히, 한 루틴이 열 그리고 행 히스토그램을 계산하고 그 히스토그램의 피크를 결정함으로써 손가락으 비추어지는 부분을 검출한다.In addition, the processing and
예를 들어, 도 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
가상 키보드 시스템(200)은 투사 시스템(26), 센서 시스템(16), 광원 유닛(12)을 포함한다. 처리 및 제어 시스템(218)은 중앙처리장치(CPU)(220), 메모리(222), 통신 유닛(224), 투사 제어 유닛(225), 센서 제어 유닛(227), 광원 드라이버(223)를 포함한다. 통신 링크(217a, 217b, 217c)는 투사 시스템(26), 센서 시스템(16) 광원 유닛(12)을 각각 처리 및 제어 시스템(218)으로 연결한다.The
처리 및 제어 시스템(218)은 센서 시스템(16)으로부터 수집한 이미지들을 처리하고, 사용자 컴퓨터, 스마트폰, 랩탑, 또는 기타 사용자로부터 텍스트 입력을 받는 전자 장치와 같은 호스트 장치(210)와 통신한다. 시스템(200)은 통신 링크(214)를 통하여 호스트 장치(210)와 연결된다. 상기 통신 링크(214)는 유선 또는 무선이 될 수 있다. 호스트는 호스트(210)와 장치(200) 사이에 데이터 전송을 위한 통신 프로토콜을 제어할 수 있다. 상기 호스트(210)는 통신 링크(214)를 통하여 배터리 충전 서비스를 제공할 수 있다.The processing and
예를 들어, 도 2a는 부채 모양 광 빔(20)에 의해 비추어진 제 1 손가락(106), 제 2 손가락(108)을 포함하는 센서 시스템(16)에 의해 찍힌 제 1 이미지(100)이다. 제 1 손가락(106)은 제 1 이미지(106)의 제 1 모서리(118)에 가까이 위치한다. 제 1 손가락(106)이 비추어짐에 따라, 초생달 모양 혹은 곡선 모양이 캡처된다. 이 초생달 모양 혹은 곡선 모양이 일반적으로 인간의 손가락 혹은 펜이나 원통형 스타일러스와 같은 다른 곡선 객체가 촬영되는 모양이다. 만약 정사각형 객체가 사용된다면, 이미지는 다른 직사각형 모양을 캡처할 것이다.For example, FIG. 2A is a
도 6의 처리 및 제어 시스템(218)은 이러한 이미지들을 분석하여 손가락(24)이 언제 작업 표면(22)을 터치하는지 결정하고 키의 선택 또는 키 터치를 검출하도록 구성된다. 처리 및 제어 시스템(218)은 이미지들(100, 104)을 캡처하고 어떤 이벤트가 발생하였다면 무슨 이벤트가 발생하였는지 결정하도록 구성된다.The processing and
CPU(220)는 이미지 센서 보정, 이미지 상관관계, 디지털 신호 처리 등과 같은 메모리(222)에 저장된 명령을 실행하고, 사용자에 의해 어떤 키가 선택되는지 결정한다. 처리 및 제어 시스템(218)은 호스트 장치(210)로부터 명령(instruction)을 받고, 호스트 장치(210)로 명령을 전달하고, 작업 영역(23)에서 사용자의 손가락 또는 손가락들로부터의 텍스트 입력을 나타내는 데이터를 전송하기 위하여 통신 유닛(224)을 사용할 수 있다.The
센서 제어 유닛(227)은 셔터 시간, 프레임 레이트, 이미지 센서의 시작 행 및 열(134), 끝 행 및 열(134) 등과 같은 센서 시스템(16)의 파라미터를 설정하고 작업 표면(22)의 스냅샷을 찍도록 센서를 발사한다. 처리 및 제어 시스템(218)은 센서 시스템(16)으로부터 이미지들을 읽고 메모리(222)에 저장한다.The
투사 제어 유닛(225)은 투사 시스템(26)의 전반적인 출력을 제어하고 투사 시스템(26)을 켜거나 끈다. 광원 드라이버(223)는 광원 유닛(12)을 켜고 끄도록 광원 유닛(12)을 제어하고 출력을 조정할 수 있다. 처리 및 제어 시스템(218)은 광원 유닛(12)와 센서 시스템(16)을 동기화한다. 작업 표면(22)의 스냅샷을 만들기 위하여, 처리 및 제어 시스템(218)은 광원 드라이버(223)가 광원을 켜도록 제어하고 센서 제어 유닛(227)이 각 이미지를 수집하기 위하여 센서 시스템의 셔터를 열도록 제어한다. 상기 이미지를 노출하기에 충분한, 일정 시간 후에, 임베디드 처리 및 제어 시스템(218)은 광원을 끄고 셔터를 닫는다. 상기 이미지는 그 후 메모리에 저장된다.The
처리 및 제어 시스템(218)은 상술한 바와 같이 센서 시스템(16)과 광원 유닛(12)을 동기화할 수 있다. 임베디드 처리 및 제어 시스템(218)은 연속된 또는 깜빡이는 광 빔(20)을 사출하도록 광원 유닛(12)을 제어할 수 있다. 시스템(200)은 호스트(210)와 무선 연결(214)을 통해 통신하는 동안 처리 및 제어 시스템(218)의 CPU(220)와 메모리(222)에 의지하도록 설정되어, 호스트 장치(10)와 시스템(200) 사이의 대역폭(bandwidth)을 보존할 수 있다.The processing and
도 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
처리 및 제어 시스템(218)은 상기 이미지들을 수신하고, 상기 이미지들을 처리하고 검출 영역 안의 손가락 팁들의 x 및 y 좌표로된 위치를 식별하는 팁 검출 루틴(228)을 수행한다. 팁 검출 루틴(228)은 도 8에 관하여 아래에서 더 자세히 설명될 것이다. 이어서, 터치 검출 루틴(230)은 손가락 팁이 하나라도 작업 표면을 터치하는지, 손가락 팁이 하나라도 아직 작업 표면 위에 있는지 보기 위하여 검출된 손가락 팁들을 처리하고 차단한다. 터치 검출 루틴(230)은 도 9에 관하여 아래에서 더 자세히 설명될 것이다.Processing and
터치 위치 계산 루틴(232)은 작업 표면(22)을 터치하는 손가락 팁들에 대한 정보를 수신하고 그 터치하는 팁들의 위치(x, y)를 결정하기 위하여 교정 테이블(234)에 액세스한다. 터치 위치 루틴(232)은 도 10에 관하여 아래에서 더 자세히 설명될 것이다. 키 식별 루틴(236)은 상기 위치(x, y)와 어떤 키가 연관되는지 결정하기 위하여 키 맵 표(238)을 검색하거나 기타 방법으로 액세스한다. 상기 검출된 키 정보는 식별되어 키 이벤트 생성 루틴(240)으로 보내진다. 게다가, 상기 검출된 키 정보는 현재 검출된 손가락 팁들에 의해 차단된 키가 없는지 보기 위하여 키 차단 검출 루틴(242)에 의해 분석된다. 상기 키 차단 루틴(242)과 키 식별 루틴(236)은 도 11에 관하여 아래에서 더 자세히 설명될 것이다.The touch
키 차단 검출 루틴(242)은 키 이벤트 저장 루틴(244)으로부터 이전에 검출된 키들에 대한 정보를 수신한다. 키 차단 검출 루틴이 어떤 키들이 차단되었다고 결정하면, 그 차단된 키들은 키 이벤트 생성 루틴(240)으로 보고된다. 키 이벤트 생성 루틴은 검출된 터치된 키, 차단된 키들, 이전에 선택된 키들에 기초하여 키 이벤트를 생성한다. 상기 키 이벤트는 그 후 호스트(210)로 전송된다. 키 이벤트 생성 루틴(240)은 도 12에 관하여 아래에서 더 자세히 설명될 것이다.The key
도 8은 팁 검출 루틴(228)에 의해 실행되는 일련의 단계들의 순서도이다. 일반적으로, 일단 켜지면, 장치(9)는 작업 표면(22)의 이미지를 연속적으로 찍는다. 위에 언급한 바와 같이, 장치(9)에 의해 캡처된 최초의 이미지들은 손가락(24)을 포함하지 않을 것이고, 배경 이미지들로 간주된다. (246)에서, 가상 키보드의 초기화 동안, 상기 배경 이미지가 취득되고, 일정 시간 동안 사용자의 활동이 없으면 업데이트된다. 배경 이미지는 메모리(222)에 저장되거나 미래의 이미지들과의 비교를 위하여 기타 방법으로 저장될 수 있다.8 is a flowchart of a series of steps executed by the
다른 대안으로는, 센서 시스템(16)은 연속적으로 이미지들을 찍고 그 바로 직전 이미지와 현재 이미지를 비교할 수 있다. 상기 배경 이미지는, 100 프레임의 이미지들과 같이 큰 수의 매우 유사한 연속적인 이미지들이 일단 캡처되면 저장되거나 업데이트된다. 일단 현재 이미지가 배경 이미지와 다르다고 식별되면, 그 현재 이미지는 단계(250)에서 배경 이미지 데이터를 제거하기 위하여 처리된다.Alternatively, the
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
제 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
예를 들어, 일 실시예에서, 이미지 센서는 화소 배열의 각 화소(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
이어서, 열 방향 히스토그램의 이동 평균(111)은 단계(254)에서 결정된다. 도 2b에 나타난 상기 이동 평균(111)은 미리 정해진 윈도우 폭 n에 대하여 계산된다. 예를 들어, 윈도우 (2m+1)의 열 k의 이동 평균(111)은 다음 공식에 따라 계산된다:The moving average 111 of the column histogram is then determined in
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
258에서, 세그먼트(136a, 138a)와 연관된 열들은 행 방향 히스토그램(610, 612)을 결정하기 위해 처리되는 데이터를 제한하기 위하여 이미지(248)로부터 분리되거나 기타 방법으로 잘라진다. 예를 들어, 도 2c와 2e는 각각 세그먼트들(136a, 138a)와 연관되는 행 방향 히스토그램들을 위하여 이미지(100)으로부터 분리된 열들의 집합(134)의 예들이다.At 258, the columns associated with
하나의 실시예에서, 열 히스토그램(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
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
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
점들(186, 188)과 점들(190, 192)은 각각 제 1 손가락(106)과 제 2 손가락(108)을 위한 제 1 열 좌표를 생성한다. 예를 들어, 만약 열들을 왼쪽 모서리로부터 번호를 매긴다면, 점들(186, 188)은 제 1 열 모서리(202)와 제 2 열 모서리(205)와 연관되어 열 좌표 (202, 205)를 형성할 수 있다. 제 2 손가락(108)의 점들(190, 192)은 그러면 제 3 열 모서리(206), 제 4 열 모서리(210)에 대응하는 열 좌표 (206, 210)를 가진다. 상기 열 좌표들은 보관되고 손가락이 어떤 문자를 선택하였는지 결정하기 위하여 교정 테이블들에 의하여 사용될 것이다.
행 좌표는 히스토그램(610)의 점들(618, 620)에 의해 결정되고, 아래 상술하는 바와 같이, 제 1 손가락(106)의 높이에 대응한다. 행 좌표는 제 1 행 모서리(601)와 제 2 행 모서리(602)에 대응하는 점들(618, 620)에 의해 결정될 수 있다. 따라서, 제 1 손가락(106)에 대한 행 좌표는 (601, 602) 이다. 행 히스토그램(612)과 이동 평균(613)이 교차하는 점들(622, 624)은 제 2 손가락(108)에 대응하다. 상기 점들은 또한 제 3 행 모서리(607)과 제 4 행 모서리(608)에 대응한다. 이로써 제 2 손가락(108)에 대한 행 좌표 (607, 608)가 제공된다.The row coordinates are determined by the
제 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,
도 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
제 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
제 1, 제 2 손가락들(106, 108)을 촬영해서 생긴 초생달 모양은 사용자의 손가락 크기 및 이미지 센서로부터의 거리에 따라 영역을 달리한다. 그 특정한 영역은 본 개시 내용에서는 상관이 없는데, 이는 각 이미지의 각 열이 더해져 강도 스파이크를 결정하기 때문이다. 또한, 만약 다른 객체들이 사용된다면, 그 이미지들은 반드시 초생달 모양이 되는 것은 아니다. 예를 들어, 만약 직사각형 스타일러스가 사용된다면, 이미지 센서는 그 스타일러스의 직사각형 표시를 캡처할 것이다.The crescent shape generated by photographing the first and
이동 평균(626) 위의 히스토그램(114)의 일부분을 찾아내기 위하여 이동 평균(626)이 결정된다. 위에 검토한 바와 같이, 히스토그램(626)의 부분(628)은 이미지의 가장 센 화소를 결정하는 것을 도울 수 있고 손가락의 중심점을 결정하는 것을 도울 수 있다. 상기 이미지에서, 제 1, 제 2 손가락들은 아래 설명하는 키 차단 루틴에 의해 평가되고 분리되는 하나의 손가락으로 보일 수 있다.Moving average 626 is determined to find a portion of
도 9는 본 발명의 실시예에 따라 터치 검출 루틴(230)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 268에서, 팁 검출 루틴(228)으로부터의 손가락 팁 이미지 데이터는 터치 검출 루틴(230)에 의해 수신된다. 작업 표면(22) 상의 손가락의 터치는 3개의 조건들이 충족될 경우에 결정된다. 조건들은 사용자가 작업 표면을 터치하거나 키(key)를 선택하는 것을 의도하는지를 결정하기 위해 제공된다. 손가락이 충분히 신속하게 이동하여 빔을 아주 충분하게 침투하는 경우, 루틴은 사용자가 키를 선택하기 위해 터치하는 것을 의도하였다고 결정한다.9 is a flowchart of a method of a virtual keyboard system for executing a
이 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
제 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
광 빔(20)의 두께는 이미지의 하나의 단부(end)로부터 다른 단부까지 일정하지 않다. 예를 들어, 광 빔(20)의 두께는 광원(12)에 가까울수록 작고, 광 빔(20)의 두께는 광원(12)으로부터 멀수록 크다. 따라서, 제 1 손가락(106)은 제 2 손가락(108)과는 상이한 두께의 광 빔(20)과 상호작용한다. 위에서 언급된 바와 같이, 손가락들은 장치(9)에 가까울수록 더 크게 나타나고, 이것은 손가락들이 더 많은 광을 반사하기 때문이다.The thickness of the
장치(9)가 소매업자 또는 고객에게 수송되기 전에 테스트되고 있는 경우와 같은 빔 교정(beam calibration) 동안에, 빔 두께 테이블이 생성되거나 그렇지 않을 경우에는 얻어진다. 빔 두께 테이블은 빔의 어떤 두께를 팁 높이의 치수와 비교할 것인지를 결정하기 위하여 행 좌표들로 액세스될 수 있다. 제 2 기준을 충족시키기 위하여, 손가락은 빔의 적어도 1/3을 침투해야 한다. 따라서, 치수는 광 빔의 두께의 1/3보다 크거나 같아야 한다. 빔의 두께는 광원 변동들 및 다른 상황들에 기초하여 변동될 수 있으므로, 치수는 실제 두께의 1/3과 비교된다. 빔 두께의 다른 크기들은 장치(9)의 광원의 성질들 및 강도(intensity)에 기초하여 비교될 수 있다.During beam calibration, such as when the
치수가 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
대안적인 실시예에서는, 이미지들을 비교하고 이미지 시퀀스(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
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
하나의 실시예에서, 이미지 센서(16)는 초(second) 당 30 내지 60 프레임들에서 동작하고, 얇은 광 빔은 빔 두께에 있어서 3 ~ 5 mm의 범위에 있다. 따라서,손가락(24)이 광 빔(20)을 차단하고 작업 표면(22)을 터치하므로, 손가락(24)의 이미지들의 1-3 개의 프레임들만 있을 수 있다. 그러나, 그렇게 적은 이미지들은 손가락(24)의 속도의 정확한 계산을 방해할 수 있다.In one embodiment, the
도 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
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
이 동일한 처리는 팁 박스의 좌측 경계를 결정하기 위하여 최대 강도를 가지는 화소의 좌측의 동일한 행의 화소들에 대해 계속된다. 또한, 터치 위치 계산 루틴(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
팁 박스의 경계들이 일단 정의되면, 터치 위치 계산 루틴(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
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
센서(16)에 더 가까운 손가락들이 더 크게 나타나고 센서로부터 더 멀리 떨어져 있는 손가락들보다 더욱 양호한 해상도를 가지므로, 부화소 중심 검출이 유익하다. 부화소 해상도를 가지는 중심점을 결정하는 것이 더욱 정확하고, 이것은 키(key)의 사용자의 선택에 대한 더욱 정밀한 해독을 제공한다.Subpixel center detection is beneficial because fingers closer to the
286에서, 터치 위치 계산 루틴(232)은 교정 테이블(234)을 액세스함으로써, 그리고 팁 중심(행, 열)의 쌍일차 보간(bilinear interpolation)을 이용함으로써, 팁의 중심으로부터 키보드와 연관된 (x,y) 좌표들에서 물리적 위칠르 결정한다. 특히, 검출된 객체들의 중심들 (행, 열)은 도 14 및 도 15의 교정 테이블들과 같은 교정 테이블들을 이용함으로써 실세계의 좌표들로 변환된다.At 286, the touch
더욱 구체적으로, 쌍일차 보간은 손가락 팁의 중심의 부화소 값에 기초하여 팁의 물리적 위치에 대한 (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
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 =
도 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
도 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
행 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
도 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
이 실시예에서는, 작업 표면 상의 전방으로부터 후방까지의 거리를 나타내기 위하여 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
교정 테이블(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
도 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
294에서, 키 검출 루틴(242)은 키 식별 루틴(236)으로부터 현재의 키 정보를 수신하고, 임의의 이전에 촬영된 키들이 현재의 이미지에서 더 이상 나타나지 않는지를 결정한다. 현재의 키 정보는 위치 좌표들 및 키 맵으로부터 복귀될 때에 선택된 키 또는 키들이다. 키 검출 루틴은 이전의 키 리스트를 현재의 키 리스트와 비교한다. 이전의 키들의 일부 키들이 현재의 이미지에서 더 이상 존재하지 않는 경우, 그 키들은 차단될 수 있거나, 사용자에 의해 더 이상 선택되지 않을 수 있다.At 294,
296에서, 루틴(242)은 팁 검출 루틴(228)으로 268에서, 손가락 팁 이미지 데이터 출력을 수신하며, 도 8을 참조한다. 다음으로, 키 차단 검출 루틴(242)은 열방향 비교에 기초하여, 임의의 누락 키들이 현재의 이미지 내에 위치된 현재의 손가락 팁들과 중첩하는지를 결정한다. 예를 들어, 누락 키들 중의 하나가 현재의 손가락 팁 이미지 데이터의 열들과 60 퍼센트만큼 중첩하는 경우, 누락 키는 차단된 키일 수 있다. 중첩 퍼센트는 이미지 센서의 구성 및 장치(9)의 특성들에 기초하여 필요에 따라 조절될 수 있다.At 296, routine 242 receives finger tip image data output at 268 to tip
도 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
도 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
298에서, 키 차단 검출 루틴(242)은 누락 키가 현재의 키에 의해 이미지 센서(16)로부터 분리되어 있는지를 결정한다. 분리되어 있다면, 루틴(242)은 330에서, 누락 키가 차단된 키라고 출력한다. 이미지 센서로부터의 거리의 결정은 행 좌표 수들을 비교함으로써 달성될 수 있다. 예를 들어, 더 낮은 행 수들이 이미지 센서에 더 가까운 경우에는, 그 행 수들이 현재의 키의 행 수들보다 더 크면, 키가 차단된다.At 298, the key
키 식별 루틴(236)으로부터 출력된 현재의 키 정보와, 키 차단 검출 루틴(242)으로부터 출력된 차단된 키 데이터는 키 이벤트 생성 루틴(key event generation routine)(240)에 의해 수신된다. 도 12는 키 이벤트 생성 루틴(240)을 실행하는 가상 키보드 시스템의 방법의 순서도이다. 332에서, 키 이벤트 생성 루틴(240)은 차단된 키들을 현재의 키 리스트에 추가한다. 334에서, 키 이벤트 생성 루틴(240)은 현재의 키 리스트를 이전의 키 리스트와 비교하고, 이벤트가 출력되어야 하는지를 결정한다. 아래는 가능한 키 이벤트들의 리스트이다.The current key information output from the
● 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
상기 설명된 다양한 실시예들은 추가적인 실시예들을 제공하기 위하여 조합될 수 있다. 상기 상세한 설명을 고려하여 실시예들에 대해 이러한 그리고 다른 변경들이 행해질 수 있다. 일반적으로, 다음의 청구항들에서는, 사용되는 용어들이 명세서 및 청구항들에서 개시된 특정한 실시예들로 청구항들을 한정하도록 해석되는 것이 아니라, 이러한 청구항들에 대해 부여된 균등물들의 전체 범위와 함께 모든 가능한 실시예들을 포함하도록 해석되어야 한다. 따라서, 청구항들은 개시 내용에 의해 제한되지 않는다.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)
상기 복수의 키들 중의 선택된 키를 검출하는 단계; 및
상기 선택된 키의 식별자를 호스트 장치에 출력하는 단계를 포함하고,
상기 선택된 키를 검출하는 단계는,
상기 캡처된 이미지들에서의 광 강도의 변형들에 대해 상기 캡처된 이미지들을 분석함으로써 상기 작업 영역에서 객체를 검출하는 단계; 및
제 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 열 히스토그램의 세그먼트들과 연관된 열들의 서브세트(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.
상기 작업 표면 상에서 연장되는 광 빔을 제공하는 단계를 더 포함하고,
상기 광 빔은 상기 객체가 상기 광 빔과 상호작용할 때에 캡처된 이미지들에서 광 강도를 생성하도록 구성되는, 방법.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.
상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
상기 행들의 서브세트에 기초하여 각각의 캡처된 이미지에서 상기 객체의 치수를 결정하는 단계; 및
상기 객체의 상기 치수와 상기 광 빔의 두께와 비교하는 단계를 더 포함하는, 방법.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.
상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
상기 객체를 포함하는 연속적인 캡처된 이미지들의 수를 카운트하는 단계; 및
상기 연속적인 캡처된 이미지들의 수가 하한 터치 임계값보다 높고 상한 터치 임계값보다 작은지를 결정하는 단계를 더 포함하는, 방법.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.
상기 객체가 상기 작업 표면을 터치하는지를 검출하는 단계는,
연속적인 캡처된 이미지를 비교함으로써 상기 객체의 치수가 증가하고 있는지를 결정하는 단계를 더 포함하는, 방법.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 열 히스토그램에 기초하여 상기 선택된 키의 식별자를 결정하는 단계는,
상기 행들의 서브세트 및 상기 열들의 서브세트를 분석함으로써 상기 객체의 중심을 결정하는 단계;
상기 객체의 중심의 좌표들을 결정하기 위하여 교정 테이블을 액세스하는 단계; 및
키 맵을 액세스함으로써 상기 좌표들로부터 상기 선택된 키의 식별자를 결정하는 단계를 포함하는, 방법.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.
상기 객체의 중심을 결정하는 단계는,
상기 행들의 서브세트에 기초하여 제 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.
상기 키 선택 모듈은,
상기 캡처된 이미지들에서 상기 객체를 검출하도록 구성된 객체 검출 모듈;
상기 객체가 상기 작업 영역의 작업 표면을 터치하는지를 검출하도록 구성된 터치 검출 모듈;
상기 객체에 의해 터치된 상기 작업 표면 상의 위치에 대응하는 상기 캡처된 이미지들로부터의 좌표를 결정하도록 구성된 위치 모듈;
상기 캡처된 이미지들로부터의 상기 좌표에 기초하여 상기 선택된 키의 식별자를 결정하도록 구성된 키 식별 모듈; 및
사용자에 의한 텍스트 입력과 연관된 호스트 장치로 키 이벤트 식별자를 출력하도록 구성된 키 이벤트 생성 모듈을 포함하는, 시스템.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.
상기 키 이벤트 생성 모듈은,
현재의 키 리스트 및 이전의 키 리스트를 저장하도록 구성된 키 이벤트 저장 모듈; 및
차단된 키를 식별하기 위하여 상기 현재의 키 리스트 및 상기 이전의 키 리스트를 비교하도록 구성된 키 차단 검출 모듈을 더 포함하는, 시스템.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.
상기 객체 검출 모듈은,
각각의 캡처된 이미지로부터 배경 이미지를 추출하고,
상기 제 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.
상기 장치는 상기 작업 표면 상에 연장되는 광 빔을 제공하도록 구성되고, 상기 광 빔은 상기 객체가 상기 광 빔과 상호작용할 때에 상기 캡처된 이미지들에서 광 강도를 생성하도록 구성되는, 시스템.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.
상기 터치 검출 모듈은,
상기 행들의 서브세트에 기초하여 각각의 캡처된 이미지에서 상기 객체의 치수를 결정하고,
상기 객체의 상기 치수를 상기 광 빔의 두께와 비교하도록 더 구성되는, 시스템.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.
상기 터치 검출 모듈은 상기 객체를 포함하는 연속적인 캡처된 이미지들의 수를 카운트하고, 상기 연속적인 캡처된 이미지들의 수가 하한 터치 임계값보다 크고 상한 터치 임계값보다 작은지를 결정하도록 더 구성되는, 시스템.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.
상기 터치 검출 모듈은 연속적인 캡처된 이미지들을 비교하고, 상기 객체의 치수가 증가하고 있는지를 결정하도록 구성되는, 시스템.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.
상기 키 선택 모듈은 상기 행들의 서브세트 및 상기 열들의 서브세트를 분석하고, 상기 객체의 중심의 좌표들을 결정하기 위하여 교정 테이블을 액세스하고, 키 맵을 액세스함으로써 상기 좌표들로부터 상기 선택된 키의 식별자를 결정하도록 구성되는, 시스템.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.
상기 키 선택 모듈은 상기 행들의 서브세트에 기초하여 제 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.
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)
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)
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 |
-
2012
- 2012-08-23 KR KR1020120092650A patent/KR101385263B1/en active IP Right Grant
Cited By (6)
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'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 |