ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Gaussian Filter
    Tech/Vision 2011. 12. 9. 03:11


     Image Processing에서 Convolution은 많은 연산량을 차지하고, Kernel의 Scale에 따라 그 연산량이 급격히 증가하므로 속도 향상을 위해서는 가장 먼저 해결해야할 문제거리다. 따라서 이러한 Convolution을 어떻게 수행할 것인가 하는 것은 빠른 Vision Processing Algorithm 수행을 위해 반드시 고려해야할 부분이다.


     이 중, Blurring 효과로 인하여 많이 사용하는 Gaussian Filter가 있다. Gaussian Filter는 기본적으로 유명한 아래 식을 따르며, 이를 convolution한다는 것은 정성적으로 말하자면 현재의 픽셀 값은 주위 값을 다소(아래 G(x,y)의 값만큼) 고려하여 픽셀 값을 새로 결정하겠다는 게 된다.




     보다시피 Gaussian Filter에서 결정해야할 파라미터는 바로 sigma가 된다. Convolution은 흔히 무한대 영역으로 수행하지만, Digital Filtering에서는 무한히 넓은 window를 설정하기가 사실상 불가능 하므로, 영역을 제한하게 된다. (오류가 거의 없을 만큼만) 이 때에 window size는 바로 저 sigma값에 의해 결정된다.

     저 sigma를 어떻게 설정하느냐에 따라 gaussian filter window의 사이즈도 결정되는 데, 일반적으로 sigma의 3배까지 고려하면 높은 정확도를 유지할 수 있다.

    계산해보면 알겠지만 x, y값이 sigma의 3배를 넘어가게되면 exponential값이 거의 0.011 수준으로 떨어지게 되는데, 이를 넘어서는 영역은 의미가 없다고 보는 것.

     예를 들어 sigma = 1.0 일 때, digital filter 값은 아래와 같다.

     0.0000 0.0002 0.0011 0.0018 0.0011 0.0002 0.0000
     0.0002 0.0029 0.0131 0.0215 0.0131 0.0029 0.0002
     0.0011 0.0131 0.0585 0.0965 0.0585 0.0131 0.0011
     0.0018 0.0215 0.0965 0.1592 0.0965 0.0215 0.0018
     0.0011 0.0131 0.0585 0.0965 0.0585 0.0131 0.0011
     0.0002 0.0029 0.0131 0.0215 0.0131 0.0029 0.0002
     0.0000 0.0002 0.0011 0.0018 0.0011 0.0002 0.0000

    이를 차례대로, pixel값과 곱하고, 더하는 연산을 통과하면 convolution 된 결과를 얻을 수 있다.


    이 외에도, discrete image filtering을 하는 방법에는 여러가지가 있다. 간단히 그 방법을을 나열하면,

    1. Gaussian을 직접 Sampling해서 discrete convolution하는 방법
    2. Uniform Square Kernel을 여러 번 Convolution하는 방법
    3. Impulse Response h[n]을 정의해서 Recursive Filter를 설계하는 방법.
     
      위 경우는 여기서 1번에 해당한다고 볼 수 있다. 2,3번에 대해서는 다음 포스팅에서 정리.

    댓글

Copyright 2022 JY