DẪN NHẬP
Đặt vấn đề
Đề tài "Triển khai cảm biến Kinect để xây dựng bản đồ 3D cho môi trường trong nhà" mang lại ưu điểm nổi bật là khả năng khôi phục không gian của một căn phòng, đồng thời cung cấp hướng dẫn chi tiết từng bước thực hiện, phù hợp cho những người mới tìm hiểu về công nghệ Kinect.
Mặc dù đề tài về robot tự hành tránh vật cản sử dụng thiết bị Kinect mang lại nhiều ưu điểm như tính thực tiễn cao và khả năng ứng dụng của Kinect vào mô hình thực tế, nhưng vẫn còn một số nhược điểm Cụ thể, đề tài chưa giải quyết được vấn đề không gian trong một căn phòng phức tạp, nơi có nhiều vật dụng, và vẫn tồn tại hạn chế về khoảng cách di chuyển trong không gian đó.
Nhược điểm của công nghệ hiện tại là khó khăn trong việc vận hành, do thiếu phương hướng cụ thể và tầm nhìn cho robot trong việc tránh vật cản, cũng như khả năng dò đường còn hạn chế Tuy nhiên, đề tài 3 về ứng dụng Kinect cho phép nhận dạng vật thể trong nhà, với ưu điểm là có thể nhận diện các vật thể như cốc, cuốn sách, và bình hoa trong một không gian xác định.
Nhược điểm: chưa nhận dạng được những vật thể có kích thước lớn, mỗi lần chỉ nhận dạng được một vật thể trong rất nhiều vật thể.
Lý do chọn đề tài
Nhóm nghiên cứu đã kế thừa kiến thức từ ba đề tài trước và quyết định chọn đề tài “Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect” để tiến hành nghiên cứu.
Mục tiêu của đề tài là khôi phục hình ảnh 3D trong nhà từ các hình ảnh đã chụp trước đó, nhằm ứng dụng công nghệ này vào thực tiễn cuộc sống Đồ án tốt nghiệp tập trung vào việc sử dụng cảm biến Kinect để phục hồi không gian 3D trong nhà.
Nhóm sẽ thiết kế và xây dựng mô hình không gian 3D trong nhà bằng cách kết nối Kinect với máy tính Kinect sẽ thu thập dữ liệu từ môi trường, quét toàn bộ không gian trong nhà Dữ liệu này sau đó được truyền về máy tính để phân tích và ghép ảnh 3D, từ đó tạo ra mô hình không gian 3D Hình ảnh 3D của vật thể được phục hồi nhờ công nghệ xử lý Point Cloud.
Nội dung nghiên cứu
Trong quá trình nghiên cứu, nhóm lần lượt thực hiện các bước cụ thể như sau:
1- Tìm hiểu về KINECT - thiết bị cảm biến ngoại vi sử dụng Point Cloud
3- Tìm hiểu về Point Cloud
4- Thiết kế giao diện xây dựng mô hình không gian 3D trong nhà và lập trình xử lý 5- Kết nối Kinect với chương trình điều khiển
6- Lập trình và kết nối Kinect để có thể nhận dạng vật thể
7- Điều khiển thử nghiệm Kinect quét toàn bộ không gian trong nhà
8- Chỉnh sửa các lỗi điều khiển, các lỗi lập trình gặp phải của chương trình
9- Viết báo cáo luận văn
10- Báo cáo đề tài tốt nghiệp
1.4 GIỚI HẠN CỦA ĐỀ TÀI Đề tài chỉ dừng lại ở việc xây dựng mô hình không gian 3D trong nhà nên còn hạn chế trong việc tự động hóa di chuyển KINECT để quét toàn bộ không gian trong nhà Đề tài chỉ dừng lại ở việc khôi phục hình ảnh ở trong nhà dưới một điều kiện ánh sáng tốt và số lượng vật thể không quá nhiều
Chương 1: Đặt vấn đề liên quan đến đề tài Tìm hiểu những lý do để chọn thực hiện đề tài, những hướng đi từ cơ bản đến cụ thể mà nhóm sinh viên sẽ thực hiện trong quá trình nghiên cứu đề tài
Chương 2: Cơ sở lý thuyết Việc nghiên cứu về cấu tạo phần cứng của Kinect cũng như nguyên lý tạo ảnh 3D của nó cũng góp phần rất lớn vào việc thu thập dữ liệu và xử lý ảnh cho đề tài Cùng với việc tìm hiểu các thư viện hỗ trợ Kinect đồng thời nắm rõ được một số câu lệnh thường sử dụng trong thư viện giúp cho việc hoàn chỉnh chương trình trở nên dễ dàng hơn
Chương 3: Phương pháp và kết quả thực hiện Các bước thực hiện chi tiết, cụ thể được trình bày rõ ràng về toàn bộ đề tài mà nhóm đã thực hiện trong suốt thời gian qua Từ lí thuyết đến những kết quả mà nhóm thực hiện được đều trải qua sự tìm tòi, chắc lọc sẽ mang đến một nền tảng tương đối vững chắc cho người xem về khái niệm ban đầu 3D Map
Chương 4: Kết luận và hướng phát triển Các kết quả đã đạt được, chưa đạt và hướng phát triển.
Bố cục
Chương 1: Đặt vấn đề liên quan đến đề tài Tìm hiểu những lý do để chọn thực hiện đề tài, những hướng đi từ cơ bản đến cụ thể mà nhóm sinh viên sẽ thực hiện trong quá trình nghiên cứu đề tài
Chương 2: Cơ sở lý thuyết Việc nghiên cứu về cấu tạo phần cứng của Kinect cũng như nguyên lý tạo ảnh 3D của nó cũng góp phần rất lớn vào việc thu thập dữ liệu và xử lý ảnh cho đề tài Cùng với việc tìm hiểu các thư viện hỗ trợ Kinect đồng thời nắm rõ được một số câu lệnh thường sử dụng trong thư viện giúp cho việc hoàn chỉnh chương trình trở nên dễ dàng hơn
Chương 3: Phương pháp và kết quả thực hiện Các bước thực hiện chi tiết, cụ thể được trình bày rõ ràng về toàn bộ đề tài mà nhóm đã thực hiện trong suốt thời gian qua Từ lí thuyết đến những kết quả mà nhóm thực hiện được đều trải qua sự tìm tòi, chắc lọc sẽ mang đến một nền tảng tương đối vững chắc cho người xem về khái niệm ban đầu 3D Map
Chương 4: Kết luận và hướng phát triển Các kết quả đã đạt được, chưa đạt và hướng phát triển Đồ án tốt nghiệp - Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect
CƠ SỞ LÍ THUYẾT
Kinect
Kinect là sản phẩm của Microsoft, sử dụng công nghệ camera được phát triển bởi PrimeSense Sản phẩm này lần đầu tiên được bán tại Bắc Mỹ vào ngày 4 tháng 11 năm 2010.
Vào năm 2010, Kinect được giới thiệu như một thiết bị ngoại vi cho Xbox 360, cho phép người chơi tương tác thông qua các cử chỉ, mang lại trải nghiệm thú vị trong trò chơi Kinect có khả năng hiểu cử chỉ của con người nhờ vào hai đặc điểm chính: thông tin về độ sâu (depth map) và khả năng phát hiện cũng như theo dõi cấu trúc cơ thể (body skeleton tracking).
Sản phẩm Kinect không chỉ phục vụ cho mục đích chơi game mà còn được ứng dụng trong nghiên cứu xử lý ảnh 3D, phát hiện cử chỉ và theo dõi cơ thể Sự thành công của Kinect chủ yếu đến từ mức giá hợp lý khoảng 140$, mang lại khả năng cung cấp thông tin 3D với chất lượng chấp nhận được.
2.1.2 Những thành phần chính của Kinect
Hình 2.2 Những thành phần chính của Kinect
Kinect gồm có: camera màu, cảm biến độ sâu (3D Depth Sensors), dãy đa microphone (Multi-array Mic) và động cơ điều khiển góc ngẩng (Motorized Tilt)
Camera màu: như một camera thông thường, có độ phân giải 640x480 với tốc độ 30fps
Cảm biến độ sâu: độ sâu được thu về nhờ sự kết hợp của hai cảm biến: đèn chiếu hồng ngoại (IR Projector) và camera hồng ngoại (IR Camera)
Dãy đa microphone bao gồm 4 microphone được sắp xếp dọc theo Kinect, hỗ trợ cho các ứng dụng điều khiển bằng giọng nói Động cơ điều khiển góc ngẩng là một loại động cơ DC nhỏ gọn, cho phép điều chỉnh camera lên xuống, đảm bảo camera có góc nhìn tối ưu nhất.
Kinect nổi bật với khả năng thu thập giá trị độ sâu, cho phép xác định khoảng cách tới các vật thể trong thế giới thực Bài viết này sẽ trình bày nguyên lý hoạt động của Kinect trong việc tính toán giá trị độ sâu Đồ án tốt nghiệp của chúng tôi tập trung vào việc khôi phục không gian 3D trong nhà bằng cách sử dụng cảm biến Kinect.
Cặp cảm biến camera hồng ngoại và đèn chiếu hồng ngoại hoạt động cùng nhau để tạo ra độ sâu ảnh thông qua công nghệ Light Coding của PrimeSense.
Hình 2.4 Quá trình thu về bản đồ độ sâu ảnh
Khác với kỹ thuật Stereo Camera sử dụng cặp camera giống nhau để tạo bản đồ độ sâu, kỹ thuật Time-Of-Flight (TOF) xác định khoảng cách bằng cách ước lượng thời gian di chuyển của tia sáng Trong không gian, kỹ thuật Light Coding sử dụng nguồn sáng hồng ngoại chiếu liên tục kết hợp với camera hồng ngoại để tính toán khoảng cách, với chip PS1080 SoC của PrimeSense thực hiện công việc này trong Kinect Công nghệ này được đánh giá là chính xác hơn và giá cả phải chăng hơn cho môi trường trong nhà Đèn chiếu hồng ngoại phát ra chùm sáng hồng ngoại, tạo nên các đốm sáng không gian cố định phía trước Kinect, nhờ nguồn sáng đi qua lưới nhiễu xạ Các đốm sáng này được camera hồng ngoại ghi lại, và thông qua thuật toán tích hợp trong PS1080 SoC, bản đồ độ sâu được tạo ra dựa trên các phép toán hình học giữa hai cảm biến camera hồng ngoại và đèn chiếu hồng ngoại Hình 2.5 minh họa rõ mẫu hình tập hợp các đốm sáng từ đèn chiếu hồng ngoại được chụp lại bởi camera hồng ngoại.
Mẫu hình được chiếu bởi đèn chiếu hồng ngoại và ghi lại bằng camera hồng ngoại, phục vụ cho đồ án tốt nghiệp về khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect.
Để hiểu cách Kinect ước lượng khoảng cách tới vật thể trong môi trường, hãy tham khảo Hình 2.6, nơi phân tích một điểm đơn giản.
Hình 2.6 Tính toán khoảng cách tới một điểm chiếu từ Projector
Khi đèn chiếu hồng ngoại phát ra tia sáng màu xanh lá, camera hồng ngoại sẽ ghi nhận nó dưới dạng đốm sáng khi chạm vào bề mặt vật thể Chúng ta xem xét ba mặt phẳng: mặt phẳng gần Kinect (close plane), mặt phẳng xa Kinect (distant plane), và mặt phẳng tham chiếu (reference plane) ở giữa Mặt phẳng tham chiếu này đã được biết trước trong Kinect với thông tin đầy đủ về khoảng cách Bên cạnh đó, mặt phẳng ảnh (image plane) của camera hồng ngoại là nơi các điểm trong không gian được chiếu lên Khi tia sáng chạm vào ba điểm A, B, C trên ba mặt phẳng, chúng ta quan sát rằng A’ càng gần Kinect thì A’ càng xa B’ về phía bên phải; ngược lại, C’ càng xa Kinect thì C’ càng xa B’ về phía bên trái Từ đó, với hướng và điểm xuất phát của tia sáng từ đèn chiếu hồng ngoại cùng với vị trí B’ là hình chiếu của điểm B trên mặt phẳng tham chiếu, ta có thể tính toán được độ sâu ảnh hay khoảng cách tới vật thể.
Kinect sử dụng các đốm sáng phát ra từ đèn chiếu hồng ngoại để xác định các điểm tương đồng trên mặt phẳng tham chiếu đã biết Camera hồng ngoại ghi lại tâm của các đốm sáng và xác định khoảng cách chênh lệch giữa chúng theo chiều ngang, với giá trị chênh lệch được tính bằng pixel Tập hợp các giá trị chênh lệch này tạo thành bản đồ độ chênh lệch (disparity map), trong đó giá trị càng lớn tương ứng với khoảng cách hay độ sâu ảnh (depth) càng lớn Từ đó, chúng ta có thể xây dựng bản đồ độ sâu (depth map) với giá trị tính bằng mét thực Tuy nhiên, do số lượng đốm sáng phát ra từ đèn chiếu hồng ngoại ít hơn tổng số pixel trên mặt phẳng ảnh, một phần giá trị độ sâu sẽ cần được nội suy.
Nicolas Burrus, một trong những người tiên phong trong nghiên cứu Kinect, đã phát triển công thức mô tả mối quan hệ giữa giá trị khoảng cách thực tế z tính bằng mét và độ chênh lệch d.
Giá trị d, được biểu diễn dưới dạng 11 bit, dao động từ 0 đến 2047 Kết quả đo đạc thực nghiệm trên thư viện OpenNI cho thấy giá trị z biến thiên trong khoảng 0.5 đến 6.0 mét, trong khi bản đồ độ sâu ổn định từ 0.5 đến 5.0 mét Do đó, giá trị d thực sự thay đổi trong khoảng từ 434 đến 1030 Điều này cho thấy Kinect không thể cung cấp bản đồ độ sâu trong không gian từ 0 đến 0.5 mét phía trước, đây là một nhược điểm cần được khắc phục.
2.1.4 Một số đặc tính khác
Kinect có một số đặc tính quan trọng cần lưu ý, bao gồm tiêu cự và góc mở camera, nguồn cung cấp và công suất tiêu thụ, cũng như môi trường hoạt động Là sản phẩm thương mại của Microsoft, các thông số kỹ thuật chi tiết của Kinect không được công bố công khai Thông tin dưới đây được tổng hợp từ các kết quả đo đạc thực nghiệm.
Tiêu cự và góc mở của camera hồng ngoại và camera màu có sự khác biệt do khoảng cách 2.5 cm giữa hai camera Để đảm bảo khung hình màu bao trùm được khung hình hồng ngoại, góc mở của camera màu được thiết kế lớn hơn, dẫn đến tiêu cự của camera màu nhỏ hơn.
(2.1) Đồ án tốt nghiệp - Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect
Các thông số trong bảng 2.1 được đo đạc bằng thực nghiệm:
Bảng 2.1 Bảng thông số so sánh tiêu chuẩn hai camera
Tính năng Camera màu Camera hồng ngoại
Chiều xiên ~72 0 ~69 0 Độ dài tiêu cự (điểm ảnh) 525 580
Tổng quan về Robot Operating System (ROS)
Hình 2.8 Hệ thống ROS đơn giản
ROS là hệ điều hành mã nguồn mở cho robot, cung cấp các dịch vụ cần thiết như điều khiển thiết bị, thực hiện các chức năng thông dụng và quản lý gói Hệ thống này cho phép giao tiếp giữa các quá trình và hỗ trợ phần cứng, đáp ứng nhu cầu của người dùng trong lĩnh vực robot.
Nó cũng cung cấp các công cụ và thư viện cho việc thu thập, xây dựng, văn bản, và chạy mã trên nhiều máy tính
ROS hỗ trợ nhiều phong cách truyền thông khác nhau, bao gồm truyền thông đồng bộ thông qua RPC qua các dịch vụ, truyền dữ liệu không đồng bộ qua các chủ đề, và lưu trữ dữ liệu trong các gói thông số.
ROS không phải là một khuôn khổ thời gian thực, mặc dù nó có thể tích hợp ROS với mã thời gian thực
The Willow Garage PR2 Robot utilizes a system known as pr2_etherCAT, which facilitates the transmission of ROS messages in and out of a real-time process Additionally, ROS seamlessly integrates with the Orocos Real-time Toolkit.
Mục tiêu chính của ROS là hỗ trợ việc tái sử dụng mã trong nghiên cứu và phát triển robot, đóng vai trò như một khung phân phối cho các quy trình cho phép thực thi trong thời gian thực.
ROS hỗ trợ lập trình linh hoạt với nhiều ngôn ngữ như Python, C++ và Lisp Đồ án tốt nghiệp của chúng tôi tập trung vào việc khôi phục không gian 3D trong nhà bằng cách sử dụng cảm biến Kinect.
ROS hiện chỉ hoạt động trên nền tảng Unix, với phần mềm chủ yếu được thử nghiệm trên hệ điều hành Ubuntu và Mac OS X Ngoài ra, cộng đồng ROS cũng đã hỗ trợ cho các hệ thống Linux khác như Fedora, Gentoo và Arch Linux.
ROS thích hợp cho các hệ thống thời gian chạy lớn và cho quá trình phát triển lớn
ROS là dễ dàng tích hợp với các khuôn khổ phần mềm robot khác: ROS đã được tích hợp với OpenRAVE, Orocos, và Player
2.3 TỔNG QUAN POINT CLOUND LIBRARY (PCL) [11]
PCL là một thư viện mạnh mẽ hỗ trợ xử lý n-D Point Cloud và ảnh trong không gian 3D, cung cấp nhiều thuật toán như lọc, khôi phục bề mặt, phân vùng và ước lượng đặc tính vật.
Các giải thuật này sẽ được áp dụng để cải thiện nhận thức trong robot, bao gồm việc lọc giá trị ngoại lai từ dữ liệu nhiễu, kết nối các đám mây điểm trong không gian 3D, và phân khúc các bộ phận liên quan của một cảnh Bên cạnh đó, việc tìm kiếm các keypoint và tính toán các mô tả sẽ giúp nhận biết sự vật dựa trên đặc điểm hình học, đồng thời tạo ra bề mặt từ các đám mây điểm và hiển thị chúng một cách hiệu quả.
PCL hỗ trợ nhiều nền tảng như Linux, MacOS, Windows và Android, giúp đơn giản hóa quá trình phát triển Thư viện PCL được chia thành nhiều phần nhỏ, cho phép biên dịch riêng lẻ Đặc biệt, PCL hoàn toàn miễn phí cho nghiên cứu và phát triển sản phẩm thương mại.
PCL là sự kết hợp của nhiều phần nhỏ, mỗi phần này thực hiện các chức năng riêng lẻ trước khi được PCL đóng gói Các thư viện cơ bản này tạo nên cấu trúc và hiệu suất cho PCL.
Eigen: một thư viện mở hỗ trợ cho các phép toán tuyến tính, được dùng trong hầu hết các tính toán toán học của PCL
FLANN: (Fast Library for Approximate Nearest Neighbors) hỗ trợ cho việc tìm kiếm nhanh các điểm lân cận trong không gian 3D
Boost giúp chia sẻ con trỏ giữa các module và thuật toán trong PCL, ngăn chặn việc sao chép dữ liệu trùng lặp trong hệ thống VTK (Visualization Toolkit) hỗ trợ nhiều nền tảng trong việc thu thập dữ liệu 3D, đồng thời cung cấp khả năng hiển thị và ước lượng thể tích của các vật thể.
CMinPack: một thư viện mở giúp cho việc giải quyết các phép toán tuyến tính và không tuyến tính.
Mô tả 3D là quá trình xác định các điểm tương đồng giữa các đám mây tại các tọa độ khác nhau, với các điểm này được mã hóa và lưu trữ dưới dạng tọa độ XYZ và RGB Tuy nhiên, chỉ việc xác định các điểm tương đồng về tọa độ và đặc điểm mã hóa chưa đủ để tạo ra một mô tả 3D, mà cần thêm yếu tố hướng của các điểm Vấn đề này được giải quyết thông qua việc sử dụng các vector normal, trong đó mỗi điểm trong tập hợp đám mây được biểu diễn bằng một vector normal, giúp hoàn thiện mô tả 3D.
Vector normal được định nghĩa là vector vuông góc với mặt phẳng tại mỗi điểm trên bề mặt của đám mây điểm, với mỗi điểm tương ứng với một vector normal Ứng dụng của vector normal là xác định hướng của bề mặt trong đám mây điểm, đặc biệt tại các điểm cong, nơi các vector normal có hướng khác nhau, từ đó giúp xác định hình dạng của vật thể Để thực hiện điều này, cần tìm những điểm gần nhất trong đám mây điểm để tạo thành một mặt và dựng vector vuông góc hướng ra tại đó Việc tùy chỉnh số lượng vector normal sẽ giúp cải thiện độ chính xác và dễ dàng trong tính toán Đối với một tính năng tối ưu trong mô tả 3D, cần đảm bảo ba tiêu chí quan trọng.
Đồ án tốt nghiệp này tập trung vào việc khôi phục không gian 3D trong nhà bằng cách sử dụng cảm biến Kinect Một yếu tố quan trọng là khả năng chuyển đổi mạnh mẽ, đảm bảo rằng việc xoay hoặc dịch chuyển không làm thay đổi khoảng cách giữa các điểm đã được xác định trước trong tọa độ Điều này giúp duy trì tính chính xác và ổn định trong quá trình khôi phục không gian 3D.
Thứ hai nó phải lọc bỏ được những thành phần gây nhiễu, những yếu tố bên ngoài không làm ảnh hưởng đến nó
Dù thực hiện giảm mẫu hay trước khi giảm mẫu, điều quan trọng là không làm mất đi các keypoint trong đám mây Việc đảm bảo các đặc điểm và tiêu chí này sẽ tạo ra một mô tả 3D chính xác Một ví dụ về việc tìm kiếm tính năng mô tả 3D có thể minh họa cho điều này.
Hình 2.10 Tìm kiếm tính năng mô tả 3D
Mô tả 3D
Mô tả 3D là quá trình xác định các điểm tương đồng giữa các đám mây tại các tọa độ khác nhau, với các điểm này được mã hóa và lưu trữ dưới dạng tọa độ XYZ và RGB Tuy nhiên, chỉ việc xác định các điểm tương đồng về tọa độ và đặc điểm mã hóa chưa đủ để tạo ra một mô tả 3D, mà cần thêm yếu tố hướng của các điểm Yếu tố này được giải quyết thông qua các vector normal, trong đó mỗi điểm trong tập hợp đám mây trở thành một vector normal, giúp hoàn thiện mô tả 3D.
Vector normal được xác định là vuông góc với mặt phẳng tại mỗi điểm trên bề mặt của đám mây điểm, với mỗi điểm tương ứng với một vector normal Ứng dụng của vector normal giúp xác định hướng bề mặt trong đám mây điểm; tại các điểm cong, hướng của các vector normal sẽ khác nhau, từ đó xác định hình dạng của vật thể Để thực hiện điều này, cần tìm những điểm gần nhất trong đám mây điểm để tạo thành một mặt và dựng vector vuông góc tại đó Chúng ta có thể tùy chỉnh con số này nhằm tăng độ chính xác và dễ dàng trong tính toán Đối với một tính năng tối ưu trong mô tả 3D, cần đảm bảo ba tiêu chí quan trọng.
Để đảm bảo tính chính xác trong việc khôi phục không gian 3D trong nhà bằng cảm biến Kinect, quá trình chuyển đổi phải mạnh mẽ, nghĩa là không làm thay đổi khoảng cách giữa các điểm đã được xác định trước trong tọa độ Khoảng cách này giữ nguyên và không thể bị thay đổi, đảm bảo độ tin cậy cho đồ án tốt nghiệp.
Thứ hai nó phải lọc bỏ được những thành phần gây nhiễu, những yếu tố bên ngoài không làm ảnh hưởng đến nó
Thứ ba, việc giảm mẫu hoặc thực hiện trước khi giảm mẫu không làm mất đi các điểm quan trọng trong đám mây dữ liệu Đảm bảo các đặc điểm và tiêu chí này sẽ giúp hình thành một mô tả 3D chính xác Ví dụ về việc tìm kiếm tính năng mô tả 3D có thể được áp dụng trong nhiều lĩnh vực khác nhau.
Hình 2.10 Tìm kiếm tính năng mô tả 3D
Có nhiều phương pháp mô tả 3D được áp dụng trong PCL, mỗi phương pháp đều có cách tính toán giá trị duy nhất cho một điểm Một số phương pháp dựa vào sự khác biệt giữa các góc độ của các tuyến điểm và các điểm lân cận, trong khi một số khác lại sử dụng khoảng cách giữa các điểm để thực hiện tính toán.
Sau khi tính toán các giá trị cần thiết cho một quá trình, bước tiếp theo là giảm kích thước mô tả của vật Kết quả sẽ được thể hiện qua một biểu đồ, trong đó phạm vi giá trị của mỗi biến được chia thành n phân khu và số lần xuất hiện trong mỗi phân khu được tính toán Mô tả sẽ tính một biến duy nhất, từ 1 đến 100, nhằm tạo điều kiện thuận lợi cho việc thực hiện mô tả bằng cách chia nhỏ lựa chọn.
Bài viết này mô tả 10 phân khu, trong đó mỗi khu sẽ bao gồm các lần xuất hiện từ 1 đến 10, 11-20, và tiếp tục như vậy Các điểm chính sẽ được xác định qua hai loại mô tả: toàn cầu và địa phương Việc lựa chọn loại mô tả phù hợp sẽ phụ thuộc vào cách sử dụng máy tính của người dùng.
Thuật toán voxel and downsampling
Voxel là tập hợp các khối nhỏ trong không gian 3D chứa đám mây điểm, trong đó mọi điểm bên trong mỗi voxel sẽ được làm giảm tại tâm khối Phương pháp này giúp giảm số lượng mẫu điểm của một đám mây điểm, từ đó tối ưu hóa quá trình xử lý dữ liệu.
Hình 2.11.a thể hiện kết quả trước khi thực hiện lọc, trong khi Hình 2.11.b cho thấy kết quả sau khi lọc bỏ Qua đó, có thể nhận thấy rõ ràng rằng những điểm dư thừa không cần thiết đã được giảm thiểu đáng kể.
Từ đó ta cũng có một biểu đồ thể hiện sự giảm lượng điểm đám mây trước và sau khi lọc được mô tả ở Hình 2.12
Hình 2.12 Biểu đồ biểu diễn lượng điểm trước và sau khi lọc
Thuật toán NARF
NARF, viết tắt của Normal Aligned Radial Feature, là thuật toán dùng để xác định các điểm đặc trưng của vật thể từ dữ liệu đám mây điểm Thuật toán này hoạt động với đầu vào là hình ảnh có thông số màu RGB trong không gian Mỗi bức ảnh chứa các điểm ảnh với màu sắc khác nhau, được tính toán dựa trên khoảng cách từ máy ảnh đến các điểm ảnh, hay còn gọi là độ sâu của bức ảnh Mỗi khoảng cách này sẽ ảnh hưởng đến việc xác định các đặc điểm của vật thể.
Hình 2.11.a Trước khi lọc Hình 2.11.b Sau khi lọc Đồ án tốt nghiệp - Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect
24 SVTH: Huỳnh Luân Đô một màu Các điểm gần với cảm biến hơn sẽ có màu tím trong khi các điểm ở xa nhất sẽ là màu đỏ
Thuật toán NARF yêu cầu xác định các điểm đặc trưng phù hợp để tính toán khoảng cách từ cảm biến đến điểm ảnh Tất cả các điểm trên cùng một mặt phẳng có khoảng cách bằng nhau sẽ có một điểm đặc trưng chính, và việc tính toán cho điểm này sẽ áp dụng chung cho toàn bộ mặt phẳng Các điểm đặc trưng là những điểm không thể thay thế trong mỗi đối tượng; chúng khác nhau tùy thuộc vào giá trị dữ liệu của từng đối tượng và không bị mất đi khi đối tượng thay đổi không gian.
PCL cung cấp nhiều lớp tiện ích để thực hiện chuyển đổi, trong đó mỗi pixel đại diện cho khoảng cách từ cảm biến đến điểm đặc trưng Việc tính toán này cho phép thực hiện một phạm vi hình ảnh thông qua hai phương pháp khác nhau.
Cách thứ nhất là sử dụng một hình chiếu cầu, nó sẽ cho chúng ta thấy một hình ảnh tương tự như của cảm biến LIDAR
Sử dụng hình chiếu phẳng là một phương pháp hiệu quả cho các cảm biến như Kinect và Xtion, giúp loại bỏ sự biến dạng đặc trưng của các hình chiếu.
Hình 2.13 Ảnh trước và sau tìm điểm đặc trưng sử dụng thuật toán NARF
Thuật toán normal
Vector normal được định nghĩa là vector vuông góc với mặt phẳng tại mỗi điểm trên bề mặt của đám mây điểm, giúp xác định hướng của bề mặt Tại các điểm cong, hướng của các vector pháp sẽ khác biệt so với các vector khác, từ đó cho phép xác định hình dạng của vật thể.
Để xác định hướng của một bề mặt trong đám mây điểm, ta cần tìm 10 điểm gần nhất và tạo thành một mặt phẳng Từ ba điểm trong đám mây, chúng ta có thể hình thành một vector normal, biểu thị hướng của mặt phẳng đó Mỗi tập hợp điểm sẽ có hai hướng normal: hướng âm và hướng dương Trong ứng dụng này, chương trình chỉ xem xét các normal có giá trị dương để biểu diễn hướng.
Hình 2.14 Vector normal biễu diễn hướng của mặt phẳng Đồ án tốt nghiệp - Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect
Cần ít nhất ba điểm đám mây để có thể được biểu diễn bằng một normal
Hình 2.15 Vector normal của một mặt phẳng
Thuật toán mô tả FPH
PFH, viết tắt của Feature Point Histogram, là một trong những mô tả quan trọng nhất được cung cấp bởi PCL và các phương pháp khác như FPFH.
Các mô tả PFH nhằm nắm bắt thông tin hình học xung quanh các điểm bằng cách phân tích sự khác biệt giữa các hướng dẫn của vector pháp tuyến trong vùng lân cận FPH sử dụng thông tin này như một đại diện đặc trưng cho điểm, chẳng hạn như điểm nằm trên cạnh, mặt cầu hay mặt phẳng, để mô tả vật thể Việc sử dụng các điểm đặc trưng và ràng buộc hình học giữa chúng giúp tăng cường xác suất bề mặt hình học riêng biệt Mục tiêu của FPH là xác định không gian đặc trưng đa chiều với độ phân biệt cao, cho phép các điểm dữ liệu trên cùng một bề mặt được nhóm lại trong cùng một lớp, trong khi dữ liệu trên các bề mặt khác nhau sẽ được phân loại vào các lớp khác nhau Quá trình bắt đầu bằng việc tính toán các cặp thuật toán cho tất cả các điểm trong vùng lân cận, không chỉ cho các điểm đặc trưng mà còn cho những điểm gần kề Sau đó, cho mỗi cặp, một khung cố định phối hợp được tính từ vector pháp tuyến, cho phép mã hóa sự khác biệt giữa các vector bằng ba biến góc cạnh Các biến này, cùng với khoảng cách Euclide giữa các điểm, được lưu lại để mô tả sau khi tất cả các cặp đã được tính toán.
Các mô tả sau cùng là phép nối của biểu đồ của từng biến số:
Hình 2.16 Các đặc tính ở góc, cạnh của cặp điểm p s và p t
Sự khác biệt giữa hai vector đặc trưng ns và nt có thể được diễn tả như một tập hợp các đặc tính:
Hình 2.17 mô tả sơ đồ khu vực ảnh hưởng của việc tính toán PFH cho điểm truy vấn (pq), được đánh dấu bằng màu đỏ và nằm ở trung tâm của một vòng tròn (hình cầu trong không gian 3D) với bán kính r Tất cả k điểm lân cận, tức là những điểm có khoảng cách nhỏ hơn bán kính r, được kết nối hoàn toàn trong một lưới.
Hình 2.17 Sơ đồ tác động của một điểm FPH
(2.2) Đồ án tốt nghiệp - Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect
Ví dụ về FPH của hai điểm khác nhau trong cùng một đám mây
Hình 2.18 Ví dụ về FPH của hai điểm đại diện trong một đám mây
Thuật toán K-d tree FLANN
K-d tree được sử dụng để tìm kiếm các Nearest-Neighbour (NN) của một điểm hoặc một vị trí cụ thể Tìm kiếm này có thể được thực hiện một cách hiệu quả bằng cách sử dụng các đặc tính của cây để nhanh chóng loại bỏ phần lớn các không gian tìm kiếm
K-d tree (viết tắt của k-deimension tree) là một cấu trúc dữ liệu phân vùng không gian để tổ chức các điểm trong không gian với các chiều k
K-d tree là một cây nhị phân trong đó mỗi nút là một điểm k-dimensional Mỗi nút non-leaf có thể được xem là một mặt phẳng, nó chia không gian thành hai phần, được gọi là một nữa không gian Điểm bên trái của mặt phẳng này được đại diện bởi các cây con trái của nút đó và điểm bên phải của mặt phẳng được biểu diễn bởi các cây con phải Hướng của mặt phẳng được chọn theo các cách sau: mỗi nút trong cây được liên kết với một trong những k-dimensional, với các mặt phẳng vuông góc với trục của không gian đó Vì vậy, nếu chọn trục “x” là trục được chia, thì tất cả các điểm trong cây con có giá trị “x” nhỏ hơn các nút sẽ xuất hiện trong cây con trái và tất cả các điểm lớn hơn giá trị “x” sẽ nằm trong cây con phải
Trong trường hợp như vậy, các mặt phẳng sẽ được thiết lập bởi các giá trị x của điểm
Hình 2.19 Không gian biểu diễn bằng thuật toán K-d tree FLANN Đồ án tốt nghiệp - Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect
PHƯƠNG PHÁP – KẾT QUẢ THỰC HIỆN
Sơ đồ khối
Quá trình bắt đầu bằng việc thu thập dữ liệu từ Kinect trong không gian nội thất Do kích thước đám mây điểm lớn, việc xử lý và hiển thị trở nên khó khăn, vì vậy cần thực hiện bước lọc và giảm mẫu đám mây điểm Mục tiêu của bước này là giảm số lượng điểm và loại bỏ những điểm không cần thiết.
Sau khi lọc và giảm mẫu dữ liệu, bước tiếp theo là xác định những điểm chính để nắm bắt hướng đi của dữ liệu và dễ dàng kết nối chúng lại với nhau Việc mô tả rõ ràng những điểm này giúp làm nổi bật và giữ vững giá trị của chúng, ngay cả khi hoàn cảnh thay đổi Để kết nối dữ liệu hiệu quả, cần có sự chú ý đến cách thức mô tả và trình bày những điểm chính này.
31 tương đồng giữa các dữ liệu, đó chính là những điểm đặc trưng bị thay đổi tọa độ, thực chất những điểm ấy là một
Cuối cùng, việc sử dụng ma trận dịch và xoay để kết hợp các điểm tương đồng sẽ tạo ra một không gian hoàn chỉnh Qua đó, chúng ta sẽ ghép nối các hình ảnh lại với nhau, phản ánh toàn bộ nội dung của luận văn.
Thu thập dữ liệu
Do Kinect không phải là một máy ảnh thông thường nên việc chụp ảnh cần một số yêu cầu cơ bản như:
Cấp nguồn và kết nối Kinect với máy tính
Hình 3.1 Kết nối Kinect với máy tính và adapter
Sau khi kết nối phần cứng ta cần sử dụng dòng lệnh [3] mới có thể kết nối thành công Kinect với máy tính
Hình 3.2 là giao diện thông báo đã kết nối thành công máy tính với Kinect và Kinect đã sẵn sàng hoạt động
Hình 3.2 Kết nối Kinect với máy tính thành công Đồ án tốt nghiệp - Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect
Sau khi kết nối thành công, chúng ta sẽ chụp ảnh nguồn bằng cách sử dụng một chương trình chụp ảnh trên máy tính, thông qua việc nhấn phím R mà chúng ta đã thiết lập trước đó.
Cửa sổ 3D Viewer, như Hình 3.3, cho phép người dùng xem hình ảnh từ Kinect và điều chỉnh góc chụp cũng như khung cảnh cần thiết Trong khi đó, cửa sổ my_cloud_viewer được sử dụng để tương tác và lưu lại khung cảnh đã chọn từ máy tính.
Hình 3.3 Giao diện chụp ảnh bằng Kinect
Sau khi tiến hành chụp dữ liệu được lưu dưới dạng file pcd và nằm trong một không gian làm việc của ROS
Hình 3.4 Không gian làm việc trên nền tảng ROS
Dữ liệu hình ảnh bao gồm các bức ảnh chụp từ nhiều vị trí khác nhau trong căn phòng, đảm bảo bao quát toàn bộ không gian Mặc dù ảnh được chụp là màu thực tế, nhưng có thể gặp khó khăn trong việc nhìn rõ những khu vực có cường độ ánh sáng mạnh, dẫn đến việc một số chi tiết bị mờ hoặc không rõ nét.
Hình 3.5 Hình ảnh được chụp từ Kinect
Dữ liệu thu thập từ cảm biến Kinect sẽ tạo ra một không gian 3D của căn phòng trống, giúp nhóm sinh viên ghi lại và phân tích môi trường xung quanh để sử dụng làm dữ liệu đầu vào cho các nghiên cứu và ứng dụng tiếp theo.
3.5 là một dữ liệu đầu vào sau khi được chụp
Thuật toán mô tả 3D sẽ thực hiện việc này để đảm bảo tính chất của dữ liệu trong không gian.
Lọc và giảm mẫu
Sau khi thu thập dữ liệu đầu vào, bước tiếp theo là tiến hành lọc và giảm mẫu cho hình ảnh đã chụp Mục tiêu là loại bỏ các điểm thừa không cần thiết, giữ lại những điểm chính, nhằm tối ưu hóa quy trình xử lý ảnh sau này Đồ án tốt nghiệp này tập trung vào việc khôi phục không gian 3D trong nhà bằng cách sử dụng cảm biến Kinect.
Dữ liệu nguồn vào cho chương trình của chúng ta sẽ được lấy từ những đám mây điểm được chụp từ Kinect Qua các bước xử lý sử dụng thuật toán voxel và downsampling, chúng ta sẽ loại bỏ những điểm không cần thiết.
Hình 3.6 Bức ảnh gốc trước khi lọc và giảm mẫu với 322171 điểm
Sau khi tiến hành lọc và giảm mẫu, chúng ta sẽ thu được một đám mây điểm mới với số lượng điểm giảm rõ rệt Những điểm nhỏ hiển thị trong bức hình trên chính là các điểm ảnh.
Hình 3.7 Ảnh sau khi lọc và giảm mẫu còn 121878 điểm
Kích thước lấy mẫu giữa các điểm ảnh có thể điều chỉnh linh hoạt Chẳng hạn, trong Hình 3.7, khoảng cách lấy mẫu giữa các điểm là 3mm, tương ứng với khoảng cách thực tế.
3 trục tọa độ trong không gian
Với Hình 3.8 ta đã lấy mẫu với kích thước là 5mm
Hình 3.8 Ảnh sau khi lọc và giảm mẫu còn 10931 điểm
Việc lấy mẫu vật thể có thể linh hoạt tùy thuộc vào cách xử lý của từng người để phù hợp hơn Khoảng cách giữa các điểm càng lớn thì số lượng điểm trong đám mây sẽ càng giảm.
Sau khi lọc và giảm mẫu, bước tiếp theo là xác định các điểm đặc trưng của vật thể Những điểm này đóng vai trò quan trọng trong việc tạo ra tính chất đặc trưng của bức ảnh Việc tìm ra các điểm đặc trưng này là cần thiết để mô tả chính xác vật thể, đồng thời đảm bảo rằng các điểm này vẫn được giữ nguyên và không làm thay đổi tính chất của chúng.
Thuật toán NARF sẽ tối ưu hóa việc giải quyết vấn đề xác định điểm đặc trưng trong không gian 3D Bằng cách tính khoảng cách từ cảm biến đến vật thể, chúng ta có thể xác định một điểm duy nhất có tính chất về phương chiều và độ lớn từ một tập hợp lớn các điểm trong cùng một mặt phẳng Điều này giúp cải thiện quá trình khôi phục không gian 3D trong nhà bằng cảm biến Kinect.
Tương tự xét cho những điểm có chung một khoảng cách đến cảm biến thì ta sẽ có nhiều điểm đặc trưng cho một bức ảnh
Mỗi chấm tròn đỏ trên Hình 3.9 là một điểm đặc trưng ta tìm được bằng thuật toán NARF
Hình 3.10 Điểm đặc trưng của ảnh
Kích thước của mỗi hình cầu điểm đặc trưng có sự khác biệt, trong đó những hình cầu điểm nhỏ hơn sẽ mang lại độ chính xác cao hơn.
Mô tả đám mây điểm
Thuật toán FPH giúp xác định và mô tả các điểm đặc trưng của một vật thể, từ đó tìm ra sự tương đồng giữa các vật thể khác nhau Việc này không chỉ nâng cao khả năng nhận diện mà còn hỗ trợ trong việc phân tích và so sánh các đặc điểm nổi bật của các đối tượng.
Hình 3.11: Mô tả những điểm đám mây bằng thuật toán FPH.
Tìm – kết nối điểm tương đồng
Sau khi mô tả các đặc trưng trong đám mây, bước tiếp theo là tìm kiếm các điểm tương ứng phù hợp với từng đặc trưng Quá trình tìm kiếm này sẽ được lưu trữ trong cơ sở dữ liệu đối tượng của máy tính.
Hình 3.12 Các điểm đặc trưng ghép cặp với nhau
Kd-tree là một cấu trúc tìm kiếm hiệu quả cho việc xác định các đối tượng gần nhất với các keypoint Mỗi mô tả trong một khung cảnh cần được kết hợp với mô tả của một mô hình để giải thích sự xuất hiện lặp lại của khung cảnh trong dự án tốt nghiệp về khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect.
Khung cảnh và hình ảnh của Huỳnh Luân Đô sẽ không được công nhận nếu chúng ta cố tình thay đổi chúng trong một mô hình khác.
Để đảm bảo sự trao đổi hiệu quả giữa khung cảnh và mô hình, cần thiết phải có một tập hợp tập tin Trong quá trình xoay và dịch chuyển khung cảnh, khoảng cách giữa các điểm đặc trưng sẽ thay đổi, dẫn đến sự khác biệt giữa các điểm này.
Sai số giữa các điểm đặc trưng càng nhỏ thì việc mô tả càng trở nên dễ dàng hơn
Các đường line trong hình minh họa sự tương đồng giữa hai khung cảnh, giúp xác định những điểm đặc trưng Để kết nối các điểm này, cần tìm ra một phương trình ma trận chính xác nhằm dịch chuyển và xoay khung cảnh một cách hiệu quả.
Dịch chuyển và xoay để ghép các đám mây điểm với nhau
Để thực hiện việc ghép ảnh, chúng ta cần hai đám mây điểm được chụp bằng Kinect, với yêu cầu là chúng phải có ít nhất một phần tương đồng Sự tương đồng này giúp chương trình nhận diện các điểm đặc trưng, tạo cơ sở cho các bước xử lý tiếp theo.
Hình 3.13 Đám mây điểm ảnh 0 và 1
39 Để xử lý chính xác và nhanh hơn chúng ta nên sử dụng các đám mây điểm đã thông qua bước xử lý giảm mẫu
Hình 3.14 Đám mây điểm ảnh 0 và 1 đã được giảm mẫu
Sau khi chuẩn bị đầy đủ nguồn đầu vào, chúng ta sẽ tiến hành ghép các cặp ảnh để tạo thành một bản đồ không gian Sử dụng thuật toán ICP, chúng ta có thể chuyển đổi tọa độ của hai đám mây điểm chụp ở các vị trí khác nhau về cùng một hệ tọa độ thông qua ma trận chuyển tọa độ Thuật toán ICP sẽ tính toán ma trận này, giúp chúng ta có được hai đám mây điểm chung trong một hệ tọa độ.
Hình 3.15 Hai đám mây điểm 0 và 1 trong cùng một hệ tọa độ Đồ án tốt nghiệp - Khôi phục không gian 3D trong nhà sử dụng cảm biến Kinect
Hai đám mây điểm được chuyển về cùng tọa độ thông qua ma trận chuyển tọa độ
Hình 3.16 Ma trận chuyển tọa độ
Sau khi đã ở cùng một tọa độ, hai đám mây bắt đầu ghép với nhau
Hình 3.17 Hai đám mây điểm đang trong quá trình ghép với nhau
Hình ảnh bên trái màn hình hiển thị hai mẫu đã được căn chỉnh về cùng một tọa độ, trong khi hình ảnh bên phải minh họa quá trình ghép hai đám mây điểm lại với nhau.
Sau khi kết thúc quá trình ghép hai đám mây với nhau ta sẽ được một đám mây mới lưu với định dạng pcd
Hình 3.18 Kết quả của quá trình ghép hai ảnh
Quá trình chuyển đổi khung ảnh không gian của căn phòng sẽ được thực hiện liên tục cho đến khi toàn bộ dữ liệu được đưa về cùng một tọa độ Sau đó, các không gian đám mây sẽ được ghép lại để tạo ra mô hình 3D hoàn chỉnh của căn phòng Đồ án tốt nghiệp này tập trung vào việc khôi phục không gian 3D trong nhà bằng cách sử dụng cảm biến Kinect.