임시 블로그 이름

ECG 신호처리 (1) 본문

엔지니어링

ECG 신호처리 (1)

paeton 2012. 1. 25. 09:41
  • 심전도(ECG) 신호처리

사실 ECG신호에 대한 관심은 Einthoven할아버지가 ECG라는걸 집대성(?)한 이후 꾸준히 있어왔으나, 70년대 ~ 90년대가 절정이 아니었나 싶다. 논문들을 겁색해 보면 그 시절 논문들이 상당히 많다. 최근에는 U-Health, E-Health이런것 때문에 ECG신호에 대한 관심이 다시 매우 높아지고 있다. 사람의 생존상태, 스트레스 상태들을 직접/간접적으로 알려주고, 측정 장비 또한 매우 저가로 또 소형으로 만들 수 있기 때문이다.

한 가지 예를 들면, 모바일 또는 원격지에서 ECG신호를 비롯한 다양한 생체신호를 수집하고, 그것을 전송하고, 의사의 진단을 받고, 그것을 다시 환자에게 피드백 해주는 이런 시스템을 생각해 볼 수 있다. 학회에 가보면 실제로 많은 기업들이 이러한 어플리케이션을 염두에 두고 있는것 같다.

이런 시스템의 구축에 앞서서, 또는 이제 막 ECG신호에 대한 연구를 시작한 사람들에게, 어떻게 ECG신호를 프로세싱 해야 하는지 아주 기본적인 이야기들을 좀 해보고자 한다.


사실 내가 뭐 이쪽에 대가도 아니고, 그냥 남들과 같이 연구하는 사람의 입장에서, 또 학생의 입장에서, 내가 아는 것을 혼자 알고 있기 보다는 공유해보고 싶어서 이 글을 쓴다. 왜냐하면 나도 이제까지 인터넷을 돌아다니며 누군지 모를 많은 사람들에게 도움을 받았으니까. 최소한 받은만큼은 다시 뱉어내야 뭔가 그 생태가 유지되지 않겠나.


여기에 있는 내용이 무조건 맞다기 보다는, "저는 이렇게 하고 있어요" 또는 "이런 방법도 있습니다" 정도로 봐 줬으면 좋겠다.



  • ECG신호의 이해

심장에서 나오는 전기신호다.

일단 ECG가 뭔지에 대한 자료는 정말 많이 널려있고, 설명도 참 잘되 어있다. 그러니까 내가 여기서 동방결절이 어쩌고, 히스 다발이 어쩌고, 퍼킨지 섬유가 어쩌고 하는 이야기를 하는것 보다는 링크로 대신하는게 좋을것 같다.

위키피디아: http://en.wikipedia.org/wiki/Electrocardiography


자세한 설명은 위의 링크를 참조하고, 몇가지 중요한 부분에 대해서만 이야기를 해 보자.

ECG신호의 측정은 아래 그림이 스탠다드다.

위키피디아 페이지에서 퍼옴


심장 주변 가슴에서 6개의 전극(electrode)를 사용하고, 팔과 다리에 각각 하나씩 전극을 달게 된다. 총 10개의 전극을 사용하게 되는데, 이걸 12-Lead라고 부른다. 전극 10개를 붙이는 12-Lead라고 하는 이유는, 각 전극에서 얻어진 전압을 더하고 빼서 총 12개의 신호를 만들어내기 때문이다. 자세한 내용은 위의 링크를 참조 하자. 각각의 이름은 v1~v6, I~III, aVR, aVL, aVF이다.

당연히 각 전극에서 부터 얻어지는 신호들은 서로 그 형태가 살짝살짝 다르고, 극성도 다르다. 한가지 재미있는 점은, 위의 측정 방식은 심장이라는 전압을 생성해 내는 기관을 여러방향에서 본것이라고 생각할 수 있다는 것이다. 심장은 3차원의 부피를 가지므로, 여기에서 생성되는 전기신호인 ECG도 사실은 3차원이고, 각 전극에서 얻어진 신호는 3차원 신호의 그 방향으로의 프로젝션(projection)이다. 아래 그림을 보면 이해가 좀 더 빠르게 될것 같다.


이미지는 http://compharm.net/ecg_scanner/basics/index.htm 에서 가져옴

가운데 있는 심장에서 3차원 전기 신호를 만들어내면, 각 방향의 전극에서 그 방향에 해당하는 신호를 얻어내는 것이다. 즉, 다시 말하면, 위의 12개의 1차원 신호를 이용해서 잘 분석하면 심장의 어느 부분에 이상이 있는지 대략적으로 알 수 있게 된다. 실제로 12-lead ECG를 이용해서 심장의 전기적 분포를 영상화 하고 이상을 진단하는 연구들도 많이 있다.


ECG신호는 일반적으로 다음과 같은 형태를 가진다.


이미지는 http://www.davita-shop.co.uk/ecg-instruments.html 여기에서 가져옴


앞에 작은 봉우리를 P-wave, 중간을 QRS-complex, 오른쪽에 큰 봉우리를 T-wave. 위의 그림에는 U-wave도 나와있는데, 이건 사람마다 보이지 않는 경우도 많고, 워낙 그 크기가 작아서 노이즈와 구분이 쉽지 않으니 그냥 넘어가자. 각 wave가 심장의 어떤 동작에서 어떻게 만들어지는지는 위의 위키에 잘 나와있으니까 그걸 참고하자.

일단 ECG신호를 처리하는데 있어서 가장 중요한 것은 QRS-complex이다. 일단 가장 amplitude가 크고, 상대적으로 신호대잡음비가 다른 부분에 비해서 높다. 또한, 심장의 건강, 또는 부정맥 진단 등 많은 부분에 있어서 이 QRS-complex에서 정보를 많이 추출하게 된다.


  • ECG신호 데이터 베이스

ECG신호 처리에 대한 연구를 하고, 기법을 개발해서 어떠한 결과를 얻고, 그것을 일반화 해서 많은 사람들에게 적용하기 위해서는, 최대한 여러 사람의 데이터에 그 기법을 적용해 보아야 한다. 또한, 개발된 기법이 기존의 기법들과 정당하게 비교되기 위해서는 동일한 데이터를 이용해서 처리된 결과를 보고 판단해야 한다.

ECG관련 논문을 읽어보면 가장 많이 등장하는 데이터베이스가 MIT-BIH데이터베이스이다. 최근에는 PTB데이터베이스 또한 많이 사용하고 있는 추세이다. 이러한 데이터들은 Physionet이라는 사이트에서 얻을 수 있다.

링크: www.physionet.org


아래는 각 데이터 들을 볼 수 있는 Physionet 안에 있는 Physiobank-ATM이라는 페이지를 캡쳐한 것이다.


계속해서 많은 연구자들로부터 데이터를 기증받고 있으며, 웹사이트에서 직접 파형들을 볼 수도 있고, 다양한 포멧(matlab, txt를 모두 지원)으로 데이터를 다운로드 받을 수 있다.

또한, 기본적으로 ECG신호 처리를 위한 다양한 프로그램들을 제공해 주고 있다. 친절하게 설명이 나와 있으니까, 한번 잘 뒤져 보자. 나중에 시간이 되고, 내 맘이 동하면, 설치/사용법에 대해서도 이야기 해 볼까 한다.

'엔지니어링' 카테고리의 다른 글

ECG 신호처리 (2)  (0) 2012.12.20
이미지 워핑 (Image Warping)  (4) 2012.04.26
옵티칼 플로우 (Optical Flow)  (4) 2011.10.27
Magnitude & Phase Spectrum Viewer  (0) 2011.10.27
FDATOOL을 이용해서 Matlab에서 필터 설계하기  (13) 2011.10.26
Comments