Các thuật toán để loại bỏ nhiễu tần số cao khỏi theo dõi đường dẫn


8

Tôi đã làm việc trên trình kết xuất của riêng mình được một thời gian và tôi tự hỏi liệu có cách nào để loại bỏ nhiễu Monte Carlo khỏi hình ảnh được kết xuất không, ngoài việc chờ đợi trong một thời gian dài để nó hội tụ?

Cách tôi tìm thấy là làm mờ hình ảnh, điều này không thực sự hữu ích, vì nó làm giảm chất lượng / độ sắc nét của hình ảnh rất nhiều. Và tôi có thể đạt được điều tương tự bằng cách hiển thị một hình ảnh nhỏ với nhiều mẫu hơn, sau đó nhân rộng nó lên.

Có thuật toán nào được thiết kế để xử lý nhiễu trong ảnh theo dõi đường dẫn không?


Bạn có quan tâm nhiều hơn đến việc xử lý bài để che giấu tiếng ồn, hoặc các cách tăng tốc độ hội tụ để ít nhiễu hơn?
trichoplax

1
FWIW, Benedikt Bitterli gần đây đã phát hành twitter.com/tunabrain/status/872174108385136640 dựa trên bài báo khử của mình.
Simon F

Trong khu vực hậu xử lý, có một thuật toán hay được gọi là bộ lọc song phương shadertoy.com/view/4dfGDH
narthex

Câu trả lời:


6

Có, và tôi mong muốn được xem chi tiết cụ thể của các câu trả lời khác, nhưng một cách để giải quyết vấn đề này là không có tiếng ồn (hoặc nhiều tiếng ồn) trong dữ liệu nguồn để bắt đầu.

Tiếng ồn xuất phát từ thực tế là có độ chênh lệch cao trong kết xuất - số lượng mẫu bạn đã lấy không hội tụ đủ với câu trả lời đúng thực tế của tích phân và vì vậy một số pixel quá cao / sáng và một số pixel là quá cao quá thấp / mờ (trong mỗi kênh màu).

Vấn đề là ở đây: Nếu bạn sử dụng các số ngẫu nhiên nhiễu trắng để lấy mẫu, bạn có thể lấy các mẫu tụ lại với nhau như hình ảnh bên dưới. Cho đủ mẫu, nó sẽ hội tụ, nhưng sẽ mất một lúc trước khi nó có độ bao phủ tốt trên không gian lấy mẫu. Tìm một vùng không gian trống trong hình ảnh bên dưới (như ở phía dưới bên phải) và tưởng tượng rằng có một ánh sáng nhỏ, sáng ở đó và cảnh đó tối ở mọi nơi khác. Bạn có thể thấy làm thế nào không có bất kỳ mẫu nào sẽ gây ra vấn đề cho kết xuất.

nhập mô tả hình ảnh ở đây

Thay phiên, bạn có thể lấy mẫu theo các khoảng thời gian chẵn như bên dưới, nhưng điều đó sẽ cung cấp cho bạn các tạo tác răng cưa thay vì tiếng ồn, điều này tệ hơn.

nhập mô tả hình ảnh ở đây

O(1/N)O(N)

Đây là một "lưới bị xáo trộn" nơi bạn lấy mẫu trên lưới, nhưng sử dụng các độ lệch ngẫu nhiên nhỏ trong một kích thước ô. Điều này đã được phát minh bởi pixar và đã được cấp bằng sáng chế trong một thời gian nhưng không còn: nhập mô tả hình ảnh ở đây

Dưới đây là một chuỗi chênh lệch thấp phổ biến được gọi là chuỗi Halton (về cơ bản là phiên bản 2d của Van Der Corpus)

nhập mô tả hình ảnh ở đây

Và đây là một mẫu lấy mẫu poisson, sử dụng thuật toán ứng cử viên tốt nhất của Mitchel:nhập mô tả hình ảnh ở đây

Thông tin chi tiết, bao gồm mã nguồn tạo ra những hình ảnh này có thể được tìm thấy ở đây: https://blog.demofox.org/2017/05/29/when-random-numbers-are-too-random-low-discrepancy- resultences /


3

Một kỹ thuật bạn có thể sử dụng là chia hình ảnh thành các khối và đo từng phương sai của khối - bằng cách này bạn có thể áp dụng nhiều mẫu hơn cho các khối có phương sai cao hơn.

Phương sai có thể được ước tính bằng cách sử dụng 2 bộ đệm tích lũy thay vì 1. Bạn kết xuất mỗi lượt vào một bộ đệm thay thế. Sự khác biệt tuyệt đối giữa các bộ đệm này (đối với mỗi khối) tỷ lệ thuận với phương sai. Sau khi trình bày ra màn hình, bạn có thể thêm hai bộ đệm lại với nhau để lấy lại bộ đệm tích lũy đầy đủ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.