Khai thác dữ liệu ảnh độ sâu từ cảm biến Kinect: Sửa lỗi và ứng dụng
TÓM TẮT— Thiết bị Microsoft (MS) Kinect ngày càng được sử dụng rộng rãi trong các ứng dụng thị giác máy, tương tác người máy, robot dẫn đường Khác với các thiết bị Time-Of-flight camera đắt tiền trước đây, Kinect có ưu điểm là giá rẻ nhưng vẫn cung cấp dữ liệu về độ sâu đồng thời với ảnh RGB ở độ phân giải chấp nhận được. Tuy nhiên Kinect được thiết kế đóng kín cả về phần cứng và phần mềm, do đó phát triển ứng dụng trên Kinect thường gặp một số vấn đề khó khăn như: không tương ứng giữa tọa độ hình ảnh và độ sâu, nhiễu và lỗi đo trong ảnh độ sâu Bài báo này sẽ trình bày một số hướng giải quyết những vấn đề căn bản này, tạo nền tảng phát triển các ứng dụng trên thiết bị Kinect. Đầu tiên, chúng tôi giới thiệu về phần cứng Kinect và các bộ thư viện mở hỗ trợ Kinect, đặc biệt là bộ thư viện mở OpenKinect. Tiếp theo, chúng tôi trình bày phương pháp căn chỉnh, sửa méo, làm khớp (Kinect Calibration) dữ liệu hình ảnh và độ sâu. Khai thác thông tin về độ sâu là một trong những điểm mạnh của Kinect, chúng tôi sẽ trình bày phương pháp sử dụng ảnh độ sâu để tách nền, ứng dụng trong bài toán phát hiện cử chỉ tay nhằm hỗ trợ trong việc nhận dạng trong các bài toán tiếp theo. Kết quả tách được so sánh đánh giá với phương pháp sử dụng dữ liệu ảnh RGB truyền thống, cho thấy ưu việt vượt trội của thiết bị Kinect trong giải quyết vấn đề tách đối tượng ra khỏi nền trong các ứng dụng thị giác máy tính
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Tóm tắt nội dung tài liệu: Khai thác dữ liệu ảnh độ sâu từ cảm biến Kinect: Sửa lỗi và ứng dụng
IR Projector) phát ra ánh sáng có cấu trúc (structured light) để tạo ra giá trị độ sâu bằng công nghệ Light coding của PrimeSense. Kỹ thuật light coding dùng nguồn sáng hồng ngoại của bộ phát ánh sáng hồng ngoại chiếu liên tục vào môi trường xung quanh kết hợp với việc sử dụng máy ảnh hồng ngoại chụp lại, sau đó tính toán để thu được ảnh độ sâu. Bằng việc so sánh giữa mẫu quan sát được và mẫu tham khảo biết trước, Kinect dự đoán về khoảng cách từ Kinect đến đối tượng. Kinect có thể cung cấp ảnh độ sâu trong điều kiện ánh sáng rất tối và ít chịu ảnh hưởng của chất lượng bề mặt vật thể. Hơn nữa, thiết bị Kinect có giá thành rẻ, nhỏ gọn và rất dễ sử dụng, độ phân giải và tốc độ thu nhận ảnh chấp nhận được (1280 x 1024 điểm ảnh hoặc 640 x 480 điểm ảnh). Tuy nhiên, trong thực tế, phương pháp đo độ sâu của Kinect thường gặp một số lỗi, hoặc sai số đo phụ thuộc khoảng cách [9]. Ví dụ, khi Kinect đo ảnh độ sâu với đối tượng là một bề mặt phẳng, một số lượng nhiễu đáng kể trên ảnh độ sâu có thể quan sát được. Một vấn đề khác là phối ghép các kết quả ảnh độ sâu thu được từ các Kinect khác nhau. Các vấn đề về sửa lỗi và Calib Kinect đối với ảnh độ sâu được trình bày trong phần dưới đây. Đoàn Thị Hương Giang, Vũ Hải, Trần Thị Thanh Hải 3 Hình 2. Phương pháp đo giá trị độ sâu của Kinect II. CĂN CHỈNH DỮ LIỆU ĐỘ SÂU (DEPTH) VÀ ẢNH (RGB) A. Kinect Calibration Do ảnh thu thập từ 02 cảm biến đặt ở các góc nhìn khác nhau làm cho dữ liệu thu thập có sự lệch tọa độ giữa ảnh màu và ảnh độ sâu. Calibration là phương pháp tìm một biến đổi gồm: dịch chuyển – translation và xoay (rotation) giữa các ảnh màu và độ sâu về cùng một hệ tọa độ. Một số phương pháp nghiên cứu về Calibration để joint dữ liệu độ sâu và ảnh RGB đã được nghiên cứu bởi Herrera et al [7], Yamanazoe [6]. Herrera et al. [7] sử dụng hình ảnh độ phân giải cao thu được từ một camera gắn ngoài. Herrera et al. sau đó sử dụng một mô hình không tham số. Trong phương pháp này, một số lượng lớn tham số cần phải dự đoán trước. Do đó, [7] sử dụng phương pháp tối ưu hóa để tìm ra bộ tham số này. Hiệu quả của phương pháp calib [7] thể hiện trong Hình 3. Nếu không có quá trình calib, tọa độ trên ảnh độ sâu và ảnh RGB là không tương ứng. Điều này được minh họa trên Hình 3(c), nơi các đường biên của ảnh độ sâu không vẽ đúng trên ảnh RGB. Sau khi sửa dữ liệu depth bằng phương pháp Calib [7] (Hình 3(d)), đường biên của dữ liệu depth đã Calib được vẽ trùng khớp trên ảnh RGB (Hình 3(e)). Các phương pháp calib đồng thời cũng được sử dụng khi phối ghép các dữ liệu thu từ nhiều cảm biến Kinect. Điều này đặc biệt có ý nghĩa khi dùng Kinect để tạo tập các điểm 3-D point cloud data; thường sử dụng trong các bài toán phát hiện và nhận dạng đối tượng 3-D (a) (b) (c) (d) (e) Hình 3. Ảnh độ sâu và ảnh màu sau khi hiệu chỉnh. (a) Ảnh độ sâu, (b) Ảnh màu tương ứng, (c) Đường biên của ảnh độ sâu vẽ trên ảnh màu, (d) Ảnh độ sâu đã được calib, (e) Đường biên của ảnh độ sâu đã calib vẽ trên ảnh màu. B. Khử nhiễu với KINECT Các cảm biến đo độ sâu (Time-of-flight) camera và Kinect đều có những vấn đề về nhiễu trên dữ liệu đo. Có một số nguyên nhân chính gây ra nhiễu trên ảnh độ sâu như: chất lượng cảm biến, phương pháp setup cách đo, thuộc tính trên bề mặt của đối tượng đo. Ngoài ra độ chính xác của phương pháp đo độ sâu cũng phụ thuộc vào khoảng cách [9]. Hình 4 (a) thể hiện lỗi trên cảm biến IR, vùng đối tượng nằm trong vùng diện tích ở tâm của khung ảnh trong bán kính xung quanh 0,005mm thì không bị méo, càng ra ngoài biên ảnh thì độ méo của hình ảnh độ sâu càng tăng; và Hình 4(b) thể hiện lỗi đo phụ thuộc vào khoảng cách, càng ở khoảng cách xa thì lỗi đo càng tăng lên. Đoàn Thị Hương Giang, TS.Vũ Hải, TS.Trần Thị Thanh Hải 4 Hình 4. Một số lỗi đối với ảnh độ sâu. (a) Lỗi méo trên ảnh độ sâu, (b) Lỗi đo theo khoảng cách Ngoài lỗi có tính hệ thống trên ảnh độ sâu, dữ liệu độ sâu đồng thời còn gặp một số lượng lớn lỗi có tính ngẫu nhiên. Đặc biệt ở vùng biên của đối tượng. Ví dụ: hình 5 thể hiện nhiễu lớn khi đo trên đối tượng là một mặt phẳng. Hình 5(b) thể hiện nhiễu với cường độ rất mạnh xung quanh ở các đường biên của check-board. Một số phương pháp sữa nhiễu đã được đề xuất (ví dụ [12]). Kết quả sửa nhiễu theo phương pháp [12] được thể hiện ở Hình 5(d). Hình 5. Cơ chế giải nhiễu ảnh độ sâu. (a) Ảnh độ sâu với nhiễu. (b). Phóng to vùng nhiễu gần sát biên của đối tượng. (c). Ảnh màu RGB tương ứng. (d). Ảnh độ sâu đã được khử nhiễu III. SỬ DỤNG ẢNH ĐỘ SÂU TRONG BÀI TOÁN TRỪ NỀN A. Giới thiệu bài toán trừ nền Bài toán trừ nền nhằm mục đích tách đối tượng quan tâm ra khỏi ngữ cảnh là một trong những bài toán rất quan trọng trong các ứng dụng xử lý ảnh như: phát hiện, theo bám người, Để giải quyết những bài toán này, những nhà khoa học có thể sử dụng đối tượng là ảnh màu, ảnh độ sâu, ảnh 3D, Với mỗi loại ảnh đã có nhiều kỹ thuật khác nhau như: dựa vào điểm ảnh tương ứng trên hai ảnh, dựa vào việc chia ảnh thành các khối sau đó so sánh các khối tương ứng, sử dụng đặc trưng phân bố các thuộc tính của đối tượng trong ảnh, hoặc kết hợp các thuộc tính này cũng đem đến nhiều các kỹ thuật khác nhau để trừ nền. Các bài toán trừ nền sử dụng ảnh màu đang gặp một số vấn đề hạn chế đó là các đặc trưng nêu trên không bất biến với sự thay đổi của điều kiện chiếu sáng, hay sự giống nhau của đối tượng và nền, Gần đây, dữ liệu ảnh độ sâu của camera TOF hay Kinect đã đem đến nhiều thuận lợi cho bài toán trừ nền khác nhau và đặc biệt là bài toán trừ nền với ngữ cảnh trong nhà. Ở đây, chúng tôi thấy rằng, ảnh độ sâu thu được từ Kinect đem đến thông tin rất tốt về khoảng cách từ các đối tượng đến camera. Hơn nữa, với hình ảnh mà chúng tôi nghiên cứu, thông thường thì đối tượng người thường gần camera hơn và tay lại gần camera hơn người (do tay ở phía trước người). Do đó, lược đồ của đối tượng người cũng như đối tượng tay sẽ có đặc trưng riêng trong ảnh. Vì vậy, chúng tôi đề xuất phương pháp sử dụng để tách nền là sử dụng đặc trưng phân bố các thuộc tính của các đối tượng trong ảnh. B. Phương pháp thực hiện Chúng tôi đã nghiên cứu nhiều phương pháp khác nhau khi sử dụng ảnh độ sâu cho bài toán trừ nền. Ở đây chúng tôi đề xuất phương pháp với các bước như sơ đồ khối trong hình 6 dưới đây: Hình 6. Quá trình tách hình ảnh bàn tay từ ảnh thu thập từ cảm biến Kinect Các bước hiệu chỉnh ảnh độ sâu như khử nhiễu và căn chỉnh ảnh (calibration) đã được mô tả ở phần trên. Đoàn Thị Hương Giang, Vũ Hải, Trần Thị Thanh Hải 5 1. Tách ảnh người ra khỏi nền Tách người ra khỏi nền là một bài toán rất phổ biến trong các ứng dụng như theo bám người trong hệ thống giám sát, nhận dạng hoạt động của người (human activities). Mặc dù đã có nhiều hướng tiếp cận sử dụng các phương pháp tách nền truyền thống như so sánh khác biệt giữa frame và mô hình nền, mô hình nền sử dụng kỹ thuật GMM (Gaussian Mixture Model). Các phương pháp này thường gặp phải vấn đề khó khăn vì phần cơ thể người không phải là dạng bất biến (non-rigid object). Trong nghiên cứu này, chúng tôi khai thác khoảng dữ liệu hiệu quả của ảnh độ sâu vì thông thường đối tượng người thường gần camera hơn và tay lại gần camera hơn người (do tay ở phía trước người). Đưa vào một ảnh độ sâu D(x,y), lược đồ (histogram) ảnh độ sâu được xây dựng như sau: ( ) ∑ * ( )+ ( ) (1) Trong đó: M,N: là kích thước của ảnh độ sâu L: là giá trị độ sâu lớn nhất của ảnh n: là tổng số các điểm ảnh của ảnh độ sâu D(x,y): là ảnh độ sâu Hình 7 minh họa quá trình xây dựng lược đồ từ ảnh độ sâu cho trước. Hình 7. (a) - Ảnh độ sâu thu thập từ camera kinect. (b) – Lược đồ dữ liệu ảnh độ sâu; Để xác định khoảng dữ liệu ảnh độ sâu hiệu quả cho việc tách người ra khỏi nền, chúng tôi tìm kiếm trên lược đồ mức xám (hình 7(b)) một ngưỡng với tiêu chuẩn lựa chọn như sau: ∑ ( ) (2) Với { ( ) ( ) k là giá trị bin bắt đầu của vùng diện tích m là khoảng cách từ k đến giá trị cuối của vùng diện tích Việc khó nhất là phải lựa chọn được ngưỡng area để có thể thu được hình ảnh người tách khỏi nền chính xác nhất. Và để chọn tham số đó, chúng tôi tiến hành so sánh ảnh thực tế phần cơ thể người mà chúng tôi đã tách nền với ảnh Ground True cơ thể người dựa vào nguyên tắc của đường cong ROC (receiver operating characteristic). 2. Tách tay ra khỏi người Trừ nền bằng cách sử dụng đặc trưng phân bố các thuộc tính của các đối tượng trong ảnh dựa vào lược đồ ảnh độ sâu để thu được hình ảnh chỉ có người. Sau đó tạo lược đồ của ảnh cơ thể người đã trừ nền ở trên. Hình 8 minh họa quá trình xây dựng lược đồ từ ảnh đã tách người khỏi nền ở phần trước: Hình 8. (a) - Ảnh tách người khỏi nền; (b) – Lược đồ dữ liệu ảnh cơ thể người đã tách nền Tách tay bằng cách sử dụng đặc trưng phân bố các thuộc tính của các đối tượng trong ảnh dựa vào lược đồ và tìm kiếm giá trị vùng diện tích hiệu quả để có thể tách được hình ảnh bàn tay ra khỏi người cũng tương tự như phương pháp tách người khỏi nền. Hình vẽ sau đây minh họa hình ảnh tách tay khỏi người: Đoàn Thị Hương Giang, TS.Vũ Hải, TS.Trần Thị Thanh Hải 6 Hình 9. Ảnh bàn tay tách từ ảnh cơ thể người C. Đánh giá kết quả Chúng tôi tiến hành thử nghiệm trên nhiều video khác nhau và đánh giá kết quả trên các video số 5, 27, 56 và 58 của bộ cơ sở dữ liệu của Chalearn2013. Trong mỗi video có khoảng 20 khung hình, chúng tôi lấy ngẫu nhiên 20% số khung hình của mỗi video. Đồng thời sử dụng một tập các giá trị ngưỡng trong công thức [2]: [0,004; 0,005; 0,015; 0,03; 0,035; 0,05; 0,1; 0,15] và so sánh với ảnh Ground Truth bằng cách thực hiện việc tính các giá trị như bảng 1 dưới đây: Bảng 1. Bảng các tham số TP (True Possitive), TN (True Negative), FP (False Possitive), FN (False Negative) Ảnh bàn tay tách được thực tế Vùng bàn tay Vùng ngoài bàn tay Ảnh Ground True Vùng bàn tay TP FP Vùng ngoài bàn tay FN TN Sau khi có được các tham số TP, TN, FP, FN trên cho mỗi khung hình, chúng tôi tiến hành tính toán các tham số của sensitivity và speciticity công thức sau: (3) (4) Sau đó, tính trung bình các kết quả cặp tham số trên và vẽ đường cong ROC trong đó giá trị trục hoành là sensitivity và trục tung là 1-speciticity. Một phương pháp trừ nền tốt khi cả giá trị Sensitivity và Specivity gần sát với 1. Kết quả tính trung bình các giá trị và vẽ đường cong ROC thu được như hình 9 như sau: Hình 10. Đồ thị đường cong ROC Với bộ tham số thực hiện thì giá trị đạt được kết quả được xem là tốt nhất đó là giá trị area = 0,035. Và với bộ tham số này, kết quả tách tay thu được ổn định hơn, đạt được kết quả tách tay tốt hơn so với phương pháp chỉ sử dụng ảnh RGB truyền thồng. Với phương pháp tách tay chỉ sử dụng ảnh RGB như trước đây gặp rất nhiều khó khăn với bài toán điều kiện chiếu sáng thay đổi, do bóng của người hoặc điều kiện nền phức tạp và nền thay đổi. Đoàn Thị Hương Giang, Vũ Hải, Trần Thị Thanh Hải 7 IV. THẢO LUẬN VÀ KẾT LUẬN Bài báo này trình bày về việc khai thác dữ liệu ảnh độ sâu từ Kinect: chúng tôi phân tích lỗi và một số phương pháp sửa lỗi ảnh độ sâu của Kinect. Chúng tôi đề xuất phương pháp tách bàn tay khỏi nền sử dụng dữ liệu ảnh độ sâu đã được hiệu chỉnh trước đó. Phương pháp tách mà chúng tôi đề xuất tương đối đơn giản, nhanh chóng và rất hiệu quả khi chúng tôi tiến hành thử nghiệm trên một số bộ cơ sở dữ liệu có sẵn. Trong thời gian tới, chúng tôi sẽ tiếp tục nghiên cứu và cải tiến, cũng như kết hợp với ảnh màu để có thể triển khai bài toán nhận dạng cử chỉ động của tay sử dụng Kinect. V. TÀI LIỆU THAM KHẢO [1] Kinect: [2] Kinect calibration. index.php/Research/KinectCalibration. [3] Libfreenect. [4] Microsoft Kinect for Windows. [5] Fabrizio Pedersoli, Nicola Adami, Sergio Benini, Riccardo Leonardi, “XKin - eXtendable Hand Pose and Gesture Recognition Library for Kinect”, Department of Information Engineering University of Brescia Brescia, Italy, 2013. [6] Hirotake Yamazoe, Hitoshi Habe, Ikuhisa Mitsugami, and Yasushi Yagi, “Easy Depth Sensor Calibration”, In the Proceeding of the 21st International Conference on Pattern Recognition (ICPR 2012) [7] D. Herrera C., J. Kannala, and J. Heikkila. Joint depth and color camera calibration with distortion correction. IEEE Trans. Pattern Analysis and Machine Intelligence, [8] Ahmed Elgammal, “Figure-ground segmentation - pixel-based”, Visual Analysis of Humans, Springer, 2011, pp. 31-51 [9] K. Koshelham, S.O. Elberink, “Accuracy and resolution of Kinect depth data for indoor mapping applications”, Sensors 2012 [10] J. Kramer et al. “Hacking the Kinect”, Apress 2012 [11] Mao Ye et al., “A Survey on Human Motion Analysis from Depth Data”, Time-of-Flight and Depth Imaging. Sensors, Algorithms, and Applications, LNCS 8200, pp. 149-187, 2013 [12] NGUYEN Van Toi et al. “Background Subtraction with KINECT data: An Efficient Combination RGB and Depth”, The first NAFOSTED Conference on Information and Computer Science (NICS 2014), pp 160--169, Hanoi, March 2014, [13] Caroline Rougier et al., “Fall Detection from Depth Map Video Sequences”, ICOST 2011, LNCS 6719, pp. 121– 128, 2011 [14] R. Mojtahedzaded, “Robot Obstacle Avoidance using the Kinect”, Master of Science Thesis, ETH, Sweden, 2011 [15] TRAN Thi Thanh Hai, LE Thi Lan, MOREL Jérémy , "An analysis on human fall detection using skeleton from Microsoft Kinect", ICCE 2014 ULTILIZING DEPTH IMAGE FROM KINECT SENSOR: ERROR ANALYSIS AND ITS APPLICATIONS Doan Thi Huong Giang 1,2 , Vu Hai 1 , Tran Thi Thanh Hai 1 1 International Research Institute MICA, HUST CNRS/UMI 2954 - Grenoble INP, Hanoi University of Science and Technology 2 Industrial Vocational College Hanoi huong-giang.doan@mica.edu.vn, hai.vu@mica.edu.vn , thanh-hai.tran@mica.edu.vn ABSTRACT— Microsoft (MS) Kinect widely used in machine vision applications: interactive robotics, navigation robot... Kinect device, which is different from the expensive time-of-flight camera, is low cost and the ability of both depth and RGB data acquisition. However, Kinect is designed closedly in both hardware and software, thereby developing Kinect applications still has some troubles such as: no correspondence between depth and RGB image coordinates, noise and measurement errors in depth image. In this paper, we propose some solutions for these and create a platform to develop applications on Kinect. First, the Kinect hardware and the Kinect support libraries, especially OpenKinect are introduced. Next, we present the calibration, distortion correction, fitting methods for color and depth image. Exploiting depth information is one of the strength of Kinect sensors, we will present a background substraction method for depth image, applied to detect hand gestures and support for later identification problem. The experimental results shows that it overcomes to other traditional methods in background substraction.
File đính kèm:
- khai_thac_du_lieu_anh_do_sau_tu_cam_bien_kinect_sua_loi_va_u.pdf