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

Nghiên cứu và ứng dụng kinect vào việc trình chiếu tài liệu

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 (2.11 MB, 68 trang )

TRƯỜNG ĐẠI HỌC LẠC HỒNG
KHOA CƠNG NGHỆ THƠNG TIN
----------

BÁO CÁO
NGHIÊN CỨU KHOA HỌC
ĐỀ TÀI:

NGHIÊN CỨU VÀ ỨNG DỤNG KINECT
VÀO VIỆC TRÌNH CHIẾU TÀI LIỆU
Giáo viên hướng dẫn: ThS. Nguyễn Phát Nhựt
Sinh viên thực hiện:

Trần Việt Đức
Trương Minh Hiếu

BIÊN HỊA, THÁNG 06/2012


LỜI CẢM ƠN

----------

Lời đầu tiên, chúng em xin gửi đến Thầy ThS. Nguyễn Phát Nhựt lời cảm
ơn chân thành và sâu sắc nhất. Nhờ có sự hướng dẫn và giúp đỡ tận tình của Thầy trong
suốt thời gian qua, chúng em đã có thể thực hiện và hoàn thành Thực Tập Tốt Nghiệp và
Luận Văn Tốt Nghiệp. Những lời nhận xét, góp ý và hướng dẫn tận tình của Thầy đã giúp
chúng em có một định hướng đúng đắn trong suốt quá trình thực hiện Đề tài, giúp chúng
em nhìn ra được những ưu khuyết điểm của Đề tài và từng bước hoàn thiện hơn.
Đồng thời, chúng em xin trân trọng cảm ơn các Thầy Cô của Trường Đại
Học Lạc Hồng nói chung và của khoa Công Nghệ Thông Tin nói riêng đã dạy dỗ chúng


em suốt quãng thời gian ngồi trên ghế giảng đường Đại học. Những lời giảng của Thầy
Cô trên bục đã trang bị cho chúng em những kiến thức, những kỹ năng và giúp chúng em
tích lũy thêm những kinh nghiệm.
Bên cạnh đó, chúng tôi xin cảm ơn sự hỗ trợ và giúp đỡ của bạn bè trong
thời gian học tập tại Trường Đại Học Lạc Hồng và trong quá trình hoàn trình hoàn thành
Luận Văn Tốt Nghiệp này.
Cuối cùng, chúng con cũng chân thành cảm ơn sự động viên và sự hỗ trợ
của gia đình và cha mẹ trong suốt thời gian học tập. Đặc biệt, chúng con xin gửi lời cảm
ơn trân trọng nhất đến cha mẹ, người đã sinh ra và nuôi dưỡng chúng con nên người. Sự
quan tâm, lo lắng và hy sinh lớn lao của cha mẹ luôn là động lực cho chúng con cố gắng
phấn đấu trên con đường học tập của mình. Một lần nữa, chúng con xin gửi đến cha mẹ
sự biết ơn sâu sắc nhất.

BIÊN HÒA, ngày 04 tháng 06 năm 2012
TRẦN VIỆT ĐỨC
TRƯƠNG MINH HIẾU


MỤC LỤC

Trang
Trang phụ bìa
Lời cảm ơn
Mục lục
Danh mục từ viết tắt
Danh mục hình ảnh, bảng biểu
Lời nói đầu........................................................................................................ 1
Chương : CƠ S
1.1


L TH

T..................................................................... 6

ựa chọn tin học ..................................................................................... 6

1.2 Tìm hiểu về Kinect.................................................................................... 6

1.2.1 Sự ra đời và phát triển .................................................................... 6
1.2.2 Những thành phần chính của Kinect ............................................... 8
1.3 Thư viện hỗ trợ Kinect............................................................................. 10

1.3.1 Thư viện Libfreenect .................................................................... 10
1.3.2 Thư viện Code Laboratories ......................................................... 10
1.3.3 Thư viện OpenNI ......................................................................... 10
1.3.4 Thư viện Kinect SDK ................................................................... 10
1.3.4.1 Kinect SDK Beta .................................................................... 11
1.3.4.2 Kinect SDK 1.0 ...................................................................... 11
1.4 Đặc điểm của Kinect SDK 1.0 .................................................................. 11

1.5 Kết luận

................................................................................... 13


Chương : NG

N L H ẠT Đ NG C

IN CT ............................. 14


2.1 Giải pháp PrimeSensor ............................................................................ 14
2.2

hân tích các kỹ thuật đo lường chiều sâu .................................................. 14

2.3.1 ỹ thuật Triangution .................................................................... 15
2.3.2 ỹ thuật tructure light ................................................................ 16
2.3.3 ỹ thuật Time - Of - Flight ........................................................... 16
2.3 Tính toán độ sâu ................................................................................... 17

2.4 Xác định vị trí trong không gian ............................................................ 21
2.5 Một số đặc tính khác của Kinect............................................................ 22
2. .1 Tiêu cự, góc m IR camera và RG camera ................................. 22
2.5.2 Nguồn và công suất tiêu thụ ......................................................... 22
2. .3 Môi trường hoạt động................................................................... 23
2. .4 ác thông số về độ tin cậy ............................................................ 23
Chương 3: CHƯƠNG T

NH VÀ GIẢI TH

T ........................................ 24

3.1 Cấu hình chương trình ............................................................................. 24

3.1.1 Về phần cứng ............................................................................... 24
3.1.2 Về phần mềm ............................................................................... 24
3.1.3 ài đặt phần mềm ........................................................................ 24
3.2


hức năng chương trình........................................................................... 24

3.3 Tương tác sử dụng .................................................................................. 25

3.3.1 ết nối thiết bị ............................................................................. 26
3.3.2 Đồng bộ các thông số hình ảnh ..................................................... 27
3.4 Giải thuật

................................................................................... 27


3.4.1 ui trình xử lý chung ................................................................... 27
3.4.2 Xử lý dữ liệu thô .......................................................................... 29
3.5

hương trình điều khiển b ng tay ............................................................. 32

3. .1 ự kiện nhấp chuột trái (Left click) .............................................. 36
3. .2 ự kiện nhấp chuột phải (Righ clik) .............................................. 37
3. 1 ự kiện nhấp đúp chuột trái (Double click) .................................... 38
3. .2 ự kiện kéo và thả đối tượng

rag và rop) ................................ 40

3.6

hương trình điều khiển slide po erpoint .................................................. 42

3.7


hương trình điều khiển b ng giọng nói................................................ 44

Chương : GIẢI PH P VÀ H ÀN THIỆN.................................................. 52
4.1 Nhận xét chung

................................................................................... 52

4.2 Giải pháp hoàn thiện ............................................................................. 52
4.3 Hướng phát triển................................................................................... 53
Tài liệu tham khảo ......................................................................................... 54
Phụ ục : Hướng dẫn c i đ t chương tr nh ứng dụng ................................. 55
Phụ ục : Hướng dẫn

dụng ...................................................................... 57


nh mục từ viết tắt
ADC

Analog Digital Converter

API

Application Programming Interface

AUV

Autonomous Underwater Vehicles

AUX


AU Xiliary

CL

Code Laboratories

CNC

Computerized Numerical

CPU

Central Processing Unit

IR

Infrared

JNA

Java Native Access

JNI

Java Native Interface

NI

Natural Interaction


NUI

Natural User Interface

RAM

Ramdom Access Memory

RGB

Red, Green, Blue

SDK

Software Development Kit

SoC

System on chip

TOF

Tim Of Flight

TTL

Transistor – Transistor logic

USB


Universal Serial Bus


Danh mục hình
Hình 1.1: Thiết bị Kinect .............................................................................................. 6
Hình 1.2: Nhận dạng hành động Game thủ và điều khiển nhân vật trong game ............. 7
Hình 1.3: Các chức năng thường dùng của Kinect ........................................................ 8
Hình 1.4: Những thành phần chính của Kinect .............................................................. 8
Hình 1.5: ơ chế hoạt động của PrimeSense PS1080-A2 .............................................. 9
Hình 1.6: ác điểm chuyển động trên cơ thể ............................................................... 12
Hình 1.7: Kiến trúc Kinect .Net SDK .......................................................................... 13
Hình 2.1: Giải pháp PrimeSense ................................................................................. 14
Hình 2.2: Các kỹ thuật đo lường chiều sâu .................................................................. 15
Hình 2.3:Minh họa 2 thành phần chính trong Triangulation ........................................ 15
Hình 2.4: Mô phỏng kỹ thuật Structured light ............................................................. 16
Hình 2.5: Mô phỏng kỹ thuật Time – Of – Flight ........................................................ 17
Hình 2.6: Cấu tạo bên trong Kinect ............................................................................. 17
Hình 2.7: Quá trình thu về bản đồ độ sâu .................................................................... 18
Hình 2.8: Mẫu hình chiếu từ IR camera và Project ...................................................... 19
Hình 2.9: Tính toán khoảng cách tới một điểm chiếu từ Project .................................. 20
Hình 2.10: hân tích điểm M trong không gian ........................................................... 21
Hình 2.11: Adapter của Kinect .................................................................................... 23
Hình 3.1: Tổng quan cấu trúc chương trình ................................................................. 25
Hình 3.2: ui trình cài đặt và xử lý thông tin .............................................................. 26
H nh 3.3

iểm tra inect driver trong evice Manager ............................................. 26

H nh 3.4


iểm tra inect driver sound, video và game .............................................. 26


Hình 3.5: Hệ thống ghi nhận cử chỉ............................................................................. 27
Hình 3.6: ơ đồ xử lý chung ....................................................................................... 27
Hình 3.7: orm hiển thị của chương trình ................................................................... 31
Hình 3.8: ơ đồ xử lý chọn tay điều khiển con trỏ Windows ....................................... 33
Hình 3.9: ự di chuyển của bàn tay ............................................................................. 35
Hình 3.10: ơ đồ xử lý sự kiện left click và right click................................................ 36
Hình 3.11:Mô phỏng sự kiện left click ........................................................................ 37
Hình 3.12: Mô phỏng sự kiện right click ..................................................................... 38
Hình 3.13: ơ đồ xử lý sự kiện double click................................................................ 39
Hình 3.14: Sự kiện double click .................................................................................. 39
Hình 3.15: ơ đồ xử lý sự kiện rop và rag ............................................................. 40
Hình 3.16: ơ đồ xử lý chạy slide show ...................................................................... 42
Hình 3.17: Hành động trình chiếu Slide powerpoint.................................................... 42
Hình 3.18: ơ đồ xử lý bắt đầu và kết thúc trình chiếu slide........................................ 44

Danh mục bảng
Bảng 2.1: Góc m và tiêu cự RGB camera và IR camera ............................................ 22
Bảng 2.2: Công suất tiêu thụ trên Kinect ..................................................................... 23


1

n
Từ xưa, khi những thế hệ máy tính đầu tiên ra đời thì con người đã bắt đầu có
những ước mơ xa hơn về thế giới tương lai của mình. Trong tương lai ấy, con người sẽ
làm chủ được mọi thứ, có thể tương tác với máy tính thông qua hành động, cử chỉ và

giọng nói của mình. Và câu hỏi được đặt ra là: Có thể thực hiện được ước mơ đó
không?
Nhưng ngày nay - thế kỷ 21, cùng với sự phát triển nhanh của ngành công nghệ
số và các thiết bị số kỹ thuật cao, cùng với sự ra đời của thiết bị Microsoft Kinect, thì
câu trả lời đó là: Có thể!
Sự tương tác giữa người sử dụng với máy tính ngày càng trở nên phong phú, đa
dạng. Trong những thập niên 70, bàn phím hầu như là công cụ duy nhất để điều khiển
máy tính. Sau đó đến khi giao diện đồ họa phát triển, con chuột máy tính đã được phát
minh và hỗ trợ việc tương tác trở nên thuận tiện hơn. Cùng với sự phát triển của công
nghệ, và các thuật toán, con người có thể giao tiếp với máy tính thông qua các màn
hình chạm, hành vi, cũng như giọng nói.
Trong nghiên cứu này, chúng tôi sẽ thực hiện một phần ước mơ đó, bằng việc
hỗ trợ sự tương tác giữa con người với máy tính thông qua thiết bị Kinect để điều
khiển việc trình chiếu tài liệu bằng Slide PowerPoint và con trỏ chuột trên nền
Window mà không cần đến nhiều thiết bị hỗ trợ mà chỉ cần: một thiết bị Kinect
Sensor, một máy tính sử dụng hệ điều hành Windows ( từ Windows 7 trở lên). Giờ
đây, không cần phải chạm tay vào bàn phím, thậm chí không cần phải cầm con chuột
hoặc chạm tay vào màn hình mà chỉ cần đứng trước Kinect bằng hành động và giọng
nói của mình là có thể thực hiện được những gì mà mình mong muốn.
Ngày nay, hầu hết các đều biết đến hoặc đã xem qua các buổi hội nghị, tọa đàm,
hay một buổi báo cáo, thậm chí là một giáo viên giảng dạy nào đó,… người ta sử dụng
rất nhiều Slide PowerPoint để thuyết trình tài liệu của mình. Nắm bắt được nhu cầu
phát triển trên, chúng em đã tìm ra một giải pháp mới, một phong cách mới nhằm hỗ
trợ cho việc thuyết trình và tạo ra nhiều hứng thú hơn khi công việc đó giờ đây chỉ là
một cử động của cơ thể hoặc ra lệnh bằng giọng nói. Đề tài mà chúng em giới thiệu ở


2
đây, được viết trên Visual Studio 2010 bằng ngôn ngữ C#, lâp trình phát triển trên nền
thư viện Microsoft SDK. Bên cạnh đó, chúng tôi cũng giúp các điều khiển một số thao

tác trên con trỏ chuột của Window thông qua Kinect của Microsoft. Chúng em sẽ nói
rõ vấn đề trên ở những phần sau.

Kinect thật sự tạo ra cơn sốt, không chỉ trong cộng đồng Game thủ mà cả trong
giới nghiên cứu, lập trình viên và nhà thiết kế trên thế giới. Nhờ vào những ưu điểm
của mình mà Kinect đã được ứng dụng vào nhiều lĩnh vực đời sống về giáo dục, điều
khiển Window, y khoa, robot,…
Trong y khoa: Hãng InfoStrat đã có sáng kiến ứng dụng Kinect cho các màn
hình khổ lớn trong công tác hội chẩn. Ví dụ, với thao tác gõ nhẹ bàn tay vào “không
khí” ngay phía trước màn hình hiển thị khổ lớn, các bác sỹ có thể cuộn qua các hình
ảnh X-quang và những hình ảnh y khoa khác. Khi sử dụng cả 2 tay, bác sỹ có thể
phóng to hay thu nhỏ hình ảnh ở từng vùng hiển thị để quan sát rõ hơn. Trong khi đó,
phòng thí nghiệm Red Hill tại đại học San Francisco (California, Mỹ) đã “sáng tạo” ra
một trò chơi giúp bệnh nhân Parkinson vừa thực hiện các bài vật lý trị liệu vừa giải trí
để giảm ưu phiền.
Trong công nghệ Robot và điều khiển tự động: Nghiên cứu tại đại học Berkeley
(California, Mỹ) đã sử dụng camera trên Kinect và các cảm biến xác định độ sâu để
giúp rô-bốt có được khả năng quan sát và qua đó có thể tự định hướng, phát hiện vật
cản. Vài nghiên cứu trang bị Kinect trên xe nâng hàng trong nhà xưởng, kho bãi cũng
đang được triển khai tại Mỹ và kết quả bước đầu khá khả quan. Theo Adept
Technology, một hãng sản xuất rô-bốt cho các nhà máy thì lợi thế của Kinect là khả
năng quan sát 3 chiều và điều này giúp rô-bốt cũng như xe nâng có thể quan sát tốt
hơn, từ đó giảm thiểu tai nạn khi di chuyển.
Trong kinh doanh, bán hàng:
Hãng FaceCake Marketing Technologies đã thành công trong việc vận hành
một phòng thử đồ tương tác với tên gọi Swivel. Về cơ bản, Swivel là một tấm gương
tương tác, cho phép người mua hàng xem các món hàng “ảo” sẽ xuất hiện như thế nào
trên một “manơcanh” (người nộm mẫu) có kích thước được “sao chụp” từ chính người



3
mua. Nói cho dễ hiểu, người mua và cửa hàng sẽ nhìn thấy nhau, và 2 bên sẽ chọn
đúng kích thước món hàng cần thử. Trong nhiều tình huống, Swivel có thể đề xuất
trang phục, kích thước món đồ dựa trên hình ảnh người mua được camera Kinect ghi
nhận.
Hãng AR Door của Nga cũng đã triển khai thành công giải pháp tương tự cho
chuỗi cửa hàng bán lẻ Topshop. Cũng tại Mỹ, tại hệ thống cửa hãng thời trang
Nodstrom, bên cạnh dịch vụ thử đồ ảo với Swivel, khách hàng có thể đứng trước các
cửa kiếng trưng bày, sau đó dùng tay “vẽ” những lời nhận xét, đánh giá hay thậm chí
đề xuất mẫu thiết kế mới.

Xây dựng một chương trình điều khiển từ xa thông qua một số cử chỉ của các
phần trên cơ thể người nhằm phục vụ trong việc trình chiếu Slide PowerPoint và điều
khiển một số thao tác con trỏ chuột trên nền Window.
Tạo ra một thế giới “ảo hóa”- giả lập cảm ứng cho người sử dụng và cách nhìn
mới về một tương lai số mà ở đó con người chỉ cần “chạm” vào khoảng không và
“điều khiển”.
Giúp con người có thể tương tác với máy tính một cách dễ dàng hơn.
Bên cạnh đó, đề tài sẽ giúp ta rút ngắn khoảng cách giữa thế thực và ảo, giao tiếp dễ
dàng giữa người và máy. Ngoài ra, chương trình sẽ giúp cho người sử dụng có nhiều
bài giảng, thuyết trình sinh động hơn và một cảm giác thoải mái, tự nhiên trong khi
trình bày.

Thông qua thiết bị Kinect Sensor để nhận dạng những cử chỉ, hành động trên cơ
thể người và bằng giọng nói để điều khiển ứng dụng trình chiếu tài liệu, con trỏ
Window.
Từ việc bắt được những hình ảnh của những điểm trên cơ thể và giọng nói mà
người dùng yêu cầu, chương trình sẽ xử lý chúng và chuyển thành những thao tác, sự
kiện trên máy tính.
Để thực hiện được những vấn đề trên chúng tôi cần phải:



4
Tìm hiểu đặc điểm cấu tạo và những ưu cũng như nhược điểm của thiết bị
Kinect Sensor.
Tìm hiểu cách thức ghi nhận hình ảnh và nhận dạng giọng nói của Kinect từ
môi trường bên ngoài.
Sử dụng giải thuật để xử lý hình ảnh dạng thô nhận được từ thiết bị đưa về và “chế
biến” chúng thành những phương thức để máy có thể hiểu và đáp ứng được yêu cầu.

Trong thời gian đảm nhận đề tài, chúng tôi cố gắng nghiên cứu và tìm hiểu một
số nội dung sau:
Tìm hiểu phương pháp trình chiếu tài liệu bằng Slide PowerPoint và những thao
tác của con trỏ trên nền Windows.
Tìm hiểu về .NET 2010 và thư viện hỗ trợ Kinect Microsoft SDK 1.0.
Các đặc điểm cấu tạo và những ưu – khuyết điểm của thiết bị Kinect Sensor.
Trong quá trình ghi nhận từ Kinect cho đến việc điều khiển được ứng dụng phải
trải qua nhiều giai đoạn nên chúng tôi đã chia ra từng giai đoạn và xử lý: ghi nhận lại
hình ảnh theo nhiều chế độ và đưa vào dữ liệu. Sau đó, dùng những giải thuật và hàm
trong thư viện SDK 1.0 để xử lý và thực hiện yêu cầu. Đồng thời, cần giải quyết vấn
đề nhận dạng điểm nào trên cơ thể và cách lọc âm, giảm ồn để nhận dạng một cách
chính xác nhất khẩu lệnh mà người sử dụng đưa ra.
Từ những Project xây dựng cho từng phần và những tính năng cụ thể, chúng tôi
sẽ kết tất cả lại thành một chương trình logic hoàn chỉnh.

So với những nghiên cứu khác từ thiết bị Kinect Sensor và việc hỗ trợ trình
chiếu tài liệu, phần lớn là dựa trên bộ cảm biến của Kinect để bắt cử chỉ chuyển động
cơ thể, một phần rất ít còn lại là điều khiển bằng giọng nói. Thì ở đây, chúng tôi đã
“kết hợp” chúng lại thành “2 trong 1” - hành động và giọng nói, để tạo ra một ứng
dụng. Nếu như việc trình chiếu tài liệu và điều khiển con trỏ cần phải dùng đến bàn

phím và con chuột vi tính, thì giờ đây chương trình sẽ giúp người sử dụng không cần
phải dùng đến những thiết bị trên, mà chỉ cần đứng trước “không gian” của Kinect


5
bằng hành động hoặc lời nói của mình để ra lệnh và bắt đầu điều khiển. Chương trình
sẽ tạo ra một thế giới điều khiển “ảo” bằng cảm ứng nhưng không cần phải chạm vào
màn hình hay bất cứ gì.
S

CC

TR C Đ T

ời mở đầu
Trình bày lý do chọn đề tài, tổng quan đề tài, mục tiêu, phương pháp nghiên
cứu, tính mới của đề tài, giới hạn và sơ lược cấu trúc của đề tài.
Chương 1: Cơ sở l thuyết
Lựa chọn tin học, giới thiệu về thiết bị Kinect, lịch sử phát triển của Kinect, các
thư viện hỗ trợ Kinect, thư viện Microsoft SDK và những ứng dụng của Kinect.
Chương 2: Nguyên l hoạt động của Kinect
Cách tính toán độ sâu và nhận dạng giọng nói của Kinect, các giải pháp và
phương thức lấy hình ảnh xử lý.
Chương 3: Chương trình và giải thuật
Giới thiệu về chương trình nghiên cứu và các giải thuật, hướng ứng dụng
chương trình.
Chương : Giải pháp và hoàn thiện
Đưa ra những vấn đề đạt được và chưa đạt, cùng hướng giải quyết để hoàn thiện
chương trình.



6

1.1.
Có một vấn đề phải đối mặt trong những phòng học hiện đại ngày nay và những
ứng dụng của tin học vào đời đời sống. Dự án mà nhóm chúng tôi đang nghiên cứu ở
đây sẽ giúp đưa mọi người đến gần hơn với một cuộc sống tương lai số. Một ứng dụng
Kinect sẽ là một giải pháp tốt .
Thay vì ngồi đằng sau một màn hình máy tính hoặc phải phải tốn nhiều thời
gian và công sức để điều khiển các Slide PowerPoint, thì giờ đây người sử dụng có thể
đứng từ xa để điều khiển chúng. Chúng ta sẽ cùng tìm hiểu ở những chương tiếp theo.
1.2.
1.2.1.

ình 1.1 – Thiết bị Kinect
Kinect (hay còn biết với mã là Project Natal) là 1 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.
Các mốc thời gian ra đời, phát triển của kinect và các thành phần liên quan [4]:
- 5/30/2007: Microsoft nung nấu

tưởng về 1 thiết bị dùng camera ghi nhận cử

động điều khiển thay cho các thiết bị truyền thống.
- 6/1/2009: Microsoft công bố “Project Natal” ở hội nghị thường niên E3.
- 6/13/2010: Trong suốt hội nghị E3, đổi tên “Project Natal” thành Kinect, chính
thức là 1 thiết bị hỗ trợ cho Xbox 360.


7

- 11/4/2010: Microsoft chính thức tung ra thị trường Kinect, cũng từ đây, nhưng
kế hoạch phát triển Driver nguồn mở cho Kinect của các tổ chức/ hacker cũng bắt đầu
thực hiện.
- 11/10/2010: hacker trẻ tuổi ector đã phát triển thành công Driver cho Kinect.
- 2/21/2011: Microsoft lên kế hoạch cho việc phát triển bộ SDK hỗ trợ cho
kinect, tuy nhiên đến nay (6/2011), các API hỗ trợ từ thư viện này còn rất sơ khai.
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 hình 1.2, game thủ có thể đấm bốc
như thật.

Hình 1.2 – Nhận diện hành động game thủ và điều khiển nhân vật trong game
Kinect được bán rộng rãi lần đầu tại Bắc Mỹ vào tháng 11 năm 2010, sau đó là
Úc, New Zealand, Singapore, Nhật Bản và nhanh chóng có mặt trên khắp các cửa hàng
đồ chơi trên toàn thế giới. Kinect là một thiết bị giải trí tiên tiến, đi tiên phong trong
lĩnh vực thực tế ảo, nên hiện đang lập kỉ lục là thiết bị kĩ thuật số được bán chạy nhất
trên toàn thế giới [5].
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.


8
- Nhận dạng số người đang chơi
- Phân biệt đối tượng dựa vào độ sâu.


Hình 1.3 – Các chức năng thường dùng của Kinect
Kinect có cấu tạo thon, dài, nằm ngang bao gồm 1 webcam có thể ghi nhận
được hình ảnh; 1 thiết bị phát tia hồng ngoại, 1 thiết bị thu nhận tín hiện hồng ngoại 1
thiết bị ghi nhận âm thanh. Kinect dùng công nghệ xác định khoảng cách dùng camera
kết hợp thiết bị thu phát tia hồng ngoại, phát triển bởi các lập trình viên Israel thuộc
PrimeSense, có khả năng ghi nhận thông tin 3D của đối tượng dựa trên các thông tin,
cấu trúc của các tia hồng ngoại nhận được. Có thể xem như Kinect là một 3D scanner,
xây dựng cấu trúc vật thể 3D dựa trên thông tin ảnh và khoảng cách đến từng điểm của
ảnh.
1.2.2.

Hình 1.4 – Những thành phần chính của Kinect


9
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,

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:
- RGB camera: như một camera thông thường, có độ phân giải 640 x 480 với
tốc độ 30 khung hình/giây, 32 bit màu sắc.
- Bộ cảm biế

ộ sâu: độ sâu sẽ được lấy về thông qua sự kết hợp của 2 cảm

biến: đèn chiếu hồng ngoại (IR light) và camera hồng ngoại (Depth Sensor).

- Dãy

hone: gồm

microphone được bố trí dọc Kinect như trên hình

1.2, được ứng dụng vào các ứng dụng bằng giọng nói, 16 bit, tần số 16 Hz.
-



u khi n gốc ngẩn: là loại động cơ DC khá nhỏ, cho phép ta điều

khiển camera lên xuống để đảm bảo camera có góc nhìn tốt nhất.
- PrimeSense PS1080-A2: chip này được xem như là bộ não của Kinect – tất cả
các cảm biến được nối vào đây để xử l trước khi truyền ra được một chiều sâu hình ảnh
và nhận dạng được giọng nói.

Hình 1.5 – Cơ chế hoạt động của bộ cảm biến Prime Sense PS1080-A2
Một trong những đặc tính quan trọng nhất của Kinect đó là thu về giá trị độ sâu
hay giá trị khoảng cách từ camera tới vật thể trong thế giới thực và nhận dạng được
giọng nói. Phần tiếp theo sẽ nói về nguyên lý hoạt động của Kinect trong việc tính toán
giá trị và cách thức nhận dạng giọng nói này.


10
1.3.
Ngay khi mới ra đời, Kinect đã được quan tâm bởi rất nhiều nhà phát triển phần
mềm, không chỉ trên mảng phát triển game cho Xbox mà còn trên mảng xử lý ảnh ứng
dụng trong y học, robot, mapping … Do đó, mà nhiều thư viện được viết cho Kinect ra

đời. Cho đến thời điểm hiện tại, các thư viện đáng chú



ibfreenect, Code

Laboratories Kinect, OpenNI và Kinect SDK.
1.3.1.
ibfreenect 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, ibfreenect được đóng gói cho việc sử dụng trên Python, C,
C++, C#, Java JNI, Java JNA, Javascript.
1.3.2.
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.
1.3.3.
Thư viện OpenN đượ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, giúp cho các
lập trình viên có thể viết các ứng dụng trên Kinect rất dễ dàng tương tác tự nhiên
Natural Interaction (NI). 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ạng
cho Kinect.
1.3.4.

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


11
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).
SDK gồm tính năng âm thanh như giảm tiếng ồn và hạn chế tiếng vang. Các
nhà phát triển có thể truy cập vào công nghệ hình thành tia để nhận diện ra nguồn âm
thanh hay có thể truy cập vào giao diện trình ứng dụng (AP ) để nhận diện giọng nói
trong hệ thống Windows. Các nhà phát triển có thể viết ứng dụng bằng ngôn ngữ C#,
C++ và bất cứ ngôn ngữ .Net nào.
1.3.4.1. Kinect SDK beta
Kinect SDK beta được Microsoft đưa ra vào ngày 16 tháng 6 năm 2011, là một
công cụ lập trình mạnh cho các nhà phát triển. Nó cho phép lập trình viên truy xuất
toàn bộ tính năng của thiết bị Kinect. Một điều bất tiện là thư viện này chỉ hỗ trợ trên
công cụ lập trình của Microsoft là Visual Studio 2010 trở lên, với các ngôn ngữ là
C++, C# và Visual Basic. Các tính năng nổi bật như: thu ảnh từ các sensor, skeleton
tracking và điều khiển bằng giọng nói thông qua công cụ nhận biết giọng nói,
Windows Speech Recornition API. Phiên bản beta chỉ cho phép sử dụng vào những
mục đích phi lợi nhuận và phiên bản mới nhất được cập nhật vào ngày 1 tháng 11 năm
2011 với nhiều lỗi được sửa và chạy tốt trên Windows 8 Developer Preview.
1.3.4.2. Kinect SDK 1.0
Kinect SDK 1.0 ra đời vào tháng 2 năm 2012, SDK 1.0 có nhiều cải tiến hơn so
với phiên bản beta. Bản mới này có khả năng hỗ trợ lên đến 4 bộ cảm biến Kinect cho
một máy tính cho việc theo dõi khung xương của người sử dụng và chế độ theo dõi
chuyển động ở khoảng cách là 40 cm ở phía trước thiết bị. Ngoài ra, đây cũng là bản
được Microsoft tích hợp công nghệ nhận dạng giọng nói mới nhất nhưng chỉ hỗ trợ 4
tiếng là tiếng Anh, Mexico, Nhật và Canada và sẽ có nhiều ngôn ngữ hơn trong tương

lai. Microsoft đang cố gắng hoàn thiện phần mềm nhận dạng giọng nói để giúp hệ
thống nhận ra những từ địa phương trong các ngôn ngữ.
1.4.

D

1.0

Kinect chạy trên Windows SDK, tương thích Windows 7, bao gồm các trình
điều khiển, cảm biến AP mạnh mẽ cho Bộ Cảm Biến cử động, giao diện người dùng
tự nhiên, tài liệu cài đặt cho các ứng dụng và thiết bị. SDK cung cấp các khả năng của


12
Kinect cho các nhà phát triển để xây dựng các ứng dụng với C++, C# hoặc Visual
Basic® sử dụng Microsoft® Visual Studio® 2010.

Hình 1.6 – Các điểm chuyển động trên cơ thể
ă

D



Raw Sensor Streams - Bộ ả

Bế




: Các nhà phát triển có thể truy

cập dữ liệu thô từ bộ cảm biến sâu, camera cảm biến mầu sắc và dải

yếu tố

microphone. Điều đó cho phép họ xây dựng các cảm biến cấp độ thấp hơn thông qua
cảm biến Kinect.
õ



ú : SDK có khẳ năng theo dõi kiến trúc xương của một hoặc

hai người đang cử động trong tầm nhìn của Kinect giúp điều chỉnh các ứng dụng về cử
động. Bên cạnh đó, thư viện này hỗ trợ theo dõi cùng lúc 20 khớp xương trên cơ thể.
ả ă

x l â

bao gồm loại bỏ tiếng ồn và tiếng vang, hình thành

chùm tia để xác định nguồn âm thanh, và tích hợp với các hàm AP nhận dạng giọng
nói của Windows.
Dễ

. SDK nhanh chóng cài đặt theo tiêu chuẩn cho Windows 7 mà

không đòi hỏi các cấu hình phức tạp với dung lượng nhỏ hơn 100 MB. Các nhà phát
triển có thể cài đặt và chạy chỉ trong một vài phút với một cảm biến tiêu chuẩn Kinect

được phổ biến rộng rãi tại kênh bán lẻ.
l

ẫ : SDK bao gồm hơn 100 trang tài liệu công nghệ chất lượng

cao. Ngoài việc có các thông tin trợ giúp tổ hợp sẵn, tài liệu còn bao gồm những
hướng dẫn chi tiết cho hầu hết các mẫu tham khảo được cung cấp với SDK.


13
Ngoài ra khi cài đặt SDK 1.0 xong, thư viện này có những Sample giúp người
sử dụng Test thiết bị Kinect Sensor. Từ đó, người sử dụng có thể phát triển thành
những ứng dụng vào những mục đích nghiên cứu cụ thể.
1.5.

ế l
Qua một thời gian nghiên cứu, chúng tôi đã rút ra những nhận xét về những thư

viện hỗ trợ cho công việc xây dựng ứng dụng:
Kinect SDK 1.0 hỗ trợ mạnh hơn các thư viện khác về những đặc tính sau:
Đầu tiên, là đặc tính bám theo cơ thể người ổn định, do đó sẽ đáp ứng chính xác
với các cử chỉ cơ thể người, tuy nhiên để phát hiện cử chỉ ta phải tự viết giải thuật.
SDK 1.0 hỗ trợ cho việc xử l âm thanh, cho phép xây dựng các ứng dụng điều
khiển bằng giọng nói dễ dàng hơn.
Tuy nhiên, thư viện Kinect SDK 1.0 chỉ có thể hỗ trợ trên các công cụ lập trình
của .NET của Microsoft.
Nói về tầm nhìn xa hơn – về tính phát triển: Kinect SDK là một phương án tốt,
vì cả thiết bị Kinect và thư viện SDK đều là sản phẩm của Microsoft nên việc thống
nhất và các giải thuật sẽ được khai thác sâu hơn các tính năng và nhiều ứng dụng mạnh
hơn, chuyên nghiệp hơn. Chính vì thế, trong phần nghiên cứu này chúng tôi chọn thư

viện Kinect SDK 1.0 này để xây dựng ứng dụng.

Hình 1.7 – Kiến Trúc Kinect .Net SDK


14

2.1.


Giải pháp PrimeSensor của hãng PrimeSense có khả năng xử lý các cử chỉ dạng

3 chiều (3D), nhưng dữ liệu hình ảnh lại được từ cảm biến ảnh CMOS. Giải pháp này,
có khả năng ghi nhận độ sâu, màu sắc và cả âm thanh ở chế độ thời gian thực của
không gian cần kiểm soát mà không cần yêu cầu người dùng (người điều khiển hệ
thống) phải mặc hay cầm bắt cứ công cụ nào khác, cũng như không bắt buột phải cân
chỉnh hay truy xuất dữ liệu đã được số hóa từ máy tính trung tâm.
Giải pháp System on a chip (SoC) của PrimeSense có khả năng tính toán giá trị
độ sâu của mỗi điểm ảnh (pixel), dựa trên tính hiệu trả về của cảm biến CMOS. Ngoài
ra, SoC này cũng trang bị cảm biến CMOS để nhận dạng màu sắc của điểm ảnh, xử lý
nguồn sáng trả về dựa trên công nghệ phân mã nguồn sáng Light Coding. Về nguyên
tắc, Light Coding làm việc bằng cách mã hóa vùng quan sát thông qua đèn R – đèn
này “vô hình” đối với mắt người.

Hình 2.1 – Giải pháp PrimeSensor
Giải pháp dựa trên sự mã hóa ánh sáng từ tia hồng ngoại của camera IR light.
Với việc hỗ trợ một cảm biến hồng ngoại bằng việc tạo ra 2 camera phát và nhận tia
laser thì PrimeSense đã áp dụng vào rất nhiều thiết bị 3D của mình – trong đó Kinect
Sensor là một điển hình.
2.2.


â

l

sâu


15

Hình 2.2 – Các kỹ thuật đo lường chiều sâu
l

2.2.1.

Kỹ thuật này bao gồm 2 thành phần: 1 thành phần phát sóng tia laser, 1 thành
phần nhận thông tin ảnh, nhận tia laser tương ứng. Thành phần phát nhận tia laser giúp
xác định vị trí của điểm laser trên vật tương ứng với điểm nào trên ảnh màu ghi nhận
được từ thành phần còn lại. Như vậy, với vị trí của điểm laser trên vật, vị trí của thành
phần phát tia laser, thành phần nhận thông tin ảnh màu, laser, tạo thành tam giác. Các
thông tin cơ bản của tam giác này đã có sẵn như vị trí tương đối của thành phần
thu/phát tia laser và thành phần nhận ảnh, góc hợp bởi 2 thành phần này, từ đó tính
được khoảng cách thực tế của điểm trên vật, và có cả màu sắc của điểm đó đựa trên
ảnh màu.
u điểm của kỹ thuật này độ chính xác cao, tuy nhiên giới hạn trong 1 phạm vi
độ sâu nhất định do góc hợp bởi 2 thành phần này giới hạn lại. Kĩ thuật này phù hợp
khi các đối tượng có kích thước nhỏ, có hoa văn và đòi hỏi độ chính xác cao.

Hình 2.3 – Minh họa vị trí 2 thành phần chính trong Triangulation



16
2.2.2.

l

Kỹ thuật này phát ra chùm tia có cấu trúc lặp (pattern), và ghi nhận lại kết quả.
Ảnh kết quả có thể áp dụng nhiều phương pháp phân tích khác nhau để xác định được
độ lồi lõm của vật được chiếu. Mẫu chiếu lên đối tượng có thể là mẫu 1 chiều hoặc 2
chiều. Phương pháp phân tích do dựa vào mẫu được phát ra và kết quả thu nhận lại nên
hiện nay có rất nhiều cách phân tích khác nhau, và liên tục được phát triển.

Hình 2.4 – Mô phỏng kỹ thuật Structured Light
Trong hình 2.4, 1 bộ phát tia laser phát chùm tia laser theo 1 chiều, camera
nghiêng 1 góc xác định với đối tượng, dựa vào độ lồi lõm của đường thằng ghi nhận
được mà tính toán được cấu trúc 3D của vật được quét. Chỉ 1lần chụp hình có thể tính
được độ sâu của toàn bộ khuôn mặt dựa trên mẫu bị biến dạng như thế nào so với mẫu
ban đầu. Cách này thường áp dụng cho các chương trình đòi hỏi tốc độ cao hoặc ứng
dụng tương tác trong thời gian thực. Phụ thuộc nhiều vào thuật toán nội suy và độ
nhiễu của ảnh kết quả.
2.2.3.

– Of – Flight

Kỹ thuật này phát ra các tia laser để cảm nhận bề mặt của đồ vật, để tính toán
được khoảng cách từ thiết bị đến từng điểm của đối tượng, người ta dùng cách tính thời
gian di chuyển của chùm tia laser, tên gọi Time of flight cũng xuất phát từ đó. Thiết bị
thuộc nhóm này bao gồm 1 bộ phận phát tia laser và bộ cảm biến nhận tia laser. Bộ phận
phát tia laser sau khi phát chùm tia laser, ghi nhận lại thời điểm phát sóng, bộ phận nhận
tia khi nhận đựa tia laser nào thì ghi nhận thời điểm nhận tia đó. Khi đó, với mội điểm,



17
tương ứng 1 tia trong chùm tia phát ra, ta có khoảng thời gian “bay” t của tia laser đó.
Thời gian “bay” bao gồm thời gian chạm đối tượng, và thời gian phản chiếu lại vào thiết
bị nhận tia. Ta đã biết thời gian di chuyển của ánh sáng là hằng số c, đã biết thời gian
bay, ta tính khoảng cách d = (c * t) / 2.
Độ chính xác của thiết bị càng lớn khi khoảng thời gian giữa các lần bắt tia laser
trong thiết bị nhận tia càng nhỏ. Để có thể đạt đến độ chính xác là milimet thì khoảng
thời gian giữa 2 lần nhận tia phải là 3.3 picosecond. Đây là khoảng thời gian mà chưa có
thiết bị nào hiện nay có thể đạt được. Khuyết điểm của kĩ thuật này là độ chính xác
không cao, phụ thuộc vào thiết bị nhận. Tuy nhiên khoảng cách mà thiết bị này có thể
ghi nhận có thế đến con số kilomet, do đó, phù hợp cho việc quét các đối tượng có kích
thước lớn.

Hình 2.5 – Mô phỏng kỹ thuật Time – Of – Flight
2.3.

ộ â

Hình 2.6 – Cấu tạo bên trong Kinect


×