Phương pháp lấy mẫu con Poisson – Disk

Một phần của tài liệu Trình diễn và tương tác mô hình 3d mộc bản trên nền web (Trang 32 - 35)

Phương pháp lấy mẫu con Poisson-Disk trong Potree được sử dụng để tạo ra các mẫu con cách đều nhau với khoảng cách tối thiểu giữa các điểm, mỗi nút lưu trữ một tập hợp con các điểm có độ phân giải nhất định. Hình 2.6 mô tả một số phương pháp lấy mẫu khác nhau, cấu trúc MNO sửdụng lưới ba chiều để lữu trữcác điểm mà nó rơi vào các ô trong lưới, phương pháp này đơn giản và nhanh chóng nhưng có nhược điểm là không tính đến khoảng cách tối thiểu giữa các điểm khiến các điểm trong ô liền kềđược chọn ngay cảkhi chúng nằm gần nhau. Các phương pháp lấy mẫu chất lượng cao hơn thì có khoảng cách giữa các điểm. Ví dụ: phương pháp lấy mẫu dựa trên lưới đã cải tiến của Entwine [11] sử dụng các điểm gần với tâm của các ô và có thể hoán đổi một điểm đã được xác định với một điểm mới nếu điểm mới gần tâm của ô hơn.

Hình 2. 6. Mô tả các phương pháp lấy mẫu trên cùng tập dữ liệu thô đầu vào.

Trong Potree sử dụng phương pháp lấy mẫu Poisson-Disk, mỗi điểm sẽ có khoảng cách tối thiểu đến những điểm khác, dữliệu được hiển thịtrực quan hơn so với phương pháp lấy mẫu theo lưới và cung cấp khảnăng bao phủtốt với sốlượng nhỏcác point cloud. Việc thiết lập khoảng cách tối thiểu giữa các điểm yêu cầu tính toán một cấu trúc phức tạp, Poisson-Disk dựa trên thuật toán ném phi tiêu, bằng cách tạo ngẫu nhiên ra các điểm rồi kiểm tra xem khoảng cách giữa các điểm vừa được tạo với các điểm được chấp nhận trước đó có đủ lớn không, nếu khoảng cách nhỏ sẽ bị loại bỏ. Một số thuật toán ném phi tiêu cải tiến cách thức tạo ra các điểm, và vị trí của các điểm mẫu để nâng cao hiệu suất, trong việc lấy mẫu con cho point cloud, Potree sử dụng tập mẫu cố định và chỉ xử lý các điểm quá gần nhau. Để giảm số lần tính toán khoảng cách giữa các điểm, họchia ra mỗi nút thành một lưới và chỉtính toán khoảng cách đến các điểm bên trong các ô giống nhau và liền kề. Lưới mẫuđược thiết kếdưới dạng mảng vì các point cloudthườngmô tảbề mặt, do đó chỉ một phần nhỏcác ô lưới chứacác điểm và giảm đi đáng kể bộ nhớ khi tính toán. Thư viện C++ cung cấp một hash maps là: unordered_map được dùng như một mảng ba chiều, mỗi ô lưu trữ các điểm được xác định và được tham chiếu đến các ô liền kề, nhanh chóng tham chiếu đến các điểm trong ô lân cận và không cần truy cập hash maps.

Các điểm mới được xác định nếu có khoảng cách nhỏnhất đến tất cả các điểm trong ô đó so với các điểm trong các ô liền kề. Trong quá trình tạo ôdữ liệu mới, các vùng xung quanh sẽđược kiểm tra, nếu có sẽđược thêm vào danh sách tham chiếu, và

các ô đã có cũng được bổsung tham chiếu ô mới. Kích thước của một ô là bất kỳgiá trịnào giữa khoảng cách và kích thước của chính ôđó, kích thước của ô bằng hoặc lớn hơn khoảng cách mới đảm bảo các điểm được kiểm tra và lưu trữ trong cùng một ô hoặc liền kề. Ban đầu giá trịkhoảng cách được lựa chọn phù hợp với kích thước của ô để giảm số lần kiểm tra xuống ít nhất nhưng sau đó Yin Fei [20] đã phát hiện ra rằng điều đó dẫn tới sửdụng nhiều bộ nhớkhông cần thiết và hiệu suất thấp, họ đề xuất sử dụng kích thước ô lớn để thay thế vì việc tăng kích thước ô sẽ giảm số lượng ô và giảm dung lượng bộnhớcần lưu trữkhi xửlý tính toán.

Hình 2. 7. Lưới kiểm tra khoảng cách.

Hình 2.7 Mô tả lưới kiểm tra khoảng cách, việc kiểm tra được thực hiện đối với các điểm bên trong giống nhau và các điểm bên trong các ô lân cận. Hình (a) quá trình kiểm tra ít nhưng lại sử dụng dung lượng bộ nhớ lớn và tính toán nhiều hơn, hình (b) quá trình kiểm tra nhiều nhưng sử dụng ít bộ nhớ và tính toánít hơn.Và đồng thờicho thấy ảnh hưởng của kích thước lưới khác nhau, khi bất cứ một điểm nào được thêm vào thì khoảng cách đến các điểm bên trong cùng một ô và các điểm tại ô lân cận được tính toán. Các điểm đạt khoảng cách tối thiểu thì sẽ được thêm vào lưới, và các điểm tiếp theo sẽđược kiểm tra khoảng cách với các điểm cũ đã được kiểm tra. Các ô chứa điểm được tạo và lưu trữ trong mảng, mỗi ô trong mảng chứa danh sách các điểm và danh sách các ô lân cận.

Một phần của tài liệu Trình diễn và tương tác mô hình 3d mộc bản trên nền web (Trang 32 - 35)