안녕하세요. 지난 포스팅의 디지털 영상 처리 - 이산 푸리에 변환과 이산 역푸리에 변환 구현에서는 단변수 이산 푸리에 변환과 이산 역푸리에 변환을 간단하게 구현해보았습니다. 하지만 저희는 디지털 영상을 다루어야하기 때문에 단변수가 아닌 2변수 함수에 대한 이산 푸리에 변환으로 정의를 확장해야합니다. 혹시 아직 임펄스 함수와 임펄스 열에 대한 개념을 기억하고 계신다면 단변수에서도 임펄스 함수에서부터 시작했다싶이 2변수 함수에 대한 DFT 역시 동일하게 시작합니다.
1. 2D 임펄스와 그 선별 특성
두 연속 변수 $t$와 $z$에 대한 2D 임펄스 함수 $\delta(t, z)$는 아래와 같이 정의됩니다. 1D 임펄스 함수와의 차이점은 오직 새로운 변수가 추가되었다는 점과 이제는 변수가 2개이기 때문에 적분이 하나가 아닌 중적분을 취한다는 점입니다.
$$\delta(t, z) = \begin{cases} \infty &t = z = 0 \\ 0 &\text{Otherwise}\end{cases}$$
$$\int_{-\infty}^{\infty} \delta(t, z) \; dt \; dz = 1$$
또한 2D 임펄스 함수 역시 1D 임펄스 함수와 마찬가지로 동일한 선별 특성을 가집니다. 차이점은 변수가 하나 추가되었다는 점이죠!!
$$\int_{-\infty}^{\infty}\int_{-\infty}^{\infty} f(t, z)\delta(t, z) \; dt \; dz = f(0, 0)$$
그리고 이를 일반화 시키면 아래와 같습니다.
$$\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(t, z)\delta(t - t_{0}, z - z_{0}) \; dt \; dz = f(t_{0}, z_{0})$$
지금까지는 2D 연속 임펄스 함수에 대한 이야기였습니다. 이번에는 2D 이산 임펄스 함수로 넘어가보도록 하겠습니다.
$$\delta(x, y) = \begin{cases} 1 &x = y = 0 \\ 0 &\text{Otherwise} \end{cases}$$
$$\sum_{x = -\infty}^{\infty} \sum_{y = -\infty}^{\infty} \delta(x, y) = 1$$
또한 2D 이산 임펄스 함수의 선별 특성 역시 2D 연속 임펄스 함수와 똑같습니다.
$$\sum_{x = -\infty}^{\infty} f(x, y) \delta(x, y) = f(0, 0)$$
$$\sum_{x = -\infty}^{\infty} f(x, y) \delta(x - x_{0}, y - y_{0}) = f(x_{0}, y_{0})$$
지금까지의 내용은 만약 1D 임펄스 함수에 대해서 잘 이해하셨다면 이번에도 스무스하게 넘어가실 수 있을 겁니다.
2. 2D 연속 푸리에 변환 쌍
$f(t, z)$를 두 개의 연속 변수 $t$와 $z$에 대한 연속함수라고 가정해보도록 하겠습니다. 그러면 1D에서 푸리에 변환쌍을 정의했듯이 2D에서도 아래와 같이 정의할 수 있습니다.
$$F(\mu, \nu) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(t, z)e^{-j2\pi(\mu t + \nu z)} \; dt \; dz$$
$$f(x, y) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} F(\mu, \nu)e^{j2\pi(\mu t + \nu z)} \; dt \; dz$$
1D와 마찬가지로 $t$와 $z$를 연속 공간 변수, $\mu$와 $\nu$이 정의된 도메인을 연속 주파수 도메인이라고 합니다. 정의는 외우면 그만이기 때문에 간단한 예제를 통해 좀 더 이해해보도록 하겠습니다. 1D 푸리에 변환에 대해서 배울 때 박스 형태의 함수를 푸리에 변환해보신걸 기억하실겁니다. 이번에는 2D 공간에서의 박스 형태의 함수에 푸리에 변환을 적용해보도록 하겠습니다. 1D에서는 그 결과가 위아래로 요동치는 결과를 얻었습니다. 이번에도 마찬가지로 아래의 그림과 같은 결과를 얻을 수 있습니다.
바로 정의를 써서 확인을 해보도록 하겠습니다. 2D 박스 함수가 $f(t, z) = \begin{cases} A &-\frac{T}{2} \le t \le \frac{T}{2}, -\frac{Z}{2} \le z \le \frac{Z}{2} \\ 0 &\text{Otherwise} \end{cases}$로 정의되었다고 하겠습니다.
$$F(\mu, \nu) = \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(t, z) e^{-j2\pi(\mu t + \nu z)} \; dt \; dz$$
$$ = \int_{-\frac{T}{2}}^{\frac{T}{2}} \int_{-\frac{Z}{2}}^{\frac{Z}{2}} Ae^{-j2\pi(\mu t + \nu z)} \; dt \; dz$$
$$ = A\left(\int_{-\frac{T}{2}}^{\frac{T}{2}} e^{-j2\pi\mu t} \; dt\right)\left(\int_{-\frac{Z}{2}}^{\frac{Z}{2}} e^{-j2\pi\nu z} \; dz \right)$$
$$ = ATZ\left[\frac{\sin{\left(\pi\mu T\right)}}{\pi\mu T}\right]\left[\frac{\sin{\left(\pi\nu Z\right)}}{\pi\nu Z}\right]$$
마지막 식은 1D 박스 함수에서 얻은 결과인 $\int_{-\frac{W}{2}}^{\frac{W}{2}} e^{-j2\pi\mu t} \; dt = W\frac{\sin{\left(\pi\mu W\right)}}{\pi\mu W}$를 각각의 적분에 적용하였습니다. 마지막으로 시각화를 위해서 푸리에 스펙트럼을 얻어야합니다. 이 부분은 그냥 $\left|F(\mu, \nu)\right|$를 얻으면 됩니다.
이렇게 간단한 예제까지 알아보았는 데 보면 볼 수록 1D와 크게 다를 것이 없습니다!! 단순히 변수 하나만 추가되었다는 생각이 드시는 게 정상적입니다.
3. 2D 샘플링과 2D 샘플링 정리
2D 샘플링을 본격적으로 시작하기 전에 1D 샘플링 과정을 상기해보도록 하겠습니다. 먼저, 임펄스 함수 $\delta(t)$로부터 주기 $\Delta T$를 가지는 임펄스 열 함수 $s_{\Delta T}(t) = \sum_{n=-\infty}^{\infty} \delta(t - n\Delta T)$를 정의합니다. 다음으로는 어떤 연속 함수 $f(t)$가 주어졌을 때 샘플링된 함수 $\tilde{f}(t) = f(t)s_{\Delta T}(t)$를 얻게 됩니다. 이렇게 임펄스 함수, 임펄스 열 함수만 알면 연속함수로부터 저희가 원하는 주기로 샘플링을 수행할 수 있습니다.
2D 샘플링도 1D 샘플링과 유사합니다. 다만 2D 샘플링에서는 각 변수 $t$와 $z$ 별로 주기 $\Delta T$와 $\Delta Z$를 정의해주어야합니다. 이것만 다르고 나머지는 똑같습니다! 이를 기반으로 2D 샘플링을 위한 2D 임펄스 열 함수 $s_{\Delta T \Delta Z}(t, z)$를 2D 임펄스 함수를 이용해서 아래와 같이 정의할 수 있습니다.
$$s_{\Delta T \Delta Z}(t, z) = \sum_{m = -\infty}^{\infty} \sum_{n = -\infty}^{\infty} \delta(t - m\Delta T, z - n\Delta Z)$$
임펄스 열만 정의했으면 2D 샘플링은 다 끝났습니다!! 2변수 함수에 2D 임펄스 열을 곱하면 됩니다.
$$\tilde{f}(t, z) = f(t, z) s_{\Delta T, \Delta Z}(t, z) = \sum_{m = -\infty}^{\infty} \sum_{n = -\infty}^{\infty} f(t, z)\delta(t - m\Delta T, z - n\Delta Z)$$
그렇다면 2D 샘플링 정리는 1D 샘플링과 어떤 차이점이 있을까요? 사실 이번에도 또 그렇게 큰 차이는 없습니다. 2D 샘플링에서도 마찬가지로 주어진 함수 $f(t, z)$가 $[-\mu_{\text{max}}, \mu_{\text{max}}]$와 $[-\nu_{\text{max}}, \nu_{\text{max}}]$ 대역 제한되었다는 가정부터 시작하겠습니다. 즉, 함수 $f(t, z)$에 푸리에 변환을 적용하면 주파수 공간에서 위에서 제한한 구간을 제외하고는 전부 0이고 해당 구간에서만 다른 값을 가진다는 가정입니다. 일전에도 언급했지만 해당 가정은 매우 강력한 가정이고 모든 함수가 대역 제한되었다고 볼 수 없기 때문에 이로 인한 문제인 앨리어싱 문제가 발생하다고 언급하였습니다.
하여튼, 2D 샘플링 정리는 1D 샘플링와 유사하게 주파수 공간에서의 주기 $\frac{1}{\Delta T}$, $\frac{1}{\Delta Z}$가 각 축에 해당하는 최대 주파수의 2배보다 큰 샘플링 속도($\frac{1}{\Delta T} > 2\mu_{\text{max}}, \frac{1}{\Delta Z} > 2\nu_{\text{max}}$)로 설정한다면 이후에 샘플링된 함수 $\tilde{f}(t, z)$로부터 대역 제한된 원래 함수 $f(t, z)$를 완벽하게 복원할 수 있다는 정리입니다. 위의 그림을 보시면 더 쉽게 이해가 가실겁니다. 만약 이해가 가시지 않는 다면 1D 샘플링부터 개념을 다지고 오시는 것을 추천드립니다. 다시 한번 말씀드리지만 해당 정리는 대역 제한된 함수에서 정의된 것이기 때문에 대역 제한이 되어있지 않는 함수에서는 완벽 복원이 불가능합니다. 다만 샘플링 속도에 따라서 왜곡 정도만 차이가 나겠죠.
4. 영상의 앨리어싱
방금도 말씀드렸다싶이 앨리어싱을 항상 나타나는 왜곡 현상입니다. 특히 영상 앨리어싱은 크게 2가지의 앨리어싱이 나타나게 되는데 이를 각각 공간 앨리어싱(Spatial Aliasing), 시간 앨리어싱(Temporal Aliasing)이라고 합니다. 시간 앨리어싱을 설명하기 위해서 저희가 어떤 영상 시퀀스, 즉 짧은 클립 비디오가 있다고 가정하겠습니다. 혹시 고속도로에서 자동차 바퀴를 유심히 보신 적 있으신가요? 바퀴가 마치 거꾸로 도는 것처럼 보이는 현상이 시간 앨리어싱이라고 보시면 될거 같습니다. 이러한 현상은 저희가 가진 인지능력이 처리할 수 있는 프레임의 속도가 바퀴 회전 속도에 비해서 너무 작을 때 나타나는 현상입니다.
그 다음으로 공간 앨리어싱은 1D 앨리어싱과 마찬가지로 언더-샘플링으로 인해 발생하는 현상입니다. 따라서 이를 방지하기 위해서는 영상 보간과 리샘플링 기법을 활용해볼 수 있습니다. 영상 보간이 가장 많이 쓰이는 예시는 영상의 확대나 축소 과정에서 쓰입니다. 확대는 오버-샘플링, 축소는 언더-샘플링이라고 볼 수 있죠. 확대의 경우에는 최근접 이웃 보간법을 이용해서 해결합니다. 축소는 행-열 삭제를 활용합니다.
영상의 앨리어싱은 상황에 따라서 다양한 이름으로 불립니다. 대표적으로는 저희가 강한 엣지가 포함된 영상을 다룬다면 나타나는 앨리어싱이 재기(jaggy)라는 블록 형태로 등장합니다. 이러한 앨리어싱은 블러링을 통해서 충분히 제거 가능합니다.
또 자주 나타나는 앨리어싱 중 하나는 무아레 패턴(Moire Pattern)입니다. 이는 주기적이나 거의 주기적인 요소들을 포함하는 장면을 샘플링할 때 자주 발생합니다. 아래의 그림이 가장 대표적인 예시입니다.
5. 2D 이산 푸리에 변환과 그 역변환
최종적으로 2D 이산 푸리에 변환과 그 역변환은 아래와 같이 정의됩니다. 이 정의는 앞으로 계속 써먹을 예정이니 꼭 알아두시길 바랍니다.
$$F(\mu, \nu) = \sum_{x = 0}^{M - 1}\sum_{y = 0}^{N - 1} f(x, y)e^{-j2\pi(\frac{\mu x}{M} + \frac{\nu y}{N})}$$
$$f(x, y) = \frac{1}{MN}\sum_{x = 0}^{M - 1}\sum_{y = 0}^{N - 1} F(\mu, \nu)e^{j2\pi(\frac{\mu x}{M} + \frac{\nu y}{N})}$$
'image processing' 카테고리의 다른 글
디지털 영상 처리 - 2D DFT 특성 2 (0) | 2021.04.11 |
---|---|
디지털 영상 처리 - 2D DFT 특성 1 (0) | 2021.04.10 |
디지털 영상 처리 - 이산 푸리에 변환과 이산 역푸리에 변환 구현 (0) | 2021.04.07 |
디지털 영상 처리 - 단일 변수 함수의 이산 푸리에 변환(Discrete Fourier Transform) (0) | 2021.04.05 |
디지털 영상 처리 - 샘플링 정리와 샘플링된 함수 복원 (0) | 2021.04.04 |