Convolution filter 적용시 HW bilinear sampling 활용하기

a0008416_4ad440806e5de

실수 x 에 대한 샘플링 함수 F(x) 는 linear interpolation 되어 아래와 같은 형태로 나타낼 수 있다

F(x) = (1 - t) F(i) + t F(i + 1) 단, ix 의 정수부, tx 의 소수부

두개의 값을 convolution 하는 함수 C(i) 는 아래와 같이 나타낸다

C(i) = w(i) F(i) + w(i + 1) F(i + 1) 단, i 는 정수

이식을 다시

C(i) = m F(x)

라고 하면

w(i) = m (1 - t)
w(i + 1) = m t

미지수 m, t 에 대한 연립 방정식을 풀면

m = w(i) + w(i + 1)
t = \frac{w(i + 1)}{w(i) + w(i + 1)}

이 된다.

따라서 한번의 F(x) sampling 으로 F(i), F(i + 1) 의 convolution filter 된 동일한 결과값을 구할 수 있게 된다

이것을 활용하면..

1D 필터 커널을 거의 반으로 줄일 수 있다는 말이 된다.

참고 자료:
GPU Gems2 – Chapter 20. Fast Third-Order Texture Filtering
http://en.wikipedia.org/wiki/Gaussian_blur

Leave a Reply

Your email address will not be published. Required fields are marked *