Tải bản đầy đủ (.pdf) (26 trang)

Xây dựng game tương tác cho trẻ em sử dụng KINECT

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (726.27 KB, 26 trang )

ĐẠ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

TÓM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Đà Nẵng – Năm 2018


Công trình được hoàn thành tại
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Người hướng dẫn khoa học: TS. HUỲNH HỮU HƯNG

Phản biện 1: TS. Phạm Minh Tuấn
Phản biện 2: TS. Lê Xuân Vinh

Luận văn đã được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp
thạc sĩ Khoa học máy tính tại Trường Đại học Bách Khoa – Đại Học
Đà Nẵng vào ngày 16 tháng 06 năm 2018.

Có thể tìm hiểu luận văn tại:
− Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học Bách khoa.
− Thư viện Khoa Công nghệ thông tin, Trường Đại học Bách khoa –


ĐHĐN.


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 tiêu và nhiệm vụ nghiên cứu

2.1 Mục tiêu 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


2
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.

2.2 Nhiệm vụ nghiên cứu
- Nghiên cứu các kỹ thuật xử lý ảnh.
- Tìm hiểu các phương pháp nhận dạng, phân tích hành vi của
người trước Kinect nhằm phục vụ tương tác người – máy.
- Xây dựng chương trình demo để kiểm tra tính hiệu quả của
giải pháp.
3. Đối tượng và phạm vi nghiên cứu
3.1 Đố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.
3.2 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.
- 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
4.1 Phương pháp nghiên cứu 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 trước Kinect để điều khiển.
4.2 Phương pháp nghiên cứu thực nghiệm
- Nghiên cứu và khai thác công cụ Kinect của Microsoft.


3
- 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 luận văn

5.1 Ý nghĩa khoa học
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.
5.2 Ý nghĩa 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.


4
CHƯƠNG 1 -TỔNG QUAN VỀ XÂY DỰNG GAME TƯƠNG
TÁC CHO TRẺ EM SỬ DỤNG KINECT

1.1. Các vấn đề liên quan đến thiết bị camera Kinect
1.1.1. Giới thiệu về thiết bị camera Kinect
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.
1.1.2. Những thành phần chính của Kinect
1.1.3. Thư viện hỗ trợ Kinect
- Thư viện Libfreenect.
- Thư viện Code Laboratories Kinect.
- Thư viện OpenNI.
- Thư viện Kinect SDK .
1.1.4. Một số ứng dụng của Kinect
1.2. Giới thiệu nhận dạng cử chỉ tay trong giao tiếp người-máy
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


5
người thực hiện các cử chỉ.
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. Trích chọn đặc trưng
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.
e.Nhận dạ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.
b. Ứng dụng trong điều khiển robot.
c. Điều khiển máy tính.
d. Ứng dụng trong y học.
e. Ứng dụng trong lĩnh vực giải trí.
f. Ứng dụng trong ngôn ngữ ký hiệu.
1.3. Lập trình game sử dụng Unity
1.3.1. Unity là gì?


6
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
1.3.3. Tính năng của engine Unity
1.3.4. Tổng quan kiến trúc engine Unity
1.4. Giới thiệu về game tương tác cho trẻ em
Game chém hoa quả là tên tiếng Việt của game Fruit Ninja,
đúng như tên gọi của nó người chơi sẽ chém những loại quả hết sức
quen thuộc trong cuộc sống hàng ngày như: dứa, dâu, dưa hấu, táo,
dừa...theo cách mãnh liệt nhất như một Ninja thực thụ.
Những đặc điểm nổi bật của game:
- Game có yếu tố giải trí cao.
- Game có đồ họa đẹp.
- Âm thanh sống động hút hồn.
- Nhiều màn chơi, chế độ chơi.
- Rủi ro trong game.
KẾT CHƯƠNG
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


7
cho trẻ em sử dụng camera Kinect.


8
CHƯƠNG 2 - MỘT SỐ KỸ THUẬT TRÍCH CHỌN ĐẶC
TRƯNG VÀ NHẬN DẠNG CỬ CHỈ TAY

2.1. Một số kỹ thuật trích chọn đặc trưng cử chỉ tay
2.1.1. Đặc trưng chuyển động của bàn tay
Kênh khung xương dữ liệu thu được từ camera Kinect cho phép
ta trích được vị trí bàn tay theo thời gian. Như thế ta có được quỹ đạo
chuyển động của bàn tay như một danh sách các điểm trong không
gian 3 chiều. Vì số lượng khung ảnh của mỗi cử chỉ tay không giống
nhau nên ta không thể sử dụng trực tiếp danh sách điểm này như đặc
trưng của quỹ đạo. Ta cần phải trích các đặc trưng sao cho nó độc lập
với số lượng khung ảnh của một cử chỉ. Nhóm tác giả [4] tiến hành
nghiên cứu các đặc trưng có tính chất này theo 4 hướng: canh lề và
nội suy theo quỹ đạo, tổng hợp thông tin theo thời gian kết hợp cả hai
hướng trên và dựa trên tinh thần đặc trưng cục bộ SIFT. Từ đó, đề xuất
4 phương pháp mới cho việc trích xuất đặc trưng quỹ đạo chuyển động.
2.1.2. Đặc trưng các thành phần chính PCA
Thuật toán PCA được xây dựng theo các bước:
- Bước 1: Tiền xử lí.
- Bước 2: Xây dựng không gian mới.
- Bước 3: Chuyển dữ liệu từ không gian ban đầu sang không
gian mới.
2.1.3 Đặc trưng HOG
Các bước trích đặc trưng HOG trên ảnh:
Bước 1: Tính cường độ và hướng biến thiên tại mỗi pixel.
Bước 2: Chia ảnh đầu ra ở bước trên thành nhiều khối (block),
mỗi khối có số ô bằng nhau, mỗi ô có số pixels bằng nhau.
Bước 3: Tính vectơ đặc trưng cho từng khối và tính vectơ đặc


9
trưng từng ô trong khối.
Bước 4: Tính vectơ đặc trưng cho ảnh.

Áp dụng các bước trích đặc trưng HOG trên vùng ảnh ứng
viên
2.1.4. Đặc trưng cục bộ bất biến - SIFT
a. Giới thiệu
b. Thuật toán SIFT
- Bước 1: Phát hiện các điểm cực trị trong không gian tỉ lệ.
- Bước 2: Định vị các điểm hấp dẫn.
- Bước 3: Xác định hướng cho các điểm hấp dẫn.
- Bước 4: Mô tả các điểm hấp dẫn.

Hình 2.7 – Hướng phân bố trên ảnh và mô tả điểm hấp dẫn
2.1.5. Đặc trưng Haar-Like
a. Giới thiệu
Đặc trưng Haar-Like là một loại đặc trưng thường được dùng
cho bài toán nhận dạng trên ảnh. Đặc trưng Haar-Like dựa trên ý tưởng
tính độ chênh lệch giữa các giá trị mức xám của các điểm ảnh trong
các vùng kề nhau trong ảnh xám, mỗi đặc trưng là sự kết hợp của hai
hay ba hình chữ nhật “trắng” hay “đen” theo một trật tự, kích thước
nào đó. Hình 2.9 mô tả 4 đặc trưng Haak-Like như sau:


10
Hình 2.9 – Các đặc trưng Haar-Like
Để phát hiện đối tượng trong ảnh tốt hơn, các đặc trưng HaarLike cơ bản trên được mở rộng thành các nhóm đặc trưng cạnh, đặc

trưng đường và đặc trưng tâm [37] (xem Hình 2.10).
Hình 2.10 – Các đặc trưng Haar-Like mở rộng
2.1.6. Đặc trưng GIST
a. Giới thiệu và ý tưởng
b. Tính toán đặc trưng GIST

Đặc trưng GIST được tiến hành theo các bước như sau:
- Ảnh đầu vào sau khi được tiền xử lý sẽ tách ra thành 3 kênh
màu Red, Green và Blue riêng biệt.
- Áp dụng phép biến đổi Fourier trên mỗi kênh màu.
- Ứng với mỗi ảnh Fourier áp dụng lần lượt 20 bộ lọc Gabor
lên ảnh. Bộ lọc Gabor được tạo ra ở 3 scale và 8 hướng. Trong đó,
scale 1 và scale 2 sử dụng 8 bộ lọc, scale 3 sử dụng 4 bộ lọc.
- Cuối cùng, kết quả của mỗi bộ lọc được đưa qua phép biến
đổi Fourier ngược, sau đó chia thành 16 vùng bằng nhau và trích đặc
trưng. Kết quả của mỗi vùng là một đặc trưng.
2.1.7. Đặc trưng xương ảnh của bàn tay (Skeleton of the Hand)
a. Giới thiệu và ý tưởng
b. Phương pháp tìm xương ảnh
Các kỹ thuật tìm xương luôn là chủ đề nghiên cứu trong xử lý
ảnh. Do tính phức tạp của nó nên mặc dù có những nỗ lực cho việc


11
phát triển các thuật toán tìm xương nhưng các phương pháp đưa ra đều
bị mất mát thông tin. Có thể chia thành hai loại cho thuật toán tìm
xương cơ bản: Các thuật toán tìm xương dựa trên làm mảnh và các
thuật toán tìm xương không dựa trên làm mảnh.
2.2. Một số kỹ thuật nhận dạng cử chỉ tay
2.2.1. Kỹ thuật sử dụng máy vector hỗ trợ - SVM
Máy vectơ hỗ trợ (SVM - viết tắt tên tiếng Anh support
vector machine) là một khái niệm trong thống kê và khoa học máy
tính cho một tập hợp các phương pháp học có giám sát liên quan đến
nhau để phân loại và phân tích hồi quy. SVM dạng chuẩn nhận dữ
liệu vào và phân loại chúng vào hai lớp khác nhau. Do đó SVM là
một thuật toán phân loại nhị phân.

Nhiều thử nghiệm các ứng dụng khác nhau cho thấy SVM là
một trong những phương pháp phân loại có độ chính xác cao và
tương đối tổng quát cho bài toán nhận dạng.

Hình 2.16 - Minh họa mô hình SVM
Xét một bài toán nhị phân có giám sát. Nếu dữ liệu được biểu
diễn bởi, {xi,yi}, i=1, 2, …, N và yi ∈ {−1, +1}, với N là số mẫu
huấn luyện, yi=+1 mẫu huấn luyện lớp dương của lớp 𝜔1 và yi= -1
mẫu huấn luyện lớp âm của lớp 𝜔2 [14],[25],[28]. Giả sử 2 lớp là có
thể phân tách tuyến tính (linearly separable), có nghĩa là có thể tìm
thấy ít nhất một siêu phẳng được xác định bởi một vecto w với sai
lệch w0, như thế sẽ tối thiểu hóa giới hạn lỗi (phân lớp) mắc phải:
𝑓(𝑥) = 𝑤. 𝑥 + 𝑤0 = 0

(2.35)


12
Để tìm một siêu phẳng, w và w0 cần được tính như sau:
𝑦𝑖 (𝑤. 𝑥𝑖 + 𝑤0 ) ≥ +1, 𝑦𝑖 = +1 ( lớp𝜔1 )
𝑦𝑖 (𝑤. 𝑥𝑖 + 𝑤0 ) ≤ −1, 𝑦𝑖 = −1 (lớp 𝜔2 )
Hai phương trình này có thể kết hợp để có được:
𝑦𝑖 (𝑤. 𝑥𝑖 + 𝑤0 ) − 1 ≥ 0
Chúng ta cần chọn w và w0 để cho mặt phẳng siêu phẳng phân
tách có biên (margin) lớn nhất. Các siêu mặt phẳng ấy được xác định
như sau:
𝑤. 𝑥𝑖 + 𝑤0 = ±1

Hình 2.17 - Minh họa khoảng cách các biên
Với dữ liệu có thể được chia tách một cách tuyến tính, thì ta có

thể chọn hai siêu phẳng của biên sao cho không có điểm nào ở giữa
chúng và sau đó tăng khoảng cách giữa chúng đến tối đa có thể. Bằng
2

hình học, ta tìm được khoảng cách giữa hai siêu phẳng là ‖𝑤‖ . Vì vậy
ta cần cực tiểu hóa giá trị ‖𝑤‖.
Để đảm bảo không có điểm dữ liệu nào trong biên ta thêm vào
các điều kiện sau, với mỗi i ta có:
𝑦𝑖 (𝑤. 𝑥𝑖 + 𝑤0 ) − 1 ≥ 0, 𝑖 = 0,1, , , 𝑁
Sử dụng công thức Lagrange, các vấn đề trên có thể được chuyển
thành:
Cực đại hóa:
1
2

𝑁
∑𝑁
𝑖=1 λ𝑖 − ∑𝑖,𝑗=1 λ𝑖 λ𝑗 𝑦𝑖 𝑦𝑗 (𝑥𝑖 . 𝑥𝑗 )

Với điều kiện:

(2.36)


13
𝑁

∑ λ𝑖 𝑦𝑖 = 0 𝑣à λ𝑖 ≥ 0, 𝑖 = 1, 2, … , 𝑁
𝑖=1


Với λ𝑖 là hệ số nhân Lagrange. Theo công thức này, các hàm phân lớp
siêu phẳng tối ưu trở thành:
𝑓(𝑥) = ∑ λ𝑖 𝑦𝑖 (𝑥𝑖 𝑥) + 𝑤0
𝑖∈𝑆

Với S là tập con của mẫu huấn luyện tương ứng với hệ số nhân
của Lagrange khác 0. Mẫu huấn luyện được gọi là vecto hỗ trợ.
Để xử lý trường hợp chứa nhiễu, cần nới lỏng các điều kiện
biên bằng cách sử dụng các biến slack ξ 𝑖 (≥ 0).

Hình 2.19 - Xử lý trường hợp chứa nhiễu
Cần phải tích hợp lỗi trong hàm tối ưu mục tiêu bằng cách gán
giá trị chi phí (cost) cho các lỗi và tích hợp chi phí này trong hàm
mục tiêu mới:
Cực tiểu hóa:
1
2

𝐽(𝑤, 𝑤0 , ξ ) = ‖𝑤‖ 2 + 𝐶 ∑𝑁
𝑖=1 ξ 𝑖

(2.37)

Với điều kiện:
𝑖 (𝑤. 𝑥

+ 𝑤0 ) ≥ 1 − ξ 𝑖

Trong trường hợp không thể phân chia tuyến tính, cách tiếp
cận sử dụng SVM là ánh xạ các vectơ trong không gian gốc sang một

không gian mới, thường là có số chiều lớn hơn. Vấn đề là việc tính
toán các ánh xạ này có thể có độ phức tạp tính toán lớn. Để tránh việc


14
tính toán các ánh xạ, một kỹ thuật được sử dụng là dùng các hàm
nhân. Hàm nhân cho phép tính tích vô hướng giữa hai vectơ trong
không gian mới mà không cần biết ánh xạ thực của các véctơ trong
không gian đó.
Φ(x) Φ(z)=K(x,z)

Hình 2.20 - Áp dụng Kernel phân loại trên không gian đặc trưng
Trong đó K(x,z) là một hàm nhân, hàm này có thể được sử
dụng trực tiếp mà không cần tìm hàm ánh xạ Φ.
Đối với bài toán tối ưu kép được tạo ra như sau:
Cực đại hóa:
1
2

𝑁
∑𝑁
𝑖=1 𝜆𝑖 − ∑𝑖,𝑗=1 𝜆𝑖 𝜆𝑗 𝑦𝑖 𝑦𝑗 𝐾(𝑥𝑖 . 𝑥𝑗 )

(2.38)

Với điều kiện:
𝑁

∑ 𝜆𝑖 𝑦𝑖 = 0 𝑣à 𝜆𝑖 ≥ 0, 𝑖 = 1,2, … , 𝑁
𝑖=1


Kết quả phân lớp:
𝑓(𝑥) = ∑ 𝜆𝑖 𝑦𝑖 𝐾(𝑥𝑖 𝑥) + 𝑤0
𝑖∈𝑆

Mục đích thuật toán SVM tìm ra được khoảng cách biên lớn
nhất để tạo kết quả phân lớp tốt. Khoảng cách biên càng lớn thì mặt
phẳng quyết định càng tốt đồng thời việc phân loại càng chính xác.
2.2.2. Kỹ thuật sử dụng mạng nơ-ron nhân tạo - ANN
2.2.3. Kỹ thuật K-láng giềng gần nhất
2.2.4. Kỹ thuật sử dụng mô hình Markov ẩn – HMM


15

2.3. Mô tả game chém trái cây sử dụng Kinect

Hình 2.26 - Sơ đồ mô tả game chém trái cây sử dụng Kinect
KẾT CHƯƠNG
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ụ 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.


16
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
3.1. Mô tả bài toán

Hình 3.1 - Sơ đồ khối của bài toán
3.2. Giải pháp đề xuất của hệ thống
3.2.1. Sơ đồ hoạt động của hệ thống

Hình 3.2 - 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


17
3.2.2. Phát hiện bàn tay

Hình 3.3 - Sơ đồ vị trí giữa người thực hiện cử chỉ và camera Kinect
Khi biểu diễn cử chỉ, người thực hiện đưa tay vào trong miền
[0.8, 0.8 + α] và ảnh độ sâu thu được sẽ chỉ chứa vùng bàn tay. Ràng
buộc này không gây ra sự bất tiện đáng kể nào, bởi người sử dụng
thường luôn có xu hướng đứng tại vị trí cách camera một khoảng cố
định.
3.2.3. Tiền xử lý
3.2.4. Trích chọn đặc trưng
3.2.5. Nhận dạng cử chỉ tay
Thuật toán SVM:
Xét bài toán phân lớp đơn giản nhất – phân lớp hai lớp với tập
dữ liệu mẫu {(xi, yi), i = 1, 2,…, N, xi ∈Rm}, trong đó tập mẫu là các
vector đối tượng được gán nhãn thành các mẫu dương và mẫu âm
như sau :
- Mẫu dương là các mẫu xi thuộc lớp được quan tâm và được

gán nhãn yi = 1.
- Mẫu âm là các mẫu xi không thuộc lớp cần quan tâm và được
gán yi = - 1.
Phương pháp này thực chất là lời giải cho một bài toán tối ưu,
trong đó mục tiêu là tìm ra một không gian H và siêu mặt phẳng
quyết định h trên H sao cho sai số phân lớp là thấp nhất. Trong


18
trường hợp này, tập phân lớp SVM là mặt siêu phẳng phân tách các
mẫu dương khỏi các mẫu âm với độ chênh lệch cực đại, trong đó độ
chênh lệch – còn gọi là lề - được xác định bằng khoảng cách giữa
các mẫu dương và các mẫu âm gần siêu phẳng nhất. Siêu phẳng này
được gọi là siêu phẳng lề tối ưu.

Hình 3.6 - Minh họa bài toán phân lớp bằng phương pháp SVM
Các siêu phẳng trong không gian đặc trưng n chiều có phương
trình tổng quát:
C + w1x1+ w2x2+ … + wnxn= 0

(3.1)

Phương trình này tương đương với C + Σwi xi= 0 (với i =
1,…,n), trong đó bộ giá trị w = (w1, w2, …, wn) là bộ hệ số siêu phẳng
hay là vector trọng số, C là độ dịch chuyển, khi thay đổi w và C thì
hướng và khoảng cách từ gốc toạ độ đến siêu phẳng thay đổi.
Bộ phân lớp SVM được định nghĩa như sau:
f(x) = sign(C + Σwixi)

(3.2)


Trong đó:
sign(z) = +1 nếu z ≥ 0,

(3.3)

sign(z) = -1 nếu z < 0.
Nếu f(x) = +1 thì x thuộc về lớp dương (miền quan tâm).
Ngược lại, nếu f(x) = -1 thì x thuộc về lớp âm (miền khác).
Mô hình học máy SVM tạo ra một siêu phẳng phụ thuộc vào
tham số vector trọng số w và độ dịch chuyển C. Mục tiêu của phương
pháp SVM là ước lượng w và C để cực đại hóa lề giữa các lớp dữ liệu


19
dương và âm. Các giá trị khác nhau của lề cho ta các họ siêu mặt
phẳng khác nhau, lề càng lớn thì khả năng phân lớp của SVM càng
tăng và sai số tổng quát càng giảm. Quá trình phân lớp là tối ưu khi
sai số phân lớp là cực tiểu.
Ta có phương trình sau:
min 𝐶 ∑ℓ𝑖=1 n𝑖 +

w,b,n

1
‖𝑤‖2
2

(3.4)


𝑠. 𝑡. 𝑦𝑖 [𝑤. 𝑥𝑖 − 𝑏] + n𝑖 ≥ 1
n𝑖 ≥ 0, 𝑖 = 1, … . , ℓ
Tìm ra được vector trọng số w và sai số của mỗi điểm trong tập
huấn luyện là ηi, ta có phương trình tổng quát của siêu phẳng được
tìm ra bởi thuật toán SVM:
f(x1, x2,…, xn) = C +Σwi xi

(3.5)

với i = 1,…, n, trong đó n là số dữ liệu huấn luyện.
Sau khi đã tìm được phương trình của siêu phẳng bằng thuật
toán SVM, áp dụng công thức để tìm ra nhãn lớp cho các dữ liệu
mới.
Huấn luyện SVM:
Ứng dụng SVM trong bài toán phân lớp cử chỉ tay:
Một mô hình SVM cơ bản là một bộ phân lớp nhị phân. Vì
vậy, để áp dụng SVM cho bài toán phân lớp cử chỉ tay, với số lớp dữ
liệu lớn hơn 2, người ta thường sử dụng hai chiến lược chính: 1 – tất
cả hay 1 – 1 để xử lý dữ liệu đa lớp.
Với chiến lược 1 – tất cả cần xây dựng k mô hình SVM ứng
với k lớp. Với mô hình thứ i, ta xem một lớp i như là lớp dương và
các lớp khác xem như là lớp âm. Để nhận dạng một phần tử dữ liệu
mới thuộc lớp nào ta cho cả k mô hình SVM cùng phân lớp phần tử,
sau đó quyết định lớp phần tử mới bằng phương pháp bình chọn số


20
đông.
Với Chiến lược 1 – 1 cũng xử lý tương tự. Tuy nhiên, ta cần
phải xây dựng 𝐶2𝑘 =


𝑘(𝑘−1)
2

mô hình tất cả, mỗi mô hình xây dựng dựa

trên dữ liệu của 2 lớp.
3.3. Xây dựng chương trình ứng dụng
3.3.1. Tổng quan về chương trình
Chương trình được viết bằng ngôn ngữ lập trình C# trong bộ
phần mềm Visual Studio 2017 của Microsoft, cùng với sự hỗ trợ của
bộ thư viện Microsoft Kinect SDK.
Chương trình được xây dựng với chức năng cho phép người
chơi chơi game chém trái cây bằng cử chỉ tay.
Khi người chơi đứng trước Camera Kinect, màn hình khởi
động xuất hiện; người chơi chém vào nút “bắt đầu” để vào game. Các
loại trái cây và bom sẽ bay ngẫu nhiên ra màn hình, người chơi cần
dùng tay chém vào không gian sao cho “trúng” các trái cây để ghi
điểm, trúng bom bị trừ điểm. Camera Kinect cũng thu lại tọa độ các
khớp xương cần thiết để vẽ lại hình bóng của người chơi để người
chơi dễ dàng xác định vị trí.
Người chơi có thể sử dụng cử chỉ nắm tay để chém được cùng
lúc tất cả các trái cây xuất hiện ở màn hình khi đạt được mốc điểm
quy định.
Mỗi loại trái cây có một giá trị điểm số khác nhau. Khi chém
trúng trái nào thì sẽ được cộng điểm tương ứng. Chém trúng bom bị
trừ điểm. Game kết thúc thì điểm số dưới 0 hoặc chém trúng bom 3
lần.



21

3.3.2. Xây dựng CSDL hình ảnh trái cây
3.3.3. Thuật toán
Bước 1: - Khởi động Kinect;
- Lấy tọa độ các khớp xương cơ bản của người dùng để có thể
lấy tọa độ khớp xương các bàn tay;
- Tạo giao diện game và cho các loại trái cây, bom xuất hiện
ngẫu nhiên.
Bước 2: Kiểm tra tọa độ các bàn tay có trùng khớp với tọa độ
trái cây đang bay?
- Đúng: Thực hiện bước 3;
- Sai: Chuyển bước 7;
Bước 3: Kiểm tra trạng thái bàn tay có mở không?
- Mở: Thực hiện bước 4;
- Nắm: Chuyển bước 5;
Bước 4: Cho xuất hiện hình ảnh trái cây bị chém và cộng điểm
tương ứng.
Bước 5: Kiểm tra điểm số có đạt ngưỡng để chém tất cả chưa?
- Đúng: Thực hiện bước 6;
- Sai: bỏ qua;
Bước 6: Cho tất cả các trái cây xuất hiện trên màn hình bị
chém.Tính điểm.
Bước 7: Kiểm tra tọa độ các bàn tay có trùng khớp với tọa độ
bom đang bay không?
- Đúng: Thực hiện bước 8;
- Sai: Bỏ qua;
Bước 8: Kiểm tra số điểm đã âm chưa?
- Đúng: Chuyển qua bước 10;



22
- Sai: Chuyển qua bước 9;
Bước 9: Kiểm tra số lần chém trúng bom vượt qua 3 chưa?
- Đúng: Chuyển qua bước 10;
- Sai: tăng số lần chém trúng bom lên 1; Trừ điểm;
Bước 10: Kết thúc.
3.3.4. Chương trình
Thuật toán cài đặt chương trình:

Hình 3.9 - Sơ đồ mô tả thuật toán cài đặt chương trình
Giao diện chương trình
Dùng cử chỉ tay để thực hiện chơi game
3.3.5. Thực nghiệm
KẾT CHƯƠNG
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.


23
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Lĩnh vực nhận dạng đang được các nước trên thế giới phát triển
và đạt được những thành tựu đáng kể trong thời gian gần đây. Trong
luận văn này tôi đã trình bày tổng quát những kiến thức và nền tảng
trong lĩnh vực xử lý ảnh ứng dụng trong ngành công nghệ nhận dạng

cử chỉ tay. Từ đó, tôi đã thực hiện đề tài về nhận dạng cử chỉ tay trong
giao tiếp người-máy, với mục tiêu là thiết kế một giao diện người-máy
cho phép giao tiếp hiệu quả và hấp dẫn, hỗ trợ người chơi game chém
trái cây một cách vui vẻ, thú vị với giao diện dễ sử dụng, đẹp mắt và
hấp dẫn. Qua quá trình nghiên cứu và thực hiện, luận văn đã trình bày
những kiến thức tổng quan về cử chỉ tay và cơ sở lý thuyết về nhận
dạng cử chỉ tay trong giao tiếp người-máy. Luận văn đã nghiên cứu và
lựa chọn kỹ lưỡng một số kỹ thuật trích chọn đặc trưng ảnh của cử chỉ
tay, các thuật toán nhận dạng cử chỉ tay phổ biến và hiệu quả hiện nay.
Đồng thời luận văn cũng đã tìm hiểu khả năng ứng dụng và hiệu quả
nhận dạng chính xác của một số hệ thống nhận dạng cử chỉ tay đã được
một số tác giả xây dựng trước đó. Từ đó lựa chọn 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 thành công chương trình ứng dụng dựa
trên giải pháp đã đề xuất; góp phần xây dựng được chương trình ứng
dụng với chức năng cho phép người chơi game chém trái cây bằng cử
chỉ tay cùng với sự hỗ trợ của bộ thư viện Microsoft Kinect SDK.
Trong quá trình thực hiện đề tài, do có nhiều hạn chế nên kết quả đạt
được chưa cao: CSDL chưa phong phú, chỉ mới giới hạn một người
chơi, giới hạn cử chỉ điều khiển đơn giản và nếu người chơi đi vào vị
trí tầm nhìn khuất thì việc nhận dạng cử chỉ tay ảnh hưởng không
nhận dạng được cử chỉ.


×