안녕하세요. 지난 포스팅의 디지털 영상 처리 - 열화 함수 추정에서는 저희에게 최소한의 정보가 주어졌을 때 열화함수를 추정하는 방법에 대해서 알아보았습니다. 어떻게든 열화함수를 알아냈다면 다음으로 저희가 할 일은 추정된 열화함수를 통해 다시 깨끗한 영상을 만들어주는 복원 과정을 해주면 됩니다. 오늘은 이러한 복원에서 가장 간단한 역 필터링(inverse filtering)에 대해서 알아보도록 하겠습니다.
저희가 열화함수에 대해서 선형성과 위치 불변성을 가정한 것이 기억나시나요? 이와 같은 가정하에서 오염된 영상 $g(x, y)$는 입력 영상 $f(x, y)$과 열화 함수 $H$의 임펄스 응답 사이의 컨볼루션 연산임을 증명하였습니다. 이를 수식으로 정리하면 아래와 같습니다. 여기서 부가 노이즈항 $\eta(x, y) = 0$이라고 가정하겠습니다.
$$g(x, y) = f(x, y) * h(x, y) \Leftrightarrow G(\mu, \nu) = H(\mu, \nu)F(\mu, \nu)$$
혹시 자세한 내용을 원하신다면 아래의 링크를 참조해주시길 바랍니다.
따라서!! 아주 간단하게 저희는 복원 영상을 단순히 $G(\mu, \nu)$와 $H(\mu, \nu)$ 사이의 픽셀 간 나눗셈으로 구해버릴 수 있지 않을까요? 이것이 역 필터링의 기본 원리입니다. 아주 간단하죠? 이를 정리하면 아래와 같습니다.
$$\hat{F}(\mu, \nu) = \frac{G(\mu, \nu)}{H(\mu, \nu)}$$
여기서 $\hat{F}(\mu, \nu)$는 복원된 영상을 의미합니다. 그리고 이 식을 $G(\mu, \mu) = H(\mu, \nu)F(\mu, \nu) + N(\mu, \nu)$에 대입한 뒤 정리하면 아래의 식을 얻을 수 있습니다.
$$\hat{F}(\mu, \nu) = F(\mu, \nu) + \frac{N(\mu, \nu)}{H(\mu, \nu)}$$
하지만, 위 식에는 아주 큰 문제점이 있습니다. 바로 $N(\mu, \nu)$이죠. 저희는 일반적으로 $N(\mu, \nu)$를 알지못하기 때문에 위 식을 사용하기 힘들뿐더라 $H(\mu, \nu) \approx 0$이라면 완전히 이상한 값이 나오게 될 것입니다. 그래도 2번째 문제점을 해결하는 트릭은 존재합니다. 현재 저희는 주파수 도메인에서 다루고 있기 때문에 일반적으로 중심이동을 하지 않을 때 $H(0, 0)$에서 가장 큰 값을 나타내고 그 주변값은 0이 될 가능성이 아주 낮습니다. 따라서 나눌 때 원점 주위만 나누는 것으로써 이 문제를 해결할 수 있습니다.
위 그림은 실제로 $H(\mu, \nu)$로 나눌 때 발생하는 문제를 보여주고 있습니다. 첫번째 그림은 모든 영역에 대해서 나눗셈을 적용했을 때 결과입니다. 완전히 이상한 결과가 나왔기 때문에 쓸모없습니다. 두번째, 세번째 영상은 중심 주변으로 $D_{0} = 40, 70$ 내부만 나누었을 때 결과입니다. 확실히 좋은 결과를 보여주고 있습니다. 하지만 통과시키는 영역이 넓어질 수록 그만큼 0을 만날 확률이 높기 때문에 $D_{0} = 85$로 적용했을 때는 완전히 이상한 결과가 나왔습니다.
'image processing' 카테고리의 다른 글
디지털 영상 처리 - 최소 평균 오차(Wiener) 필터링 구현하기 (0) | 2021.06.21 |
---|---|
디지털 영상 처리 - 최소 평균 오차(Wiener) 필터링 (0) | 2021.06.14 |
디지털 영상 처리 - 열화 함수 추정 (0) | 2021.06.02 |
디지털 영상 처리 - 선형 및 위치 불변 열화 함수 (0) | 2021.05.30 |
디지털 영상 처리 - 노이즈만 있을 때 복원하기(공간 필터링) : 적응 필터 구현 (0) | 2021.05.29 |