ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
KHOÁ LUẬN TỐT NGHIỆP
TƢƠNG TÁC VỚI MÁY TÍNH BẰNG
CỬ ĐỘNG TỰ NHIÊN CỦA CƠ THỂ
VỚI KINECT
Giảng viên hƣớng dẫn:
Sinh viên thực hiện:
Lớp:
Khoá:
ThS. PHẠM THI VƢƠNG
TRẦN PHƢỚC VIỆT (07520603)
TRẦN CÔNG VƢƠNG (07520422)
CNPM02
02
TP. Hồ Chí Minh, tháng 12 năm 2011
ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
KHOÁ LUẬN TỐT NGHIỆP
TƢƠNG TÁC VỚI MÁY TÍNH BẰNG
CỬ ĐỘNG TỰ NHIÊN CỦA CƠ THỂ
VỚI KINECT
Giảng viên hƣớng dẫn:
Sinh viên thực hiện:
Lớp:
Khoá:
ThS. PHẠM THI VƢƠNG
TRẦN PHƢỚC VIỆT (07520603)
TRẦN CÔNG VƢƠNG (07520422)
CNPM02
02
TP. Hồ Chí Minh, tháng 12 năm 2011
MỞ ĐẦU
Từ khi máy tính cá nhân ra đời, máy tính ngày càng trở nên thân thiện với
ngƣời sử dụng hơn. Những cuộc cách mạng lớn về thiết bị phần cứng và phần mềm
đã thay đổi cách con ngƣời tƣơng tác với máy tính. Có thể kể đến 2 cuộc cách mạng
về tƣơng tác ngƣời-máy mà chuột máy tính và màn hình cảm ứng đa điểm đã tạo ra.
Năm 2010, Microsoft cho ra mắt thiết bị cảm biến Kinect có thể cho phép ngƣời
dùng máy chơi game Xbox 360 có thể tƣơng tác trong trò chơi bằng cử động của cơ
thể, và không cần giữ thiết bị gì trên ngƣời. Qua hơn 1 năm xuất hiện và phát triển,
cảm biến Kinect đã cho thấy nó có tiềm năng trở thành thiết bị tiếp theo khởi xƣớng
một cuộc cách mạng mới về tƣơng tác ngƣời-máy. Tƣơng lai con ngƣời có thể ra
lệnh cho máy mà không cần phải chạm vào thiết bị nào, lúc này tƣơng tác chỉ bằng
cử động của cơ thể hoặc ra lệnh bằng giọng nói.
Hiện tại, công cụ lập trình trên thiết bị Kinect vẫn còn mới ở bản beta, và chỉ
hỗ trợ nhận diện ngƣời đứng trƣớc thiết bị theo dạng một khung xƣơng với các
điểm khớp. Các công cụ lập trình trên Kinect chƣa có sẵn thành phần hỗ trợ việc
nhận diện các cử chỉ của ngƣời dùng, việc này vẫn đang đƣợc các lập trình viên tự
do phát triển theo nhiều phƣơng pháp khác nhau. Trong khi đây lại là chức năng
quan trọng không thể thiếu đối với ứng dụng nhận diện cử chỉ với Kinect.
Nhận thấy chƣa có bộ công cụ nhận diện cử chỉ nào hoạt động hiệu quả cao
và nổi bật, nhóm thực hiện đề tài xây dựng một bộ công cụ nhận diện cử chỉ bằng
Kinect có độ chính xác cao, có khả năng mở rộng các dạng cử chỉ khác nhau, và
tiện dụng cho việc phát triển các ứng dụng sử dụng bộ công cụ đó.
Phƣơng pháp nhóm sử dụng đƣợc rút kinh nghiệm từ các bộ công cụ của
những lập trình viên khác và thông qua quan sát, phân tích thói quen sử dụng của
ngƣời dùng. Trong quá trình đứng trƣớc máy thì chỉ một số động tác là ngƣời dùng
muốn máy tính hiểu nhƣ một lệnh, thời gian còn lại là các chuyển động tự do. Vì
thế nhóm đã đề ra một số nguyên tắc chung, phù hợp với động tác tự nhiên của
ngƣời dùng và dễ nhớ, để quy định cho việc xác định khi nào ngƣời dùng đang thực
hiện lệnh và khi nào không. Từ đó nhóm tiếp tục phát triển tính năng nhận diện các
cử chỉ khác nhau.
Kết quả là việc đề ra các nguyên tắc mới đã giúp cho quá trình lập trình xử lý
nhận diện các cử chỉ của ngƣời dùng đơn giản hơn rất nhiều, cử chỉ đƣợc nhận cũng
chính xác hơn và không để xảy ra bỏ sót cử chỉ. Nhóm đã sử dụng bộ công cụ nhận
diện cử chỉ mình đã xây dựng để phát triển ứng dụng minh hoạ và qua đó khẳng
định đƣợc tính năng và hiệu quả của bộ công cụ đó.
Ứng dụng minh hoạ đã đƣợc xây dựng là một chƣơng trình giúp ngƣời thuyết
trình có thể điều khiển trình chiếu PowerPoint mà không cần đứng gần máy tính và
không cần cầm theo thiết bị nào. Không chỉ dừng lại ở việc là một chƣơng trình
điều khiển PowerPoint, ứng dụng còn cho thấy những thể nghiệm mới khi tận dụng
các khả năng của cảm biến Kinect. Khả năng quay hình của camera RGB trên
Kinect đã đƣợc nhóm tận dụng trở thành một máy quay, có thể thay thế máy quay
và máy chiếu vật thể trong phòng học đa năng thông thƣờng. Kinect còn mang lại
trải nghiệm tƣơng tác khác với tƣ duy truyền thống, ngƣời dùng không tƣơng tác
trên mặt phẳng 2 chiều nữa mà đã chuyển lên không gian 3 chiều. Tận dụng khả
năng này, nhóm cũng đã thử nghiệm một chức năng cho ngƣời dùng tƣơng tác với
mô hình hình học không gian, xây dựng thành công đối tƣợng hiển thị và tƣơng tác
hình học không gian. Các tính năng này đƣợc tích hợp trong ứng dụng điều khiển
PowerPoint thành một chƣơng trình thống nhất.
Bộ công cụ nhóm đã xây dựng hoạt động hiệu quả và có thể tiếp tục phát
triển mở rộng thêm để sử dụng phát triển nhiều chƣơng trình ứng dụng có trải
nghiệm mới mẻ thú vị. Bộ công cụ mong muốn sẽ góp phần tăng thêm tốc độ phát
triển các ứng dụng tƣơng tác bằng cử chỉ với Kinect, đƣa tƣơng tác ngƣời-máy mới
này đƣợc phổ biến rộng rãi hơn.
LỜI CẢM ƠN
Chúng em xin chân thành cảm ơn khoa Công Nghệ Phần Mềm, trƣờng Đại
Học Công Nghệ Thông Tin, Tp.HCM đã tạo điều kiện tốt cho chúng em thực hiện
đề tài tốt nghiệp này.
Chúng em xin chân thành cảm ơn Thầy Phạm Thi Vƣơng nói riêng, ngƣời đã
tận tình hƣớng dẫn, chỉ bảo chúng em trong suốt thời gian thực hiện đề tài, cũng
nhƣ toàn thể giảng viên khoa Công Nghệ Phần Mềm và các giảng viên trƣờng Đại
Học Công Nghệ Thông Tin đã truyền đạt cho chúng em những kiến thức hữu ích
trong suốt thời gian học tại trƣờng.
Chúng em xin gửi lòng biết ơn sâu sắc đến ba, mẹ, các anh chị và bạn bè đã
ủng hộ, động viên, giúp đỡ chúng em trong trong suốt thời gian học tập, nghiên cứu
và thực hiện đề tài.
Do thời gian và kiến thức còn hạn hẹp, mặc dù chúng em đã cố gắng hoàn
thành luận văn trong phạm vi và khả năng cho phép, nhƣng chắc chắn sẽ không
tránh khỏi những thiếu sót, kính mong sự cảm thông và tận tình chỉ bảo của quý
Thầy Cô và các bạn.
TP. Hồ Chí Minh, ngày 3 tháng 1 năm 2012
Trần Phƣớc Việt & Trần Công Vƣơng
NHẬN XÉT
(Của giảng viên hƣớng dẫn)
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
NHẬN XÉT
(Của giảng viên phản biện)
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
.....................................................................................................................................
MỤC LỤC
CHƢƠNG 1 - GIỚI THIỆU .....................................................................................1
1.1. Giới thiệu tổng quan vấn đề ..........................................................................1
1.2. Đánh giá sơ lƣợc về hiện trạng phát triển phần mềm với Kinect..............3
1.2.1. Tình hình phát triển ...................................................................................3
1.2.2. Một số sản phẩm sử dụng Kinect tiêu biểu ...............................................5
1.3. Mục tiêu đề tài ..............................................................................................10
1.4. Mô tả nội dung báo cáo................................................................................12
CHƢƠNG 2 - GIỚI THIỆU THIẾT BỊ KINECT, BỘ CÔNG CỤ PHÁT
TRIỂN PHẦN MỀM CHO KINECT (SDK) CỦA MICROSOFT VÀ MỘT SỐ
BỘ THƢ VIỆN HỖ TRỢ KHÁC. .........................................................................14
2.1. Giới thiệu về Microsoft Kinect ....................................................................14
2.1.1. Lịch sử phát triển ....................................................................................14
2.1.2. Kỹ thuật ...................................................................................................17
2.2. Bộ công cụ phát triển phần mềm cho Kinect (SDK) của Microsoft ........18
2.2.1. Cấu hình làm việc với SDK ....................................................................20
2.2.2. Kiến trúc tƣơng tác với Windows ...........................................................20
2.2.3. NUI API ..................................................................................................22
2.2.4. Audio API ...............................................................................................33
2.3. Giới thiệu một số thƣ viện khác ..................................................................37
2.3.1. Open XML ..............................................................................................37
2.3.2. Office 2003 Primary Interop Assemblies ...............................................38
2.3.3. Lớp System.Windows.Forms.SendKeys ................................................38
2.3.4. Sơ lƣợc bộ công cụ HelixToolkit ............................................................39
CHƢƠNG 3 - TỔNG QUAN GIẢI PHÁP VÀ HỆ THỐNG XÂY DỰNG
TRONG ĐỀ TÀI .....................................................................................................40
3.1. Giải pháp nhận dạng cử chỉ cơ thể .............................................................40
3.1.1. Nguyên tắc nhận dạng cử chỉ ..................................................................40
3.1.2. Statechart tƣơng tác cử chỉ ......................................................................45
3.1.3. Cấu trúc xây dựng ...................................................................................45
3.1.4. Thuật toán nhận diện cử chỉ ....................................................................47
3.1.5. Các cử chỉ mở rộng đƣợc xây dựng sẵn trong bộ công cụ......................51
3.1.6. Thuật toán nhận diện các cử chỉ mở rộng ...............................................52
3.2. Giải pháp cho ứng dụng minh hoạ .............................................................60
3.2.1. Các chức năng của ứng dụng minh hoạ ..................................................60
3.2.2. Kiến trúc ứng dụng minh hoạ .................................................................61
3.2.3. Sơ lƣợc các project trong giải pháp ........................................................63
3.3. Cấu hình yêu cầu ..........................................................................................63
3.3.1. Cấu hình chạy ứng dụng .........................................................................63
3.3.2. Môi trƣờng xây dựng và phát triển ứng dụng .........................................64
CHƢƠNG 4 - PHÂN TÍCH THIẾT KẾ ỨNG DỤNG ........................................65
4.1. Phân tích Use Case .......................................................................................65
4.1.1. Use case chọn tập tin trình chiếu ............................................................65
4.1.2. Use case trình chiếu tập tin PowerPoint .................................................65
4.1.3. Use case chụp và hiển thị ảnh .................................................................66
4.1.4. Use case hiển thị video ngƣời dùng ........................................................67
4.1.5. Use case tƣơng tác hình học 3D ..............................................................67
4.2. Sequence Diagram........................................................................................68
4.2.1. Chọn tập tin trình chiếu ...........................................................................68
4.2.2. Trình chiếu tập tin PowerPoint ...............................................................69
4.2.3. Chụp và hiển thị ảnh ...............................................................................69
4.2.4. Hiển thị video ngƣời dùng ......................................................................70
4.2.5. Tƣơng tác hình học 3D ...........................................................................70
4.3. Sơ đồ lớp........................................................................................................71
4.3.1. Sơ đồ lớp bộ xử lý cử chỉ ........................................................................71
4.3.2. Sơ đồ lớp ứng dụng .................................................................................74
4.4. Thiết kế giao diện .........................................................................................76
4.4.1. Giao diện chức năng điều khiển PowerPoint ..........................................76
4.4.2. Giao diện chọn và cắt ảnh .......................................................................77
CHƢƠNG 5 - XÂY DỰNG ỨNG DỤNG .............................................................79
5.1. Xây dựng công cụ nhận diện cử chỉ............................................................79
5.1.1. Quản lý thiết bị, nhận diện cử chỉ ...........................................................79
5.1.2. Xây dựng lớp nhận diện các cử chỉ mở rộng ..........................................81
5.2. Xử lý hiển thị menu của ứng dụng minh hoạ ............................................83
5.2.1. Thao tác cử chỉ tƣơng tác với menu ........................................................84
5.2.2. Cấu trúc các menu ...................................................................................86
5.2.3. Lớp quản lý menu MenuManager ...........................................................87
5.3. Xử lý điều khiển chuột .................................................................................90
5.3.1. Tƣơng tác điều khiển chuột.....................................................................91
5.3.2. Xây dựng chức năng gửi sự kiện chuột ..................................................91
5.3.3. Thuật toán xử lý nhận diện cử chỉ điều khiển chuột ...............................95
5.4. Tƣơng tác PowerPoint .................................................................................96
5.4.1. Sơ đồ Use Case tƣơng tác PowerPoint....................................................96
5.4.2. Sơ đồ FlowChart xử lý tƣơng tác PowerPoint ........................................99
5.5. Chụp hình vật thể trƣớc Kinect ................................................................103
5.5.1. Mô tả .....................................................................................................103
5.5.2. Sơ đồ Use Case chức năng chụp hình vật thể .......................................103
5.5.3. Sơ đồ FlowChart xử lý chụp hình vật thể với Kinect. ..........................106
5.6. Xây dựng control tƣơng tác với hình học không gian ............................108
5.6.1. Xây dựng các đối tƣợng hình học không gian ......................................108
5.6.2. Xây dựng tƣơng tác với hình học không gian .......................................109
CHƢƠNG 6 - ĐÁNH GIÁ, KẾT LUẬN .............................................................112
6.1. Đánh giá kết quả đạt đƣợc ........................................................................112
6.2. So sánh ứng dụng nghiên cứu đƣợc với các ứng dụng và công cụ hiện có
.............................................................................................................................113
6.2.1. So sánh với chuột không dây và bút laser. ............................................113
6.2.2. So sánh với nhận dạng cử chỉ qua camera thông thƣờng......................114
6.3. Hƣớng mở rộng và phát triển đề tài .........................................................115
DANH MỤC TÀI LIỆU THAM KHẢO .............................................................116
PHỤ LỤC A: HELIXTOOLKIT - CÔNG CỤ LẬP TRÌNH 3D TRÊN
WINDOWS PRESENTATION FOUNDATION ...............................................119
A.1. Mô tả dự án ................................................................................................119
A.2. Danh sách các tính năng ...........................................................................119
A.3. Các tƣơng tác bằng chuột .........................................................................121
A.4. Các chế độ camera.....................................................................................122
A.5. Các API của bộ công cụ ............................................................................123
A.5.1. API của project HelixToolkit.Wpf .......................................................123
A.5.2. Lớp HelixViewport3D .........................................................................123
A.5.3. Lớp MeshBuilder .................................................................................124
DANH MỤC CÁC BẢNG, SƠ ĐỒ, HÌNH
Danh mục hình
Hình 1-1 Công cụ nhận diện cử chỉ cho riêng tay phải KinectToolkit ......................5
Hình 1-2 Điều khiển chuột máy tính với Kinect ........................................................6
Hình 1-3 Ứng dụng kiểm tra trắc nghiệm với Kinect ................................................7
Hình 1-4 Điều khiển robot hình ngƣời với Kinect .....................................................8
Hình 1-5 Dựng mô hình 3D của không gian thực với Kinect ....................................9
Hình 1-6 Bác sĩ phẩu thuật xem hình chụp CT của bệnh nhân mà không cần chạm
vào thiết bị ...............................................................................................10
Hình 1-7 Chuột điều khiển trình chiếu Genius Ring Presenter ...............................11
Hình 1-8 Khả năng Kinect có thể dùng thay thế nhiều thiết bị trong thuyết trình...12
Hình 2-1 Trải nghiệm chơi game với Kinect ............................................................15
Hình 2-2 Kinect có 1 projector hồng ngoại, 1 camera RGB và 1 camera hồng ngoại
.................................................................................................................18
Hình 2-3 Phần cứng và phần mềm tƣơng tác với một ứng dụng .............................20
Hình 2-4 Kiến trúc Kinect cho Windows SDK........................................................21
Hình 2-5 Vị trí các điểm khớp tƣơng ứng trên cơ thể ngƣời đƣợc nhận diện..........28
Hình 2-6 Theo dõi chủ động 2 ngƣời .......................................................................29
Hình 2-7 Giá trị luồng ảnh độ sâu ............................................................................31
Hình 2-8 Hệ thống trục toạ độ không gian nhận diện khung xƣơng cho mảng cảm
biến ..........................................................................................................32
Hình 3-1 Các khoảng các giới hạn vƣơn tay và rút tay xác định tay đang tƣơng tác
hay không.................................................................................................43
Hình 3-2 Các trạng thái tƣơng tác của ngƣời dùng ..................................................45
Hình 3-3 Cấu trúc tổ chức bộ công cụ nhận diện cử chỉ InteractKinect ..................46
Hình 3-4 Lƣu đồ thuật toán nhận dạng tƣơng tác cử chỉ .........................................48
Hình 3-5 Lƣu đồ con thể hiện các bƣớc kiểm tra thông tin tay trái trong thuật toán
nhận diện cử chỉ .......................................................................................49
Hình 3-6 Lƣu đồ con thể hiện các bƣớc kiểm tra thông tin tay phải trong thuật toán
nhận diện cử chỉ .......................................................................................50
Hình 3-7 Lƣu đồ thuật toán nhận diện một số cử chỉ mở rộng ................................53
Hình 3-8 Lƣu đồ con kiểm tra tay đầu tiên trong thuật toán nhận diện cử chỉ mở ..55
Hình 3-9 Lƣu đồ con nhận diện các sự kiện vẫy tay đối với tay đầu tiên................56
Hình 3-10 Lƣu đồ con nhận diện các sự kiện đƣa tay về giữa đối với tay đầu tiên.57
Hình 3-11 Lƣu đồ con kiểm tra tay thứ hai trong thuật toán nhận diện cử chỉ mở
rộng ..........................................................................................................59
Hình 3-12 Kiến trúc ứng dụng KinectPresenter.......................................................61
Hình 4-1 Use Case chọn tập tin trình chiếu ..............................................................65
Hình 4-2 Use Case trình chiếu tập tin Power Point ..................................................65
Hình 4-3 Use Case chụp và hiển thị ảnh ...................................................................66
Hình 4-4 Use Case hiển thị video ngƣời dùng ..........................................................67
Hình 4-5 Use Case tƣơng tác hính học 3D................................................................67
Hình 4-6 Sơ đồ tuần tự chức năng chọn tập tin trình chiếu ......................................68
Hình 4-7 Sơ đồ tuần tự chức năng trình chiếu tập tin Power Point ..........................69
Hình 4-8 Sơ đồ tuần tự chức năng chụp và hiển thị ảnh ...........................................69
Hình 4-9 Sơ đồ tuần tự chức năng hiển thị video ngƣời dùng ..................................70
Hình 4-10 Sơ đồ tuần tự chức năng tƣơng tác hình học 3D .....................................70
Hình 4-11 Sơ đồ lớp bộ xử lý cử chỉ .........................................................................71
Hình 4-12 Sơ đồ lớp ứng dụng minh họa ..................................................................74
Hình 4-13 Giao diện chức năng điều khiển Power Point ..........................................76
Hình 4-14 Giao diện cắt không gian ảnh trƣớc camera Kinect.................................77
Hình 4-15 Giao diện cắt ảnh .....................................................................................78
Hình 5-1 Hình dạng menu ứng dụng KinectPresenter .............................................84
Hình 5-2 Các tƣ thế để truy cập menu ứng dụng KinectPresenter...........................85
Hình 5-3 Các tƣ thế chuyển đổi giữa 2 menu của chế độ có 2 menu ......................86
Hình 5-4 Cấu trúc cây menu trong ứng dụng KinectPresenter ................................87
Danh mục bảng
Bảng 4-1 Danh sách các lớp đối tƣợng trong bộ xử lý cử chỉ .................................71
Bảng 4-2 Danh sách các lớp đối tƣợng trong ứng dụng minh hoạ ..........................75
Bảng 5-1 Các sự kiện của lớp nhận diện cử chỉ mở rộng SwipeDetector ...............82
Bảng 5-2 Bảng các thành phần của lớp MenuManager ...........................................88
Bảng 5-3 Bảng các hàm điều khiển chuột của lớp MouseSimulator .......................92
Bảng 5-4 Các thành phần của interface IMathObject của các đối tƣợng hình học
không gian .............................................................................................108
1
CHƢƠNG 1 - GIỚI THIỆU
1.1. Giới thiệu tổng quan vấn đề
Kể từ khi máy tính cá nhân đƣợc phát triển, máy tính đƣợc sản xuất hƣớng
tới ngƣời dùng phổ thông nhiều hơn. Điều đó đòi hỏi và thúc đẩy tƣơng tác ngƣờimáy cũng đƣợc phát triển theo những hình thức ngày càng đơn giản hơn và tự nhiên
hơn. Trong lịch sử máy tính hiện đại đã có 2 cuộc cách mạng lớn về thiết bị đã dẫn
tới những thay đổi của tƣơng tác ngƣời-máy, và sắp tới có thể là cuộc cách mạng
của thiết bị Kinect và các thiết bị tƣơng tự.
Nỗ lực sớm nhất của việc thay đổi tƣơng tác ngƣời-máy là vào năm 1880,
khi Herman Hollerith làm việc ở Cục điều tra dân số Hoa Kì, tìm cách xử lý dữ liệu
dân số bằng máy. Kết quả là máy tính sử dụng bìa đục lỗ đã đƣợc tạo ra, đem tới
một phƣơng thức thao tác đơn giản hơn với dữ liệu. Sau này, bàn phím tồn tại cùng
với sự phát triển của các máy tính hiện đại. Nhƣng 2 điều vừa nêu vẫn chƣa phải là
những cuộc cách mạng vì bìa đục lỗ quá phức tạp và thao tác với các phím mũi tên
trên bàn phím vẫn chƣa quen thuộc với thói quen tự nhiên của con ngƣời.
Cho tới năm 1983, chuột máy tính đầu tiên đƣợc giới thiệu cùng với máy
Lisa của Apple. Đi kèm đó là sự xuất hiện của giao diện ngƣời dùng đồ hoạ
(Graphical User Interface - GUI). Và đây là cuộc cách mạng đầu tiên trong tƣơng
tác ngƣời-máy. Chuột máy tính sau đó đã trở nên không thể thiếu với hầu hết máy
tính cá nhân.
Cuộc cách mạng tiếp theo là sự phổ biến nhanh chóng và mạnh mẽ của công
nghệ cảm ứng đa điểm, dẫn đầu bởi thiết bị di động mang tính cách mạng iPhone
của Apple. Cảm ứng đa điểm cho phép tƣơng tác ngƣời-máy thông qua chạm và
vuốt trên màn hình cảm ứng. Công nghệ này đã thay đổi hoàn toàn tƣ duy cũ của
thời đại máy tính cá nhân, và đã loại bỏ hẳn bàn phím cứng trên nhiều thiết bị di
động lẫn máy tính.
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
2
Thiết bị Kinect cũng có thể là cuộc cách mạng tiếp theo. Khi Microsoft giới
thiệu, họ coi đây là một thiết bị cách mạng trong lĩnh vực trò chơi và giải trí.
Microsoft phát hành Kinect nhƣ là một cảm biến gắn thêm vào Xbox 360 và phát
triển các game tƣơng tác bằng cử chỉ cơ thể trên hệ máy Xbox. Nhƣng nhanh chóng
sau đó, ngƣời dùng và các lập trình viên thế giới đã tìm thấy sự thú vị trong việc
phát triển các tƣơng tác với máy tính cá nhân sử dụng Kinect. Có thể tham khảo từ
việc chuột máy tính đã hoạt động rất hiệu quả với giao diện ngƣời dùng đồ hoạ là
yếu tố tạo ra cuộc cách mạng thứ nhất, việc Kinect có tạo ra cuộc cách mạng mới
hay không phụ thuộc vào khả năng Kinect có hoạt động hiệu quả với các hệ điều
hành và chƣơng trình máy tính hay không.
Microsoft sau đó đã phát hành bộ cộng cụ phát triển phần mềm với Kinect
cho Windows – Kinect for Windows SDK (gọi tắt Kinect SDK), cho phép lập trình
viên có thể viết các ứng dụng máy tính trong đó chƣơng trình sử dụng các dữ liệu
nhận đƣợc từ Kinect để nhận biết các cử chỉ cơ thể và thực hiện tác vụ tƣơng ứng.
Nhƣng bộ công cụ này vẫn đang là bản beta và chƣa hỗ trợ nhiều cho lập trình viên.
Về cơ bản Kinect có một projector hồng ngoại và một camera hồng ngoại để
sử dụng hồng ngoại đo độ xa (tính bằng mét) so với Kinect của từng điểm trong
khung nhìn của camera; và Kinect có 1 camera RGB để thu hình ảnh màu với cùng
một khung nhìn với camera hồng ngoại. Kinect SDK cung cấp dữ liệu video độ sâu,
và dữ liệu video RGB từ Kinect. Ngoài ra, Microsoft đã phát triển các thuật toán
nhận diện cơ thể con ngƣời, và Kinect SDK cung cấp cho lập trình viên dữ liệu
nhận dạng cơ thể con ngƣời qua 20 điểm trên cơ thể, gọi là dữ liệu khung xƣơng.
Kinect SDK vẫn chƣa hỗ trợ việc nhận dạng cử chỉ cơ thể. Hiện tại có rất nhiều
công ty và lập trình viên phát triển các cách tiếp cận khác nhau nhƣng chƣa có giải
pháp nào hiệu quả nổi bật.
Có 2 vấn đề tiên quyết đối với một giải pháp nhận biết cử chỉ cơ thể hiệu
quả. Thứ nhất là nó phải đạt độ chính xác cao, phải nhận biết chính xác động tác
ngƣời dùng thực hiện và không bỏ sót động tác; và thứ hai là nó phải có tính tái sử
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
3
dụng cao để các lập trình viên có thể dùng nó nhanh chóng xây dựng các ứng dụng
mới hỗ trợ cử chỉ cơ thể. Đây cũng là 2 trong những mục tiêu cần đạt đƣợc của bộ
công cụ hỗ trợ cử chỉ cơ thể đề tài sẽ xây dựng.
1.2. Đánh giá sơ lƣợc về hiện trạng phát triển phần mềm với Kinect
1.2.1. Tình hình phát triển
Kinect đang phổ biến với tốc độ kinh ngạc nhƣng yêu cầu cấp thiết là vẫn
còn thiếu một bộ công cụ giúp nhận diện động tác cơ thể hiệu quả để giúp thúc đẩy
việc phát triển nhanh chóng phần mềm dùng Kinect. Hiện tại Kinect cũng chƣa
đƣợc tích hợp và chƣa đƣợc hỗ trợ sẵn của hệ điều hành Windows.
Trong vòng 3 tháng sau khi ra mắt, Microsoft bán đƣợc hơn 10 triệu sản
phẩm, Kinect trở thành “Sản phẩm điện tử tiêu dùng có tốc độ tiêu thụ nhanh nhất
thế giới” trong sách kỉ lục thế giới Guinness. Sự phổ biến nhanh chóng của thiết bị
Kinect đã làm dấy lên trào lƣu phát triển các ứng dụng và thiết bị giúp con ngƣời có
thể tƣơng tác với máy bằng các động tác tự nhiên của cơ thể. Các phƣơng pháp
tƣơng tác này đƣợc các hãng gọi với những tên liên quan tới từ “natural” (tự nhiên)
nhƣ Natural User Interface (NUI – Microsoft), Natural Interaction (OpenNI Và các từ này cũng sẽ đƣợc các hãng dùng chung để chỉ
những tƣơng tác ngƣời máy sử dụng động tác tự nhiên có thể sau này.
Thiết bị Kinect hoạt động với máy tính cần có driver cài đặt tƣơng ứng. Và
để phát triển phần mềm sử dụng Kinect trên máy tính, môi trƣờng lập trình cần có
các bộ công cụ phát triển phần mềm phù hợp với driver đó. Hiện tại, để phát triển
phần mềm với Kinect có thể sử dụng các bộ công cụ đƣợc cung cấp bởi Microsoft
hoặc tổ chức OpenNI. Mỗi bộ công cụ đều có cả 2 phần là driver cho thiết bị Kinect
và SDK để phát triển phần mềm. Microsoft cung cấp bộ công cụ Kinect for
Windows SDK ( hiện là bản beta 2 và phi thƣơng mại,
dự kiến trong năm 2012 sẽ phát hành bản SDK thƣơng mại đầu tiên dành cho các
đơn vị muốn phát triển phần mềm với Kinect trên Windows. OpenNI cũng cung cấp
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
4
driver cho Kinect và ta có thể phát triển phần mềm với driver này sử dụng
middleware PrimeSense NITE của hãng PrimeSense ( />Mỗi bộ công cụ sử dụng các API khác nhau và mã nguồn viết trên bộ công cụ này
không tƣơng thích và biên dịch với bộ công cụ kia và ngƣợc lại.
Việc có 2 bộ công cụ tƣơng thích với Kinect dẫn tới các dự án hoặc các
chƣơng trình thử nghiệm sử dụng Kinect cũng chia thành 2 hƣớng tƣơng thích với
từng bộ công cụ đó. Rất nhiều cộng đồng chuyên chỉ chuyên nội dung về phát triển
phần mềm trên máy tính với Kinect đang phát triển nhanh chóng. Trang tin chuyên
về các bài viết cũng nhƣ dự án với Kinect for Windows SDK tiêu biểu là chuyên
mục Kinect ( của trang web truyền
thông Channel9 của Microsoft. Trong khi đó các dự án sử dụng OpenNI đƣợc tập
hợp rất nhiều tại trang Arena của OpenNI ( Ngoài ra có các
trang tập hợp thông tin của các cộng đồng tự do về phát triển phần mềm với Kinect
trên máy tính khác nhƣ:
/> /> />Các lĩnh vực hƣớng tới của các dự án đang đƣợc phát triển gồm:
Giải trí: trò chơi, các ứng dụng âm nhạc, tạo các hiệu ứng hình ảnh
độc đáo…
Giáo dục: các ứng dụng đơn giản trợ giúp cho việc tổ chức các buổi
học sinh động, ô chữ, trắc nghiệm…
Thực tại ảo: dựng lại không gian 3D quét đƣợc bởi Kinect, thiết kế
kiến trúc trong không gian 3D…
Y tế: giúp bác sĩ phẫu thuật xem thông tin mà không phải chạm tay
vào máy móc…
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
5
Robotic: xe lăn tự hành cho ngƣời tàn tật, xe hàng tự đi theo ngƣời tàn
tật trong siêu thị, robot tìm đƣờng, thiết bị tự động chụp hình mặt cƣời
của ngƣời tham gia buổi tiệc…
Trong SDK của mình, Microsoft chƣa xây dựng tính năng nhận diện các thao
tác cử chỉ, có thể kể ra nhƣ vẫy tay, nâng tay lên, hạ tay xuống, vẽ hình tròn… Các
nhà phát triển đang tự xây dựng chức năng này theo các phƣơng thức riêng. Chƣa
có bộ công cụ nhận diện cử chỉ nào nổi bật, về độ chính xác hay về độ phong phú
của các động tác cũng nhƣ khả năng tái sử dụng để xây dựng nhiều ứng dụng khác
nhau. Dự kiến Microsoft sẽ tích hợp và hỗ trợ Kinect với hệ điều hành Windows 8
sắp tới, việc Windows 8 và SDK sau này hỗ trợ tới đâu chƣa đƣợc tiết lộ, trong khi
đó thì một bộ công cụ nhận diện cử chỉ vẫn là điều cần thiết.
1.2.2. Một số sản phẩm sử dụng Kinect tiêu biểu
1.2.2.1. Bộ công cụ nhận diện cử chỉ riêng cho tay phải KinectToolkit
Hình 1-1 Công cụ nhận diện cử chỉ cho riêng tay phải KinectToolkit
Bộ công cụ lập trình KinectToolkit nhận diện cử chỉ riêng cho bàn tay phải.
KinectToolkit tập hợp các điểm chiếu vuông góc vị trí bàn tay lên mặt phẳng vuông
góc với hƣớng nhìn của Kinect theo thời gian. Với tập hợp các điểm thu thập đƣợc,
KinectToolkit thực hiện dùng thuật toán hoặc phƣơng pháp máy học để so khớp các
dạng cử chỉ để xác định cử chỉ ngƣời dùng thực hiện. Tỉ lệ thực hiện thành công chỉ
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
6
khoảng 50%, và bộ công cụ này gặp vấn đề khi có các động tác ngƣợc nhau trong
tƣơng tác. Chẳng hạn khi ngƣời dùng làm động tác vẫy tay qua phải, sau đó rút tay
về tƣ thế đứng, thì KinectToolkit thƣờng hiểu nhầm thành 1 động tác vẫy tay qua
phải và 1 động tác vẫy tay qua trái, hoặc thậm chí không nhận kịp động tác vẫy tay
qua phải và chỉ nhận 1 động tác vẫy tay qua trái. Tuy nhiên đây là bộ công cụ đƣợc
xây dựng riêng cho việc nhận diện cử chỉ tiêu biểu.
Có thể xem thêm chi tiết bộ công cụ này theo đƣờng dẫn:
và />1.2.2.2. Điều khiển chuột máy tính với Kinect
Hình 1-2 Điều khiển chuột máy tính với Kinect
Ứng dụng sử dụng tay phải điều khiển vị trí chuột và tay trái để điều khiển
nút trái chuột. Vị trí của tay phải trên dữ liệu camera của Kinect đƣợc nhân tỉ lệ để
tính ra vị trí của con trỏ chuột trên màn hình. Tay trái giơ lên cao là sự kiện nhấn
nút chuột trái, hạ tay trái xuống là sự kiện nhả nút chuột trái. Ứng dụng này đã có
thể giúp tƣơng tác với máy tính từ xa nhƣng rất khó sử dụng khi muốn đƣa con trỏ
chuột
tới
góc
màn
hình.
Có
thể
tham
khảo
thêm
tại:
/>GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
7
1.2.2.3. Kinect Quiz - ứng dụng kiểm tra trắc nghiệm với Kinect
Hình 1-3 Ứng dụng kiểm tra trắc nghiệm với Kinect
Một ứng dụng đơn giản để dùng kiểm tra bằng phƣơng pháp trắc nghiệm.
Mỗi hình tròn trong hình là một lựa chọn trả lời cho câu hỏi ở phía dƣới. Ngƣời
dùng trả lời câu hỏi bằng cách đƣa tay đến vị trí của câu mình muốn trả lời và giữ ở
đó một khoảng thời gian. Ứng dụng này đơn giản xác định khớp tay nằm ở vị trí
phƣơng án trả lời đủ lâu để xác định là ngƣời dùng chọn phƣơng án đó. Có thể tham
khảo
thêm
tại:
/>
program-complete/
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
8
1.2.2.4. Điều khiển robot hình ngƣời với Kinect
Hình 1-4 Điều khiển robot hình ngƣời với Kinect
Ứng dụng sử dụng khả năng nhận diện khung xƣơng của Kinect để cho robot
hình ngƣời mô phỏng lại giống động tác của ngƣời dùng. Sử dụng một số quy định
về vị trí của các khớp để ứng dụng ra các lệnh cho robot thực hiện tƣơng ứng ví dụ
nhƣ tay ngƣời dùng cao hơn đầu thì robot sẽ nâng tay lên… Có thể tham khảo thêm
tại: />
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
9
1.2.2.5. KinectFusion – dùng Kinect quét không gian thực thành mô
hình 3D
Hình 1-5 Dựng mô hình 3D của không gian thực với Kinect
KinectFusion là một dự án của Microsoft Research, có chức năng nhận diện
không gian thực và dựng lại mô hình 3D của không gian đó trong máy tính.
KinectFusion sử dụng dữ liệu từ camera độ sâu của cảm biến Kinect đang di chuyển
trong không gian thực, sau đó dựng lại không gian đó trong máy tính theo thời gian
thực. Sau đó dự án mở rộng với việc có thể tƣơng tác các đầu ngón tay với mô hình
đã dựng, và dựng các đối tƣợng ảo tƣơng tác vật lý với mô hình nhƣ một số lƣợng
lớn bi nhỏ có thể rớt và lăn trên mô hình đó. Có thể tham khảo thêm tại:
/>
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
10
1.2.2.6. Ứng dụng giúp bác sĩ phẫu thuật xem các loại hình chụp bệnh
nhân
Hình 1-6 Bác sĩ phẩu thuật xem hình chụp CT của bệnh nhân mà không cần chạm vào thiết
bị
Trong quá trình phẫu thuật, bác sĩ cần theo dõi các hình chụp khác nhau nhƣ
X-quang, chụp CT,… Bác sĩ có thể xem các hình chụp này mà không cần chạm vào
vật nào, đảm bảo vấn đề vệ sinh trong phẫu thuật. Xem thêm tại đây:
/>1.3. Mục tiêu đề tài
Để giải quyết vấn đề nhận dạng cử chỉ cơ thể ngƣời cho Kinect, mục tiêu
chính của đề tài là xây dựng một bộ công cụ nhận diện cử chỉ cơ thể hoạt động hiệu
quả. Bộ công cụ này cần phải nhận diện chính xác các cử chỉ đặt ra, đồng thời cũng
hạn chế thấp nhất bỏ sót cử chỉ trong quá trình nhận. Bộ công cụ này sẽ hữu ích cho
việc dùng xây dựng các ứng dụng nhận diện cử chỉ. Vì thế một hệ quả cũng cần
phải đạt đƣợc là nó phải tiện dụng khi dùng xây dựng các ứng dụng khác, bộ công
cụ có khả năng đƣợc mở rộng, bổ sung thêm những cử chỉ mới.
Xét thấy cần phải đánh giá khả năng ứng dụng của bộ công cụ nhận diện
trên, nhóm dùng chính bộ công cụ đó để xây dựng các ứng dụng minh hoạ có khả
năng nhận dạng cử chỉ của ngƣời dùng.
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương
11
Một ngữ cảnh tƣơng tác mà ngƣời dùng cần phải chuyển lệnh cho máy tính
từ xa là khi ngƣời dùng thuyết trình. Hầu hết để thực hiện điều này đều phải dùng
chuột không dây, hoặc có thể có thêm đầu chiếu laser để chỉ trên màn hình. Các
công cụ này đều chỉ để đáp ứng đủ các chức năng điều khiển trình chiếu gồm: tới
lui slide, chạy video, điều khiển con trỏ chuột. Dùng phƣơng tiện này có điểm yếu
là thao tác điều khiển trỏ chuột thƣờng phải vất vả nhấn các nút chỉnh hƣớng (qua,
lại, lên, xuống) để chỉnh vị trí trỏ chuột trên màn hình. Điểm yếu nổi bật hơn là
ngƣời dùng cần phải cầm chuột không dây trên tay, thƣờng gây sự chú ý của ngƣời
xem vào vị trí tay cầm chuột và mất tập trung vào ngƣời thuyết trình. Hãng sản xuất
chuột nổi tiếng Genius đã cố gắng thu nhỏ sản phẩm, sản xuất chuột dùng với trình
chiếu slide có hình dạng nhẫn là Ring Presenter. Tuy đã nhỏ gọn hơn rất nhiều so
với những chuột cùng chức năng khác, nhƣng vẫn gây chú ý khi ngƣời thuyết trình
mở lòng bàn tay ra.
Hình 1-7 Chuột điều khiển trình chiếu Genius Ring Presenter
Với Kinect các khả năng có thể đƣợc mở rộng hơn rất nhiều. Không chỉ dùng
cử chỉ để gửi lệnh cho máy tính di chuyển slide hay chạy video, ta còn có thể tận
dụng các chức năng của Kinect, đặc biệt là chức năng camera để dùng Kinect thay
cho cả máy chiếu vật thể. Cũng có thể xây dựng chức năng cho phép ngƣời dùng
dùng tay để điều khiển điểm trỏ trên màn hình, thay cho dùng bút laser. Và nổi bật
nhất vẫn là ngƣời dùng vẫn đƣợc tự do không cần cầm thiết bị nào trong tay.
GVHD: ThS. Phạm Thi Vương
SVTH: Trần Phước Việt
Trần Công Vương