- Dãy đa microphone: Thiết bị Kinect hỗ trợ tuyệt vời cho âm thanh với sự trợ giúp của một dãy microphone. Dãy microphone này bao gồm 4 microphone hoạt động ở 16 bit với tốc độ lấy mẫu là 16KHz được đặt theo thứ tự (3 microphone được đặt ở
10
bên phải và 1 chiếc còn lại được đặt ở bên trái ở phía cuối của thiết bị). Dãy Microphone này được dùng trong các ứng dụng điều khiển bằng giọng nói. Mục đích của dãy microphone khơng chỉ là thiết bị lấy âm thanh mà còn là xác hướng của âm thanh tới. Ưu điểm chính của việc có một dãy microphone hơn việc chỉ có 1 microphone là việc bắt và nhận giọng nói được hỗ trợ tốt hơn với cơ chế giảm ồn, cắt tiếng vang và cơng nghệ hình thành chùm âm thanh. Nó cho phép thiết bị Kinect có thể là microphone 2 chiều có thể xác định nguồn của âm và nhận diện ra nhiễu và tiếng vang của môi trường. Video conferencing (hội nghị truyền hình: sử dụng camera để giao tiếp giữa các nước với nhau hoặc giữa công ty mẹ với các công ty thành viên trên khắp thế giới, hoặc giao tiếp giữa khách hàng và các nhà cung cấp ở các quốc gia, gặp nhiều khách hàng cùng một thời điểm,…) ở văn phòng hay ở nhà cũng là một ứng dụng cực kỳ nỗi bật của dãy microphone này kết hợp với tính năng ảnh màu (ảnh RGB).
- Động cơ điều khiển góc ngẩng: là động cơ DC khá nhỏ, nằm ở đế của cảm biến Kinect. Nó có khả năng làm cho cảm biến Kinect hướng đầu lên trên cao và hạ xuống thấp lên tới 270. Với khả năng này sẽ giúp cho cảm biến có thể thu được hình ảnh tốt hơn rất nhiều so với khi khơng có bộ động cơ.
2.1.3 Tính tốn thơng tin độ sâu
+ Nguyên lý các cảm biến độ sâu: Cặp cảm biến IR camera và IR projector sẽ phối hợp với nhau để tạo ra giá trị độ sâu bằng công nghệ Light Coding của PrimeSense.
11
Hình 2.4: Minh họa cơng nghệ Light Coding của PrimeSense
Kĩ thuật Light Coding dùng nguồn sáng hồng ngoại chiếu liên tục kết hợp với một camera hồng ngoại để tính khoảng cách. Việc tính tốn này được thực hiện bằng chip PS1080 Soc của PrimeSen.
Projector sẽ chiếu một chùm sáng hồng ngoại, tạo nên những đốm sáng ở khơng gian phía trước Kinect, tập hợp đốm sáng được phát ra này là cố định. Những đốm sáng này được tạo ra nhờ một nguồn sáng truyền qua lưới nhiễu xạ (diffraction gratings). Tập hợp các đốm sáng này được IR camera chụp lại, thông qua giải thuật đặc biệt được tích hợp trong PS1080 SoC cho ra bản đồ độ sâu. Bản chất của giải thuật này là 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.
12
Hình 2.5: Nguyên lý tạo ảnh độ sâu của cảm biến Kinect
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 tồ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 tố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 toá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 hố đượ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