KR101112624B1 - Character Recognizing method and the system with 3D Accelerometer - Google Patents
Character Recognizing method and the system with 3D Accelerometer Download PDFInfo
- Publication number
- KR101112624B1 KR101112624B1 KR1020080109642A KR20080109642A KR101112624B1 KR 101112624 B1 KR101112624 B1 KR 101112624B1 KR 1020080109642 A KR1020080109642 A KR 1020080109642A KR 20080109642 A KR20080109642 A KR 20080109642A KR 101112624 B1 KR101112624 B1 KR 101112624B1
- Authority
- KR
- South Korea
- Prior art keywords
- signal
- input
- data
- digital signal
- acceleration sensor
- 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/02—Input arrangements using manually operated switches, e.g. using keyboards or dials
- G06F3/023—Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
- G06F3/0233—Character input methods
-
- 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/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/0346—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of the device orientation or free movement in a 3D space, e.g. 3D mice, 6-DOF [six degrees of freedom] pointers using gyroscopes, accelerometers or tilt-sensors
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Character Discrimination (AREA)
Abstract
본 발명은 가속도센서를 이용하여 공간에서의 글 쓰는 동작을 인식함으로써 각종 단말기에 문자를 인식, 입력시킬 수 있도록 하기 위한 문자인식 방법 및 시스템에 관한 것으로서, 보다 상세하게는 가속도센서를 통해 감지된 신호를 전처리 과정과 패턴인식 과정을 통해 보다 인식율이 향상된 문자인식 방법 및 시스템에 관한 것이다.The present invention relates to a character recognition method and system for recognizing and inputting characters to various terminals by recognizing a writing operation in a space using an acceleration sensor, and more particularly, a signal detected through an acceleration sensor. The present invention relates to a method and system for improved character recognition through preprocessing and pattern recognition.
본 발명은 문자인식에 있어서, 공간 필기를 하는 동안의 가속도센서 감지 신호의 증폭, 전처리 과정, 패턴인식 과정을 통해 인식율이 향상되는 효과를 갖는다. 즉, 알고리즘에 적용하기 전에 몇몇 전처리 과정을 추가하고 보완하여 인식율을 높이고, 알고리즘을 보완하여 인식률이 높아지는 효과를 갖는다.The present invention has the effect of improving the recognition rate through the amplification, preprocessing, pattern recognition process of the acceleration sensor detection signal during space writing. In other words, the recognition rate is increased by adding and supplementing some preprocessing steps before applying it to the algorithm, and increasing the recognition rate by complementing the algorithm.
Description
본 발명은 가속도센서를 이용하여 공간에서의 글 쓰는 동작을 인식함으로써 각종 단말기에 문자를 인식, 입력시킬 수 있도록 하기 위한 문자인식 방법 및 시스템에 관한 것으로서, 보다 상세하게는 가속도센서를 통해 감지된 신호를 전처리 과정과 패턴인식 과정을 통해 보다 인식율이 향상된 문자인식 방법 및 시스템에 관한 것이다.The present invention relates to a character recognition method and system for recognizing and inputting characters to various terminals by recognizing a writing operation in a space using an acceleration sensor, and more particularly, a signal detected through an acceleration sensor. The present invention relates to a method and system for improved character recognition through preprocessing and pattern recognition.
오래 전부터 지금까지 키보드와 마우스는 사람이 컴퓨터 등의 단말기에 정보를 입력하는 수단으로서 일반적으로 사용되어 오고 있다. 또한 휴대폰과 같은 모바일 기기에도 마찬가지로 키보드에 해당하는 버튼이 구비되어 문자, 숫자 등의 정보를 입력하는데 사용된다.Since ancient times, keyboards and mice have been generally used as a means for a person to input information into a terminal such as a computer. In addition, a mobile device such as a mobile phone is also provided with a button corresponding to the keyboard is used to enter information such as letters, numbers.
이러한 입력방식은 키보드나 버튼과 같은 정형화된 입력 수단을 구비하고, 컴퓨터와 약속된 규약, 규칙을 숙지하여야만 하는 것으로서, 컴퓨터와의 자유로운 인터페이스에 있어서는 어느 정도 장벽이 있게 된다. 이를 개선하여 최근에는 사람의 필기체를 인식하는 기술이 제시되고 있고, 실제로 몇몇 PDA 단말기나 터치패드에는 사람의 필기체를 직접 인식하여 문자를 입력하는 기술이 상용화 되었다. 하지만 이런 터치패드 제품에는 기존의 제품에 대한 확장성이 없고 무엇보다 직접 터치패드에 접촉해야 한다는 점에서 불편함이 있다.Such an input method has a standard input means such as a keyboard and a button, and it is necessary to be aware of the rules and rules promised with the computer, and there are some barriers in the free interface with the computer. In recent years, technology for recognizing human handwriting has been proposed, and technology for inputting characters by directly recognizing human handwriting has been commercialized in some PDA terminals or touch pads. However, these touch pad products are inconvenient in that they are not scalable to existing products and most of all, they must be in direct contact with the touch pad.
따라서 기존의 제품에 대한 범용적 확장 적용이 가능하고 화면이나 터치패드 등에 직접 접촉될 필요가 없이, 허공, 즉 3차원 공간에 문자를 써도 인식할 수 있는 장치가 제시되고 있다. Therefore, a device that can be universally extended and applied to existing products and can be recognized even in the air, that is, by writing a letter in a three-dimensional space, without having to directly touch a screen or a touch pad, has been proposed.
3차원 공간상의 움직임을 감지하는 방법은 크게 3가지의 유형이 시도되었다. 첫째로 카메라를 이용하여 움직이는 물체를 촬영하고 이에 대한 이미지 프로세싱을 통해 그 움직임을 해석하는 방법이 있다. 이 방법은 다수의 카메라가 필요하고, 이미지 프로세싱을 위해 사용자가 특별한 모양 혹은 색을 가진 물체를 사용하여야 하며, 프로세싱이 복잡하다는 단점이 있다. 둘째로 3각 측량의 원리를 이용한 방법이 있다. 이 방법은 사용자 장치가 전파 혹은 음파를 발신하게 하거나 반사하도록 하고, 이를 바탕으로 3개 이상의 수신부가 수신 시간을 측정하여 도달 시간의 차를 바탕으로 물체의 위치를 추적한다. 이 방법 또한 다수의 발신 혹은 수신 장치를 일정한 위치에 설치하여야 하고 미세한 움직임을 감지하기는 매우 어렵다는 문제가 있다. 셋째로 관성 센서를 사용자 혹은 사용자 장치에 부착하여 직접 그 움직임을 얻는 방법이 있다. 이 방법은 3차원 공간상에서 물체의 동작을 감지하기 위해서 3축의 병진 운동과 3축의 회전 운동을 감지하는 방식을 사용한다. 병진 운동과 회전 운동은 가속도센서와 같은 관성 센서들을 사용하여 감지할 수 있다. Three types of methods for detecting motion in three-dimensional space have been attempted. First, there is a method of photographing a moving object using a camera and interpreting the motion through image processing. This method requires a large number of cameras, the user must use an object having a special shape or color for image processing, and the processing is complicated. Second, there is a method using the principle of triangulation. This method allows the user device to transmit or reflect radio waves or sound waves, and based on this, three or more receivers measure the reception time and track the position of the object based on the difference in arrival time. This method also has a problem in that it is necessary to install a plurality of transmitting or receiving devices at a predetermined position and it is very difficult to detect fine movements. Third, there is a method of directly attaching an inertial sensor to a user or a user device and directly obtaining the movement. This method uses three axes of translational motion and three axes of rotational motion to detect the motion of an object in three-dimensional space. Translational and rotational motions can be detected using inertial sensors such as acceleration sensors.
이 중 본 발명은 가속도센서를 이용하는 방식에 대한 것으로서, 모바일 기기를 통해 허공에 필기를 하더라도 해당 장치가 어떻게 움직였는지에 대한 정보를 단부에 구비된 가속도센서를 통해 감지하도록 하는 것이다. 즉, 장치의 끝 부분이 어느 방향 (X,Y,Z 3축)으로 얼마만큼의 힘으로 움직였는지에 대한 신호를 이용하고, 물리적인 접촉없이 움직임만으로도 문자를 인식해내는 방식에 대한 것이다. 이러한 3 차원 공간에서의 사용자 움직임을 감지하여 문자를 입력할 수 있게 하려는 시도들은 사용자의 움직임의 궤적을 가능하면 정확하게 추출하여 사용자가 종이에 쓴 것과 같은 획을 얻어내고, 이에 대하여 별도의 문자 인식 알고리즘들을 적용하는 방식이었다.Among them, the present invention relates to a method of using an acceleration sensor, so that information on how the device moves is sensed through an acceleration sensor provided at an end even when writing in the air through a mobile device. In other words, it uses a signal of how much force the end of the device is moved in three directions (X, Y, Z axis), and recognizes letters by movement without physical contact. Attempts to detect the user's movement in the three-dimensional space and input text can extract the trajectory of the user's movement as accurately as possible to obtain a stroke like the user's writing on paper, and a separate character recognition algorithm for this. It was a way to apply them.
이러한 문자인식 방식은 센서에서 나오는 신호의 노이즈, 흔들림 등으로 인해 인식율이 떨어지는 문제가 있었다. 따라서 인식율을 높이기 위한 방법에 대한 필요성이 대두되고 있다.This character recognition method has a problem that the recognition rate is lowered due to noise, shaking, etc. of the signal from the sensor. Therefore, there is a need for a method for improving the recognition rate.
본 발명은 상기와 같은 문제를 해결하기 위한 것으로서, 필기하는 동안의 가속도센서 감지 신호의 증폭, 전처리 과정, 패턴인식 과정을 통해 인식율을 향상시키는 것을 목적으로 한다.The present invention is to solve the above problems, it is an object to improve the recognition rate through the amplification, pre-processing, pattern recognition process of the acceleration sensor detection signal during writing.
상기와 같은 목적을 달성하기 위한 본 발명의 구성은, 입력부를 통해 입력신호가 가해진 동안에 가상의 평면에 대하여 필기를 하는 동작에 대해 가속도센서를 통해 가속도를 측정하는 단계; 상기 측정된 가속도의 감지 신호를 증폭 및/또는 디지털 신호로 변조하는 단계; 상기 변조된 디지털 신호에 대해 전처리하는 단계; 및 상기 전처리된 디지털 신호를 이용하여 패턴인식하는 단계를 포함하는 것을 특징으로 한다.The configuration of the present invention for achieving the above object, the step of measuring the acceleration through the acceleration sensor for the operation to write to the virtual plane while the input signal is applied through the input unit; Modulating the sensed signal of the measured acceleration into an amplified and / or digital signal; Preprocessing the modulated digital signal; And pattern recognition using the preprocessed digital signal.
상기 전처리하는 단계는: 필터링 단계를 포함하며, 상기 필터링 단계는: 상기 신호에 포함되어 불규칙적이고 불균일한 잡음신호파형을 제거하여, 균일하고 연속적인 신호파형으로 보정하는 것임을 특징으로 한다.The preprocessing step may include a filtering step, wherein the filtering step includes: removing irregular and non-uniform noise signal waveforms included in the signal and correcting the uniform and continuous signal waveforms.
상기 전처리하는 단계는: 노멀라이징 단계를 포함하며, 상기 노멀라이징 단계는: 사용자마다 입력하는 상기 신호의 진폭이 크거나 작은 경우, 이를 평준화하여 정형화된 진폭으로 보정하는 것임을 특징으로 한다.The preprocessing step may include: a normalizing step, wherein the normalizing step is characterized in that when the amplitude of the signal input by each user is large or small, the normalizing is corrected to a standardized amplitude.
상기 전처리하는 단계는: 레귤레이팅 단계를 포함하며, 상기 레귤레이팅 단 계는: 사용자마다 입력하는 상기 신호의 속도가 빠르거나 느린 경우, 정형화된 속도로 보정하는 것임을 특징으로 한다.The preprocessing step may include: a regulating step, wherein the regulating step may include: correcting at a standardized speed when the speed of the signal input for each user is fast or slow.
상기 패턴인식하는 단계는: 전처리된 상기 신호를 매칭시킬 때에, 상기 신호를 시간상으로 늘이고 줄이는 신축 비교를 통해 2개의 신호를 비교하는 방식을 포함하는 것을 특징으로 한다.The pattern recognition may include: comparing two signals by stretching and reducing the signal in time and matching the preprocessed signal.
움직임을 감지하기 위한 가속도센서; 상기 가속도센서에서 감지된 신호를 증폭하기 위한 증폭부; 아날로그 신호를 디지털 신호로 변조하기 위한 변조부; 상기 어느 하나 이상의 전처리 단계를 수행하는 전처리부; 및 상기 전처리된 신호를 상기 패턴인식 단계를 통해 문자로 비교하여 인식하는 패턴인식부;를 포함하여 구성되는 것을 특징으로 한다.An acceleration sensor for detecting movement; An amplifier for amplifying the signal detected by the acceleration sensor; A modulator for modulating the analog signal into a digital signal; A preprocessing unit performing the one or more preprocessing steps; And a pattern recognition unit for comparing the preprocessed signal with a character through the pattern recognition step to recognize the preprocessed signal.
본 발명은 문자인식에 있어서, 공간 필기를 하는 동안의 가속도센서 감지 신호의 증폭, 전처리 과정, 패턴인식 과정을 통해 인식율이 향상되는 효과를 갖는다. 즉, 알고리즘에 적용하기 전에 몇몇 전처리 과정을 추가하고 보완하여 인식율을 높이고, 알고리즘을 보완하여 인식률이 높아지는 효과를 갖는다.The present invention has the effect of improving the recognition rate through the amplification, preprocessing, pattern recognition process of the acceleration sensor detection signal during space writing. In other words, the recognition rate is increased by adding and supplementing some preprocessing steps before applying it to the algorithm, and increasing the recognition rate by complementing the algorithm.
이하 첨부된 도면에 도시된 실시예를 참조하여 본 발명의 구성을 상세하게 설명하도록 한다.Hereinafter, the configuration of the present invention will be described in detail with reference to the embodiments illustrated in the accompanying drawings.
도 1은 본 발명에 따른 필기입력장치 및 인식단말기를 블록도로 나타낸 것이다. 도 1을 참조하면, 필기입력장치(100)와 인식단말기(200)를 포함하여 하나의 문자 인식 시스템을 구성한다. 필기입력장치(100)는 사용자가 손으로 쥐고 허공에서 움직이는 장치이고, 인식단말기(200)는 PC, PDA 기타 다양한 형태의 정보통신 단말기, 응용기기가 해당될 수 있다.1 is a block diagram of a handwriting input device and a recognition terminal according to the present invention. Referring to FIG. 1, a text recognition system is configured by including the
필기입력장치(100)는 그 움직임을 감지하기 위해 단부에 3축 가속도센서(110)를 구비하고, 모드변환부(120), 입력부(130), 증폭부(140), 변조부(150), 전처리부(160), 통신부(170)를 포함한다.The
가속도센서(110)는 기계적 충격(mechanical shock)이나 진동(vibration)을 받았을 때 전기적 출력을 발생시키는 전기 기계적 변환기로서, 일반 목적의 가속도 뿐만 아니라 충격, 진동 측정 등에 광범위하게 사용되는 것이다.The
가속도센서(110)는 일종의 관성 센서에 해당하는 것으로서, 물체의 위치 변화를 계산하기 위하여 가속도를 측정하는 가속도센서 외에 물체의 회전각 변화를 계산하기 위하여 각속도를 측정하는 각속도센서 관성 센서로서 같이 사용할 수도 있다.The
이러한 가속도센서(110)는 측정된 가속도를 시간에 따라 적분하는 과정에서 가속도센서가 내재적으로 갖고 있는 에러들이나 노이즈로 인해 계산된 위치와 실제 위치와는 많은 차이를 유발하게 된다.The
모드변환부(120)는 사용자가 공간 필기하고자 하는 문자가 영문인지, 국문인 지, 숫자인지를 선택할 수 있도록 하는 부분이다. The
입력부(130)는 사용자가 공간 필기를 할 때, 표시하는 문자 필기의 시작과 끝을 지정하기 위한 부분으로서, 아무 의미없이 허공에서 움직일 때에는 입력부(130)의 Write 버튼을 누르지 않고 있다가. 문자를 입력하고자 하는 움직임의 순간 입력부(130)의 Write 버튼을 온(ON)시키고, 문자 필기가 마쳐지는 순간 Write 버튼을 오프(OFF)시키도록 하여 신호 감지, 인식을 중단하도록 한다.The
증폭부(140)는 OP-Amp를 통해 가속도센서(110)에서 나오는 x, y, z 축상의 좌표값을, 표현할 수 있는 최대한의 크기 범위를 갖는 값으로 증폭시킨다. 증폭된 아날로그 신호값은 변조부(150)를 통해 디지털 값으로 변환되고, 전처리부(160)에서 필터링 등의 처리를 거쳐 블루투스 모듈과 같은 통신부(170)를 통해 무선으로 인식단말기(200)에 전송된다.The amplifying
인식단말기(200)에는 패턴인식부(220)를 구비하고 있으며, 경우에 따라서는 전처리부(210)를 인식단말기 쪽에 포함시킬 수도 있다.The
가속도센서(110)에 의해 감지된 가속도 세기값은 출력단자를 통해 아날로그 전압값이 전달되고, 이는 OP-Amp 증폭부(140)를 통해 증폭되고 변조부(150, AVR ADC)에 전달되어 지정된 샘플링 값으로 디지털 신호를 뽑아내어 통신부(170)를 통해 인식단말기(200)로 전송된다. 전처리부(160)는 필기입력장치(100)(210) 내에 있을 수도 있고, 인식단말기(200) 내에 구비될 수도 있다. 이 때 전송되는 값은 입력부(130)에서 write 버튼을 눌렀다가 뗄 때까지의 신호값만이 전송되며, 전송된 연속적인 신호값과 문자를 썼을 때의 미리 저장되어 있는 신호값을 비교하여 가장 비 슷한 문자를 찾아내게 된다.The acceleration intensity value sensed by the
블루투스와 같은 통신부(170)를 통해 무선으로 전송된 신호값은 사람 손의 미세한 떨림이나 외부 환경의 영향을 받아 잡음이 섞이게 되고 사람마다 글씨의 크기나 쓰는 속도가 다르기 때문에 패턴처리를 하기 전 입력 신호의 값을 정확하고 일정한 값으로 맞춰주기 위한 전처리 과정(필터링, 노멀라이징, 레귤레이팅)을 커친다. 전처리 과정을 거친 데이터는 DTW(Dynamic Time Warping) 알고리즘을 통해 인식되고 그 값은 사용자 인터페이스로 보여지게 된다.The signal value transmitted wirelessly through the
도 2는 필기동작을 인식하는 방법을 나타내는 순서도이다. 도 2를 참조하면, 사용자가 공간 필기를 인식하는 필기입력장치(100)를 이용하여 공간상에 글씨를 쓰게 되면(S110), 필기입력장치(100)에 탑재된 가속도센서(110)에 의해 가속도가 측정된다(S120). 그리고 나서, 측정된 가속도를 이용하여 필기 궤적, 즉 필기입력장치(100)의 단부가 공간 상에서 이동한 이동 궤적을 추적하여 그 형태 패턴을 인식함으로써 사용자의 필기를 인식하게 된다(S160). 상기 도 1에서 상술한 바와 같이 공간에 글씨를 쓰기 전에 필기입력장치(100)는 모드 변환부(120)를 통해 문자 종류를 선택받는 모드 선택 단계가 더 포함될 수도 있을 것이다.2 is a flowchart illustrating a method of recognizing a writing operation. Referring to FIG. 2, when a user writes letters in space using the
이 과정에서 보다 센서 장치의 노이즈나 오류를 줄이고 인식율을 높이기 위해, 감지신호를 증폭시키고(S130), 디지털신호로 변조하며(S140), 이에 대해 전처리 과정을 거치게 된다(S150). 전처리 과정은 도 3에 나타난 바와 같이, 필터링 과정(S152), 노멀라이징 과정(S154), 레귤레이팅 과정(S156) 중 어느 하나 이상을 포함한다.In this process, in order to reduce the noise or error of the sensor device and increase the recognition rate, the sensing signal is amplified (S130), modulated into a digital signal (S140), and the preprocessing process is performed (S150). As shown in FIG. 3, the preprocessing process includes any one or more of a filtering process S152, a normalizing process S154, and a regulating process S156.
도 4는 전처리 과정 중 필터링 과정의 결과를 나타내는 그래프이다. 도 4를 참조하면, 필터링 과정에 의해 A와 같은 파형의 신호가 B와 같이 매끄럽게 규칙화되어 보정된다. 이러한 필터링 과정을 거치기 위해 감지 신호의 필터 처리는 다음과 같은 공정 및 함수에 의해 진행된다.4 is a graph illustrating a result of a filtering process in a preprocessing process. Referring to FIG. 4, a signal having a waveform like A is smoothly regularized and corrected as shown by B by the filtering process. In order to go through this filtering process, the filtering of the detection signal is performed by the following process and function.
- int precedure_filtering(int raw_data_count, coordinate *input_data, processing_data *result_pos);int precedure_filtering (int raw_data_count, coordinate * input_data, processing_data * result_pos);
이 함수는 입력 데이터의 개수(raw_data_count), 입력데이터 구조체(coordinate *input_data), 출력데이터 구조체(processing_data *result_pos)를 매개변수로 갖는다. coordinate 구조체를 통하여 x, y, z 좌표 값을 입력 받은 후 fun_filter()함수를 호출하여 LowpassFilter 처리를 한 후 processing_data 구조체에 결과 값을 저장하는 것으로서, 아래는 coordinate, processing_data 구조체와 fun_filter()함수 호출부분의 소스이다.This function takes as input parameters the number of input data (raw_data_count), an input data structure (coordinate * input_data), and an output data structure (processing_data * result_pos). After receiving x, y, z coordinate value through coordinate structure, calling fun_filter () function to process LowpassFilter and saving the result value in processing_data structure. Is the source.
// 입력데이터를 받는 구조체// structure to receive input data
struct coordinatestruct coordinate
{{
short x;short x;
short y;short y;
short z;short z;
short reserved;short reserved;
}; };
// 필터, 평준화, 정규화의 계산 결과를 저장하는 구조체// structure to store the result of calculation of filter, leveling and normalization
typedef struct processing_datatypedef struct processing_data
{{
double x;double x;
double y;double y;
double z;double z;
} processing_data;} processing_data;
for(i=0; i<sampling; i++)for (i = 0; i <sampling; i ++)
{{
data[i] = pos[i].x; // pos[i].x는 coordinate구조체형의 입력 값data [i] = pos [i] .x; // pos [i] .x is the input value of the coordinate structure
}}
// x좌표 필터처리 // filter the x coordinate
// data: 입력데이터, result : 출력데이터, raw_data_count : 입력 데이터 개수// data: input data, result: output data, raw_data_count: number of input data
fun_filter(data, result, raw_data_count);fun_filter (data, result, raw_data_count);
// 필터처리한 x좌표 저장// save the filtered x coordinate
for(i = 0 ; i < sampling ; i++)for (i = 0; i <sampling; i ++)
outdata[i].x = result[i]; // oudata.x는 processing_data 구조체형outdata [i] .x = result [i]; // oudata.x is a processing_data structure
(생략) (skip)
x, y, z 세 좌표의 필터처리가 완료되면 precedure_filtering()함수는 필터처리가 완료된 데이터의 개수를 리턴해준다. 기본적인 필터는 (필터계수-1)/2 만큼의 지연이 생기기 때문에 필터 처리 후의 결과값의 앞부분과 뒤부분은 지연된 수만큼 정확하지 않은 값이기 때문에, 정확한 값을 넘겨주기 위하여 입력 데이터의 개수에서 필터 계수의 개수만큼 뺀 값을 리턴해준다. When the filter processing for x, y, and z coordinates is completed, the precedure_filtering () function returns the number of data that has been filtered. Since the basic filter has a delay of (filter factor -1) / 2, the front and rear parts of the result value after the filter processing are not as accurate as the delayed number. Returns the value subtracted by the number of coefficients.
// 필터처리한 데이터갯수 return// number of filtered data return
return (sampling - FILTER_LENGTH);return (sampling-FILTER_LENGTH);
- void fun_filter(int *data, double *result, int count); void fun_filter (int * data, double * result, int count);
이 함수는 입력 데이터 배열(data), 결과 데이터 배열(result), 입력데이터의 개수(count)를 매개변수로 갖는다. 여기에서는 convolution을 이용하여 Low Pass Filter처리를 해주는 함수이다.This function takes as input parameters an input data array, a result data array, and a count of input data. Here is a function to process Low Pass Filter using convolution.
#define FILTER_LENGTH 21 // 필터의 계수의 개수#define FILTER_LENGTH 21 // The number of coefficients in the filter
// 필터 계수// filter coefficients
double Filter[FILTER_LENGTH] = {double Filter [FILTER_LENGTH] = {
0.03283474219465, (후략) 0.03283474219465, (short)
};};
기본적인 필터처리를 위해서 푸리에 변환을 통하여 시간 영역의 입력 값을 주파수 영역으로 값을 변형한 후 필터 계수와 곱하여야 한다. 그 후 다시 역 푸리에 변환을 하면 필터처리가 완료된 결과 값을 얻을 수 있다. 하지만 아래와 같은 Convolution 식을 이용하면 이런한 과정을 거치지 않고 주파수 영역 상의 곱과 같은 기능을 해주기 때문에 Convolution식을 이용하여 간단하게 필터처리를 한다. For basic filter processing, the input value in the time domain is transformed into the frequency domain through Fourier transform and multiplied by the filter coefficient. After the inverse Fourier transform, the result of the filtering process can be obtained. However, if you use the Convolution equation as below, it performs the same function as the product in the frequency domain without going through this process.
........Convolution 식 ........ Convolution expression
즉, 두 개의 함수를 곱하여 그 곱의 합을 구하면 되는 것이다.In other words, you can multiply two functions and sum the products.
Convolution식을 이용한 필터 처리 소스는 아래와 같다.The filter processing source using the convolution equation is as follows.
// 필터 계수만큼 Convolution시킴.// Convolution by filter coefficient.
for(i=0; i<sampling; i++)for (i = 0; i <sampling; i ++)
{ {
temp=0; temp = 0;
if(i<FILTER_LENGTH) if (i <FILTER_LENGTH)
{ {
input[i]=data[i]; input [i] = data [i];
for(j=0;j<=i;j++)for (j = 0; j <= i; j ++)
temp+=input[i-j]*Filter[j]; // Convolutiontemp + = input [i-j] * Filter [j]; // Convolution
}}
elseelse
{{
for(j=0;j<FILTER_LENGTH-1;j++)for (j = 0; j <FILTER_LENGTH-1; j ++)
input[j]=input[j+1]; input [j] = input [j + 1];
input[FILTER_LENGTH-1]=data[i]; input [FILTER_LENGTH-1] = data [i];
for(j=0;j<FILTER_LENGTH;j++) for (j = 0; j <FILTER_LENGTH; j ++)
temp+=input[j]*Filter[j]; temp + = input [j] * Filter [j];
} }
result[i] = temp;result [i] = temp;
}}
Convolution이 끝나면 result 배열의 앞부분에는 FILTER_LENGTH 만큼 지연이 생긴다. 정확한 신호 값을 가져야하지 때문에 (FILTER_LENGTH+1)부터의 값을 앞으로 쉬프트 시켜준다. 그 후 FILTER_LENGTH만큼 뒷부분은 중복이 되기 때문에 precedure_filtering() 함수에서는 처리가 끝난 후 데이터의 개수를 입력값에서 FILTER_LENGTH 만큼 return 시켜준다. After the convolution is over, there is a delay of FILTER_LENGTH at the beginning of the result array. Shift the value from (FILTER_LENGTH + 1) forward because it has to have the correct signal value. Afterwards, the latter part is duplicated by FILTER_LENGTH, so the precedure_filtering () function returns the number of data after input processing by FILTER_LENGTH.
// 앞부분의 지연구간을 없애기 위해 FILTER_LENGTH만큼 쉬프트시킴.// Shift by FILTER_LENGTH to remove the delay section earlier.
j=FILTER_LENGTH;j = FILTER_LENGTH;
for(i=j; i<sampling; i++)for (i = j; i <sampling; i ++)
{{
result[i-j] = result[i];result [i-j] = result [i];
}}
위와 같은 소소와 함수식의 적용을 통해, 작은 노이즈가 많이 포함된 신호값은 도 4의 B와 같이 매끄럽게 필터링 될 수 있다.Through the application of the small source and the function expression as described above, the signal value containing a lot of small noise can be filtered smoothly as shown in B of FIG.
도 5는 전처리 과정 중 노멀라이징 과정의 결과를 나타내는 그래프이다. 도 5를 참조하면, 사람마다 글씨를 쓸 때의 감지 진폭이 다르기 때문에 이 진폭을 정규화하는 노멀라이징 과정이 필요하다.5 is a graph showing the results of the normalizing process during the pretreatment process. Referring to FIG. 5, a normalizing process for normalizing the amplitude is necessary because the sensing amplitude when writing is different for each person.
도면의 C와 같이 가속도센서의 진폭이 작게 감지되도록 필기하는 사람이 있을 수 있고, D와 같이 진폭이 크게 감지되도록 필기하는 사람이 있을 수 있다. 노멀라이징 과정에서는 크거나 작은 진폭을 일정한 진폭 E로 정규화 시키게 된다.There may be a person who writes so that the amplitude of the acceleration sensor is sensed as small as C of FIG. In normalizing, large or small amplitudes are normalized to constant amplitude E.
사람마다 다른 진폭값을 정규화시키기 위해 RMS(Root Meas-Square)를 이용하여 입력 값을 RMS로 나누면 적당한 증폭 일반화된 값이 된다. 이를 위한 소스와 함 수는 다음과 같다.To normalize different amplitude values for different people, divide the input value by RMS using the root meas-square (RMS) to obtain an appropriate amplified generalized value. The source and function for this are as follows.
- int normalization(int cnt_filtered_data, processing_data* data);int normalization (int cnt_filtered_data, processing_data * data);
이 함수는 입력 데이터 개수(cnt_filtered_data), 입력 데이터 구조체(processing_data* data)를 매개변수로 갖는다. 매개변수를 통해 받은 데이터 값들을 P_rms()함수를 통해 처리해주기 위해 x, y, z 세 좌표 각각을 배열에 저장한 후 P_rms()함수를 호출한다.This function takes as input parameters the number of input data (cnt_filtered_data) and the input data structure (processing_data * data). To process data values received through parameters through P_rms () function, each of three coordinates of x, y, z is stored in an array and then P_rms () function is called.
// x, y, z 좌표값을 받아서 Normallization시키기 위해 저장함.// Receive x, y, z coordinate value and save it for normalization.
for(i = 0 ; i < sampling ; i++)for (i = 0; i <sampling; i ++)
{{
x[i] = (data+i)->x;x [i] = (data + i)-> x;
(생략)(skip)
} }
// root means square 구하기 위해 P_rms 함수 호출.// Call the P_rms function to find the root means square.
P_rms(x, cnt_filtered_data);P_rms (x, cnt_filtered_data);
(생략)(skip)
마지막으로 P_rms() 함수 처리 결과 값은 1이하의 값이 되기 때문에 다시 300이상의 값을 가지기 위해 증폭시켜준다.Finally, since the result value of P_rms () function is less than 1, it is amplified to have more than 300 again.
// Normalization이 끝난 데이터 증폭// amplify normalized data
for(i = 0 ; i < sampling ; i++)for (i = 0; i <sampling; i ++)
{{
(data+i)->x = x[i] * 300;(data + i)-> x = x [i] * 300;
(생략) (skip)
} }
- void P_rms(double *input, int cnt_filtered_data);void P_rms (double * input, int cnt_filtered_data);
RMS를 처리하는 함수이다. 입력 데이터 배열(input)과 입력 데이터 개수 (cnt_filtered_data)를 매개변수로 갖는다.This function handles RMS. It takes an input data array (input) and the number of input data (cnt_filtered_data) as parameters.
RMS는 산술평균을 말하는 것으로 각 샘플들의 제곱의 합을 구하여 그 값을 총 샘플의 개수로 나눠주면 된다.RMS is the arithmetic mean, which is the sum of the squares of each sample, divided by the total number of samples.
n : 샘플 수, N : 샘플의 총 수, A[s] : n번째 가속도 샘플n: number of samples, N: total number of samples, A [s]: nth acceleration sample
다음은 RMS를 계산하는 부분이다.The following is the part that calculates RMS.
// square value 합계 계산하기// calculate sum of square value
for(i=0; i<sampling; i++)for (i = 0; i <sampling; i ++)
{{
sum_pow = sum_pow + pow(input[i],2);sum_pow = sum_pow + pow (input [i], 2);
}}
// RMS 계산 P = √[(∑A[n]^2)/N// RMS calculation P = √ [(∑A [n] ^ 2) / N
rms_val = sqrt(sum_pow / sampling);rms_val = sqrt (sum_pow / sampling);
// 위에서 계산데 RMS로 각각의 입력데이터를 나누면 // divide each input data by RMS
// 노멀라이징, 즉 평준화가 된다.// normalize, or equalize
// normalization// normalization
for(i=0; i<sampling; i++) for (i = 0; i <sampling; i ++)
input[i] = input[i] / rms_val;input [i] = input [i] / rms_val;
위와 같은 소소와 함수식의 적용을 통해, 서로 다른 진폭의 수신값은 도 5의 E와 같이 정형화된 표준값으로 보정될 수 있다.Through the application of the sources and functions as described above, the received values of different amplitudes can be corrected to standardized values as shown in E of FIG. 5.
도 6은 전처리 과정 중 레귤레이팅 과정의 결과를 나타내는 그래프이다. 도 6을 참조하면, 사람마다 글쓰는 속도가 다를 수밖에 없는 점을 보정하기 위한 것으로서, F와 같이 글씨를 빨리 쓰거나, G와 같이 글씨를 늦게 쓰는 경우 정규화된 속도인 H와 같이 속도를 조정하는 과정이다. 글쓰는 속도가 다르면 신호의 길이가 서로 다르게 들어오기 때문에 패턴인식을 하기 전에 신호의 길이를 정합화 해 주어야 한다.6 is a graph showing the result of the regulating process during the pretreatment. Referring to FIG. 6, in order to correct the point that the writing speed is different for each person, a process of adjusting the speed as H, which is a normalized speed, when writing a letter fast as F or writing a letter late as G to be. If the writing speed is different, the signal length will be different, so you need to match the signal length before pattern recognition.
정합화 방법으로는 보간법과 Under-Sampling 방법을 이용한다. 이 방법을 수 행하기 위한 원리, 소스 및 함수를 설명하면 다음과 같다. 현재 보간을 할때 어떤 작은 데이터 셋으로 1000으로 정합화 해야 한다면 그 데이터의 길이를 1000으로 나누게 되면 어떤 실수가 나오게 되는데 이를 Rate라 한다.As the matching method, interpolation and under-sampling methods are used. The principles, sources, and functions for doing this are described below. If you need to match a small data set to 1000 at the time of interpolation, divide the length of the data by 1000 and you will get a mistake. This is called Rate.
그래서 원래 소스 상의 데이터는 Rate만큼 떨어진 간격으로 재배치 된다. Input Data Set이 500이었다면 Rate는 2.0이 될 것이다. Input의 첫번째 원소가 [0]의 인덱스에 있었다면 Input의 두번째 원소는 [2]의 인덱스에 Input의 세번째 원소는 [4]의 인덱스에 들어가게 되는 것이다. Under-Sampling의 기본 값은 받아들일 수 있는 샘플 Rate의 최소값으로 정한다.So the data on the original source is relocated at intervals separated by the rate. If the Input Data Set was 500, the Rate would be 2.0. If the first element of the input was at index [0], the second element of Input would be at index [2] and the third element of Input would be at index [4]. Under-Sampling defaults to the minimum acceptable sample rate.
- int regulation(int count, processing_data *data, processing_data *final_data);int regulation (int count, processing_data * data, processing_data * final_data);
이 함수는 입력 신호의 개수(count), 입력 데이터 구조체(processing_data *data), 출력 데이터 구조체(processing_data *final_data)를 매개변수로 갖는다. 여기에서는 Rate 값을 계산하여 그 값을 이용하여 정합화를 시도하는데, 아래 부분은 Rate 값을 계산하는 구현부이다. This function takes as parameters the number of input signals (count), an input data structure (processing_data * data), and an output data structure (processing_data * final_data). In this case, the rate value is calculated and matched using the value. The lower part is an implementation unit that calculates the rate value.
우선 중간과정을 계산하기 위한 동적배열 할당한다. Output 배열은 정합화 시킬 길이만큼 할당한다.First, we allocate a dynamic array to calculate the intermediate process. Allocate an output array the length you want to match.
output = (processing_data *)malloc(sizeof(processing_data)*LENGTH);output = (processing_data *) malloc (sizeof (processing_data) * LENGTH);
배열을 초기화 시켜준다.Initialize the array.
for(i = 0 ; i < LENGTH ; i++)for (i = 0; i <LENGTH; i ++)
{{
output[i].x = 0;output [i] .x = 0;
(생략) (skip)
}}
// Rate 계산 : LENGTH / 입력데이터 개수// Rate calculation: LENGTH / number of input data
//소수점 계산을 위해 LENGTH와 number_of_regulated_data 모두 dobule형으로 형변환// cast both LENGTH and number_of_regulated_data to dobule for decimal calculation
//여기서 number_of_regulated는 입력데이터 개수이다. // where number_of_regulated is the number of input data
rate = (double)LENGTH / (double)number_of_regulated_data;rate = (double) LENGTH / (double) number_of_regulated_data;
rate의 계산이 완료되면 시작점과 끝점을 맞춰준다. Once the rate is calculated, the start and end points are matched.
output[0] = data[0];output [0] = data [0];
output[LENGTH-1] = data[number_of_regulated_data-1];output [LENGTH-1] = data [number_of_regulated_data-1];
그런 후 계산된 Rate값에 맞게 각각의 인덱스에 입력데이터를 저장한다. output 배열을 200이라 하면, 즉, 입력데이터를 출력데이터에 200개의 Data의 비율에 맞추었을 때 200개 보다 크면 Under sampling을 해주고 200개 보다 적을 시에는 보간법을 이용하여 데이터를 늘어뜨린다. 그러면 중간 중간에는 0으로 초기화 된 데이터들로 채워져 있다.Then save the input data in each index according to the calculated rate value. If the output array is 200, that is, when the input data is larger than 200 when the input data is set to the ratio of 200 data to the output data, the undersampling is performed, and when the output data is less than 200, the data is arrayed using interpolation. Then the middle half is filled with data initialized to zero.
for(i = 0 ; i < number_of_regulated_data; i++)for (i = 0; i <number_of_regulated_data; i ++)
{{
output[(int(i * rate))].x = data[i].x;output [(int (i * rate))]. x = data [i] .x;
(생략) (skip)
}}
이제는 0으로 초기화된 부분을 초기화 시켜줘야 한다. 현재 부분이 보간이 필요한지 검사 한 후 linear_interpol()함수를 호출하여 보간해준다. 구현부분은 다음과 같다.Now we need to initialize the part initialized to 0. After checking whether the current part needs interpolation, call linear_interpol () function to interpolate. The implementation part is as follows.
before_index는 현재 보간해야하는 데이터에서 입력 데이터(즉, 0이 아닌 부분의 데이터)가 얼마나 이전에 있는지 조사하고, after_index는 보간해야 하는 데이터에서 얼마나 이후에 입력데이터가 있는지 조사한다. before_index examines how old the input data (that is, the non-zero data) is in the data that needs to be interpolated, and after_index examines how long the input data is in the data that needs to be interpolated.
// before, after_index를 구한다. // get before, after_index
while(1)while (1)
{{
if(output[before_index].x != 0)if (output [before_index] .x! = 0)
break;break;
before_index--;before_index--;
}}
// index가 구해지면 x,y,z 를 채운다. // Once the index is found, we fill x, y, z.
while(1)while (1)
{{
if(output[after_index].x != 0)if (output [after_index] .x! = 0)
break;break;
after_index++;after_index ++;
} }
before_value_x = output[before_index].x;before_value_x = output [before_index] .x;
after_value_x = output[after_index].x; after_value_x = output [after_index] .x;
(생략)(skip)
// 보간해야 하는 부분을 linear_interpol을 통해 채운다.// Fill in the part that needs to be interpolated with linear_interpol.
output[i].x =output [i] .x =
linear_interpol(before_index,after_index,before_value_x,after_value_x, i);linear_interpol (before_index, after_index, before_value_x, after_value_x, i);
(생략)(skip)
- double linear_interpol(int x1,int x2, double y1, double y2, double x);double linear_interpol (int x1, int x2, double y1, double y2, double x);
이 함수는 보간해 줘야한 구간의 x, y 좌표를 매개변수로 갖는다. 선형보간법에 의해 보간을 해주는 함수이다.This function takes as parameters the x and y coordinates of the interval to be interpolated. Interpolation is performed by linear interpolation.
를 직선의 방정식이라고 하면, 두 점(x0, f(x0)), (x1, f(x1))를 지나는 직선을 구할 수 있다. If the equation is a straight line, a straight line passing through two points (x0, f (x0)) and (x1, f (x1)) can be obtained.
(보간법 식)(Interpolation formula)
일반적으로 데이터 점들 사이의 간격이 작으면 작을수록 간격이 감소함으로써 연속함수를 직선으로 근사 시키기가 좋기 때문에 좋은 근사값을 얻을 수 있다. In general, the smaller the interval between data points, the smaller the interval, so it is better to approximate the continuous function in a straight line, so a good approximation can be obtained.
아래는 두 점사이의 길이를 구하는 소스이다.Below is the source to find the length between two points.
result = (y2-y1)/(x2-x1)*(x-x1) + y1;result = (y2-y1) / (x2-x1) * (x-x1) + y1;
위와 같은 소소와 함수식의 적용을 통해, 서로 다른 속도의 수신값은 도 6의 H와 같이 정형화된 표준 속도로 보정될 수 있다.Through the application of sources and functions as described above, received values of different speeds can be corrected to standardized standard speeds as shown in FIG.
도 7 및 도 8은 동적 패턴인식을 설명하기 위한 그래프이다. 상기한 전처리 과정을 거친 신호는, 동적인 신호로서 동적 패턴인식을 하여 문자와 매칭된다. 7 and 8 are graphs for explaining dynamic pattern recognition. The signal that has undergone the above preprocessing is matched with characters by dynamic pattern recognition as a dynamic signal.
패턴인식의 대상이 되는 패턴은 크게 나누면 정적 패턴과 동적 패턴으로 나눌 수 있다. 일반적으로 지문, 홍채, 정맥, 필기체 숫자, 문자 등과 같이 고정된 영상의 경우가 정적 패턴에 해당되고, 음성, 주가의 흐름, 로봇의 움직임 궤적 등은 시간에 따라서 변하는 패턴으로 동적 패턴에 해당한다. 본 발명의 입력 신호인 가속도센서의 입력 신호는 동적 패턴에 속한다. Patterns that are subject to pattern recognition can be divided into static and dynamic patterns. In general, fixed images such as fingerprints, irises, veins, handwritten numbers, and letters correspond to static patterns, and voices, stock price flows, and robot motion trajectories correspond to dynamic patterns. The input signal of the acceleration sensor, which is an input signal of the present invention, belongs to a dynamic pattern.
패턴인식에서 우리가 가장 직관적으로 생각해 볼 수 있는 방법은 패턴 매칭 방법이다. 하지만 동적 패턴은 시간상에서의 늘이고 줄이는 신축을 허용하는 방식으로 패턴 매칭이 이루어져야 한다. The most intuitive way to think about pattern recognition is pattern matching. However, dynamic patterns must be pattern matched in a way that allows them to stretch and shrink in time.
이를 위해 DTW(Dynamic Time Wraping) 알고리즘을 이용하며, 이는 서로 다른 길이를 가진 두 패턴에 대한 패턴 매칭이 가능하게 한다. DTW 알고리즘은 시간 축 상에서의 비선형 신축, 즉 늘이고 줄임을 허용하는 패턴 매칭 알고리즘이다. 여기서 비선형 신축이란 길이가 다른 두 열에서 어느 한 열을 기준으로 두 열을 비교하기 위해서는 어느 한 열이 늘어나거나 줄어들어야만 하는 것을 의미한다. To this end, DTW (Dynamic Time Wraping) algorithm is used, which enables pattern matching for two patterns of different lengths. The DTW algorithm is a pattern matching algorithm that allows nonlinear stretching, ie, stretching and shrinking, on the time axis. Here, nonlinear stretching means that one column must be increased or decreased in order to compare two columns based on one column in two columns of different lengths.
만약 길이가 긴 A열을 길이가 작은 B열을 기준으로 비교할 경우 매핑함수를 통해 비교가 이루어진다. DTW 알고리즘은 일단 두 열의 각 성분에 대한 거리 척도 값을 비용으로 설정한다. 그리고 두 열이 이루는 격자상에서 각 열의 시작 성분에서 시작하여 끝 성분에 이르기까지 비용 테이블에 최소 비용을 순환적으로 택하여 저장하는 점화식을 이용하는 동적 계획법으로 매핑 함수를 찾아가면서 두 열을 비교하는 알고리즘이다. If long A column is compared based on short B column, the mapping function is used. The DTW algorithm first sets the distance measure value for each component in the two rows as cost. It is an algorithm that compares two columns while searching for a mapping function by using an ignition equation that uses a table of two columns and stores the minimum cost cyclically and stores them in the cost table starting from the start component of each column to the end component. .
최종적으로 끝 성분에서 테이블에 저장되는 값이 두 열에 대한 유사도가 된다. 한편, 매핑 함수의 궤적은 앞의 동적 계획법의 최적 탐색패스를 찾는 것과 같은 탐색 과정에서 최소 비용을 택하는 경로를 별도의 경로 테이블에 매 단계마다 저장하고 끝 성분에서 최종 최소 비용을 구한 후에 역추적(Backtracking)하여 찾게 된다.Finally, the value stored in the table at the end component is the similarity for the two columns. On the other hand, the trajectory of the mapping function saves the path that takes the minimum cost in each step in a separate path table during the search process such as finding the optimal search path of the previous dynamic programming method, and traces back the final minimum cost from the end component. (Backtracking) to find.
DTW 알고리즘은 동적 계획법이라는 문제해결 알고리즘을 이용하는 서로 다른 길이를 가진 벡터 열에 대한 간단한 패턴 매칭 알고리즘이다. DTW 알고리즘은 2개의 신호를 비교함에 있어서 2개의 신호사이의 유클리디안 거리를 측정, 그 거리의 총합을 통해서 2개의 신호 사이의 유사도, 즉 패턴을 찾을수 있는 것이다.The DTW algorithm is a simple pattern matching algorithm for vector strings of different lengths using a problem solving algorithm called dynamic programming. In comparing two signals, the DTW algorithm measures the Euclidean distance between two signals and finds the similarity, or pattern, between the two signals through the sum of the distances.
도 7과 같이 D1 데이터와 D2 데이터 간의 신호를 비교함에 있어서 동일 시간에 일어났던 특징만 비교한다면 서로 비슷한 특징을 가진 신호라고 하더라도 서로의 특징을 매핑할 수 없을 것이다. 그러나 도 8과 같이 DTW 알고리즘에 의한 매핑을 통하면, 서로 비슷한 특징을 찾아가면서 매핑을 할 수 있기 때문에 두 신호가 서로 약간 다른 시간상에 있더라도 비슷한 특징이 있다면 서로 매핑할 수 있게 된다.When comparing signals between D1 data and D2 data as shown in FIG. 7, even if the signals have similar characteristics, the signals may not be mapped to each other. However, through the mapping by the DTW algorithm as shown in FIG. 8, since mapping can be performed while searching for similar features, the two signals can be mapped to each other if they have similar characteristics even though they are at slightly different times.
DTW 알고리즘은 2개의 신호의 거리값을 측정하고, 그 거리값이 가깝다면 비슷한 신호라고 판단하고 그 신호를 매치시킨다. DTW 알고리즘 자체를 개선하기 위해 한글이나 영문의 경우에는 철자법을 고치는 메커니즘이나 Dictionary Database를 입력해서 사용자가 어떤글자를 쓰려고 했는지를 인식해서 실제 DB에 없는 단어를 썼다면 DB을 검색해서 사용자가 실제로 쓰려고 했던 문자를 표시해주거나 혹은 해당 문자에서 가장 거리값이 가까웠던 값을 단순히 선택만 하는게 아니라 후보들도 표시해주어서 2차적으로 선택, 보정하도록 할 수도 있다.The DTW algorithm measures the distance value of two signals, and if the distance value is close, determines that it is a similar signal and matches the signal. In order to improve the DTW algorithm itself, in the case of Korean or English, the user inputs a mechanism to correct the spelling or inputs a dictionary database to recognize which letters the user is trying to write. Not only does it display a character or simply select the value closest to the distance from the character, but also displays candidates for secondary selection and correction.
도 9는 문자 인식을 위한 획순의 일 실시예를 나타내는 도면이다. 도 9를 참조하면, 숫자(a), 영문(b), 국문(c)에 해당하는 사전 지정 획순에 따라 입력된 신호를 전처리 과정과 DTW 알고리즘을 이용한 패턴 인식 과정을 통해 각 문자와 매칭시켜 인식하게 된다.9 is a diagram illustrating an embodiment of a stroke order for character recognition. Referring to FIG. 9, the signals input according to the pre-specified stroke order corresponding to the numbers (a), English (b), and Korean (c) are matched with each character through a preprocessing process and a pattern recognition process using a DTW algorithm. Done.
가속도센서로 인식함에 있어서 명확히 보기에는 서로 다른 문자 이지만 쓸 때 비슷한 방향으로 힘을 주는 문자들이 서로 매치되는 경우가 많아서 이를 구별하기 위해서 몇몇 문자에 대해서는 일반적으로 사용되는 획순에 대해서 변경하여 활용되기도 하며, 이를 통해 인식율을 향상시킬 수 있다.In terms of the accelerometer, the letters are clearly different from each other, but the letters that give power in the same direction are often matched with each other. This can improve the recognition rate.
가속도센서를 통해서 문자인식을 하는 경우 그 인식율이 높지 않으나, 필터링 외에도 몇개 전처리 과정을 거치고 Dynamic Time Warping 알고리즘을 사용함에 있어 아주 낮은 주파수를 가지는 신호를 인식할수 있도록 보완, 수정한 결과 85%이상의 인식률을 보일 수 있다. 이러한 높은 인식율은 버튼형 단말기들이나 터치패드형 단말기를 대체하여 가속도센서를 장착한 비접촉형 단말기의 발전을 가능하도록 하는 역할을 하게 된다.In case of character recognition through accelerometer, the recognition rate is not high. However, in addition to filtering, the recognition rate is over 85% as a result of supplementing and modifying to recognize the signal with very low frequency through several preprocessing and using Dynamic Time Warping algorithm. Can be seen. This high recognition rate replaces button terminals or touch pad terminals, thereby enabling the development of non-contact terminals equipped with acceleration sensors.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 한정하는 것은 아니다.The present invention described above is capable of various substitutions, modifications, and changes without departing from the spirit of the present invention for those skilled in the art to which the present invention pertains. It is not limited to drawing.
도 1은 본 발명에 따른 필기입력장치 및 인식단말기를 블록도로 나타낸 것이다.1 is a block diagram of a handwriting input device and a recognition terminal according to the present invention.
도 2는 필기동작을 인식하는 방법을 나타내는 순서도이다.2 is a flowchart illustrating a method of recognizing a writing operation.
도 3은 전처리 과정을 구체화하여 나타내는 순서도이다.3 is a flow chart illustrating the pretreatment process in detail.
도 4는 전처리 과정 중 필터링 과정의 결과를 나타내는 그래프이다.4 is a graph illustrating a result of a filtering process in a preprocessing process.
도 5는 전처리 과정 중 노멀라이징 과정의 결과를 나타내는 그래프이다.5 is a graph showing the results of the normalizing process during the pretreatment process.
도 6은 전처리 과정 중 레귤레이팅 과정의 결과를 나타내는 그래프이다.6 is a graph showing the result of the regulating process during the pretreatment.
도 7 및 도 8은 동적 패턴인식을 설명하기 위한 그래프이다.7 and 8 are graphs for explaining dynamic pattern recognition.
도 9는 문자 인식을 위한 획순의 일 실시예를 나타내는 도면이다.9 is a diagram illustrating an embodiment of a stroke order for character recognition.
< 도면의 주요 부분에 대한 부호의 설명 ><Description of Symbols for Main Parts of Drawings>
100 : 필기입력장치 110 : 가속도센서부100: handwriting input device 110: acceleration sensor unit
120 : 모드변환부 130 : 입력부120: mode conversion unit 130: input unit
140 : 증폭부 150 : 변조부140: amplification unit 150: modulator
160 : 전처리부 170 : 통신부160: preprocessing unit 170: communication unit
200 : 인식단말기 210 : 전처리부200: recognition terminal 210: preprocessing unit
220 : 패턴인식부220: pattern recognition unit
Claims (6)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080109642A KR101112624B1 (en) | 2008-11-06 | 2008-11-06 | Character Recognizing method and the system with 3D Accelerometer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020080109642A KR101112624B1 (en) | 2008-11-06 | 2008-11-06 | Character Recognizing method and the system with 3D Accelerometer |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100050650A KR20100050650A (en) | 2010-05-14 |
KR101112624B1 true KR101112624B1 (en) | 2012-02-15 |
Family
ID=42276607
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020080109642A KR101112624B1 (en) | 2008-11-06 | 2008-11-06 | Character Recognizing method and the system with 3D Accelerometer |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101112624B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101485679B1 (en) * | 2013-06-26 | 2015-01-28 | 길재수 | Character input method using motion sensor and apparatus performing the same |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728591A (en) * | 1993-05-13 | 1995-01-31 | Toshiba Corp | Space manipulation mouse system and space operation pattern input method |
JPH09230997A (en) * | 1996-02-20 | 1997-09-05 | Ricoh Co Ltd | Pen type input device |
JP2007079673A (en) * | 2005-09-12 | 2007-03-29 | Seiko Epson Corp | Drawing device |
-
2008
- 2008-11-06 KR KR1020080109642A patent/KR101112624B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0728591A (en) * | 1993-05-13 | 1995-01-31 | Toshiba Corp | Space manipulation mouse system and space operation pattern input method |
JPH09230997A (en) * | 1996-02-20 | 1997-09-05 | Ricoh Co Ltd | Pen type input device |
JP2007079673A (en) * | 2005-09-12 | 2007-03-29 | Seiko Epson Corp | Drawing device |
Also Published As
Publication number | Publication date |
---|---|
KR20100050650A (en) | 2010-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200301522A1 (en) | Devices and methods for determining relative motion | |
US9665763B2 (en) | Finger/non-finger determination for biometric sensors | |
US10209881B2 (en) | Extending the free fingers typing technology and introducing the finger taps language technology | |
US9582705B2 (en) | Layered filtering for biometric sensors | |
US8793621B2 (en) | Method and device to control touchless recognition | |
US8520913B2 (en) | Apparatus and method for reducing noise in fingerprint sensing circuits | |
Taylor et al. | Type-hover-swipe in 96 bytes: A motion sensing mechanical keyboard | |
US20050249386A1 (en) | Pointing device having fingerprint image recognition function, fingerprint image recognition and pointing method, and method for providing portable terminal service using thereof | |
EP1546993A1 (en) | Method and system for three-dimensional handwriting recognition | |
KR20050085897A (en) | Method and system for three-dimentional handwriting recognition | |
US10896250B2 (en) | Biometric authentication apparatus and biometric authentication method | |
Hsieh et al. | Air-writing recognition based on deep convolutional neural networks | |
CN112198966B (en) | Stroke identification method and system based on FMCW radar system | |
US20160274670A1 (en) | Gesture input apparatus, gesture input method, and program for wearable terminal | |
KR100562632B1 (en) | A video based handwriting recognition system and method | |
KR102570007B1 (en) | Method and electronic device for correcting handwriting input | |
KR101112624B1 (en) | Character Recognizing method and the system with 3D Accelerometer | |
Zhang et al. | Towards an ubiquitous wireless digital writing instrument using MEMS motion sensing technology | |
JPH10301702A (en) | Pen type inputting device and pattern recognition method for the same | |
JP2007272710A (en) | Handwriting input system | |
WO2022217598A1 (en) | Limb recognition method and apparatus | |
Nguyen et al. | Vietnamese sign language reader using Intel Creative Senz3D | |
KR100629410B1 (en) | A Pointing Device and Pointing Method having the Fingerprint Image Recognition Function, and Mobile Terminal Device therefor | |
Tuncer et al. | Handwriting recognition by derivative dynamic time warping methodology via sensor-based gesture recognition. | |
Sathya et al. | Systematic Review on on-Air Hand Doodle System for the Purpose of Authentication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20141218 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20151012 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20181016 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20191022 Year of fee payment: 9 |