경로 추적에 텐트 필터를 사용하는 이유는 무엇입니까?


12

C 경로 추적 프로그램 Smallpt 의 99 행은 렌더링하려는 각 픽셀에 대해 2x2 서브 픽셀 격자를 렌더링 한 다음 텐트 필터를 사용하여 결합합니다.

여기 에 코드를 설명하는 흥미로운 프레젠테이션이 있으며 텐트 필터는 언급하지만 그 이유는 설명하지 않습니다.

이 경우 텐트 블러가 박스 블러 (샘플 평균화)에 비해 왜 바람직한 이유를 설명 할 수 있습니까?

쌍 입방 형 은둔 보간과 같은 텐트 필터보다 나은 것을 사용하는 것이 더 좋을까요?

답변:


13

이산 적으로 샘플링 된 데이터에 대한 이론적 이상적인 앤티 앨리어싱 필터는 sinc 필터입니다 . 이는 나이키 스트 주파수보다 높은 모든 주파수를 완벽하게 제거하는 동시에 모든 하위 주파수는 그대로 둡니다. 따라서 어느 정도까지는 더 좋은 품질의 이미지를 생성하기 위해 sinc 필터와 더 유사한 앤티 앨리어싱 필터를 기대할 수 있습니다.

텐트 필터 (삼각형 필터)는 박스 필터보다 sinc 필터의 중심 피크와 확실히 유사합니다.

sinc, 삼각형 및 상자 필터

이중 입방체 필터 (예 : Mitchell-Netravali)는 처음 두 개의 음수 로브를 포함하여 더 정확하게 사인의 모양을 포착 할 수 있습니다.

앨리어싱 (aliasing), 오버 블러 링 (overblurring) 및 링잉 (ringing)과 같은 "비 이상적인"앤티 앨리어싱 필터에 의해 생성 될 수있는 다른 종류의 아티팩트가 있기 때문에 필터 선택의 현실은 "가능한 대략적인 사인뿐만 아니라"보다 조금 미묘합니다. 또한, 상이한 필터는 계산 비용이 다소 비쌀 수있다. 따라서 서로 다른 유물과 성능을 서로 상충하려는 게임입니다. 다른 장면 / 이미지는 하나의 선택 또는 다른 선택을 선호 할 수 있으며 부분적으로 미적 판단이기도합니다.

smallpt가 특히 텐트 필터를 사용하는 이유에 관해서는 성능 (평가하기위한 빠른 필터)과 간결함의 조합을 추측합니다. 두 줄의 코드로 수행 할 수 있지만 bicubic 필터는 더 많은 것을 취할 것입니다 암호.

또한 smallpt는 실제로 2x2 하위 픽셀 격자를 사용하고 각 하위 픽셀에 텐트 필터 배치 한 다음 4 개의 하위 픽셀의 결과를 평균화합니다. 따라서 전체 효과는 흥미롭게도 네 개의 텐트의 합계에 영향을 미치며 평평한 꼭대기가있는 피라미드처럼 보입니다.

서브 픽셀 텐트 필터

이것이 의도적 인 것인지 확실하지 않거나 방금 해결 된 방식으로 발생했습니다. 내 생각에 이것은 픽셀 당 단일 텐트 필터를 사용했을 때보 다 (더 좁은 지원으로 인해) 이미지가 다소 선명하지만 더 눈에 띄는 앨리어싱입니다.


고마워요! 실제로, 나는 이것을 4 계층의 계층화 된 샘플링으로 이해합니다. 그리고 9, 16과 같이 "strata"의 수를 사용자 정의 할 수 있습니다. 이제는 "사다리꼴"필터 (다른 렌더러에서는 일반적이지 않음)라는 것을 알고 있습니다. 그리고 나의 "strata"의 수가 무한대 인 경향이 있기 때문에, 필터는 박스 필터가되어 백합을 그리고 있습니다 ... 흥미 롭습니다!
chaosink

3

Bilinear 보간에 관한 Wikipedia 기사를 보았습니다. 텐트 필터는 일종의 쌍 선형 보간입니다. 쌍 선형 보간은 2 차원에서 보간됩니다. 먼저 한 차원에서 선형으로 보간 한 다음 다른 차원에서 보간합니다.

여기에 이미지 설명을 입력하십시오

이 그림을 볼 때 먼저 열과 행에서 사진을 찍습니다.

이것이 평균 색상보다 나은 이유는 포인트 중 하나가 다른 포인트보다 중앙에 더 가까워지면 최종 색상에 더 많이 기여하기 때문입니다. 색상을 평균하면 한 점이 다른 점보다 중앙에 더 가까이 있더라도 모든 점이 동일하게 기여합니다.

4 개의 점이 모두 중심에서 같은 거리에 고정 된 위치에있는 경우 모든 점에 대해 정확히 25 %의 기여도를 얻습니다. 이는 평균과 같습니다.

즉, 4 배 더 높은 해상도로 렌더링 한 다음 다운 샘플링하여 앤티 앨리어싱을 구현할 수 있습니다. 두 가지 방법의 결과는 내가 이해하는 한 동일해야합니다.

어떤 필터를 사용해야합니까? 글쎄, 그것은 당신이 원하는 것과 상황에 달려 있습니다. 샘플에 대해 임의의 하위 픽셀 위치를 선택하면 쌍 선형 보간을 사용하는 것이 좋습니다. 모든 점이 고정되어 있고 더 높은 해상도로 렌더링하면 평균화가 유용 할 수 있습니다. 결국 이것은 일반적으로 거의 알지 못하거나 거의 알아 차리지 못하는 하위 픽셀 일뿐이므로 AA 인 경우 종류가 충분하면 충분합니다. 하지만 그것은 저의 의견 일 것입니다. 아마도 3D 애니메이션의 일반 시청자 나 그와 비슷한 의견 일 것입니다.

Bicubic 보간은 더 매끄럽게 보입니다. 바이 큐빅 : 여기에 이미지 설명을 입력하십시오

쌍 선형 : 여기에 이미지 설명을 입력하십시오

어떤게 더 좋아? 글쎄, 그것은 당신이 좋아하는 것에 달려 있으며, 큰 차이가있을 것이라고 생각하지 않습니다.

내 출처 : https://en.wikipedia.org/wiki/Reconstruction_filter#Image_processing

https://ko.wikipedia.org/wiki/Bilinear_interpolation

https://ko.wikipedia.org/wiki/Bicubic_interpolation

(이미지는 Wikipedia에서 제작되었으며 공개 도메인입니다)

나는 이것이 도움이되기를 희망한다. 나는 이것에 대해 전문가가 아니라고 말하고 싶다. 나는 단지 컴퓨터 그래픽 물건을 좋아하는 사람 일 뿐이다. 내가 실수했을 수도 있습니다. 그렇다면 말씀해 주시면 변경하겠습니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.