Để có thể hoàn thành mục đích của đề tài thì việc đầu tiên là cần một camera có thể thu thập dữ liệu ảnh RGB và ảnh độ sâu của khung cảnh, trong đề tài này nhóm đã sử dụng camera Kinect
Trang 1TRANG
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ii
LỜI CAM ĐOAN iv
LỜI CẢM ƠN v
MỤC LỤC vi
LIỆT KÊ HÌNH VẼ ix
LIỆT KÊ BẢNG xi
TÓM TẮT xii
Chương 1 TỔNG QUAN 13
1.1 ĐẶT VẤN ĐỀ 13
1.2 MỤC TIÊU 14
1.3 NỘI DUNG NGHIÊN CỨU 15
1.4 GIỚI HẠN 15
1.5 BỐ CỤC 15
Chương 2 CƠ SỞ LÝ THUYẾT 17
2.1 HỆ ĐIỀU HÀNH ROS – ROBOT OPERATING SYSTEM 17
2.1.1 Giới thiệu tổng quan về ROS 17
2.1.2 Trao đổi dữ liệu trong ROS 18
2.2 THUẬT TOÁN SIFT – SCALE INVARIAN FEATURE TRANSFORM 19
2.2.1 Xác định điểm đặc trưng trong ảnh 19
2.2.2 Mô tả đặc tính các điểm đặc trưng 23
2.2.3 Nhận dạng các cặp điểm tương đồng của hai ảnh 2D 24
2.3 TÍNH MA TRẬN HOMOGRAPHY BẰNG THUẬT TOÁN RANSAC 25
2.3.1 Thuật toán RANSAC 25
Trang 22.3.3 Tính ma trận Homography bằng thuật toán RANSAC 27
2.4 CÁC PHÉP BIẾN ĐỔI TRONG TỌA ĐỘ BA CHIỀU VÀ PHƯƠNG PHÁP GHÉP CÁC ĐÁM MÂY 3D 28
2.4.1 Phép tịnh tiến 29
2.4.2 Phép xoay 29
2.4.3 Ghép các cặp điểm tương đồng của hai đám mây 3D 31
2.4.4 Ghép các cặp điểm tương đồng của nhiều đám mây 3D 33
2.5 NGUYÊN LÍ ĐO ĐỘ SÂU CỦA CAMERA KINECT 34
2.5.1 Giới thiệu về camera Kinect 34
2.5.2 Những thành phần chính của Kinect 34
2.5.3 Thông số kỹ thuật của camera Kinect 35
2.5.4 Nguyên lí đo độ sâu 36
2.6 CHUYỂN ĐỔI DỮ LIỆU ẢNH 2D THU ĐƯỢC TỪ CAMERA KINECT THÀNH ẢNH 3D 38
Chương 3 THIẾT KẾ 40
3.1 SƠ ĐỒ KHỐI TỔNG QUÁT CỦA CHƯƠNG TRÌNH XỬ LÝ 40
3.2 SƠ ĐỒ KHỐI QUY TRÌNH XỬ LÝ CỦA CHƯƠNG TRÌNH VẼ BẢN ĐỒ 41
Chương 4 THI CÔNG HỆ THỐNG 43
4.1 LƯU ĐỒ GIẢI THUẬT 43
4.2 KẾT QUẢ THI CÔNG 45
4.2.1 Thu thập dữ liệu từ Kinect 45
4.2.2 Tìm điểm đặc trưng của vật thể trong ảnh RGB dùng thuật toán SIFT 48
4.2.3 Tìm các cặp điểm đặc trưng tương đồng của hai ảnh RGB 50
4.2.4 Xác định các điểm đặc trưng của hai đám mây 3D 51
4.2.5 Xác định các cặp tương đồng của hai đám mây 3D tương ứng với các cặp điểm tương đồng của hai ảnh RGB 51
Trang 34.3 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 55
Chương 5 KẾT QUẢ - NHẬN XÉT - ĐÁNH GIÁ 56
5.1 KẾT QUẢ THỰC HIỆN 56
5.2 ĐÁNH GIÁ 59
Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 66
6.1 KẾT LUẬN 66
6.2 HƯỚNG PHÁT TRIỂN 67
TÀI LIỆU THAM KHẢO 68
PHỤ LỤC 69
Trang 4Hình Trang
Hình 2.1 Cấu trúc trao đổi dữ liệu trong ROS 18
Hình 2.2 Các phiên bản ảnh của vật mẫu tương ứng với các hệ số k và σ 21
Hình 2.3 Các phiên bản ảnh sai khác Dx, y, kσ tương ứng với các hệ số 𝑘 và σ 22
Hình 2.4 Hai mươi sáu vị trí được so sánh với vị trí X để tìm 22
Hình 2.5 16x16 điểm ảnh xung quanh điểm đặc trựng và vector Gradient tương ứng cho mỗi điểm ảnh [6] 23
Hình 2.6 Các vector Gradient được thống kê thành 8 giá trị góc quay khác nhau [6] 24
Hình 2.7 Phép chiếu Homography 27
Hình 2.8 Hệ toạ độ Decartes 𝑂𝑥𝑦𝑧 và 𝑂′𝑥′𝑦′𝑧′ 28
Hình 2.9 Hai đám mây nắm trên hai hệ trục toạ độ khác nhau và có các điểm x tương đồng 31
Hình 2.10 Hai đám mây có các điểm tương đồng y được ghép với nhau 32
Hình 2.11 Ghép các cặp điểm tương đồng của bốn đám mây lại với nhau 33
Hình 2.12 Camera Kinect 34
Hình 2.13 Các thành phần của Kinect 35
Hình 2.14 Lược đồ thể hiện mối quan hệ giữa độ sâu với độ sai lệch 36
Hình 2.15 Dữ liệu ảnh 2D thu được từ camera Kinect 38
Hình 2.16 Camera lấy thông tin độ sâu của điểm ảnh 38
Hình 2.17 Hệ trục toạ độ Decartes của ảnh 3D 39
Hình 3.1 Sơ đồ khối tổng quát hệ thống vẽ bản đồ 3D 40
Hình 3.2 Sơ đồ mô tả chi tiết chương trình vẽ bản đồ 3D 42
Hình 4.1 Lưu đồ giải thuật chương trình 44
Hình 4.2 Kết nối Kinect với máy tính qua cổng USB 45
Hình 4.3 Cấp nguồn cho Kinect 46
Hình 4.4 Kết nối phần cứng hoàn chỉnh 46
Hình 4.5 Chạy lệnh hoàn thành việc giao tiếp giữa Kinect và máy tính 47
Hình 4.6 Hai ảnh RGB được chụp ở hai góc độ khác nhau 48
Hình 4.7 Hai đám mây 3D tương ứng với hai ảnh RGB được chụp ở Hình 4.6 48
Hình 4.8 Điểm đặc trưng trên ảnh RGB thứ nhất 49
Trang 5Hình 4.10 Các điểm đặc trưng trên hai ảnh RGB 50
Hình 4.11 Kết nối các cặp điểm tương đồng trên hai ảnh RGB 50
Hình 4.12 Các điểm đặc trưng trên đám mây 3D 51
Hình 4.13 Kết nối các cặp điểm tương đồng trên hai đám mây 3D 52
Hình 4.14 Ma trận chuyển đổi được tính toán 53
Hình 4.15 Hai đám mây 3D được kết nối lại với nhau 53
Hình 4.16 Không gian 3D của lối đi trong phòng học (ở góc nhìn thứ nhất) 54
Hình 4.17 Không gian 3D của lối đi trong phòng học (ở góc nhìn thứ hai) 54
Hình 5.1 Không gian 3D hoàn chỉnh của phòng học (ở góc nhì thứ nhất) 56
Hình 5.2 Không gian 3D hoàn chỉnh của phòng học (ở góc nhì thứ hai) 57
Hình 5.3 Không gian 3D hoàn chỉnh của phòng học (ở góc nhì thứ ba) 57
Hình 5.4 Không gian 3D của phòng học khi xoay Kinect quanh vị trí cố định (góc nhìn thứ nhất) 58
Hình 5.5 Không gian 3D của phòng học khi xoay Kinect quanh vị trí cố định (góc nhìn thứ hai) 58
Hình 5.6 Biểu đồ thể hiện sai số khoảng cách khi di chuyển Kinect tịnh tiến 60
Hình 5.7 Biểu đồ thể hiện sai số góc quay khi xoay Kinect 61
Hình 5.8 Biểu đồ thể hiện sai số khoảng cách giữa đo thực tế và tính toán từ Kinect 62
Hình 5.9 Đám mây không gian 3D của lối đi tự nhiên 63
Hình 5.10 Ảnh 2D lối đi tự nhiên (không được sắp xếp các chi tiết) 63
Hình 5.11 Ảnh 2D lối đi được sắp xếp có nhiều chi tiết 64
Hình 5.12 Biểu đồ thống kê sự chênh lệch số lượng điểm đặc trưng trong từng khung hình chụp 65
Trang 6Bảng Trang
Bảng 2.1: Bảng thống kê tầm nhìn của camera Kinect 36
Bảng 5.1 Bảng thống kê sai số khoảng cách khi di chuyển tịnh tiến Kinect 59
Bảng 5.2 Bảng thống kê sai số góc quay khi xoay Kinect 60
Bảng 5.3 Bảng thống kê sai số khoảng cách đo từ Kinect đến đối tượng 62
Bảng 5.4 Bảng thống kê số lượng điểm đặc trưng 64
Trang 7Đề tài này sẽ thực hiện việc xây dựng một bản đồ 3D của một phòng học Để có thể hoàn thành mục đích của đề tài thì việc đầu tiên là cần một camera có thể thu thập dữ liệu ảnh RGB và ảnh độ sâu của khung cảnh, trong đề tài này nhóm đã sử dụng camera Kinect cho việc thu thập dữ liệu và từ hai dữ liệu này ta chuyển thành dữ liệu các đám mây điểm 3D của khung cảnh Sau đó, nhóm sử dụng thuật toán SIFT trên hai góc khác nhau của một khung cảnh để tìm các cặp điểm tương đồng của hai ảnh RGB này Tiếp theo, xác định các cặp điểm tương đồng trong hai đám mây điểm 3D tương ứng với hai ảnh RGB Cuối cùng, xác định ma trận chuyển đổi để ghép các cặp điểm tương đồng này lại với nhau, đồng nghĩa với việc ghép hai đám mây 3D của hai khung cảnh lại thành một đám mây lớn hơn tương ứng với khung cảnh lớn hơn Tương tự khi chụp nhiều góc của khung cảnh căn phòng và thực hiện ghép nhiều đám mây 3D lại với nhau thì sẽ tạo thành bản đồ 3D của phòng học Đám mây 3D của phòng học sau khi được tạo thành tương đối rõ ràng và giống với không gian thực tế của phòng học Bên cạnh đó, việc xây dựng bản đồ 3D có vai trò quan trọng trong lĩnh vực robot tự hành, cung cấp cho robot một bản đồ 3D của không gian mà nó di chuyển để robot có thể định vị và di chuyển cho phù hợp.
Trang 8Chương 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Bản đồ 3D được ứng dụng rộng rãi trong Robot tự hành và đóng vai trò quan trọng trong việc điều hướng, thao tác, điều khiển từ xa Robot Sau khi tìm tòi nghiên cứu nhóm cảm thấy thích thú với lĩnh vực này nên quyết định thực hiện đồ án mô phỏng lại không gian 3D sử dụng camera Kinect Camera Kinect sẽ trả về dữ liệu là ảnh RGB và ảnh độ sâu của không gian - ảnh 3D Với ảnh RGB thu được, nhóm sẽ sử dụng thuật toán SIFT để xác định các cặp điểm đặc trưng tương đồng giữa hai khung ảnh được chụp liên tiếp Sau đó, nhóm đối chiếu tọa độ của các cặp điểm đặc trưng tương đồng trên ảnh RGB lên ảnh cặp ảnh 3D tương ứng Dựa vào các cặp điểm tương đồng đó, nhóm tính toán để suy ra ma trận chuyển đổi với mục đích đồng hóa gốc tọa độ của đám mây thứ hai với đám mây thứ nhất
và thực hiện ghép ảnh giữa hai đám mây Đám mây sau khi ghép tiếp tục được so sánh với đám mây kế tiếp Cứ tiếp tục thực hiện việc ghép ảnh như vậy, kết quả thu được là đám mây ngày càng hoàn thiện hơn Để có thể hoàn thành đồ án này, nhóm đã tham khảo qua các bài báo có liên quan trên thế giới về lĩnh xây dựng bản đồ 3D của một không gian sử dụng camera Kinect
Trong bài báo “ 2D Mapping of a Closed Area by a Range Sensor ” của nhóm tác giả
Shinya OGAWA, Kajiro WATANABE, Kazuyuki KOBAYASHI Với mục đích là muốn điều khiển những chiếc xe không người lái trong một không gian kín như nhà kho,xưởng, căn phòng, Việc có được bản đồ và định vị cho những chiếc xe là rất cần thiết Nhóm đã
sử dụng laser rangefinder để xác định sự phân ngưỡng của vật thể kết hợp với vị trí và hướng của robot để xây dựng nên bản đồ 2D Với bản đồ thu được có thể sử dụng cho robot
tự hành trong không gian kín nhưng giá trị trả về chỉ có 2 tọa độ x,y nên sẽ có nhiều bất lợi trong những tháo tác điều khiển nâng cao [1]
Trong bài báo “ 3D Mapping With a RGB-D Camera ” của nhóm tác giả Felix Endres, Jurgen Hess, J ¨ urgen Sturm, Daniel Cremers, and Wolfram Burgard đã trình bày phương
Trang 9pháp định vị và vẽ bản đồ sử dụng camera RGB-D như là Kinect hoặc Asus Xtion Pro Live Bằng cách sử dụng thuật toán ICP (iterative-closest-point) và phương pháp RANSAC (Random Sample Consensus) để xử lý dữ liệu thu được từ camera và xây dựng lại bản đồ Điểm đặc biệt của hệ thống là có thế thực thi trong các trường hợp khác nghiệt như là camera di chuyển với tốc độ cao, trong môi trường ít điểm đặc trưng và nhiều môi trường khác nữa [2]
Với bài báo “ 3D map reconstruction with sensor Kinect ” của nhóm tác giả Peter Beňo, František Duchoň, Michal Tölgyessy, Peter Hubinský, Martin Kajan đến từ trường đại học Slovak Nhóm đã khảo sát việc xây dựng bản đồ theo hai cách là sử dựng thuật toán RGBD-6D-SLAM và Truncated signed distance function (TSDF) Điểm hạn chế của
đề tài này đó là cần phải có một máy tính có cấu hình mạnh để xử lý các thuật toán mới cho được kết quả chính xác [3]
Ngoài ra, với bài báo “ Indoor Mapping using Kinect and ROS ” của nhóm tác giả
Hesham Ibrahim, Mohamed Ahmed Omara, Khairul Salleh Mohamed Sahari đến từ đại học Tenaga Nasional của Malaysia đã trình bày việc lấy dữ liệu từ camera Kinect trên nền tảng ROS (Robot Operating System) Tuy nhiên bài báo chưa chắc chắn về độ tin cậy của camera Kinect, phương pháp thực hiện trong điều kiện căn phòng trơn, nhẵn, thiếu ánh sáng [4]
Bằng việc tham khảo và kết hợp các đề tài đã nghiên cứu có trước đó của nhiều tác giả trên thế giới, nhóm đã cải tiến sử dụng camera giá rẻ Kinect của hãng Mircosoft nhưng kết quả trả về tương đối chính xác để thu thập dữ liệu từ môi trường mà cụ thể là toàn bộ không gian trong nhà Sau đó truyền dữ liệu xuống camera trên nền tảng ROS và sử dụng thuật toán SIFT, phương pháp chuyển tọa độ ma trận 3D, nhằm khôi phục lại không gian theo ba chiều Kết quả là ảnh cho ra tương đối chính xác khoảng 60%, tốc độ xử lý không quá lâu
1.2 MỤC TIÊU
Mục tiêu của đề tài là hoàn thành việc xây dựng một bản đồ không gian 3D của một căn phòng học Bản đồ sau khi được xây dựng sẽ là một không gian ba chiều gồm các đám mây ghép lại Mỗi đám mây dùng để xây dựng bản đồ 3D được chuyển đổi từ các ảnh 2D
Trang 10và được chụp từ camera Kinect Sau khi xử lí các dữ liệu bằng thuật toán, bản đồ 3D của phòng học sẽ được hoàn thành
1.3 NỘI DUNG NGHIÊN CỨU
1- Tìm hiểu về ROS
2- Tìm hiểu về openCV và thư viện Point Cloud
3- Tìm hiểu về thiết bị KINECT
4- Kết nối KINECT với máy tính
5- Thu thập các ảnh chụp từ KINECT lưu dưới dạng ảnh và dạng đám mây 6- Tìm các điểm tương đồng trong đám mây 3D
7- Ghép các đám mây 3D để được không gian hoàn thiện
8- Chỉnh sửa thuật toán, lọc nhiễu từ môi trường để có được không gian tốt nhất 9- Viết báo cáo luận văn
10- Báo cáo đề tài tốt nghiệp
Chương 1: Dẫn nhập Đưa ra vấn đề, lí do chọn đề tài Đề tài có tính cấp thiết như
thế nào trong đời sống cũng như kết quả sẽ đạt được sau khi hoàn thành cùng với đó là những giới hạn của đề tài
Chương 2: Cơ sở lí thuyết Giới thiệu một cách khái quát về camera KINECT, các
thuật toán có liên quan cũng như các công cụ và thư viện để xử lí ảnh 3D Đưa ra nguyên
lí để xử lí trên các điểm ảnh, các đám mây được thu thập về từ KINECT
Chương 3: Thiết kế Đưa ra sơ đồ khối của chương trình, cách ghép nối các đám mây
lại để tạo thành một không gian lớn hơn Nêu cụ thể các bước thực hiện
Trang 11Chương 4: Thi công hệ thống Đưa ra lưu đồ giải thuật chương trình, giải thích và
kết quả từng phần thực hiện
Chương 5: Kết quả và đánh giá Đưa ra hình ảnh kết quả đã thực hiện được Đánh
giá ưu, nhược điểm của kết quả đạt được
Chương 6: Kết luận và hướng phát triển Kết luận về đề tài và đưa ra hướng phát
triển tiếp theo
Trang 12Chương 2 CƠ SỞ LÝ THUYẾT
2.1.1 Giới thiệu tổng quan về ROS
Robot là sự kết hợp từ các mô-đun nhỏ hơn tạo thành Mỗi mô-đun thực hiện một nhiệm vụ khác nhau Ví dụ robot dò line là kết hợp của bộ thu phát hồng ngoại, hai động
cơ encoder, bộ xử lý trung tâm Còn đối với những robot lớn hơn yêu cầu càng nhiều mô đun sẽ gây khó khăn trong việc kiểm soát và giao tiếp giữa chúng Để khắc phục nhược điểm này, năm 2007, ROS – Robot Operating System [5] đã được phát triển và đến tháng
2 năm 2013 chính thức trở thành hệ điều hành mã nguồn mở và ROS trở thành nền tảng cho lĩnh vực Robotic
Tất cả các phần mềm ROS được tổ chức dưới dạng các gói Một gói của ROS là kết hợp của nhiều tập tin bao gổm cả tập tin thực thi và tập tin hỗ trợ ROS không chỉ cung cấp các gói có sẵn trong thư viện mà còn có cả một cộng đồng hỗ trợ từ nhiều nơi trên thế giới, điều này sẽ hỗ trợ rất tốt cho người nghiên cứu
ROS là một mã nguồn mở, là một siêu hệ điều hành dành cho lĩnh vực điều khiển robot Nó cung cấp các tính năng cần thiết ở một hệ điều hành, như là khái niệm về phần cứng, điều khiển thiết bị cấp thấp, thực hiện các chức năng thông dụng như quản lý các quá trình, các gói ROS cũng cung cấp các công cụ và thư viện cho việc thu thập, viết và chạy code thông qua nhiều máy tính Một hệ thống ROS bao gồm các node độc lập, khi chạy các node thì đồng thời các message của các node đã được gửi lên node master, các node sẽ giao tiếp với nhau thông qua các message bằng hình thức publish và subscribe
Ưu điểm của ROS: Đầu tiên, phải nói đến ưu điểm nổi bật là ROS giúp ta xây dựng
ứng các dụng robotics trên nền ROS sẽ giảm đi một lượng đáng kể các công việc lập trình, thiết lập hệ thống bằng việc tận dụng nguồn tài nguyên mã nguồn mở vô cùng phong phú của cộng đồng ROS và các phần cứng đã được thiết kế sẵn để sử dụng trên ROS như là: Amigo, Quadrobot, Barret hand
Trang 132.1.2 Trao đổi dữ liệu trong ROS
ROS được tích hợp một vài chuẩn giao tiếp khác nhau bao gồm: giao tiếp đồng bộ theo chuẩn RPC qua các services, truyền dữ liệu bất đồng bộ qua topics và lưu trữ dữ liệu trên Parameter Server
Mục đích chính của ROS là để điều khiển phần cứng ở mức thấp, cung cấp các hàm phổ biến cho mỗi mô-đun và tạo sự kết nối giữa các mô-đun thông qua thông qua cổng TCP/IP ROS tổ chức mô-đun bao gồm nhiều node độc lập và một node Master
Mỗi node thực hiện một chức năng cụ thế như là cảm biến nhiệt độ, độ ẩm, đọc dữ liệu encoder, điều khiển phần cứng và nhiều thứ khác Vai trò của node Master không chỉ
là quản lý các node mà còn tạo mối lien kết giữa chúng trong lớp ứng dụng để cho phép các node gửi và nhận dữ liệu với nhau hoặc là node Master sử dụng mô đun để nhắn tin giữa các Publisher và Subsciber Cấu trúc của ROS được mô tả như Hình 2.1
Master: Là trung tâm trao nhận dữ liệu Nếu không có master các node không thể
tìm thấy nhau để trao đổi các message(message là các tin nhắn với mục đích muốn lấy thông tin gì đó) hoặc yêu cầu dịch vụ
ROS Master
ROS
Node 1
ROS Node 2
ROS Node n
Trang 14Node: Là một quá trình thực hiện việc tính toán Một hệ thống Robot thường gồm
nhiều node Ví dụ trong robot tự hành: một node thực hiện điều khiển camera Kinect, một node điều khiển động cơ bánh xe, một node thực hiện định vị, một node định hướng di chuyển, một node vẽ lại không gian và còn nhiều nhiệm vụ khác nữa Một node của ROS
được viết dựa vào các thư viện mở như là roscpp hoặc rospy
Messages: Các node giao tiếp với nhau thông qua message Với các kiểu dữ liệu
chuẩn được hỗ trợ như integer, floating point, Boolean Message có thể bao gồm cấu trúc
kí tự lồng và mảng
Topic: Tin nhắn được định tuyến thông qua một hệ thống vận chuyển là topic publish/
subscribe Một node gửi một message bằng cách publish nó thông qua topic Topic là là tên được đặt để xác định nội dung của message Nhiều node có thể publish và subscribe trên một topic và một node cũng có thể publish/subscribe trên nhiều topic Chúng ta có thể xem topic như là một bus message Mỗi bus có một có một tên và bất cứ node nào cũng có
thể kết nối với bus để gửi và nhận message miễn là có kiểu dữ liệu đúng
Services: Mô-đun publish/subscribe giao tiếp rất linh hoạt Nhưng nó bao gồm nhiều
dữ liệu trong lúc truyền nhận và điều đó có thể gây nên rôi loạn hệ thống Vì thế kiểu Request/Reply đôi khi là phù hợp Nó giao tiếp thông qua services Khi một node cung cấp
đề nghị một service dươi một tên sau đó node khác sử dụng service này bằng cách gửi
message yêu cầu và đợi được trả lời
2.2 THUẬT TOÁN SIFT – SCALE INVARIAN FEATURE TRANSFORM
Năm 2004, David G Lowe đã nghiên cứu thành công thuật toán nhận dạng SIFT [6] Với thuật toán này mỗi ảnh được đại điện bằng tập hợp các điểm đặc trưng có đặc điểm nhận dạng không phụ thuộc vào độ phóng to thu nhỏ và chiều xuất hiện trên khung ảnh Quá trình nhận dạng bao gồm các bước: xác định vị trí của các điểm đặc trưng trên ảnh của vật mẫu và mô tả đặc tính của điểm đặc trưng
2.2.1 Xác định điểm đặc trưng trong ảnh
Điểm đặc trưng (Interest Point (Keypoint)) là vị trí (điểm ảnh) “đặc trưng” trên ảnh
“Đặc trưng” ở đâ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 Phương pháp trích rút các đặc trưng bất biến bằng thuật toán SIFT được tiếp cận theo phương pháp thác lọc Theo đó, việc xác
Trang 15định các điểm đặc trưng trong một ảnh sẽ được thực hiện theo các lý thuyết toán học mà
sẽ trình bày dưới đây Các điểm đặc trưng được xác định bởi SIFT sẽ tương thích với các cực trị địa phương của bộ lọc sai phân Gaussian ở các tỉ lệ khác nhau, định nghĩa không gian tỉ lệ của một hình ảnh là hàm 𝐺(𝑥, 𝑦, 𝑘𝜎)
Gọi 𝐼(𝑥, 𝑦) là ma trận tập hợp các giá trị mức xám của ảnh vật mẫu cần phân tích, (𝑥, 𝑦) là toạ độ điểm ảnh Hàm Gaussian có phương sai tăng dần được cho bởi công thức (2.1)
Theo lý thuyết vị trí của những điểm có giá trị cực đại hoặc cực tiểu của phép biến đổi bậc hai Laplace của hàm lọc Gaussian (𝜎2∇2𝐺) chính là những điểm ổn định theo độ phóng to thu nhỏ của ảnh vật mẫu Giá trị (𝜎2∇2𝐺) được xấp xỉ bằng các công thức (2.3), (2.4) và (2.5)
𝜕𝐺
𝜕𝜎 = 𝜎∇2𝐺 ≈𝐺(𝑥,𝑦,𝑘𝜎)−𝐺(𝑥,𝑦,𝜎)
𝐺(𝑥, 𝑦, 𝑘𝜎) − 𝐺(𝑥, 𝑦, 𝜎) ≈ (𝑘 − 1)𝜎2∇2𝐺 (2.4) 𝐷(𝑥, 𝑦, 𝜎) = (𝐺(𝑥, 𝑦, 𝑘𝜎) − 𝐺(𝑥, 𝑦, 𝜎)) ∗ 𝐼(𝑥, 𝑦)
Trang 16Như vậy, vị trí cực đại (hoặc cực tiểu) của hàm (𝜎2∇2𝐺) cũng là vị trí cực đại (hoặc cực tiểu) của hàm sai khác 𝐷(𝑥, 𝑦, 𝑘𝜎) Như vậy, các phiên bản ảnh vật mẫu tương ứng với các hệ số 𝑘 liên tiếp nhau sẽ được tính sai phân để tìm ra được 𝐷(𝑥, 𝑦, 𝑘𝜎), như công thức (2.5) và Hình 2.3 Trên ảnh 𝐷(𝑥, 𝑦, 𝑘𝜎), để tìm vị trí có giá trị cực đại hoặc cực tiểu, mỗi
vị trí trên 𝐷(𝑥, 𝑦, 𝑘𝜎) sẽ được so sánh với 26 vị trí lân cận tại cùng độ phóng to thu nhỏ và hai độ phóng to thu nhỏ liền kề như minh họa trong Hình 2.4 Nếu vị trí này có giá trị lớn hơn hay nhỏ hơn giá trị của 26 vị trí này, thì vị trí được xem xét sẽ được chọn làm vị trí đặc trưng
Ảnh giảm mẫu lần thứ nhất
Ảnh chưa giảm mẫu
Ảnh sau khi nhân chập với hàm
Gaussian
Hình 2.2 Các phiên bản ảnh của vật mẫu tương ứng với các
hệ số k và σ
Trang 17Scale
Hình 2.4 Hai mươi sáu vị trí được so sánh với vị trí X để tìm
giá trị cực đại và cực tiểu
Ảnh giảm mẫu lần thứ
Ảnh sai phân Gaussian
Hình 2.3 Các phiên bản ảnh sai khác 𝐷(𝑥, 𝑦, 𝑘𝜎) tương ứng với các hệ số 𝑘 và σ
Trang 18Những vị trí được chọn sẽ được lọc lại sao cho tránh nằm trên các đường biên của khung ảnh và nằm tại vị trí có độ tương phản phù hợp Bước này giúp loại bỏ những điểm không cần thiết cho quá trình nhận dạng và giúp tiết kiệm thời gian cho những bước xử lí tiếp theo
2.2.2 Mô tả đặc tính các điểm đặc trưng
Sau khi tìm được vị trí của những điểm đặc trưng trên ảnh của vật mẫu, mỗi vị trí sẽ cùng với các điểm ảnh xung quanh tạo thành ma trận ảnh 16×16 để xác định các đặc điểm đặc trưng sao cho không phụ thuộc vào cường độ ánh sáng và chiều xuất hiện trên khung ảnh Hình 2.5 là một ma trận ảnh 16×16 có điểm đặc trưng nằm ở vị trí gần trung tâm Mỗi điểm ảnh trong ma trận được chuyển thành vector Gradient có chiều và độ lớn được tính theo công thức (2.6) và (2.7)
ô vuông 4×4 được thống kê theo 8 đơn vị góc quay khác nhau trong khoảng từ 0 đến 360o
Độ phân giải cho mỗi góc quay là 45o Các vector Gradient nào có góc gần với góc quay nào nhất sẽ được cộng dồn vào độ dài tương ứng của góc đó Sau đó, mỗi bộ vector Gradient này sẽ được chuẩn hóa để các đặc tính này không phụ thuộc vào độ chói của ảnh vật mẫu Như vậy mỗi vị trí điểm đặc trưng sẽ có 16 bộ vector Gradient tương ứng với 8 góc quay
Hình 2.5 16x16 điểm ảnh xung quanh điểm đặc trựng và vector Gradient
tương ứng cho mỗi điểm ảnh [6]
Trang 19khác nhau, vì vậy mỗi một điểm đặc trưng trong ảnh vật mẫu sẽ được biểu diễn thành một
vector có số chiều là 4×4×8=128 (chiều) Một ảnh của vật mẫu có thể có rất nhiều điểm
đặc trưng, và mỗi điểm đặc trưng được biểu diễn thành một vector có 128 chiều
2.2.3 Nhận dạng các cặp điểm tương đồng của hai ảnh 2D
Sau khi phân tích các điểm đặc trưng trên hai ảnh 2D của khung cảnh, thuật toán thu được tập hợp các vector mô tả các đặc điểm đặc trưng của hai ảnh 2D Tập hợp các vector
mô tả các điểm đặc trưng trên ảnh thứ nhất được so sánh với các tập hợp các vector mô tả các điểm đặc trưng trong ảnh thứ 2 Nếu số lượng các điểm trùng khớp thỏa mãn yêu cầu thì có thể kết luận hai vật trên hai ảnh 2D là giống nhau(tức là một vật được chụp ở 2 góc khác nhau)
Ta gọi:
𝑀𝑖(𝑥𝑖1, 𝑥𝑖2, 𝑥𝑖3, … , 𝑥𝑖128) là vector mô tả các điểm đặc trưng thứ i của ảnh thứ nhất,
có số lượng các điểm đặc trưng là 𝑆, 0 < 𝑖 ≤ 𝑆
𝑁𝑗(𝑦𝑗1, 𝑦𝑗2 , 𝑦𝑗3, … , 𝑦𝑗128) là vector mô tả các điểm đặc trưng thứ 𝑗 của ảnh thứ 2 thu thập được từ camera lắp đặt trên robot, có số lượng các điểm đặc trưng là 𝑇, 0 < 𝑗 ≤ 𝑇 Quá trình nhận dạng được thực hiện như sau Mỗi điểm đặc trưng 𝑀𝑖 được so sánh với 𝑇 điểm đặc trưng 𝑁𝑗 để tìm các cặp điểm tương đồng bằng cách tìm khoảng cách giữa
2 vector theo công thức (2.8) Hai điểm được gọi là tương đồng nhau nếu 𝑑𝑖𝑗 ≤ 𝛿 Với 𝛿
là hằng số được chọn bởi người thiết kế hệ thống và thường được chọn theo thực nghiệm
𝛿 càng lớn chất lượng nhận dạng càng thấp ngược lại số lượng các điểm tương đồng thu
Hình 2.6 Các vector Gradient được thống kê thành 8 giá trị góc quay khác nhau [6]
Chiều của điểm
đặc trưng trong
khung ảnh Tập hợp các
vector Gradients
Các vector mô tả điểm đặc trưng
Trang 20được càng cao, ngược lại 𝛿 càng nhỏ thì chất lượng nhận dạng càng tốt nhưng số lượng các điểm tương đồng thu được càng ít
𝑑𝑖𝑗 = √(𝑥𝑖1 − 𝑦𝑗1)2+ (𝑥𝑖2− 𝑦𝑗2)2+ ⋯ + (𝑥𝑖128− 𝑦𝑗128)2 (2.8) Trong đó, 𝑑𝑖𝑗 là khoảng cách giữa điểm đặc trưng 𝑀𝑖với điểm đặc trưng 𝑁𝑗
Như vậy, quá trình tìm các cặp điểm đặc trưng tương đồng được tiến hành theo 3 bước: tìm vị trí điểm đặc trưng trên hai ảnh 2D, mô tả điểm đặc trưng ứng với mỗi vị trí vừa tìm được trong hai ảnhtheo thuật toán SIFT và nhận dạng các cặp điểm đặc trưng tương đồng trên hai ảnh thu thập được từ camera Chất lượng nhận dạng được quyết định chủ yếu bởi hằng số δ và được lựa chọn theo thực nghiệm sao cho phù hợp với đặc điểm của từng môi trường làm việc của robot để mang lại hiệu suất nhận dạng cao nhất Sau khi tìm được được các cặp điểm tương đồng trong hai ảnh 2D thì chúng ta cũng xác định được tọa độ của các cặp tương đồng trong hai đám mây 3D tương ứng của hai ảnh 2D
2.3 TÍNH MA TRẬN HOMOGRAPHY BẰNG THUẬT TOÁN RANSAC 2.3.1 Thuật toán RANSAC
RANSAC viết tắt của cụm từ “Random Sample Consensus”, tức là “đồng thuận mẫu ngẫu nhiên”, là thuật toán khử nhiễu được công bố bởi Fischler và Bolles vào năm 1981
Ý tưởng chính của RANSAC như sau: Từ tập dữ liệu ban đầu, ta sẽ có hai loại dữ liệu nhiễu và không nhiễu (outlier và inlier), vì thế ta phải đi tính toán để tìm ra mô hình tốt nhất cho tập dữ liệu Việc tính toán và chọn ra mô hình tốt nhất sẽ được lặp đi lặp lại,
với giá trị được chọn sao cho đủ lớn để đảm báo xác suất (thường rơi vào giá trị) của tập
dữ liệu mẫu ngẫu nhiên không chứa dữ liệu nhiễu
Nếu gọi 𝑢 là ước lượng dữ liệu không nhiễu thì 𝑣 = 1 − 𝑢 là ước lượng dữ liệu nhiễu
và 𝑚 là số lượng dữ liệu đầu vào cần xây dựng mô hình Khi đó ta có công thức (2.8)
Ta có 𝑘 sẽ được tính theo công thức (2.9)
Trang 21Kết quả thu được sẽ là mô hình cần xây dựng phù hợp nhất với dữ liệu đầu vào, tập các dữ liệu nhiễu và tập các dữ liệu không nhiễu Quá trình thực hiện thuật toán RANSAC được mô tả như dưới đây:
Từ tập dữ liệu đầu vào gồm có nhiễu và không nhiễu ta chọn dữ liệu ngẫu nhiên, tối thiểu để xây dựng mô hình
Tiến hành xây dựng mô hình với dữ liệu đó, sau đó đặt ra một ngưỡng dùng để kiểm chứng mô hình
Gọi tập dữ liệu ban đâu trừ đi tập dữ liệu để xây dựng mô hình là tập dữ liệu kiểm chứng Sau đó, tiến hành kiểm chứng mô hình đã xây dựng bằng tập dữ liệu kiểm chứng Nếu kết quả thu được từ mô hình vượt quá ngưỡng, thì điểm đó là nhiễu, còn không đó sẽ
2.3.2 Giới thiệu về ma trận Homography
Trong lĩnh vực thị giác máy, Homography là một ánh xạ từ gốc tọa độ của một ảnh
về gốc tọa độ ban đầu Ma trận Homography thường có liên quan đến các công việc xử lý giữa hai ảnh bất kì và có ứng dụng rất rộng rãi trong các công tác sửa ảnh, ghép ảnh, tính toán sự chuyển động, xoay hay dịch chuyển giữa hai ảnh
Vì 𝐻 là một ma trận khả nghịch, cho nên trong trường hợp muốn tái tạo ảnh 𝑋 từ 𝑋′
ta chỉ cần xác định được ma trận Homography Hình 2.7 mô tả phép chiếu Homography
Trang 222.3.3 Tính ma trận Homography bằng thuật toán RANSAC
Ma trận Homography được tính từ tập hợp các cặp điểm tương đồng của hai ảnh 3D liên tiếp Khi có bốn cặp điểm nổi bật tương ứng không thẳng hàng, phương trình 𝐴𝐻 = 0
theo phương pháp chuẩn hóa DLT ta xác định được ma trận 𝐴 Trong đó, 𝐴 là ma trận có
kích thước 8𝑥9 Từ đó, ta xác đinh được ma trận 𝐻
Với ma trận Homography được tính từ bốn căp điểm ngẫu nhiên, ta có 𝑑 là khoảng cách đo mức độ gần nhau của các cặp điểm đã được so sánh Với cặp điểm nổi bật tương đồng (𝑥, 𝑥′) và 𝑑(𝑎,⃗⃗⃗ 𝑏⃗ ) là khoảng cách của hai vector, ta có thể xác định khoảng cách d
bởi công thức (2.11)
𝑑 = 𝑑(𝑥 , 𝐻𝑥 ) + 𝑑(𝑥, 𝐻𝑥 ⃗⃗⃗⃗⃗⃗⃗⃗⃗⃗ ) (2.11)
Ta áp dụng thuật toán RANSAC:
Khởi tạo số vòng lặp 𝑘 , ngưỡng 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒, 𝑚𝑎𝑥𝑖𝑛𝑙𝑖𝑒𝑟, và 𝑝 = 0.99
Ta thực hiện vòng lặp 𝑓𝑜𝑟(𝑖 = 1: 𝑘) và thực hiện các bước sau:
Bước 1: Chọn 4 cặp điểm tương đồng ngẫu nhiên
Bước 2: Kiểm tra xem các điểm này có cùng nằm trên một đường thẳng không,
nếu có, quay lại bước trên
Bước 3: Tính ma trận Homography 𝐻 từ 4 cặp điểm tương đồng sử dụng
phương pháp DLT chuẩn hóa
Hình 2.7 Phép chiếu Homography
Trang 23Bước 4: Tính khoảng cách 𝑑 của các cặp điểm nổi bật tương đồng bởi công
thức (2.12)
𝑑 = 𝑑(𝑥 , 𝐻𝑐𝑢𝑟𝑟𝑥⃗⃗⃗ ) + 𝑑(𝑥 , 𝐻′ 𝑐𝑢𝑟𝑟𝑥′⃗⃗⃗ ) (2.12) Bước 5: Tính số lượng 𝑚 các cặp điểm không nhiễu (inlier) thỏa điều kiện:
𝑑 < 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒 Bước 6: Nếu 𝑚 > 𝑚𝑎𝑥𝑖𝑛𝑙𝑖𝑒𝑟 thì 𝑚 = 𝑚𝑎𝑥 𝑖𝑛𝑙𝑖𝑒𝑟, ma trận Homography được
Hình 2.8 Hệ toạ độ Decartes 𝑂𝑥𝑦𝑧 và 𝑂′𝑥′𝑦′𝑧′
Trang 24Để chuyển tọa độ điểm A từ hệ tọa độ 𝑂′𝑥′𝑦′𝑧′ sang hệ tọa độ 𝑂𝑥𝑦𝑧 ta cần xác dịnh
ma trận chuyển đổi R được cho bởi công thức (2.14)
2.4.2 Phép xoay
Phép xoay được thực hiện khi tọa độ 𝑂′𝑥′𝑦′𝑧′là ảnh xoay của tọa độ 𝑂𝑥𝑦𝑧 quay quanh các trục tọa độ của nó Ta có ba phép xoay quanh ba trục tọa độ 𝑂𝑥, 𝑂𝑦, 𝑂𝑧 Quy ước chiều xoay dương là ngược chiều kim đồng hồ, góc xoay là θ
Ta có ma trận chuyển đổi R đổi với phép xoay quanh trục 𝑂𝑥 được cho bởi công thức (2.17)
Trang 25Mối quan hệ về phép xoay quanh trục 𝑂𝑥 giữa hệ truc toạ độ 𝑂′𝑥′𝑦′𝑧′ và 𝑂𝑥𝑦𝑧 được xác định bởi công thức (2.18)
[
𝑥𝐴
𝑦𝐴
𝑧𝐴1] = [
𝑐𝑜𝑠𝜃 −𝑠𝑖𝑛𝜃 0 𝑥𝑜𝑠𝑖𝑛𝜃 𝑐𝑜𝑠𝜃 0 𝑦𝑜
Trang 262.4.3 Ghép các cặp điểm tương đồng của hai đám mây 3D
Giả sử đám mây thứ nhất 𝑃0 nằm trong hệ tọa độ 𝑂0𝑋0𝑌0𝑍0 và đám mây thứ 2 là 𝑃1nằm trong hệ tọa độ 𝑂1𝑋1𝑌1𝑍1 Hai đám mây mày có các cặp điểm x tương đồng lẩn nhau như được minh họa trong Hình 2.9
Ghép hai đám mây có nghĩa là thực hiện phép chuyển đổi hệ trục tọa độ 𝑂1𝑋1𝑌1𝑍1 về
hệ trục 𝑂0𝑋0𝑌0𝑍0 Để ghép hai đám mây này lại với nhau chúng ta cần xác định ma trận chuyển đổi 𝑀10 của hai đám mây này Chúng ta dựa vào các cặp điểm tương đồng để xác định 𝑀10
Gọi 𝑀𝑖(𝑥𝑀𝑖, 𝑦𝑀𝑖, 𝑧𝑀𝑖) là điểm đặc trưng thứ 𝑖 của đám mây 𝑃0, Gọi 𝑁𝑗(𝑥𝑁𝑗, 𝑦𝑁𝑗, 𝑧𝑁𝑗)
là điểm đặc trưng thứ 𝑗 của đám mây 𝑃1 Giả sử rằng những điểm 𝑀𝑖 và 𝑁𝑗 có 𝑖 = 𝑗 là các cặp tương đồng
Vì ma trận 𝑀10 là ma trận chuyển đổi nên ta có công thức (2.23)
𝑃0 = 𝑃1× 𝑀10 (2.23) Trong đó: 𝑃0 là đám mây 3D thứ nhất có trục tọa độ 𝑂0𝑋0𝑌0𝑍0, 𝑃1 là đám mây thứ 2
có trục tọa độ 𝑂1𝑋1𝑌1𝑍1, 𝑀10 là ma trận chuyển đổi của trục tọa độ 𝑂1𝑋1𝑌1𝑍1 về hệ trục
y
M 10
Hình 2.9 Hai đám mây nắm trên hai hệ trục toạ độ khác nhau
và có các điểm x tương đồng
Trang 27Vì hai hệ tọa độ ta đang xét là hệ tọa độ 3 chiều nên ma trận 𝑀10là ma trận 4x4 có dạng như công thức (2.24)
Trong đó tọa độ điểm 𝑀𝑖(𝑥𝑀𝑖, 𝑦𝑀𝑖, 𝑧𝑀𝑖) và 𝑁𝑗(𝑥𝑁𝑗, 𝑦𝑁𝑗, 𝑧𝑁𝑗) tương ứng đã biết, 12 biến số của ma trận 𝑀10 đều là ẩn số và cần phải xác định Với 1 cặp điểm tương đồng thay vào công thức (2.25) thì ta có được 3 phương trình, để giải được 12 ẩn số thì ta cần ít nhất
4 cặp điểm tương đồng Giải hệ phương trình 12 phương trình này ta sẽ tìm được 12 ẩn số của ma trận 𝑀10 Trong 12 ẩn số này ta có 𝑚14, 𝑚24, 𝑚34 là tọa độ của robot ở thời điểm hiện tại
Khi thực hiện phép chuyển trục tọa độ 𝑂1𝑋1𝑌1𝑍1 về hệ trục 𝑂0𝑋0𝑌0𝑍0 theo công thức (2.25) thì các điểm tương đồng x của hai đám mây sẽ nằm sát gần nhau(gần như là trùng nhau), đồng thời cả đám mây 𝑃1 cũng tiến tới gần đám mây 𝑃0 và tạo thành một đám mây lớn hơn như Hình 2.10
y
Hình 2.10 Hai đám mây có các điểm tương đồng y được ghép với nhau
Trang 282.4.4 Ghép các cặp điểm tương đồng của nhiều đám mây 3D
Giả sử có các đám mây 3D 𝑃0, 𝑃1, 𝑃2, 𝑃3 lần lược có hệ trục tọa độ là
𝑂0𝑋0𝑌0𝑍0, 𝑂1𝑋1𝑌1𝑍1, 𝑂2𝑋2𝑌2𝑍2, 𝑂3𝑋3𝑌3𝑍3 như hình 2.11 Chúng ta ghép lần lược các đám mây 𝑃1, 𝑃2, 𝑃3 vào 𝑃0, nghĩa là chuyển trục tọa độ 𝑂1𝑋1𝑌1𝑍1, 𝑂2𝑋2𝑌2𝑍2, 𝑂3𝑋3𝑌3𝑍3 về trục tọa độ 𝑂0𝑋0𝑌0𝑍0 Ta áp dụng cách ghép hai đám mây như trên để tìm được các ma trận chuyển đổi trục tọa độ giữa các đám mây 𝑀10, 𝑀21, 𝑀32 𝑀10 là ma trận chuyển đổi hệ trục
𝑂0𝑋0𝑌0𝑍0 là 𝑀𝑛0 theo công thức (2.28) với n+1 là số lượng đám mây cần phải ghép Hình 2.11 mô tả sự dịch chuyển các đám mây về cùng vị trí
Trang 292.5 NGUYÊN LÍ ĐO ĐỘ SÂU CỦA CAMERA KINECT
2.5.1 Giới thiệu về camera Kinect
Camera Kinect là một thiết bị đầu vào có khả năng cảm nhận chuyển động được tạo
ra bởi Microsoft dùng cho dòng sản phẩm chính là máy chơi game Xbox 360 và máy tính chạy hệ điều hành Windows Kinect được phát hành vào ngày 04/11/2010 tại Bắc Mỹ, 10/11/2010 tại Châu Âu, 18/11/2010 tại Úc, New Zealand, Singapore và ngày 20/11/2010 tại Nhật Bản
Chức năng của camera Kinect như Hình 2.12 là cho ta toạ độ của điểm ảnh trên khung ảnh mà camera thu thập được và khoảng cách từ camera đến mặt phẳng song song với Kinect đồng thời chứa điểm ảnh đó
2.5.2 Những thành phần chính của Kinect
Kinect gồm có: RGB camera, cảm biến độ sâu (3D Depth Sensors), dãy microphone (Multi-array Mic) và động cơ điều khiển góc ngẩng (Motorized Tilt) như Hình 2.13 RGB Camera: như một camera thông thường, có độ phân giải 640×480 với tốc độ 30fps RGB Camera sẽ cho ta một ma trận tập hợp các toạ độ của điểm ảnh trên khung ảnh
và một ma trận tập hợp các giá trị thông số RGB của từng điểm ảnh tương ứng Tập hợp
ma trận các điểm ảnh này gọi là ảnh RGB của khung cảnh có độ phân giải là 640x480 Cảm biến độ sâu: sẽ cho ta khoảng cách từ camera đến từng mặt phẳng chứa điểm ảnh tương ứng trên khung ảnh Độ sâu được thu về nhờ sự kết hợp của hai cảm biến: bộ phát hồng ngoại (IR Emitter) và cảm biến độ sâu hồng ngoại (IR Depth Sensor)
Hình 2.12 Camera Kinect
Trang 30Dãy đa microphone: gồm bốn microphone được bố trí dọc Kinect được dùng vào các ứng dụng điều khiển bằng giọng nói Với bốn microphone này camera Kinect đảm bảo thu được âm thanh tốt nhất do người điều khiển phát ra
Động cơ điều khiển góc ngẩng: là loại động cơ DC khá nhỏ, cho phép ta điều chỉnh camera lên xuống để bảo đảm camera có được góc nhìn tốt nhất Với khả năng này sẽ giúp đảm bảo cho cảm biến có thể thu được hình ảnh cao hơn rất nhiều so với khi không có bộ động cơ
2.5.3 Thông số kỹ thuật của camera Kinect
Phạm vi đo độ sâu của camera Kinect: tầm hoạt động tốt nhất của camera Kinect là
từ 0.8 m đến 4.0 m Đối với những vật quá gần nằm trong khoảng cách từ 0 m đến 0.8 m hoặc lớn hơn 4 m thì camera Kinect cho kết quả không chính xác
Tiêu cự, góc mở IR camera và RGB camera: Hai camera RGB và IR được đặt cách nhau 2.5 cm nên có chút khác nhau ở khung hình thu về từ hai camera Để đảm bảo khung hình RGB có thể chứa được khung hình IR, người ta thiết kế góc mở của RGB camera lớn hơn Điều này cũng dẫn đến tiêu cự của RGB camera nhỏ hơn Các thông số trong Bảng 2.1 được đo đạc bằng thực nghiệm
Hình 2.13 Các thành phần của Kinect
Trang 31Bảng 2.1: Bảng thống kê tầm nhìn của camera Kinect
Nguồn cung cấp và công suất tiêu thụ: Vì Kinect cần nhiều điện năng để hoạt động nên cổng USB của Xbox-360 không thể đáp ứng mà phải qua một cổng chia để chia thành
2 kết nối riêng là USB và kết nối nguồn, giúp cho thiết bị kết nối với Xbox-360 bằng cổng USB trong khi nguồn điện cần cho Kinect là 12VDC được lấy từ adapter Phiên bản Xbox-
360 mới sẽ không cần adapter vì nó có các AUX port đặc biệt để cung cấp cho cổng kết nối Với kết nối USB ta hoàn toàn có thể cho Kinect giao tiếp với máy tính
2.5.4 Nguyên lí đo độ sâu
Nguyên lý đo độ sâu của camera Kinect được minh hoạ như Hình 2.14
Trang 32Trong Hình 2.14, k là điểm cần xác định độ sâu trên vật thể, o là điểm nằm trên mặt phẳng tham chiếu Z0 là khoảng cách từ mặt phẳng tham chiếu tới camera, Zk là khoảng cách từ mặt phẳng chứa điểm k đến camera hay còn gọi là độ sâu của điểm k, b là khoảng cách giữa bộ phát laser với camera hồng ngoại, f là tiêu cự của camera hồng ngoại, d là khoảng cách giữa hai điểm trên ảnh mà camera hồng ngoại thu được từ hai điểm k và o còn được gọi là độ sai khác
Các thông số Z0, f, b là các hằng số được tính toán trong quá trình chuẩn hoá camera Dựa vào lý thuyết về hai tam giác đồng dạng ta có các công thức (2.29) và (2.30) về tỉ lệ giữa các thông số
Từ công thức (2.31) ta sẽ tìm được khoảng cách Zk bằng cách tính được giá trị của d
và d có thể tính được một cách dễ dàng bằng cách đếm số điểm ảnh thu được của camera hồng ngoại Theo tính toán của Nicolas Burrus, một trong những người mở đường cho việc tìm hiểu về Kinect qua các thí nghiệm của ông Ông đã công thức hóa được quan hệ giữa giá trị khoảng cách thật Zk từ mặt phẳng trước điểm k đến camera, đơn vị được tính bằng mét Giá trị độ chênh lệch d và khoảng cách từ Kinect đến mặt phẳng chứa điểm k có mối quan hệ như công thức (2.32)
Như vậy với mỗi điểm ảnh nằm trong khung ảnh mà camera nhận được, camera đều
đo được khoảng cách từ điểm đó đến camera hay còn gọi là điểm độ sâu Tập hợp nhiều điểm độ sâu này chúng ta sẽ có được một ma trận độ sâu của ảnh hay còn gọi là ảnh độ sâu(hay ảnh 3D)
Trang 332.6 CHUYỂN ĐỔI DỮ LIỆU ẢNH 2D THU ĐƯỢC TỪ CAMERA
KINECT THÀNH ẢNH 3D
Như đã trình bày ở trên, camera Kinect với cấu tạo chính gồm một camera màu sẽ cho ta một ảnh màu 2D có kích thước 640x480 pixel như Hình 2.15 Mỗi pixel k(xk,yk), 0<xk≤640, 0<yk≤480 sẽ chứa 3 thông tinh màu RGB của điểm ảnh Ngoài ra với cặp đèn chiếu hồng ngoại và camera hồng ngoại camera Kinect còn thu về được khoảng cách Zk (depth: độ sâu) từ camera đến mặt phẳng chứa điểm ảnh và song song với camera như Hình 2.16 Chúng ta gọi khoảng cách này là độ sâu của điểm ảnh, tập hợp nhiều độ sâu ta có ảnh
độ sâu của khung cảnh
Hình 2.16 Camera lấy thông tin độ sâu của điểm ảnh
Trang 34Như vậy với mỗi điểm ảnh k chúng ta sẽ có vị trí (xk,yk) tính bằng đơn vị pixel của điểm ảnh trên khung ảnh, độ sâu Zk tính bằng đơn vị mét của điểm ảnh và giá trị RGB của điểm ảnh Chúng ta gọi những giá trị này là giá trị ảnh 2D, chúng ta phải chuyển đổi giá trị ảnh 2D này thành giá trị ảnh 3D
Ảnh 3D là ảnh mà mổi điểm ảnh K của nó có tọa độ lần lược là K(Xk, Yk, Zk) trong
hệ tọa độ Descartes vuông góc OXYZ có gốc tọa độ O(xo, yo), thông thường điểm O này nằm ngay điểm chính giữa của ảnh 2D như Hình 2.17, xo=320,yo=240 Các trục tọa độ này được chia theo đơn vị là mét Trục X song song với cạnh dưới của ảnh 2D, trục Y song song với cạnh bên của ảnh 2D, hai trục X, Y nằm trên ảnh 2D nên độ sâu Zk của điểm k cũng chính là giá trị tọa độ Z của điểm K Mổi điểm ảnh này cũng chứa giá trị RGB tương ứng với điểm k(xk, yk) của ảnh 2D Tập hợp các điểm ảnh 3D của ảnh vật thể gọi là đám mây của vật thể (Point Cloud)
Để chuyển đổi dữ liệu ảnh 2D có toạ độ k(xk, yk) và độ sâu điểm ảnh Zk sang dữ liệu điểm ảnh 3D có toạ độ K(Xk, Yk, Zk) ta sử dụng công thức (2.33) và (2.34)
Trong đó (𝑥𝑜, 𝑦𝑜) là tọa độ của điểm gốc O trên ảnh 2D với 𝑥𝑜 = 320, 𝑦𝑜 = 240, (𝛿𝑥, 𝛿𝑦) là độ méo dạng của ống kính có được trong quá trình tinh chỉnh camera Kinect
Trang 35Chương 3 THIẾT KẾ
Hình 3.1 mô tả khái quát ba khối chính của hệ thốn vẽ bản đồ
Khối thu thập và xử lý dữ liệu có nhiệm vụ tiếp nhận dữ liệu ảnh RGB và ảnh độ sâu
từ camera Kinect về không gian xung quanh, xử lý dữ liệu này thành dữ liệu ảnh 3D hay còn gọi là đám mây 3D để phục vụ cho việc vẽ bản đồ 3D Với nhiều lần thu thập dữ liệu
và xử lý thì chúng ta sẽ có nhiều dữ liệu ảnh RGB, ảnh độ sâu của các khung cảnh cũng như là nhiều đám mây 3D
Dữ liệu sau khi được thu thập và xữ lý sẽ được cung cấp cho khối nhận dạng điểm đặc trưng và cặp điểm tương đồng Khối này sẽ dùng dữ liệu ảnh RGB và thuật toán SIFT (Scan Invariant Feature Transform) để tìm ra các điểm đặc trưng của ảnh RGB Chúng ta tìm các điểm đặc trưng của các ảnh RGB thu thập được và xác định các cặp điểm đặc trưng tương đồng của hai khung cảnh gần nhau nhất Hai điểm tương đồng chính là 1 điểm đặc trưng thực tế của vật mà được thu thập với hai khung cảnh liên tiếp khác nhau Với các cặp điểm tương đồng tìm được ở ảnh RGB liên tiếp chúng ta sẽ xác định được các cặp điểm tương đồng tương ứng trong mây 3D
Các cặp điểm tương đồng trong mây 3D này sẽ được ghép lại với nhau thông qua khối ghép các cặp điểm tương đồng Việc ghép các cặp điểm tương đồng với nhau chính
là chuyển đổi hệ truc tọa độ của khung cảnh sau về khung cảnh trước đó để được một khung cảnh lớn hơn của không gian xung quanh cũng như là một đám mây lớn hơn Kết quả là hai điểm tương đồng nhau sẽ được dịch chuyển gần nhau trong đám mây lớn hơn
Thu thập và xử
lý dữ liệu
Nhận dạng các điểm đặc trưng
và cặp điểm tương đồng
Ghép các cặp điểm tương đồng
Hình 3.1 Sơ đồ khối tổng quát chương trình vẽ bản đồ 3D
Trang 36Khi ghép nhiều cặp tương đồng của nhiều khung cảnh liên tiếp thì ta sẽ xây dựng được bản
đồ 3D của không gian phòng học
ĐỒ
Hình 3.2 mô tả một cách chi tiết sơ đồ hệ thống vẽ bản đồ Đầu tiên, Khối “Nhận dạng điểm đặc trưng – SIFT” có ngõ vào là ảnh hai ảnh RGB liên tiếp được thu thập từ camera Kinect và đưa ra kết quả ở ngõ ra là hai ảnh RGB tương ứng đã được xác định những điểm đặc trưng Từ ảnh RGB thu thập được ở ngõ vào, nhóm sử dụng thuật toán SIFT để xác định những điểm đặc trưng Sau đó, sử dụng OpenCV để đánh dấu những điểm đặc trưng này và xuất ra ngõ ra hai ảnh RGB đã được xác định điểm đặc trưng Hai ảnh đã được xác định điểm đặc trưng sẽ được đưa vào khối “Liên Kết” Khối này
sẽ tìm các cặp điểm tương đồng với nhau Đồng thời, tính toán để loại đi những cặp điểm không tốt Những cặp điểm đạt yêu cầu còn lại được kết nối lại với nhau và đưa ra ngõ ra
là các cặp điểm tương đồng đã được liên kết Những cặp điểm tương đồng này tiếp tiếp tục được đưa vào khối “Liên kết” thứ hai Ở trong khối “Liên Kết” này, những cặp điểm tương đồng được nối với nhau trong ảnh 2D cùng với hai dữ liệu khác đã được thu thập từ Kinect là: ảnh chiều sâu thứ nhất và ảnh chiều sâu thứ hai (hay còn gọi là các đám mây 3D), tất cả
dữ liệu ngõ vào này sẽ được sử dụng để xác định vị trí các cặp điểm tương đồng tương ứng trên hai đám mây 3D từ hai ảnh RGB Sau đó, đưa ra ngõ ra là hai đám mây 3D đã được kết nối các cặp điểm tương đồng với nhau
Tiếp theo, khối “Tính toán ma trận chuyển đổi” sẽ sử dụng dữ liệu là hai đám mây 3D đã được kết nối điểm tương đồng Dựa vào tọa độ của các cặp điểm tương đồng trong khung ảnh Từ đây, nhóm sử dụng thuật toán RANSAC để tìm ma trận chuyển đổi tọa độ của đám mây thứ hai về tọa độ đám mây thứ nhất
Cuối cùng, khối “Ghép các đám mây” sẽ sử dụng ba dữ liệu ngõ vào là đám mây 3D thứ nhất, đám mây 3D thứ hai và ma trận Homograph Sau đó, chương trình sẽ thực hiện việc ghép nối hai đám mây 3D với nhau để tạo thành đám mây 3D lớn hơn Quá trình thu thập dữ liệu, xử lí dữ liệu và kết nối dữ liệu sẽ được lặp đi lặp lại đến khi ta hoàn thành việc xây dựng không gian 3D hoàn chỉnh