이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
본 발명의 일실시예에 따른 사용자 인터페이스 시스템은 제스처 인식 기술을 적용한 입력 수단을 의미한다.
도 1은 본 발명의 일실시예에 따른 제스처 기반 사용자 인터페이스 시스템의 내부 구성을 도시한 도면이다.
도 1을 참조하면, 제스처 기반 사용자 인터페이스 시스템은 좌표 추출 부(110)와, 제스처 인식부(130)와, 기능 실행부(150)로 구성된다. 기능 실행부(150)는 제스처 표시부(151)와, 심볼 표시부(153)를 포함한다.
좌표 추출부(110)는 사용자가 손가락이나 스타일러스 등을 이용하여 제스처를 입력할 경우 입력된 제스처에 의한 입력 이벤트를 검출하는 역할을 수행한다. 즉, 좌표 추출부(110)는 입력 이벤트에 의한 좌표 데이터를 검출한다. 좌표 추출부(110)는 사용자의 터치 위치를 일정 시간 간격으로 검출하는 터치 스크린이나 터치 패드와 같은 터치 기반의 입력 장치를 의미할 수 있으나, 이에 한정되는 것은 아니며 마우스 등 여타의 입력장치가 채용될 수 있다.
본 발명의 일실시예는 ←, →, ↑, ↓ 등 시작 점과 끝 점을 이용하여 인식 가능한 직선 또는 곡선 형태의 제스처(이하, '일반 제스처'라 칭함)뿐 아니라 <, >, ∧, ∨ 등 꺾인 점(즉, 정점)을 포함한 직선 또는 곡선 형태의 제스처(이하, '꺾임 제스처'라 칭함)를 인식하는 기술을 제안한다.
좌표 추출부(110)는 입력 이벤트에 의한 좌표 데이터에서 시작 점과 끝 점, 그리고 상기 시작 점과 끝 점 사이에 존재하는 좌표 데이터 중 적어도 하나의 정점을 추출한다.
도 2는 꺾임 제스처의 형태를 설명하기 위한 도면이다.
실제 사용자가 입력한 꺾임 제스처를 통한 좌표 데이터를 분석하면, 도 2에 도시한 바와 같이 최소 세 개의 점으로 이루어짐을 알 수 있다. 이때, 제스처의 입력 방향은 제스처 인식과는 무관하므로 제한을 두지 않는다. 꺾임 제스처에 의한 좌표 데이터를 단순화 시키면 동일한 제스처에 대해서는 제스처의 형태가 동일 함을 인식할 수 있다.
꺾임 제스처에 의한 좌표 데이터를 단순화 하기 위하여 Ramer Douglas Peucker 알고리즘을 적용할 수 있다. Ramer Douglas Peucker 알고리즘는 분할 접근법을 토대로 한 것으로, 곡선을 이루는 정점 데이터를 이용하여 곡선 원래의 형태는 유지하면서 입력된 정점 데이터를 줄여 곡선을 단순화 시키는 알고리즘이다.
일반적인 Ramer Douglas Peucker 알고리즘는 다음과 같다.
도 3을 참조하면, 좌표 데이터에서 시작 점(301)과 끝 점(305)을 선분(305)으로 잇고 시작 점(301)과 끝 점(305) 사이에 존재하는 각 점에 대하여 선분(305)으로부터의 수직 거리를 구한다. 이때, 시작 점(301)과 끝 점(305) 사이에 존재하는 좌표 데이터 중 선분(305)과의 수직 거리가 가장 큰 점을 정점(307)으로 선택한다. 이때, 정점(307)에 대한 선분(305)과의 수직 거리가 일정 거리 상수 값보다 작으면 곡선의 단순화에 포함되는 정점으로 판단하고 정점 리스트에 저장한다. 한편, 정점(307)에 대한 선분(305)과의 수직 거리가 일정 거리 상수 값보다 클 경우에는 시작 점(301)과 정점(307) 사이의 좌표 데이터, 정점(307)과 끝 점(303) 사이의 좌표 데이터를 대상으로 상기한 과정을 반복하여 새로운 정점을 탐색한다.
본 발명의 일실시예는 시작 점과 끝 점, 그리고 하나의 정점을 찾아 꺾임 제스처를 인식할 수 있다. 즉, 상기한 Ramer Douglas Peucker 알고리즘에서 최초 과정 즉, 시작 점과 끝 점 사이에서 하나의 정점을 찾는 과정만을 수행하여 세 점이 이루는 형태로부터 꺾임 제스처를 인식할 수 있다.
도 4를 참조하면, 좌표 추출부(110)는 입력 이벤트에 의한 좌표 데이터에서 시작 점(401)과 끝 점(403)을 추출한 후 시작 점(401)과 끝 점(403) 사이에 존재하는 좌표 데이터 중 시작 점(401)과 끝 점(403)을 잇는 선분(405)과의 수직 거리(D)가 가장 큰 점 즉, 정점(407)을 추출한다. 이때, 좌표 추출부(110)는 정점(407)이 선분(405)과의 수직 거리(D)가 일정 거리 상수 값보다 클 경우 꺾임 제스처를 인식하는데 사용 가능한 정점인 것으로 판단한다. 한편, 좌표 추출부(110)는 정점(407)이 선분(405)과의 수직 거리(D)가 일정 거리 상수 값보다 작을 경우 꺾임 제스처를 인식하는데 사용 불가능한 정점인 것으로 판단하여 정점(407)을 무시하고 시작 점(401)과 끝 점(403)을 이용하여 일반 제스처를 인식하도록 한다.
제스처 인식부(130)는 좌표 추출부(110)로부터 추출된 시작 점, 끝 점 및 정점으로부터 꺾임 제스처의 형태를 인식하는 역할을 수행한다. 제스처 인식부(130)는 시작 점과 끝점을 정점을 거쳐 연결하는 선의 형태에 따라 꺾임 제스처의 형태를 인식할 수 있다. 상기 제스처의 형태를 인식하기 위해서는 시작 점과 끝 점을 기준으로 정점이 어디에 위치하느냐에 따라 <, >, ∧, ∨의 형태를 가지는 꺾임 제스처를 인식할 수 있다.
도 5를 참조하면, 제스처 인식부(130)는 정점(M)에서 시작 점(S)으로 향하는 방향 벡터(이하, '시작 벡터'라 칭함)(A)와, 정점(M)에서 끝 점(E)으로 향하는 방향 벡터(이하, '끝 벡터'라 칭함)(B)를 구한다. 이어, 제스처 인식부(130)는 시작 벡터(A)와 끝 벡터(B)의 벡터 곱(C)을 구한 후 벡터 곱(C)에서 x축에 대한 벡터 값(C.x) 또는 y축에 대한 벡터 값(C.y)에 따라 정점(M)의 위치(왼쪽, 오른쪽, 위쪽, 아래쪽)를 판단할 수 있다. 제스처 인식부(130)는 정점(M)의 위치를 판단함으 로써 꺾임 제스처의 형태(<, >, ∧, ∨)를 인식할 수 있다.
기능 실행부(150)는 제스처 인식부(130)에서 인식된 제스처에 해당하는 기능을 실행한다. 본 발명의 일실시예는 ←, →, ↑, ↓와 같이 정점이 존재하지 않는 형태의 일반 제스처와, <, >, ∧, ∨와 같이 정점이 존재하는 형태의 꺾임 제스처를 구분하여 인식한 후 인식된 형태의 제스처에 해당하는 기능을 수행할 수 있다.
꺾임 제스처를 적용하는 과정에서 시스템의 종류나 성능에 따라 전혀 다른 제스처로 인식되는 경우가 발생할 수 있다. 도 6은 ∨ 형태의 꺾임 제스처에 의한 입력 이벤트의 좌표 데이터를 도시한 것이다. 여기서, 'Down'은 좌표 데이터의 시작 점을 나타내는 이벤트, 'Up'은 좌표 데이터의 끝 점을 나타내는 이벤트, 'Move'는 시작 점과 끝 점 사이에 존재하는 점들을 나타내는 이벤트를 의미한다.
Down/Move/Up 이벤트가 확실하게 구분될 경우 Up 이벤트에서 제스처 인식이 이루어지나, 강압식 터치 방식 등을 사용하는 시스템의 경우 제스처가 입력되는 중간에 원하지 않는 Up 이벤트가 발생할 수 있다.
도 6에서 좌측(경우 1)과 우측(경우 2)의 좌표 데이터는 동일한 꺾임 제스처의 형태를 가진다. 그러나, 경우 1은 제스처 입력 동안에 Up 이벤트가 발생하지 않기 때문에 ∨ 형태의 꺾임 제스처로 인식된다. 한편, 경우 2는 제스처 입력 동안 원하지 않는 Up 이벤트가 발생하므로 첫번째 Up 이벤트에 대한 제스처와, 두번째 Up 이벤트에 대한 제스처 즉, 두 가지의 형태의 제스처로 인식될 수 있다. 이러한 문제를 해결하기 위해 본 발명의 일실시예는 첫번째 Up 이벤트가 발생하는 시 점에 인식된 제스처를 적용하지 않고 최종 Up 이벤트까지 인식된 제스처를 누적한 후에 제스처 간의 우선 순위를 이용하여 판단된 제스처를 적용할 수 있다.
꺾임 제스처의 우선순위가 일반 제스처의 우선순위 보다 높다는 가정에서 첫번째 Up 이벤트에 대한 제스처가 일반 제스처의 형태이고 두번째 Up 이벤트에 대한 제스처가 꺾임 제스처의 형태일 경우 두번째 Up 이벤트에 의한 제스처를 최종 인식된 제스처로 판단하여 두번째 Up 이벤트의 제스처에 해당하는 기능을 수행한다.
본 발명의 일실시예는 사용자가 자신이 입력한 제스처의 적용 여부를 확인할 수 있도록 제스처 인식부(130)에서 인식된 제스처의 이동 경로 및 제스처와 관련된 심볼을 표시하는 제스처 디스플레이 기능을 수행한다.
제스처 표시부(151)는 제스처의 이동 경로를 디스플레이 하는 역할을 수행하고, 심볼 표시부(153)는 제스처와 관련된 심볼 또는 제스처에 해당되는 기능과 관련된 심볼을 표시하는 역할을 수행한다. 특히, 제스처 표시부(151)는 텍스처 맵핑 기술 또는 애니메이션 기술을 이용하여 입력 이벤트에 의한 좌표 데이터 상에 제스처의 이동 경로를 디스플레이 한다.
텍스처 맵핑 기술에 의한 제스처 디스플레이 과정은 다음과 같다.
제스처 표시부(151)는 입력 이벤트에 의한 좌표 데이터에서 서로 인접한 두 지점 간에 폴리곤을 각각 생성한 후 제스처의 이동 경로를 나타내기 위해 복수의 이미지로 구성된 텍스처를 상기 생성된 폴리곤에 맵핑한다. 도 7을 참조하면, 폴리곤을 생성하기 위해서는 서로 인접한 두 지점 즉, 이전 위치의 좌표 데이터(이 하, '선 지점'이라 칭함)(701)와 현재 위치의 좌표 데이터(이하, '후 지점'이라 칭함)(703)를 이용한다. 먼저, 선 지점(701)과 후 지점(703) 간의 거리를 통해 폴리곤 생성 여부를 결정하게 되는데, 예를 들어, 텍스처를 구성하는 하나의 이미지가 32*32의 사이즈를 가질 경우 폴리곤 생성 여부를 판단하는 거리는 32 픽셀로 결정될 수 있다. 즉, 선 지점(701)과 후 지점(703)의 거리가 일정 거리 이상일 경우 선 지점(701)과 후 지점(703) 사이에 폴리곤을 생성하기로 결정한다. 이어, 선 지점(701)에서 후 지점(703)으로 향하는 단위 방향 벡터를 구한 후 선 지점(701)과 후 지점(703)에서 단위 방향 벡터만큼 각각 90도 회전시킨다. 이때, 단위 방향 벡터만큼 90도 회전 시킨 지점의 좌표 데이터 즉, 선 지점(701)과 후 지점(703)의 위/아래에 네 개의 점을 구할 수 있으며 네 개의 점을 이용하여 폴리곤(705)을 구성할 수 있다. 그리고, 제스처 표시부(151)는 상기한 과정을 통해 생성된 폴리곤의 폭에 따라 텍스처를 패턴 방식으로 맵핑시킨다. 예를 들어, 도 8과 같이 32*32로 된 5장의 이미지로 구성된 텍스처(801)를 사용할 경우 제스처의 진행 방향에 따라 입력 이벤트에 의한 좌표 데이터 상에 생성된 폴리곤에 텍스처(801)의 이미지를 순차적으로 맵핑 시킨다. 이때, 제스처 표시부(151)는 폴리곤의 생존 시간에 따라 상기 맵핑된 텍스처의 이미지를 차례로 변경한다. 폴리곤 1이 생존 시간이 가장 길고 제스처의 진행 방향으로 갈수록 폴리곤의 생존 시간이 짧아진다. 본 발명의 일실시예는 폴리곤이 생성되고 경과된 시간 즉, 생존 시간에 따라 텍스처의 이미지를 변경함으로써 제스처의 이동 경로를 나타내는 텍스처가 시간 경과에 따라 서서히 사라지는 효과를 표현할 수 있다. 본 발명의 일실시예는 제스처의 적용 여부가 확인 가능하고 제스처에 의한 결과를 빠르게 수행해야 하므로 결과를 실행하기까지 걸리는 시간이 동일해야 하므로 생존 시간을 이용한 방식으로 제스처의 이동 경로에 대한 디스플레이를 수행한다.
애니메이션 기술에 의한 제스처 디스플레이 과정은 다음과 같다.
제스처 표시부(151)는 통상 게임에서 애니메이션 효과를 주기 위해 사용하던 방식으로 제스처의 이동 경로를 표시할 수 있다. 도 9를 참조하면, 본 발명의 일실시예는 제스처의 이동 경로를 나타내기 위한 애니메이션으로 프레임 별 이미지의 위치가 다른 스프라이트 이미지(901)를 이용할 수 있다. 도 9에 도시한 바와 같이, 제스처 표시부(151)는 입력 이벤트에 의한 좌표 데이터 내에서 하나의 오브젝트에 프레임 마다 이미지의 좌표를 다르게 적용함으로써 제스처의 이동 경로에 대한 디스플레이를 수행할 수 있다.
본 발명의 일실시예에 따른 제스처 기반 사용자 인터페이스 시스템은 내비게이션 시스템의 입력 수단으로 적용될 수 있다. 내비게이션 시스템은 기존에 사용하던 일반 제스처(←, →, ↑, ↓, 터치)에 새로운 형태의 꺾임 제스처(<, >, ∧, ∨)를 추가하여 사용할 수 있다. 일반 제스처는 디스플레이 중인 지도 화면의 제어와 관련된 기능, 예를 들어, 지도 위치 이동(터치), 지도 확대(↓)/축소(↑), 현 위치 이동(←, →) 등의 기능이 설정될 수 있다. 또한, 꺾임 제스처는 내비게이션 시스템에서 제공하는 메뉴로의 이동과 관련된 기능, 예를 들어, 집으로(∧), 자주 가는 곳(∨), 최근 목적지(<), 경로 취소(>) 등의 기능이 설정될 수 있다. 꺾임 제스처의 경우 사용자에 의해 자주 사용되는 메뉴, 특히 경로 설정/취소/변경 과 관련된 메뉴가 설정될 수 있다. 본 발명의 일실시예는 제스처의 특성에 따라 인식 결과(제스처에 해당하는 기능)의 실행 시점을 조절할 수 있다. 일반 제스처는 제스처를 인식하면서 동시에 인식 결과를 실행하고 꺾임 제스처는 제스처 인식이 완료된 후에 인식 결과를 실행한다.
내비게이션 시스템에 적용된 제스처 기반 사용자 인터페이스 시스템은 제스처 간의 우선 순위를 표 1과 같이 정의할 수 있다.
기능(제스처 형태) |
우선순위 |
메뉴 기능(<, >, ∧, ∨) |
0 |
현 위치 이동(←, →) |
1 |
지도 확대(↑)/지도 축소(↓) |
2 |
지도 위치 이동(터치) |
3 |
None |
4 |
도 6을 참조하여 설명한 바와 같이, 내비게이션 시스템에 적용된 제스처 기반 사용자 인터페이스 시스템은 제스처를 인식하는 과정에서 원하지 않는 Up 이벤트로 인해 두 개 이상의 제스처가 입력될 경우 제스처 간의 우선 순위를 비교하여 우선 순위가 높은 제스처를 최종 제스처로 판단한다. 즉, 제스처를 입력하는 과정에서 원하지 않는 Up 이벤트가 발생함으로 인해 꺾임 제스처가 일반 제스처로 인식되는 경우가 자주 발생하게 되므로 꺾임 제스처를 일반 제스처에 비해 우선 순위를 높게 설정한다.
본 발명의 일실시예에 따른 제스처 기반 사용자 인터페이스 시스템이 적용된 내비게이션 시스템은 제스처를 인식하는 과정에서 제스처의 이동 경로와 심볼을 디스플레이 할 수 있다.
도 10을 참조하면, 사용자가 일반 제스처를 입력할 경우 내비게이션 화면 상에 사용자로부터 입력되는 일반 제스처의 이동 경로(101) 및, 일반 제스처의 기능과 관련된 심볼(103)을 표시할 수 있다. 또한, 도 11을 참조하면, 사용자가 꺾임 제스처를 입력할 경우 내비게이션 화면 상에 사용자로부터 입력되는 꺾임 제스처의 이동 경로(111) 및 꺾임 제스처의 기능과 관련된 심볼(113)을 표시할 수 있다. 제스처의 이동 경로는 입력 이벤트에 의한 좌표 데이터 상에 표시하고 제스처의 기능과 관련된 심볼은 제스처의 이동 경로와 인접한 위치에 표시할 수 있다.
도 12는 본 발명의 일실시예에 따른 제스처 기반 사용자 인터페이스 방법의 전 과정을 도시한 도면이다. 여기서, 제스처 기반 사용자 인터페이스 방법은 도 1에 도시한 사용자 인터페이스 시스템에 의해 실행될 수 있다.
본 발명의 일실시예에 따른 제스처 기반 사용자 인터페이스 방법은 좌표 추출부(110)를 통해 제스처 기반의 입력 이벤트에 의한 좌표 데이터를 추출한다(S1201). 특히, 본 발명의 일실시예는 입력 이벤트에 의한 좌표 데이터에서 시작 점과 끝 점을 추출한 후 시작 점과 끝 점 사이에 존재하는 좌표 데이터 중 시작 점과 끝 점을 잇는 선분과의 수직 거리가 가장 큰 정점을 추출한다.
본 발명의 일실시예에 따른 제스처 기반 사용자 인터페이스 방법은 제스처 인식부(130)를 통해 상기 시작 점과 끝 점을 정점을 거쳐 연결하는 선의 형태로부터 사용자가 입력한 제스처의 형태를 인식한다(S1202). 본 발명의 일실시예는 상기 시작 점과 끝 점을 잇는 선분을 기준으로 정점이 어디에 위치하느냐에 따라 새로운 형태인 꺾임 제스처(<, >, ∧, ∨)를 인식할 수 있다.
본 발명의 일실시예에 따른 제스처 기반 사용자 인터페이스 방법은 기능 실행부(150)를 통해 상기 인식된 제스처에 해당하는 기능을 수행한다(S1203). 아울러, 본 발명의 일실시예는 사용자가 자신이 입력한 제스처의 적용 여부를 확인할 수 있도록 제스처를 인식하는 과정(S1202)을 수행하면서 동시에 제스처의 이동 경로를 표시할 수 있다. 본 발명의 일실시예는 텍스처 맵핑 기술 또는 애니메이션 기술을 이용하여 입력 이벤트에 의한 좌표 데이터 상에 텍스처 또는 애니메이션 이미지를 맵핑함으로써 제스처의 이동 경로를 표시할 수 있다. 또한, 본 발명의 일실시예는 사용자가 자신이 입력한 제스처의 기능을 쉽게 확인할 수 있도록 제스처에 해당하는 기능과 관련된 심볼을 상기 이동 경로와 함께 표시할 수 있다.
따라서, 본 발명의 일실시예는 새로운 형태의 제스처를 인식할 수 있는 사용자 인터페이스를 제공함으로써 보다 다양한 기능을 제스처에 설정하여 사용할 수 있다. 또한, 본 발명의 일실시예는 사용자가 입력한 제스처의 이동 경로와 심볼을 표시하는 제스처 디스플레이 기능을 제공함으로써 사용자가 입력한 제스처의 형태 및 적용 여부를 쉽게 확인할 수 있다.
본 발명의 실시예들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독 가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.