Khối lấy hình ành Depth map bao gồm các bước sau.
- Cài đặt thư viện Open NI, là thư viện giao tiếp giữa thiết bị dựa trên công nghệ camera 3D của hãng Prime Sense với các ứng dụng dựa trên mã nguồn mở, cho phép lấy dữ liệu từ các thiết bị ngoại vi như camera, microphone… đặc biệt là camera 3D. Thư viện hỗ trợ đầy đủ các source để lấy bảng đồ Depth map từ đó để xây dựng được các ứng dụng mà có sử dụng đến khơng gian 3D.
33
Hình 3.2: Các ứng dụng và khả năng giao tiếp của thư viện Open NI
- Cài đặt bộ phần mềm visual studio để sử dụng thư viện Open NI và viết phần mềm giao tiếp với máy phát cầu lơng.
Hình 3.3: Phầm mềm visual studio của Microsoft
- Lưu đồ thuật tốn lấy hình ảnh 3D
Lưu đồ thuật tốn mơ tả quy trình lấy dữ liệu từ camera 3D Asus Xtion pro live.
Việc lấy hình ảnh chiều sâu đã được nhà sản xuất tích hợp thư viện Open NI, lưu đồ thuật tốn bên dưới sẽ chỉ ra quy trình lấy dữ liệu cũng như cách mà tác giả thực hiện để lấy hình ảnh chiều sâu.
34
Hình 3.4: Lưu đồ lấy hình ảnh chiều sâu
Đầu tiên ta thiết lập kết nối camera Asus Xtion pro live với máy tính (máy tính đã cài đặt Visual studio và thư viện Open NI) để sử dụng camera thì phải thiết lập cho camera bằng cách khai báo file config cho camera do hãng Prime Sense cung cấp. Nếu khơng được khai báo thì camera sẽ khơng cho phép lấy dữ liệu và kết nối với thiết bị của hãng. Yes Bắt đầu Thiết lập camera 3D Asus no
Gọi Histagram của hình ảnh chiều sâu
Gọi DepthMetadata là bộ lấy dữ liệu từ camera
Hiển thị
35
Gọi biểu đồ thể hiện số lượng điểm ảnh và mức độ sáng tối của ảnh chiều sâu depth map.
Tiếp theo là gọi tượng Depthmetadata trong Open NI để lấy hình ảnh chiều sâu của từ camera 3D, tại đây các thuật tốn tính tốn hình ảnh chiều sâu và lấy hình ảnh chiều sâu về phép tốn hình thái học để tạo ra hình ảnh 3D như đã giới thiệu ở chương 2 sẽ được chip PS1080 (PS1080 là chip vi điều khiển mà hãng Prime Sense dùng để tính tốn và lập trình cho camera ) của hãng Prime Sense tính tốn và thực hiện. Bộ thư viện hỗ trợ Open NI sẽ hỗ trợ đối tượng để giao tiếp và lấy dữ liệu từ chip PS1080 để đưa lên máy tính xử lý.
Sau khi có được thơng tin hình ảnh chiều sâu, thì tiến hành cho hiển thị trên màn hình máy tính một cách trực quang để dể dàng xử lý và hiệu chỉnh.
36
Hình 3.5: Hình ảnh chiều sâu của cầu thang
Hình ảnh chiều sâu của cầu thang đặc trưng được phân đoạn màu vàng trong hình trên cho thấy việc phân đoạn hình ảnh chiều sâu rất tốt có thể dể dàng phân biệt được cầu thang trong khơng gian trên .
Hình 3.6: Hình ảnh chiều sâu trong khơng gian đó có cánh tay 3.3 Khối nhận dạng tư thế người 3.3 Khối nhận dạng tư thế người
Khi một đối tượng trước camera sẽ được phân ngưỡng riêng cho đối tượng đó, trong trường hợp này là con người, khi con người chuyển động trong khơng gian 3D nó sẽ được phân ngưỡng, việc phân ngưỡng này sẽ có được một khung đối tượng gần
37
giống với con người, khung đối tượng sẽ được so sánh với tập mẫu đã được dạy bằng Randomized decision forrest, để tìm ra các bộ phận cơ thể người.
Hình 3.7: Phân đoạn con người 3.4 Khối nhận dạng và tracking con người. 3.4 Khối nhận dạng và tracking con người.
Để bắt được con người và lấy tọa độ người trong khơng gian hình ảnh Depth map thì hình ảnh sau khi phân đoạn người phải được so sánh với hàng triệu tập mẫu đã được trainning trước đó và các mẫu đó đã được biết trước các khớp.
38
Hình 3.8: Một trong các mẫu người để training đã biết trước các khớp
39
Hình 3.9: Lưu đồ giải thuật nhận dạng cơ thể và tracking bộ xương
Ban đầu sau khi phân đoạn người chơi, thì sau đó hình ảnh phân đoạn đó sẽ được đưa vào so sánh với tập dữ liệu mẫu training bằng Ramdomized decision forrest để nhận biết được các bộ phận cơ thể người, sau đó các bộ phận đó sẽ dùng thuật tốn Meanshift để lấy tọa độ các khớp trên cơ thể người như một bộ xương và sau đó kết thúc quá trình nhận dạng tọa độ người trong khơng gian.
3.5 Khối nhận dạng tọa độ người trên sân
Khối này sẽ có nhiệm vụ tìm được vị trí người chơi trên sân bằng cách chuyển các tọa độ trong bản đồ chiều sâu về cùng thứ nguyên với kích thước trên sân cầu lơng là mét.
Bắt đầu
Phân đoạn người
Randomized decision forrest
Meanshift
Skeleton cơ thể người
Kết thúc Yes
40
Để tuyến tính tọa độ người trong bản đồ chiều sâu và người trên sân cầu lơng thì phải quy định kích thước trên sân cầu lơng từ trước. Do camera 3D đang sử dụng có khoảng cách phát hiện bị giới hạn nên một bên sân cầu lơng được quy định có kích thước rộng 5m và dài 6m, trong khi đó bản đồ chiều sâu có kích thước rộng từ 0 đến 320 pixcel và chiều dài là khoảng cách từ đối tượng đến camera, khoảng cách này là khoảng cách theo đường thẳng vng góc với lưới, khơng phải là khoảng cách trực tiếp đến camera theo đường chim bay.
41
42
Lưu đồ giải thuật
Hình 3.11: Lưu đồ xác định tọa độ người chơi trên sân
Gọi x là tọa độ theo phương ngang của người chơi theo thứ nguyên là mét và N là tọa độ người chơi theo phương ngang theo thứ nguyên pixcel thì:
x= (N*5)/320
Gọi y là tọa độ người chơi theo phương dọc theo chiều dài sân và Y là tọa độ lấy được từ bộ xương trong bản đồ chiều sâu thì:
Khi đó y = Y/1000
3.6 Khối cài đặt cho máy phát cầu lơng
Tuyến tính đơn vị pixcel bằng đơn vị mét thực tế trên sân
Đưa ra tọa độ người chơi trên sân
Kết thúc Bắt đầu
Lấy tọa độ thực tế từ camera đơn vị pixcel
43
Để máy phát cầu lông nhận biết được sẽ phát cầu đến vị trí nào thì máy phát cầu phải biết được người chơi đang đứng ở vị trí tọa độ thực tế nào trên sân, phần này đã do khối nhận dạng người chơi trên sân thực hiện. Tiếp theo sau khối cài đặt cho máy phát cầu lơng sẽ tính tốn các khoảng cách từ các tọa độ cầu rơi cho trước đến vị trí tọa độ người chơi trên sân từ các khoảng cách đó tìm ra các tọa độ có khoảng cách xa nhất đến người chơi và phát cầu một điểm ngẫu nhiên xa nhất nào đó.
44
Hình 3.12: Lưu đồ giải thuật cài đặt cho máy phát cầu lông
Bắt đầu
Dùng Ecidean Distance tính tốn khoảng cách từ các tọa độ cầu rơi đến người chơi
Lấy 15 khoảng cách xa nhất
Chọn ngẫu nhiên một điểm
3 giây? Yes Kết thúc? No Kết thúc Yes No
45
3.7 Khối hiển thị
Khối hiển thị với mục đích là hiển thị vị trí người chơi trên sân để giúp cho việc phân tích trở nên trực quan sinh động hơn.
46
Hình 3.14: Hình ảnh chiều sâu và tọa độ người chơi trên sân vị trí 2
Chương 4
CHƯƠNG TRÌNH VÀ HƯỚNG DẪN SỬ DỤNG
4.1 Giao diện và chức năng chương trình
Giao diện chương trình được thiết kế gồm 4 phần chính:
- Phần thứ nhất là không gian chiều sâu, nơi hiển thị hình ảnh chiều sâu và người chơi trên sân.
- Phần thứ hai là hiển thị vị trí người chơi trên sân, hình ảnh quá trình di chuyển của người chơi trên sân sẽ được đánh dấu màu đỏ.
- Phần thứ ba là giới thiệu thông tin và đề tài.
- Phần thứ tư là phần khiển là phần có các đối tượng điều khiển để bắt đầu quá trình chạy dừng và đưa dữ liệu từ máy tính xuống máy phát cầu lơng.
47
Hình 4.1: Giao diện thiết kế tổng quan
Để tìm hiểu kỹ hơn về cách lấy tọa độ cũng như cách phân bố trên giao diện đồ họa ta cùng đi vào chi tiết từng phần như sau.
Phần thứ nhất:
- Khung ảnh chiều sâu:
Khung ảnh chiều sâu trong hình có tọa độ 320x240 pixcel trong đó 320 là chiều rộng tương đương với trục x, 240 là chiều cao tương đương với trục y, và z là khoảng cách từ đối tượng đến camera.
48
Hình 4.2: Tọa độ trong khung hình chiều sâu
- Khung sân cầu lơng
Khung sân cầu lơng được tuyến tính theo kích thước thực tế trong đề tài tác giả chọn kích thước là 5 mét rộng và 6 mét dài để cho phù hợp với vùng hoạt động của camera 3D, trong sân sẽ hiển thị vị trí của người chơi và vị trí các điểm cầu rơi.
Do kích thước là tương đối nên vị trí hiển thị cũng là tương đối theo kích thước thực tế của sân cầu lơng.
49
Hình 4.3: Sân cầu lơng tuyến tính theo kích thước thực tế
Khi người chơi di chuyển trên sân, vị trí người chơi sẽ được đánh dấu bằng những nét màu đỏ như Hình 4.4.
50
Hình 4.4: Đường màu đỏ vẽ lại các vị trí người chơi đã di chuyển trên sân
- Các đối tượng điều khiển và hiển thị
Các đối tượng điều khiển dùng để điều khiển
Hình 4.5: Đối tượng điều khiển và hiển thị
Các tọa độ người chơi và tọa độ cầu rơi được hiển thị trên bản trên
4.2 Cách sử dụng chương trình
Khi nhấn Nút nhấn START thì quá trình lấy dữ liệu tọa độ người chơi trên sân bắt đầu và khi đó máy tính sẽ tính tốn tọa độ cầu rơi rồi sau đó gửi dữ liệu như góc xoay trái, xoay phải, tốc độ xuống máy phát cầu. Khi nhấn Nút nhấn STOP thì tất cả các quá trình sẽ dừng lại.
51
Chương 5
KẾT QUẢ VÀ THẢO LUẬN
5.1 Kết quả đạt được
Sau thời gian nghiên cứu và thực nghiệm các kết quả thu được: - Thiết kế và viết chương trình giao diện.
- Thiết kế và viết chương trình nhận dạng và xác định được tọa độ người chơi và tính tốn tọa độ cầu rơi chạy theo thời gian thực.
- Chương trình đã giải quyết được bài toán ứng dụng thuật toán nhận dạng chuyển động của người, xác định được vị trí người chơi trên sân cầu lông. Đánh dấu được vị trí người chơi đã di chuyển trên sân theo thời gian thực. - Các kết quả chạy chương trình. Hình 4.5 hiển thị vị trí người chơi hiện tại đang ở tọa độ (X = 3.04 m, Y = 1.86 m) và tọa độ phát cầu chương trình tính tốn ra là (X = 5 m, Y = 6 m). Đường màu đỏ là các vị trí vận động viên đã di chuyển trước đó.
Hình 5.1: Hình ảnh 3D – Vị trí đã di chuyển – Tọa độ người chơi và tọa độ điểm cầu rơi mà máy sẽ chọn bắn đến.
52
5.2 Thực nghiệm và đánh giá độ chính xác của hệ thống
Tác giả đã kiểm chứng thực tế trong phòng Lab với khoảng cách từ 1.2 đến 3m so với vị trí đặt camera thì chương trình nhận dạng và bắt được tọa độ người sai lệch so với vị trí thật là từ 0,1 m đến 0.3 m. Cách kiểm chứng là tác giả so sánh vị trí tọa độ vận động viên mà chương trình đọc được so với vị trí thật của vận động viên trên sân và dùng thước đo các khoảng cách từ vận động viên đến biên của sân theo chiều dài và rộng. Ngồi phạm vi trên thì khơng nhận dạng được được tọa độ người chơi do giới hạn của camera.
Một số hình ảnh thực nghiệm:
53
54
5.3 Thảo luận
- Khi vận động viên di chuyển sát lưới (gần camera) và di chuyển cuối sân thì chương trình đánh dấu vị trí chuyển động khơng được chính xác do rơi vào vùng mù của camera ( camera nhận diện tốt nhất từ khoảng cách 0.8 m đến 4 m).
Hình 5.2 minh họa vị trí người chơi đứng quá gần Camera, nên Camera không thể tracking được bộ khung xương.
Hình 5.4: Khi người chơi đứng cách Camera < 0.8 m nên không tracking được khung xương.
- Tương tự khi người chơi đứng cách Camera quá xa cũng không thể tracking được khung xương, tham khảo Hình 5.3.
55
Hình 5.5: Khi người chơi đứng cách Camera > 6 m nên không tracking được khung xương.
56
Hình 5.6: Khi người chơi đứng cách xa Camera nhưng vẫn trong phạm vi nhỏ hơn 6m nên camera vẫn tracking được khung xương
- Ảnh 3D của vận động viên bị lỗ đen ở vùng biên do cảm biến hồng ngoại và nguồn phát hồng ngoại đặt cách xa nhau một đoạn nên có những điểm bộ phát hồng ngoại chiếu tới đối tượng nhưng cảm biến hồng ngoại khơng thu được. Hình 5.5 minh họa điểu này.
57
58
Chương 6
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Luận văn đã giải quyết được bài toán phát hiện vận động viên và tính được tọa độ của vận động viên trên sân cầu lơng.
Luận văn có thể phát triển thêm bằng cách tracking và vẽ quỹ đạo bay của trái cầu đến điểm rơi từ đó có thể điều khiển máy phát cầu lông tốt hơn. Trong tương lai các hãng công nghệ sẽ phát triển thêm những sản phẩm camera 3D có chất lượng tốt hơn khi đó áp dụng vào chương trình sẽ cho ra ứng dụng phần mềm tốt hơn.
Do thời gian có hạn nên tác giả chỉ cố gắng giải quyết bài tốn để hồn thành luận văn tốt nghiệp của mình cho đúng tiến độ. Trong tương lai tác giả sẽ tìm hiểu những thuật tốn tốt hơn để phát triển luận văn theo hướng Machine learing để điều khiển máy phát cầu lông tốt hơn.
59
TÀI LIỆU THAM KHẢO
[1] Jonathan Taryoto, “Shuttlcock launcher and method for launching”, Apr. 12, 2002.
[2] Shinobu Sakai, Ryota Nobeand Koetsu Yamazaki, “A Study on Projection Performance of Roller Type Badminton Machine and Its Optimization”, June 13 - 17, 2011, Shizuoka, Japan.
[3] Trần Nguyên Soái, luận văn Thạc sĩ “THIẾT KẾ VÀ THI CÔNG ROBOT THÔNG MINH HUẤN LUYỆN CHƠI CẦU LÔNG SỬ DỤNG THUẬT TOÁN NHẬN DẠNG CHUYỂN ĐỘNG 3D” Đại Học Sư Phạm Kỹ Thuật TPHCM (2017).
[4] Baptiste Darbois Texier, Caroline Cohen, David Quere, Christophe Clanet; “Shuttlecock dynamics”, Accepted 05 March 2012.
[5] Caroline Cohen, Baptiste Darbois Texier, David Quere and Christophe Clanet, “The physics of badminton”, New J. Phys. 17 (2015).
[6] Armando Nava, Leonardo Garrido and Ramon F. Brena; “Recognizing Activities Using a Kinect Skeleton tracking and Hidden Markov Models” (2014). [7] Pei-Fu Tsou, Chao-Cheng Wu; “Estimation of Calories Consumption for Aerobics Using Kinect based Skeleton Tracking” Washington, May 26-30, 2015. [8] Michael Fleder, Sudeep Pillai, Jeremy Scott “3D Object Tracking Using the Kinect” - MIT CSAIL, 6.870.
[9] Jamie Shotton, Andrew Fitzgibbon, Mat Cook, Toby Sharp, Mark Finocchio, Richard Moore, Alex Kipman, Andrew Blake; “Real-Time Human Pose Recognition in Parts from Single Depth Images” CVPR 2011.
[10] Liang-Chia Chen, Nguyen Van Thai, Hung-Fa Shyu, Hsien-I Lin. In situ clouds-powered 3-D radiation detection and localization using novel color-depth-
60
radiation (CDR) mapping. Advanced Robotics, Vol. 28, Issue 12, pp. 841-857, 2014.