본문 바로가기

CS/[Vision]Computer Vision(컴퓨터 비전)

[Vision]Antialiasing-Linear filtering(Average Filter, Gaussian Filter)

이전에 antialiasing 방법으로 linear filtering 기법이 있다고 했다.

이는 블러링(bluring) 스무딩(smoothing) 기법이라고도 하며, 인접 픽셀 간의 값 변화가 크지 않게 하여 부드러운 느낌을 받을 수 있게 하는 기법이다.

이 linear filtering에는 어떤 종류가 있는지 알아보자

 

Average Filtering(평균값 필터)

가장 중요한 선형 필터 중 하나인 필터로 평균 필터라고 한다. 

이는 범위를 정해놓고 범위 내의 평균 값을 weight 값으로 결정하는 filter로 해당 범위는 계속 shift 한다.

 

왼쪽 그림을 보면 위의 값들을 Filtering 할 때,

해당 포인트의 값을 해당 포인트의 왼쪽값 2개, 본인 값, 오른쪽값 2개 총 5개의 값을 평균낸 값으로 filtering을 하였는데

 

그 결과를 나타낸 것이 왼쪽의 아래 그림이다.

 

 

 

 

 

그럼 이를 이미지에 적용시키는 경우를 살펴보자.

이전에 살펴보았듯이 이미지는 pixel 값들의 집합이므로 9개의 pixel을 하나의 Box로 보고 filtering을 진행한다. 

따라서 이미지에 평균 필터를 진행하면 똑같이 9개의 pixel 값들의 평균을 구해 정중앙 포인트의 Pixel 값으로 결정하여 주게 되는 것이다.

어렵지 않게 이해할 수 있는 필터이다.

예시를 보면 다음과 같다.

다음과 같이 box를 한칸씩 shift 하며 filtering 과정을 진행하는 것을 확인할 수 있다.

전체 모두 진행한 결과는 아래와 같다.

사실 위에서 진행한 평균 필터 방법에서 사용된 filter를 box filter 라고 하는데

 

이것을 사용하면 smoothing effect를 확인할 수 있다.(remove sharp features라고도 표현한다.)

평균값 필터에 의해 생성되는 결과 영상은 픽셀 값의 변화가 줄어들고, 노이즈의 영향이 크게 사라지는 효과가 있다.

그러나 평균값 필터를 너무 과도하게 사용하면 사물의 경계가 흐릿해지며 구분이 어려워진다.

 

이것을 실제로 이미지에 적용한 결과를 보면 다음과 같다.

 

왼쪽이 original이미지이고 오른쪽이 average/mean filter를 이용하여 표현된 이미지 이다. 

확연히 차이가 보이는데 오른족이 blurred 즉 흐리게 보이는 것을 확인할 수 있다. 

 

 

평균 필터가 아닌 다른 선형 필터를 사용한 경우는 어떻게 표현될까?

 

왼쪽 filter의 경우는 각 픽셀들이 하나씩 왼쪽으로 이동한 것을 확인할 수 있고

오른쪽 filter의 경우는 vertical Edge가 표현된 것을 확인할 수 있다.

아래 filter의 경우는 horizontal Edge가 표현된 것을 확인할 수 있다.

 

즉, 선형 필터는 어떻게 선형결합을 진행하느냐(각 픽셀에 가중치를 어떻게 주느냐)에 따라 전혀 다른 결과를 도출할 수 있음을 확인할 수 있다.

 

그렇다면 다른 가중치를 주는 linearly filter 에 대해 알아보자.

 

Gaussian filtering(가우시안 필터)

가우시안 분포 함수를 근사하여 생성한 filter를 gaussian filter 라고 하며 이는 평균 필터와 달리 각 픽셀에 가중치를 다르게 주어 연산을 하는 filter이다.

가우시안 분포(정규 분포)란 평균을 중심으로 좌우 대칭의 모양을 갖는 확률 분포로, 평균과 표준편차에 의해 모양이 결정된다.

 

가우시안 분포를 사용하는 이유는 box의 center에서 멀어지는 pixel들은 가중치를 더 적게 주는 기법을 이용하기 위함이다.

 

 

해당 이미지가 5x5 box에서 가우시안 필터를 이용해 가중치를 정해놓은 결과 이다.

 

이때 평균은 주로 0인 가우시안 분포 함수를 사용하고. 표준편차에 따라서 가중치의 분포가 결정된다.

표준편차가 smoothing의 정도를 결정한다고 생각해도 된다.

 

아래 그림이 표준편차에 따른 gaussian filtering 결과 값들을 나타낸 것이다.

 

표준 편차값이 커질 수록 blurring, 흐림의 정도가 더 커지는 것을 확인할 수 있는데, 이유는 표준편차가 클 수록 center pixel에서 먼 pixel 값에 대한 가중치가 커지기 때문이다.

위에서 말했던 box 를 mask, filter, kernel이라고도 말을 하는데 보통 kernel의 크기가 커질 수록 스무딩이 더욱 잘 되지만 선명도가 더 떨어질 수도 있다.

 

그리고 크기가 커질 수록 연산량이 크게 증가할 수 있으므로 적절한 size를 찾아주는 것이 정말 중요하다.