본문 바로가기

SURF/LOG,DOG,Gaussian filter

Gaussian filter

가우시안 필터는 블러(Blur)효과를 내기위해서 사용된다. 인물사진을 포토샾으로 블러를 조금 한 다음에 밝기를 높여서  뽀샤시 효과를 했던 그 기술이겠다. 학부 때, 심심해서 레나영상을 가지고 했던 기억이 있는데, 지금 기억이 하나도 않난다. 가우시안 함수도 기억이 않난다...ㅜ.ㅜ 그래서 여기에 글을 남기고 기억해 두려고 한다. 비슷한걸로 mean필터니 뭐니~ 몇가지 있었던 것 같은데...기억이 않난다. ㅋㅋㅋ 

가우시안의 1d함수(1차원 함수)는 다음과 같다.
 

식에서 시그마는 가우시안그래프의 넓이를 나타내며, 1/루트2파이는 그래프의 높이를 나타낸다. 
 이걸 matlab으로 돌리면 다음과 같은 그림이 나온다. 

x = -4:0.1:4;
sigma = 0.7;
y = exp(-x.^2/(2*sigma^2)) / (sigma*sqrt(2*pi));
plot(x,y);
 

영상은 2차원이기 때문에 위의 함수를 그대로 쓸 수는 없으니 가우시안의 2차원 함수를 다시 살펴보면 다음과 같다. 


clf

x = -4:0.1:4;

y = -4:0.1:4;

[x,y] = meshgrid(x,y);

sigma = 0.7;

z = exp(-(x.^2+y.^2)/(2*sigma^2)) / (sigma^2*(2*pi));

surf(x,y,z);

mean필터는 필터영역의 픽셀에 대하여 평균값을 취한 것인데, 이것보다 가우시안 필터가 더 자연스럽다고 한다. 필터의 중앙부에 가중치를 더 두고 주변은 가중치를 낮추는 방법이 좀 더 부드러울 것이라는 직관적인 느낌이 오기는 하다.

 보통 Gaussian필터는 영상에 있는 자잘한 노이즈를 제거하여 깔끔한 이미지를 만드는데 많이 사용하지만, 필터의 크기가 너무 커지면 너무 뽀샤시 한 영상이 나오며 전체 화면이 뭉그러지는 느낌이 난다.  
 
 일반 영상은 x,y축 즉 2차원이기 때문에 2차원 가우시안 필터를 사용하는 것은 당연한 이야기겠지...이걸 실제로 어떻게 사용하는지는 시간이 나면 내용을 추가하겠다. 
 


[참조]

http://www.songho.ca/dsp/convolution/convolution.html