2017년에 출판된 이 논문은 최근의 Monte Carlo reconstruction 몇 안되는 고전적인 필터링 방식을 이용한 연구이다. 논문을 직접 보면 훌륭한 성능 향상을 가져왔으나, 논문의 기본적인 idea의 novelty를 인정받지 못하여 Computer Graphics Forum에 출판된 것으로 예상된다. 이 이야기는 후에 하고, 논문의 전반적인 이야기를 살펴보도록 하자.
연구의 요약
•
각 샘플의 World position과 이의 분산을 이용한 G-buffer의 노이즈 제거
•
위의 샘플 별 world position을 이용하여 픽셀 별 convariance matrix를 만들어 이를 통해 motion blurring과 같은 sample기반의 효과들에 대한 노이즈 제거
•
타 필터링 기반 노이즈 제거 방식에 preprocess로 추가하여 성능을 높힐 수 있음
문제 제시
2017년까지는 각 광선(sample)을 기반으로 한 Monte Carlo reconstruction 방식이 알려지지 않았다. 그래서 기존의 방식들은 Normal, Albedo, Texture와 같이 간단한 처리로 얻을 수 있는 정보(G-buffer)로부터 노이즈를 제거할 수 있는 필터나 알고리즘을 사용하였다. 전통적인 bilateral filtering, non-local means등이나 nonlinearly weighted first-order regression(NFOR) 등이 있다. 하지만 적은 샘플로부터 얻어진 렌더링 결과는 image 뿐만 아니라 이런 normal이나 albedo에도 노이즈를 생성한다. 이 정보들은 광선들의 반사된 정보를 통해서 얻어지는데, 총 광선의 양이 적어 확률적으로 편향될 수 있기 때문이다. 그렇기에 기존의 노이즈 제거 방식은 노이즈가 있는 정보들을 가지고 이미지에서 노이즈를 부정확하게 제거하였다.
사진들이 매끄럽지 못하고 점들이 모래처럼 흩어진 것이 노이즈이다.
여기에 단순한 G-buffer만을 이용한 노이즈 제거는 광선 기반의 효과인 모션 블러나 디포커스 등의 효과들에 대한 노이즈 제거에 좋지 않은 결과를 보여주었다.
그래서 본 연구는 비교적 노이즈가 적은 G-buffer를 노이즈 제거에 이용할 수 있도록 샘플 기반의 정보(world position)를 통해 G-buffer의 노이즈를 제거하는 방식을 제안한다.
G-buffer 노이즈 제거
1. Kernel을 이용한 필터링
본 연구는 Gbuffer에서 주변 픽셀들의 정보를 이용하여 노이즈를 제거하고자 한다. 하나의 픽셀의 노이즈를 제거하기 위해서 주변 약 7*7의 픽셀들의 contribution을 유추한다. 이는 공간적인 consistency를 보장할 수 있는 방식이다. 식으로 표현하자면 아래와 같다.
여기서 는 kernel을 의미하고 는 kernel의 픽셀을 의미한다.