ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
---------------------------------------
NGUYỄN THỊ PHƯỢNG VĨ
XÂY DỰNG GAME TƯƠNG TÁC CHO TRẺ EM
SỬ DỤNG KINECT
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Đà Nẵng – Năm 2018
ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
---------------------------------------
NGUYỄN THỊ PHƯỢNG VĨ
XÂY DỰNG GAME TƯƠNG TÁC CHO TRẺ EM
SỬ DỤNG KINECT
Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 60.48.01.01
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS. HUỲNH HỮU HƯNG
Đà Nẵng – Năm 2018
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn
trực tiếp của TS. Huỳnh Hữu Hưng.
Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên
công trình, thời gian, địa điểm công bố.
Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu
hoàn toàn trách nhiệm.
Tác giả
Nguyễn Thị Phượng Vĩ
MỤC LỤC
MỞ ĐẦU............................................................................................................................... 1
1. Lý do chọn đề tài .............................................................................................................. 1
2. Mục đích nghiên cứu ....................................................................................................... 1
3. Đối tượng và phạm vi nghiên cứu .................................................................................. 1
4. Phương pháp nghiên cứu ................................................................................................ 2
5. Ý nghĩa khoa học và thực tiễn của đề tài....................................................................... 2
6. Bố cục luận văn ................................................................................................................ 2
CHƯƠNG 1: TỔNG QUAN VỀ XÂY DỰNG GAME TƯƠNG TÁC ........................... 4
1.1. Các vấn đề liên quan đến thiết bị camera Kinect ...................................................... 4
1.1.1. Giới thiệu về thiết bị camera Kinect ................................................................... 4
1.1.2. Những thành phần chính của Kinect................................................................. 5
1.1.3. Thư viện hỗ trợ Kinect ....................................................................................... 6
1.1.4. Một số ứng dụng của Kinect ............................................................................... 6
1.2. Giới thiệu nhận dạng cử chỉ tay trong giao tiếp người-máy.................................. 7
1.2.1. Tiến trình nhận dạng cử chỉ tay ........................................................................ 8
1.2.2. Một số ứng dụng dựa trên nhận dạng cử chỉ tay ............................................ 12
1.3. Lập trình game sử dụng Unity .................................................................................. 15
1.3.1. Unity là gì?......................................................................................................... 15
1.3.2. Tổng quan về engine Unity ............................................................................... 15
1.3.3. Tính năng của engine Unity ............................................................................. 18
1.3.4. Tổng quan kiến trúc engine Unity .................................................................... 18
1.4. Giới thiệu về game tương tác cho trẻ em .................................................................. 19
CHƯƠNG 2 - MỘT SỐ KỸ THUẬT TRÍCH CHỌN ĐẶC TRƯNG ......................... 21
2.1. Một số kỹ thuật trích chọn đặc trưng cử chỉ tay ..................................................... 21
2.1.1. Đặc trưng chuyển động của bàn tay................................................................. 21
2.1.2. Đặc trưng các thành phần chính PCA ............................................................. 22
2.1.3 Đặc trưng HOG .................................................................................................. 25
2.1.4. Đặc trưng cục bộ bất biến - SIFT ..................................................................... 27
2.1.5. Đặc trưng Haar-Like......................................................................................... 31
2.1.6. Đặc trưng GIST ................................................................................................. 33
2.1.7. Đặc trưng xương ảnh của bàn tay (Skeleton of the Hand) ............................. 35
2.2. Một số kỹ thuật nhận dạng cử chỉ tay ...................................................................... 36
2.2.1. Kỹ thuật sử dụng máy vector hỗ trợ - SVM ...................................................... 37
2.2.2. Kỹ thuật sử dụng mạng nơ-ron nhân tạo - ANN ............................................. 41
2.2.3. Kỹ thuật K-láng giềng gần nhất ....................................................................... 43
2.2.4. Kỹ thuật sử dụng mô hình Markov ẩn - HMM ................................................ 44
2.3. Mô tả game chém trái cây sử dụng Kinect ............................................................... 45
CHƯƠNG 3 - XÂY DỰNG HỆ THỐNG NHẬN DẠNG CỬ CHỈ TAY .................... 48
3.1. Mô tả bài toán ............................................................................................................. 48
3.2. Giải pháp đề xuất của hệ thống ................................................................................. 49
3.2.1. Sơ đồ hoạt động của hệ thống .......................................................................... 49
3.2.2. Phát hiện bàn tay............................................................................................... 49
3.2.3. Tiền xử lý ........................................................................................................... 50
3.2.4. Trích chọn đặc trưng ........................................................................................ 51
3.2.5. Nhận dạng cử chỉ tay ........................................................................................ 52
3.3. Xây dựng chương trình ứng dụng............................................................................. 54
3.3.1. Tổng quan về chương trình .............................................................................. 54
3.3.2. Xây dựng CSDL hình ảnh trái cây ................................................................... 55
3.3.3. Thuật toán ......................................................................................................... 55
3.3.4. Chương trình ..................................................................................................... 57
3.3.5. Thực nghiệm...................................................................................................... 58
TÀI LIỆU THAM KHẢO................................................................................................. 60
LỜI CẢM ƠN
Trong quá trình thực hiện đề tài, tôi đã gặp rất nhiều khó khăn phát sinh mà nếu
không có sự giúp đỡ, động viên của gia đình, các thầy cô giáo, bạn bè đồng nghiệp thì
tôi khó có thể hoàn thành được luận văn này.
Trước tiên, tôi xin gởi lời cảm ơn chân thành và sâu sắc nhất tới Thầy giáo TS.
Huỳnh Hữu Hưng, người Thầy đã tận tình hướng dẫn và tạo điều kiện tốt nhất để tôi
hoàn thành luận văn này.
Tôi xin gửi lời cảm ơn tới Ban giám hiệu Trường Đại Học Bách Khoa - Đại Học
Đà Nẵng, Ban giám hiệu Trường Đại Học Phạm Văn Đồng-Quảng Ngãi, Ban chủ nhiệm
khoa Công nghệ thông tin, Phòng Đào tạo sau đại học của hai trường đã tạo điều kiện
thuận lợi trong quá trình học tập, nghiên cứu và hoàn thành luận văn. Tôi xin cảm ơn
quí Thầy giáo, Cô giáo những người đã tận tình hướng dẫn và truyền đạt cho tôi những
kiến thức quí báu trong suốt quá trình học tập. Tôi xin gởi lời cảm ơn tới Ban giám hiệu
trường THPT Trần Quốc Tuấn đã giúp đỡ tạo mọi điều kiện tốt nhất để tôi hoàn thành
khóa học.
Cuối cùng, tôi xin gửi lời cảm ơn tới các thành viên trong Gia đình đã động viên
và tạo mọi điều kiện tốt nhất để tôi có thể tiếp tục theo đuổi việc học tập, nghiên cứu.
Luận văn cũng là món quà tinh thần mà tôi trân trọng gửi tặng đến các thành viên trong
Gia đình.
Tuy có nhiều cố gắng, nhưng chắc chắn luận văn không tránh khỏi những thiếu
sót nhất định. Tôi rất mong nhận được ý kiến đóng góp quý báu của các thầy cô giáo và
các bạn để luận văn ngày càng được hoàn thiện hơn.
Trân trọng cảm ơn!
XÂY DỰNG GAME TƯƠNG TÁC CHO TRẺ EM
SỬ DỤNG KINECT
Học viên: Nguyễn Thị Phượng Vĩ
Chuyên ngành: Khoa học máy tính
Mã số: 60480101
Trường Đại học Bách khoa – ĐHĐN
Khóa: 33
Tóm tắt – Kỹ thuật phát hiện và nhận dạng các cử chỉ tay của con người là cách tự nhiên
để giao tiếp người-máy. Trong luận văn này, tôi đã trình bày cơ sở lý thuyết tổng quan về thiết
bị camera Kinect để nhận dạng cử chỉ tay trong giao tiếp người – máy, giới thiệu nhận dạng
cử chỉ tay, giới thiệu về lập trình game unity và game tương tác cho trẻ em sử dụng camera
Kinect ,…; Tiếp đến, tôi đã tìm hiểu và liệt kê một số kỹ thuật trích chọn đặc trưng và nhận
dạng cử chỉ tay phổ biến hiện nay. Cuối cùng, tôi đã xây dựng thành công chương trình nhận
dạng cử chỉ tay ứng dụng xây dựng game tương tác cho trẻ em dựa trên thiết bị camera Kinect.
Chương trình ứng dụng này cho phép người dùng sử dụng cử chỉ tay đơn giản để hỗ trợ cho
người dùng chơi game chém trái cây. Tập cử chỉ tay dùng trong chương trình chỉ mới giới hạn
trong một cử chỉ điều khiển đơn giản. Sau khi xây dựng chương trình, tôi đã cho thử nghiệm
ở các môi trường và điều kiện ánh sáng khác nhau. Khoảng cách từ người dùng đến camera
Kinect là 2m. Kết quả nhận được là với các điều kiền kiện ánh sáng tốt, cử chỉ điểu khiển được
thực thi chính xác gần như tuyệt đối. Trong các điều kiện ánh sáng không ổn định thì tỉ lệ bắt
được cử chỉ vào khoảng 93-97%. Người dùng thử khá hài lòng vì các thao tác chơi game dễ
dàng, giao diện đơn giản, dễ sử dụng.
Từ khóa – Nhận dạng cử chỉ tay, khai thác đặc trưng; giao tiếp người-máy, cử chỉ điều
khiển, chơi game.
Abstract
CREATING INTERACTIVE GAMES FOR KIDS USING KINECT.
Human hand gesture detection and recognition is a natural way to communicate between
people and machines.In this thesis,I presented theoretical background of theKinect camera
device for hand gesture recognition in human – machine interface, in introducing hand gesture
recognition, Unity game programming, and interactive games for children that using the Kinect
camera.... Next, I studied and listed some of popular selective techniques and hand gestures
nowadays. Finally, I created a hand gesture-recognizing program that creating interactive
games for kids based on the Kinect camera device. This application allows users to use simple
hand gestures to assist the user playing the fruit slicing game. Hand gestures in the program
are limited to simple gesture controllability. After creating the program, I already tested in
different environments and lighting conditions. The distance between the user and Kinect
camera device is 2 meters. As a result, in good lighting conditions, the gesture controllability
is practically almost exact. If lighting conditions are unstable, the rate will be from 93% to
97%. The user is quite satisfied with the ease of playing games, simple interface.
Key words- Hand gesture recognition, popular selective techniques, human-machine
interaction, gesture controllability, game playing.
DANH MỤC CÁC CHỮ VIẾT TẮT
Thuật ngữ
3D
4D
ANN
CL
CSDL
K-NN
HMM
HOG
Tiếng Anh
Three Dimension
Four Dimension
Artificial Neural Network
Code Laboratories
Database
K-Nearest Neighbors
Hidden Markov Model
Histogram of Orientation Gradient
PCA
SIFT
Principal Components Analysi
Scale Invariant Feature Transforms
SVM
Support Vector Machine
Tiếng Việt
Ba chiều
Bốn chiều
Mạng nơ-ron nhân tạo
Tên một công ty phần mềm
Cơ sở dữ liệu
K-láng giềng gần nhất
Mô hình Makov ẩn
Biểu đồ định hướng
Gradient
Phân tích thành phần chính
Phép biến đổi đặc tính bất
biến tỉ lệ
Máy hỗ trợ vector
DANH MỤC CÁC HÌNH VẼ
Số hiệu
hình
Hình 1.1
Hình 1.2
Hình 1.3
Hình 1.4
Hình 1.5
Hình 1.6
Hình 1.7
Hình 1.8
Hình 1.9
Hình 1.10
Hình 1.11
Hình 1.12
Hình 1.13
Hình 1.14
Hình 1.15
Hình 1.16
Hình 1.17
Hình 1.18
Hình 1.19
Hình 1.20
Hình 1.21
Hình 1.22
Hình 1.23
Hình 1.24
Hình 1.25
Hình 1.26
Hình 1.27
Hình 2.1
Hình 2.2
Hình 2.3
Hình 2.4
Hình 2.5
Hình 2.6
Tên hình
Camera Kinect của hãng Microsoft
Nhận diện hành động game thủ và điều khiển nhân vật trong game
Những thành phần chính của Kinect
Kinect hỗ trợ shopping
Điều khiển máy tính bằng Kinect
Điều khiển máy tính bằng cử chỉ
Sơ đồ khối của hệ thống nhận dạng cử chỉ tay
Một tư thế tay ở nhiều hướng nhìn
Camera gắn trên mũ
Chuyển ảnh RGB sang ảnh nhị phân
Quá trình chuyển đổi ảnh và lọc nhiễu
Phân đoạn ảnh dựa trên ngưỡng của lược đồ mức xám
Kết quả lọc màu da
Sử dụng cử chỉ tay trong ứng dụng thực tế ảo
Dùng các cử chỉ tay khác nhau để điều khiển robot
Người dùng điều khiển máy tính bằng cử chỉ tay
Bác sĩ sử dụng cử chỉ tay trong phẫu thuật
Sử dụng cử chỉ tay để điều khiển âm nhạc
Sử dụng cử chỉ tay trong trò chơi Eye Toy
Ngôn ngữ kí hiệu
Giao diện Editor của Unity
Thanh công cụ điều khiển
Chọn đối tượng trong Scene và Hierrarchy
Cửa sổ Inspector hiển thị thông tin một đối tượng
Cửa sổ Game
Cửa sổ Project
Hình minh họa đa nền tảng
Phép chiếu lên các trục tọa độ khác nhau
Sử dụng PCA để tìm các trục tọa độ mới
Chia khối trích đặc trưng HOG
Mô tả sự không hoàn thiện của thuật toán Harris
Mô tả hàm Gaussian và hàm DoG
Phát hiện cực trị của hàm DoG
Trang
4
4
5
6
7
7
8
9
9
10
10
11
11
13
13
14
14
15
15
16
15
16
17
17
18
18
18
23
25
26
28
29
30
Hướng phân bố trên ảnh và mô tả điểm hấp dẫn
Đặc trưng SIFT của ảnh cử chỉ tay
Các đặc trưng Haar-Like
Các đặc trưng Haar-Like mở rộng
Cách tính Image Integral của ảnh
Cách tính nhanh các giá trị mức xám trên ảnh
Áp dụng bộ lọc Gabor theo 8 hướng
Minh họa cho quá trình trích đặc trưng GIST cho ảnh đầu vào
Quá trình khai thác bộ xương ảnh vùng tay
Minh họa mô hình SVM
Minh họa khoảng cách các biên
Minh họa dữ liệu phân tách tuyến tính
Xử lý trường hợp chứa nhiễu
Áp dụng Kernel phân loại trên không gian đặc trưng
Mô hình cấu trúc một nơ-ron trong ANN
Kiến trúc mạng nơ-ron cho hệ thống
Phân lớp dựa vào thuật toán K-NN
Tham số xác suất của một mô hình Markov ẩn
Tương tác bằng tay thú vị
Sơ đồ mô tả game chém trái cây sử dụng kinect
Sơ đồ khối của bài toán
Sơ đồ khối hệ thống nhận dạng cử chỉ tay ứng dụng chơi game
chém trái cây
Hình 3.3 Sơ đồ vị trí giữa người thực hiện cử chỉ và camera Kinect
Hình 3.4 Chuẩn hóa kích thước ảnh
Hình 3.5 Dữ liệu khung xương thu bởi Kinect V2
Hình 3.6 Minh họa bài toán phân lớp bằng phương pháp SVM
Hình 3.7 Sơ đồ mô tả chương trình trò chơi
Hình 3.8 Phân loại hình ảnh trái cây
Hình 3.9 Sơ đồ mô tả thuật toán cài đặt chương trình
Hình 3.10 Màn hình khởi động game
Hình 3.11 Màn hình game
Hình 3.12 Dùng cử chỉ tay để chơi game
Hình 2.7
Hình 2.8
Hình 2.9
Hình 2.10
Hình 2.11
Hình 2.12
Hình 2.13
Hình 2.14
Hình 2.15
Hình 2.16
Hình 2.17
Hình 2.18
Hình 2.19
Hình 2.20
Hình 2.21
Hình 2.22
Hình 2.23
Hình 2.24
Hình 2.25
Hình 2.26
Hình 3.1
Hình 3.2
31
31
32
32
33
33
34
35
36
37
38
38
39
40
42
43
44
45
46
47
48
49
50
51
51
52
55
55
57
57
58
58
1
MỞ ĐẦU
1. Lý do chọn đề tài
Với sự phát triển của máy tính điện tử hiện nay thì việc tiếp cận game giải trí của
người dùng ngày càng dễ dàng hơn. Việc chơi game có thể giúp bạn xả stress mọi lúc
mọi nơi. Hiện nay, trên thị trường có nhiều loại game và để tham gia vào một loại game
bắt buộc các game thủ phải tương tác với máy tính thông qua các thiết bị như chuột,
phím, remote điều khiển…thường tạo cho các game thủ sự bất tiện và cảm giác để trải
nghiệm các game này chưa thật sự hấp dẫn khi nhập vai.
Ngày nay, nhu cầu đặt ra của các game thủ là làm cách nào người chơi nhập vai để
trải nghiệm cảm giác như đang trực tiếp tương tác để điều khiển thiết bị mà mình chơi
khi đứng trước màn hình tham gia vào một game show bất kỳ mà không đòi hỏi nhiều
về 1 hệ thống thiết bị. Với các kỹ thuật phát hiện và nhận dạng cử chỉ người chơi của
các game trên thị trường nói chung và nhận dạng cử chỉ người chơi game tương tác cho
trẻ em nói riêng như người chơi thực hiện động tác nào?, người chơi mong muốn máy
sẽ phản ứng ra sao? …được ứng dụng trong lĩnh vực game tương tác sử dụng Kinect
cho phép người chơi tương tác với máy rất dễ dàng và thuận tiện mà không cần phải
mang thêm bất kỳ thiết bị ngoại vi nào đang là một thách thức đối với các nhà sản xuất
game hiện nay.
Với những lí do trên, tôi đề xuất chọn đề tài luận văn cao học: “Xây dựng game
tương tác cho trẻ em sử dụng Kinect”.
2. Mục đích nghiên cứu
Đề xuất giải pháp nhận dạng cử chỉ tay và động tác của người trước Kinect để điều khiển
với dữ liệu thu được từ camera Kinect để xây dựng chương trình cho phép người dùng
chọn và tương tác bằng cử chỉ tay và động tác của người trước Kinect để điều khiển ứng
dụng hỗ trợ chơi game tương tác cho trẻ em hiệu quả.
3. Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu
- Các cử chỉ tay của bàn tay.
- Các phương pháp, giải thuật về nhận dạng cử chỉ, động tác của người trước
Kinect để điều khiển của người chơi.
- Các kỹ thuật xử lý nhận dạng để phục vụ bài toán nhận dạng cử chỉ, động tác
của người trước Kinect để điều khiển của người chơi.
Phạm vi nghiên cứu
- Nghiên cứu kỹ thuật xử lý ảnh và nhận dạng đối tượng.
2
- Nghiên cứu các phương pháp phát hiện chuyển động đối tượng bàn tay, khớp
tay và nhận dạng cử chỉ tay để tương tác người chơi– máy.
4. Phương pháp nghiên cứu
Phương pháp lý thuyết
- Cơ sở lý thuyết về các kỹ thuật xử lý ảnh.
- Cơ sở lý thuyết về các phương pháp nhận dạng cử chỉ tay và động tác của
người trước Kinect để điều khiển.
Phương pháp thực nghiệm
- Nghiên cứu và khai thác công cụ Kinect của Microsoft.
- Xây dựng chương trình demo dựa trên giải pháp đề xuất.
- Thực nghiệm trên dữ liệu đầu vào là các hình ảnh thu thập vào từ Kinect.
5. Ý nghĩa khoa học và thực tiễn của đề tài
Về khoa học: Đề tài sẽ mang ý nghĩa cung cấp về mặt lý thuyết để làm rõ về các phương
pháp nhận dạng cử chỉ tay và động tác của người trước Kinect để điều khiển các kỹ thuật
xử lý ảnh phục vụ bài toán nhận dạng. Kết quả thu được là hệ thống nhận dạng cử chỉ
tay và động tác của người trước Kinect để điều khiển hỗ trợ việc chọn và chơi game một
cách trực quan, hấp dẫn và dễ dàng.
Về thực tiễn: Góp phần hỗ trợ cho việc điều khiển máy tính làm việc bằng cử chỉ
tay và động tác của người trước Kinect để điều khiển một cách hiệu quả, nâng cao tương
tác giữa người và máy, ứng dụng hỗ trợ tích cực cho các nhà sản xuất game trong thời
đại ngày nay.
6. Bố cục luận văn
Nội dung của luận văn được trình bày bao gồm các phần chính như sau:
Mở đầu
Chương 1: TỔNG QUAN VỀ XÂY DỰNG GAME TƯƠNG TÁC CHO TRẺ
EM SỬ DỤNG KINECT
Ở chương này, nội dung chính là giới thiệu tổng quan về thiết bị camera Kinect để
nhận dạng cử chỉ tay trong giao tiếp người – máy, giới thiệu nhận dạng cử chỉ tay, giới
thiệu về lập trình game unity và game tương tác cho trẻ em sử dụng camera Kinect.
Chương 2: MỘT SỐ KỸ THUẬT TRÍCH CHỌN ĐẶC TRƯNG VÀ NHẬN
DẠNG CỬ CHỈ TAY
Trong chương này luận văn giới thiệu một số kỹ thuật trích chọn đặc trưng và
nhận dạng cử chỉ tay thường được sử dụng phổ biến, mỗi phương pháp đều có các ưu
điểm và hạn chế riêng, việc áp dụng phương pháp nào tùy thuộc vào từng bài toán cụ
3
thể. Trong một số bài toán, người ta có thể sử dụng kết hợp một số phương pháp với
nhau như SVM/HMM, ANN/HVM,…. để có được kết quả nhận dạng được tốt hơn.
Chương 3: XÂY DỰNG HỆ THỐNG NHẬN DẠNG CỬ CHỈ TAY ỨNG
DỤNG CHƠI GAME CHÉM TRÁI CÂY SỬ DỤNG KINECT.
Chương này trình bày về hệ thống nhận dạng cử chỉ tay ứng dụng hỗ trợ cho người
dùng chơi game chém trái cây bao gồm: Mô tả bài toán; Đưa ra giải pháp đề xuất cho
hệ thống nhận dạng (Phát hiện bàn tay; Tiền xử lý; Trích chọn đặc trưng; Thuật toán
SVM thông qua việc huấn luyện SVM và ứng dụng SVM trong bài toán phân lớp cử chỉ
tay); Xây dựng chương trình ứng dụng dựa trên giải pháp đã đề xuất; Thực nghiệm
chương trình.
4
CHƯƠNG 1: TỔNG QUAN VỀ XÂY DỰNG GAME TƯƠNG TÁC
CHO TRẺ EM SỬ DỤNG KINECT
Chương này giới thiệu tổng quan về thiết bị camera Kinect để nhận dạng cử chỉ
tay trong giao tiếp người – máy, giới thiệu nhận dạng cử chỉ tay, giới thiệu về lập trình
game unity và game tương tác cho trẻ em sử dụng camera Kinect.
1.1. Các vấn đề liên quan đến thiết bị camera Kinect
Kinect là thiết bị được giới thiệu vào tháng 11 năm 2010 như một phụ kiện của
Xbox 360. Cảm biến chiều sâu (depth sensor) được sử dụng trong Kinect được phát triển
bởi Zeev Zalevsky, Alexander Shpunt, Aviad Maizels và Javier Garcia năm 2005.
Kinect chính thức được công bố vào ngày 01 Tháng Sáu Năm 2009, dưới cái tên "Project
Natal" ( Natal là tên một thành phố ở Brazil, nơi sinh của 1 giám đốc dự án này).
Hình 1.1- Camera Kinect của hãng Microsoft
1.1.1. Giới thiệu về thiết bị camera Kinect
Kinect (hay còn biết với mã là Project Natal) là thiết bị thu nhận các cảm biến
chuyển động, được phát triển bởi Microsoft. Thời gian đầu, Kinect là thiết bị chuyên
dụng của hệ máy Xbox 360 phục vụ cho việc chơi game.
Kinect sử dụng webcam, thiết bị thu phát sóng hồng ngoại và thiết bị thu nhận âm
thanh để ghi nhận tín hiệu chuyển động của game thủ và nhận dạng các lệnh điều khiển
thông qua giọng nói, giúp cho các game thủ tương tác với Xbox 360 mà không cần chạm
vào bất kì thiết bị điều khiển nào. Trong đó, game thủ có thể thao tác như thật.
Hình 1.2 – Tương tác của người dùng chơi game
5
Công cụ của Kinect hỗ trợ các chức năng tương tác sau:
-
Ghi nhận chuyển động tay (hand gesture) bao gồm các hành động xoay
vòng (circle), di chuyển tay (wave gesture), push,...
Ghi nhận chuyển động toàn cơ thể (full body skeleton), xác định các vị trí
chính của cơ thể như đầu, vai, cẳng tay, chân,…
Điều khiển bằng giọng nói.
Nhận dạng số người đang chơi.
1.1.2. Những thành phần chính của Kinect
Hình 1.3 - Những thành phần chính của Kinect
Các thành phần bên trong Kinect gồm có: bộ nhớ RAM, bộ cảm ứng Prime Sense
PS1080-A2, quạt tản nhiệt, động cơ điều khiển góc ngẩng (Motorized Tilt), bộ gia tốc 3
trục, 4 microphone (Multi – Array Mic) và 3 camera: RGB camera, bộ cảm biến độ sâu
(3D Depth Sensors).
Các thông số kỹ thuật:
-
Khoảng cách hiệu quả: 0.8 →3.5m.
RGB camera: độ phân giải 640 x 480, 30 frame/s, 32 bit màu.
Góc quay hiệu quả: 57º ngang, 43º dọc, ± 27º nghiêng.
Kết nối: USB 2.0.
Sensor: RGB& Depth.
Audio: 4 microphones.
Platfom: VS.NET 2010.
Middleware: SDK.
Ngôn ngữ: C++,C#.
OS: Win 7.
Dimensions: 1.5" x 7" x 1.9".
6
1.1.3. Thư viện hỗ trợ Kinect
Thư viện Libfreenect: Là thư viện được phát triển bởi OpenKinect do một
cộng đồng những người quan tâm đến phần cứng Kinect viết ra và chia sẻ. Cộng đồng
OpenKinect làm việc hoàn toàn tự nguyện và không vì mục đích lợi nhuận họ phát triển
Libfreenect thành một mã nguồn mở cho các hệ điều hành khác nhau Windows, Linux
và OS X. Hiện tại Libfreenect được đóng gói cho việc sử dụng trên Python, C, C++, C#,
Java JNI, Java JNA, Javascript.
Thư viện Code Laboratories Kinect: Code Laboratories (CL) là một công ty phần
mềm chuyên hỗ trợ các nhà phát triển, lập trình viên khai thác các tính năng của các
thiết bị xử lý ảnh. Trong số đó Kinect không phải là ngoại lệ, CL cung cấp cho người sử
dụng những tính năng cơ bản nhất của Kinect về camera, audio và motor.
Thư viện OpenNI: Được xem là thư viện mạnh nhất trước sự có mặt của Kinect
SDK 1.0, thư viện này hỗ trợ đa ngôn ngữ trên nhiều platform khác nhau. Mục đích
chính của OpenNI là xây dựng các hàm API chuẩn, cho phép thư viện có khả năng kết
hợp với các middleware nhằm làm tăng sức mạnh cho Kinect.
Thư viện Kinect SDK: SDK cung cấp cho nhà phát triển những bộ cảm biến có
chiều sâu, camera cảm biến màu sắc và xác định nguồn âm thanh theo chùm tia. Các
nhà phát triển cũng có thể theo dõi ảnh ở dạng khung sườn của một hay hai người đang
di chuyển trong tầm ngắm Kinect, từ đó các nhà phát triển có thể tạo ra những ứng dụng
hướng theo cử chỉ (gesture).
1.1.4. Một số ứng dụng của Kinect
Hệ thống điều khiển dựa trên camera theo dõi chuyển động Kinect của Microsoft
đã chứng minh giá trị ứng dụng cao của mình trong nhiều lĩnh vực từ y tế đến giáo dục.
Mua sắm vốn là một hoạt động xã hội và những kinh nghiệm mua sắm có thể hỗ
trợ nhiều người dùng cùng một lúc bằng cách tận dụng các công cụ xã hội.
Hình 1.4 – Kinect hỗ trợ shopping.
Theo đó, một chiếc xe đẩy đã được thiết kế đặc biệt, tích hợp thiết bị Kinect và
cùng một màn hình hiển thị đi kèm. Chiếc xe này có khả năng giúp nhận biết các món
7
hàng bạn mua, tự động kiểm tra chúng với danh sách đi chợ và thậm chí có thể tự đi
theo bạn loanh quanh trong siêu thị.
Trong giáo dục: Sử dụng Kinect, các nhà phát triển có thể tạo ra những trò chơi
thú vị và mang đến những đột phá trong giáo dục. Giáo viên có thể khiến bài học sinh
động hơn khi điều khiển bằng tay các hình minh họa. Chơi game sẽ giống như một quá
trình liên tục khám phá, sửa sai, tìm tòi cái mới cho đến khi thành thục, nhuần nhuyễn
mà không tạo cảm giác nhàm chán cho học sinh.
Điều khiển màn hình máy tính không dùng chuột, bàn phím:
Hình 1.5 - Điều khiển máy tính bằng Kinect
Ngoài ra, Đại học Nam California (Mỹ) giới thiệu bộ công cụ có tên Sloow kết
hợp với sensor cảm ứng của Microsoft để điều khiển hòm thư bằng hành động như mở
email với động tác như đang xé phong bì, trả lời thư bằng cách hất ngón cái ra phía sau,
hoặc làm động tác dán tem để gửi email đi.
Hình 1.6 - Điều khiển máy tính bằng cử chỉ
1.2. Giới thiệu nhận dạng cử chỉ tay trong giao tiếp người-máy
Trước đây, bàn phím và chuột là các thiết bị chính để thực hiện việc giao tiếp
người–máy. Tuy nhiên, con người giao tiếp chủ yếu bởi “nghe” và “nhìn”, do đó một
giao diện người–máy sẽ trực quan hơn nếu con người có thể điều khiển máy tính bằng
giọng nói hay cử chỉ giống như khi giao tiếp giữa người với người trong thế giới thực
mà không cần thông qua các thiết bị điều khiển khác như chuột hay bàn phím. Một ưu
điểm khác là người dùng có thể giao tiếp từ xa mà không cần phải tiếp xúc vật lý với
máy tính.
8
Để nhận dạng cử chỉ tay, bước đầu tiên trong hệ thống nhận dạng là phát hiện ra
cử chỉ tay bằng một thiết bị cảm nhận (camera/webcam), để thu thập các quan sát cần
cho việc phân loại hay miêu tả. Trong luận văn này, thiết bị cảm nhận được sử dụng để
thu nhận cử chỉ tay là Kinect. Kinect là camera tích hợp cảm biến chiều sâu được phát
triển bởi hãng Microsoft.
Sau đó, tiến hành xử lý hình ảnh, trích chọn đặc trưng để tính toán các thông tin
dưới dạng số hay dạng biểu tượng từ các dữ liệu quan sát và thực hiện công việc phân
loại dựa vào các đặc tính đã được trích chọn để nhận dạng cử chỉ. Các cử chỉ của bàn
tay được phát hiện dựa trên tập dữ liệu về cử chỉ tay mẫu được thu thập từ trước thông
qua hình ảnh từ webcam/video. Nhiệm vụ quan trọng của bài toán nhận dạng cử chỉ tay
là phải cho máy tính “học” và “huấn luyện” trên những cử chỉ tay mẫu để nó có thể nhận
dạng cử chỉ tay một cách chính xác.
1.2.1. Tiến trình nhận dạng cử chỉ tay
a. Sơ đồ khối của hệ thống nhận dạng cử chỉ tay
Tiến trình nhận dạng cử chỉ tay cơ bản có dạng như sau:
Hình 1.7 - Sơ đồ khối của hệ thống nhận dạng cử chỉ tay
b. Dữ liệu vào
Dữ liệu vào có thể là một hình ảnh, hoặc một chuỗi các hình ảnh (video) được chụp
bởi một máy ảnh duy nhất hướng về phía bàn tay người thực hiện các cử chỉ. Tuy nhiên,
cũng tồn tại các hệ thống sử dụng hai hoặc nhiều máy ảnh để thu được nhiều thông tin
về các tư thế tay. Ưu điểm của hệ thống là có thể chụp được nhiều góc độ của tư thế tay.
Hình 1.8 - Một tư thế tay ở nhiều hướng nhìn
9
Một hệ thống khác đã được trình bày trong [8], camera được gắn trên một chiếc
mũ để chụp khu vực ở phía trước của người đeo (xem Hình 1.9).
Hình 1.9 - Camera gắn trên mũ [8]
c. Tiền xử lý
Mục đích cơ bản của giai đoạn này là tối ưu hình ảnh thu được từ giai đoạn trước
để chuẩn bị trích xuất các đặc trưng trong giai đoạn tiếp theo. Chất lượng hình ảnh thu
được phụ thuộc vào điều kiện sáng và chất lượng của thiết bị ghi hình. Từ hình ảnh thu
nhận được ở dữ liệu vào ta có thể thực hiện xử lý ảnh cơ bản như: căn chỉnh ảnh, chuẩn
hóa ánh sáng, loại bỏ nhiễu, phân đoạn ảnh, lọc màu da,.. Dưới đây là một số kỹ thuật
tiền xử lý thường được áp dụng trong giai đoạn này.
Chuyển ảnh RGB sang ảnh nhị phân:
Ảnh màu RGB nên được chuyển sang dạng ảnh xám hoặc chuyển sang ảnh trong
không gian màu YcbCr (Y là độ sáng và Cb, Cr là hai thành phần màu) trước khi nó
được chuyển sang ảnh nhị phân.
Ảnh nhị phân là ảnh mà giá trị của các điểm ảnh chỉ được biểu diễn bởi một trong
hai giá trị 0 (màu đen) hoặc 1 (màu trắng). Để chuyển sang ảnh nhị phân thì nhất thiết
phải chỉ rõ ngưỡng để phân vùng ảnh thành đen hoặc thành trắng tương ứng với 0 hoặc1.
Như vậy, sau khi chuyển ảnh gốc RGB sang ảnh nhị phân chúng ta thu được ảnh
đen trắng mà trong đó những điểm ảnh trong vùng tay có màu trắng (1) và điểm ảnh nền
có màu đen (0), minh họa ở hình 1.10 [43].
(a)
(b)
Hình 1.10 - Chuyển ảnh RGB sang ảnh nhị phân
(a) Ảnh gốc – (b) Ảnh nhị phân biểu biễn bởi 0 và 1.
10
Lọc nhiễu:
Trong ảnh nhị phân, có thể có một số giá trị 0 trong vùng tay và có một số giá trị
1 trong khu vực nền. Khi đó, nền có những số 1 được biết đến như nhiễu xung quanh và
cử chỉ tay có một vài số 0 được biết đến như nhiễu cử chỉ. Những nhiễu này có thể dẫn
đến một vấn đề trong việc phát hiện đường viền của cử chỉ tay, vì vậy cần phải loại bỏ
các nhiễu này. Một phương pháp bộ lọc hình thái học đã được áp dụng sử dụng chuỗi
các sự giãn nở và xói mòn để có được một đường viền mịn, khép kín, và hoàn chỉnh của
một cử chỉ [41].
(a)
(b)
(c)
(d)
Hình 1.11 - Quá trình chuyển đổi ảnh và lọc nhiễu
(a) Ảnh gốc RGB – (b) Ảnh không gian YcbCr.
(c) Ảnh nhị phân – (d) Ảnh đã được lọc nhiễu.
Phân đoạn ảnh:
Phân đoạn ảnh là thực hiện việc phân vùng ảnh thành các vùng rời rạc và đồng
nhất với nhau hay nói cách khác là xác định các biên của các vùng ảnh đó. Như vậy,
mục tiêu của phân đoạn ảnh là làm nổi bật hoặc tách hẳn đối tượng cần quan tâm ra từ
ảnh ban đầu, làm đơn giản hóa và thay đổi cách biểu diễn để dễ dàng phân tích hơn. Một
số kỹ thuật phân đoạn ảnh phổ biến như:
- Phân đoạn ảnh dựa trên ngưỡng:
Các kỹ thuật phân đoạn ảnh dựa trên ngưỡng hầu hết đều dựa vào lược đồ mức
xám của ảnh để tính toán ngưỡng. Việc tính toán ngưỡng bao hàm việc xác định một tập
các giá trị ngưỡng (có thể là một hoặc nhiều giá trị ngưỡng), dựa vào giá trị ngưỡng để
phân tách ảnh ra thành những vùng có ý nghĩa.
11
(a)
(b)
Hình 1.12 - Phân đoạn ảnh dựa trên ngưỡng của lược đồ mức xám
(a) sử dụng một ngưỡng T - (b) Sử dụng hai ngưỡng T1 và T2.
- Phân đoạn ảnh dựa trên biên (cạnh):
Việc xác định biên ảnh là một vấn đề chủ yếu và đặc điểm quan trọng trong phân
tích ảnh vì các kĩ thuật phân đoạn ảnh chủ yếu dựa vào biên. Một điểm ảnh được gọi là
biên nếu ở đó có sự thay đổi đột ngột về mức xám. Tập hợp các điểm biên tạo thành
biên, hay còn gọi là đường bao của ảnh. Mỗi một biên là một thuộc tính gắn liền với
một điểm riêng biệt và được tính toán từ những điểm lân cận của nó. Một số phương
pháp phát hiện biên thông dụng như: Phương pháp đạo hàm bậc nhất (phương pháp
Gradient), phương pháp đạo hàm bậc hai (phương pháp Laplace), phương pháp Canny
do John Canny đề xuất vào năm 1986,….[41].
- Phân đoạn ảnh dựa vào màu da:
Da con người có màu rất đặc trưng, có thể dễ dàng nhận dạng và nó cũng không
bị ảnh hưởng bởi các phép biến đổi hình học của đối tượng. Vì vậy, phát hiện bàn tay
người dựa trên việc phát hiện da là một phương pháp khá đơn giản và có thể thực hiện
được.
Phương pháp này chỉ dựa vào thông tin về màu sắc nên các vùng ảnh không phải
là bàn tay như khuôn mặt, các vùng da khác trên cơ thể con người, thậm chí là các đối
tượng khác có màu giống với màu da cũng bị nhận diện như là bàn tay.
Hình 1.13 - Kết quả lọc màu da
12
d. Trích chọn đặc trưng
Một hình ảnh kỹ thuật số có thể chứa một lượng lớn dữ liệu, đặc biệt là đối với ảnh
có chất lượng tốt, hình ảnh chuyên nghiệp. Vì vậy, để thao tác trên một hình ảnh hiệu
quả, cần giảm bớt lượng dữ liệu phải xử lý. Cách tốt nhất để giải quyết vấn đề này là
trích xuất các đặc điểm quan trọng nhất của một hình ảnh mà có thể đại diện cho toàn
bộ hình ảnh. Những đặc điểm này được gọi là các đặc trưng hình ảnh. Như vậy, trích
chọn đặc trưng là chiết xuất thông tin từ dữ liệu thô mà nó phù hợp nhất cho mục đích
nhận dạng để giảm thiểu các biến thể trong một lớp và tối đa hóa các biến thể giữa các
lớp khác nhau.
Trong giai đoạn trích chọn đặc trưng, mỗi đối tượng được đại diện bởi một véc tơ
đặc trưng. Mục tiêu chủ yếu của trích chọn đặc trưng là trích xuất một tập hợp các đặc
trưng, trong đó có thể tối đa hóa tỷ lệ nhận dạng với sự nhầm lẫn nhỏ nhất. Các đặc điểm
của đối tượng được trích chọn tuỳ theo mục đích nhận dạng trong quá trình xử lý ảnh.
Có thể nêu ra một số đặc điểm của ảnh sau đây:
Đặc điểm không gian: Phân bố mức xám, biên độ, điểm uốn… Các đặc điểm loại
này thường được trích chọn bằng việc áp dụng phép biến đổi Haar-Like,… trên ảnh.
Đặc điểm biến đổi: Các đặc điểm loại này được trích chọn bằng việc áp dụng bộ
lọc Gabor lên ảnh như hình dáng bàn tay.
Đặc điểm biên và đường biên: Đặc trưng cho đường biên của đối tượng rất hữu ích
trong việc trích chọn các thuộc tính bất biến được dùng khi nhận dạng đối tượng. Các
đặc điểm này có thể được trích chọn nhờ toán tử Gradient, toán tử la bàn, toán tử
Laplace,…[2].
e. Nhận dạng
Thực hiện việc phân tích từ dữ liệu đầu vào của người dùng để kiểm tra trong dữ
liệu đầu vào đó có chứa cử chỉ đang xét hay không?. Dữ liệu đầu vào cũng qua các quá
trình tiền xử lý, trích chọn đặc trưng và sau đó đưa vào bộ nhận dạng. Bộ nhận dạng sẽ
phân loại các đặc trưng vào các lớp đã được định nghĩa trong giai đoạn huấn luyện trước
đó. Việc nhận dạng ở khâu này được áp dụng thêm một số kỹ thuật nhằm tăng độ chính
xác cho hệ thống.
Có nhiều kỹ thuật nhận dạng khác nhau như: đối sánh mẫu, máy hỗ trợ véc tơ
(SVM), mạng nơ-ron nhân tạo (ANN), mô hình Makov ẩn (HMM),…
1.2.2. Một số ứng dụng dựa trên nhận dạng cử chỉ tay
a. Ứng dụng trong thực tế ảo
Thực tế ảo là cụm từ dùng để miêu tả một không gian ba chiều được dựng lên bởi
máy tính. Khi bước vào không gian ảo này, con người sẽ hòa mình vào môi trường xung
13
quanh, có thể tự do tương tác và khám phá, có thể điều khiển vật dụng hoặc thậm chí
thực hiện hàng lọat các hành động phức tạp như thể đang ở ngoài đời thật.
Tương tác thực tế ảo sử dụng cử chỉ tay cho phép các đối tượng thực sử dụng các
cử chỉ bàn tay cho các tương tác 3D [15] hoặc 2D mô phỏng 3D [12].
Hình 1.14 - Sử dụng cử chỉ tay trong ứng dụng thực tế ảo
b. Ứng dụng trong điều khiển robot
Các cử chỉ được sử dụng để tương tác và điều khiển robot hoàn toàn tương tự như
các tương tác trong thực tế ảo và được vận hành bằng cách cung cấp dữ liệu video từ
máy ảnh nằm trên robot [13].
Hình 1.15 - Dùng các cử chỉ tay khác nhau để điều khiển robot
c. Điều khiển máy tính
Nhiều cử chỉ cho các tác vụ máy tính để bàn liên quan đến thao tác đồ họa, hoặc
chú thích và chỉnh sửa các tài liệu dựa trên cử chỉ [16]. Người dùng có thể sử dụng giọng
nói, cử chỉ tay để điều khiển máy tính, trình chiếu powerpoint và các thiết bị khác như
smart tivi...
Hình 1.16 - Người dùng điều khiển máy tính bằng cử chỉ tay
14
d. Ứng dụng trong y học
Cho phép các bác sĩ trực tiếp sử dụng cử chỉ tay đơn giản để thay đổi, di chuyển,
hoặc phóng to trên ảnh CT, MRI, và hình ảnh y tế khác thay vì phải hướng dẫn y tá hoặc
sử dụng bàn phím và chuột để tránh nguy cơ nhiễm trùng. Điều này có thể giúp các bác
sĩ xác định nhanh chóng hơn các vị trí thích hợp trong quá trình phẫu thuật.
Hình 1.17 - Bác sĩ sử dụng cử chỉ tay trong phẫu thuật
e. Ứng dụng trong lĩnh vực giải trí
Trong lĩnh vực giải trí sử dụng cử chỉ tay để điều khiển, tương tác với các ứng
dụng giải trí làm cho người dùng cảm thấy thoải mái.
ControlAir là một ứng dụng mới xuất hiện trên Mac App Store, cho phép người
dùng sử dụng các cử chỉ tay để điều khiển âm nhạc. Dễ dàng chuyển bài hát, tăng giảm
âm lượng một cách rất độc đáo và thú vị.
Hình 1.18 - Sử dụng cử chỉ tay để điều khiển âm nhạc
Freeman theo dõi bàn tay của một người chơi hoặc vị trí cơ thể để điều khiển
chuyển động và định hướng các đối tượng trò chơi tương tác. Play Station 2 đã giới thiệu
trò chơi Eye Toy, sử dụng camera theo dõi chuyển động tay cho các trò chơi tương tác.
Hình 1.19 - Sử dụng cử chỉ tay trong trò chơi Eye Toy
15
f. Ứng dụng trong ngôn ngữ ký hiệu
Ngôn ngữ cử chỉ là một trường hợp quan trọng của cử chỉ giao tiếp. Sử dụng cử
chỉ là một cách hiệu quả giúp người khuyết tật có thể giao tiếp với nhau cũng như giao
tiếp với máy tính một cách hiệu quả.
Hình 1.20 - Ví dụ về ngôn ngữ kí hiệu
1.3. Lập trình game sử dụng Unity
1.3.1. Unity là gì?
Unity là một trong những engine được giới làm game không chuyên cực kỳ ưa
chuộng bởi khả năng tuyệt vời của nó là phát triển trò chơi đa nền. Trình biên tập có thể
chạy trên Windows và Mac OS, và có thể xuất ra game cho Windows, Mac, Wii, iOS,
Android. Game cũng có thể chơi trên trình duyệt web thông qua plugin Unity Web
Player. Unity mới bổ sung khả năng xuất ra game trên widget cho Mac, và cả Xbox 360,
PlayStation 3.
1.3.2. Tổng quan về engine Unity
Giao diện Unity giống như nhiều môi trường làm việc khác layout có thể tùy chỉnh.
Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt. Chúng ta hãy xem xét
một cách bố trí giao diện Unity điển hình:
Hình 1.21 - Giao diện Editor của Unity
Như hình trên chúng ta thấy có 5 khung khác nhau:
-
Scene ① – cửa sổ xây dựng trò chơi.
Hierarchy ② – danh sách các GameObject trong một cảnh game.