2015년 9월 22일 화요일

뇌파 분석 2

교수님의 궁금한 질문에 답하는 착한 학생.

[[Sampling of Signal and Filter]] (신호의 샘플링 및 필터) 
 
컴퓨터에서 측정하는 전기신호는 Sampling을 거친다. 측정 데이터는 각 측정시각마다 전압을 측정하여 이를 나열한 디지털 데이터이다. 즉, 연속한 데이터가 아닌 이산 데이터를 갖게 되며, Sampling Rate (OpenBCI는 250Hz - 1초에 250개의 data)에 따라 데이터의 개수가 정해진다.   
 
Sampling을 해서 데이터를 측정할 때, Sampling rate 보다 더 빠르게 변동하는 신호는 정확히 측정할 수 없을 것이다. 신호의 변하는 주기보다 측정하는 주기가 더 느리기 때문이다. 그림과 같이 같은 디지털 Data라 할지라도 그 주기에 따라서 여러가지로 해석이 가능하다. 이러한 이유로, 신호시스템에서는 신호를 Sample을 통해서 측정할 때, 최소한의 Sampling Rate의 기준이 제시되어 있다. 이를 Nyquist Rate라고 한다. (Nyquist는 발견한 과학자 이름이다) 신호가 지니고 있는 주파수 대역을 f_s 라고 한다면, Nyquist Rate는 2*f_s 이며, 이 이상의 rate로 Sampling을 해야 정확한 측정이 가능하다. OpenBCI의 경우 측정하는 Sampling rate가 250Hz로써, 125Hz 이하의 신호는 정확하게 측정이 가능하다는 것이다.  
 


 또한, 뇌파의 경우, 뇌파의 진폭이 매우 작기 때문에 Noise에 대한 영향을 많이 받는다. 이를 위해 Filter를 사용하며 특히 60Hz 대역에서 생기는 Noise를 없애기 위한 Notch Filter를 사용한다. 또, Band pass Filter를 통해 각 주파수 대역에 있는 전기신호들을 분해하여 분석할 수 있다. Band Pass Filter의 Low band를 8Hz, High band를 12Hz로 설정하면 알파파(8-12Hz) 대역의 신호를 분석할 수 있을 것이다. 
 
필터에 대해서 이야기해보자. x[n]을 시간 축에서 발생하는 디지털 신호라고 하자. (n = 1, 2, .... N) 이 데이터를 주파수 축으로 변환하는 것이 바로 Fourier Transform이다. Fourier Transform 은 Data가 연속적인지, 이산적인지, 또한 주파수 Domain을 연속적인지, 이산적인지에 따라 4가지로 분류된다. (Data , Frequency) = (연속, 연속), (이산, 연속), (연속, 이산), (이산, 이산) 의 4가지가 나타날 것이다. 이 중 뇌파에서 사용하는 것은 디지털 신호를 받아서 이산적인 주파수에서 분석을 하기 때문에 (이산, 이산)일 것이다. 이러한 경우를 Discrete Time Fourier Series (DTFS)라고 부른다. 각 주파수 대역별로 나타나는 변환된 신호를 X[k] 라 하자. (k = 1, 2, ... , F) 
 
(FS - Fourier Series)
x[n] ----(FS)----> X[k] 간에는 여러가지 성질이 존재한다.
그 중, 필터에서 사용되는 것은 바로 다음 성질이다. 
 
x[n] X y[n] -----(FS)-----> Y[k] * X[k]
x[n] * y[n] -----(FS)-----> Y[k] X X[k]  
 
신호 2개의 곱은 Fourier Series에서는 * 연산을 하는 것과 같고, 신호 2개를 * 연산하는 것은 Fourier Series에서 곱연산을 하는 것과 같다.  
 
여기서 *는 Convolution 연산으로 
 
Y[k] * X[k] = Sum (q in (1,F)) (Y[q]X[k-q]) 의 형태로 주어진다. 
 
X[k] 신호에 Y[k] 를 곱하는 데, 
Y[k] = 1 ( 8<=k <=12)
Y[k] = 0 ( otherwise ) 로 Y[k]를 만들어서 곱하면 
 
주파수 대역에서는 8Hz ~ 12Hz 대역만 남을 것이다. 
 
이것이 필터의 원리이며, x[n] 과 y[n]을 Convolution 시키는 것이 바로 필터를 통과하는 것이다. 이러한 y[n] 은 필터의 목적에 따라서 다양하게 구현되어 있다. Low pass filter는 낮은 주파수만 통과시키도록, High pass filter는 높은 주파수만 통과시키도록, Band pass filter는 해당 범위 대역의 주파수만 통과시키도록 만들어져 있다. 이러한 필터는 Python이나 MATLAB 및 OpenVibe에서 구현되어 있어서 가져다 사용하면 된다.  
 
OpenVibe에 구현된 Filter를 캡쳐한 내용을 첨부합니다.



[[ Power of Signal ]] (신호의 세기) 
 
뇌파 신호는 Discrete Time를 받아 이를 Discrete Frequency로 변환함으로써 분석된다. 이를 위해 DTFS(Discrete Time Fourier Series)를 사용하며, 디지털 신호를 x[n], Frequency 변환을 X[k] 라고 할 때, 신호의 에너지는 한 주기 안에서 |x[n]|^2 의 합으로 정의된다.  
 
x[n]^2 은 x[n] X x[n] 이고 이는 Fourier Series를 통해 X[f] * X[f]로 변환 된다. 변환된 값을 토대로 하여 계산과정을 거쳐 Parseval은 Energy에 대한 다음 첫번째 그림과 같은 정리를 내어 놓는다. 
  
시간 축에서 각 데이터를 제곱해서 RMS(Root Mean Square) 값을 구하는 것이나, 주파수 축에서 각 데이터를 제곱하여 구해도 에너지는 같게 나타난다는 것이다. 따라서, 각 신호의 세기를 주파수별로 나눠서 분석하는 것이 Energy를 분석하는 것의 한 방법이 된다는 것이다. 
 
Power Spectrum을 구하는 Box Diagram은 두 번째 그림과 같다. 주어진 신호를 각 주파수 대역의 Filter를 거친 뒤, 나오는 신호 x를 square한다, 이후 averaging을 거쳐 각 주파수 대역의 Power값을 갖는다. 신호를 제곱해서 구하기 때문에 Power Spectrum 값은 음수가 나올 수 없으며, Parseval 정리에 의해서 신호의 에너지를 주파수 대역에서 나타내는 것이 가능한 것이다.

댓글 없음:

댓글 쓰기