PROGRAMMING FOR ARTISTS

1. Kinect v1과 Kinect v2의 철저한 비교 본문

Kinect V2

1. Kinect v1과 Kinect v2의 철저한 비교

nookee 2015.10.25 22:34

차세대 Kinect for Windows

 2012 년 미국 마이크로 소프트에서 발매 된 Kinect v1은 Depth (= 심도)과 Skeleton (= 인물 자세) 등의 정보를 쉽게 얻을 수 있기 때문에 전세계의 개발자 및 연구자로부터 주목했다.

 2014 년에 발매 된 Kinect v2는 하드웨어, 소프트웨어 모두 크게 진화했다.

Kinect v1과 Kinect v2의 외관 비교

 Kinect v1 (그림 1)과 Kinect v2 (그림 2)의 외관 사진을 나타낸다.

그림 1 Kinect for Windows v1
그림 1 Kinect for Windows v1

 Kinect v1의 Depth 센서는 투광 한 적외선 패턴을 읽기 패턴의 왜곡에서 Depth 정보를 얻을 「Light Coding " * 1 이라는 방식이 채용되고있다. 따라서 Depth 센서는 적외선 패턴을 투광하는 IR 프로젝터 (왼쪽)와 그것을 읽을 IR 카메라 (오른쪽)으로 나누어 져있다. 또한 Depth 센서 사이에 Color 카메라가 탑재되어있다.

  • * 1 이스라엘 PrimeSense 사 Depth 센서 기술. 2013 년,이 회사는 미국의 Apple 사에 인수되었다.
그림 2 Kinect for Windows v2
그림 2 Kinect for Windows v2

 Kinect v2의 Depth 센서는 투광 한 적외선이 반사되어 돌아 오는 시간에서 Depth 정보를 얻는다 " Time of Flight (TOF) " * 2 라는 방식이 채용되고있다. Depth 센서는 외관에서는 보이지 않지만 Color 카메라 옆에 적외선 카메라 (왼쪽)과 펄스 변조 된 적외선을 투광하는 프로젝터 (오른쪽)가 탑재되어있다.

  • * 2 마이크로 소프트는 과거에 TOF 방식의 Depth 센서 기술을 가진 회사를 인수하고 아마도 그 기술이 사용되고있는 것으로 보이지만 자세한 내용은 공개되지 않았다.

Kinect v1과 Kinect v2 사양 비교

 Kinect v1과 Kinect v2 센서의 사양 비교를 표 1에 나타낸다.

 

 Kinect v1Kinect v2
색상 (Color)해상도 (Resolution)640 × 4801920 × 1080
fps30fps30fps * 3
심도 (Depth)해상도 (Resolution)320 × 240512 × 424
fps30fps30fps
인물 영역 (Player)6 명6 명
인물 자세 (Skeleton)2 명6 명
관절 (Joint)20 관절 / 사람25 관절 / 사람
손의 개폐 상태 (Hand State)△ (Developer Toolkit)○ (SDK)
심도의 취득 범위 (Range of Depth)0.8 ~ 4.0m 
(Near Mode 0.4m ~) 
(Extended Depth ~ 10.0m)
0.5 ~ 8.0m
인물의 검출 범위 (Range of Detection)0.8 ~ 4.0m 
(Near Mode 0.4 ~ 3.0m)
0.5 ~ 4.5m
각도 (Angle) 
(Depth)
수평 (Horizontal)57도70도
수직 (Vertical)43도60도
틸트 모터 (Tilt Motor)× (수동)
여러 응용× (단일 응용 프로그램)
표 1 Kinect v1과 Kinect v2 센서의 사양 비교
  • * 3 Kinect v2의 Color 카메라는 환경 빛이 어둡고 자동으로 15fps에 떨어 뜨려 작동한다.

 Kinect v1의 Color 카메라는 해상도가 640 × 480로 낮아 그다지 깨끗한 이미지를 얻을 수 없었지만, Kinect v2에서 크게 해상도가 향상 1980 × 1080의 매우 깨끗한 이미지를 얻을 수있게되었다 (그림 3).

그림 3 Kinect v1의 Color
그림 3 Kinect v2의 Color
그림 3 Kinect v1 (위)와 Kinect v2 (아래)의 Color

 Kinect v2에서는 Depth 센서 해상도 512 × 424으로 증가하고있다. Kinect v1은 640 × 480의 해상도에서도 Depth 데이터를 검색 할 수 있었기 때문에 겉보기 스펙이 떨어지는 것처럼 보이지만, Kinect v1의 기반이되는 Depth 센서의 해상도는 320 × 240이며, 업 스케일링 된 것이 640 × 480이다. 또한 Depth 센서 방식도 Light Coding에서 Time of Flight (TOF)으로 변경되어있다.

 Kinect v2에서는 Depth 데이터의 정확성을 향상시킬 수있다 (그림 4). Microsoft는 Depth의 정확도가 Kinect v1 대비 3 배 좋아지고 있다고하고있다 * 4 .

 Depth 데이터 검색 범위는 Kinect v1에서는 0.8 ~ 4.0m로되어 있었지만, Kinect v2에서 0.5m ~ 8.0m의 범위에서 취득 할 수있게되었다 * 5 . 그러나 인물의 검출은 0.5 ~ 4.5m의 범위로되어있다 (그림 5).

  • * 4 "Depth fidelity (3x)"의 것. 자세한 내용은 " Features - Kinect for Windows SDK 2.0 | MSDN Library」(영문)를 참조하십시오.
  • * 5 Kinect v1에서는 Near Mode에서 0.4m ~ Extended Depth에서 ~ 10.0m까지 얻을 수 있지만, Kinect v2에서는 이러한 설정을 변경하지 않고 넓은 범위에서 Depth 데이터를 얻을 수있게되었다. 그러나 Depth 데이터의 정확도가 어느 정도 보장 할 수는 0.5 ~ 4.5m의 범위이다.
그림 4 Kinect v1의 Depth
그림 4 Kinect v2의 Depth
그림 4 Kinect v1 (위)와 Kinect v2 (아래)의 Depth
그림 5 Kinect v2의 Depth의 취득 범위와 인물의 감지 범위

 

그림 5 Kinect v2의 Depth의 취득 범위와 인물의 감지 범위

 Kinect v1, v2 함께 얻을 수 Player (= 인물 영역)은 6 명이다. Kinect v2에서는 Depth 센서의 해상도가 향상되고있는 것도 있고 Player 데이터를 이용한 간단한 자르기에서도 깨끗한 배경과 인물을 분리 할 수있다.

 Kinect v1은 모든 Joint (= 관절)을 취득 할 수 Skeleton은 2 명까지했지만 Depth 센서의 해상도 향상과 화각이 넓어진 것도 있고, Kinect v2에서는 6 명까지 취득 할 수있게 했다.

 또한 취득 할 수있는 Joint는 Kinect v1에서는 1 인당 20Joint 이었지만, Kinect v2는 25Joint 얻을 수 있도록되어있다. 구체적으로는 그림 6과 같이 목 (= NECK)과 손가락 (= HAND_TIP_LEFT, HAND_TIP_RIGHT) 엄지 손가락 (= THUMB_LEFT, THUMB_RIGHT)의 5 개소가 추가되어있다. 손의 위치뿐만 아니라 엄지 손가락이나 손가락 등 세세한 정보까지 얻을 수있게되었다.

 Hand State (= 손의 개폐 상태)의 인식은 Kinect v1에서는 Developer Toolkit의 "Kinect Interaction '라는 라이브러리에서 지원되고 있었지만, Kinect v2에서는 SDK가 표준으로 지원하고있다.

그림 6 Kinect v1 취득 할 수있는 Joint
그림 6 Kinect v2 취득 할 수있는 Joint
그림 6 Kinect v1 (그림 1)과 Kinect v2 (그림 2) 취득 할 수있는 Joint

 Kinect v1에 고개를 흔들 틸트 모터가 탑재되어 있었지만, 화각이 넓어진 것도 있고, Kinect v2는 틸트 모터는 탑재되지 않고 수동으로 고개를 젓는다있게되어있다.

 Kinect v1은 여러 응용 프로그램이 동시에 같은 센서에 연결 할 수 없었다. Kinect v2에서는 'Kinect Service」를 개입시키는 것으로 여러 응용 프로그램이 동시에 동일한 센서에서 데이터를 검색 할 수있다 (그림 7 참조).

그림 7 Kinect Service에 의해 복수의 애플리케이션을 지원하는
그림 7 Kinect Service에 의해 복수의 애플리케이션을 지원하는

 Kinect v1과 Kinect v2의 작동 요구 사항 비교표 (표 2)를 나타낸다.

 

OSWindows7 이후Windows 8 이상 (x64)
컴파일러 (Compiler)Visual Studio 2010 이상Visual Studio 2012 이상
연결 단자 (Connector)USB 2.0USB 3.0
CPUDual-Core 2.66GHzIntel Core i7 3.1GHz 이상
GPUDirectX 9.0cDirectX 11.0
RAM2.0GB 이상4.0 GB 이상
 
Kinect v1
Kinect v2
표 2 Kinect v1과 Kinect v2 최소 작동 요구 사항 비교

 Kinect v1은 Windows 7 이상이 필요했지만, Kinect v2는 Windows 8 이상에서 동작한다. 이에 따라 Visual Studio도 2012 이상을 요구하고있다.

 Kinect v1은 USB 2.0 (또는 더 빠른 USB)로 동작했지만, Kinect v2에서는 센서의 해상도가 개선 된 것도 있고, 더 빠른 USB 3.0에서만 동작한다. USB 버스 대역폭을 독점하는 것은 Kinect v1도 Kinect v2도 다르지 않다.

 이것은 Kinect v1에서도보고되고 있었지만, Kinect v2에서도 USB 3.0 호스트 컨트롤러의 궁합은 제대로 작동하지 않을 수있다. 현재는 Renesas와 Intel USB 3.0 호스트 컨트롤러에서 동작한다.데스크탑 PC라면 USB 3.0 확장 카드를 확장하여 대응할 수 * 6 .

  • * 6 Kinect for Windows SDK v2.0에는 "Kinect v2 Configuration Verifier '라는 시스템 검증 도구가 포함되어있다. 사용자 PC에 탑재되고있는 USB 3.0 호스트 컨트롤러 Kinect v2에 대응하고 있는지 확인할 수있다. 
     또한 MSDN Forum 과 저자의 사이트 에서 테스트 된 제품의 정보가 정리되어 있기 때문에이를 참고로 개발 환경을 정돈하면 좋을 것이다.

 CPU는 Intel Core i7 3.1GHz 이상을 요구하고있다. "동작 주파수가 조금 낮은 '등 동작 요구 사항을 다소 밑돌고도 상당한 일이 없으면 동작하지만, 센서의 해상도가 향상되면서 얻은 데이터의 처리 비용도 상승하고 있다는 것을주의해야한다 .

 Kinect v1에서는 DirectX 9.0c 이상을 지원하는 GPU * 7 을 요구하고 있었지만, Kinect v2는 DirectX 11.0 이상을 지원하는 GPU가 요구되고있다. Kinect v1에서는 센서가 취득한 데이터를 CPU에서 처리하고 있었지만, Kinect v2에서는 이것을 GPU에서 처리하기 위해 DirectX 11.0 마이그레이션을 지원하는 GPU가 필요하게된다. 
노트북 PC는 NVIDIA GeForce 나 AMD Radeon 같은 외부 GPU (dGPU)를 탑재하고 있지 않은 것도 많지만, DirectX 11.0 이상을 지원하는 경우 Intel HD Graphics 같은 프로세서에 내장 된 GPU (iGPU )에서도 동작한다.

  • * 7 Kinect Fusion은 GPU에서 처리하고 있기 때문에, Kinect v1에서도 DirectX 11.0을 지원하는 GPU가 요구되고 있었다.

센서의 구입

 Kinect for Windows v2는 Microsoft Store에서 구입 가능하다.

 또한 Kinect for Xbox One을 PC에 연결하기위한 어댑터가 발매되고 있으며, Xbox One의 Kinect를 유용 할 수도있다 * 8 .

  • * 8 Kinect for Xbox 360은 상업적인 용도가 인정되지 않았지만, Kinect for Xbox One + Kinect Adapter for Windows는 상업적 목적이 인정되고있다.

개발 환경 구축

 Kinect v2 소프트웨어 개발 키트로 Kinect for Windows SDK v2.0 (이후 Kinect SDK v2)가 무료로 제공되고있다. Kinect v1의 Kinect for Windows SDK v1.x (이후 Kinect SDK v1)와 호환이 아니기 때문에주의하면 좋겠다 * 9 .

  • * 9 Kinect v1을 사용하는 응용 프로그램을 개발하려면 지금 그대로 Kinect SDK v1.x를 사용한다.

 또한 Kinect SDK v1에서는 개발 지원 툴이나 샘플 프로그램, 라이브러리 등을 포함 Kinect for Windows Developer Toolkit이 제공되고 있었지만, 이들은 Kinect SDK v2에 포함되게되었다.

 개발 환경의 구축 절차를 간단하게 설명하겠습니다.

1 Visual Studio의 다운로드, 설치

 Visual Studio 2012 또는 2013을 설치한다. 무료로 제공되는 Visual Studio Express 및 Visual Studio Community에서도 개발할 수 (  이용시에는 각 제품의 라이센스에 따라 바란다).

2 Kinect SDK v2 다운로드, 설치

 Kinect SDK v2는 다음의 링크 사이트에서 다운로드 할 수있다.

 설치 프로그램 (KinectSDK-v2.0_1409-Setup.exe)을 실행하여 SDK를 설치한다. 설치 후 Kinect v2를 PC에 연결하면 드라이버가 설치되어 사용 가능한 상태가된다.

 여기에서 앱 목록에서 SDK Browser (Kinect for Windows) v2.0을 열고 샘플 프로그램을 실행 해 보자. 정상적으로 데이터를 얻을 수 있는지 확인하기 바란다.

3 OpenCV 다운로드, 설치

 다음에서 소개하는 샘플 프로그램 에서는 컴퓨터 비전을위한 라이브러리 OpenCV를 이용하고있다.OpenCV의 설정 내용은 저자의 사이트 를 참조하기 바란다. 
 또한 OpenCV 사용에 대한 자세한 내용은 연재 「OpenCV 입문」 알기 쉬운 때문에 참조하기 바란다.

정리

 Kinect v1과 Kinect v2 센서 사양 및 작동 요구 사항을 철저하게 비교했다.

저작자 표시
신고
4 Comments
댓글쓰기 폼