0. Digital Signal Processing, 개요
디지털 신호 처리(Digital Signal Processing, DSP)의 정의에 대해 "디지털화된 신호를 원하는 방향의 정보 신호로 수정하거나 개선할 목적으로 알고리즘에 의해 수치적으로 처리하는 것을 의미한다"라고 위키피디아에 정리되어 있다. DSP는 현대 산업의 아주 핵심적인 위치를 차지하고 있다. 레이더, 통신망, 이미지 압축 등 비교적 기술의 연도가 오래된 것부터 컴퓨터 비전, 오디오 분석, AI 등 최근 주목받고 있는 기술들 모두 그 중심에는 DSP가 있다.
DSP의 일반적인 목적은 실세계의 연속적이고 무한한 정보(Analog information)을 컴퓨터가 다룰 수 있는 분리되있고 유한한 정보(Digital information)으로 변환하고 이를 측정 및 저장, 가공하는 것이다. 이 때 아날로그 정보를 디지털 정보로 변화하는 것을 샘플링(Sampling)이라 하고, 이를 담당하는 소자를 ADC(Analog to digital converter)라고 한다. 샘플링된 디지털 정보는 컴퓨터에 저장되고 사용자는 자신의 입맛에 맞추어 이 정보를 사용하게 된다. 때로는 디지털 정보를 다시 아날로그 정보로 변환할 필요가 있기도 한데 이때 관여하는 소자를 DAC(Digital to analog converter)라고 한다.
왜 굳이 디지털화된 정보를 처리해야 하는가? 결국 디지털화된 정보는 아무리 아날로그 정보로 다시 복구된다 하더라도 원본에 근사할뿐인데 말이다. 가공없이 아날로그 정보를 다룰 수는 없는가? 물론 가능은 하다. 그 어떤 컴퓨터보다도 뛰어난 우리의 두뇌는 학습을 통해 무한이라는 개념을 다룰 수 있다. 이론을 바탕으로 처리된 정보는 오차가 없거나 혹은 거의 없다싶이 한 아주 정확한 정보들이다. 그럼에도 우리는 약간의 정확도를 포기하고 디지털화된 정보를 처리함으로써 많은 것을 얻을 수 있기에 디지털 세계에서 정보를 다룬다.
첫째, 디지털화된 정보는 안정적으로 저장할 수 있다. 아날로그 정보에 대해서 무한하다고 말한 바 있다. 수치적으로 단순히 무한하게 커지거나 작아지는 것 뿐만 아니라. 한없이 정밀해질 수 도 있다는 이야기이다. 그 뜻은 아무리 안전하게 저장된 아날로그 정보도 단 0.00000000000001 혹은 그보다 훨씬 작은 오차가 발생하기만 하면 원본에서 변질된다는 의미이다. 한편으로 우리가 정보를 활용함에 있어서 한없는 정밀함을 요구하는 경우도 드물다. 정리하자면 인간에게 무한한 정밀함은 필요없다. 분야마다 다르겠지만, 약간의 오차는 허용범위이고 되려 과도하게 정밀한 비용은 저장에 있어서 불필요한 비용을 야기한다. 이 점에 있어서 디지털화된 정보는 오차를 허용할 지언정 아날로그 정보와 비교할 수 없는 안정성을 자랑한다. 디지털화된 정보는 결국 0과 1로 표현된다. 즉 그 표현에 있어서 애매함이 없다는 것이다. 메모리 상에서 전류가 아주 조금이라도 흐른다면 컴퓨터는 해당 비트(bit)를 1로 인식할 것이고, 그렇지 않다면 0으로 인식할 것이다.(물론 완변하게 0을 기준으로 하지는 않고 0.3v 정도 낮은 전압을 기준으로 한다...보통은...) 아주 조금의 변화가 있어도 원본이 훼손되는 아날로그 정보와 다르게 전류가 흐르는 한 1로 인식하고, 흐르지 않는 한 0으로 인식하는 디지털 정보는 안정성이 크다.
두 번째, 컴퓨터를 이용하여 정보를 다룰 수 있다. 사실 DSP를 하는 궁극적인 이유라고 할 수 있다. 때로는 정보를 처리, 가공함에 있어서 막대한 양의 연산을 요하는 경우가 있다. 컴퓨터는 이 경우 훌륭한 해결수단이 된다. 다만 컴퓨터는 사람과 다르게 다룰 수 있는 정밀함과 크기가 한정되어 있다. 적절하게 아날로그 정보를 디지털 정보로 가공하고 이를 컴퓨터를 활용하여 처리함으로써, 여러 사람이 몇 백년에 걸쳐서 해결해야할 연산을 불과 몇 초 혹은 그보다 짧은 시간 안에 처리할 수 있다는 것은 DSP의 매력적인 부분이다.
학부 과정에서 "신호와 시스템" 과목을 수강했던 기억이 난다. 당시 수강할 때는 몰랐지만 스스로 공부를 하기 시작하면서 어렵더라도 전공 공부의 기초가 되는 과목이었다는 것을 알게 되었다. 그 후에 의료영상이나 의료시스템과 같은 심화 과목을 이수하면서, 또 추가적으로 심화 학습을 하면서 이 부분이 아쉬었던 경험도 몇 번 있었다.
전공에 대한 학습 필요성을 느껴서, 학습을 위한 준비(?) 느낌으로 DSP에 대해서 몇 편의 글에 걸쳐서 다루어 볼려고 한다. 단순하게 이론만을 학습하는 것이 아니라, 추가적으로 주제와 연관된 논문을 다루거나, 소프트웨어로 주요 알고리즘을 구현하는 등 실습도 곁들일 생각이다. 그러면 시리즈의 첫 번째 글을 여기서 마무리하고자 한다.