Giả sử rằng bộ phát hồng ngoại phát đi một tia sáng dọc theo đường màu xanh, tia sáng này sẽ được chụp lại dưới dạng một đốm sáng bởi bộ nhận hồng ngoại khi chạm vào bề mặt vật thể trong không gian. Ta bắt đầu xét ba mặt phẳng ở ba khoảng cách khác nhau: Mặt phẳng gần Kinect, mặt phẳng ở xa Kinect và mặt phẳng tham chiếu ở giữa hai mặt phẳng trên. Trong đó, với mặt phẳng tham chiếu ta có đầy đủ thơng tin về khoảng cách của nó. Ngồi ra cịn có một mặt phẳng nữa được sử dụng là mặt phẳng ảnh của camera hồng ngoại (IR camera), là mặt phẳng hình chiếu của các điểm trong không gian thu về bởi camera hồng ngoại. Ta xét trong ba trường hợp khi tia sáng màu xanh chạm vào ba điểm trên ba mặt phẳng lần lượt là A,B,C. Ba điểm này được chiếu lên mặt phẳng ảnh tương ứng là A‟, B‟, C‟. Quan sát vị trí của A‟, B‟, C‟ ta rút ra một kết luận: Điểm A càng gần Kinect thì A‟ càng xa B‟ về phía bên phải và ngược lại điểm C càng xa Kinect thì C‟ càng xa bên B‟ về phía bên trái. Do đó, khi chúng ta biết được hướng, điểm xuất phát của tia sáng ta dễ dàng tính tốn được độ sâu của điểm ảnh. Tương tự cách này cho các điểm ảnh cịn lại ta tính được độ sâu của toàn bộ ảnh hay khoảng cách đến vật thể. Nói thêm người ta có thể quy giá trị độ sâu này về giá trị mét. Do một phần của ảnh
13
độ sâu là giá trị nội suy nên người ta không thể mong đợi Kinect cho mọi điểm ảnh giá trị chính xác được. Phạm vi hoạt động tốt của Kinect là 1,2m- 3,5m.
Hình 2.6: Ngun tắc tính tốn độ sâu ảnh của cảm biến Kinect
Thực hiện các phép tốn hình học dựa trên quan hệ giữa hai cảm biến IR camera và Projector các nhà phát triển đã tính được thơng tin chiều sâu của ảnh.
Hình 2.7: Các tỉ lệ hình học tính độ sâu ảnh của cảm biến Kinect
14
Ban đầu Projector sẽ phát ra một mảng gồm rất nhiều các đốm hồng ngoại để chiếu vào đối tượng, các đốm sáng này đều có địa chỉ để phân biệt chúng với nhau nhầm tách chúng ra thành các tia sáng đơn lẻ. Ta xét trường hợp một đốm hồng ngoại chiếu vào đối tượng, đốm hồng ngoại sẽ đi qua mặt phẳng tham chiếu (ta đã biết khoảng cách từ mặt phẳng này tới máy phát) ta sẽ được điểm x, sau khi qua x tia hồng ngoại sẽ chiếu vào đối tượng rồi phản xạ ngược trở lại IR Sensor, trước khi đến được IR Sensor tia hồng ngoại đó sẽ đi qua một mặt phẳng tham chiếu nữa (mặt phẳng tham chiếu thứ 2 này ta cũng đã biết khoảng cách của nó so với máy thu) nó sẽ cắt mặt phẳng tham chiếu thứ 2 tại x’. Lúc này ta sẽ có được các thơng số của f, f’, x, x’, và khoảng cách giữa máy thu và máy phát, sau đó bằng các phép tính tốn hình học phẳng cơ bản ta sẽ tính ra được khoảng cách thực sự của điểm ảnh so với tâm Camera.
Hình 2.8: Quá trình thu ảnh chiều sâu
Sau khi thu về được hai điểm x và x’ thuật toán bên trong chip PS1080 sẽ tính tốn sự chênh lệch giữa x và x’ từ đó suy ra chiều sâu của đối tượng X. Cơng thức tính tốn chiều sâu dựa vào:
15
Hình 2.9: Cơng thức tính tốn chiều sâu
Trong đó: B là khoảng cách giữa Projector và IR Camera đã được biết trước, f là khoảng cách từ Camera đến mặt phẳng tham chiếu cũng đã được biết trước, z là khoảng cách từ đối tượng đến Camera.
2.1.4 Các thư viện hỗ trợ
2.1.4.1 Thư viện hỗ trợ tương tác tự nhiên.
Tương tác tự nhiên liên quan đến khái niệm tương tác con người với thiết bị thông qua cử chỉ của con người, chỉ liên quan đến 2 giác quan là nghe và nhìn.
Một số dạng tương tác tự nhiên:
- Nhận dạng lời nói và mệnh lệnh, nơi các thiết bị nhận các hướng dẫn thông qua âm thanh.
- Cử chỉ bàn tay, nơi các cử chỉ bàn tay được nhận dạng và biên dịch để kích hoạt các thiết bị. Ví dụ như chỉ cần vẫy tay là có thể bật tắt được các thiết bị điện trong nhà.
- Bắt chuyển động cơ thể, nơi tồn bộ cơ thể được bắt lại, phân tích và giải thích cho mục đích chơi game hay thể thao hoặc điều khiển…
16
2.1.4.2 Các thư viện tương tác tự nhiên hiện nay với Camera 3D
Hình 2.10: Tổng quát về thư viện hỗ trợ và thiết bị.
Cho đến thời điểm hiện tại có hai thư viện sử dụng phổ biến là Kinect SDK và OpenNI. Vì tính phổ biến của thư viện OpenNI nên tác giả quyết định chọn thư viện OpenNI để làm đề tài của mình.
2.1.4.3 Open NI
- Open NI được phát triển và phân phối bởi GNU Lesser general public license (LGPL), Source code của nó được cung cấp miễn phí và là một thư viện nguồn mở. Rất dễ dàng cho người sử dụng phát triển các ứng dụng riêng cho mình.Open NI là một thư viện đa ngôn ngữ (C/C++, C#, Java, VB.net, Python) và đa nền tảng (Windows, Linux Ubuntu, Android) dùng để viết các ứng dụng tương tác tự nhiên. - Mục đích chính của Open NI là tạo ra một hàm ứng dụng chuẩn để cho phép truyền thông với các thiết bị cảm biến nghe nhìn với các Middleware. Các Middleware là các thành phần phân tích các dữ liệu âm thanh và hình ảnh được ghi lại từ các thiết bị nghe nhìn. Ví dụ như phần mềm nhận dữ liệu trực quan, chẳng hạn như là hình ảnh, nó sẽ trả về vị trí của lịng bàn tay của bàn tay được phát hiện trong hình ảnh.
17
Hình 2.11: Tổng quan 3 lớp Open NI.
- Lớp Top: là lớp biểu diển các phần mềm để thực hiện các ứng dụng tương tác tự nhiên.
- Lớp Middle: biểu diển Open NI, cung cấp các giao diện truyền thông với các cảm biến và Middleware, nó phân tích các dữ liệu từ cảm biến.
- Lớp Bottom: là các linh kiện để lấy các dữ liệu âm thanh hình ảnh từ mơi trường.
❖ Các đối tượng cần thiết của Open NI
- ScriptNode: Là đối tượng để load và chạy file XML, file XML là file cấu hình để tạo và xây dựng Production graph trong Open NI được Open NI tạo ra. - Context: Là không gian làm việc nơi ứng dụng xây dựng Productin graph của Open NI.
18
- DepthGenerator: Đây là một Node của Production graph được dùng để tạo ra hình ảnh chiều sâu, mỗi giá trị pixel là khoảng cách từ vật thể đến camera.
- UserGenerator: Đây cũng là một trong những Node của Production graph dùng để tạo ra dữ liệu để mô tả người sử dụng được phát hiện trong hình ảnh. - SkeletonCapability: Cho phép các node tạo ra một bộ xương đại diện cho từng người sử dụng.
- PoseDetectionCapability: Cho phép UserGenerator nhận ra khi người sử dụng ở trong những tư thế cụ thể.
- Point3D: Lấy tọa độ 3D (x, y, z) trong hình ảnh độ sâu.
2.2 Thuật toán rừng quyết định ngẫu nhiên - randomized decision forest 2.2.1 Cây quyết định: 2.2.1 Cây quyết định:
- Cây quyết định (Decision Tree) là một cây phân cấp có cấu trúc được dùng để phân lớp các đối tượng dựa vào dãy các luật (series of rules). Các thuộc tính của đối tượng (ngoại trừ thuộc tính phân lớp – Category attribute) có thể thuộc các kiểu dữ liệu khác nhau (kiểu nhị phân, kiểu danh sách, kiểu số thứ tự, kiểu giá trị định lượng) trong khi đó thuộc tính phân lớp phải có kiểu dữ liệu là nhị phân hoặc số thứ tự. Tóm lại, cho dữ liệu về các đối tượng gồm các thuộc tính cùng với lớp (classes) của nó, cây quyết định sẽ sinh ra các luật để dự đoán lớp của các đối tượng chưa biết (unseen data).
Trong lĩnh vực học máy, cây quyết định là một kiểu mơ hình dự báo (predictive model), nghĩa là một ánh xạ từ các quan sát về một sự vật/hiện tượng tới các kết luận về giá trị mục tiêu của sự vật/hiện tượng. Mỗi một nút trong (internal node) tương ứng với một biến; đường nối giữa nó với nút con của nó thể hiện một giá trị cụ thể cho biến đó. Mỗi nút lá đại diện cho giá trị dự đoán của biến mục tiêu, cho trước các giá trị của các biến được biểu diễn bởi đường đi từ nút gốc tới nút lá đó.
19
Hình 2.12: Lưu đồ minh họa cây quyết định
2.2.2 Thuật toán rừng quyết định ngẫu nhiên - randomized decision forest
20
Hình 2.13: Lưu đồ minh họa rừng quyết định
Cho các cặp dữ liệu x1, x2, ... xn và l1, l2, ... ln cây phát triển bằng cách phân chia dữ liệu đầu vào hoặc không gian.
Với:
+ n: Là các nút (Node)
+ fn: Hàm tách (Split function) + tn: Mức ngưỡng (Threshold)
+ Pn: Phân bố xác suất lớp (class probability distribution)
Hình 2.14: Lưu đồ minh họa các nút tách (split nodes) và các nút lá (Leaf nodes)
21
• Chia Node đệ quy: Chia dữ liệu huấn luyện In đến n nút. + IL = {x ϵ In | fn(x) < tn}
+ IR = In \ IL
• Thuật tốn thử tất cả các cặp (fn, tn) và chọn các giá trị (fn, tn) tốt nhất để tối đa hoá được lợi ích thơng tin thu được.
22
ΔH = -|𝐼𝑙|
|𝐼𝑛|𝐻(𝑃𝐼𝑙(𝐶)) −|𝐼𝑟|
|𝐼𝑛|𝐻(𝑃𝐼𝑟(𝐶)) Entropy H được tính như sau:
• Với x và y độc lập, chúng ta xác định: h(x,y) = h(x) + h(y)
P(x,y) = P(x).P(y)
h(x) = - log P(x)
• Số lượng thơng tin trung bình là: H(x) = ΣP(x)h(x) = - ΣP(x)log P(x)
H: entropy (lượng thơng tin trung bình) là lớn khi phân phối được đồng đều hơn. Dựa vào thông số H ta chọn ngưỡng tn.
Thực tế thuật toán skeleton trong thư viện Kinect sử dụng được Shotton et al, CVPR(2011) mơ tả như sau:
Hình 2.16: Lưu đồ rừng quyết định trong mô tả của Shotton et al, CVPR(2011)
x x (2.1) (2.2) (2.3) (2.4) (2.5)
23
Thuật toán Learning decision forest điều khiển Kinect đòi hỏi CPU xử lý trong 24.000 giờ ( tương đương gần 3 năm), nhưng chỉ mất một ngày huấn luyện khi sử dụng hàng trăm máy tính cùng một lúc.
"Để giảm thời gian huấn luyện xuống, chúng tôi thực hiện một phân phối. Tập huấn luyện 3 cây cho độ sâu từ 20 đến 1 triệu hình ảnh mất khoảng một ngày trong một cụm lõi 1000 " [9].
“To keep the training times down we employ a distributed implementation. Training 3 trees to depth 20 from 1 million images takes about a day on a 1000 core cluster.” —Shotton et al, CVPR(2011)
Theo Shotton et al, CVPR(2011) trình bày, để tạo ra bộ khung xương skeleton gồm 2 bước chính:
+ Bước 1: thu ảnh độ sâu, sau đó tiến hành phân nhóm các bộ phận trên cơ thể người, và đề xuất các điểm 3D.
+ Bước 2: biến đổi hình ảnh các phần thân cơ thể người thành bộ xương.
24
Hình 2.18: Chuyển đổi các vùng trên cơ thể thành các điểm và nối thành bộ khung Shotton et al, CVPR(2011)
2.3 Thuật toán Mean shift clusting
Giới thiệu thuật toán
- Thuật toán chuyển đổi trung bình là một kỹ thuật phân cụm phi thông số mà không yêu cầu biết trước về số lượng các cụm, và khơng hạn chế hình dạng của các cụm.
- Cho n điểm dữ liệu xi , i = 1, ... , n trên không gian d chiều Rd, ước lượng mật độ hạt nhân đa biến thu được với hạt nhân K (x) và bán kính cửa sổ h là
f(x) = 𝑓(𝑥) = 1 𝑛ℎ𝑑∑ 𝐾 (𝑥−𝑥𝑖 ℎ ) 𝑛 𝑖=1
Đối với hạt nhân đối xứng vectơ, nó đủ để xác định thơng tin của hạt nhân k(x) thỏa mãn
𝐾(𝑥) = 𝐶𝑘𝑑𝑘(‖𝑥‖2) (2.3.2)
(2.6)
25
Trong đó 𝐶𝑘𝑑 là hằng số chuẩn, đảm bảo K (x) là một số nguyên dương. Các chế độ của hàm mật độ được đặt tại vị trí khơng của hàm dốc gradient ∇f (x) = 0. Độ dốc của bộ ước lượng mật độ (1) là
Trong đó 𝑔(𝑠) = −𝑘(𝑠)′ . Bước đầu tiên cân đối hàm mật độ ước tính ở x với hạt nhân 𝐺(𝑥) = 𝐶𝑔,𝑑𝑔(‖𝑥‖2) và bước tiếp theo là sự dịch chuyển trung bình:
Các vector thay đổi trung bình ln ln hướng về hướng tăng tối đa mật độ. Thủ tục chuyển đổi trung bình, thu được một cách liên tục.
• Tính tốn của vector chuyển đổi trung bình 𝒎𝒉(𝒙𝒕) • Dịch cửa sổ 𝒙𝒕+𝟏= 𝒙𝒕+ 𝒎𝒉(𝒙𝒕)
đảm bảo sẽ hội tụ về một điểm mà các gradient của hàm mật độ là zero. Quá trình tìm kiếm chế độ chuyển đổi trung bình được minh họa trong Hình 1.
Thuật tốn mean shift clustering là một ứng dụng thực tế của thủ tục tìm kiếm chế độ phát hiện:
(2.8)
(2.9)
(2.10)
26
Hình 2.19: Tìm kiếm vùng mật độ điểm lớn trên dữ liệu thực
• Bắt đầu từ các điểm dữ liệu, chạy thủ tục chuyển đổi trung bình để tìm các điểm dừng của hàm mật độ,
• Xén những điểm này bằng cách duy trì chỉ số maxima cục bộ.
Tập hợp của tất cả các vị trí hội tụ đến cùng một chế độ xác định lưu vực thu hút của chế độ đó.
27
28
29
2.4 Khoảng cách Eulid
Định nghĩa:
- Trong hệ tọa độ Descartes, nếu điểm có tọa độ p = (p1, p2, ..., pn) và q = (q1, q2,..., qn) là hai điểm trong khơng gian Euclid n chiều, thì khoảng cách từ p đến q bằng:
Dạng chuẩn Euclid là khoảng cách của một điểm đến điểm gốc trong không gian Euclid:
Trong luận văn tác giả sử dụng công thức khoảng cách Eulid trong không gian 3D để tính khoảng cách từ vị trí người chơi đến các điểm tọa độ cầu rơi từ đó chọn những điểm có khoảng cách xa nhất để điều khiển máy bắn cầu.
Khi xét trong hệ tọa độ Descartes vng góc 3 chiều Oxyz thì ta có khoảng cách giữa hai điểm 𝐴(𝑥𝑎, 𝑦𝑎, 𝑧𝑎) và 𝐵(𝑥𝑏, 𝑦𝑏, 𝑧𝑏) như hình 2.22 được tính theo cơng thức (2.12) [7] như sau:
𝑑2 = (𝑥𝑎 − 𝑥𝑏)2+ (𝑦𝑎 − 𝑦𝑏)2+ (𝑧𝑎 − 𝑧𝑏)2 (2.14)
Hình 2.22: Hệ toạ độ Descartes Oxyz với hai điểm A, B
𝐵(𝑥𝑏, 𝑦𝑏, 𝑧𝑏) 𝐴(𝑥𝑎, 𝑦𝑎, 𝑧𝑎) 𝑑 𝑥 𝑂 𝑦 𝑧 (2.12) (2.13)
30
Chương 3
PHÁT HIỆN CHUYỂN ĐỘNG CƠ THỂ NGƯỜI TRONG KHÔNG GIAN 3D VÀ CÀI ĐẶT CHO MÁY
PHÁT CẦU LƠNG
3.1 Sơ đồ khối
Hình 3.1: Sơ đồ khối quá trình nhận dạng cơ thể người và cài đặt cho máy phát cầu lông
- Khối thu thập dữ liệu từ camera
Khối này sẽ có nhiệm vụ tính tốn và lấy dữ liệu từ camera 3D Asus Xtion Pro Live từ đó xây dựng bản đồ chiều sâu 3D có 3 thơng số là tọa độ X, tọa độ Y và Tọa độ z, trong đó X là tọa độ theo khung hình chiều ngang 320 pixel, Y là tọa độ theo khung hình chiều dọc 240 pixel, và Z là khoảng cách từ vật thể đến camera. Từ đó ta có khơng gian 3D của đối tượng và đi thực
Khối thu thập hình ảnh từ
camera
Khối nhận dạng tư thế con người
Khối nhận dạng con người
Khối nhận dạng tọa độ người trên
sân Khối cài đặt cho
máy phát cầu lông Khối hiển thị
31
hiện các thuật toán học máy để nhận biết được đâu là cơ thể người trong khơng gian đó.
Nếu trong khối này dữ liệu lấy được đáng tin cậy như khoảng cách tối thiểu từ đối tượng đến camera hay điều kiện ánh sáng và các vật thể xung quanh đối tượng không che camera thì quá trình học máy và nhận dạng đối tượng sẽ chính xác và đem lại hiệu quả cao nhất.
- Khối nhận dạng tư thế con người
Khối này có chức năng nhận dạng vật đang chuyển động trước camera 3D, nếu đối tượng chuyện chuyển động thì khối này sẽ nhận biết đó có hay khơng bằng các thuật tốn phân ngưỡng đối tượng, nếu có thì bắt đầu cho khối tiếp theo là nhận dạng cơ thể người và gắn bộ xương vào đó.
- Khối nhận dạng con người
Khối này có chức năng nhận dạng cơ thể người sau khối nhận dạng tư thế, khối này đem so phân ngưỡng chuyển động đấy với bộ tập mẫu về các tư thế người đã được huấn luyện từ Randonized decision forrest từ đó xác định