안녕하세요. 지난 포스팅의 디지털 영상 처리 - 노이즈만 있을 때 복원하기(공간 필터링) : 평균 필터와 순서-통계 필터에서는 산술평균, 기하평균, 조화평균, 콘트라 조화평균 필터 그리고 중앙값, 최댓값, 최솟값, 중간값, Alpha-트리밍 평균 필터에 대해서 알아보았습니다. 특히, 콘트라 조화평균 필터나 Alpha-트리밍 평균 필터는 영상 내에 노이즈가 여러 개 섞인 경우에 잘 동작하는 것을 관찰할 수 있었습니다. 오늘은 이와 같이 고정된 필터값을 사용하는 경우가 아닌 영상 내의 통계적 특성에 따라 필터가 변화하는 적응 필터(Adaptive Filter)에 대해서 알아보도록 하겠습니다.
1. 적응적, 지역적 노이즈 감소 필터(Adaptive, Local Noise Reduction Filter)
영상과 밀접하게 관련있는 통계적 특성은 무엇일까요? 바로 평균(mean)과 분산(variance)입니다. 아래의 링크에서 설명드린 것과 같이 영상에서 분산은 곧 콘트라스트와 밀접한 관련이 존재한다는 것을 알았습니다. 분산이 크면 영상의 밝기가 전체적으로 분포하는 것을 의미하기 때문에 콘트라스트가 높다는 것으로 이해할 수 있고 이와 반대로 분산이 작으면 영상의 밝기가 지역적으로 분포하기 때문에 콘트라스트가 낮은 것으로 이해할 수 있습니다. 그리고 평균은 영상 내의 평균적인 밝기를 의미하죠. 평균이 높으면 영상의 밝기가 전체적으로 밝은 느낌이 날 것이고, 평균이 낮으면 영상의 밝기가 전체적으로 어두운 느낌이 날 것입니다.
하지만 저희는 전체 영상이 아닌 서브 윈도우 $S_{xy}$ 내의 픽셀 값들을 가지고 어떤 처리를 할 예정입니다. 일단 $S_{xy}$의 중심인 $(x, y)$에서 필터를 적용했을 때 아래의 4개의 통계적 수량을 기반으로 결과를 얻어야합니다.
- $(x, y)$ 에서 노이즈 낀 영상의 값인 $g(x, y)$
- $g(x, y)$ 를 만들기 위해 $f(x, y)$를 오염시킨 노이즈의 분산인 $\sigma^{2}_{\eta}$
- $S_{xy}$의 화소들의 지역적 평균 $m_{L}$
- $S_{xy}$의 화소들의 지역적 분산 $\sigma^{2}_{L}$
그리고 위의 통계적 수량을 기반으로 아래와 같이 동작하기를 바랍니다.
- $\sigma^{2}_{\eta} = 0$ 인 경우, 필터는 단순히 $g(x, y)$의 값을 반환해야 한다.
- $\sigma^{2}_{L} \gg \sigma^{2}_{\eta}$라면 필터는 $g(x, y)$에 가까운 값을 반환해야 한다.
- $\sigma^{2}_{L} = \sigma^{2}_{\eta}$라면 필터는 $S_{xy}$에서 화소들의 산술 평균값을 반환해야 한다.
위의 동작에 대한 조건을 분석해보도록 하겠습니다. 첫번째 조건인 $\sigma^{2}_{\eta} = 0$은 영상에 노이즈가 끼지 않았음을 의미합니다. 따라서 $g(x, y) = f(x, y)$ 인 제로-노이즈 영상임을 의미하는 것이죠.
두번째 조건에서 $\sigma^{2}_{L} \gg \sigma^{2}_{\eta}$를 이해하기 위해서는 $\sigma^{2}_{L}$과 영상의 특성을 이해할 필요가 있습니다. 일단 아주 작은 $3 \times 3$ 크기의 $S_{xy}$를 잡았을 때 분산이 크다는 것은 어떤 것을 의미할까요? 영상 내에 다양한 값이 분포한다는 것으로 이해할 수도 있지만 어떻게 보면 엣지의 존재도 확인할 수 있습니다. 그리고 엣지는 영상에서 언제나 매력적인 특징 중에 하나이기 때문에 블러링되지 않고 보존되어야하기 때문에 단순히 $g(x, y)$를 반환하는 것이죠.
마지막으로 $\sigma^{2}_{L} = \sigma^{2}_{\eta}$라는 것은 서브 영상 $S_{xy}$에서의 분산과 전체적인 분산이 같다는 건데 이것은 $S_{xy}$ 내에 전체 영상에 부가된 노이즈와 동일한 노이즈가 포함되어있다는 것을 의미합니다. 따라서 이 경우에는 산술 평균을 통해 노이즈를 감쇠해주는 것이죠.
위와 같은 가정들에 기반하여 적응 필터를 만들면 아래와 같이 쓸 수 있습니다.
$$\hat{f}(x, y) = g(x, y) - \frac{\sigma^{2}_{\eta}}{\sigma^{2}_{L}}\left[g(x, y) - m_{L}\right]$$
위의 식에서 동작 조건들을 하나씩 적용해보도록 하죠.
- $\sigma^{2}_{\eta} = 0$이라고 했을 때 $\hat{f}(x, y) = g(x, y) - \frac{0}{\sigma^{2}_{L}}\left[g(x, y) - m_{L}\right] = g(x, y)$
- $\sigma^{2}_{L} \gg \sigma^{2}_{\eta}$라고 했을 때 $\frac{\sigma^{2}_{\eta}}{\sigma^{2}_{L}} \approx 0$이기 때문에 $\hat{f}(x, y) = g(x, y)$
- $\sigma^{2}_{L} = \sigma^{2}_{\eta}$라고 했을 때 $\hat{f}(x, y) = g(x, y) - 1 \cdot \left[g(x, y) - m_{L}\right] = m_{L}$
위와 같이 각 조건별로 저희가 원하는 대로 잘 동작하고 있음을 쉽게 알 수 있습니다. 다만, 여기서 $\sigma^{2}_{\eta}$에 대한 추정이 필요합니다. 이 부분은 영상으로부터 저희가 직접 알 수 없기 때문에 $\sigma^{2}_{L} \ge \sigma^{2}_{\eta}$라는 가정을 두고 마치 하이퍼파라미터처럼 설정하면서 어떤 값일 때 가장 좋은 결과를 얻는 지 알아내야합니다.
위 그림은 실제로 평균은 0이고 분산은 1000인 가우시안 노이즈에 오염된 영상(a)을 복원하기 위해 적응적, 지역적 노이즈 감소 필터를 적용한 결과(d)입니다. 적응적, 지역적 노이즈 감소 필터의 장점은 엣지를 잘 보존한다는 점입니다. 실제로 산술 평균 필터와 기하 평균 필터 결과와 비교해보았을 때 엣지의 왜곡이 가장 덜 한 것을 관찰할 수 있습니다.
2. 적응적 중앙값 필터(Adaptive Median Filter)
일단 중앙값 필터는 아래의 이전 포스팅들에서도 설명드렸다 싶이 소금-후추 노이즈 제거에 있어 굉장히 좋은 성능을 내고 있습니다.
하지만 이러한 중앙값 필터는 소금-후추 노이즈의 발생 빈도가 0.2보다 작아야 잘 동작한다는 것이 경험적으로 알려진 한계점입니다. 여기서 설명드릴 적응적 중앙값 필터는 이러한 한계점을 극복하고 발생 빈도가 더 높더라도 충분히 잘 동작하는 필터링 방법입니다. 뿐만 아니라 기존의 중앙값 필터링에서는 하지 못했던 디테일에 대한 보존도 가능하게 만들어줍니다. 여기서 다른 필터들과의 가장 큰 차이점은 서브 윈도우 $S_{xy}$내의 픽셀값들이 특정 조건에 도달하면 $S_{xy}$의 크기를 증가시킨다는 점입니다. 이 부분을 이해하고 기본적인 변수는 아래와 같습니다.
- $z_{\text{min}}$ : $S_{xy}$의 최소 밝기값
- $z_{\text{max}}$ : $S_{xy}$의 최대 밝기값
- $z_{\text{med}}$ : $S_{xy}$의 중앙 밝기값
- $z_{xy}$ : 좌표 $(x, y)$에서의 밝기값
- $S_{\text{max}}$ : $S_{xy}$가 증가할 수 있는 필터의 최대 크기
그리고 적응적 중앙값 필터는 아래와 같이 크게 2가지의 알고리즘(단계 A, 단계 B)으로 이루어져있습니다.
일단 위 알고리즘이 조금 이해하기 어려우니 알고리즘 플로우 차트로 시각화해서 확인해보도록 하겠습니다.
한결 보기 편해진거 같으니 위 플로우 차트를 기반으로 해석해보도록 하겠습니다. 여기서 적응적 중앙값 필터의 3가지 목적부터 알아보도록 하겠습니다.
- 소금-후추 노이즈 제거
- 소금-후추 노이즈가 아닌 다른 노이즈들은 스무딩
- 엣지의 과도한 세선화(얇아지는 현상) 또는 후선화(두꺼워지는 현상)와 같은 왜곡 감쇄
이때 소금-후추 노이즈는 다른 노이즈들과는 다르게 255 또는 0인 값으로만 생성됩니다. 따라서 소금-후추 노이즈의 출현 빈도가 높다면 통계적으로 $z_{\text{min}}$과 $z_{\text{max}}$는 소금-후추 노이즈라고 해석할 수 있습니다.
이를 기반으로 다시 알고리즘 테이블로 돌아가보도록 하겠습니다. 단계 A에서 가장 먼저 수행하는 것은 A1과 A2를 계산하는 것입니다. 만약, $S_{xy}$ 내의 중앙값이 $z_{\text{max}}$나 $z_{\text{min}}$과 동일하다면 저희는 해당 픽셀값을 노이즈라고 본다는 것으로 받아드릴 수 있습니다. 왜냐하면 소금-후추 노이즈는 항상 $z_{\text{max}}$나 $z_{\text{min}}$에서 값이 나타나기 때문이죠. 원래 중앙값 필터였다면 그냥 중앙값으로 값을 대체하겠지만 여기서는 바로 대체하지 않고 일단은 윈도우의 크기를 늘려봅니다. 좀 더 넓은 범위에서 탐색을 해보겠다는 것이겠죠. 그럼에도 불구하고 소금-후추 노이즈가 감지됨과 동시에 만약 윈도우의 크기가 최댓값에 도달한다면 그 때 픽셀값을 중앙값으로 대체합니다. 즉, 단계 A는 영상 내의 소금-후추 노이즈를 전체적으로 제거한다고 볼 수 있습니다.
이번에는 단계 A를 통과하여 단계 B로 넘어갔다고 가정해보겠습니다. 단계 A의 역할은 소금-후추 노이즈의 최대한 제거하는 것이기 때문에 단계 B에 해당하는 윈도우 내에서는 소금-후추 노이즈가 존재할 가능성이 낮을 것입니다. 하지만 단계 B에서도 소금-후추 노이즈에 대한 테스트를 진행하는 데 바로 중앙 픽셀인 $z_{xy}$에 대해서 진행합니다. 그래서 만약, 자기자신이 소금-후추 노이즈였다면 중앙값을 내보내고 아니라면 값을 그대로 패싱합니다. 즉, 단계 B는 전체적인 구조 왜곡은 최소화하는 과정과 동시에 조금이라도 있을 법한 소금-후추 노이즈들을 최대한으로 제거하는 과정이 포함되어있는 것입니다.
위의 그림은 소금-후추 필터에 심하게 오염된 영상을 기존의 중앙값 필터와 적응적 중앙값 필터를 이용해서 복원한 결과를 각각 보여주고 있습니다. (b)와 (c)를 비교해보았을 때 상대적으로 엣지와 같은 중요한 특징들이 많이 왜곡된 것을 볼 수 있으며 퀄리티 자체도 그렇게 좋지 않은 거 같습니다.
'image processing' 카테고리의 다른 글
디지털 영상 처리 - 주파수 도메인 필터링에 의한 노이즈 감소 (0) | 2021.05.23 |
---|---|
디지털 영상 처리 - 노이즈만 있을 때 복원하기(공간 필터링) : 평균 필터와 순서-통계 필터 구현 (0) | 2021.05.22 |
디지털 영상 처리 - 노이즈만 있을 때 복원하기(공간 필터링) : 평균 필터와 순서-통계 필터 (1) | 2021.05.10 |
디지털 영상 처리 - 노이즈 모델 구현 (0) | 2021.05.07 |
디지털 영상 처리 - 노이즈 모델들 (0) | 2021.05.05 |