What Is Digital Signal Processing?
신호(signal)와 신호 처리(signal processing) 대해서 정의를 내리자면 각각 다음과 같습니다:
예를 들어 주변 온도를 우리가 Celsius degree라는 물리적 변수를 기준으로 시간에 따른 온도의 변화를 기록하는 경우, 이렇게 만들어진 data set은 온도 "신호"가 될 것입니다. 이 신호에 대한 가장 단순한 "처리"로는 월간 온도 평균과 같은 어떤 파라미터를 계산하는 것이 있겠죠.신호: 시간 혹은 공간에 대해 변화하는 현상에 대한 formal description
신호 처리: 신호에 들어있는 정보를 바꾸거나 분석하는 any operation.
또한 신호 처리는 어떤 물리적인 값 자체에 직접 가해지는 것이 아니라 물리적인 값의 "abstract representation"을 기반으로 수행된다는 점이 중요합니다. 이런 abstract representation의 방식에 따라서 신호 처리의 기본 단위(unit)가 정해지게 됩니다.
한편 "디지털 (digital)"이라는 수식어구는 라틴어 digitus에서 유래한 것으로 손가락을 의미하는데, counting은 가장 기초적이고 오래된 abstraction이라 합니다. 즉, 디지털 신호 처리는 시간을 포함한 모든 것들에 정수(integer number)와 같이 countable한 abstraction representation을 사용한다는 것을 의미합니다.
좀 더 구체적 예시로는, 주변 온도를 측정한 각각의 관측(instants)이 셀 수 있는 집합(the days in a month)을 이루고 각 관측값(measure)들 역시도 온도계의 눈금 단위와 같이 유한한 수의 집합으로 표현되는 것을 생각해보면 되겠습니다.
재미있는 점은 디지털 신호 처리에서는 신호가 "어디서 유래한 것인가에 관계없이" 이를 "정수로 표현 가능한" abstract representation을 사용한다는 것인데요. 지금 당장은 이 사실이 별달리 중요해보이지 않을 수 있으나, 이 특징이 디지털 신호처리가 지금과 같이 크게 발전할 수 있었던 큰 동력이라는 점은 차차 글이 진행됨에 따라 분명해지리라 생각합니다.
Analog vs. Digital worlds
세계에 대한 "digital" 혹은 정수를 이용한 표현 방식은 우리가 다루는 문제가 가축이나 날짜를 세는 것과 같이 간단할 때까지는 아무 문제가 없이 잘 동작했으나, 점차 세상이 복잡해지고 이를 설명하는 모델 역시도 복잡해질 필요가 생기면서 한계에 부닥쳤습니다.
신호 처리 쪽 용어로 얘기하자면, 정수로 표현되는 세계가 "analog"와 같이 연속적인 세계를 설명하는 잣대로 사용하기에는 너무 초보적이고 거칠어서 마치 정밀한 시계를 다루는 시계공이 못을 박는 망치를 들고 있는 것과 같다는 것입니다.
문제는 무한대와 무한소로 나눠질 수 있는 연속적인 analog 세계의 analytical 모델을 사용하면 이론적으로 분석하기는 편할지언정, 실제로 이를 사용하기 위해서는 언제나 유한하고 이산적인 digital 세계로 내려와야한다는 점입니다.
예를 들어 온도를 측정하는 것만해도, 우리가 얻을 수 있는 것은 언제나 일정 간격(time)을 두고 측정한 관측값들일 뿐 임의의 시간에 대해 해당하는 온도에 대한 관계를 보여주는 analytical 모델이 아니죠.
따라서 analog와 digital representation이 서로 만족할만한 합의에 이르기 위해 부단한 노력들이 있어 왔고, series expansion이나 numerical integration 등의 알고리즘들이 analytic 결과를 practically computable한 형태로 만들기 위한 노력의 예시들이라 하겠습니다.
디지털 신호 처리가 멋진 것은 이렇게 양분된 두 세계가 서로 가장 만족스러운 형태로 합의에 이를 수 있도록 한다는 점입니다.
Discrete Time
아날로그 기록 방식의 가장 큰 문제점은 신호를 추상화 하여 기록하는 것이 아닌 하나의 물리적인 현상을 또 다른 물리적 현상으로 옮기는 것에 불과하다는 점인데요. 이 때문에 근본적으로 아날로그 신호는 기록(recording)의 형태에 따라 각각 다른 신호 처리 시스템이 필요하게 됩니다. 예를 들어 우리가 온도 변화 함수 $f(t)$를 알고 있고,
Analytical and empirical averages
일정 간격 $[T_0, T_1]$ 사이에 일어난 온도 변화의 평균값을 알고싶다면 이에 대한 analytical solution은 다음과 같은 적분 방적식을 푸는 것이 됩니다: $$\bar{C} = \frac{1}{T_1-T_0}\int_{T_0}^{T_1} f(t) dt.$$ 그러나 analytic model이 없는 현실에서는 어떤 기기를 사용하여 온도를 측정, 기록하였을 것이고 그 데이터를 가지고 평균 온도를 계산할텐데요. 만약 온도가 thermograph를 이용하여 그래프의 형태로 기록되었다면 plainmeter라는 면적을 구하는 기계적 도구를 사용하여 면적을 알 수 있을 것입니다. 그러나 온도 변화가 thermocouple과 같이 전압을 이용하여 기록을 하는 경우 학부 전자기초 시간에 배우는 RC 네트워크로 voltage integration 회로를 만들어 평균값을 계산해야 할테죠. 이렇듯 아날로그 신호에서는 평균을 구하는 매우 단순한 예에서도 각 경우마다 특정한 디자인이 필요하기에 범용적으로 사용할 수 있는 방식을 고안하기 어렵다는 것을 알 수 있습니다.
한편, 디지털 방식과 같이 하루에 한 번씩 측정한 온도에 대해 평균을 구하는 것은 매우 쉽습니다: $$\hat{C}=\frac{1}{D}\sum^D_{n=1}c_n.$$ 단순히 초보적인 덧셈과 나눗셈만 수행하면 원하는 값을 얻을 수 있죠! 그렇다면,
"$\bar{C}$와 $\hat{C}$의 차이가 (만약 있다면) 얼마나 될까요?"만약 저 자연계 어딘가에 $f(t)$라는 온도 함수가 있다는 것을 받아들인다면 하루 주기($T_s$)마다 측정한 $c_n$ 온도 측정값들은 이 함수의 $samples$라고 할 수 있습니다: $$c_n=f(nT_s).$$ 이런 맥락에서 보면 $\hat{C}$는 $\bar{C}$의 Riemann approximation이라고 할 수 있으며 앞선 질문은 이 approximation의 질 즉, continuous-time 함수에서 일부 샘플들만 취함으로써 우리가 얼마나 정보를 버렸는지에 대해 묻는 것과 같습니다.
이에 대한 정답은 놀랍게도 해당 물리적 현상이 "그렇게 빨리 변하지 않는다"는 가정 하에, 두 representation이 "완벽히 일치한다"는 것입니다. 즉, continuous-time function과 우리가 얻은 측정 샘플들 간의 정보 손실이 전혀 없다는 뜻이죠.
잠시 가정에 대한 걱정을 내려놓고, 이 사실이 얘기해주는 것에만 집중해보면 매우 놀랍게도
- 아날로그와 디지털 세계가 완전히 공존하는 것이 가능하다는 뜻이며
- 우리가 두 세계 사이를 오갈 수 있는 매우 강력한 도구를 갖고 있다는 것입니다 (sampling theorem).
$$f(t)=\sum_{n=-\infty}^\infty c_n \frac{\sin(\pi(t-nT_s)/T_s)}{\pi(t-nT_s)/T_s}.$$ 따라서 이론적으로는 우리가 측정값들을 가지고만 있다면 이를 바탕으로 continous-time 형태로 표현하는 것이 가능하며, 이것은 이어서 우리가 갖고 있는 매우 강력한 수학적 도구인 미분을 사용하여 함수를 분석하는 것이 가능해진다는 것을 뜻합니다.
더 좋은 점은 continous-time에서 이루어진 미분과 같은 분석이 항상 discrete-time에 대응하는 방식이 존재하여 굳이 우리가 얻은 측정값들을 가지고 continous domain으로 옮겨서 분석한 후, 다시 discrete domain으로 내려오는 복잡한 방식을 취할 것 없이 discrete domain에서 바로 분석을 하면 된다는 것입니다.
Discrete과 continuous representations 사이의 equivalence는 우리가 샘플을 얻는 속도에 비해 다루는 신호가 얼마나 충분히 "느린가"에 달려 있습니다. 즉, 연속된 샘플을 측정하는 사이에 신호가 갑자기 이상하게 움직이지 않고 충분히 부드럽게 (smooth and well behaved) 움직인다면 문제가 없다는 뜻입니다.
그래서 sampling theorem이 해주는 역할은 (좀 더 쉽게 설명하자면) 신호가 갖는 최대 주파수와 우리가 얼마나 자주 혹은 빨리 샘플을 얻어야 하는지에 대한 정량적인 기준을 알려주는 것입니다. 대다수의 학부 수준 디지털 신호 처리 과목의 반절 혹은 그 이상은 이 sampling theorem을 배우기 위한 준비와 theorem의 의미에 대해 공부하는 것이겠습니다. 특히 주파수 영역은 Fourier transform을 사용하여 알아낼 수 있기에 이를 신호 처리 과목에서 중요하게 다루며 배우는 것이라 할 수 있는데, 재미있는 점은 Fourier transform이라는 것 자체가 주기성을 띄는 함수들을 "셀 수 있는" 값들로 표현하기 위한 도구로서 사용된다는 것입니다. 도구만 달라졌을뿐 앞에 손가락으로 숫자를 세던 것이 생각나지 않으시나요?
"Everything comes together."
Discrete Amplitude
시간 연속성에 대한 문제는 sampling theorem으로 어느 정도 해결이 되었지만, 여전히 남아있는 문제가 하나 있습니다. 현실 세계의 한계로 인해 실제 측정을 할 때 생기는 오차는 우리가 어찌 할 수 없는 문제이지요.
만약 우리가 analytical model을 다룬다면 시간축뿐만 아니라 함수 값 역시도 연속적인 성격을 갖고 있는데요. 그러나 현실에서는 절대로 이와 같은 무한대의 정밀성을 얻을 수 없다는 것은 자명합니다. (아무리 온도계의 눈금을 잘게 쪼개어 기록을 하더라도 한계가 있는 것처럼)
따라서 실제로는 우리가 얻는 측정값들도 결국 유한한 숫자들의 집합이고, 그렇다면 이들은 셀 수 있기에 정수로 mapping하는 것이 가능해집니다. 이러한 과정을 quantization이라고 부르고 이는 sampling과 함께 digital signal을 얻는데 필수적인 요소가 되는데요.
Quantization은 정보 손실을 어쩔 수 없는 것으로 받아들인다는 점에서 연속체 문제를 시간에 비해 매우 거칠게 해결하는 것이라 할 수 있습니다. 여기에는 그럴 수 밖에 없는 이유가 있는데 그게 바로 신호 처리를 하다보면 언제나 만나게 되는 "noise"입니다.
우리가 어떠한 기계적 기록 장치를 쓴다고 해도 아날로그 기록을 하는 기기라면 언제나 noise가 함께하게 됩니다. Noise는 자연에서 오는 것이고 이를 완전히 제거하는 것은 불가능하기 때문에 신호 처리를 할 때 일정 수준의 정밀성으로 만족하는 정도로 합의를 하는 것이죠.
문제는 noise가 단순히 측정에서만의 문제가 아니라 처리를 할 때도 함께한다는 점입니다.
여기서 디지털 신호 처리의 또 다른 장점이 나오는데, 디지털 신호 처리는 언제나 셀 수 있는 정수의 수열을 다루기 때문에 디지털 영역에서는 processing으로 인한 noise가 생기지 않습니다.
매우 자명한 예로 신호를 복제하는 것을 생각해보면, 테이프를 복사하는 것은 원본 테이프를 복사본과 그 복사본을 이용한 다음 복사본으로 넘어갈 때마다 추가적인 nosie가 더해져서 점점 음질이 열화되지만 mp3의 경우 원본과 복사본이 근본적으로 차이가 없다는 것을 알 수 있습니다.
Terminology
마지막으로 용어에 대해 한가지 짚고 넘어가겠습니다. Amplitude에 대한 정확성은 사실 하드웨어에 달린 문제로, 예를 들자면 CD와 DVD는 서로 precision 즉 샘플 당 담을 수 있는 정보량에 차이가 있습니다. 이렇게 amplitude에 대한 정밀성은 하드웨어에 의존적이므로 사실상 신호 처리 이론에 대해 배우거나 개발할 때는 quantization을 고려하지 않고 마치 연속된 실수 값인 것 마냥 취급하게 됩니다. 따라서 사실상 우리가 앞으로 배우는 것은 엄밀히 말하자면 모두 discrete-time signal processing이라 불러야 맞고 digital signal processing은 실제 기기의 영역에서 이뤄지는 일임을 알아야 합니다. 그러나 quantization을 고려하지 않는 것이 좀 더 이론적으로 다루기도 쉽고 일반적인 분석이 가능하기 때문에 이를 잘 구별하지 않고 digital signal processing이라 얘기한다는 점을 분명히 알아야겠습니다.
아 마지막으로 글을 읽는데 순서를 추천드리자면 이 다음에 (9-1)로 넘어가시는 것을 권해드립니다. 그렇게 하는 것이 신호처리를 배우는 목적을 이해하고 전체적인 감을 잡는 것에 훨씬 도움이 된다고 생각합니다.
To be continued ... (planned)
- Preface
- What is Digital Signal Processing? ($\leftarrow$)
- Discrete-Time Signals (2)
- Signals and Hilbert Spaces
- Fourier Analysis
- Interpolation and Sampling (9-1 $\leftarrow$ next to read)
- Interpolation
- Sampling theorem
- Aliasing
- Multirate Signal Processing
- Downsampling
- Upsampling
- Oversampling
댓글 없음:
댓글 쓰기