Tôi có một điểm đám mây thu được từ phép đo ảnh từ lưng của một người. Tôi đang cố gắng để nội suy nó để có được một lưới thường xuyên, và cho rằng tôi đang sử dụng scipy.interpolate
với kết quả tốt cho đến nay. Vấn đề là: hàm tôi đang sử dụng (scipy.interpolate.griddata
) sử dụng thân lồi của điểm mây trong mặt phẳng x, y, do đó cho kết quả là một số giá trị không tồn tại trong bề mặt ban đầu, có chu vi lõm.Chỉ nhận được các điểm "hợp lệ" trong nội suy 2D của điểm đám mây sử dụng Scipy/Numpy
Hình minh họa sau đây cho thấy điểm gốc ban đầu ở bên trái (những gì được hiển thị dưới dạng đường ngang thực sự là một đám mây có hình dạng điểm dày đặc), kết quả là griddata
mang lại cho tôi ở giữa và kết quả tôi muốn nhận được ở bên phải - loại "bóng tối" của cloudpoint trên mặt phẳng x, y, nơi các điểm không tồn tại trong bề mặt ban đầu sẽ là 0 hoặc Nans.
Tôi biết tôi có thể loại bỏ các Z phối hợp trên cloudpoint và kiểm tra từng vị trí lưới vì sự gần gũi, nhưng điều này là để brute-force, và tôi tin rằng đây sẽ là một vấn đề thường gặp trên các ứng dụng point-điện toán đám mây . Một khả năng khác có thể là một số thao tác vất vả để thực hiện trên đám mây điểm, tìm một mặt nạ sần hoặc mảng 2D boolean để "áp dụng" kết quả từ griddata
, nhưng tôi không tìm thấy bất kỳ (các hoạt động này vượt quá một chút Kiến thức Numpy/Scipy).
Bất kỳ đề xuất nào?
Cảm ơn bạn đã đọc!
Tôi đã bận rộn, nhưng câu trả lời của bạn như tôi đọc bây giờ (có đã gãi đầu của tôi rất nhiều) làm cho rất nhiều ý nghĩa. Cuối cùng, tôi đang sử dụng KDtree để thực hiện phép nội suy cho từng điểm lưới, thực hiện điều này: Tôi tạo ra một mạng lưới NaN; Tôi kiểm tra mỗi nút lưới, với kdtree, cho sự hiện diện của vùng lân cận (bỏ qua z phối hợp của cloudpoint); Nếu có vùng lân cận, nội suy bằng cách sử dụng Rbf (cuối cùng, griddata không tốt cho vấn đề này), và gán kết quả cho nút tương ứng của đầu ra. – heltonbiker