상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 입력 장치는 외부 영상에 관한 움직임 벡터를 추출하는 영상 처리 모듈과, 하우징의 움직임을 감지하고, 상기 하우징의 자세를 추정하는 움직임 감지 모듈과, 상기 하우징의 움직임이 감지된 경우에 상기 추정된 자세를 이용하여 상기 움직임 벡터를 보정하는 제어 모듈 및 상기 보정된 움직임 벡터를 전송하는 송신 모듈을 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 입력 장치는 외부 영상에 관한 움직임 벡터를 추출하는 영상 처리 모듈과, 하우징의 움직임을 감지하고, 상기 하우징의 자세를 추정하는 움직임 감지 모듈과, 상기 하우징의 움직임이 감지된 경우에 상기 추정된 자세를 이용하여 상기 움직임 벡터를 보정하는 제어 모듈 및 상기 보정된 움직임 벡터에 대응하여 포인터를 이동시키는 디스플레이 수단을 포함한다.
또한, 상기 목적을 달성하기 위하여, 본 발명의 실시예에 따라 입력 장치의 이동 정보를 제공하는 방법은 외부 영상에 관한 움직임 벡터를 추출하는 (a) 단계 와, 입력 장치의 움직임을 감지하고, 상기 입력 장치의 자세를 추정하는 (b) 단계와, 상기 입력 장치의 움직임이 감지된 경우에 상기 추정된 자세를 이용하여 상기 추출된 움직임 벡터를 보정하는 (c) 단계 및 상기 보정된 움직임 벡터를 제공하는 (d) 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.
이하, 본 발명의 실시예들에 의하여 입력 장치 및 상기 입력 장치의 이동 정보를 제공하는 방법을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하 는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑제되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
본 발명의 실시예에서 사용되는 용어 중 '디스플레이 장치'는 입력 장치의 움직임에 대응하는 포인터를 디스플레이하는 장치를 의미한다.
도 2는 본 발명의 일 실시예에 따른 시스템을 개략적으로 나타내는 예시도이 다.
도 2를 참조하면, 본 발명에 따른 시스템은(200) 포인터(290)를 디스플레이하는 디스플레이 장치(2150)와 원격으로부터 포인터(290)의 이동을 제어하는 입력 장치(300)를 포함한다.
또한, 입력 장치(300)의 움직임과 자세를 나타내기 위한 디바이스 좌표계(230)가 도시되어 있는데, 도 2에서는 3개의 축(Xb, Yb, Zb)을 이용하여 디바이스 좌표계(230)가 구성되고 있음을 나타내고 있다. 그러나, 이는 예시적인 것으로서, 입력 장치(300)움직임과 자세를 나타낼 수 있는 좌표계라면 본 발명에서의 적용이 가능하다. 여기에서 첨자 'b'은 입력 장치에서의 좌표계임을 나타내는 것이다.
한편, 디바이스 좌표계(230)에 대응하여 디스플레이 장치(250)를 기준으로 하는 좌표계를 설정할 수 있는데, 이를 디스플레이 좌표계(240)라 칭하기로 한다. 여기에서 첨자 'n'은 디스플레이 장치에서의 좌표계임을 나타내는 것이다.
또한, 도 2에서는 디스플레이 장치(250)에서의 포인터 좌표를 나타내기 위한 포인터 좌표계(270)가 도시되어 있는데, 2개의 축(Xd, Yd)을 이용하여 포인터 좌표계(270)가 구성되고 있음을 나타내고 있다. 그러나, 이는 예시적인 것으로서, 디스플레이 장치(250)에서의 포인터 좌표를 나타낼 수 있는 좌표계라면 본 발명에서의 적용이 가능하다.
사용자가 입력 장치(300)를 잡고 디바이스 좌표계(230)를 구성하는 임의의 축을 중심으로 회전하면, 입력 장치(300)는 입력 장치(300)에 탑재된 카메라, 이미 지 센서와 같은 영상 입력 수단에 의해 주위의 영상을 입력 받고, 탑재된 관성 센서에 의해 자신의 움직임에 따른 각속도 및 가속도를 감지한다.
그리고 나서, 입력 장치(300)는 자신의 움직임이 있었다고 판단된 경우, 입력받은 영상과 감지된 각속도 및 가속도를 기초로 하여 자신의 움직임에 대한 이동 정보를 디스플레이 장치(250)로 전송한다.
디스플레이 장치(250)는 입력 장치(300)로부터 수신한 입력 장치(300)의 이동 정보에 대응하여 포인터(290)의 위치를 이동시키게 된다.
도 3는 본 발명의 일 실시예에 따른 입력 장치의 구성을 나타내는 블록도이다.
도 3을 참조하면, 입력 장치(300)는 영상 처리 모듈(305)과, 제어 모듈(340)과, 움직임 감지 모듈(350) 및 송신 모듈(360)을 포함한다.
영상 처리 모듈(305)은 영상 수신 모듈(310), 영상 저장 모듈(320) 및 움직임 벡터 추출 모듈(330)을 포함하며, 이들 모듈들에 의해 영상을 수신하여 움직임 벡터를 추출한다.
움직임 감지 모듈(350)은 하우징에 해당하는 입력 장치(300)의 움직임을 감지하고 입력 장치(300)의 자세를 연산하여 추정한다. 움직임 감지 모듈(350)은 가속도 센서 또는 각속도 센서에 의해 구현될 수 있다.
제어 모듈(340)은 입력 장치(300)의 움직임에 의한 자세 정보를 기초로 하여 영상 처리 모듈(305)에 의해 추출된 움직임 벡터를 보정한다.
송신 모듈(360)은 보정된 움직임 벡터 정보를 입력 장치(300)의 이동 정보로 서 디스플레이 장치로 전송한다.
이 때, 본 발명에 대한 실시예에서 사용되는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 모듈들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다.
이하, 도 3에 도시된 각 모듈들의 동작을 구체적으로 설명하도록 한다.
우선 영상 수신 모듈(310)은 렌즈 및 고체 촬상 소자를 이용하여 영상을 캡쳐하고, 영상 저장 모듈(320)은 캡쳐된 영상을 메모리에 프레임 단위로 저장한다.
그리고 나서, 움직임 벡터 추출 모듈(330)은 전후 프레임을 비교하여 영상의 움직임 벡터를 추출한다. 이 때, 움직임 벡터를 추출하는 방법은 한국공개특허공보 제1997-0019390호에 개시된 내용을 참조할 수 있다.
한편, 움직임 감지 모듈(350)은 입력 장치(300)의 움직임을 감지하여 '움직임 정보' 및 '자세 정보'를 제어 모듈(340)로 제공한다.
이 때, '움직임 정보'는 입력 장치(300)가 실제로 움직였는지를 나타내는 정보로서, 가속도 센서 또는 각속도 센서에 의해 측정될 수 있다. 예를 들어, 가속도 센서 또는 각속도 센서에 의해 측정된 가속도 값 또는 각속도 값이 움직임 정보로서 제어 모듈(340)로 제공될 수 있다. 이 경우, 제어 모듈(340)은 움직임 정보가 이미 설정된 범위 내에 속하는 경우에는 입력 장치(300)가 움직이지 않는 것으로 판단하여 움직임 벡터 추출 모듈(330)에 의해 추출된 움직임 벡터를 송신 모듈(360)로 전달하지 않는다. 즉, 입력 장치(300)의 움직임이 없기 때문에 입력 장치(300)의 이동 정보를 송신 모듈(360)을 통하여 디스플레이 장치로 전송할 필요가 없는 것이다.
한편, '자세 정보'는 입력 장치(300)의 자세를 나타내는 정보로서, 예를 들어 3축 가속도 센서로부터 입력 장치(300)의 중력 방향에 대한 초기 자세를 계산하고, 상기 초기 자세와 3축 각속도 센서로부터 측정된 각속도 정보를 이용하여 최종 자세를 계산할 수 있다. 이 때, 기준이 되는 자세는 도 2에 도시된 디스플레이 장치(250)를 바라보는 자세 즉, 디스플레이 좌표계(240)를 기준으로 하는 자세로 할 수 있다. 자세 정보를 계산하는 구체적인 방법에 대해서는 후술하기로 한다.
제어 모듈(340)은 움직임 감지 모듈(350)로부터 제공받은 움직임 정보에 의해 입력 장치(300)가 움직였다고 판단하면, 움직임 감지 모듈(350)로부터 제공받은 자세 정보를 기초로 하여 움직임 벡터 추출 모듈(330)에 의해 제공되는 움직임 벡 터를 보정한다. 이러한 보정에 의하여 입력 장치(300)의 자세가 기준 자세에서 회전되어 있더라도 디스플레이 장치의 화면 상의 포인터는 사용자가 원래 의도한 방향으로 움직일 수 있게 되는 것이다. 이 때, 도 2에 도시된 디스플레이 장치(250)를 바라보는 자세 즉, 디스플레이 좌표계(240)를 기준으로 하는 자세를 기준 자세로 취할 수 있다.
제어 모듈(340)은 보정된 움직임 벡터 정보를 송신 모듈(360)로 제공하고, 송신 모듈(360)은 상기 보정된 움직임 벡터 정보를 입력 장치(300)의 이동 정보로서 디스플레이 장치로 전송하게 되는 것이다. 이 때, 바람직하게는 상기 이동 정보는 수직 방향의 움직임 벡터와 수평 방향의 움직임 벡터를 포함할 수 있다.
도 4는 본 발명의 일 실시예에 따른 움직임 감지 모듈의 구성을 나타내는 블록도이다.
도 4를 참조하면, 움직임 감지 모듈(350)은 각속도 감지 모듈(352), 가속도 감지 모듈(354), 자세 연산 모듈(356), 신호 변환 모듈(358)을 포함한다.
각속도 감지 모듈(352)은 하우징에 해당하는 입력 장치(300)의 움직임이 있는 경우에 도 2에 도시된 디바이스 좌표계(230)에서의 X, Y, Z 축을 회전축으로 하여 각각의 회전 정보, 예컨대 회전 각속도를 감지하고, 가속도 감지 모듈(354)은 입력 장치(300)의 움직임이 있는 경우에 디바이스 좌표계(230)에서의 X, Y, Z 축 방향에 대한 각각의 가속도를 감지한다.
자세 연산 모듈(356)은 가속도 감지 모듈(354)에 의해 감지된 각각의 가속도 정보를 이용하여 입력 장치(300)의 자세를 연산한다. 입력 장치(300)의 자세를 나 타내는 방법으로서 롤각(roll angle), 피치각(pitch angle), 요각(yaw angle)을 이용할 수 있으며, 여기에서는 '제1 자세 정보'라고 칭하기로 한다.
신호 변환 모듈(358)은 자세 연산 모듈(356)에 의해 연산된 제1 자세 정보를 이용하여 각속도 감지 모듈(352)에 의해 감지된 디바이스 좌표계(230)에서의 각속도 정보를 제2 자세 정보 즉, 디스플레이 좌표계(240)에서의 각속도 정보로 변환시킨다.
움직임 감지 모듈(350)을 구성하는 각 모듈들의 동작을 도 5에 도시된 플로우 차트를 이용하여 설명하도록 한다.
우선 각속도 감지 모듈(352)과 가속도 감지 모듈(354)에 의해 움직이는 입력 장치(300)의 각속도 및 가속도를 감지한다(S510).
이를 위해, 각속도 감지 모듈(352)은 입력 장치(300)가 도 2에 도시된 디바이스 좌표계(230)의 Xb축, Yb축 그리고 Zb축을 중심으로 회전하는 각속도를 감지한다. 이를 위하여 각속도 감지 모듈(352)은 각각의 축에 대한 회전 각속도를 감지하는 센서를 포함할 수 있으며, 이러한 센서의 예로서 자이로스코프(gyroscope) 센서가 이용될 수 있다. 이 때, 각속도 감지 모듈(352)에 의해 감지된 각속도를 wb라고 나타낼 수 있고, wb는 [수학식 1]과 같이 표현될 수 있다.
wb = [wbx wby wbz ]T
수학식 1에서 wbx, wby, wbz는 각각 X축, Y축 그리고 Z축을 중심으로 회전하는 각속도를 나타낸다.
한편, 각속도 감지 모듈(352)에 의해 움직이는 입력 장치(300)의 각 축에 대한 각속도가 감지되는 동안, 가속도 감지 모듈(354)은 디바이스 좌표계에서의 X, Y, Z 축 방향에 대한 각각의 가속도를 감지한다. 이 때, 가속도 감지 모듈(354)에 의해 감지된 가속도를 ab라고 나타낼 수 있고, ab는 [수학식 2]과 같이 표현될 수 있다.
ab = [abx aby abz ]T
수학식 2에서 abx, aby, abz는 각각 X축, Y축 그리고 Z축 방향에 대한 가속도를 나타낸다.
가속도 감지 모듈(354)에 의해 가속도가 감지되면, 자세 연산 모듈(356)은 감지된 가속도 정보를 이용하여 입력 장치(300)의 초기 자세를 나타내는 자세 정보, 즉 제1 자세 정보를 연산한다(S520). 이 때, 상기 제1 자세 정보는 입력 장치(300)의 초기 롤각(roll angle), 피치각(pitch angle) 및 요각(yaw angle)으로 나타낼 수 있으며, 각각, 'φ0', 'θ0' 그리고 'Ψ0'로 표시하기로 한다.
자세 연산 모듈(356)은 [수학식 3] 내지 [수학식 5]를 이용하여 감지된 가속도 정보로부터 입력 장치(300)의 초기 자세 정보를 얻을 수 있다.
수학식 3 및 수학식 4에서 'atan2(A, B)' 함수는 지정된 A, B 좌표에서 아크 탄젠트값을 구하는 함수를 나타내며, 요각(yaw angle)에 해당하는 'Ψ0'값에 대해서는 후술하기로 한다.
위와 같은 방식에 따라, 입력 장치(300)의 제1 자세 정보가 구해지면 신호 변환 모듈(356)은 각속도 감지 모듈(352)에 의해 감지된 각속도 정보와 상기 제1 자세 정보를 이용하여 디바이스 좌표계(230)에서의 각속도 wb를 디스플레이 좌표계(240)에서의 각속도 wn로 [수학식 5]에 의해 변환할 수 있다(S530). 이 때, 각속도 wn는 제1 자세 정보를 초기값으로하여 시간에 대한 1차 적분을 통하여 제2 자세 정보(φ', 'θ' 그리고 'Ψ')로 될 수 있다.
이 때, w
n 는 디스플레이 좌표계(240)에서의 각속도를 나타내고, w
n = [w
nx w
ny w
nz ]
T 와 같이 나타낼 수 있으며, w
b는 수학식 1에서 나타내고 있다. 또한,
는 [수학식 6]과 같이 표현될 수 있다.
수학식 5와 수학식 6을 통해 알 수 있듯이, 사용자가 입력 장치(300)를 잡는 위치에 관계없이 디바이스 좌표계(230)로부터 디스플레이 좌표계(240)로의 변환이 가능하게 된다.
한편, 위 수학식 6의 연산을 보다 간단히 하기 위해 상기 자세 정보 중, 요각(yaw angle)에 해당하는 Ψ값을 0으로 할 수도 있는데, 이러한 경우
는 수학식 7과 같이 정리될 수 있다.
또한, 보다 정밀한 디스플레이 좌표계(230)에서의 각속도 정보 계산을 위하여 가속도 감지 모듈(112)은 지구에서 발생하는 자기장의 흐름을 파악해 나침반처 럼 방위를 탐지할 수 있는 지자기센서를 더 포함할 수 있는데, 이 경우 가속도 감지 모듈(354)은 상기 지자기센서를 이용하여 방위의 변화량을 감지할 수 있고, 그 결과값을 자세 연산 모듈(356)에게 제공한다. 자세 연산 모듈(356)은 상기 결과값으로부터 요각(yaw angle)에 해당하는 Ψ값을 결정하고, 이를 신호 변환 모듈(358)로 제공하면, 신호 변환 모듈(358)은 방위 변화량에 따른 Ψ값을 수학식 6에 적용함으로써 디스플레이 좌표계(240)에서의 자세 정보, 즉 제2 자세 정보를 얻을 수 있게 된다.
위와 같은 방식에 의해 제2 자세 정보가 얻어지면, 제어 모듈(118)은 움직임 벡터 추출 모듈(330)에 의해 제공된 움직임 벡터를 상기 제2 자세 정보를 기초로 이동 또는 회전시킴으로써 추출된 움직임 벡터를 보정하게 된다.
그리고 나서, 제어 모듈(340)은 보정된 움직임 벡터를 입력 장치(300)의 이동 정보로 하여 송신 모듈(360)을 통하여 디스플레이 장치(250)로 전송하게 된다. 이 때, 보정된 움직임 벡터는 수직 방향의 움직임 정보와 수평 방향의 움직임 정보를 포함한다.
한편, 디스플레이 장치(250)에서는 상기 보정된 움직임 벡터에 대응하여 포인터 좌표계(270)에서의 포인터 좌표를 이동시키게 된다.
한편, 본 명세서에서는 입력 장치와 디스플레이 장치가 분리된 것을 예로 하여 설명을 하고 있으나, 휴대폰, PDA와 같이 입력 장치와 디스플레이 장치가 일체로 되어 형성되는 기기에도 단순한 설계 변경에 의해 적용될 수 있음은 해당 기술 분야에서의 통상의 지식을 가진 자에게는 자명하다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.