Kinect là một dòng thiết bị đầu vào, là cảm biến chuyển động do hãng Microsoft sản xuất dành cho Xbox 360 và máy tính Windows. Dựa trên một webcam kiểu add- on ngoại vi cho Xbox 360, nó cho phép người dùng điều khiển và tương tác với Xbox 360 mà không cần phải dùng đến một bộ điều khiển tay cầm, thông qua một giao diện người dùng tự nhiên bằng cử chỉ và lệnh nói. [1]
Kinect ban đầu được phát triển như một thiết bị ngoại vi điều khiển chuyển động cho máy chơi trò chơi điện tử Xbox. Kinect thế hệ đầu tiên dựa trên công nghệ của công ty PrimeSense, Israel và được công bố tại E3 2009 như một thiết bị ngoại vi cho Xbox 360 với tên mã "Project Natal". Các thiết bị này thường chứa camera RGB, máy chiếu và máy dò hồng ngoại giúp lập bản đồ độ sâu thông qua cấu trúc ánh sáng hoặc tính toán thời ToF, lần lượt có thể được sử dụng để thực hiện nhận dạng cử chỉ trong thời gian thực, phát hiện bộ xương cơ thể và một số khả năng khác. Chúng cũng chứa micro có thể được sử dụng để nhận dạng giọng nói và điều khiển bằng giọng nói. [1]
13
Bên cạnh phục vụ cho mục đích chơi game, sản phẩm Kinect còn được dùng vào mục đích nghiên cứu xử lý ảnh 3D. Phát hiện cử chỉ (gesture recognition), bám theo người (body tracking) và nhiều mục đích khác. [1]
Hình 2.8. Một số hình ảnh về Kinect xbox 360
a. Các thành phần của cảm biến Kinect
Bên trong Kinect bao gồm 1 camera RGB, cảm biến độ sâu, một dãy các microphone và 1 động cơ điều khiển góc nâng. [2]
Hình 2.9. Sơ đồ cấu tạo phần cứng camera Kinect
b. Hệ thống cảm biến chiều sâu
Bao gồm bộ phát hồng ngoại (Infrared light) và camera hồng ngoại (depth image CMOS). Kích cỡ ảnh là 640x480 pixel, tốc độ chụp 30 khung hình mỗi giây. [2]
Cách thức hoạt động: Các tia hồng ngoại được chiếu qua bộ phát hồng ngoại đến đối tượng, sau đó camera hồng ngoại sẽ thu thập dữ liệu bị phản chiếu.
14
• Phạm vi mặc định có sẵn trong cả hai bộ cảm biến Kinect cho Windows và các cảm biến Kinect cho Xbox 360.
• Phạm vi gần là chỉ có trong cảm biến Kinect cho Windows.
Hình 2.10. Phạm vi hoạt động của cảm biến độ sâu
Để cảm biến hoạt động tốt nhất thì nên sử dụng khoảng cách từ 1,2m → 3,5m.
c. Cảm biến RGB-D
Chức năng chính của cảm biến là nhận biết 3 màu cơ bản là Red-Green-Blue (đỏ, xanh lục và xanh lam). Quá trình chụp bao gồm việc chụp một ảnh màu (RGB) và thực hiện một phép đo độ sâu (D). Cảm biến hình ảnh kết hợp với cảm biến chiều sâu nằm ở gần nhau, cho phép sáp nhập bản đồ, cho ra hình ảnh 3D. Thông tin ảnh RGB-D được lưu trữ. [2]
Với kích cỡ 1280x960 pixel, tốc độ 12 khung hình/giây. Với kích cỡ 640x480 pixel, tốc độ chụp 30 khung hình/giây. Từ đây cho thấy, khi thiết lập độ phân giải thấp hơn thì tốc độ chụp và truyền hình ảnh là cao hơn. [2]
d. Động cơ, máy đo gia tốc, micro
Động cơ điều khiển góc nâng: là một loại động cơ DC khá nhỏ, nằm ở đế của cảm biến Kinect. Nó có khả năng làm cho cảm biến hướng đầu lên trên cao và hạ xuống thấp. Với khả năng này sẽ giúp cho cảm biến có thể thu được hình ảnh cao hơn rất nhiều so với khi không có bộ động cơ.
Máy đo gia tốc: Kinect sử dụng nó để xác định người đứng trước, đứng sau trong khi đo.
Micro: bao gồm 4 micro nhỏ, hoạt động như nhau ở 16 bit với tốc độ lấy mẫu là 16 kHz (số mẫu/giây). [2]
15
e. Các bộ thư viện làm việc với Kinect
Thiết bị Kinect được thiết kế là một sản phẩm trò chơi của Microsoft, nó được đóng gói kín cả về sản phẩm phần cứng và phần mềm. Tuy nhiên các tính năng ưu việt của nó đã thu hút được sự quan tâm của đông đảo các nhà khoa học cũng như các nhà phát triển phần mềm trong lĩnh vực xử lý ảnh. Cho đến nay đã có một số thư viện nổi bật hỗ trợ phát triển ứng dụng Kinect:
•Microsoft Kinect SDK: Đây là bộ công cụ phát triển phần mềm Kinect cung cấp bởi hãng Microsoft, được cộng đồng sử dụng thiết bị Kinect sử dụng hiều nhất.
•OpenNI (Open Natural Interaction): OpenNI là thư viện hỗ trợ đa ngôn ngữ trên nhiều platform khác nhau sử dụng trên nhiều hệ điều hành. Cho phép truy xuất nhiều Kinect cùng một lúc. Bộ công cụ này hỗ trợ theo cho việc dõi người cũng như việc theo dõi cử chỉ bàn tay và nhận dạng cử chỉ bàn tay, hỗ trợ bám theo các khớp trên cơ thể người.
•LibFreeNect: Là một thư viện mã nguồn mở cho các hệ điều hành khác nhau sử dụng cho thiết bị Kinect trong các ứng dụng xử lý ảnh như: Windows, Linux và OS được sử dụng với ngôn ngữ Python, C, C++, C#, Java JNI, Java JNA, Javascript.