본 논문에서는 키넥트(Kinect)를 통해 획득한 깊이 영상에서 손가락의 모양을 인식하는 새로운 기법을 제안한다. 각도 변화에 강인하게 하기 위하여 입력 손 영상의 회전 보상 각도를 계산한 뒤 강체(rigid) 변환을 통하여 손 영상을 회전 변환시킨다. 회전 보상 각도를 계산하기 위하여 손 영상의 경계선을 추출한 뒤 경계선을 이루는 화소들의 좌표의 변화를 관찰한다. 제안하는 기법에서는 손가락 모양을 인식하기 위하여 손 영역에서 최 상단, 최 우측, 최 좌측 화소 좌표를 획득한 뒤, 손가락의 기하학적 특징에 착안하여 좌표들 사이의 거리 변화와 좌표들 사이의 각도변화 그리고 손 영역의 화소 면적을 이용하게 된다. 실험을 통해 제안하는 기법이 기존의 기법보다 성능이 우수한 것을 확인하였다.
In this paper, a new scheme to recognize a finger shape in the depth image captured by Kinect is proposed. Rigid transformation of an input finger shape is pre-processed for its robustness against the shape angle of input fingers. After extracting contour map from hand region, observing the change of contour pixel location is performed to calculate rotational compensation angle. For the finger shape recognition, we first acquire three pixel points, the most left, right, and top located pixel points. In the proposed algorithm, we first acquire three pixel points, the most left, right, and top located pixel points for the finger shape recognition, also we use geometrical features of human fingers such as Euclidean distance, the angle of the finger and the pixel area of hand region between each pixel points to recognize the finger shape. Through experimental results, we show that the proposed algorithm performs better than old schemes.
최근 들어 고전적 입력 장치인 키보드와 마우스를 사람의 신체적 동작으로 대체하는 기술인 HCI(Human Computer Interaction) 시스템에 대한 연구가 활발히 진행되고 있다. 동작 인식 기술은 사람과 컴퓨터간의 상호작용에 있어 매우 중요한 요소이다. 사람의 손은 사용자의 직관적인 생각을 효과적으로 표현 할 수 있기때문에 기존의 입력장치를 바꿀 수 있는 강력한 입력장치로 주목 받아 왔다. 현재 사람의 손동작 인식 기술은 HCI 시스템에서 큰 비중을 차지하고 있다. 최근 기술은 손동작 인식에 관해 발전되어 왔고 그 중에서 특히 손가락 모양을 인식하는 기법들이 활발히 연구되고 있다.
기존 방법 중에는 주성분 분석(principal component analysis)를 이용하는 방법[1], 템플릿 매칭(template matching)을 이용하는 방법[2], 손가락의 중심으로부터 원을 그려 손가락의 개수를 탐지하는 방법[3] 그리고 손가락 끝 선을 탐지하여 손가락의 개수를 직접 계산하는 방법[4-7] 등이 연구되어왔다. 주성분 분석을 이용하여 손가락 모델을 인식하는 방법은 손가락 모델을 인식하는 과정에서 연산량이 많고 비슷한 손가락 모양에 대해서는 저조한 인식률을 보인다는 문제점이 있다. 템플릿매칭을 이용하는 방법에서는 인식하고자 하는 손가락모델의 이진 템플릿 영상을 합성 한 뒤 입력 손 영상과의 비교를 통하여 손가락 모델을 인식한다. 이러한 기법은 각도 변화에 민감하여 입력 손 영상의 각도가 회전되었을 때 저조한 인식률을 보인다. 손가락의 중심으로부터 원을 그려 손가락의 개수를 탐지하는 방법과 손가락의 끝 선을 탐지하는 방법도 매 입력 영상마다 탐색 반경을 새로 획득해야 하기 때문에 연산량이 많다. 또한 탐색 반경을 획득 할 때 손가락의 절대적인 길이에만 의존하기 때문에 특정 손가락 모델에 대하여 저조한 인식률을 보이는 문제점이 있다. 이러한 연구 외에도 손가락의 윤곽선을 이용하는 방법[8], 손가락의 전체적인 형태를 이용하는 방법[9,10]과 은닉 마르코프 모델(hidden Markov model)을 이용하는 방법[11] 등이 연구되어 왔다.
기존의 기하학적 특징을 이용하는 방법[12]에서는 입력 손 영상의 각도 변화에 민감하여 높은 인식률을 위해서 정확한 입력 각도가 요구되었다. 이를 해결하기 위하여 제안하는 방법에서는 입력 손 영상이 회전되었다고 가정 한 뒤 회전 보상 각도를 계산하고 강체(rigid)변환을 통하여 각도 보상을 먼저 수행한다. 회전 보상각도를 계산하기 위하여 손 영상의 경계선을 추출한 뒤 경계선을 이루는 화소 좌표의 기울기 변화를 관찰한다. 계산된 회전 각도를 바탕으로 강체 변환을 수행한 뒤 지정된 손가락 모델로 분류한다. 본 논문에서는 다양한 실험을 통해 제안하는 기법이 기존 기법보다 성능이 우수한 것을 확인하였다.
본 논문의 2장에서는 입력 깊이 영상에서 손에 해당하는 영역을 획득하는 방법과 입력 손 영상에 대한 회전 각도 보상 방법에 대하여 소개하고 3장에서는 기하학적 특징을 이용한 손가락 인식 기법에 대하여 기술한다. 4장에서는 실험을 통하여 기존 기법들과 제안하는 기법의 성능 차이를 확인하고 5장에서 결론을 내린다.
키넥트(Kinect)는 적외선 센서를 이용하여 센서로부터 물체가 얼마나 떨어져 있는지를 판단하여 이를 깊이 영상으로 제공한다. 또한 마이크로소프트사에서 제공하는 개발 도구인 키넥트 SDK에서는 사람의 신체를 추상화하여 골격의 형태로 표현하는 기능을 제공한다.
획득한 골격 정보에는 사람의 손에 해당되는 화소 좌표 위치가 포함되며, 해당 화소의 좌표 위치는 손바닥의 중앙 부분에 위치하게 된다. 이를 이용하여 깊이 영상에서 사람의 손에 해당되는 영역을 획득 할 수 있다. 그림 1는 키넥트로부터 획득한 깊이 영상과 깊이 영상에서 손에 해당하는 영역을 보여주고 있다.
깊이 영상에서 손 영역만을 분리해 내기 위하여 손에 해당되는 화소 좌표를 군집화의 시작점으로 설정한다. 중심 화소를 기준으로 여덟 방향 탐색을 진행하면서 군집화를 진행한다. 이때 손 영역과 배경 영역의 경계지점에서는 깊이 영상의 화소 값의 기울기가 급격히 변하게 되고 이 지점에서 탐색을 멈춤으로써 손에 해당하는 영역을 배경영역에서 분리해 낼 수 있다. 이때 사람의 팔에 해당하는 영역은 손 영역과의 깊이 영상 화소 값의 기울기 변화가 급격하지 않아 팔에 해당하는 영역까지 계속 군집화를 진행하는 문제가 발생할 수가 있다. 이를 방지하기 위하여 군집화의 시작 화소 좌표의 수평축을 탐색 경계로 할당한다. 그림 2(a)는 군집화의 시작점과 군집화 탐색경계, 그림 2(b)는 추출된 손 영상의 이진화 영상을 보여준다.
그림 3은 본 논문에서 인식하고자 하는 다섯 가지 손가락 모델과 그에 따른 깊이 손 영상의 이진화 영상을 나타낸다. 제안하는 방법에서는 손가락의 기하학적 특징을 이용하여 손가락 모델을 인식하기 때문에 손가락 모델에 따라 손가락의 길이 혹은 모양 변화 등을 관찰하게 된다. 손 영상의 최 상단, 최 좌측, 최 우측 화소의 좌표를 획득하여 손 영역의 중심 좌표와 가상의 선분을 생성하고 유클리드 거리(Euclidean distance)를 측정하거나 각 선분 사이의 각도 차이를 관찰함으로써 손가락 모델을 인식한다.
손 모델의 정확한 인식을 위해서는 입력되는 손 영상의 방향이 그림 3과 같이 카메라와 최대한 수직이어야 한다. 입력 손 영상의 손가락 방향이 회전된 경우 인식률이 저하되는 문제가 발생하기 때문이다. 손 영상의 손가락 방향이 일정 각도 이상으로 틀어지게 되면 영상내부의 최 상단, 최 좌측, 최 우측의 위치가 바뀌게 되고, 바로 인식률 저하로 이어진다.
그림 4는 손가락 방향이 회전된 경우에 대한 손 영상과 그에 따른 최 상단(
그림 4의 5번 모델의 경우에는 손 영상의 회전 각도가 틀어짐에 따른 기하학적 모양의 변화가 타 모델에 비하여 비교적 적다는 특징을 보인다. 따라서 입력 손 영상의 회전 각도 보상을 하기 전에 입력 손 영상이 5번 모델인지 아닌지를 판단한다. 5번 모델의 경우는 손 깊이 영상을 감싸는 사각형의 넓이 대비 사각형 내의 유효 화소(그림 4의 노란색 화소 영역)의 비율이 상대적으로 높다는 특징을 지니기 때문에, 이러한 특징을 이용하여 손 깊이 영상을 감싸는 사각형의 면적(
여기서
표 1과 그림 5는 다섯 가지의 손가락 모델에 대한
[표 1.] 모델별 Sp/Srect 비율의 평균과 표준편차
모델별 Sp/Srect 비율의 평균과 표준편차
5번 모델을 제외한 나머지 손가락 모델인 1번부터 4번까지의 모델은 회전 변화에 따른 모양의 변화가 크기때문에 인식하기 위해서는 입력 손 영상에 대한 적절한 각도 보상 과정이 논의되어야 한다. 그림 6은 각도 보상에 대한 기술의 흐름도를 나타낸다.
손 영상에서 손가락에 해당하는 영역을 판단하기 위하여 굴곡점(curvature point)들을 검출한다. 검출된 굴곡점들을 토대로 손 영상이 얼마나 회전 되어있는지를 각도로 판단한 뒤, 산출된 각도만큼 강체(rigid) 변환을 수행한다. 손 영상에 대하여 팽창(dilation) 연산을 수행한 뒤, 해당 영상에서 원본 손 영상에 대한 차 연산을 통하여 윤곽선을 추출할 수 있다. 추출된 윤곽선은 시작점과 끝점이 동일한 폐곡선의 형태이며 손가락이라 판단 할 수 있는 지역적 굴곡점들을 검출하기 위하여 추출된 윤곽선을 따라 화소 좌표의 수직 좌표와 수평 좌표에 대한 기울기 변화를 관찰하게 된다.
그림 7은 추출된 윤곽선 영상과 화소 좌표의 기울기 변화를 관찰하는 과정을 보여준다. 좌측 최 상단 화소의 좌표를 시작으로 탐색을 진행하며, 현재 선택된 화소의 좌표를 기준으로 4방향 인접성(4-adjacency)을 만족하는 화소에 대하여 화소 좌표의 기울기 변화를 계산한다. 처음 시작 화소의 위치인
여기서
손 윤곽선 영상에서 화소의 좌표 기울기 |
손가락에 해당하는 영역을 검출할 때 단순히 화소 좌표들의 기울기 변화를 관찰하기 때문에 예상하지 않은 문제점이 발생할 수 있다. 그림 9와 같은 경우가 대표적인 예이다. 손의 중심좌표의 수평축 좌표 부근에서 발견된다. 이 경우 검출된 세 좌표의 분포가 모두 손가락 영역의 조건을 만족하기 때문에 손가락 영역으로 잘못검출하는 문제를 발생시킨다.
이러한 문제점을 해결하기 위하여 검출된
그림 10은 검출된
제안하는 기법에서는 입력 되는 손 영상을 수직 축을 기준으로 왼쪽으로 회전 된 영상과 오른쪽으로 회전 된 영상, 두 가지 종류의 영상만으로 가정한다. 계산된 회전 각도를 이용하여 강체(rigid) 변환을 수행한다. 식(5)는 일반적인 강체 변환을 나타낸다.
여기서
그림 11은 제안하는 기법의 손가락 모델 분류 기술의 흐름도 이다. 제안하는 기법에서는 두 단계의 분류 과정을 통해 손가락 모델을 인식한다.
첫 번째 단계에서는 1, 2번 모델과 3, 4번 모델을 같은 군으로 묶어 분류 한다. 하위 단계에서는 1번과 2번 그리고 3번과 4번을 분류한다. 손가락 모델의 분류는 입력 손 영상의 최 상단 화소 좌표(
표2 는 실험을 통해 산출한 각 모델 별
각 모델별 의 평균과 표준편차
이러한 문제를 해결하기 위하여 3번과 4번의 모델 군으로 분류된 영상의
두 번째 분류 단계에서는 3, 4번 모델 군을 3번과 4번으로 1, 2번 모델 군을 1번과 2번 모델로 분류한다. 혹은 을 탐색라인으로 설정하여 화소 값의 기울기 변화를 관찰하여 3번과 4번 모델을 분류한다. 3번 모델의 경우 모든 손가락에 점
1번 모델과 2번 모델을 분류 하기 위하여 세 유클리드 거리의 합에 대해서 가장 긴 거리의 비율을 관찰한다. 1번 모델의 경우 세 유클리드 거리
본 논문에서는 세 거리의 차이를 강조하기 위하여 n 제곱 유클리드 거리를 사용한다.
그림 14는 1번과 2번 모델에 대한
손가락 모델을 인식하기 위해 새로이 제안된 기법은 Microsoft 사의 Microsoft Visual Studio C++ 2010과 OpenCV 2.4.8 라이브러리를 이용하여 구현하고, 3.40GHz의 CPU 응답 속도에서 동작하는 듀얼코어 프로세서 컴퓨터를 이용한다. 카메라 입력 장치는 Microsoft사의 Kinect for Windows를 이용하였으며 Kinect로 촬영되는 깊이 지도의 시각화를 위하여 Kinect SDK 1.7 라이브러리를 이용한다. 카메라는 640x480의 해상도를 제공하며 33fps의 환경에서 실험을 진행하였다.
실험에 필요한 데이터를 수집하기 위하여 5명의 사용자로부터 각 손가락 모델에 해당되는 손가락 모양을 100회씩 입력 받았다. 실험은 키넥트 앞 1m(±10cm) 에서 진행하였고 입력 손가락 모델들은 회전 각도가 없도록 입력 받았다.
손가락 모델 인식 성능을 평가하기 위하여 8명의 사용자가 다섯 개의 서로 다른 모델에 대하여 100번씩 총 4,000회의 손 동작을 취하였다. 그림 15는 실험자들의 입력 손영상과 본 논문에서 제안하는 기법으로 회전 각도가 보상된 영상을 보여준다.
표 3은 기존의 기법들과 제안하는 기법의 인식률을 보여준다. 기존 기법1은 손 영역의 중심으로부터 탐색반경을 획득하여 기울기 변화를 관찰하는 방식으로 손가락 모델을 인식한다[2]. 기존 기법2는 인식하고자 하는 손가락 모델들의 참조 템플릿을 생성한 뒤 이진화된 입력 손 영상에 대한 템플릿 매칭을 이용하여 손가락 모델들을 인식한다[3].
[표 3.] 기존 기법들과 제안하는 기법의 인식률 비교
기존 기법들과 제안하는 기법의 인식률 비교
제안하는 기법에서는 입력 영상의 회전여부를 판단하여 회전 각도 보상을 수행한 뒤 손가락의 기하학적 특징을 이용하여 기존의 기법들의 문제를 해결할 수 있었다. 기존 기법2와의 비교에서는 모든 모델에서 제안하는 기법의 성능이 더 우수함을 보였고 1번 모델부터 4번 모델까지 평균 5.43%의 인식률 증가를 확인하였다. 기존 기법1과의 비교에서는 평균 −0.46%의 인식률 감소를 보인다. 하지만 기존 기법1에서는 높은 인식률을 위하여 손가락의 정확한 입력 각도를 요구하고 입력 각도가 조금만 변하여도 심각한 인식률 저하의 문제를 지닌다. 제안하는 기법이 기존 기법1보다 미세하게 저조한 인식률을 나타내지만 각도변화에 강인한 특성을 지닌다는 점에서 기존의 기법보다 제안하는 기법의 성능이 더 우수하다고 할 수 있다.
본 논문에서는 기하학적 특징을 이용하여 각도 변화에 강인한 새로운 손가락 인식 기법을 제안하였다. 제안하는 기법에서는 먼저 깊이 영상에서 손 영역을 분리하기 위하여 손의 중심점을 시작으로 군집화를 수행하고, 각도 변화에 강인한 인식을 위하여 입력 손 영상을 모두 회전되었다고 가정하여 회전 보상 각도를 계산한 뒤 강체(rigid) 변환을 수행하였다. 마지막으로 손가락 모델을 인식하기 위하여 손 영상의 최 상단, 최 좌 우측좌표를 회득한 뒤 손가락 모델마다 변화하는 좌표 간의 유클리드 거리나 각도 변화 등의 기하학적 특징을 관찰하였다.
디지털 영상내의 사람의 손가락의 길이는 사람마다 상이하고 사람의 손과 카메라와의 거리에 따라 다르게 나타나지만 각 손가락 모델 별 기하학적 특징은 크게 변하지 않기에 이를 이용하여 손가락을 인식할 수 있었다. 실험을 통하여 실시간의 반응속도를 확인하였고 각도 변화에 강인한 특성을 보이는 것도 확인하였다.