안녕하세요. 지난 포스팅에서는 디지털 영상처리 - 공간 필터링의 기초에 대해서 알아보았습니다. 이때, 공간 필터링은 결국 영상보다 훨씬 작은 크기의 윈도우 또는 커널을 정의하고 해당 영역 안에서 미리 정의된 연산을 수행한 뒤 다음 픽셀로 옮겨서 진행하는것이라고 하였습니다. 즉, 어떤 연산을 취하는 지에 따라서 공간 필터의 이름이 바뀌게 되는 데 오늘은 다양한 공간 필터 중 가장 기초적인 스무딩 공간 필터에 대해서 알아보도록 하겠습니다.
먼저, 스무딩(smoothing) 필터란 블러링(blurring)과 노이즈 제거를 위해 사용되는 방법입니다. 블러링은 어떤 의미있는 객체를 얻기 전에 영상에서 작은 디테일을 제거하거나 선, 곡선 등의 끊김을 이어주는 것과 같은 전처리 작업을 사용됩니다. 이때, 지난 포스팅에서도 언급드렸다싶이 공간 필터는 내부의 연산에 따라서 선형 필터와 비선형 필터로 나뉜다고 언급하였습니다. 스무딩 공간 필터 역시 스무딩 선형 필터(Smoothing Linear Filter)와 비선형 필터인 순서-통계 필터(Order-Statistic Filter)로 나뉘게 됩니다.
1. 스무딩 선형 필터(Smoothing Linear Filter)
스무딩 선형 필터의 출력은 영상의 작은 영역에 포함되는, 즉 윈도우 영역 내에 포함되는 화소들의 평균입니다. 따라서 스무딩 선형 필터를 평균 필터(Average Filter) 또는 저역통과 필터(Low Pass Filter)라고도 합니다. 이때, 저역통과 필터라고 불리우는 이유는 이후에 알아볼 주파수 공간에서의 필터링을 공부하시면 쉽게 이해할 수 있으니 지금은 아~ 이렇게도 불리는구나라고 생각하시면 될 거 같습니다.
일전에 언급했다싶이 스무딩 선형 필터는 노이즈 제거에 사용될 수 있다고 하였습니다. 노이즈는 일반적으로 노이즈를 제거한 깔끔한 영상과 비교했을 때, 노이즈라고 의심되는 이웃 픽셀과 굉장히 큰 차이를 보입니다. 이때, 스무딩 선형 필터를 적용하면 노이즈를 중심으로하는 주변 영역의 평균을 취함으로써 노이즈가 감소한다고 볼 수 있습니다.
이러한 스무딩 선형 필터에도 심각한 단점이 존재하는 데, 그것은 어떤 객체의 엣지 역시 흐리게 만든다는 것입니다. 엣지 역시 주변 픽셀과 비교했을 때 주변 이웃과의 값 차이가 많이 난다는 점을 생각하면 노이즈와 같이 쉽게 이해할 수 있습니다. 일반적으로 영상 내에서 객체의 엣지는 언제나 매력적인 특징이기 때문에 이는 큰 단점이라고 볼 수 있습니다.
그럼에도 불구하고 스무딩 선형 필터는 주어진 영상의 무의미한(irrelevant) 디테일들을 축소시키는 데 사용될 수 있습니다. 자연 데이터는 일반적으로 노이즈와 의미없는 정보들이 많기 떄문에 스무딩 선형 필터를 통해서 이러한 노이즈나 정보들을 제거하는 데 사용될 수 있습니다.
이때, 스무딩 선형 필터는 아래 그림과 같이 윈도우 내의 가중치 분포에 따라서 상자 필터(box filter)와 가중 평균 필터(weighted average filter)로 나뉘게 됩니다.
특히, 오른쪽 필터는 마치 2차원 가우시안 분포처럼 중앙값이 가장 크고 중앙으로부터 멀어질수록 값이 작아지는 형태를 보이고 있습니다. 따라서 이러한 가중치를 가지는 필터를 가우시안 필터(gaussian filter)라고 부릅니다. 일반적으로 필터의 크기에 따라서 이러한 가우시안 필터를 포함한 가중 평균 필터는 중앙을 기준으로 한 픽셀 거리를 기준으로 아래와 같이 가중치를 계산하게 됩니다.
만약, $m \times n$ 크기의 가중 평균 필터를 사용해서 $M \times N$ 크기의 영상을 필터링하려면 그 공식은 아래와 같습니다.
$$g(x, y) = \frac{\sum_{s=-a}^{a}\sum_{t=-b}^{b} w(s, t)f(x + s, y + t)}{\sum_{s=-a}^{a}\sum_{t=-b}^{b} w(s, t)}$$
이러한 과정은 영상 내의 모든 픽셀 $x = 0, 1, \dots, M - 1$,그리고 $y = 0, 1, \dots, N - 1$에 대해서 수행됩니다. 여기서 위의 수식에서 분모는 필터 내의 모든 가중치의 합이기 때문에 영상의 크기가 정해진다면 한번만 계산하면 됩니다. 이제 스무딩 필터링을 적용할 결과를 보도록 하겠습니다.
상단의 왼쪽 그림이 입력 영상입니다. 그 오른쪽 그림은 가장 작은 크기의 윈도우인 $3 \times 3$를 이용해서 박스 필터링을 적용하였습니다. 육안으로 보았을 때는 큰 차이가 보이지않고 있습니다. 하지만 윈도우의 크기가 커질수록 그 블러링의 효과가 점점 커지고 있는 것을 관찰할 수 있습니다. 윈도우의 크기를 키우면 그만큼 영상의 많은 영역들의 평균 화소를 구하기 때문에 블러링의 효과가 강해지는 것입니다.
스무딩 선형 필터의 중요한 응용은 자세한 디테일을 지우는 것이라고 하였습니다. 상단의 그림에서 저희가 큰 객체에 대한 전반적인 표현을 얻고자 할 때 영상에 블러링을 적용하면 마치 잉크 얼룩과 같이 되었기 때문에 여기에 문턱치 처리를 하면 저희가 관심있는 객체의 영역을 얻을 수 있습니다.
2. 순서-통계 필터(Order-Statistic Filter)
순서-통계 필터는 기본적으로 비선형 필터로써 지금까지 보아왔던 것과 같은 영상에 커널에 가중치를 곱하는 과정이 없습니다. 이러한 순서-통계 필터는 커널 내에 둘러싸인 영상 영역에 담긴 화소들을 정렬한 뒤 그 순위에 위해서 결정된 값으로 중앙 화소의 값을 교체하는 방법입니다. 따라서 어떤 순위의 값을 사용할 것이냐에 따라서 다시 순서-통계 필터는 최댓값 필터(Max Filter), 최솟값 필터(Min Filter) 그리고 중간값 필터(Median Filter)로 나뉘게 됩니다. 이중에서도 중간값 필터는 소금-후추 노이즈(Salt-Pepper Noise; 또는 임펄스 노이즈)와 같이 영상에 흑색과 백색의 점들이 뿌려진 노이즈를 제거하는 데 탁월한 효과를 보입니다.
중간값 필터 알고리즘 자체는 매우 간단합니다. 미리 정의된 윈도우 영역의 영상의 픽셀값들의 집합의 중간값을 $\xi$라고 하겠습니다. 그러면 집합의 절반은 $\xi$보다 작거나 큰 값을 가지게 될 것입니다. 기본적인 알고리즘은 윈도우 영역 내의 영상 픽셀값들을 정렬하는 정렬 알고리즘, 중간값을 결정하는 알고리즘, 마지막으로 결정된 값을 필터링된 영상의 픽셀값으로 정하면 됩니다. 이때, 윈도우의 크기가 커지면 커질수록 그만큼 정렬해야하는 원소의 개수가 늘어나며 이는 계산량이 윈도우의 크기인 $m \times n$만큼 늘어나는 것을 의미합니다. 이러한 중간값 필터의 가장 중요한 특징은 윈도우 내의 튀고 있는 픽셀값들을 해당 영역과 비슷하게 만드는 것입니다. 따라서 소금-후추 노이즈와 같이 어떤 값은 255(후추), 그리고 어떤 값은 0(소금)가 포함된 윈도우 영역 내에서 중간값을 선택함으로써 노이즈가 제거되는 것이죠.
이러한 순서-통계 필터는 어떤 값으로 정의하느냐에 따라서 최댓값 필터, 최솟값 필터 그리고 중간값 필터 뿐만 아니라 다양한 필터를 정의할 수 있습니다. 이러한 다양한 필터를 정의하는 방법이 분위수라는 개념인 데 이는 제가 아래의 링크에 정리를 해놓았으니 확인해보시길 바랍니다.
상단의 그림은 소금-후추 노이즈로 오염된 영상을 복원하는 과정을 보여주고 있습니다. 가운데 영상은 오염된 영상에 가우시안 필터링을 적용한 것입니다. 하지만 여전히 노이즈가 남아있으며 영상의 퀄리티가 오히려 더 떨어지게 되었습니다. 오른쪽 영상은 오염된 영상에 $7 \times 7$ 크기의 중간값 필터를 적용한 영상입니다. 보시면 소금-후추 노이즈가 완전히 제거된 것을 볼 수 있습니다. 하지만 여기서 유의해야할 점은 중간값 필터가 항상 잘 통하는 것은 아니라는 점입니다. 위와 같이 노이즈를 완전히 제거할 수도 있지만 어떤 경우에는 제거가 안되는 경우도 있기 때문에 선형 필터도 써보고 비선형 필터도 써보면서 커널의 크기도 다양하게 정하여 어떤 방식으로 제거해야 노이즈가 효과적으로 없어지는 지는 직접 찾아야합니다.
'image processing' 카테고리의 다른 글
디지털 영상 처리 - 샤프닝 공간 필터(Sharpening Spatial Filter) : 라플라시안 필터 (2) | 2021.03.20 |
---|---|
디지털 영상 처리 - 스무딩 공간 필터 구현 (0) | 2021.03.19 |
디지털 영상 처리 - 공간 필터링 기초 (3) | 2021.03.15 |
디지털 영상 처리 - 히스토그램 처리 함수 구현 (0) | 2021.03.13 |
디지털 영상처리 - 지역적 히스토그램 처리 (0) | 2021.03.11 |