SỬ DỤNG KINECT Học viên: Nguyễn Thị Phượng Vĩ Chuyên ngành: Khoa học máy tính Mã số: 60480101 Khóa: 33 Trường Đại học Bách khoa – ĐHĐN Tóm tắt – Kỹ thuật phát hiện và nhận dạng các cử c
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA -
Trang 2ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA -
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS HUỲNH HỮU HƯNG
Đà Nẵng – Năm 2018
Trang 3Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi dưới sự hướng dẫn trực tiếp của TS Huỳnh Hữu Hưng
Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố
Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm
Tác giả
Nguyễn Thị Phượng Vĩ
Trang 4MỤC LỤC
MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục đích nghiên cứu 1
3 Đối tượng và phạm vi nghiên cứu 1
4 Phương pháp nghiên cứu 2
5 Ý nghĩa khoa học và thực tiễn của đề tài 2
6 Bố cục luận văn 2
CHƯƠNG 1: TỔNG QUAN VỀ XÂY DỰNG GAME TƯƠNG TÁC 4
1.1 Các vấn đề liên quan đến thiết bị camera Kinect 4
1.1.1 Giới thiệu về thiết bị camera Kinect 4
1.1.2 Những thành phần chính của Kinect 5
1.1.3 Thư viện hỗ trợ Kinect 6
1.1.4 Một số ứng dụng của Kinect 6
1.2 Giới thiệu nhận dạng cử chỉ tay trong giao tiếp người-máy 7
1.2.1 Tiến trình nhận dạng cử chỉ tay 8
1.2.2 Một số ứng dụng dựa trên nhận dạng cử chỉ tay 12
1.3 Lập trình game sử dụng Unity 15
1.3.1 Unity là gì? 15
1.3.2 Tổng quan về engine Unity 15
1.3.3 Tính năng của engine Unity 18
1.3.4 Tổng quan kiến trúc engine Unity 18
1.4 Giới thiệu về game tương tác cho trẻ em 19
CHƯƠNG 2 - MỘT SỐ KỸ THUẬT TRÍCH CHỌN ĐẶC TRƯNG 21
2.1 Một số kỹ thuật trích chọn đặc trưng cử chỉ tay 21
2.1.1 Đặc trưng chuyển động của bàn tay 21
2.1.2 Đặc trưng các thành phần chính PCA 22
2.1.3 Đặc trưng HOG 25
2.1.4 Đặc trưng cục bộ bất biến - SIFT 27
2.1.5 Đặc trưng Haar-Like 31
2.1.6 Đặc trưng GIST 33
2.1.7 Đặc trưng xương ảnh của bàn tay (Skeleton of the Hand) 35
2.2 Một số kỹ thuật nhận dạng cử chỉ tay 36
Trang 52.2.2 Kỹ thuật sử dụng mạng nơ-ron nhân tạo - ANN 41
2.2.3 Kỹ thuật K-láng giềng gần nhất 43
2.2.4 Kỹ thuật sử dụng mô hình Markov ẩn - HMM 44
2.3 Mô tả game chém trái cây sử dụng Kinect 45
CHƯƠNG 3 - XÂY DỰNG HỆ THỐNG NHẬN DẠNG CỬ CHỈ TAY 48
3.1 Mô tả bài toán 48
3.2 Giải pháp đề xuất của hệ thống 49
3.2.1 Sơ đồ hoạt động của hệ thống 49
3.2.2 Phát hiện bàn tay 49
3.2.3 Tiền xử lý 50
3.2.4 Trích chọn đặc trưng 51
3.2.5 Nhận dạng cử chỉ tay 52
3.3 Xây dựng chương trình ứng dụng 54
3.3.1 Tổng quan về chương trình 54
3.3.2 Xây dựng CSDL hình ảnh trái cây 55
3.3.3 Thuật toán 55
3.3.4 Chương trình 57
3.3.5 Thực nghiệm 58
TÀI LIỆU THAM KHẢO 60
Trang 6Trong quá trình thực hiện đề tài, tôi đã gặp rất nhiều khó khăn phát sinh mà nếu không có sự giúp đỡ, động viên của gia đình, các thầy cô giáo, bạn bè đồng nghiệp thì tôi khó có thể hoàn thành được luận văn này
Trước tiên, tôi xin gởi lời cảm ơn chân thành và sâu sắc nhất tới Thầy giáo TS Huỳnh Hữu Hưng, người Thầy đã tận tình hướng dẫn và tạo điều kiện tốt nhất để tôi hoàn thành luận văn này
Tôi xin gửi lời cảm ơn tới Ban giám hiệu Trường Đại Học Bách Khoa - Đại Học
Đà Nẵng, Ban giám hiệu Trường Đại Học Phạm Văn Đồng-Quảng Ngãi, Ban chủ nhiệm khoa Công nghệ thông tin, Phòng Đào tạo sau đại học của hai trường đã tạo điều kiện thuận lợi trong quá trình học tập, nghiên cứu và hoàn thành luận văn Tôi xin cảm ơn quí Thầy giáo, Cô giáo những người đã tận tình hướng dẫn và truyền đạt cho tôi những kiến thức quí báu trong suốt quá trình học tập Tôi xin gởi lời cảm ơn tới Ban giám hiệu trường THPT Trần Quốc Tuấn đã giúp đỡ tạo mọi điều kiện tốt nhất để tôi hoàn thành khóa học
Cuối cùng, tôi xin gửi lời cảm ơn tới các thành viên trong Gia đình đã động viên
và tạo mọi điều kiện tốt nhất để tôi có thể tiếp tục theo đuổi việc học tập, nghiên cứu Luận văn cũng là món quà tinh thần mà tôi trân trọng gửi tặng đến các thành viên trong Gia đình
Tuy có nhiều cố gắng, nhưng chắc chắn luận văn không tránh khỏi những thiếu sót nhất định Tôi rất mong nhận được ý kiến đóng góp quý báu của các thầy cô giáo và các bạn để luận văn ngày càng được hoàn thiện hơn
Trân trọng cảm ơn!
Trang 7
SỬ DỤNG KINECT
Học viên: Nguyễn Thị Phượng Vĩ Chuyên ngành: Khoa học máy tính
Mã số: 60480101 Khóa: 33 Trường Đại học Bách khoa – ĐHĐN
Tóm tắt – Kỹ thuật phát hiện và nhận dạng các cử chỉ tay của con người là cách tự nhiên
để giao tiếp người-máy Trong luận văn này, tôi đã trình bày cơ sở lý thuyết tổng quan về thiết
bị camera Kinect để nhận dạng cử chỉ tay trong giao tiếp người – máy, giới thiệu nhận dạng
cử chỉ tay, giới thiệu về lập trình game unity và game tương tác cho trẻ em sử dụng camera Kinect ,…; Tiếp đến, tôi đã tìm hiểu và liệt kê một số kỹ thuật trích chọn đặc trưng và nhận dạng cử chỉ tay phổ biến hiện nay Cuối cùng, tôi đã xây dựng thành công chương trình nhận dạng cử chỉ tay ứng dụng xây dựng game tương tác cho trẻ em dựa trên thiết bị camera Kinect Chương trình ứng dụng này cho phép người dùng sử dụng cử chỉ tay đơn giản để hỗ trợ cho người dùng chơi game chém trái cây Tập cử chỉ tay dùng trong chương trình chỉ mới giới hạn trong một cử chỉ điều khiển đơn giản Sau khi xây dựng chương trình, tôi đã cho thử nghiệm
ở các môi trường và điều kiện ánh sáng khác nhau Khoảng cách từ người dùng đến camera Kinect là 2m Kết quả nhận được là với các điều kiền kiện ánh sáng tốt, cử chỉ điểu khiển được thực thi chính xác gần như tuyệt đối Trong các điều kiện ánh sáng không ổn định thì tỉ lệ bắt được cử chỉ vào khoảng 93-97% Người dùng thử khá hài lòng vì các thao tác chơi game dễ dàng, giao diện đơn giản, dễ sử dụng
Từ khóa – Nhận dạng cử chỉ tay, khai thác đặc trưng; giao tiếp người-máy, cử chỉ điều
khiển, chơi game
Abstract
CREATING INTERACTIVE GAMES FOR KIDS USING KINECT
Human hand gesture detection and recognition is a natural way to communicate between people and machines.In this thesis,I presented theoretical background of theKinect camera device for hand gesture recognition in human – machine interface, in introducing hand gesture recognition, Unity game programming, and interactive games for children that using the Kinect camera Next, I studied and listed some of popular selective techniques and hand gestures nowadays Finally, I created a hand gesture-recognizing program that creating interactive games for kids based on the Kinect camera device This application allows users to use simple hand gestures to assist the user playing the fruit slicing game Hand gestures in the program are limited to simple gesture controllability After creating the program, I already tested in different environments and lighting conditions The distance between the user and Kinect camera device is 2 meters As a result, in good lighting conditions, the gesture controllability
is practically almost exact If lighting conditions are unstable, the rate will be from 93% to 97% The user is quite satisfied with the ease of playing games, simple interface
Key words- Hand gesture recognition, popular selective techniques, human-machine
interaction, gesture controllability, game playing
Trang 8Thuật ngữ Tiếng Anh Tiếng Việt
HOG Histogram of Orientation Gradient Biểu đồ định hướng
Gradient PCA Principal Components Analysi Phân tích thành phần chính SIFT Scale Invariant Feature Transforms Phép biến đổi đặc tính bất
biến tỉ lệ
Trang 9Số hiệu
Hình 1.2 Nhận diện hành động game thủ và điều khiển nhân vật trong game 4
Hình 1.12 Phân đoạn ảnh dựa trên ngưỡng của lược đồ mức xám 11
Hình 1.14 Sử dụng cử chỉ tay trong ứng dụng thực tế ảo 13
Hình 1.15 Dùng các cử chỉ tay khác nhau để điều khiển robot 13
Hình 1.16 Người dùng điều khiển máy tính bằng cử chỉ tay 14
Hình 1.24 Cửa sổ Inspector hiển thị thông tin một đối tượng 17
Hình 2.4 Mô tả sự không hoàn thiện của thuật toán Harris 28
Trang 10Hình 2.8 Đặc trưng SIFT của ảnh cử chỉ tay 31
Hình 2.12 Cách tính nhanh các giá trị mức xám trên ảnh 33
Hình 2.14 Minh họa cho quá trình trích đặc trưng GIST cho ảnh đầu vào 35
Hình 2.20 Áp dụng Kernel phân loại trên không gian đặc trưng 40
Hình 2.26 Sơ đồ mô tả game chém trái cây sử dụng kinect 47
Hình 3.2 Sơ đồ khối hệ thống nhận dạng cử chỉ tay ứng dụng chơi game
Hình 3.3 Sơ đồ vị trí giữa người thực hiện cử chỉ và camera Kinect 50
Hình 3.6 Minh họa bài toán phân lớp bằng phương pháp SVM 52
Trang 11MỞ ĐẦU
1 Lý do chọn đề tài
Với sự phát triển của máy tính điện tử hiện nay thì việc tiếp cận game giải trí của người dùng ngày càng dễ dàng hơn Việc chơi game có thể giúp bạn xả stress mọi lúc mọi nơi Hiện nay, trên thị trường có nhiều loại game và để tham gia vào một loại game bắt buộc các game thủ phải tương tác với máy tính thông qua các thiết bị như chuột, phím, remote điều khiển…thường tạo cho các game thủ sự bất tiện và cảm giác để trải nghiệm các game này chưa thật sự hấp dẫn khi nhập vai
Ngày nay, nhu cầu đặt ra của các game thủ là làm cách nào người chơi nhập vai để trải nghiệm cảm giác như đang trực tiếp tương tác để điều khiển thiết bị mà mình chơi khi đứng trước màn hình tham gia vào một game show bất kỳ mà không đòi hỏi nhiều
về 1 hệ thống thiết bị Với các kỹ thuật phát hiện và nhận dạng cử chỉ người chơi của các game trên thị trường nói chung và nhận dạng cử chỉ người chơi game tương tác cho trẻ em nói riêng như người chơi thực hiện động tác nào?, người chơi mong muốn máy
sẽ phản ứng ra sao? …được ứng dụng trong lĩnh vực game tương tác sử dụng Kinect cho phép người chơi tương tác với máy rất dễ dàng và thuận tiện mà không cần phải mang thêm bất kỳ thiết bị ngoại vi nào đang là một thách thức đối với các nhà sản xuất game hiện nay
Với những lí do trên, tôi đề xuất chọn đề tài luận văn cao học: “Xây dựng game tương tác cho trẻ em sử dụng Kinect”
2 Mục đích nghiên cứu
Đề xuất giải pháp nhận dạng cử chỉ tay và động tác của người trước Kinect để điều khiển với dữ liệu thu được từ camera Kinect để xây dựng chương trình cho phép người dùng chọn và tương tác bằng cử chỉ tay và động tác của người trước Kinect để điều khiển ứng dụng hỗ trợ chơi game tương tác cho trẻ em hiệu quả
3 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu
- Các cử chỉ tay của bàn tay
- Các phương pháp, giải thuật về nhận dạng cử chỉ, động tác của người trước Kinect để điều khiển của người chơi
- Các kỹ thuật xử lý nhận dạng để phục vụ bài toán nhận dạng cử chỉ, động tác của người trước Kinect để điều khiển của người chơi
Phạm vi nghiên cứu
- Nghiên cứu kỹ thuật xử lý ảnh và nhận dạng đối tượng
Trang 12- Nghiên cứu các phương pháp phát hiện chuyển động đối tượng bàn tay, khớp tay và nhận dạng cử chỉ tay để tương tác người chơi– máy
4 Phương pháp nghiên cứu
Phương pháp lý thuyết
- Cơ sở lý thuyết về các kỹ thuật xử lý ảnh
- Cơ sở lý thuyết về các phương pháp nhận dạng cử chỉ tay và động tác của người trước Kinect để điều khiển
Phương pháp thực nghiệm
- Nghiên cứu và khai thác công cụ Kinect của Microsoft
- Xây dựng chương trình demo dựa trên giải pháp đề xuất
- Thực nghiệm trên dữ liệu đầu vào là các hình ảnh thu thập vào từ Kinect
5 Ý nghĩa khoa học và thực tiễn của đề tài
Về khoa học: Đề tài sẽ mang ý nghĩa cung cấp về mặt lý thuyết để làm rõ về các phương
pháp nhận dạng cử chỉ tay và động tác của người trước Kinect để điều khiển các kỹ thuật
xử lý ảnh phục vụ bài toán nhận dạng Kết quả thu được là hệ thống nhận dạng cử chỉ tay và động tác của người trước Kinect để điều khiển hỗ trợ việc chọn và chơi game một cách trực quan, hấp dẫn và dễ dàng
Về thực tiễn: Góp phần hỗ trợ cho việc điều khiển máy tính làm việc bằng cử chỉ
tay và động tác của người trước Kinect để điều khiển một cách hiệu quả, nâng cao tương tác giữa người và máy, ứng dụng hỗ trợ tích cực cho các nhà sản xuất game trong thời đại ngày nay
Chương 2: MỘT SỐ KỸ THUẬT TRÍCH CHỌN ĐẶC TRƯNG VÀ NHẬN
DẠNG CỬ CHỈ TAY
Trong chương này luận văn giới thiệu một số kỹ thuật trích chọn đặc trưng và nhận dạng cử chỉ tay thường được sử dụng phổ biến, mỗi phương pháp đều có các ưu điểm và hạn chế riêng, việc áp dụng phương pháp nào tùy thuộc vào từng bài toán cụ
Trang 13thể Trong một số bài toán, người ta có thể sử dụng kết hợp một số phương pháp với nhau như SVM/HMM, ANN/HVM,… để có được kết quả nhận dạng được tốt hơn
Chương 3: XÂY DỰNG HỆ THỐNG NHẬN DẠNG CỬ CHỈ TAY ỨNG
DỤNG CHƠI GAME CHÉM TRÁI CÂY SỬ DỤNG KINECT
Chương này trình bày về hệ thống nhận dạng cử chỉ tay ứng dụng hỗ trợ cho người dùng chơi game chém trái cây bao gồm: Mô tả bài toán; Đưa ra giải pháp đề xuất cho
hệ thống nhận dạng (Phát hiện bàn tay; Tiền xử lý; Trích chọn đặc trưng; Thuật toán SVM thông qua việc huấn luyện SVM và ứng dụng SVM trong bài toán phân lớp cử chỉ tay); Xây dựng chương trình ứng dụng dựa trên giải pháp đã đề xuất; Thực nghiệm chương trình
Trang 14CHƯƠNG 1: TỔNG QUAN VỀ XÂY DỰNG GAME TƯƠNG TÁC
CHO TRẺ EM SỬ DỤNG KINECT
Chương này giới thiệu tổng quan về thiết bị camera Kinect để nhận dạng cử chỉ tay trong giao tiếp người – máy, giới thiệu nhận dạng cử chỉ tay, giới thiệu về lập trình game unity và game tương tác cho trẻ em sử dụng camera Kinect
1.1 Các vấn đề liên quan đến thiết bị camera Kinect
Kinect là thiết bị được giới thiệu vào tháng 11 năm 2010 như một phụ kiện của Xbox 360 Cảm biến chiều sâu (depth sensor) được sử dụng trong Kinect được phát triển bởi Zeev Zalevsky, Alexander Shpunt, Aviad Maizels và Javier Garcia năm 2005 Kinect chính thức được công bố vào ngày 01 Tháng Sáu Năm 2009, dưới cái tên "Project Natal" ( Natal là tên một thành phố ở Brazil, nơi sinh của 1 giám đốc dự án này)
Hình 1.1- Camera Kinect của hãng Microsoft
1.1.1 Giới thiệu về thiết bị camera Kinect
Kinect (hay còn biết với mã là Project Natal) là thiết bị thu nhận các cảm biến chuyển động, được phát triển bởi Microsoft Thời gian đầu, Kinect là thiết bị chuyên dụng của hệ máy Xbox 360 phục vụ cho việc chơi game
Kinect sử dụng webcam, thiết bị thu phát sóng hồng ngoại và thiết bị thu nhận âm thanh để ghi nhận tín hiệu chuyển động của game thủ và nhận dạng các lệnh điều khiển thông qua giọng nói, giúp cho các game thủ tương tác với Xbox 360 mà không cần chạm vào bất kì thiết bị điều khiển nào Trong đó, game thủ có thể thao tác như thật
Hình 1.2 – Tương tác của người dùng chơi game
Trang 15Công cụ của Kinect hỗ trợ các chức năng tương tác sau:
- Ghi nhận chuyển động tay (hand gesture) bao gồm các hành động xoay vòng (circle), di chuyển tay (wave gesture), push,
- Ghi nhận chuyển động toàn cơ thể (full body skeleton), xác định các vị trí chính của cơ thể như đầu, vai, cẳng tay, chân,…
- Điều khiển bằng giọng nói
- Nhận dạng số người đang chơi
1.1.2 Những thành phần chính của Kinect
Hình 1.3 - Những thành phần chính của Kinect
Các thành phần bên trong Kinect gồm có: bộ nhớ RAM, bộ cảm ứng Prime Sense PS1080-A2, quạt tản nhiệt, động cơ điều khiển góc ngẩng (Motorized Tilt), bộ gia tốc 3 trục, 4 microphone (Multi – Array Mic) và 3 camera: RGB camera, bộ cảm biến độ sâu (3D Depth Sensors)
Các thông số kỹ thuật:
- Khoảng cách hiệu quả: 0.8 →3.5m
- RGB camera: độ phân giải 640 x 480, 30 frame/s, 32 bit màu
- Góc quay hiệu quả: 57º ngang, 43º dọc, ± 27º nghiêng
Trang 161.1.3 Thư viện hỗ trợ Kinect
Thư viện Libfreenect: Là thư viện được phát triển bởi OpenKinect do một
cộng đồng những người quan tâm đến phần cứng Kinect viết ra và chia sẻ Cộng đồng OpenKinect làm việc hoàn toàn tự nguyện và không vì mục đích lợi nhuận họ phát triển Libfreenect thành một mã nguồn mở cho các hệ điều hành khác nhau Windows, Linux
và OS X Hiện tại Libfreenect được đóng gói cho việc sử dụng trên Python, C, C++, C#, Java JNI, Java JNA, Javascript
Thư viện Code Laboratories Kinect: Code Laboratories (CL) là một công ty phần
mềm chuyên hỗ trợ các nhà phát triển, lập trình viên khai thác các tính năng của các thiết bị xử lý ảnh Trong số đó Kinect không phải là ngoại lệ, CL cung cấp cho người sử dụng những tính năng cơ bản nhất của Kinect về camera, audio và motor
Thư viện OpenNI: Được xem là thư viện mạnh nhất trước sự có mặt của Kinect
SDK 1.0, thư viện này hỗ trợ đa ngôn ngữ trên nhiều platform khác nhau Mục đích chính của OpenNI là xây dựng các hàm API chuẩn, cho phép thư viện có khả năng kết hợp với các middleware nhằm làm tăng sức mạnh cho Kinect
Thư viện Kinect SDK: SDK cung cấp cho nhà phát triển những bộ cảm biến có
chiều sâu, camera cảm biến màu sắc và xác định nguồn âm thanh theo chùm tia Các nhà phát triển cũng có thể theo dõi ảnh ở dạng khung sườn của một hay hai người đang
di chuyển trong tầm ngắm Kinect, từ đó các nhà phát triển có thể tạo ra những ứng dụng hướng theo cử chỉ (gesture)
1.1.4 Một số ứng dụng của Kinect
Hệ thống điều khiển dựa trên camera theo dõi chuyển động Kinect của Microsoft
đã chứng minh giá trị ứng dụng cao của mình trong nhiều lĩnh vực từ y tế đến giáo dục Mua sắm vốn là một hoạt động xã hội và những kinh nghiệm mua sắm có thể hỗ trợ nhiều người dùng cùng một lúc bằng cách tận dụng các công cụ xã hội
Hình 1.4 – Kinect hỗ trợ shopping
Theo đó, một chiếc xe đẩy đã được thiết kế đặc biệt, tích hợp thiết bị Kinect và cùng một màn hình hiển thị đi kèm Chiếc xe này có khả năng giúp nhận biết các món
Trang 17hàng bạn mua, tự động kiểm tra chúng với danh sách đi chợ và thậm chí có thể tự đi
theo bạn loanh quanh trong siêu thị
Trong giáo dục: Sử dụng Kinect, các nhà phát triển có thể tạo ra những trò chơi thú vị và mang đến những đột phá trong giáo dục Giáo viên có thể khiến bài học sinh động hơn khi điều khiển bằng tay các hình minh họa Chơi game sẽ giống như một quá trình liên tục khám phá, sửa sai, tìm tòi cái mới cho đến khi thành thục, nhuần nhuyễn
mà không tạo cảm giác nhàm chán cho học sinh
Điều khiển màn hình máy tính không dùng chuột, bàn phím:
Hình 1.5 - Điều khiển máy tính bằng Kinect
Ngoài ra, Đại học Nam California (Mỹ) giới thiệu bộ công cụ có tên Sloow kết hợp với sensor cảm ứng của Microsoft để điều khiển hòm thư bằng hành động như mở email với động tác như đang xé phong bì, trả lời thư bằng cách hất ngón cái ra phía sau, hoặc làm động tác dán tem để gửi email đi
Hình 1.6 - Điều khiển máy tính bằng cử chỉ
1.2 Giới thiệu nhận dạng cử chỉ tay trong giao tiếp người-máy
Trước đây, bàn phím và chuột là các thiết bị chính để thực hiện việc giao tiếp người–máy Tuy nhiên, con người giao tiếp chủ yếu bởi “nghe” và “nhìn”, do đó một giao diện người–máy sẽ trực quan hơn nếu con người có thể điều khiển máy tính bằng giọng nói hay cử chỉ giống như khi giao tiếp giữa người với người trong thế giới thực
mà không cần thông qua các thiết bị điều khiển khác như chuột hay bàn phím Một ưu điểm khác là người dùng có thể giao tiếp từ xa mà không cần phải tiếp xúc vật lý với máy tính
Trang 18Để nhận dạng cử chỉ tay, bước đầu tiên trong hệ thống nhận dạng là phát hiện ra
cử chỉ tay bằng một thiết bị cảm nhận (camera/webcam), để thu thập các quan sát cần cho việc phân loại hay miêu tả Trong luận văn này, thiết bị cảm nhận được sử dụng để thu nhận cử chỉ tay là Kinect Kinect là camera tích hợp cảm biến chiều sâu được phát triển bởi hãng Microsoft
Sau đó, tiến hành xử lý hình ảnh, trích chọn đặc trưng để tính toán các thông tin dưới dạng số hay dạng biểu tượng từ các dữ liệu quan sát và thực hiện công việc phân loại dựa vào các đặc tính đã được trích chọn để nhận dạng cử chỉ Các cử chỉ của bàn tay được phát hiện dựa trên tập dữ liệu về cử chỉ tay mẫu được thu thập từ trước thông qua hình ảnh từ webcam/video Nhiệm vụ quan trọng của bài toán nhận dạng cử chỉ tay
là phải cho máy tính “học” và “huấn luyện” trên những cử chỉ tay mẫu để nó có thể nhận dạng cử chỉ tay một cách chính xác
1.2.1 Tiến trình nhận dạng cử chỉ tay
a Sơ đồ khối của hệ thống nhận dạng cử chỉ tay
Tiến trình nhận dạng cử chỉ tay cơ bản có dạng như sau:
Hình 1.7 - Sơ đồ khối của hệ thống nhận dạng cử chỉ tay
b Dữ liệu vào
Dữ liệu vào có thể là một hình ảnh, hoặc một chuỗi các hình ảnh (video) được chụp bởi một máy ảnh duy nhất hướng về phía bàn tay người thực hiện các cử chỉ Tuy nhiên, cũng tồn tại các hệ thống sử dụng hai hoặc nhiều máy ảnh để thu được nhiều thông tin
về các tư thế tay Ưu điểm của hệ thống là có thể chụp được nhiều góc độ của tư thế tay
Hình 1.8 - Một tư thế tay ở nhiều hướng nhìn
Trang 19Một hệ thống khác đã được trình bày trong [8], camera được gắn trên một chiếc
mũ để chụp khu vực ở phía trước của người đeo (xem Hình 1.9)
Hình 1.9 - Camera gắn trên mũ [8]
c Tiền xử lý
Mục đích cơ bản của giai đoạn này là tối ưu hình ảnh thu được từ giai đoạn trước
để chuẩn bị trích xuất các đặc trưng trong giai đoạn tiếp theo Chất lượng hình ảnh thu được phụ thuộc vào điều kiện sáng và chất lượng của thiết bị ghi hình Từ hình ảnh thu nhận được ở dữ liệu vào ta có thể thực hiện xử lý ảnh cơ bản như: căn chỉnh ảnh, chuẩn hóa ánh sáng, loại bỏ nhiễu, phân đoạn ảnh, lọc màu da, Dưới đây là một số kỹ thuật tiền xử lý thường được áp dụng trong giai đoạn này
Chuyển ảnh RGB sang ảnh nhị phân:
Ảnh màu RGB nên được chuyển sang dạng ảnh xám hoặc chuyển sang ảnh trong không gian màu YcbCr (Y là độ sáng và Cb, Cr là hai thành phần màu) trước khi nó được chuyển sang ảnh nhị phân
Ảnh nhị phân là ảnh mà giá trị của các điểm ảnh chỉ được biểu diễn bởi một trong hai giá trị 0 (màu đen) hoặc 1 (màu trắng) Để chuyển sang ảnh nhị phân thì nhất thiết phải chỉ rõ ngưỡng để phân vùng ảnh thành đen hoặc thành trắng tương ứng với 0 hoặc1 Như vậy, sau khi chuyển ảnh gốc RGB sang ảnh nhị phân chúng ta thu được ảnh đen trắng mà trong đó những điểm ảnh trong vùng tay có màu trắng (1) và điểm ảnh nền
có màu đen (0), minh họa ở hình 1.10 [43]
(a) (b)
Hình 1.10 - Chuyển ảnh RGB sang ảnh nhị phân
(a) Ảnh gốc – (b) Ảnh nhị phân biểu biễn bởi 0 và 1
Trang 20Lọc nhiễu:
Trong ảnh nhị phân, có thể có một số giá trị 0 trong vùng tay và có một số giá trị
1 trong khu vực nền Khi đó, nền có những số 1 được biết đến như nhiễu xung quanh và
cử chỉ tay có một vài số 0 được biết đến như nhiễu cử chỉ Những nhiễu này có thể dẫn đến một vấn đề trong việc phát hiện đường viền của cử chỉ tay, vì vậy cần phải loại bỏ các nhiễu này Một phương pháp bộ lọc hình thái học đã được áp dụng sử dụng chuỗi các sự giãn nở và xói mòn để có được một đường viền mịn, khép kín, và hoàn chỉnh của một cử chỉ [41]
(a) (b) (c) (d)
Hình 1.11 - Quá trình chuyển đổi ảnh và lọc nhiễu
(a) Ảnh gốc RGB – (b) Ảnh không gian YcbCr
(c) Ảnh nhị phân – (d) Ảnh đã được lọc nhiễu
Phân đoạn ảnh:
Phân đoạn ảnh là thực hiện việc phân vùng ảnh thành các vùng rời rạc và đồng nhất với nhau hay nói cách khác là xác định các biên của các vùng ảnh đó Như vậy, mục tiêu của phân đoạn ảnh là làm nổi bật hoặc tách hẳn đối tượng cần quan tâm ra từ ảnh ban đầu, làm đơn giản hóa và thay đổi cách biểu diễn để dễ dàng phân tích hơn Một
số kỹ thuật phân đoạn ảnh phổ biến như:
- Phân đoạn ảnh dựa trên ngưỡng:
Các kỹ thuật phân đoạn ảnh dựa trên ngưỡng hầu hết đều dựa vào lược đồ mức xám của ảnh để tính toán ngưỡng Việc tính toán ngưỡng bao hàm việc xác định một tập các giá trị ngưỡng (có thể là một hoặc nhiều giá trị ngưỡng), dựa vào giá trị ngưỡng để phân tách ảnh ra thành những vùng có ý nghĩa
Trang 21
(a) (b)
Hình 1.12 - Phân đoạn ảnh dựa trên ngưỡng của lược đồ mức xám
(a) sử dụng một ngưỡng T - (b) Sử dụng hai ngưỡng T1 và T2
- Phân đoạn ảnh dựa trên biên (cạnh):
Việc xác định biên ảnh là một vấn đề chủ yếu và đặc điểm quan trọng trong phân tích ảnh vì các kĩ thuật phân đoạn ảnh chủ yếu dựa vào biên Một điểm ảnh được gọi là biên nếu ở đó có sự thay đổi đột ngột về mức xám Tập hợp các điểm biên tạo thành biên, hay còn gọi là đường bao của ảnh Mỗi một biên là một thuộc tính gắn liền với một điểm riêng biệt và được tính toán từ những điểm lân cận của nó Một số phương pháp phát hiện biên thông dụng như: Phương pháp đạo hàm bậc nhất (phương pháp Gradient), phương pháp đạo hàm bậc hai (phương pháp Laplace), phương pháp Canny
do John Canny đề xuất vào năm 1986,….[41]
- Phân đoạn ảnh dựa vào màu da:
Da con người có màu rất đặc trưng, có thể dễ dàng nhận dạng và nó cũng không
bị ảnh hưởng bởi các phép biến đổi hình học của đối tượng Vì vậy, phát hiện bàn tay người dựa trên việc phát hiện da là một phương pháp khá đơn giản và có thể thực hiện được
Phương pháp này chỉ dựa vào thông tin về màu sắc nên các vùng ảnh không phải
là bàn tay như khuôn mặt, các vùng da khác trên cơ thể con người, thậm chí là các đối tượng khác có màu giống với màu da cũng bị nhận diện như là bàn tay
Hình 1.13 - Kết quả lọc màu da
Trang 22d Trích chọn đặc trưng
Một hình ảnh kỹ thuật số có thể chứa một lượng lớn dữ liệu, đặc biệt là đối với ảnh
có chất lượng tốt, hình ảnh chuyên nghiệp Vì vậy, để thao tác trên một hình ảnh hiệu quả, cần giảm bớt lượng dữ liệu phải xử lý Cách tốt nhất để giải quyết vấn đề này là trích xuất các đặc điểm quan trọng nhất của một hình ảnh mà có thể đại diện cho toàn
bộ hình ảnh Những đặc điểm này được gọi là các đặc trưng hình ảnh Như vậy, trích chọn đặc trưng là chiết xuất thông tin từ dữ liệu thô mà nó phù hợp nhất cho mục đích nhận dạng để giảm thiểu các biến thể trong một lớp và tối đa hóa các biến thể giữa các lớp khác nhau
Trong giai đoạn trích chọn đặc trưng, mỗi đối tượng được đại diện bởi một véc tơ đặc trưng Mục tiêu chủ yếu của trích chọn đặc trưng là trích xuất một tập hợp các đặc trưng, trong đó có thể tối đa hóa tỷ lệ nhận dạng với sự nhầm lẫn nhỏ nhất Các đặc điểm của đối tượng được trích chọn tuỳ theo mục đích nhận dạng trong quá trình xử lý ảnh
Có thể nêu ra một số đặc điểm của ảnh sau đây:
Đặc điểm không gian: Phân bố mức xám, biên độ, điểm uốn… Các đặc điểm loại
này thường được trích chọn bằng việc áp dụng phép biến đổi Haar-Like,… trên ảnh
Đặc điểm biến đổi: Các đặc điểm loại này được trích chọn bằng việc áp dụng bộ
lọc Gabor lên ảnh như hình dáng bàn tay
Đặc điểm biên và đường biên: Đặc trưng cho đường biên của đối tượng rất hữu ích
trong việc trích chọn các thuộc tính bất biến được dùng khi nhận dạng đối tượng Các đặc điểm này có thể được trích chọn nhờ toán tử Gradient, toán tử la bàn, toán tử Laplace,…[2]
e Nhận dạng
Thực hiện việc phân tích từ dữ liệu đầu vào của người dùng để kiểm tra trong dữ liệu đầu vào đó có chứa cử chỉ đang xét hay không? Dữ liệu đầu vào cũng qua các quá trình tiền xử lý, trích chọn đặc trưng và sau đó đưa vào bộ nhận dạng Bộ nhận dạng sẽ phân loại các đặc trưng vào các lớp đã được định nghĩa trong giai đoạn huấn luyện trước
đó Việc nhận dạng ở khâu này được áp dụng thêm một số kỹ thuật nhằm tăng độ chính xác cho hệ thống
Có nhiều kỹ thuật nhận dạng khác nhau như: đối sánh mẫu, máy hỗ trợ véc tơ (SVM), mạng nơ-ron nhân tạo (ANN), mô hình Makov ẩn (HMM),…
1.2.2 Một số ứng dụng dựa trên nhận dạng cử chỉ tay
a Ứng dụng trong thực tế ảo
Thực tế ảo là cụm từ dùng để miêu tả một không gian ba chiều được dựng lên bởi máy tính Khi bước vào không gian ảo này, con người sẽ hòa mình vào môi trường xung
Trang 23quanh, có thể tự do tương tác và khám phá, có thể điều khiển vật dụng hoặc thậm chí thực hiện hàng lọat các hành động phức tạp như thể đang ở ngoài đời thật
Tương tác thực tế ảo sử dụng cử chỉ tay cho phép các đối tượng thực sử dụng các
cử chỉ bàn tay cho các tương tác 3D [15] hoặc 2D mô phỏng 3D [12]
Hình 1.14 - Sử dụng cử chỉ tay trong ứng dụng thực tế ảo
b Ứng dụng trong điều khiển robot
Các cử chỉ được sử dụng để tương tác và điều khiển robot hoàn toàn tương tự như các tương tác trong thực tế ảo và được vận hành bằng cách cung cấp dữ liệu video từ máy ảnh nằm trên robot [13]
Hình 1.15 - Dùng các cử chỉ tay khác nhau để điều khiển robot
c Điều khiển máy tính
Nhiều cử chỉ cho các tác vụ máy tính để bàn liên quan đến thao tác đồ họa, hoặc chú thích và chỉnh sửa các tài liệu dựa trên cử chỉ [16] Người dùng có thể sử dụng giọng nói, cử chỉ tay để điều khiển máy tính, trình chiếu powerpoint và các thiết bị khác như smart tivi
Hình 1.16 - Người dùng điều khiển máy tính bằng cử chỉ tay
Trang 24d Ứng dụng trong y học
Cho phép các bác sĩ trực tiếp sử dụng cử chỉ tay đơn giản để thay đổi, di chuyển, hoặc phóng to trên ảnh CT, MRI, và hình ảnh y tế khác thay vì phải hướng dẫn y tá hoặc
sử dụng bàn phím và chuột để tránh nguy cơ nhiễm trùng Điều này có thể giúp các bác
sĩ xác định nhanh chóng hơn các vị trí thích hợp trong quá trình phẫu thuật
Hình 1.17 - Bác sĩ sử dụng cử chỉ tay trong phẫu thuật
âm lượng một cách rất độc đáo và thú vị
Hình 1.18 - Sử dụng cử chỉ tay để điều khiển âm nhạc
Freeman theo dõi bàn tay của một người chơi hoặc vị trí cơ thể để điều khiển chuyển động và định hướng các đối tượng trò chơi tương tác Play Station 2 đã giới thiệu trò chơi Eye Toy, sử dụng camera theo dõi chuyển động tay cho các trò chơi tương tác
Hình 1.19 - Sử dụng cử chỉ tay trong trò chơi Eye Toy
Trang 25f Ứng dụng trong ngôn ngữ ký hiệu
Ngôn ngữ cử chỉ là một trường hợp quan trọng của cử chỉ giao tiếp Sử dụng cử chỉ là một cách hiệu quả giúp người khuyết tật có thể giao tiếp với nhau cũng như giao tiếp với máy tính một cách hiệu quả
1.3.2 Tổng quan về engine Unity
Giao diện Unity giống như nhiều môi trường làm việc khác layout có thể tùy chỉnh Layout của Unity bao gồm nhiều tab khác nhau và có thể bật tắt Chúng ta hãy xem xét một cách bố trí giao diện Unity điển hình:
Hình 1.21 - Giao diện Editor của Unity
Như hình trên chúng ta thấy có 5 khung khác nhau:
- Scene ① – cửa sổ xây dựng trò chơi
- Hierarchy ② – danh sách các GameObject trong một cảnh game
Trang 26- Inspector ③ – màn hình cài đặt cho tài nguyên/đối tượng đang được chọn
- Game ④ – cửa sổ xem trước game, chỉ hoạt động ở chế độ chơi (khi nhấn Play)
- Project ⑤ – danh sách các tài nguyên trong project, đóng vai trò như một thư viện
Cửa sổ Scene : là nơi chúng ta sẽ xây dựng toàn bộ các đối tượng trong game Cửa
sổ cung cấp nhiều góc nhìn khác nhau, có thể nhìn dạng phối cảnh hoặc dạng song song Chúng ta có thể kéo thả đối tượng trên cửa sổ này, di chuyển, xoay…
Hình 1.22 - Thanh công cụ điều khiển
Cửa sổ Scene cũng kèm theo bốn nút điều khiển tiện lợi như hình trên Truy cập
từ bàn phím bằng cách sử dụng các phím Q, W, E, và R Các phím thực hiện các hoạt động sau đây:
- Công cụ bàn tay [Q]: công cụ này cho phép di chuyển trong cửa sổ Scene, xoay góc nhìn, phóng to, thu nhỏ góc nhìn
- Công cụ di chuyển [W]: Công cụ này dùng để di chuyển một đối tượng
- Công cụ xoay [E]: Công cụ này cho phép chúng ta xoay nhân vật theo một trục nào đó trong không gian
- Công cụ tỷ lệ [R]: Công cụ này cho phép chúng ta tăng giảm tỷ lệ kích thước của đối tượng
Khi chọn một đối tượng trong cửa sổ Scene, đối tượng này sẽ được tự động chọn trong cửa sổ Hierarchy và ngược lại
Hình 1.23 - Chọn đối tượng trong Scene và Hierrarchy Inspector: sẽ hiển thị tất cả thông tin, các thành phần trong đối tượng game đang
chọn và cho phép điều chỉnh các biến của các thành phần này
Trang 27Hình 1.24 - Cửa sổ Inspector hiển thị thông tin một đối tượng Cửa sổ Game: Cửa sổ này sẽ hiển thị những gì có trong cửa sổ Scene và sẽ hoạt
động khi nhấn nút Play Trong cửa sổ này chúng ta có thể chọn các kích cỡ hiển thị khác nhau để cài đặt cho các loại máy khác nhau Chúng ta có thể chơi thử game trên cửa sổ này khi đã nhấn nút Play Lưu ý rằng khi cửa sổ này hoạt động rồi thì mọi chỉnh sửa trên cửa sổ Scene và cài đặt cho các đối tượng chỉ là tạm thời và khi nhấn nút Stop cửa sổ này về lại trạng thái tĩnh thì mọi chỉnh sửa trước đó là không còn
Hình 1.25 - Cửa sổ Game Cửa sổ Project: thể hiện nội dung bên trong thư mục Assets của project chúng ta
Khi thêm tài nguyên vào thư mục Assets ngay lập tức chúng sẽ tự động được cập nhật vào project Unity của chúng ta
Hình 1.26 - Cửa sổ Project
Trang 28Hình 1.27 - Hình minh họa đa nền tảng
1.3.3 Tính năng của engine Unity
Môi trường phát triển được tích hợp với tính năng kế thừa, khả năng chỉnh sửa đồ họa, chức năng kiểm tra chi tiết và đặc biệt tính năng xem trước game trong lúc xây dựng (live game preview)
Hỗ trợ đa nền tảng là một trong các thế mạnh của Unity, đó là khả năng hỗ trợ gần như toàn bộ các nền tảng hiện có bao gồm: PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và cả Flash Tài nguyên (model, âm thanh, hình ảnh, ) được tải vào trong Unity và tự động cập nhật nếu tài nguyên có sự thay đổi Unity hỗ trợ các kiểu định dạng từ 3DS Max, Maya, Blender, Cinema 4D và Cheetah3D
Graphics engine sử dụng Direct3D (Windows), OpenGL (Mac, Windows), OpenGL ES (iPhone OS), và các API khác trên Wii
Hỗ trợ bump mapping, reflection mapping, parallax mapping, Screen Space Ambient Occlusion v v
Unity Asset Server là một tính năng khá mới của Unity, theo đó Unity sẽ cung cấp một hệ thống quản lý theo dạng phiên bản cho tất cả asset và cả script Đây là một kho chứa các tài nguyên cần thiết cho việc làm game
1.3.4 Tổng quan kiến trúc engine Unity
Engine Unity hỗ trợ cho chúng ta UnityAPI để viết script game UnityAPI là API lập trình game trong Unity rất mạnh UnityAPI chứa các đối tượng và phương thức hỗ trợ hầu hết các đối tượng và các loại thành phần trong Unity
Trong một scene thường có nhiều đối tượng game Mỗi đối tượng này có thể có hoặc không có đoạn script nào gắn lên đó Nếu muốn gắn script vào đối tượng ta bắt buộc phải kế thừa class đó từ lớp MonoBehaviour của UnityAPI và tên class phải trùng
Trang 29với tên file script Mỗi script khi gắn lên đối tượng game đều được đối tượng game xem như một thành phần bên trong và được cấp phát vùng nhớ khi chạy game
Bên trong UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game
Chúng ta có thể viết kịch bản cho game bằng C#, Java Scripts, hoặc Boo (một dẫn xuất của ngôn ngữ Python)
Theo nhiều người lập trình đã sử dụng Unity thì code bằng C# sẽ giúp game chạy nhanh hơn và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng
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ụ Game chém hoa quả đã từng gây nghiện cho người chơi cả trên PC lẫn di động, mang đến cho bạn những giờ phút giải trí thoải mái với những màn chém hoa quả có một không hai Bạn sẽ vô cùng thích thú với hình ảnh hoa quả bị vỡ ra từng mảnh trông
vô cùng đẹp mắt, đồng thời điểm số của bạn cũng sẽ tăng lên không ngừng Khi bạn chơi game các hiệu ứng âm thanh sẽ trở nên vô cùng thú vị, tuy nhiên nếu cảm thấy phiền hà, bạn có thể tắt nó đi
So với nhiều game thuộc loại kinh điển hiện nay như game bắn súng xuất kích, game chiến thuật đế chế thì những game nhẹ nhàng như thế này vừa giúp bạn rèn luyện trí tuệ vừa giết thời gian một cách lành mạnh
Những đặc điểm nổi bật của game:
- Game có yếu tố giải trí cao: Người chơi chém hoa quả sẽ tiếp cận với cách chơi
khá đơn giản trong game, nhiệm vụ của người chơi là phải vung tay chém chính xác và dứt khoát để trúng những trái dừa, trái lê, dưa hấu đang bay giữa không trung, việc của bạn là khéo léo di chuyển tay chém để dành được điểm số cao nhất có thể đồng thời cũng tránh những trái bom bất ngờ xuất hiện làm bạn dễ nhầm lẫn Xuyên suốt game chỉ có chém và chém một cách tinh nhanh và chuẩn xác, chính vì lẽ đó mà nó được đánh giá cao trong việc giải trí
- Game có đồ họa đẹp: Chém hoa quả là tựa game được đánh giá cao về đồ họa,
với những thiết kế chỉn chu, được đầu tư dày công, kĩ lưỡng Người chơi dễ
dàng nhận ra sự tinh tế của game sau một vài lần chơi thử
- Âm thanh sống động hút hồn: Âm thanh là một bộ phận quan trong cấu thành
nên game, chém hoa quả được sở hữu hệ thống âm thanh cực kì đặc trưng, nó hút hồn người chơi bởi nhịp điệu nhạc nền, tạo cảm giác thật bởi những thao tác chém chính xác và ăn điểm
Trang 30- Nhiều màn chơi, chế độ chơi: Chém hoa quả có nhiều màn chơi khác nhau, bạn
thoải mái chinh phục các màn chơi mà không lo ngại việc đột ngột không thể đi tiếp, trong mỗi màn chơi của chém hoa quả xuất hiện những loại quả mới giúp bạn tăng điểm, nhân đôi điểm, làm chậm thời gian và khi chém được nhiều trái cây trong cùng một đợt bạn sẽ được thưởng điểm
- Rủi ro trong game: Chém hoa quả có chứa các rủi ro có thể bạn chưa biết Nếu
bạn quá say sưa chém và chém rất có thể bạn chém trúng bom, những trái bom bay lên cùng với đủ loại hoa quả là điều người chơi dễ nhầm lẫn nhất
Trang 31CHƯƠNG 2 - MỘT SỐ KỸ THUẬT TRÍCH CHỌN ĐẶC TRƯNG
VÀ NHẬN DẠNG CỬ CHỈ TAY
Trong chương này luận văn sẽ 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/HMM,… để có được kết quả nhận dạng được tốt hơn
2.1 Một số kỹ thuật trích chọn đặc trưng cử chỉ tay
Trích chọn đặc trưng là một bước không thể thiếu trong bất kỳ bài toán nhận dạng nào Các đặc trưng trích rút từ ảnh phải đạt được mục đích quan trọng là dựa trên các đặc trưng đó mà giải thuật học có thể phân biệt tốt nhất các cử chỉ tay khác nhau Có nhiều kỹ thuật trích chọn đặc trưng, luận văn chỉ giới thiệu một số kỹ thuật phổ biến dùng trong nhận dạ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 ba 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
a Phương pháp canh lề và nội suy theo quĩ đạo (Phương pháp 1)
Phương pháp này thuộc họ canh lề và nội suy Giả sử quỹ đạo chuyển động của bàn tay được mô tả bằng n điểm P = (P1,P2, ,Pn) Để trích đặc trưng sau:
- Tâm của quỹ đạo:
Trang 32- Khoảng cách trung bình đến tâm: 𝑑̅ = ∑ 𝑑(𝑝𝑘1 𝑖 ,𝑐)
𝑘 (2.4)
với d(pi,c) là khoảng cách từ điểm pi đến tâm c
- Vận tốc chuyển động tại từng điểm:
vi=pi-pi-1 (2.5)
- Góc giữa các điểm:
Tích vô hướng: v1.v2 (2.6)
Tích có hướng của v1 và v2 : [v1,v2] (2.7)
với v1 là vectơ tạo từ 2 điểm pi và pi-1; v2là vectơ tạo từ 2 điểm pi và pi+1
Như vậy, với ví dụ k = 15 như trên thì phương pháp này cho vectơ đặc trưng có:
3 + 1 + 14*3 + 13 + 13*3 = 98 chiều
b Phương pháp tổng hợp các thông tin theo thời gian (Phương pháp 2)
Phương pháp này tổng hợp các thông tin theo thời gian Với mỗi điểm trong danh sách điểm của quỹ đạo (ngoại trừ điểm đầu tiên), ta tính hướng chuyển động của quỹ đạo tại điểm này và phân bố nó vào một trong 8 hướng ứng với 8 phần trong không gian Oxyz Đếm số lượng điểm rơi vào từng phần ta có được một vectơ 8 phần tử mô tả quỹ đạo chuyển động
c Phương pháp kết hợp giữa canh lề, nội suy theo quĩ đạo và tổng hợp các thông tin theo thời gian
Phương pháp này kết hợp cả phương pháp 1 và phương pháp 2 Ý tưởng chính là chia quỹ đạo chuyển động của bàn tay thành k (ví dụ k=4) phần, với mỗi phần ta tính 8 đặc trưng theo phương pháp 2 Như vậy, với mỗi một mẫu ta sẽ có tổng cộng 8*k đặc trưng Phương pháp này chính là tổng quát hóa của phương pháp 2 Nếu chọn k=1 thì ta
sẽ có kết quả như phương pháp 2
d Phương pháp dựa trên tinh thần đặc trưng cục bộ SIFT
Tương tự như sự kết hợp trên nhưng thay vì đếm số lượng điểm rơi vào từng phần,
ta sẽ cộng dồn độ lớn gradient tại điểm đang xét Ý tưởng của phương pháp này dựa trên tinh thần đặc trưng cục bộ SIFT [18]
2.1.2 Đặc trưng các thành phần chính PCA
Phương pháp phân tích thành phần chính PCA(Principal Components Analysis - PCA) [4] là một thuật toán thống kê sử dụng phép biến đổi trực giao để biến đổi một tập hợp dữ liệu từ một không gian nhiều chiều sang một không gian mới ít chiều hơn Phép
Trang 33biến đổi này dựa trên việc tìm trục của không gian mới sao cho phương pháp dữ liệu chiếu lên trục đó là lớn nhất Thay vì giữ lại các trục tọa độ của không gian cũ, PCA xây dựng một không gian mới ít chiều hơn nhưng lại có khả năng biểu diễn dữ liệu tốt tương đương không gian cũ mà vẫn đảm bảo phương sai của dữ liệu trên mỗi chiều mới là lớn nhất
Các trục tọa độ trong không gian mới là tổ hợp tuyến tính của không gian cũ, do
đó về mặt ngữ nghĩa, PCA xây dựng các thuộc tính mới dựa trên các thuộc tính hiện có Những thuộc tính này vẫn biểu diễn tốt dữ liệu ban đầu Trong không gian mới, các liên kết tiềm ẩn của dữ liệu có thể được khám phá, mà nếu đặt trong không gian cũ thì khó phát hiện hơn, hoặc những liên kết như thế không thể hiện rõ Giải sử cho tập dữ liệu huấn luyện X = {𝒙𝑖|𝒙𝑖 ∈ R𝑑},𝑖 ∈ {1…𝑛} Với xi là vectơ thuộc không gian 𝑑 chiều, 𝑛 là
số lượng vectơ trong tập X Về cơ bản, thuật toán PCA gồm có ba bước: tiền xử lí, xây dựng không gian mới, chuyển dữ liệu từ không gian ban đầu sang không gian mới Hình 2.1 là một ví dụ kinh điển hình ảnh một con lạc đà khi chiếu lên các trục tọa
độ khác nhau có thể cho cách nhìn khác nhau về cùng một dữ liệu Cùng một con nhưng với hai góc nhìn khác nhau thì sẽ có được hai thông tin khác nhau
Hình 2.1 – Phép chiếu lên các trục tọa độ khác nhau
Thuật toán PCA được xây dựng theo các bước:
Trang 34② Normed PCA là phương pháp mang trọng tâm tất cả vectơ về tọa độ gốc, đồng thời chuẩn hóa dữ liệu về độ lệch chuẩn là 1:
𝑋̃={𝑥̃ } (2.11) 𝑖
Trong đó x̃ là vectơ n chiều (xi ̃ , x̃i1 ik , x̃in) x̃ được tính bởi: ik
𝑥 ̃ =𝑖𝑘 𝑥𝑖𝑘 −𝜇𝑘
𝜎𝑘 (2.12) Với
𝜇𝑘 = 1
𝑛∑𝑛𝑗=1𝑥𝑗𝑘 (2.13)
𝜎𝑘 = √𝑛−11 ∑𝑛 (𝑥𝑗𝑘 − 𝜇𝑘)2
𝑗=1 (2.14)
trong đó 𝜎𝑗 là phương sai của cột thứ 𝑗 trong X
Trong nghiên cứu này, phương pháp Centered PCA được sử dụng để trích chọn đặc tính trong nhận dạng
Bước 2: Xây dựng không gian mới
① Xét N ảnh: 𝐼1, 𝐼2, … , 𝐼𝑁 trong không gian 𝑀2 của tập huấn luyện
② Biểu diễn mỗi ảnh 𝐼𝑖 thành vectơ 𝑍𝑖 (1 ≤ 𝑖 ≤ 𝑁) trong không gian 𝑀2
③ Tính vectơ hình ảnh trung bình Ψ theo công thức: Ψ = 1
⑥ Tính các vectơ riêng 𝑢𝑖 của ma trận vuông 𝐴 𝐴𝑇: Ta nhận thấy ma trận 𝐴 𝐴𝑇
có kích thước 𝑀2× 𝑀2 rất lớn, vì thế việc tính toán các vectơ riêng 𝑢𝑖 là không thực tế Thay vào đó, ta sẽ tính các vectơ riêng 𝑣𝑖 của ma trận 𝐴𝑇 𝐴 (ma trận này
có kích thước 𝑁 × 𝑁) Ma trận 𝐴 𝐴𝑇 có thể có đến 𝑀2 vectơ riêng và giá trị riêng
⑦ Tính N vectơ riêng 𝑢𝑖 tốt nhất theo công thức: 𝑢𝑖 = A 𝑣𝑖 (2.18)
⑧ Chỉ giữ lại K vectơ riêng trong số N vectơ riêng nói trên (ứng với K giá trị riêng lớn nhất)
Trang 35Bước 3: Chuyển dữ liệu từ không gian ban đầu sang không gian mới
Thông thường không gian mới không được xây dựng bằng tất cả các 𝑑 vectơ riêng trong 𝑅𝑑 mà thông thường chỉ sử dụng 𝑘 vectơ riêng đầu tiên
Gọi ma trận 𝑈𝑃𝐶𝐴 = [𝑢1, 𝑢2, … , 𝑢𝑘] ∈ 𝑅𝑑×𝑘 Khi đó tọa độ các điểm trong hệ tọa
độ mới là:
𝐹 = 𝑈𝑃𝐶𝐴𝑇 𝑋∗∈ 𝑅𝑛×𝑘 (2.19)
Ví dụ: Trong hình 2.2 là ví dụ minh họa về việc sử dụng PCA để tìm các trục tọa
độ mới sao cho dữ liệu có độ biến thiên cao nhất
Hình 2.2 – Sử dụng PCA để tìm các trục tọa độ mới
Giả sử tập dữ liệu ban đầu (tập điểm màu xanh) được quan sát trong không gian 3 chiều (trục màu đen) như hình bên trái Nhận thấy rằng 3 trục này không biểu diễn được tốt nhất mức độ biến thiên của dữ liệu PCA do đó sẽ tìm hệ trục tọa độ mới (là hệ trục màu đỏ trong hình bên phải) Sau khi tìm được không gian mới, dữ liệu sẽ được chuyển sang không gian này để được biểu diễn như trong hình bên phải Rõ ràng hình bên phải chỉ cần 2 trục tọa độ nhưng biểu diễn tốt hơn độ biến thiên của dữ liệu so với hệ trục ban đầu
2.1.3 Đặc trưng HOG
Các đặc trưng HOG ban đầu được thiết kế để phát hiện người trong dữ liệu ảnh nhưng sau đó được mở rộng và được sử dụng rộng rãi cho các bài toán phát hiện đối tượng nói chung Phương pháp HOG dựa trên việc đếm số lần xuất hiện của các hướng đạo hàm trong các vùng cục bộ ảnh
Ý tưởng đặc trưng HOG xuất phát từ hình dạng và trạng thái của vật có thể được đặc trưng bằng sự phân bố về cường độ và hướng của cạnh Đặc trưng HOG gồm một
số loại như: RHOG, R2-HOG và C-HOG
Trang 36Cá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ằng công thức (2.20),
(2.21)
Cường độ: |𝐺| = √𝐼𝑥2+ 𝐼𝑦2 (2.20)
Hướng: 𝜃 = 𝑎𝑟𝑐𝑡𝑎𝑛𝐼𝑥
𝐼𝑦 (2.21)
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 Các khối được xếp chồng lên nhau một ô như
ở Hình 2.3 Số khối được tính bằng công thức (2.22) Trong đó, W image, Himage,Wblock, Hblock, Wcell, Hcell lần lượt là chiều rộng, chiều cao của ảnh, khối và ô
Hình 2.3 - Chia khối trích đặc trưng HOG
① Chia không gian hướng thành p bin (số chiều vectơ đặc trưng của ô)
② Góc hướng nghiêng tại pixel (x,y) có độ lớn α(x,y) được rời rạc hóa vào một trong p bin
Rời rạc hóa unsigned-HOG (p=9):
Nối các vectơ đặc trưng ô để được vectơ đặc trưng khối Số chiều vectơ đặc trưng
của khối tính theo công thức sizefeature/block=ncells*sizefeature/cell Trong đó, n cells là
số ô trong khối và size feature/cell là số chiều vectơ đặc trưng của ô bằng 9 (unsigned- HOG)
hoặc 18 (signed-HOG)
Trang 37- Bước 4: Tính vectơ đặc trưng cho ảnh
① Chuẩn hóa vectơ đặc trưng các khối bằng một trong các công thức (2.25), (2.26), (2.27) Theo N Dalal và B Triggs, kết quả chuẩn hóa khi dùng L2-norm và L1-sprt là như nhau, L1-norm thì kém hơn
② Ghép các vectơ đặc trưng khối tạo nên ảnh để được đặc trưng R-HOG
cho ảnh Số chiều vectơ đặc trưng của ảnh tính theo công thức size feature/image =
nblocks/image * sizefeature/block,với nblocks/image là khối và sizefeature/blocklà
số chiều vectơ đặc trưng mỗi khối
Áp dụng các bước trích đặc trưng HOG trên vùng ảnh ứng viên
Mỗi vùng ảnh ứng viên ở giai đoạn trước được đưa về kích thước 32x32 và tiến hành các bước trích đặc trưng HOG Cụ thể là, ảnh được chia thành 49 khối, mỗi khối chứa 2x2 ô, mỗi ô trong khối chứa 4x4 pixels và các khối xếp chồng lên nhau một ô Số chiều vectơ đặc trưng tại mỗi ô là 9 (sử dụng 9 bin) và số chiều vectơ đặc trưng mỗi khối là 9x2x2 = 36 chiều (vì mỗi khối có 2x2 ô) Do đó, số chiều vectơ đặc trưng của ảnh là 49x36 = 1764 chiều
2.1.4 Đặc trưng cục bộ bất biến - SIFT
a Giới thiệu
SIFT là viết tắt của Scale Invariant Feature Transforms - Phép biến đổi đặc tính
bất biến tỉ lệ do David G.Lowe đề xuất Đối với bất kỳ một đối tượng nào trong ảnh sẽ
có rất nhiều đặc trưng để mô tả, tuy nhiên David G.Lowe chỉ ra rằng có các điểm đặc biệt trên đối tượng có thể trích chọn mô tả tốt cho đối tượng, còn gọi là các điểm hấp dẫn (điểm quan trọng) Điểm hấp dẫn là vị trí điểm ảnh "hấp dẫn" trên ảnh "Hấp dẫn"
ở đây có nghĩa là điểm đó có thể có các đặc trưng bất biến với việc quay ảnh, co giãn ảnh hay thay đổi cường độ chiếu sáng của ảnh Mô tả này có thể được sử dụng để xác định đối tượng trong một ảnh chứa rất nhiều đối tượng khác nhau
Trang 38Trong quá trình nghiên cứu việc so sánh đối chiếu các điểm đặc trưng của ảnh số người ta thường gặp những vấn đề có liên quan đến việc các điểm đặc trưng tương đồng giữa các ảnh không có được sự so sánh đối chiếu chính xác nếu như các điểm đó không
có cùng tỉ lệ Điều này có nghĩa là nếu ta cố gắng tìm ra các điểm đặc trưng tương đồng
từ hai hình ảnh được chụp lại từ hai góc độ khác nhau của một khung hình ta sẽ không
có được kết quả tốt nhất
Hình 2.4 - Mô tả sự không hoàn thiện của thuật toán Harris
Ví dụ: Trong hình trên, ta dễ dàng nhận ra ở bên trái là một góc đã được thuật toán tìm kiếm góc Harris phát hiện Thế nhưng nếu như ta xem xét góc này với một tỉ lệ lớn hơn nhiều thì đó không còn là một góc theo thuật toán Harris nữa, nhưng trên thực tế đó hoàn toàn là một góc
Để giải quyết vấn đề này khái niệm “Điểm đặc trưng cục bộ bất biến SIFT” (Scale- Invariant Feature Transform) đã được David G Lowe đưa ra hồi năm 2004 trong
“Distinctive Image Features from Scale-Invariant Keypoints” với các tính chất sau:
• Thay đổi cường độ chiếu sáng ảnh
- Các đặc trưng cục bộ bất biến được trích rút từ các điểm nổi bật trên ảnh
b Thuật toán SIFT
Các đặc trưng cục bộ bất biến SIFT của ảnh thì bất biến với việc thay đổi tỉ lệ ảnh, quay ảnh, đôi khi là thay đổi điểm nhìn và thêm nhiễu ảnh hay thay đổi cường độ chiếu sáng của ảnh Các đặc trưng SIFT này được trích rút ra từ các điểm hấp dẫn cục bộ trên ảnh [18-20]
Thuật toán SIFT:
Thuật toán SIFT được tiếp cận theo phương pháp thác lọc, theo đó phương pháp
được thực hiện theo các bước: