1. Trang chủ
  2. » Luận Văn - Báo Cáo

ỨNG DỤNG GIẢI THUẬT ICP KẾT HỢP TÁI TẠO MÔ HÌNH 3D CỦA VẬT THỂ TỪ ẢNH DEPTH MAP

123 2 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Ứng Dụng Giải Thuật ICP Kết Hợp Tái Tạo Mô Hình 3D Của Vật Thể Từ Ảnh Depth Map
Tác giả Trần Trường Sơn, Võ Xuân Xăng
Người hướng dẫn Pgs.Ts. Lê Tiến Thường
Trường học Đại học Bách Khoa
Chuyên ngành Viễn Thông
Thể loại luận văn tốt nghiệp
Năm xuất bản 2012
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 123
Dung lượng 5,31 MB

Cấu trúc

  • Chương 1 Giới thiệu (18)
    • 1.1 Đặt vấn đề (19)
    • 1.2 Mục tiêu Luận văn (19)
    • 1.3 Phương pháp thực hiện (20)
    • 1.4 Sơ lƣợc về nội dung luận văn (20)
    • 1.5 Những nghiên cứu liên quan (21)
  • Chương 2 Tìm hiểu về camera Kinect (22)
    • 2.1 Giới thiệu tổng quan về camera Kinect (23)
    • 2.2 Những thành phần chính của camera Kinect (24)
    • 2.3 Tính toán thông tin độ sâu (27)
      • 2.3.1 Thu thập thông tin độ sâu (27)
      • 2.3.2 Độ chính xác của giá trị độ sâu (30)
    • 2.4 Một số đặc tính khác (31)
      • 2.4.1 Hạn chế từ ánh sáng cấu trúc (31)
      • 2.4.2 Tiêu cự, góc mở IR camera và RGB camera (31)
      • 2.4.3 Công suất tiêu thụ và nguồn cung cấp (32)
      • 2.4.4 Môi trường hoạt động (33)
  • Chương 3 Các thư viện hỗ trợ (34)
    • 3.1 APIs hỗ trợ Kinect (35)
    • 3.2 So sánh Kinect SDK và OpenNI (36)
    • 3.3 Thƣ viện PCL (40)
  • Chương 4 Tái tạo mô hình 3D (43)
    • 4.1 Sơ đồ giải thuật (44)
    • 4.2 Cấu trúc của dữ liệu đám mây điểm (46)
    • 4.3 Giai đoạn tiền xử lý đám mây điểm (49)
      • 4.3.1 Lọc dữ liệu (49)
        • 4.3.1.1 Bộ lọc không gian (50)
        • 4.3.1.2 Bộ lọc lưới (51)
      • 4.3.2 Phân đoạn và phân nhóm vật thể (52)
        • 4.3.2.1 Phân đoạn (52)
        • 4.3.2.2 Phân nhóm (56)
    • 4.4 Giai đoạn liên kết đám mây điểm (58)
      • 4.4.1 Giải thuật ICP (59)
      • 4.4.2 Phương pháp ghép thô SAC-IA (62)
        • 4.4.2.1 Ƣớc lƣợng vector pháp tuyến bề mặt (0)
        • 4.4.2.2 Ƣớc lƣợng đặc tính đám mây điểm (0)
        • 4.4.2.3 Giải thuật đồng nhất mẫu ngẫu nhiên SAC-IA (71)
      • 4.4.3 Quá trình liên kết từng cặp đám mây điểm thành vật thể hoàn chỉnh (76)
    • 4.5 Giai đoạn cải thiện chất lƣợng đám mây điểm sau liên kết (82)
      • 4.5.1 Loại bỏ các phần tử nhiễu sử dụng phương pháp thống kê (82)
      • 4.5.2 Xử lý bề mặt dùng phương pháp Moving Least Squares (84)
    • 4.6 Nhận xét (90)
  • Chương 5 Tái tạo bề mặt vật thể (93)
    • 5.1 Giới thiệu các phương pháp tái tạo bề mặt (94)
    • 5.2 Các phương pháp xây dựng lưới đa giác (95)
      • 5.2.1 Cấu trúc dữ liệu lưới đa giác (95)
      • 5.2.2 Hình dạng Alpha (96)
      • 5.2.2 Phương pháp chiếu tam giác hóa (100)
    • 5.3 Các phương pháp tái tạo bề mặt (102)
      • 5.3.1 Phương pháp chiếu lưới (102)
    • 5.4 Nhận xét các thuật toán tái tạo (111)
  • Chương 6: Kết luận và hướng phát triển (114)
  • Tài liệu tham khảo (116)

Nội dung

ĐỀ MỤC Trang LỜI CẢM ƠN .......................................................................................................................i TÓM TẮT LUẬN VĂN.......................................................................................................ii MỤC LỤC...........................................................................................................................iii DANH SÁCH HÌNH VẼ..................................................................................................... vi DANH MỤC BẢNG BIỂU .................................................................................................. x DANH MỤC TỪ VIẾT TẮT.............................................................................................. xi Chƣơng 1 Giới thiệu .......................................................................................................... 1 1.1 Đặt vấn đề .................................................................................................................... 2 1.2 Mục tiêu Luận văn........................................................................................................ 2 1.3 Phƣơng pháp thực hiện................................................................................................. 3 1.4 Sơ lƣợc về nội dung luận văn ....................................................................................... 3 1.5 Những nghiên cứu liên quan......................................................................................... 4 Chƣơng 2 – Tìm hiểu về camera Kinect.............................................................................. 5 2.1 Giới thiệu tổng quan về camera Kinect ......................................................................... 6 2.2 Những thành phần chính của camera Kinect ................................................................. 7 2.3 Tính toán thông tin độ sâu .......................................................................................... 10 2.3.1 Thu thập thông tin độ sâu..................................................................................... 10 2.3.2 Độ chính xác của giá trị độ sâu ............................................................................ 13 2.4 Một số đặc tính khác .................................................................................................. 14 2.4.1 Hạn chế từ ánh sáng cấu trúc ............................................................................... 14 2.4.2 Tiêu cự, góc mở IR camera và RGB camera ........................................................ 14 2.4.3 Công suất tiêu thụ và nguồn cung cấp.................................................................. 15 2.4.4 Môi trƣờng hoạt động .......................................................................................... 16 Chƣơng 3 – Các thƣ viện hỗ trợ ........................................................................................ 17 3.1 APIs hỗ trợ Kinect...................................................................................................... 18 MỤC LỤC www.clbrobot.com www.robotgiaoduc.com iv 3.2 So sánh Kinect SDK và OpenNI................................................................................. 19 3.3 Thƣ viện PCL............................................................................................................. 23 Chƣơng 4 –Tái tạo mô hình 3D ......................................................................................... 26 4.1 Sơ đồ giải thuật .......................................................................................................... 27 4.2 Cấu trúc của dữ liệu đám mây điểm............................................................................ 29 4.3 Giai đoạn tiền xử lý đám mây điểm ............................................................................ 32 4.3.1 Lọc dữ liệu .......................................................................................................... 32 4.3.1.1 Bộ lọc không gian......................................................................................... 33 4.3.1.2 Bộ lọc lƣới.................................................................................................... 34 4.3.2 Phân đoạn và phân nhóm vật thể.......................................................................... 35 4.3.2.1 Phân đoạn ..................................................................................................... 35 4.3.2.2 Phân nhóm.................................................................................................... 39 4.4 Giai đoạn liên kết đám mây điểm ............................................................................... 41 4.4.1 Giải thuật ICP...................................................................................................... 42 4.4.2 Phƣơng pháp ghép thô SACIA ........................................................................... 45 4.4.2.1 Ƣớc lƣợng vector pháp tuyến bề mặt............................................................. 45 4.4.2.2 Ƣớc lƣợng đặc tính đám mây điểm ............................................................... 48 4.4.2.3 Giải thuật đồng nhất mẫu ngẫu nhiên SACIA .............................................. 54 4.4.3 Quá trình liên kết từng cặp đám mây điểm thành vật thể hoàn chỉnh .................... 59 4.5 Giai đoạn cải thiện chất lƣợng đám mây điểm sau liên kết.......................................... 65 4.5.1 Loại bỏ các phần tử nhiễu sử dụng phƣơng pháp thống kê ................................... 65 4.5.2 Xử lý bề mặt dùng phƣơng pháp Moving Least Squares ...................................... 67 4.6 Nhận xét..................................................................................................................... 73 Chƣơng 5 – Tái tạo bề mặt vật thể .................................................................................... 76 5.1 Giới thiệu các phƣơng pháp tái tạo bề mặt .................................................................. 77 5.2 Các phƣơng pháp xây dựng lƣới đa giác ..................................................................... 78 5.2.1 Cấu trúc dữ liệu lƣới đa giác ................................................................................ 78 5.2.2 Hình dạng Alpha ................................................................................................. 79 5.2.2 Phƣơng pháp chiếu tam giác hóa.......................................................................... 83 5.3 Các phƣơng pháp tái tạo bề mặt.................................................................................. 85 5.3.1 Phƣơng pháp chiếu lƣới....................................................................................... 85 www.clbrobot.com www.robotgiaoduc.com v 5.3.2 Thuật toán Marching Cubes................................................................................. 90 5.4 Nhận xét các thuật toán tái tạo.................................................................................... 94 Chƣơng 6: Kết luận và hƣớng phát triển.......................................................................... 97 Tài liệu tham khảo ............................................................................................................. 99 Phụ lục A – Sample Consensus........................................................................................ 103 Phụ lục B Các khái niệm cơ bản về hình dạng Alpha .................................................. 104

Giới thiệu

Đặt vấn đề

Tái tạo bề mặt 3D vật thể nhỏ trong điều kiện hạn chế đang được ứng dụng rộng rãi Tuy nhiên, kỹ thuật quét 3D hiện hành đòi hỏi thiết bị chuyên dụng đắt tiền và phức tạp, hạn chế người dùng Sự phổ biến của máy quét 3D giá rẻ, dễ sử dụng sẽ mở ra nhiều ứng dụng mới trong thiết kế, điện tử, và thương mại điện tử.

Camera độ sâu như Kinect của Microsoft là thiết bị thu hút sự chú ý trong giải trí và khoa học, vượt trội hơn máy quét 3D thông thường nhờ khả năng thu thập dữ liệu màu và chiều sâu hiệu quả, ít phụ thuộc ánh sáng và vân bề mặt, kết hợp với thiết kế nhỏ gọn, giá rẻ và dễ sử dụng.

Luận văn này cải thiện chất lượng tái tạo mô hình 3D từ camera Kinect cầm tay, khắc phục nhược điểm độ phân giải và độ chính xác dữ liệu độ sâu thấp của Kinect khi dùng như máy quét 3D.

Mục tiêu Luận văn

Luận văn này trình bày phương pháp tái tạo mô hình 3D từ nhiều đám mây điểm thu được bằng camera Kinect ở các góc nhìn khác nhau, đảm bảo vùng chồng lấp đủ lớn Việc thu thập dữ liệu đơn giản, chỉ cần di chuyển camera tự do quanh vật thể Các đám mây điểm được ghép nối tạo mô hình hoàn chỉnh, với số điểm là tổng số điểm của các đám mây điểm thành phần, có thể điều chỉnh bằng kỹ thuật downsample hoặc upsample.

Chương 1: Giới thiệu 3 SVTH: T.T Sơn - V.X Xăng toán để cải thiện độ phân giải (mật độ) Thuật toán tái tạo mô hình 3D thích hợp sẽ tạo đƣợc bề mặt 3D từ mô hình đám mây điểm hoàn chỉnh này

Sử dụng máy tính và camera Kinect, quá trình quét và xử lý 3D trở nên đơn giản, hiệu quả, tái tạo hình dạng vật thể chính xác trong phạm vi cho phép với chi phí chỉ khoảng 150$ cho camera, tiết kiệm hơn hẳn so với các phương pháp truyền thống.

Mục tiêu của Luận văn này đƣợc tóm gọn lại nhƣ sau:

Kinect camera thu thập dữ liệu đám mây điểm Dữ liệu được tiền xử lý bằng thuật toán lọc, chuẩn bị cho quá trình ghép nối và tái tạo vật thể 3D.

Bài viết trình bày phương pháp phục hồi mô hình 3D vật thể bằng thuật toán ICP, bao gồm giai đoạn ghép thô và ghép tinh chỉnh, dựa trên việc đăng ký (registration) các đám mây điểm.

 Thực thi các giải thuật cải thiện chất lƣợng bề mặt tối ƣu sau quá trình ghép nối các đám mây điểm

 Tái tạo lại bề mặt của vật thể.

Phương pháp thực hiện

Xử lý dữ liệu 3D gồm hai giai đoạn chính: liên kết đám mây điểm (bao gồm ghép nối thô và tinh chỉnh, sau tiền xử lý lọc nhiễu) và tái tạo bề mặt (dùng các thuật toán như chiếu tam giác, alpha shapes, chiếu lưới, hay marching cubes) Thuật toán tái tạo bề mặt được lựa chọn dựa trên yêu cầu về chất lượng bề mặt (trơn, chi tiết, bảo toàn màu sắc) và hiệu suất xử lý.

Sơ lƣợc về nội dung luận văn

Luận văn gồm có các chương:

• Chương 1 – Giới thiệu: Sơ lược về tái tạo bề mặt 3D, những vấn đề hiện tại và tổng quan về nội dung luận văn

Chương 1: Giới thiệu 4 SVTH: T.T Sơn - V.X Xăng

• Chương 2 – Tìm hiểu camera Kinect: phân tích chuyên sâu về cấu tạo và nguyên tắc hoạt động của camera Kinect

• Chương 3 – Các thư viện hỗ trợ: giới thiệu về API OpenNI và Thư viện đám mây điểm (PCL) dùng trong luận văn này

• Chương 4 – Tái tạo mô hình 3D: chương này phân tích lý thuyết, phương pháp thực hiện và kết quả của các giải thuật xử lý liên kết đám mây điểm

• Chương 5 – Tái tạo bề mặt 3D: chương này phân tích lý thuyết, phương pháp thực hiện và kết quả của các thuật toán tái tạo bề mặt

• Chương 6 – Kết luận và hướng phát triển.

Những nghiên cứu liên quan

KinectFusion của Microsoft, hợp tác với các trường Anh và Canada, tạo ra mô hình 3D thời gian thực tốc độ cao Phương pháp này không sử dụng liên kết đám mây điểm, cho phép tái tạo chi tiết cao nhờ cải thiện bề mặt liên tục qua nhiều góc nhìn, tích hợp tương tác đồ họa trực tiếp trong quá trình quét.

Năm 2010, Viện nghiên cứu Intel phát triển hệ thống tái tạo 3D tiên tiến sử dụng Kinect, áp dụng kỹ thuật vòng lặp kín tối ưu hóa lỗi toàn cục, vượt xa phạm vi bài viết này.

Tháng 1/2011, Nicolas Burrus, nhà nghiên cứu Kinect, phát hành phần mềm RGBDemo dựa trên ý tưởng của Intel, trước cả khi driver OpenNI ra mắt Tháng 4/2011, ông cập nhật chương trình này với thuật toán liên kết đám mây điểm tối ưu hóa GPU.

Tìm hiểu về camera Kinect

Giới thiệu tổng quan về camera Kinect

Kinect, thiết bị ngoại vi của Xbox 360, cho phép tương tác bằng cử chỉ, mang đến trải nghiệm chơi game thú vị.

Kinect hiểu cử chỉ người nhờ bản đồ độ sâu và khả năng theo dõi khung xương người Ứng dụng của Kinect vượt ngoài game, gồm nghiên cứu xử lý ảnh 3D và nhận diện cử chỉ.

Chương 2: Tìm hiểu về camera Kinect 7 SVTH: T.T Sơn - V.X Xăng

(body tracking) đƣợc dùng trong các ứng dụng điều khiển robot tự động và nhiều mục đích khác

Kinect đang giữ kỷ lục Guiness thế giới về “Thiết bị điện tử đƣợc tiêu thụ nhanh nhất” với

Kinect đạt doanh số 8 triệu sản phẩm chỉ trong 60 ngày, đạt mốc 10 triệu sản phẩm toàn cầu vào ngày 9/3/2011 nhờ giá thành hợp lý (khoảng 140$) và khả năng cung cấp dữ liệu 3D chất lượng cao phục vụ nghiên cứu Khả năng theo dõi chuyển động và nhận diện cử chỉ xuất sắc biến Kinect thành công cụ quan trọng trong thị giác máy tính, cạnh tranh trực tiếp với Wii Remote Plus, PlayStation Move và PlayStation Eye Phiên bản Windows ra mắt ngày 12/2/2012, cùng với nhiều bản hack mở rộng khả năng tương tác với các ứng dụng độc lập.

Những thành phần chính của camera Kinect

Camera Kinect có thiết kế dạng hộp ngang, gắn trên chân đế nhỏ xoay được, linh hoạt đặt trên hoặc dưới màn hình.

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)

Hình 2.2: Kết cấu của Kinect

Chương 2: Tìm hiểu về camera Kinect 8 SVTH: T.T Sơn - V.X Xăng

 RGB Camera: như một camera RGB thông thường, có tốc độ khung hình 30Hz

Video stream RGB có độ phân giải chuẩn VGA (640 × 480 điểm ảnh) 8 bit đi qua bộ lọc màu Bayer

Hình 2.3: Ảnh RGB thu đƣợc từ camera Kinect

Cảm biến độ sâu tích hợp bộ chiếu tia laser hồng ngoại và camera CMOS đơn sắc, thu thập dữ liệu độ sâu hiệu quả trong mọi điều kiện ánh sáng Video stream độ phân giải VGA (640x480), độ sâu 11-bit, 2048 cấp nhạy được phân tích.

Cảm biến Kinect hoạt động hiệu quả trong phạm vi 1.2 - 3.5m khi dùng với phần mềm Xbox, nhưng có thể tracking mở rộng từ 0.7 - 6m, cần diện tích chơi tối thiểu 6m² Phần mềm bên thứ ba và tùy chỉnh cho phép điều chỉnh phạm vi hoạt động Góc nhìn cảm biến là 57° ngang và 43° dọc.

0.8m là 87cm, và phạm vi nhận diện theo chiều dọc là 63cm, dẫn đến độ phân giải vào khoảng hơn 1.3mm cho mỗi pixel

 Dãy đa microphone: gồm các microphone đƣợc bố trí dọc Kinect nhƣ trong hình

2.2 đƣợc dùng vào các ứng dụng điều khiển bằng giọng nói Dãy microphone gồm có bốn bộ thu âm và xử lý âm thanh 16-bit ở mỗi kênh tại tốc độ lấy mẫu 16 kHz

Chương 2: Tìm hiểu về camera Kinect 9 SVTH: T.T Sơn - V.X Xăng

Hiệu quả của hệ thống đa microphone phụ thuộc vào driver bên thứ ba, với Microsoft Kinect SDK hiện được đánh giá cao hơn OpenNI về khả năng hỗ trợ.

Hình 2.4: Bên trong Kinect: RGB camera, IR camera, Projector

Động cơ điều khiển góc ngẩng của camera, một động cơ DC nhỏ gọn, cho phép điều chỉnh góc nhìn lên xuống tới 27° Tính năng này rất hữu ích cho các ứng dụng thị giác máy tính, đặc biệt trong robot tự hành sử dụng Kinect.

Hình 2.5: Động cơ điều khiển góc ngẩng Kinect

Chương 2: Tìm hiểu về camera Kinect 10 SVTH: T.T Sơn - V.X Xăng

Tính toán thông tin độ sâu

2.3.1 Thu thập thông tin độ sâu

Kinect đo chiều sâu ảnh bằng công nghệ Light Coding của PrimeSense, kết hợp camera hồng ngoại và bộ phát ánh sáng cấu trúc Máy chiếu phát tia hồng ngoại, camera hồng ngoại ghi nhận, từ đó xác định bề mặt cảnh vật.

Hình 2.6: Mẫu hình đƣợc chiếu bởi projector và chụp lại bằng IR camera

Khác với Stereo Camera và Time-Of-Flight (TOF), công nghệ Light Coding sử dụng nguồn sáng hồng ngoại liên tục và camera hồng ngoại để xác định khoảng cách dựa trên thuật toán xử lý tín hiệu tích hợp trong chip Kinect.

PS1080 SoC của PrimeSense Công nghệ mới này đƣợc cho là đáp ứng chính xác hơn, giá cả rẻ hơn cho việc sử dụng ở môi trường trong nhà

Chương 2: Tìm hiểu về camera Kinect 11 SVTH: T.T Sơn - V.X Xăng

Kinect sử dụng máy chiếu hồng ngoại tạo ra các điểm sáng cố định chiếu lên không gian phía trước Camera hồng ngoại chụp lại các điểm sáng này Bộ xử lý PS1080 SoC sau đó dùng thuật toán hình học dựa trên vị trí của camera và máy chiếu để tạo bản đồ độ sâu.

Hình 2.6 cho ta thấy rõ mẫu hình tập hợp các đốm sáng từ Projector và đƣợc chụp lại bởi

Hình 2.7 minh họa Kinect ước lượng khoảng cách bằng cách sử dụng một tia hồng ngoại (IR) từ bộ phát Tia IR chiếu vào vật thể, tạo ra một điểm sáng được camera IR ghi nhận Khoảng cách được xác định dựa trên vị trí điểm sáng trên camera, tương ứng với các mặt phẳng ở các khoảng cách khác nhau.

Kinect sử dụng ba mặt phẳng: mặt phẳng gần, mặt phẳng xa và mặt phẳng tham chiếu (được Kinect biết trước khoảng cách) Mặt phẳng ảnh của camera IR là nơi chiếu các điểm không gian Quan sát vị trí A', B', C' (ảnh của A, B, C trên mặt phẳng ảnh) cho phép phân tích tương tác tia sáng với ba mặt phẳng.

Chương 2: Tìm hiểu về camera Kinect 12 SVTH: T.T Sơn - V.X Xăng Điểm A càng gần Kinect (hay close plane càng gần Kinect) thì A’ càng xa B’ về phía bên phải; ngƣợc lại, điểm C càng xa Kinect (hay distant plane càng xa Kinect) thì C’ càng xa B’ về phía bên trái Từ đó: khi ta biết trước hướng, điểm xuất phát của tia sáng từ

Từ vị trí B' (hình chiếu của điểm B trên mặt phẳng ảnh), và vị trí của máy chiếu, ta có thể tính toán chính xác độ sâu ảnh và khoảng cách đến vật thể.

Kinect sử dụng projector chiếu các đốm sáng lên đối tượng, camera hồng ngoại ghi nhận lại và tính toán độ lệch (disparity) giữa vị trí đốm sáng trên camera và mặt phẳng tham chiếu Độ lệch này tạo nên bản đồ độ lệch (disparity map), tỷ lệ thuận với độ sâu (depth) Từ đó, Kinect xây dựng bản đồ độ sâu (depth map) với đơn vị mét, bổ sung các giá trị bị thiếu bằng nội suy.

Hình 2.8: Ảnh độ sâu: điểm càng sáng thì càng gần

Kinect không trực tiếp tính toán độ sâu mà cung cấp giá trị trừu tượng cho hệ thống xử lý OpenNI xử lý giá trị này dễ dàng hơn cho lập trình viên, khác với libfreenect, xuất trực tiếp giá trị 11-bit.

Chương 2: Tìm hiểu về camera Kinect 13 SVTH: T.T Sơn - V.X Xăng

2.3.2 Độ chính xác của giá trị độ sâu

Kinect không đảm bảo độ chính xác tuyệt đối ở mọi pixel do một số phần dữ liệu độ sâu được nội suy Hiệu quả của Kinect tốt nhất khi sử dụng với các bề mặt trơn, liên tục.

Theo Nicolas Burrus, người tiên phong trong công nghệ Kinect, độ sâu z (mét) của một điểm tính toán được từ chênh lệch dữ liệu d (thu được từ phần cứng Kinect) dựa trên phương trình [6].

Giá trị độ sâu 11-bit (d) từ 0 đến 2047, nhưng chỉ khoảng 434-1084 (650 giá trị) cho kết quả chính xác trên 50cm, tính từ Kinect Khoảng 759 giá trị trong đó đại diện cho độ sâu dưới 1m, giảm theo hàm mũ khi độ sâu tăng, chỉ còn 16 giá trị cho độ sâu 4-5m Giá trị d gần 1084 làm thay đổi dấu của z, gây ảnh hưởng đến tính toán độ sâu.

Hình 2.9: Vùng nằm trong hình chữ nhật màu đỏ không xác định đƣợc độ sâu do cách

Chương 2: Tìm hiểu về camera Kinect 14 SVTH: T.T Sơn - V.X Xăng

Đối tượng càng xa người xem, số điểm ảnh càng ít do chiếm diện tích nhỏ hơn trên ảnh Độ chính xác bề mặt và chi tiết chỉ đạt cao nhất trong phạm vi 60cm - 1.5m; ngoài khoảng cách 2.5-3.0m, độ chính xác giảm đáng kể Thậm chí với phần cứng chính xác, giá trị 𝑑 vẫn không đảm bảo độ chính xác cao ngoài khoảng đo tin cậy.

Một số đặc tính khác

2.4.1 Hạn chế từ ánh sáng cấu trúc

Khoảng cách giữa camera và thiết bị phát trong thiết kế hệ thống dẫn đến hiện tượng che khuất, tạo ra lỗ hổng trong ảnh độ sâu do mô hình chiếu mẫu bị cản trở.

Hình 2.10: Ví dụ về sự đổ bóng và nhiễu hồng ngoại gây ra bởi ánh sáng mặt trời

2.4.2 Tiêu cự, góc mở IR camera và RGB camera

Hai camera RGB và IR, cách nhau 2.5cm, cho khung hình hơi khác biệt Camera RGB có góc mở rộng hơn camera IR để đảm bảo bao phủ toàn bộ khung hình IR, dẫn đến sự khác biệt về tiêu cự.

RGB camera nhỏ hơn Các thông số trong bảng 2.1 đƣợc đo đạc bằng thực nghiệm nhƣ sau:

Chương 2: Tìm hiểu về camera Kinect 15 SVTH: T.T Sơn - V.X Xăng

Bảng 2.1 Góc mở và tiêu cự của RGB và IR camera [3]

2.4.3 Công suất tiêu thụ và nguồn cung cấp

Cảm biến Kinect của Xbox 360 cần nguồn điện ngoài do công suất tiêu thụ cao hơn khả năng cung cấp của cổng USB Xbox 360S dùng cổng AUX riêng, còn các model cũ cần dây sạc kèm adapter 12V với hai đầu ra: USB cho kết nối và nguồn điện cho Kinect.

 3.3W ở chế độ chờ và 4.7W khi hoạt động

Hình 2.11: Bộ nguồn của cảm biến Kinect

Chương 2: Tìm hiểu về camera Kinect 16 SVTH: T.T Sơn - V.X Xăng

Hệ thống chỉ tiêu thụ 2.25W, một mức công suất có thể cung cấp qua cổng USB 2.0, tuy nhiên nguồn năng lượng chính xác từ cổng này vẫn chưa được xác định rõ.

Kinect của PrimeSense hoạt động tốt trong nhà, gần như không bị ảnh hưởng bởi ánh sáng xung quanh Tuy nhiên, sử dụng ngoài trời bị hạn chế Dù vậy, thử nghiệm cho thấy Kinect vẫn thu được dữ liệu độ sâu chi tiết nếu phần môi trường quan sát không bị ánh sáng mạnh tác động quá nhiều.

Kinect hoạt động tốt trong nhà, đặc biệt hiệu quả với các bề mặt trơn, liên tục và bóng râm, cho kết quả độ sâu khá tốt nhờ camera hồng ngoại Tuy nhiên, Kinect không đáng tin cậy khi sử dụng ngoài trời.

Các thư viện hỗ trợ

APIs hỗ trợ Kinect

Kinect, ngay từ khi ra đời, đã thu hút sự chú ý của nhiều nhà phát triển phần mềm, không chỉ trong lĩnh vực game Xbox mà còn trong y học, robot, và lập bản đồ nhờ khả năng xử lý ảnh Điều này dẫn đến sự phát triển của nhiều thư viện hỗ trợ Kinect, đáng chú ý là Libfreenect, Code Laboratories Kinect, OpenNI và Kinect SDK.

Libfreenect [7] là thƣ viện đƣợc phát triển bởi OpenKinect, do một cộng đồng những người quan tâm đến phần cứng Kinect viết ra và chia sẻ Cộng đồng

OpenKinect, một dự án phi lợi nhuận, đã phát triển Libfreenect, thư viện mã nguồn mở hỗ trợ nhiều hệ điều hành (Windows, Linux, OS X) và ngôn ngữ lập trình (Python, C, C++, C#, Java).

Code Laboratories (CL) chuyên cung cấp phần mềm hỗ trợ lập trình viên khai thác tối đa khả năng xử lý ảnh của các thiết bị, bao gồm cả Kinect CL tập trung vào các tính năng cốt lõi.

Kinect về camera, audio và motor

OpenNI là một framework đa nền tảng, đa ngôn ngữ cung cấp API cho phát triển ứng dụng tương tác tự nhiên.

OpenNI API bao gồm một tập hợp các giao diện để viết các ứng dụng tương tác tự nhiên

Mục đích chính của OpenNI là tạo nên API tiêu chuẩn cho phép giao tiếp với:

 Cảm biến âm thanh và hình ảnh

Middleware xử lý ảnh và âm thanh phân tích dữ liệu thu thập được, hiểu và trích xuất thông tin hữu ích Ví dụ, hệ thống có thể nhận diện hình ảnh, xác định vị trí lòng bàn tay trong ảnh.

OpenNI API là chuẩn cho phép phát triển ứng dụng tương tác tự nhiên, theo dõi hình ảnh 3D thực bằng dữ liệu tính toán từ đầu vào cảm biến.

Chương 3: Các thư viện hỗ trợ 19 SVTH: T.T Sơn - V.X Xăng một bộ cảm biến (nhƣ hình ảnh toàn thân, biểu diễn vị trí tay, một mảng điểm ảnh trong ảnh độ sâu) Các ứng dụng có thể đƣợc viết không phụ thuộc vào các nhà cung cấp cảm biến hoặc middleware

Tháng 6 năm 2011, Microsoft công bố SDK Kinect miễn phí cho Windows, bao gồm trình điều khiển tương thích Windows 7, cho phép nhà phát triển tạo ứng dụng.

Kinect với C++, C# hoặc Visual Basic trên Microsoft Visual Studio 2010 và bao gồm các đặc tính:

 Stream dữ liệu cảm biến gốc: truy cập đến stream cấp thấp thu đƣợc từ cảm biến độ sâu, cảm biến màu sắc, và mảng micro bốn phần tử

 Theo dõi cơ thể: khả năng theo dõi skeleton nhiều người di chuyển trong vùng nhận biết của Kinect phục vụ cho ứng dụng điều khiển bởi cử chỉ

Phần mềm nâng cao khả năng xử lý âm thanh với bộ khử nhiễu, lọc tiếng vang, định vị nguồn âm (beamforming) và tích hợp API nhận dạng giọng nói Windows.

OpenNI và Kinect SDK là hai API hàng đầu để lập trình Kinect, được đánh giá cao về khả năng hỗ trợ Mục 3.2 sẽ so sánh hai API này để lựa chọn API phù hợp cho luận văn.

So sánh Kinect SDK và OpenNI

Sau đây là nhận định về ƣu, khuyết điểm của hai thƣ viện trên: Ƣu điểm của Kinect SDK:

 Hỗ trợ xử lý âm thanh

 Hỗ trợ động cơ điều khiển góc ngẩng

 Skeleton tracking (bám đặc tính cơ thể người): o Không cần hiệu chỉnh trước khi bám o Bao gồm đầu, tay, chân, xương đòn o Giải quyết tốt với các khớp

 Hỗ trợ đa truy xuất các cảm biến của Kinect đồng thời

Chương 3: Các thư viện hỗ trợ 20 SVTH: T.T Sơn - V.X Xăng

 SDK tạo sự kiện khi một video hoặc depth frame mới xuất hiện

Nhƣợc điểm của Kinect SDK:

 Giấy phép chỉ cho mục đích phi thương mại

 Chỉ theo dõi toàn bộ cơ thể (không có cơ chế theo dõi riêng cho một bộ phận)

 Không cung cấp liên kết của các stream hình ảnh màu và độ sâu với nhau mặc dù có những tính năng sắp xếp các tọa độ cá nhân

 Không hỗ trợ nhận biết cử chỉ

Hệ thống theo dõi toàn thân, nhưng chỉ tính toán khớp cố định, bỏ qua phần thân trên hoặc chỉ theo dõi bàn tay Điều này dẫn đến tiêu tốn nhiều sức mạnh CPU hơn so với OpenNI/NITE.

 Không có hệ thống nhận dạng cử chỉ

 Không hỗ trợ cho PrimeSense và bộ cảm biến ASUS WAVI Xtion

 Chỉ hỗ trợ cho hệ điều hành Win7 (32bit và 64bit) với đòi hỏi khá cao:

+ Máy tính dual-core, tốc độ 2.66 GHz hoặc nhanh hơn

+Windows 7 với hỗ trợ của DirectX 9.0 trở lên

+Lập trình trên Visual Studio 2010

 Không hỗ trợ cơ cấu game Unity3D

 Không hỗ trợ tích hợp ghi/phát lại vào ổ cứng

 Không hỗ trợ việc thu ảnh trực tiếp từ IR camera

 SDK tạo sự kiện khi người sử dụng mới vào khung hình, rời khung hình Ƣu điểm của PrimeSense OpenNI/NITE:

 Cho phép xây dựng các ứng dụng thương mại hóa

 Hỗ trợ framework theo dõi vị trí bàn tay

 Hỗ trợ framework nhận diện cử chỉ tay

 Có thể tự động liên kết stream ảnh độ sâu với stream ảnh màu

Theo dõi khung xương (skeleton tracking) và theo dõi bàn tay (hand tracking) được hỗ trợ hiệu quả thông qua kết nối với các middleware, đồng thời tiêu thụ ít tài nguyên CPU hơn so với Kinect SDK.

Chương 3: Các thư viện hỗ trợ 21 SVTH: T.T Sơn - V.X Xăng o Tính toán đến việc quay khớp o Hỗ trợ chế độ chỉ theo dõi tay o CPU tiêu thụ điện năng ít hơn so với Kinect SDK

 Hỗ trợ cảm biến PrimeSense (Kinect) và Xtion ASUS WAVI

 Hỗ trợ đa cảm biến

 Hỗ trợ Windows (bao gồm cả Vista & XP), Linux và Mac OSX

 Đi kèm với mã hỗ trợ đầy đủ cho cơ cấu game Unity3D

 Hỗ trợ ghi/phát lại đến/từ ổ cứng

 Hỗ trợ truyền video hồng ngoại gốc

 Tạo sự kiện khi người sử dụng mới vào frame, rời frame

Nhƣợc điểm của PrimeSense OpenNI/NITE:

 Không hỗ trợ cho âm thanh

 Không có hỗ trợ cho động cơ/góc ngẩng

 Theo dõi toàn thân: o Thiếu hỗ trợ quay đầu, tay, bàn chân, xương đòn o Cần cử chỉ hiệu chỉnh trước khi theo dõi

 Không tạo sự kiện mới khi video hoặc frame độ sâu mới khả dụng

Kinect SDK hiệu quả hơn với xử lý skeleton và âm thanh, ngược lại OpenNI phù hợp hơn với ảnh màu, đám mây điểm màu trên các hệ điều hành ngoài Windows 7 Thực nghiệm cho thấy mỗi SDK có ưu điểm riêng trong xử lý cử chỉ.

 Nếu cảm biến chỉ thu đƣợc phần trên cơ thể hoặc tay, hoặc muốn làm việc với một framework có sẵn thì nên sử dụng OpenNI/NITE

Kinect SDK phù hợp nếu cảm biến quét toàn thân, nhưng người dùng cần tự lập trình nhận diện cử chỉ.

OpenNI cho phép thu bản đồ độ sâu trong phạm vi 0.5 mét, gần hơn so với Kinect SDK (0.8 mét) Chất lượng bản đồ độ sâu của cả hai tương đương Tuy nhiên, Kinect SDK, một thư viện beta, hiện chưa được tích hợp với các thư viện xử lý ảnh khác như Point Cloud, trái ngược với OpenNI.

OpenNI ra đời trước và gần như được tích hợp với thư viện xử lý ảnh Point Cloud

OpenNI nổi bật với tính phổ biến nhờ khả năng hoạt động trên nhiều hệ điều hành khác nhau và được hỗ trợ bởi cộng đồng phát triển mã nguồn mở.

Chương 3: Các thư viện hỗ trợ 22 SVTH: T.T Sơn - V.X Xăng nguồn mở rộng lớn; về chuyện kinh doanh, ta có thể phát triển thành các sản phẩm thương mại hóa trên thị trường trong rất nhiều lĩnh vực như robot, y tế, giáo dục, giải trí…

OpenNI Framework là một lớp trừu tượng, cung cấp giao diện lập trình ứng dụng (API) linh hoạt cho nhiều module xử lý và tạo dữ liệu từ các thiết bị phần cứng hoặc thành phần trung gian, cho phép dễ dàng tích hợp nhiều thành phần khác nhau.

Hình 3.1: OpenNI, cung cấp giao diện tương tác với các cảm biến và các thành phần trung gian phân tích dữ liệu từ cảm biến

Những module hiện đang đƣợc hỗ trợ là:

- Thiết bị âm thanh (một microphone hay một dãy các microphone)

Chương 3: Các thư viện hỗ trợ 23 SVTH: T.T Sơn - V.X Xăng

Phần mềm phân tích toàn bộ cơ thể xử lý dữ liệu cảm biến, tạo mô hình cơ thể 3D với thông tin khớp nối, định hướng và trọng tâm.

- Thành phần phân tích điểm tay: là một phần mềm xử lý dữ liệu từ cảm biến và tạo vị trí của điểm trên tay

- Thành phần phát hiện cử chỉ: là một phần mềm nhận ra cử chỉ đƣợc định nghĩa trước (ví dụ: vẫy tay) và báo hiệu cho ứng dụng

- Thành phần phân tích cảnh vật: là phần mềm phân tích ảnh của cảnh vật để tạo ra những thông tin nhƣ :

 Sự phân biệt giữa ảnh chính và ảnh nền

 Sự phối hợp của mặt phẳng sàn nhà

 Sự nhận dạng những ảnh riêng trong cảnh vật

Kinect SDK vượt trội hơn OpenNI về khả năng xử lý âm thanh, hỗ trợ phát triển ứng dụng điều khiển bằng giọng nói dễ dàng OpenNI, tuy nhiên, cho phép thu ảnh độ sâu hiệu quả.

0.4 m tính từ cảm biến Kinect ra xa, trong khi khoảng cách ban đầu chỉ là 0.8 m khi sử dụng

Kinect SDK cung cấp chất lượng ảnh độ sâu tương đồng giữa các API, nhưng do mới phát hành nên chưa hỗ trợ thư viện đám mây điểm như OpenNI.

OpenNI là framework đa nền tảng, được cộng đồng hỗ trợ mạnh mẽ Để tối ưu hiệu năng, OpenNI được kết hợp với thư viện xử lý ảnh 3D Point Cloud (PCL) – chi tiết sẽ trình bày ở mục 3.3 Đây là lý do nhóm nghiên cứu lựa chọn OpenNI và Point Cloud cho luận văn.

Thƣ viện PCL

Thư viện đám mây điểm (PCL) là một dự án nguồn mở, quy mô lớn, xử lý dữ liệu đám mây điểm 3D hiệu quả PCL tích hợp các thuật toán tối ưu cho lọc và ước lượng đặc tính.

Thư viện phần mềm này cung cấp các tính năng tái tạo bề mặt, ghép mô hình, phân đoạn, liên kết đám mây điểm, so sánh mô hình và nhận diện đối tượng, hoàn toàn miễn phí cho mục đích thương mại và nghiên cứu, được tài trợ bởi Willow Garage, nVidia, Google, Toyota, Trimble, Urban Robotics.

Honda Research Institute, và Sandia Intelligent Systems and Robotics PCL có thể dùng trên nhiều platform nhƣ Linux, MacOS, Windows và Android Phiên bản mới nhất PCL 1.6 phát

Chương 3: Các thư viện hỗ trợ 24 SVTH: T.T Sơn - V.X Xăng hành ngày 17 tháng 7 năm 2012 Ngoài ra, vì PCL là một dự án mở nên còn có một phiên bản

PCL trunk được cộng đồng người sử dụng PCL phát triển và cập nhật hàng ngày

Thư viện đám mây điểm được thiết kế với logo như Hình 3.2 Để tối ưu quá trình phát triển, thư viện được chia nhỏ thành các module độc lập, cho phép biên dịch riêng biệt.

Thư viện libpcl_filters cung cấp các bộ lọc xử lý dữ liệu điểm, bao gồm giảm mẫu (downsampling), loại bỏ điểm nhiễu (outlier), lọc theo chỉ số đặc tính và chiếu điểm.

Thư viện libpcl_features ước lượng đặc tính 3D như vector pháp tuyến, độ cong bề mặt, điểm biên, và mô tả đặc tính PFH, FPFH.

 libpcl_io – thực thi các tác vụ I/O nhƣ ghi/đọc file PCD

Thư viện libpcl_segmentation thực hiện phân đoạn điểm đám mây bằng phương pháp sample consensus (SAC), ước lượng các mô hình hình học như mặt phẳng, hình trụ, hình cầu và đường thẳng.

 libpcl_surface – thực thi các giải thuật tái tạo bề mặt, tạo lưới, bao lồi, làm trơn…

 libpcl_registration – thực thi các thuật toán ghép liên kết đám mây điểm

 libpcl_keypoints – thực thi các phương pháp trích xuất keypoint

 libpcl_range_image – hỗ trợ range image tạo đƣợc từ các đám mây điểm

Thư viện libpcl_visualization, dựa trên VTK, hỗ trợ hiển thị đám mây điểm Trước khi biên dịch các thành phần PCL, người dùng cần tải và biên dịch các thư viện phụ thuộc bên thứ ba.

Chương 3: Các thư viện hỗ trợ 25 SVTH: T.T Sơn - V.X Xăng

 Eigen, một thƣ viện mã nguồn mở hỗ trợ tính toán đại số tuyến tính, đƣợc sử dụng cho hầu hết các tính toán trong PCL

 FLANN (Fast Library for Approximate Nearest Neighbors) hỗ trợ cho phép tính xác định k-điểm gần nhất trong không gian

 Boost: con trỏ dùng chung trong hầu hết các module và thuật toán nhằm giảm thiểu sao chép lại dữ liệu đã có trong hệ thống

VTK (Visualization Toolkit) offers cross-platform support for rendering 3D point clouds and surface data, including tensor, texture, and volumetric rendering methods.

 Qhull thực hiện các thuật toán Quickhull tính toán bao lồi, bao lõm, tính toán thể tích, diện tích bề mặt

 OpenNI sử dụng để thu thập đám mây điểm

 Qt được sử dụng để phát triển các ứng dụng có giao diện đồ họa người dùng (GUI).

Tái tạo mô hình 3D

Sơ đồ giải thuật

Tái tạo mô hình 3D từ dữ liệu đám mây điểm Kinect trải qua ba giai đoạn: tiền xử lý (lọc nhiễu, phân đoạn, phân nhóm), liên kết đám mây điểm bằng thuật toán ICP (có thể kết hợp SAC-IA để tăng độ chính xác), và cải thiện bề mặt (loại bỏ outlier, làm trơn).

Hình 4.1: Sơ đồ giải thuật: Giai đoạn tiền xử lý.

Sử dụng thƣ viện PCL

Sử dụng thƣ viện OpenNI

Chương 4: Tái tạo mô hình 3D 28 SVTH: T.T Sơn - V.X Xăng

Hình 4.2 minh họa thuật toán ICP kết hợp, thể hiện một vòng lặp liên kết hai đám mây điểm.

Hình 4.3: Sơ đồ giải thuật: giai đoạn cải thiện chất lƣợng đám mây điểm sau liên kết

Chương 4: Tái tạo mô hình 3D 29 SVTH: T.T Sơn - V.X Xăng

Cấu trúc của dữ liệu đám mây điểm

Đám mây điểm (point cloud) là tập hợp các điểm 3D (X, Y, Z) mô tả bề mặt vật thể.

Đám mây điểm được thu thập từ nhiều nguồn như camera ảnh, máy scan 3D, camera đo khoảng cách bằng thời gian truyền sáng, hoặc tạo từ phần mềm Thư viện PCL hỗ trợ thu thập và xử lý dữ liệu 3D từ các thiết bị như Prime Sensor, Kinect, Asus Xtion PRO, tạo ra đám mây điểm đặc trưng từ tập hợp các điểm đo được trên bề mặt vật thể.

Dữ liệu đám mây điểm 3D, thu được từ quá trình scan 3D, ứng dụng rộng rãi trong nhiều lĩnh vực: tạo mô hình CAD, kiểm định chất lượng sản phẩm, và các ứng dụng khác như hoạt hình, hình ảnh, phối cảnh, đáp ứng nhu cầu đa dạng của người dùng.

Ứng dụng quan trọng của dữ liệu đám mây điểm là trong đo lường và kiểm định công nghiệp Đám mây điểm của chi tiết được so sánh trực tiếp với mô hình CAD, phát hiện và hiển thị sai lệch bằng bản đồ màu sắc, xác định dung sai và kích thước hình học.

Chương 4: Tái tạo mô hình 3D 30 SVTH: T.T Sơn - V.X Xăng

Dữ liệu đám mây điểm ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm tạo mô hình số hóa độ cao địa hình trong GIS và mô hình 3D môi trường đô thị, cũng như đặc trưng dữ liệu thể tích như ảnh y tế.

Dữ liệu đám mây điểm thường không được sử dụng trực tiếp trong ứng dụng 3D mà cần chuyển đổi thành các mô hình khác như lưới đa giác, NURBS, hoặc mô hình CAD thông qua quá trình tái tạo bề mặt Việc chuyển đổi này giúp tối ưu hóa dữ liệu cho các ứng dụng 3D cụ thể.

Biểu diễn một đám mây điểm

Thư viện đám mây điểm PCL hỗ trợ nhiều định nghĩa điểm, từ cấu trúc đơn giản như PointXYZ, XYZI, XYZRGB đến các cấu trúc phức tạp hơn như PointXYZNormal, PFH, và FPFH PointXYZ, loại đơn giản nhất gồm 3 tọa độ float và padding, có thể gây lãng phí bộ nhớ trên nền tảng nhúng.

Do đó, một cấu trúc PointXYZ đơn giản hơn không có thành phần chấm động cuối có thể đƣợc sử dụng thay thế struct PointXYZ

Kiểu dữ liệu `PointXYZRGB` hoặc `PointXYZRGBA` mở rộng `PointXYZ` bằng cách thêm thành phần màu (dạng dấu chấm động) để biểu diễn điểm màu như trong thế giới thực Ví dụ, cấu trúc `PointXYZRGBA` có thể được khai báo trong C++ như sau: (…thêm ví dụ code nếu cần).

Chương 4: Tái tạo mô hình 3D 31 SVTH: T.T Sơn - V.X Xăng union

Các đám mây điểm có thể được lưu trữ trong ở đĩa dưới định dạng PCD của thư viện PCL

Bài viết này trình bày khả năng chuyển đổi dữ liệu đám mây điểm sang các định dạng khác như PLY, tương thích với MeshLab và AutoCAD Dữ liệu có thể ở dạng ASCII hoặc binary Một ví dụ về file ASCII chứa thông tin màu RGB được cung cấp.

# PCD v0.7 – Point Cloud Data file format

Chương 4: Tái tạo mô hình 3D 32 SVTH: T.T Sơn - V.X Xăng

Mỗi điểm dữ liệu, thay vì thông tin màu sắc, có thể chứa giá trị cường độ, khoảng cách hoặc pháp tuyến.

Hình 4.5: Ví dụ về đám mây điểm PointXYZRGB (trái) và PointXYZ (phải) đƣợc hình dung dưới dạng màu xanh

Giai đoạn tiền xử lý đám mây điểm

Thu nhận dữ liệu đám mây điểm từ Kinect gặp nhiều khó khăn: lượng dữ liệu khổng lồ (640x480 điểm), ảnh hưởng từ vật thể hấp thụ hồng ngoại gây giảm độ tin cậy thông tin độ sâu, và nhiễu do mật độ điểm không đều và nguồn sáng hồng ngoại xung quanh.

Chương 4: Tái tạo mô hình 3D 33 SVTH: T.T Sơn - V.X Xăng Để thực hiện lọc dữ liệu, ta sử dụng thƣ viện pcl_filters , cho phép sửa đổi các đám mây điểm hay trích lọc các thuộc tính của các điểm Một đám mây điểm có thể bị lọc một phần sử dụng các điều kiện loại bỏ, loại bỏ các phần tử nhiễu sử dụng phương pháp thống kê, lọc màu, hay sử dụng bộ lọc không gian Ta cũng có thể lấy mẫu đám mây điểm sử dụng bộ lọc lưới, bộ lọc lưới xấp xỉ hay chỉnh sửa dữ liệu thông qua bộ lọc tương phản ( contrast filter ) hay bộ lọc làm trơn ( bilateral filter )

Bộ lọc không gian (PassThrough filter) loại bỏ đối tượng thừa trước/sau vật thể chính trong đám mây điểm, dựa trên ràng buộc trường dữ liệu (mặc định là trục Z của Kinect) Nó loại bỏ điểm không xác định và điểm ngoài vùng giới hạn (setFilterLimits()), chỉ lọc miền dữ liệu đã định nghĩa (setFilterFieldName()) Hướng lọc có thể thay đổi theo trục X hoặc Y Bộ lọc này giảm đáng kể số điểm không cần thiết, hỗ trợ quá trình phân đoạn và phân nhóm, giúp chọn lựa vùng quan tâm trong đám mây điểm để tái tạo mô hình 3D.

Hình 4.6: Ảnh hưởng của bộ lọc không gian lên đám mây ở bên trái Vùng không gian theo trục z đƣợc giữ lại trong khoảng từ 0.3 đến 1.1m

Chương 4: Tái tạo mô hình 3D 34 SVTH: T.T Sơn - V.X Xăng Ở hình 4.6 đã sử dụng bộ lọc không gian theo trục z, kết quả sau khi lọc vẫn còn một phần của bức tường mà ta không mong muốn giữ lại Để có thể loại bỏ tiếp những phần không quan tâm trong đám mây điểm chúng ta có thể linh hoạt sử dụng tiếp bộ lọc không gian theo trục x và cả trục y bằng cách gán giá trị phù hợp cho hàm setFilterLimits() Hình 4.7 là đám mây điểm sau khi tiếp tục qua bộ lọc không gian theo trục x

Hình 4.7: Ảnh hưởng của bộ lọc không gian lên đám mây ở bên trái Vùng không gian theo trục x đƣợc giữ lại trong khoảng từ -0.5 đến 1m

Bộ lọc lưới (VoxelGrid) giúp giảm số lượng điểm trong đám mây điểm sau lọc không gian, tối ưu hóa thời gian xử lý và giảm độ phức tạp thuật toán, đặc biệt hữu ích khi xử lý nhiều đám mây điểm ghép nối.

Volumetric pixel (voxel) grids chia không gian 3D thành các khối lập phương hoặc khối hộp chữ nhật 3D Bộ lọc lưới này gộp các khối lập phương chứa đủ số điểm thành một điểm tại trọng tâm, cho phép biểu diễn bề mặt chính xác hơn nhưng tốn nhiều thời gian xử lý hơn so với phương pháp sử dụng tâm voxel.

Chương 4: Tái tạo mô hình 3D 35 SVTH: T.T Sơn - V.X Xăng

Tùy thuộc vào mật độ của các điểm trong đám mây điểm, ta thiết lập kích thước

Kích thước "leaf size" tương đương với độ dài cạnh của khối pixel Leaf size lớn dẫn đến mật độ điểm sau lọc giảm Hình 4.8 minh họa "leaf size" là 0.01 (m), bao gồm ảnh màu và ảnh đơn sắc trước và sau khi lọc lưới.

Hình 4.8: Đám mây điểm trước và sau khi áp dụng bộ lọc lưới với leaf size là 0.005

4.3.2 Phân đoạn và phân nhóm vật thể

Bài viết này trình bày quá trình phân đoạn và phân nhóm dữ liệu điểm trong đám mây điểm, hai khái niệm tương đồng và có thể thay thế cho nhau trong một số trường hợp Cả hai đều hỗ trợ lẫn nhau, được thực hiện song hành để tối ưu hóa tài nguyên tính toán cho các thuật toán xử lý tiếp theo.

Thư viện PCL `pcl_sample_consensus` cung cấp các thuật toán đồng thuận mẫu như RANSAC, hỗ trợ phát hiện đường thẳng, mặt phẳng, trụ và cầu trong đám mây điểm Kết hợp các thuật toán này giúp tìm mô hình và thông số tương ứng.

Mô hình mặt phẳng hiệu quả trong dò tìm bề mặt phẳng như tường, sàn, bàn Các mô hình khác ứng dụng cho việc dò tìm và phân đoạn đối tượng có cấu trúc hình học cụ thể, ví dụ như nhận diện hình trụ của chiếc ly.

Chương 4: Tái tạo mô hình 3D 36 SVTH: T.T Sơn - V.X Xăng

Bài viết tập trung vào phân đoạn mặt phẳng trong đám mây điểm 𝒫 vì đây là cấu trúc chiếm nhiều điểm dữ liệu Sau khi loại bỏ các đối tượng không cần thiết phía sau vật thể chính, mặt phẳng sàn vẫn còn Phân đoạn này giúp tách riêng mặt phẳng sàn (𝒫∗) để thu được đám mây điểm chứa vật thể chính Tuy nhiên, cần đảm bảo mặt phẳng dưới vật thể là mặt phẳng lớn nhất trước khi lọc, tránh nhầm lẫn với các mặt phẳng khác (ví dụ: tường) dẫn đến loại bỏ sai.

Hình 4.9: Đám mây điểm đƣợc phân đoạn và phân nhóm thành nhiều vật thể khác nhau

Thuật toán RANSAC để dò tìm mặt phẳng [9]

RANSAC (RANdom SAmple Consensus) là thuật toán lặp xác định các tham số mô hình toán học từ dữ liệu chứa ngoại lai, đảm bảo kết quả hợp lý với xác suất tăng theo số vòng lặp Được Fischler và Bolles giới thiệu năm 1981, RANSAC tạo ra ước lượng đáng tin cậy.

Chương 4: Tái tạo mô hình 3D 37 SVTH: T.T Sơn - V.X Xăng

Hình 4.10 minh họa thuật toán 2D RANSAC: bên trái là dữ liệu có điểm ngoại lai, bên phải là đường thẳng được xác định bởi RANSAC, không bị ảnh hưởng bởi điểm ngoại lai Thuật toán cần 4 dữ liệu đầu vào.

Độ chính xác của đám mây điểm, thu được từ máy đo, phụ thuộc vào sai số khoảng cách (d) giữa mặt phẳng đã chọn và các điểm còn lại trong đám mây điểm.

Số lượng điểm tối đa cùng thuộc một mặt phẳng, Ω𝑓, được xác định dựa trên mật độ điểm và số mặt phẳng gốc tối đa dự đoán được.

Giai đoạn liên kết đám mây điểm

Quá trình liên kết đám mây điểm (Registration) là việc sắp xếp nhiều đám mây điểm khác nhau thành một mô hình 3D hoàn chỉnh.

Bài viết trình bày phương pháp tái tạo mô hình 3D vật thể bằng thuật toán ICP kết hợp SAC-IA Mục tiêu là định hướng các đám mây điểm từ nhiều góc nhìn về cùng hệ tọa độ, tạo sự chồng khớp hoàn hảo giữa các khu vực giao nhau Phương pháp này tối ưu hóa chất lượng ghép nối, giảm sai số, rút ngắn thời gian thực thi và đảm bảo tính toàn vẹn của mô hình 3D, dựa trên việc theo dõi chỉ số Euclidian Fitness score.

Chương 4: Tái tạo mô hình 3D 42 SVTH: T.T Sơn - V.X Xăng

Thuật toán ICP hiệu chỉnh hai đám mây điểm cùng định hướng bằng cách tối thiểu hóa khoảng cách Euclid, được Besl và McKay đề xuất ICP tìm các cặp điểm tương ứng có khoảng cách nhỏ hơn ngưỡng nhất định, ước lượng phép biến đổi tối ưu, và lặp lại quá trình cho đến khi sự thay đổi giữa các phép biến đổi liên tiếp nhỏ hơn một giới hạn hoặc đạt số vòng lặp tối đa.

Giải thuật ICP được trình bày chi tiết trong tài liệu tham khảo [10] Bài viết này mô tả các bước của thuật toán, với 𝓠 là đám mây điểm cần ghép nối và 𝓟 là đám mây điểm tĩnh.

1 Với tất cả các điểm 𝑞 ∈ 𝒬, tìm điểm lân cận gần nhất 𝑝 ∈ 𝒫

2 Tìm phép biến đổi cứng, một phép quay trực giao 𝑹 và một phép tịnh tiến 𝒕 để tối thiểu hóa bình phương khoảng cách giữa các cặp điểm lân cận (liệt kê theo 𝑖): min 𝑹,𝒕 𝑅𝑞 𝑖 𝑖 + 𝑡 − 𝑝 𝑖 2 (4.3)

3 Áp dụng phép biến đổi cho 𝒬

4 Lặp lại cho đến khi thuật toán hội tụ hoặc đến khi đạt đƣợc kết quả mong muốn Giải thuật có một số điều kiện để kết thúc:

 Số vòng lặp tiến đến số vòng lặp tối đa mà người sử dụng đặt trước (thông qua setMaximumIterations)

 Sự sai lệch (epsilon) giữa phép biến đổi trước và phép biến đổi ước lượng hiện tại nhỏ hơn giá trị do người dùng định trước (thông qua setTransformationEpsilon)

 Tổng của bình phương sai số Euclide nhỏ hơn ngưỡng do người sử dụng quy định (thông qua setEuclideFitnessEpsilon)

Chỉ số Euclidian fitness score (tổng bình phương khoảng cách nguồn-mục tiêu) đánh giá chất lượng ghép nối ICP Chỉ số này tiến gần 0 khi ghép nối hoàn hảo Theo dõi chỉ số Euclidian là yếu tố then chốt đảm bảo chất lượng ghép nối trong phương pháp ICP.

Chương 4: Tái tạo mô hình 3D 43 SVTH: T.T Sơn - V.X Xăng

Hình 4.14: Kết quả ghép nối hai đám mây điểm dùng ICP

Hình 4.14 , phía bên trái là hai đám mây điểm thu đƣợc từ hai góc nhìn cách nhau khảng

Thuật toán ICP ghép nối hai đám mây điểm thành công với độ lệch 20 độ, đạt chỉ số Euclidian fitness score 0.00024792 nhờ diện tích trùng lặp đủ lớn Kết quả ghép nối với góc lệch lớn hơn cho chỉ số 0.000783823, vẫn chấp nhận được.

Chương 4: Tái tạo mô hình 3D 44 SVTH: T.T Sơn - V.X Xăng

Hình 4.15: Kết quả ghép nối hai đám mây điểm dùng ICP khi góc lệch hai đám mây điểm gần bằng 30 độ

Góc lệch lớn giữa hai đám mây điểm dẫn đến chỉ số Euclidian fitness score nhỏ, giảm độ chính xác ghép nối Khi sự khác biệt định hướng quá lớn, thuật toán ICP hội tụ vào cực tiểu cục bộ, gây ra kết quả ghép nối kém dù tăng số vòng lặp Hình 4.16 minh họa trường hợp này: chỉ số fitness score giảm mạnh và ghép nối không chính xác.

Chương 4: Tái tạo mô hình 3D 45 SVTH: T.T Sơn - V.X Xăng

Phương pháp ICP đơn thuần gặp khó khăn khi ghép nối hai đám mây điểm có góc lệch lớn (Hình 4.16) Để khắc phục, ta sử dụng chỉ số Euclidian fitness score: nếu vượt quá ngưỡng cho phép, ghép nối thô bằng SAC-IA được thực hiện trước khi dùng ICP để giảm góc lệch giữa hai đám mây điểm.

4.4.2 Phương pháp ghép thô SAC-IA

Phương pháp SAC-IA (Sample Consensus Initial Alignment) gồm ba bước chính: ước lượng vector pháp tuyến bề mặt, ước lượng đặc tính đám mây điểm, và cuối cùng là thuật toán đồng nhất mẫu ngẫu nhiên SAC-IA Việc ước lượng đặc tính đám mây điểm phụ thuộc vào kết quả ước lượng vector pháp tuyến bề mặt.

4.4.2.1 Ƣớc lƣợng vector pháp tuyến bề mặt

Tập điểm lân cận Pk của điểm pq giúp ước lượng đặc tính cục bộ bề mặt vật thể Xác định định hướng bề mặt, cụ thể là pháp tuyến, rất quan trọng trong biểu diễn hình học Pháp tuyến bề mặt được ứng dụng rộng rãi, ví dụ trong đồ họa máy tính để tạo bóng và hiệu ứng hình ảnh.

Chương 4: Tái tạo mô hình 3D 46 SVTH: T.T Sơn - V.X Xăng

Ước lượng pháp tuyến bề mặt đơn giản nhất sử dụng phương pháp điều chỉnh mặt phẳng 3D bậc nhất (theo [11]) Xác định pháp tuyến tại một điểm tương đương với ước lượng vector pháp tuyến của mặt phẳng tiếp tuyến, trở thành bài toán ước lượng mặt phẳng bình phương tối thiểu trong 𝑃𝑘 Khoảng cách từ điểm 𝑝𝑖 ∈ 𝒫𝑘 đến mặt phẳng (với vector pháp tuyến 𝑛 và điểm 𝑥) là 𝑑𝑖 = (𝑝𝑖 − 𝑥)𝑛, trong đó 𝑥 và 𝑛 được tính toán bằng phương pháp bình phương tối thiểu để 𝑑𝑖 = 0.

Phương trình (4.4) xác định 𝑥 = 𝑝 = 𝑘-1 Σ𝑘𝑖=1 𝑝𝑖 là tâm của 𝑃𝑘 Nghiệm cho n được tìm bằng phân tích giá trị riêng và vectơ riêng của ma trận hiệp phương sai 𝒞 ∈ ℝ3×3 của 𝑃𝑘.

Hệ số ξ thường bằng 1, thể hiện trọng số của pᵢ Ma trận C là ma trận đối xứng bán xác định dương với các giá trị riêng λⱼ ∈ ℝ và các vector riêng vⱼ tạo thành một cơ sở trực giao, tương ứng với các thành phần chính.

Với ma trận 𝒫𝑘 và 0 ≤ λ₀ ≤ λ₁ ≤ λ₂, vectơ riêng 𝑣 tương ứng với trị riêng nhỏ nhất λ₀ là xấp xỉ của vectơ pháp tuyến ±𝑛 = (𝑛𝑥, 𝑛𝑦, 𝑛𝑧) Vectơ pháp tuyến 𝑛 cũng có thể biểu diễn bằng cặp góc (φ, θ) trong hệ tọa độ cầu.

Giai đoạn cải thiện chất lƣợng đám mây điểm sau liên kết

4.5.1 Loại bỏ các phần tử nhiễu sử dụng phương pháp thống kê

Sau khi ghép nối, đám mây điểm có chất lượng kém do chồng chập Bộ lọc loại bỏ nhiễu thống kê (Statistical outlier removal) trong thư viện pcl_filters được sử dụng để xử lý Phương pháp này yêu cầu tối thiểu k điểm láng giềng, nhưng mật độ điểm không đồng đều gây ra vấn đề, đặc biệt ở bề mặt phản xạ cao hoặc giao tiếp giữa các bề mặt, dẫn đến điểm ngoại lai.

Loại bỏ điểm dữ liệu "nhảy cạnh" và không đồng nhất về độ sâu hoặc độ hấp thụ đường bao giúp tối ưu hóa thời gian xử lý bằng cách giảm số lượng điểm cần xử lý.

Hình 4.30: Đám mây điểm trước và sau khi áp dụng statistical outlier removal với

𝜇 𝑘 = 50 và 𝜎 𝑘 = 2 Giá trị 𝛼 đƣợc chọn là 1

Chương 4: Tái tạo mô hình 3D 66 SVTH: T.T Sơn - V.X Xăng

Nhiều phương pháp loại bỏ cạnh nhảy dựa trên phân đoạn hoặc cảm biến đặc biệt Tuy nhiên, một công thức thống nhất loại bỏ điểm trong vùng không gian mật độ thấp (do nhiễu) hiệu quả hơn.

Giải pháp dựa trên phân tích thống kê khoảng cách trung bình `d` tới k điểm lân cận gần nhất của mỗi điểm trong đám mây điểm 𝒫 Trung bình `μk` và độ lệch chuẩn `σk` của khoảng cách trung bình được tính toán Các điểm được giữ lại nếu khoảng cách trung bình `d` tương tự như khoảng cách đến các điểm còn lại, nhằm đo mật độ điểm Đám mây điểm còn lại 𝒫* được ước lượng dựa trên điều này.

Công thức (4.28) 𝒫∗ = 𝑝𝑞∗ ∈ 𝒫: 𝜇𝑘 − 𝛼 ⋅ 𝜎𝑘 ≤ 𝑑∗ ≤ (𝜇𝑘 + 𝛼 ⋅ 𝜎𝑘) cho phép lọc dữ liệu dựa trên mật độ, với α là hệ số giới hạn Hình 4.30 minh họa hiệu quả lọc: tập dữ liệu ban đầu 𝒫 chứa nhiễu và vùng mật độ thấp, tập dữ liệu sau lọc 𝒫∗ loại bỏ các điểm này, cải thiện chất lượng dữ liệu.

Hình 4.31: Đám mây điểm sau khi đã loại bỏ bớt outliers

Chương 4: Tái tạo mô hình 3D 67 SVTH: T.T Sơn - V.X Xăng

4.5.2 Xử lý bề mặt dùng phương pháp Moving Least Squares

Kết hợp các đám mây điểm dẫn đến vùng chồng chập giữa 𝒫1 và 𝒫2 có mật độ điểm tăng gấp đôi, gây mật độ điểm không đồng nhất Điều này ảnh hưởng xấu đến việc ước lượng vector pháp tuyến và độ cong bề mặt tại vùng chồng chập.

Mô hình đám mây điểm thường gặp các vấn đề như mật độ không đồng nhất, vùng hai lớp do sai số quét, và lỗ trống do phản xạ hồng ngoại kém (ví dụ: bề mặt kim loại) Để khắc phục, ta chuẩn hóa tọa độ điểm trong đám mây điểm 𝒫 bằng đường chéo hình hộp bao quanh, tối đa hóa khoảng cách điểm Sau đó, tái tạo bề mặt trơn bằng kỹ thuật tái lấy mẫu (upsampling/downsampling) và loại bỏ điểm không mong muốn.

Công thức ℎ = 𝜇 𝑑 + 𝑘 ⋅ 𝜎 𝑑 tính toán độ cao (h) dựa trên khoảng cách trung bình (𝜇 𝑑 ) và độ lệch chuẩn (𝜎 𝑑 ) giữa các điểm trong đám mây điểm, với k là hệ số Để tái tạo bề mặt, tập điểm Q được lấy mẫu đều từ đám mây điểm P, lấp đầy lỗ trống bằng cách thêm điểm mới vào vùng phát hiện lỗ trống Điểm pq được xác định là biên lỗ trống nếu max 𝛼 ≥ 𝛼th, với 𝛼 là hiệu góc giữa các đường thẳng nối điểm pq với các điểm lân cận Cuối cùng, độ cao điểm so với mặt phẳng tham chiếu cần được giới hạn để đảm bảo điểm nằm gần bề mặt đám mây điểm.

Chương 4: Tái tạo mô hình 3D 68 SVTH: T.T Sơn - V.X Xăng hạn bằng một kích thước bước đơn vị Phương pháp lấp lỗ trống như giới thiệu trong [15],với điều kiện mọi lỗ trống có bán kính nhỏ hơn bán kính tới hạn sẽ đƣợc lấp đầy

Để lấp đầy lỗ trống trong đám mây điểm, các điểm được chiếu lên mặt phẳng tham chiếu cục bộ, ước lượng từ k điểm lân cận gần nhất của điểm truy vấn Sau đó, mỗi điểm dự đoán được khớp với bề mặt đám mây điểm bằng hàm đa thức hai biến trong hệ tọa độ Darboux cục bộ, gồm ba vector.

𝑢 , 𝑣 , 𝑛 vuông góc nhau, trong đó 𝑣 song song với vector pháp tuyến của mặt phẳng ƣớc lƣợng

Thuật toán xấp xỉ bề mặt đám mây điểm bằng đa thức hai biến xác định trọng số `𝑤ᵢ` (𝑖=1…𝑘) cho mỗi điểm `𝑞 ∈ 𝒬` dựa trên 𝑘 điểm lân cận gần nhất.

Tham số Gauss h trong công thức (4.31) điều chỉnh trọng số của các điểm lân cận, ảnh hưởng đến tỉ lệ giữa chúng Trên hệ tọa độ Darboux (u, v, n), giá trị x của hàm cao độ f(u,v|j) được tính toán từ tổ hợp tuyến tính của đa thức hai biến, với hệ số cⱼ, nhằm xấp xỉ bề mặt đám mây điểm trong vùng lân cận của q.

𝑛 𝑢,𝑣 = 𝑥 𝑗 =1 𝑐 𝑗 𝑓 𝑢,𝑣|𝑗 = 𝒇 𝑢,𝑣 𝑇 𝒄 (4.32) Để tính toán giá trị của các hệ số 𝑐 𝑗 người ta cực tiểu hóa hàm sai số:

Sau tái lấy mẫu, vector pháp tuyến bề mặt được ước lượng lại từ vector pháp tuyến của đa thức bậc hai xấp xỉ tại mỗi điểm trong Q Đa thức bậc hai thường đủ để xấp xỉ bề mặt do tính chất cong hoặc phẳng theo hướng nhất định của hầu hết đám mây điểm.

Trong Thư viện đám mây điểm, ta có bốn lựa chọn cho phương pháp xấp xỉ Moving Least Squares (MLS):

Chương 4: Tái tạo mô hình 3D 69 SVTH: T.T Sơn - V.X Xăng

Phương pháp làm trơn bề mặt MLS giữ nguyên kích thước đám mây điểm, chỉ thay đổi vị trí các điểm đến vị trí mới trên bề mặt đã được làm trơn bằng đa thức hai biến.

Hình 4.32 minh họa quá trình làm trơn đám mây điểm Đám mây điểm ban đầu (bên trái) chứa nhiễu, outlier, chồng chập và lỗ trống Phiên bản đã xử lý (bên phải) cho thấy kết quả làm mịn.

Nhận xét

Chất lượng liên kết đám mây điểm được đánh giá bằng Chỉ số khớp (Euclidian fitness score), là tổng bình phương khoảng cách giữa các cặp điểm tương quan Chỉ số này đạt yêu cầu nếu dưới 10⁻³, phụ thuộc vào diện tích chồng chéo và độ phức tạp bề mặt vật thể: diện tích chồng chéo càng lớn, bề mặt càng phức tạp thì fitness score càng thấp.

Kinect thu thập dữ liệu đối tượng tĩnh ổn định, đảm bảo liên kết đám mây điểm hiệu quả Tuy nhiên, với đối tượng động như cơ thể người, sự thay đổi tư thế gây biến dạng bề mặt, ảnh hưởng chỉ số fitness score Do đó, cần tăng vòng lặp ICP/SAC-IA và điều chỉnh thông số thuật toán.

Hình 4.36: Đám mây điểm thu được của cơ thể người (đối tượng động) từ 4 góc khác nhau

Chương 4: Tái tạo mô hình 3D 74 SVTH: T.T Sơn - V.X Xăng Đối với đối tượng là cơ thể người trong hình trên, mỗi góc quay của đối tượng làm rung động trang phục trên người, kéo theo sự thay đổi bề mặt ở các thời điểm khác nhau, theo kinh nghiệm nhóm lựa chọn chỉ số fitness score ngƣỡng là 0.001, là mức ngưỡng thấp nhất có thể chấp nhận được thông thường Kết quả ghép nối tương đối tốt khi tăng số vòng lặp trong giải thuật ICP và SAC-IA

Hình 4.37 minh họa kết quả ghép nối cơ thể người (đối tượng động) với ngưỡng fitness score 0.001, sử dụng thuật toán ICP + SAC-IA Số vòng lặp của thuật toán được thực hiện cũng được thể hiện trong hình.

Thuật toán SAC-IA hỗ trợ ICP cải thiện điểm fitness score nhưng làm tăng độ phức tạp do các bước ước lượng vector pháp tuyến, đặc tính đám mây điểm và ghép nối thô Việc xác định ngưỡng fitness score phù hợp phụ thuộc kinh nghiệm người dùng.

Chương 4: Tái tạo mô hình 3D 75 SVTH: T.T Sơn - V.X Xăng

Thuật toán ICP kết hợp SAC-IA hiệu quả trong việc tạo avatar 3D, giữ nguyên thông tin màu RGB ngay cả khi liên kết ít điểm đám mây, hạn chế sai số tích lũy.

Hình 4.38: Ghép nối đám mây điểm dùng ICP kết hợp SAC-IA giữ lại thông tin màu của các đám mây điểm.

Tái tạo bề mặt vật thể

Giới thiệu các phương pháp tái tạo bề mặt

Chương 4 trình bày chi tiết quy trình phục hồi mô hình 3D từ đám mây điểm đơn sắc Tuy nhiên, mô hình này chỉ thể hiện hình dạng, thiếu thông tin về độ nhẵn bề mặt Vì vậy, tái tạo bề mặt 3D nhẵn, bóng, không nhiễu là cần thiết Thư viện `pcl_surface` trong PCL cung cấp nhiều phương pháp tái tạo bề mặt khác nhau.

Thuật toán tái tạo bề mặt lưới đa giác bảo toàn đám mây điểm đầu vào, tạo lưới đa giác liên kết các điểm này, với số điểm bằng với đám mây điểm ban đầu Các thuật toán này có nhiều lớp thừa kế khác nhau.

 Organized Fast Mesh (chỉ dành cho các đám mây điểm không sắp xếp)

Tái tạo bề mặt là phương pháp tạo bề mặt hoặc lớp điểm mới, khác vị trí điểm trong đám mây điểm ban đầu Đầu vào là đám mây điểm, đầu ra là lưới đa giác với các điểm nằm ngay dưới đám mây điểm đó.

Bài viết trình bày hai phương pháp xây dựng lưới đa giác và tái tạo bề mặt từ dữ liệu đám mây điểm Kinect, sau khi xử lý khử nhiễu và lấp lỗ trống bằng phương pháp Moving Least Squares Quá trình này dựa trên kết quả liên kết đám mây điểm đã được mô tả ở chương 4.

 Hình dạng Alpha và chiếu tam giác hóa (Greedy projection triangulation) của lớp xây dựng lưới đa giác

Bài viết này trình bày về thuật toán chiếu lưới (Grid Projection) và Marching Cubes, hai phương pháp tái tạo bề mặt 3D được lựa chọn dựa trên chất lượng, hiệu năng và độ phổ biến.

Chương 5: Tái tạo bề mặt vật thể 78 SVTH: T.T Sơn - V.X Xăng

Các phương pháp xây dựng lưới đa giác

5.2.1 Cấu trúc dữ liệu lưới đa giác

Lưới đa giác là định dạng phổ biến lưu trữ mô hình 3D Mô hình gồm các đỉnh, cạnh, mặt và đa giác, trong đó mỗi đỉnh xác định vị trí, hai đỉnh tạo cạnh, ba cạnh tạo mặt khép kín.

Hình 5.1: Các thành phần trong mô hình lưới

Hình 5.2: Lưới đa giác được biểu diễn bằng phương pháp mặt – đỉnh để lưu trữ dữ liệu của các đỉnh, các cạnh và mặt

Chương 5: Tái tạo bề mặt vật thể 79 SVTH: T.T Sơn - V.X Xăng

Đa giác là tập hợp các mặt Tuy nhiên, do hầu hết hệ thống phối cảnh không hỗ trợ mặt đa hướng, đa giác thường được biểu diễn bằng nhiều mặt đơn giản.

Các bề mặt mịn bổ sung dữ liệu cho phép phối cảnh, cho phép tạo đối tượng tròn chỉ từ vài mặt Mỗi đa giác trong lưới đa giác gồm 3 đỉnh, và mỗi đỉnh có thể thuộc nhiều đa giác (Hình 5.2).

Hình 5.3 minh họa các nhóm hình dạng bất quy tắc trong không gian thuộc tính 2D, bao gồm nhóm dạng tròn, elip, bao lồi và dạng α Sự so sánh giữa các nhóm này được thể hiện rõ trong hình.

Edelsbrunner và Mucke đã giới thiệu khái niệm dạng 𝛼 (α-shapes) để định nghĩa và tính toán hình dạng của tập điểm hữu hạn trong không gian Euclid ba chiều.

Dạng α-shape là tổng quát hóa khái niệm bao lồi của tập điểm, thể hiện hình dạng từ thô đến chi tiết tùy thuộc tham số α (0 ≤ α ≤ ∞) Với α = ∞, dạng α-shape trùng với bao lồi Giảm α khiến dạng α-shape co lại, tạo ra các lỗ nhỏ và lỗ hổng Dạng α-shape là đa diện không nhất thiết lồi hay kín.

Chương 5: Tái tạo bề mặt vật thể 80 SVTH: T.T Sơn - V.X Xăng

Mô hình α-shape, theo Kaspar Fischer (2004), được ví như khối kem chứa nhiều mảnh chocolate Các điểm dữ liệu (chocolate) nằm trong không gian ℝd, tạo thành khối kem (α-shape) Thuật toán α-shape tạo ra các vùng không gian bao quanh dữ liệu mà không loại bỏ điểm dữ liệu nào, tạo ra vật thể không nhất thiết phải lồi, được giới hạn bởi các mặt cầu (hoặc tam giác và đoạn thẳng).

Hình 5.4: Một ví dụ về dạng 𝛼 trong không quan 2D (trong đó các “muỗng” hình cầu lúc này trở thành các “muỗng” đường tròn)

Dạng α-shape phụ thuộc vào tham số α, là bình phương bán kính của "muỗng" kem α nhỏ giúp ăn hết kem mà không chạm mảnh chocolate Do đó, dạng α-shape suy biến thành tập điểm S khi α đủ nhỏ.

𝛼 → 0 Mặt khác, giá trị 𝛼 quá lớn sẽ thì phần kem nằm trong bao lồi sẽ không thể đƣợc tách ra Do đó, dạng 𝛼-shape khi 𝛼 → ∞ là bao lồi của S

Dạng α-shape được định nghĩa dựa trên phương pháp tam giác hóa Delaunay (Phụ lục B) cho trường hợp thông thường và regular triangulation đối với trường hợp trọng số.

Chương 5: Tái tạo bề mặt vật thể 81 SVTH: T.T Sơn - V.X Xăng

Dạng 𝛼-shape thích hợp có thể đƣợc lựa chọn để tạo bề mặt 3D của vật thể vì các đặc tính:

 Họ dạng 𝛼-shape cho tập hợp 𝑛 điểm có thể đƣợc tính toán trong thời gian 𝑂(𝑛 2 )

Thông số α điều khiển mức chi tiết của mặt α-shape Giảm α làm nổi bật các đặc điểm bề mặt vật thể.

 Mỗi dạng 𝛼-shape có một tập hợp ký số, mỗi ký số đặc trƣng một đặc tính hình học hoặc tôpô nhƣ là hàm của 𝛼 [17]

Dạng α được lựa chọn vì hai lý do chính: khả năng tái tạo bề mặt đa dạng nhờ tính toán sẵn toàn bộ họ α-shape và các ký số, cho phép tinh chỉnh chi tiết bề mặt chỉ bằng tham số α mà không cần dữ liệu bổ sung; và khả năng kiểm soát tốt hơn điểm lấy mẫu dị hướng và xử lý tập điểm mật độ thấp bằng cách tối ưu hóa chi tiết bề mặt.

Giản đồ Voronoi 2D chia mặt phẳng thành các đa giác Mỗi đa giác chứa một điểm 𝑝ᵢ ∈ S, là điểm gần nhất với mọi điểm khác trong đa giác đó so với các điểm 𝑝ⱼ ∈ 𝑃ⱼ (j ≠ i).

Chương 5: Tái tạo bề mặt vật thể 82 SVTH: T.T Sơn - V.X Xăng

 Đầu vào: tập điểm 𝑃, đầu ra: 𝛼-shape của 𝑃

 Tính toán giản đồ Voronoi của tập 𝑃

 Với mỗi cạnh 𝑒 của giản đồ Voronoi xác định giá trị góc 𝛼 𝑚𝑖𝑛 (𝑒) và 𝛼 𝑚𝑎𝑥 (𝑒)

Dạng α-shape của P bao gồm cạnh e nếu αmin(e) ≤ α ≤ αmax(e) Tuy nhiên, tái tạo bề mặt bằng dạng α gặp khó khăn do cấu trúc phức tạp của không gian ẩn dạng α, thậm chí hình xuyến đơn giản cũng có thể chứa các mặt, lỗ trống hoặc tứ diện gần phẳng, trái ngược với bề mặt đa tạp 2D cần tái tạo Thách thức chủ yếu là lọc các mặt đơn hình từ α-shape bằng cách áp dụng các điều kiện toàn cục, ví dụ như yêu cầu mặt tạo thành đa tạp 2D.

Hình 5.6: Tái tạo bề mặt dùng dạng 𝛼 cho kết quả tốt, không nhiễu và không có lỗ trống với

Chương 5: Tái tạo bề mặt vật thể 83 SVTH: T.T Sơn - V.X Xăng

Thuật toán alpha mạnh mẽ, linh hoạt tái tạo bề mặt vật thể (bao lồi, bao lõm) chi tiết, hạn chế tối đa nhiễu và lỗ trống.

5.2.2 Phương pháp chiếu tam giác hóa

Tái tạo vật thể 3D thường sử dụng thuật toán tam giác hóa (triangulation) để kết nối các điểm trong đám mây điểm, tạo thành các tam giác liên kết với nhau Mặc dù mọi tập điểm đều tạo được lưới tam giác, số lượng tam giác có thể rất lớn và phức tạp, nhưng một bề mặt hữu hạn từ các tam giác này được gọi là compact.

Các phương pháp tái tạo bề mặt

Thuật toán chiếu lưới (Grid Projection) tái tạo vật thể 3D bằng cách chia không gian thành các voxel, xây dựng trường vector hướng về điểm gần nhất trong đám mây điểm Bề mặt được xác định từ các voxel có vector hướng ngược chiều nhau, với cạnh được xác định và cell đệm được thêm vào Tâm các voxel được chiếu dựa trên giao điểm cạnh, tạo thành bề mặt bằng cách nối các tâm điểm này.

Hình dưới đây mô tả trực quan cho giải thuật chiếu lưới

Chương 5: Tái tạo bề mặt vật thể 86 SVTH: T.T Sơn - V.X Xăng

Hình 5.9 minh họa thuật toán chiếu lưới xấp xỉ bề mặt ẩn (xanh lam) và tạo bề mặt đơn hình (xanh lá) bằng cách định hướng và điều chỉnh độ lớn các vector (cam) tại hai đầu cạnh cắt của đám mây điểm.

Lưới voxel bao quanh tập hợp điểm 𝒫 được tạo trước Tại mỗi đỉnh voxel, một vector hướng về điểm 𝑝ᵢ ∈ 𝒫 được xây dựng (Hình 5.10 minh họa dữ liệu đầu vào và các cell đệm).

Chương 5: Tái tạo bề mặt vật thể 87 SVTH: T.T Sơn - V.X Xăng

Hình 5.11: Vector tại đỉnh các voxel

Để xác định các cạnh của một voxel, ta đánh dấu cạnh nào có các vector đầu mút ngược chiều nhau Khoảng cách từ mỗi đỉnh đến bề mặt vật thể được tính toán bằng cách tối thiểu hóa hàm năng lượng V của trường vector F.

Hình 5.12: Các vector có hướng ngược nhau quanh các voxel chứa các điểm thuộc đám mây điểm

Chương 5: Tái tạo bề mặt vật thể 88 SVTH: T.T Sơn - V.X Xăng

Dùng các đỉnh và các vector đó, ta xấp xỉ đƣợc giao điểm của cạnh và bề mặt đám mây điểm

Hình 5.13: Các cạnh nối đỉnh chứa vector ngƣợc chiều nhau

Tâm mỗi voxel được xác định là trung bình tọa độ các giao điểm giữa bề mặt đám mây điểm và cạnh voxel.

Hình 5.14: Các cạnh có giao điểm với bề mặt và tâm của voxel

Bề mặt xấp xỉ được tạo ra bằng cách lưới đa giác nối các điểm hình chiếu của tâm lên bề mặt đám mây điểm, dựa trên các cạnh đã được đánh dấu Quá trình này không yêu cầu xây dựng mô hình phức tạp.

Chương 5: Tái tạo bề mặt vật thể 89 SVTH: T.T Sơn - V.X Xăng hàm toàn cục cho cả bề mặt trong và bề mặt ngoài, phương pháp này có thể xử lý được bề mặt có biên miễn là xây dựng được trường vector thích hợp (hình 5.15)

Thuật toán sử dụng hai trường vector: trường gradient và trường vector lân cận cục bộ, với trường vector lân cận cục bộ cho thời gian xử lý nhanh hơn Hình 5.15 minh họa hình chiếu tâm voxel lên bề mặt đám mây điểm và quá trình tạo bề mặt.

Mô hình gradient, được tính toán từ trường khoảng cách, vượt trội hơn phương pháp lân cận cục bộ nhờ khả năng xử lý bề mặt có biên.

Độ phân giải lưới ảnh hưởng trực tiếp đến chất lượng mô hình 3D, đặc biệt ở vùng cong lớn dễ gây lỗ trống do thay đổi nhanh chóng của trường vector Lưới bát phân (octree) khắc phục được vấn đề này nhưng tốn nhiều thời gian xử lý hơn Thuật toán sử dụng hai thông số đầu vào: độ phân giải lưới và số lượng padding cell Mặc dù hiệu quả tương đương thuật toán alpha shape, thuật toán chiếu lưới lại tiêu tốn nhiều thời gian tính toán hơn.

Chương 5: Tái tạo bề mặt vật thể 90 SVTH: T.T Sơn - V.X Xăng

Hình 5.16: Tái tạo bề mặt dùng thuật toán chiếu lưới cho kết quả rất đẹp, không nhiễu và không lỗ trống

Thuật toán Marching Cubes của Lorensen và Cline [22] tạo lưới tam giác cho mặt đồng mức từ trường vô hướng, nổi bật bởi sự đơn giản, tốc độ xử lý nhanh nhờ bảng tra cứu, và ứng dụng rộng rãi trong tái tạo ảnh y học 3D (MRI) và tạo đường bao 3D từ lưới voxel.

Thuật toán dựng hình Marching Cubes hoạt động trên trường vô hướng, chia không gian thành các khối lập phương (voxel) Mỗi voxel được xác định bởi giá trị pixel tại 8 đỉnh Nếu voxel chứa cả pixel có giá trị nhỏ hơn và lớn hơn giá trị ngưỡng (isovalue), thì bề mặt đẳng trị sẽ đi qua voxel đó.

Chương 5: Tái tạo bề mặt vật thể 91 SVTH: T.T Sơn - V.X Xăng biết rằng khối lập phương phải chứa thành phần của bề mặt đồng mức Bằng cách xác định cạnh nào của khối cầu cắt mặt đồng mức, ta có thể tạo các tam giác chia khối lập phương làm hai phần, phần bên trong và phần bên ngoài bề mặt Kết nối các tam giác này từ các voxel lại với nhau, ta có đƣợc bề mặt vật thể

Đám mây điểm không phải trường vô hướng Hoppe và cộng sự [34] đề xuất dùng hàm khoảng cách có dấu `d_U(x)` để chuyển đổi đám mây điểm thành trường vô hướng, xác định khoảng cách từ điểm `x ∈ ℝ³` đến mặt `S` của đám mây điểm `𝒫`.

− inf 𝑝∈S 𝑑(𝑥, 𝑝) nếu 𝑥 ∈ 𝑆 𝑜 (5.1) với 𝑆 𝑖 , 𝑆 𝑜 lần lƣợt là mặt trong và mặt ngoài của 𝑆

Như vậy, thuật toán marching cubes gồm có hai bước cơ bản: xác định hàm khoảng cách có dấu và tạo lưới tam giác

Để tính hàm khoảng cách có dấu, ta xác định cho mỗi điểm 𝑥ᵢ ∈ ℝ³ thuộc khối lập phương, điểm 𝑝ⱼ ∈ 𝒫 có khoảng cách 𝑑(𝑥ᵢ, 𝑝ⱼ) ngắn nhất Từ đó, xác định mặt phẳng tiếp xúc 𝑇(𝑝ⱼ) với các điểm lân cận của 𝑝ⱼ và suy ra hàm khoảng cách.

Bề mặt cần tái tạo đƣợc hình thành ở những vị trí có hàm khoảng cách dấu đƣợc nội suy mà ở đó, hàm nhận giá trị không (0)

Nhận xét các thuật toán tái tạo

Bốn thuật toán tái tạo bề mặt đều cho kết quả tốt về hình dạng cơ bản Thuật toán alpha tạo bề mặt chi tiết, trơn mượt, thời gian xử lý nhanh Chiếu lưới tạo bề mặt rất trơn nhưng thời gian xử lý lâu Tam giác hóa giữ màu sắc tốt nhưng cơ chế trám lỗ còn hạn chế Marching cubes đơn giản, nhanh nhưng bề mặt không chi tiết hoặc trơn.

Thuật toán MLS tối ưu cho tái tạo bề mặt bằng marching cubes là SAMPLE LOCAL PLANE, nhưng với NONE (nếu registration tốt) và VOXEL GRID DILATION cũng hiệu quả do đảm bảo khoảng cách giữa các điểm Tuy nhiên, SAMPLE LOCAL PLANE dẫn đến mật độ điểm cao, tăng thời gian clustering gần 1 phút so với các thuật toán tam giác hóa và Alpha Clustering giúp khử nhiễu và loại bỏ vùng điểm thấp, không thuộc bề mặt cần tái tạo.

Hai phương pháp tạo bề mặt phổ biến nhất là hình dạng alpha (ưu tiên tốc độ xử lý, bề mặt chấp nhận được) và chiếu lưới (đảm bảo bề mặt hoàn hảo nhất).

Công nghệ tạo ảnh 3D đang được ứng dụng rộng rãi trong việc tái tạo bề mặt 3D các bộ phận cơ thể người, cho ra những kết quả hình ảnh ấn tượng.

Chương 5: Tái tạo bề mặt vật thể 95 SVTH: T.T Sơn - V.X Xăng

Hình 5.21: Tái tạo bề mặt 3D cơ thể người: ngực và đầu, sử dụng dạng alpha và chiếu tam giác

Chương 5: Tái tạo bề mặt vật thể 96 SVTH: T.T Sơn - V.X Xăng Hình 5.22: Tái tạo mô hình 3D một phần cơ thể người: ngực và bụng Từ trái qua, sử dụng dạng alpha, chiếu lưới và chiếu tam giác.

Ngày đăng: 29/01/2024, 21:44

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w