정보공간_1

[4기 대구 하호성] 1$ Recognizer 본문

IT 놀이터/Elite Member Tech & Talk

[4기 대구 하호성] 1$ Recognizer

알 수 없는 사용자 2013. 11. 30. 17:55

안녕하세요.
대구멤버십의 22-1기 하호성입니다.

2D 제스쳐 인식 프로그램을 만들 때 간단하게 사용할 수 있는 1$ Recognizer에 대해 소개하려 합니다.

1$ Unistroke Recognizer는 2D 단일 stroke의 제스쳐 인식프로그램을 프로토 타입용으로 쉽고
간편하게 제작할 수 있게 고안되었다고 합니다.
(멀티 stroke 제스쳐 인식은 $N Multistroke Recognizer라는 것이 있습니다.)
유클리드의 기하학 함수들을 이용해서 가장 비슷한 샘플을 찾아 주는 것이 이 인식기의 설명입니다. 

1$ Recognizer를 이용하시면 아래 사진과 같은 간단한 제스쳐 인식 프로그램은 쉽게 만들 수 있습니다.
(아래 사진은 홈페이지에 있는 예제입니다.) 
http://depts.washington.edu/aimgroup/proj/dollar/

1$ Recognizer Java script 버전의 API 사용법을 간단히 소개합니다.
(소스코드는 홈페이지에서 C, C++, Python, C#, Java 등의 버전을 다운 받으실 수 있습니다.)

이번 예제에서는 웹앱에서 안드로이드 휴대폰의 가속도 센서 값을 받아
x, y축 가속도에 따라 정해진 모션을 찾는 소스코드를 간단히 제작해 보겠습니다.

 

 

우선 제스쳐을 저장하는 방법입니다.

 

1. 1$ Recognizer 객채를 생성합니다.

(Java와 C#에서는 Recognizer라는 클래스입니다.)

 

2. 그리고 Point 배열을 만들어 DolloarRecognizer에 등록을 할 텐데요.

그러기 위해선 Point 라는 클래스의 배열을 만들어야 합니다.

(패턴을 입력 받기 위해서는 Point라는 클래스의 배열을 만들어야 합니다.)

(Java, C# 버전 모두 Point라는 클래스로 돼 있습니다.)

Point는 좌표의 x, y값을 저장할 수 있는 클래스입니다.

 

3. 연속적으로 얻어진 x, y 가속도 값을 배열에 저장합니다.

 

4. 그리고 제작된 Point 배열을 Recognizer에 저장합니다.

 

여기까지 하면 제스쳐가 저장이 됩니다.

 

5. 그리고 저장된 제스쳐를 찾기 위해서

 

위 코드와 같이 Recognize 메서드를 이용하면 결과를 찾을 수 있습니다.

첫 번째 파라메터에는 찾고자 하는 데이터를 입력하고(Point 배열),

두 번째에는 true와 false값을 줄 수 있는데 좀 더 정밀하게 찾을 것인지 빠르게 찾을 것인지 선택하는

옵션입니다.

결과값에는 .Name과 .Score 값이 각각 들어있는데 제스쳐 이름과 인식률을 알 수 있습니다.

 

1$ Recognizer가 어떤 수학적 원리로 동작하는지에 대한 논문은 다음을 참고하세요.

http://faculty.washington.edu/wobbrock/pubs/uist-07.1.pdf

 

이상 글을 마칩니다. 감사합니다.

 

출처 : http://depts.washington.edu/aimgroup/proj/dollar/

관련 논문 : http://faculty.washington.edu/wobbrock/pubs/uist-07.1.pdf

기타 : N$ Multistroke Recognizer(http://depts.washington.edu/aimgroup/proj/dollar/ndollar.html)

         $P Point-Cloude Recognizer(http://depts.washington.edu/aimgroup/proj/dollar/pdollar.html)