오늘날 컴퓨터의 사용이 대중화 되면서 키보드나 마우스와 같은 기존의 사용자 인터페이스에 비해 보다 편리하고 자연스러운 인터페이스에 대한 연구가 활발히 진행되면서, 최근 마이크로소프트의 동작 인식 모듈인 키넥트에 대한 관심이 높아지고 있다. 키넥트는 내장된 센서를 통해 신체의 주요 관절의 움직임 및 깊이 정보를 인식할 수 있으며 내장 마이크를 통해 간단한 음성인식도 가능하다. 본 논문에서는 OpenCV 라이브러리를 키넥트에 접목하여, 키넥트의 깊이 데이터, skeleton tracking, labeling알고리즘으로 손 영역 추출 및 움직임의 정보를 인식하여 가상 마우스와 가상 키보드를 구현하고, 음성인식을 통해 기존 입력 장치의 기능을 구현하는 것을 목표로 한다.
오늘날 컴퓨터의 사용이 대중화 되면서 키보드나 마우스와 같은 기존의 사용자 인터페이스에 비해 보다 편리하고 자연스러운 인터페이스에 대한 연구가 활발히 진행되면서, 최근 마이크로소프트의 동작 인식 모듈인 키넥트에 대한 관심이 높아지고 있다. 키넥트는 내장된 센서를 통해 신체의 주요 관절의 움직임 및 깊이 정보를 인식할 수 있으며 내장 마이크를 통해 간단한 음성인식도 가능하다. 본 논문에서는 OpenCV 라이브러리를 키넥트에 접목하여, 키넥트의 깊이 데이터, skeleton tracking, labeling 알고리즘으로 손 영역 추출 및 움직임의 정보를 인식하여 가상 마우스와 가상 키보드를 구현하고, 음성인식을 통해 기존 입력 장치의 기능을 구현하는 것을 목표로 한다.
As the use of computer has been popularized these days, an active research is in progress to make much more convenient and natural interface compared to the existing user interfaces such as keyboard or mouse. For this reason, there is an increasing interest toward Microsoft's motion sensing module c...
As the use of computer has been popularized these days, an active research is in progress to make much more convenient and natural interface compared to the existing user interfaces such as keyboard or mouse. For this reason, there is an increasing interest toward Microsoft's motion sensing module called Kinect, which can perform hand motions and speech recognition system in order to realize communication between people. Kinect uses its built-in sensor to recognize the main joint movements and depth of the body. It can also provide a simple speech recognition through the built-in microphone. In this paper, the goal is to use Kinect's depth value data, skeleton tracking and labeling algorithm to recognize information about the extraction and movement of hand, and replace the role of existing peripherals using a virtual mouse, a virtual keyboard, and a speech recognition.
As the use of computer has been popularized these days, an active research is in progress to make much more convenient and natural interface compared to the existing user interfaces such as keyboard or mouse. For this reason, there is an increasing interest toward Microsoft's motion sensing module called Kinect, which can perform hand motions and speech recognition system in order to realize communication between people. Kinect uses its built-in sensor to recognize the main joint movements and depth of the body. It can also provide a simple speech recognition through the built-in microphone. In this paper, the goal is to use Kinect's depth value data, skeleton tracking and labeling algorithm to recognize information about the extraction and movement of hand, and replace the role of existing peripherals using a virtual mouse, a virtual keyboard, and a speech recognition.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
이러한 연구들은 별다른 부가장치 필요 없이 사람을 관절 단위로 인식하는 시도가 상용화된 Kinect의 등장으로 더욱 활발해지고 있다. 본 논문에서는 Kinect에 OpenCV 라이브러리를 접목시켜, Kinect의 깊이 센서 및 Skeleton Tracking으로 실시간 손을 추적하고 Labeling 알고리즘을 통해 손가락 정보를 이용한 모션인식 기술 및 음성인식 기술을 이용해 윈도우를 제어하는 인터페이스 구현을 목표로 한다.
본 논문에서는 Kinect의 일정한 깊이 정보로 사용자의 손을 추출해 이를 이용한 손가락 및 제스처 인식에 대한 방법과 간편한 핸드마우스와 가상 키보드 및 음성인식 인터페이스 구현 방법을 제안하였다. 여러 가지 명령을 구현한 마우스 및 키보드 인터페이스 그리고 Kinect의 내장 Speech 엔진을 이용한 음성인식 조작을 통해그 유용성을 확인하였고 결론적으로 가장 범용적으로 사용되는 PC에서 Kinect를 이용해 쉽게 조작할 수 있음을 확인하였다.
본 논문에서는 두 번째 방법을 사용할 것인데 Labeling된 픽셀의 무게중심을 이용하면 Label 내에서 좌측 또는 우측으로 손의 크기나 모양이 바뀌고 치우쳐져 있더라도 그 중심점을 유지할 수 있어 손가락을 검출하는데 유리하기 때문이다.
본 연구에서는 Microsoft Speech Platform API를 통하여 Kinect에 내장되어 있는 SDK의 기본 Speech 엔진만을 사용하여 음성인식 처리 과정과 기본적인 음성인식 알고리즘을 이해하고자 하였다. 음성인식 처리과정은 KinectAudio DMO를 사용하여 Beam Forming을 구성하고 Kinect의 Audio Stream을 얻어와 Kinect Sensor가 오디오 검색 및 사운드의 위치를 찾아내도록 한다[10].
손 제스처와 모양을 인식하기 위해서는 크게두 가지 문제를 해결해야 하는데 첫 번째는 손 제스처를 잘 표현하는 특징을 선택하여 추출해야 하며 두 번째는 추출되어진 특징을 이용하여 제스처 분류를 하는 것이다. 본 연구에서는 이 문제를 해결하여 손 제스처를 인식하기 위해 Kinect Depth에 따른 거리로부터 손을 추적하며 추적된 손을 바탕으로 중심점을 구해 제스처를 분류하였다[4].
제안 방법
Depth Sensor를 통해 z축의 거리에 따른 손 영역 거리 정보 추정을 위해 Depth Range Max 를 정의하고 Range의 값에 따라 추출되어지는 영역을 관찰해보았다. (그림 3)은 같은 위치에서 Depth Range의 값을 각각 다르게 조절한 영상 들로 Range의 값이 변함에 따라 영상이 추출되는 영역이 달라짐을 확인할 수 있다.
Depth Value 및 Labeling을 이용해 손을 추출하여 마우스 커서의 단순한 이동이 아닌 마우스 이벤트를 발생시킬 수 있도록 손가락 정보를 이용하고자 추출된 손의 중심점을 기준으로 일정한 거리의 원을 그린다. 원의 크기는 추출된 손으로부터 모든 픽셀에 대해 (0, 0)부터 첫 번째로 흰색을 만나는 좌표와 손의 중심점 좌표 사이 길이의 2/3의 값으로 원이 그려지게 된다.
Depth의 거리에 따른 손 영역만을 추출하는 과정에서 다양한 모션 대신 사용자의 편의성을 고려하고자 오른쪽 한 손만을 사용하여 마우스 기능을 할 수 있도록 하고 왼손은 보조기능 역할을 할 수 있도록 구성하였다.
본 논문에서는 Kinect의 Depth를 이용하여 복잡하거나 단순한 배경의 영향을 받지 않고 Depth의 일정 거리 범위 내에서 Skeleton Tracking으로 손을 검출하고, 이진화 및 Labeling을 이용해 손을 추적한다. 일정 거리 이내의 손은 (그림 10)의 (a)처럼 명확하게 추출되지만, Depth의 일정 거리 범위를 벗어나면 (b)처럼 손의 형상이 불분명 하거나 추출되지 않는 문제점이 있다.
본 연구를 통해 Sample App인 Finger Drawing을 구현해 보았다. 손과 손가락의 움직임을 사용해 화면에 간단한 Drawing을 할 수있도록 구현한 것으로 (그림 11)의 (a), (b) 그리고 (c)의 손가락 개수가 한 개, 두 개, 세 개로 달라짐에 따라 색이 변하며 (d)의 주먹은 포인터 이동을 담당하고 (e)는 손가락 네 개가 되면 그림이 그려진 화면을 초기화하는 기능을 갖는다.
손동작의 검출 정확도 및 기능에 따른 인식률 평가는 4.1의 내용을 토대로 의 Depth의 일정 거리 범위 내에 손이 존재할 때와 의 일정 거리 범위 경계선 이상에서 손이 존재할 때의 인식률 평가로 이루어졌다.
위의 내용들을 토대로 추출된 손의 영상과 중심점을 기준으로 일정거리의 원으로 그려진 두 영상을 (그림 6)의 (c)에서 보이듯 AND 연산을 통해 Labeling을 하여 손가락의 개수를 추측할 수 있는 작업을 수행한다. Labeling을 수행하여 AND 연산의 결과물인 흰색 부분의 개수를 검출 하면 손목을 제외한 손가락의 개수를 확인할 수 있고 손동작이 바뀜에 따라 AND 연산의 결과가 달라지기 때문에 오른손의 움직임에 따라 Label 개수 또한 달라진다.
가상 키보드 구현 시 Windows의 포커스 이동 문제로 인해 한글을 입력할 때 한글이 각각의 자소로 분리되어 조합이 되지 않는 문제가 발생할 수 있다. 이러한 포커스 이동의 문제를 해결하기 위해서는 키보드 후킹 처리를 많이 하지만 본 논문에서는 가상 키보드 호출 시 키보드가 항상 Windows의 최상위에 있도록 하여 포커스의 이동으로 한글조합에 문제가 생기지 않도록 하였다.
이를 이용해 본 논문에서는 마우스로 프로그램을 실행시키기 어려운 경우를 가정하여 음성인식을 통해 키보드, 메모장, 인터넷 세 가지 프로그램을 실행시킬 수 있도록 하였다.
대상 데이터
Skeleton을 사용하기 위해서는 Skeleton Tracking이 필요한데 이는 Skeleton Tracking State의 세 가지 상태를 활용 하여 관절이 정확히 추적이 됐을 때에만 고려해서 실행시킬 수 있다. 본 연구에서는 두 번째 방법을 사용하여 상체 10개의 관절 포인터 중 HAND_RIGHT와 HAND_LEFT의 깊이 데이터가 추가된 3차원 정보와 2차원 좌표 정보를 사용하여 연구의 실험에 사용하였다[8].
실험에 사용된 영상은 Kinect Depth 영상으로 (그림 10)은 Kinect로부터 얻은 실시간 손 인식 결과를 보여준다.
성능/효과
Depth 깊이 Sensor를 이용한 객체 검출 평가시 일정 거리 사이에서는 객체를 세밀하게 검출 가능하기 때문에 핸드마우스 인식률이 평균 95.5%였지만, 경계선 이상의 거리에서는 평균 14.6%의 인식률을 보였다. 위 실험은 핸드마우스가 제대로 작동되기 위해서는 손이 항상 카메라에서 일정 범위 내에서만 존재해야 한다는 단점을 보여준다.
본 논문에서는 Kinect의 일정한 깊이 정보로 사용자의 손을 추출해 이를 이용한 손가락 및 제스처 인식에 대한 방법과 간편한 핸드마우스와 가상 키보드 및 음성인식 인터페이스 구현 방법을 제안하였다. 여러 가지 명령을 구현한 마우스 및 키보드 인터페이스 그리고 Kinect의 내장 Speech 엔진을 이용한 음성인식 조작을 통해그 유용성을 확인하였고 결론적으로 가장 범용적으로 사용되는 PC에서 Kinect를 이용해 쉽게 조작할 수 있음을 확인하였다.
키보드는 기본적으로 깊이 Sensor와 손가락 정보를 이용하여 가상 마우스를 구현했기 때문에 허공에 버튼이 있는 것처럼 누르는 동작 인식을 취하는 것이 가능하고, 좌 클릭의 인식률이 매우 높기 때문에 키보드의 모든 키가 제대로 눌리며 제 기능을 하는데 100%의 인식률을 보 였다.
후속연구
향후 연구에서는 보다 폭넓은 거리에서 더욱 다양하고 직관적인 간편한 제스처를 통한 PC와 사람간의 상호작용이 될 수 있도록 다방면으로 연구해야 할 것이다.
질의응답
핵심어
질문
논문에서 추출한 답변
키넥트의 기능은 무엇인가?
오늘날 컴퓨터의 사용이 대중화 되면서 키보드나 마우스와 같은 기존의 사용자 인터페이스에 비해 보다 편리하고 자연스러운 인터페이스에 대한 연구가 활발히 진행되면서, 최근 마이크로소프트의 동작 인식 모듈인 키넥트에 대한 관심이 높아지고 있다. 키넥트는 내장된 센서를 통해 신체의 주요 관절의 움직임 및 깊이 정보를 인식할 수 있으며 내장 마이크를 통해 간단한 음성인식도 가능하다. 본 논문에서는 OpenCV 라이브러리를 키넥트에 접목하여, 키넥트의 깊이 데이터, skeleton tracking, labeling 알고리즘으로 손 영역 추출 및 움직임의 정보를 인식하여 가상 마우스와 가상 키보드를 구현하고, 음성인식을 통해 기존 입력 장치의 기능을 구현하는 것을 목표로 한다.
Kinect는 어떻게 구성되어 있는가?
Kinect는 (그림 1)과 같이 RGB카메라의 Color Sensor, IR Emitter와 IR Depth Sensor, 4개의 Microphone Array 그리고 Sensor를 상하로 움직일 수 있도록 Tilt Motor 등으로 구성되어 있다. 이 Sensor들로 일반적인 RGB 카메라로 촬영 되는 영상(Color View)과 촬영된 영상의 깊이 정보를 나타내는 영상(Depth View) 그리고 검출된 사용자의 골격을 나타내는 영상 (Skeleton View) 정보를 나타낸다.
Kinect는 센서를 통해 어떤 정보를 나타내는가?
Kinect는 (그림 1)과 같이 RGB카메라의 Color Sensor, IR Emitter와 IR Depth Sensor, 4개의 Microphone Array 그리고 Sensor를 상하로 움직일 수 있도록 Tilt Motor 등으로 구성되어 있다. 이 Sensor들로 일반적인 RGB 카메라로 촬영 되는 영상(Color View)과 촬영된 영상의 깊이 정보를 나타내는 영상(Depth View) 그리고 검출된 사용자의 골격을 나타내는 영상 (Skeleton View) 정보를 나타낸다.
참고문헌 (10)
Bak Han-Hun, Choi Jun-Young, Park Jong-Il, Moon, Kwang-Seok, "A Study on Hand Region Detection for Kinect-Based Hand Shape Recognition", Journal of broadcast engineering, Vol.18, No.3, pp.393-400, 2013.
Jhou-Jiang, Laiwon Seo, Changbae Roh, "Study of KINECT based 3D Holographic and Gesture", Journal of Digital Contents Society, Vol.14, No.4, pp.411-417, Dec. 2013.
Song Ju-Young, Jo Yong-Beom, "A Implementation of Real-time Hand Gesture Recognition Using Embedded System", International SoC Design Conference, 2011.
Jo Seon-Young, Byun Hye-Ran, Lee Hee-Kyung, chajihun, "Hand Gesture Recognition From Kinect Sensor Data", Journal of Broadcast Engineering, Vol.17, No.3, pp.447-458, 2012.
Kim Gwam-Hyeong, Sung Hong-Gi, Sin Dong-Seok, "The Study of Input Interface Device on Windows Operating System Using Kinect", KIMICS Integrated Conference, pp.199-200, Fall 2011.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.