안녕하세요. 지난 포스팅의 디지털 영상 처리 - 주파수 도메인 필터를 이용한 영상 스무딩에서는 주파수 도메인에서의 저주파 영역을 필터링함으로써 스무딩을 하였습니다. 이를 위해서 사용하는 대표적인 필터인 ILPF, BLPF, GLPF를 알아보았습니다. 이때, 물결파동 현상이 발생하는 데 이는 주파수 도메인에서의 불연속 지점이 생기는 것이 원인이였습니다. 이를 방지하기 위해서 불연속적인 ILPF가 아닌 BLPF나 GLPF를 사용하면 되었습니다. 하지만, 상대적으로 부드러운 필터들은 저주파 영역만 추출하는 것이 아니라 고주파 영역도 함께 추출되기 때문에 정량적인 분석이 어려울 수도 있습니다. 전체적인 개념을 이해하셨다면 영상 샤프닝도 쉽게 이해할 수 있습니다. 실제로 별 차이가 없다고 느끼실겁니다.
일단!! 기본적으로 LPF와 HPF는 아래의 관계식을 가지고 있습니다.
$$H_{\text{HP}}(\mu, \nu) = 1 - H_{\text{LP}}(\mu, \nu)$$
그리고 지금까지 배웠던 LPF들을 이용해서 HPF를 그리고 수식으로 표현하면 아래와 같습니다.
샤프닝은 기본적으로 엣지를 찾는 것을 시작으로 합니다. 그리고 엣지는 영상 내에서 급격한 밝기 변화를 가지는 지점이기 때문에 고주파 여역에 속하죠. 따라서 HPF를 이용한다면 성공적으로 엣지를 탐지할 수 있습니다. IHPF와 ILPF 모두 동일한 성질을 지니고 있기 때문에 IHPF를 이용해서 샤프닝을 적용하면 아래와 같이 물결파동 현상이 발생합니다. 이를 방지하기 위해서 BHPF나 GHPF를 사용하는 것 역시 동일합니다.
1. 주파수 도메인의 라플라시안
이전에 알아보았던 영상 공간에서 샤프닝을 하는 것과 주파수 도메인에서 샤프닝을 수행하는 것은 마치 스무딩처럼 동일한 결과를 가져옵니다. 주파수 도메인에서 라플라시안 필터는 아래와 같이 정의할 수 있습니다.
$$H(\mu, \nu) = -4\pi^{2}(\mu^{2} + \nu^{2})$$
위의 라플라시안 필터는 원점을 중심으로 정의되었습니다. 하지만 저희가 평행이동된 한 주기의 중심점은 $(\frac{P}{2}, \frac{Q}{2})$이기 때문에 아래와 같이 적는 것이 더 맞는 방법입니다.
$$H(\mu, \nu) = -4\pi^{2}\left[(\mu - \frac{P}{2})^{2} + (\nu - \frac{Q}{2})^{2}\right] = -4\pi^{2}D^{2}(\mu, \nu)$$
여기서 $D(\mu, \nu)$는 주파수 공간에서 평행이동된 한 주기의 중심점인 $(\frac{P}{2}, \frac{Q}{2})$로부터의 거리함수로 정의됩니다. 그러면 라플라시안 영상은 아래의 식으로 얻을 수 있습니다.
$$\nabla^{2}f(x, y) = \mathcal{F}^{-1}\{H(\mu, \nu)F(\mu, \nu)\}$$
라플라시안 영상을 얻었다면 일전에 보았던 $g(x, y) = f(x, y) + c\nabla^{2}f(x, y)$를 이용해서 샤프닝을 수행할 수 있습니다. 주파수 도메인에서 라플라시안 필터가 음수로 정의되었기 때문에 $c = -1$이 됩니다. 그런데 여기서 문제가 발생합니다. 주파수 도메인을 이용해서 라플라시안을 얻게 되면 영상 도메인과는 다르게 DFT 계수가 추가로 붙어서 몇 자리수가 더 클수가 있습니다. 이 경우에는 $f(x, y)$에 DFT를 취하기 전에 값들을 범위 $[0, 1]$로 정규화하고 $\nabla^{2}f(x, y)$를 최댓값으로 나누어 $[-1, 1]$ 사이의 범위로 옮겨주면 됩니다. 그 다음에 샤프닝을 수행하면 됩니다. 영상 샤프닝 수식을 주파수 도메인과 엮어서 쓰면 아래와 같습니다.
$$g(x, y) = \mathcal{F}^{-1}\{F(\mu, \nu) - H(\mu, \nu)F(\mu, \nu)\}$$
$$ = \mathcal{F}^{-1}\{\left[1 - H(\mu, \nu)\right]F(\mu, \nu)\}$$
$$ = \mathcal{F}^{-1}\{\left[1 + 4\pi^{2}D^{2}(\mu, \nu))\right]F(\mu, \nu)\}$$
2. 언샤프 마스킹, 고주파 증폭 필터링, 고주파 강조 필터링
이번에는 영상 샤프닝을 수행하는 다른 알고리즘들을 주파수 도메인에서의 필터링을 하는 것을 엮어보도록 하겠습니다. 일단, 위 알고리즘들의 공통된 특징들은 입력 영상에 스무딩을 적용하여 마스크를 얻는 것이였습니다. 이를 수식적으로 표현하면 아래와 같습니다.
$$g_{\text{mask}} = f(x, y) - f_{\text{LP}}(x, y)$$
$$f_{\text{LP}}(x, y) = \mathcal{F}^{-1}\{H_{\text{LP}}(\mu, \nu)F(\mu, \nu)\}$$
여기서 $H_{\text{LP}}(\mu, \nu)$는 LPF이고 $F(\mu, \nu)$는 $f(x, y)$의 푸리에 변환입니다. 컨볼루션 정리에 의해서 $f_{\text{LP}}(x, y)$는 스무딩된 영상 $\bar{f}(x, y)$와 유사한 영상일 것입니다. 마스크를 구했다면 아래의 수식을 이용하여 샤프닝을 수행합니다.
$$g(x, y) = f(x, y) + k * g_{\text{mask}}(x, y)$$
이때, $k = 1$이면 언샤프 마스킹, $k > 1$이면 고주파 증폭 필터링이라고 정의하였습니다. 그리고 이 식들을 하나로 묶어서 쓰면 아래의 식을 얻을 수 있습니다.
$$g(x, y) = \mathcal{F}^{-1}\{\left[1 + k * [1 - H_{\text{LP}}(\mu, \nu)]F(\mu, \nu)\right]\}$$
$$ = \mathcal{F}^{-1}\{\left[1 + k * H_{\text{HP}}(\mu, \nu)F(\mu, \nu)\right]\}$$
여기서 대괄호에 있는 $1 + k * H_{\text[HP]}(\mu, \nu)$를 고주파 강조 필터(High Frequency Emphasis Filter)라고 합니다. 고주파 강조 필터의 장점은 일반적으로 HPF를 적용하면 평균밝기가 0이 되기 때문에 어두운 영상이 나오지만 1을 더해주고 있기 때문에 그러한 문제는 발생하지 않습니다. 그리고 일반화된 고주파 강조 필터는 아래와 같이 쓸 수 있습니다.
$$ g(x, y) = \mathcal{F}^{-1}\{\left[k_{1} + k_{2} * H_{\text{HP}}(\mu, \nu)F(\mu, \nu)\right]\}$$
이때, $k_{1} \ge 0$은 원점으로부터 오프셋을 제어하고 $k_{2} \ge 0$은 주파수에 얼마나 높은 기여도를 줄 지 결정해줍니다.
3. 준동형 필터링(Homomorphic Filtering)
영상의 픽셀 강도는 크게 2가지 영향을 받습니다. 하나는 조명과 같은 직접적인 광원으로부터의 빛 $i(x, y)$, 나머지 하나는 객체로부터 반사된 빛 $r(x, y)$입니다. 그리고 디지털 영상은 $f(x, y) = i(x, y)r(x, y)$로 표현될 수 있습니다. 아쉽게도 이 식의 조명과 반사의 주파수 성분은 직접 연산될 수 없습니다. 왜냐하면 $\mathcal{F}\{f(x, y)\} \neq \mathcal{F}\{i(x, y)\}\mathcal{F}\{r(x, y)\}$이기 때문이죠. 그래서 저희는 여기에 자연로그를 이용해서 곱을 합으로 바꾸어주는 성질을 사용하도록 하겠습니다.
$$z(x, y) = \ln{f(x, y)} = \ln{i(x, y)} + \ln{r(x, y)}$$
$$\mathcal{F}\{z(x, y)\} = \mathcal{F}\{\ln{f(x, y)}\} = \mathcal{F}\{\ln{i(x, y)}\} + \mathcal{F}\{\ln{r(x, y)}\}$$
여기서 편의를 위해서 $Z(\mu, \nu) = \mathcal{F}\{z(x, y)\}$, $F_{i}(\mu, \nu) = \mathcal{F}\{\ln{i(x, y)}\}$, $F_{r}(\mu, \nu) = \mathcal{F}\{\ln{r(x, y)}\}$로 쓰도록 하겠습니다.
$$Z(\mu, \nu) = F_{i}(\mu, \nu) + F_{r}(\mu, \nu)$$
따라서 저희는 이제부터 영상의 조명 성분과 반사 성분을 주파수 도메인에서 각각 제어할 수 있게 되었습니다. 그리고 주파수 도메인에서의 필터 $H(\mu, \nu)$를 이용해서 $Z(\mu, \nu)$를 필터링한다고 가정하겠습니다. 필터링된 결과를 $S(\mu, \nu)$라고 하면 아래의 결과를 얻을 수 있습니다.
$$S(\mu, \nu) = H(\mu, \nu)F(\mu, \nu) = H(\mu, \nu)F_{i}(\mu, \nu) + H(\mu, \nu)F_{r}(\mu, \nu)$$
그리고 필터링된 $S(\mu, \nu)$를 다시 역푸리에 변환 $\mathcal{F}^{-1}$을 통해서 영상 도메인의 영상 $s(x, y)$으로 바꿀 수 있습니다.
$$s(x, y) = \mathcal{F}^{-1}\{S(\mu, \nu)\} = \mathcal{F}^{-1}\{H(\mu, \nu)F_{i}(\mu, \nu)\} + \mathcal{F}^{-1}\{H(\mu, \nu)F_{r}(\mu, \nu)\}$$
위의 식에서 $i^{'}(x, y) = \mathcal{F}^{-1}\{H(\mu, \nu)F_{i}(\mu, \nu)\}$ 그리고 $r^{'}(x, y) = \mathcal{F}^{-1}\{H(\mu, \nu)F_{r}(\mu, \nu)\}$라고 하면 $s(x, y) = i^{'}(x, y) + r^{'}(x, y)$라고 쓸 수 있습니다. 그런데 기본적으로 $z(x, y)$는 자연로그를 취해서 만들어졌기 때문에 제대로된 출력 영상 $g(x, y)$을 만들려면 자연상수를 밑으로한 지수를 취함으로써 얻어야합니다.
$$g(x, y) = e^{s(x, y)} = e^{i^{'}(x, y)}e^{r^{'}(x, y)} = i_{0}(x, y)r_{0}(x, y)$$
여기서 $i_{0}(x, y) = e^{i^{'}(x, y)}$ 이고 $r_{0}(x, y) = e^{r^{'}(x, y)}$입니다. 결론적으로 저희는 디지털 영상의 조명과 반사 성분 각각 필터링하여 출력 영상 $g(x, y)$를 얻는 것이라고 볼 수 있습니다. 이 과정을 그림으로 요약하면 아래와 같습니다.
일련의 과정을 준동형 필터링(Homomorphic Filtering)이라고 부르고 주파수 도메인에서 필터 함수 $H(\mu, \nu)$를 준동형 필터 함수(Homomorphic Filter Function)라고 합니다. 참고로 영상 내에서 $i(x, y)$는 공간에 따라 천천히 변하고 $r(x, y)$는 상이한 객체가 접하는 지점에서 급격하게 변한다는 특징이 있습니다. 즉, $i(x, y)$는 저주파와 관련이 있으며 $r(x, y)$는 고주파와 관련이 있다고 볼 수 있습니다. 이제 남은 것은 준동형 필터 함수를 어떻게 정의할 것인지입니다. 준동형 필터링은 푸리에 변환에서 저주파 $i(x, y)$와 고주파 $r(x, y)$성분에 서로 다른 제어를 할 수 있습니다. 이를 위한 파라미터인 $\gamma_{\text{L}}$과 $\gamma_{\text{H}}$를 도입합니다. 여기서 $\gamma_{\text{L}} < 1$ 이고 $\gamma_{\text{H}} > 1$이라고 가정하면 $H(\mu, \nu)$를 GHPF를 기반으로 만들면 아래와 같이 됩니다.
$$H(\mu, \nu) = (\gamma_{\text{H}} - \gamma_{\text{L}})\left[1 - e^{-c[D^{2}(\mu, \nu)/D^{2}_{0}]}\right] + \gamma_{\text{L}}$$
기본적으로 위 필터는 상대적으로 저주파의 기여도는 줄이고 고주파의 기여도는 높임으로써 엣지를 강조시키는 역할을 하게 됩니다. 즉, 샤프닝을 하게 된다는 것이죠.
위 그림은 $\gamma_{\text{L}} = 0.25$ 그리고 $\gamma_{\text{H}} = 2$라고 가정한 필터입니다. 왼쪽 원본 영상에 비해서 오른쪽 필터링된 영상을 비교하면 상대적으로 엣지 정보(반사 정보)가 더 날카로워졌음을 관찰할 수 있습니다.
'image processing' 카테고리의 다른 글
디지털 영상 처리 - 주파수 도메인 필터를 이용한 영상 샤프닝 구현 (0) | 2021.04.26 |
---|---|
디지털 영상 처리 - 주파수 도메인 필터를 이용한 영상 스무딩 구현 (1) | 2021.04.25 |
디지털 영상 처리 - 주파수 도메인 필터를 이용한 영상 스무딩 (1) | 2021.04.16 |
디지털 영상 처리 - 주파수 공간 필터링 기초 (0) | 2021.04.13 |
디지털 영상 처리 - 2D DFT 특성 2 (0) | 2021.04.11 |