본문 바로가기
Python Library/HeartPy

[HeartPy] 심박수 분석 (Heart Rate Analysis)

by goatlab 2022. 8. 23.
728x90
반응형
SMALL

심박수 분석 (Heart Rate Analysis)

 

Python Heart Rate Analysis Toolkit은 주로 PPG 신호를 염두에 두고 설계되었다. 라즈베리파이와 아두이노 플랫폼은 합리적인 가격의 오픈 하드웨어 플랫폼을 제공함으로써 보다 다양한 데이터 수집이 가능하다.

 

심박수 신호 측정

 

심박수를 측정하는 데 자주 사용되는 두 가지 방법은 심전도 (ECG)와 광혈류계 (PPG)이다. 온라인에서 사용 가능한 많은 알고리즘은 ECG 측정을 위해 설계되었다. PPG 데이터 에 ECG 알고리즘 (유명한 Pan-Tompkins)을 적용하는 것이 반드시 의미가 있는 것은 아니다. ECG와 PPG는 모두 심장 활동에 대한 측정이지만 이를 추정하기 위해 매우 다른 구성을 측정한다.

 

ECG는 일반적으로 가슴에서 신체에 부착된 전극을 사용하여 심장 근육의 수축으로 이어지는 전기적 활성화를 측정한다. PPG는 광원과 함께 작은 광학 센서를 사용하여 각 심장 박동 후 혈액이 피부를 통해 관류할 때 피부의 변색을 측정한다. 전기 활성화 및 압력파 각각을 측정하면 매우 다른 신호 및 노이즈 속성이 나타나며, 이를 처리하려면 특수 도구가 필요한다. 이 툴킷은 PPG 데이터를 전문으로 한다.

 

그림 1: 가. 그리고 b. ECG 및 PPG 파형 형태를 각각 표시한다. ECG는 별개의 파동(a, IV)으로 나뉘며, 그 중 R파(a, II)는 심장 박동 추출에 사용된다. PPG 파동에서는 수축기 피크(b, I)가 사용된다. c의 줄거리. ECG와 PPG 신호 사이의 관계를 보여준다.

 

ECG에서 가장 눈에 띄는 것은 QRS-복합체 (그림 1a, I-III)로, 이는 심실이 심장 근육에서 혈액을 수축 및 배출하도록 하는 전기적 활성화를 나타낸다. R-피크는 신호에서 가장 큰 진폭의 지점이다. 심장 박동을 추출할 때 이러한 피크가 ECG에 표시된다. ECG의 장점은 좋은 신호/잡음 비율을 제공하고 관심 있는 R-피크는 일반적으로 주변 데이터 포인트에 비해 큰 진폭을 갖는다는 것이다 (그림 1c). 주요 단점은 ECG 측정이 침습적이라는 것이다. 운전과 같은 실험 작업을 방해할 수 있는 참가자의 가슴에 유선 전극을 부착해야 한다.

 

PPG는 각 심장 박동 후 모세혈관과 동맥을 통해 혈액이 관류할 때 피부의 변색을 측정한다. 신호는 수축기 피크 (그림 1-b, I), dicrotic notch (II) 및 이완기 피크 (III)로 구성된다. 심장 박동을 추출할 때 수축기 피크 (I)가 사용된다. PPG 센서는 주요 이점 중 하나인 심박수 데이터를 측정하는 덜 침습적인 방법을 제공한다. 일반적으로 센서는 손가락 끝, 귓불 또는 팔찌를 사용하여 손목에 배치된다. 비접촉식 카메라 기반 시스템이 최근에 시연되었다. 이들은 PPG 신호를 획득하는 비간섭적 방법을 제공한다. PPG 신호는 더 많은 노이즈, 큰 진폭 변동을 보여주는 단점이 있으며 피크의 형태가 더 넓은 변동을 표시한다 (그림 2b, c). 이것은 특히 사용 가능한 오픈 소스 도구가 일반적으로 사용되는 ECG용으로 설계된 소프트웨어를 사용할 때 신호 분석을 복잡하게 만든다.

 

그림 2 - ECG 신호(a.)는 진폭 변화가 거의 없는 강한 QRS 복소수를 보여준다. 환자가 병상에 누워 있는 동안 동시에 측정된 PPG 신호(b.)는 약간의 진폭 변화를 나타내지만 상대적으로 안정적인 형태를 보인다. 저가 센서(c.)를 사용하여 운전 시뮬레이터에서 PPG를 측정할 때 강한 진폭과 파형 형태 변화를 볼 수 있다.

 

피크 위치의 정확도

 

심박수를 분석할 때 주요 요점은 사용되는 피크 위치 레이블의 정확도에 있다. 순간 심박수 (BPM)를 추출할 때 정확한 피크 위치는 중요하지 않다. BPM은 전체 분석 신호 (세그먼트)에서 평균 비트 비트 간격으로 계산되는 집계 측정값이다. 이것은 이상치에 대해 상당히 견고하게 만든다.

 

그러나 심박수 변동성 (HRV) 측정값을 추출할 때 피크 위치가 중요하다. RMSSD (연속 차이의 제곱 평균 제곱근)와 SDSD(연속 차이의 표준 편차)라는 두 가지 자주 사용되는 변동성 측정을 예로 들어 보면, 아래 그림과 같이 심박수 데이터의 세그먼트가 주어지면 RMSSD는 다음과 같이 계산된다. SDSD는 연속 차이 간의 표준 편차이다.

 

그림 3 - 원하는 피크 검출 결과와 RMSSD 측정 계산을 표시하는 이미지. SDSD 측정은 연속적인 차이 간의 표준 편차.

 

이제 비트가 전혀 감지되지 않거나 (누락) 박자가 잘못된 시간 위치에 놓이는 (잘못 배치됨) 두 가지 실수가 가능하다고 생각하면 된다. 이것은 심박수 신호의 피크-피크 간격 사이의 약간의 자연적 변화를 포착하도록 설계되었기 때문에 이상값에 매우 민감한 계산된 HRV 출력 측정에 영향을 미친다.

 

문제를 설명하기 위해 몇 가지 시뮬레이션을 실행했다. 수동으로 주석을 추가한 심박수 신호의 샘플을 가져왔고 두 가지 유형의 오류가 발생했다.

 

  • 신호에서 n%의 피크를 무작위로 떨어뜨렸고, 그 사이에 결측값이 발생하지 않은 두 피크 사이의 간격만 고려하여 분석을 다시 실행했다.
  • 피크의 n%에서 임의의 위치 오류 (피크 위치의 0.1% - 10%, 약 1ms에서 100ms의 편차를 의미)를 도입했다.
  • 시뮬레이션은 n=[5, 10, 20] 값으로 10,000번의 반복을 위해 부트스트랩으로 실행되었다.

 

결과는 잘못된 비트 배치의 효과가 누락된 값 의 효과 보다 훨씬 더 크다는 것을 보여준다. 앞에서 설명한 것처럼 순시 심박수 (BPM)는 식별 가능한 편차가 거의 보이지 않는 플롯에서도 볼 수 있듯이 이상값에 민감하지 않다.

 

그림 4 - 수동으로 주석 처리된 측정값(실제) 및 n% 누락된 비트의 오류 유도 및 n% 비트의 감지된 위치에 대한 오류 유도(임의 오류 0.1% - 10% 또는 1-100ms).

 

RMSSD의 척도는 일반적으로 +/- 130을 초과하지 않는다는 점을 고려하면 SDSD는 크게 다르지 않다. 이는 잘못 감지된 피크가 몇 개라도 이미 출력 변수에 큰 측정 오류를 발생시키고 있음을 의미한다. 여기에 설명된 알고리즘은 값싼 센서의 잡음이 많은 PPG 데이터를 처리하도록 특별히 설계되었다. 주요 설계 기준은 출력 측정에 도입된 오류를 최소화하기 위해 잘못 배치된 피크의 수를 최소화하는 것이었다.

 

기능에 대한 자세한 내용은 문서의 나머지 부분과 기술 문서에서 찾을 수 있다. 검증에 대한 정보도 찾을 수 있다.

 

https://python-heart-rate-analysis-toolkit.readthedocs.io/en/latest/heartrateanalysis.html

 

Heart Rate Analysis — Python Heart Rate Analysis Toolkit 1.2.5 documentation

A complete description of the algorithm can be found in: <ref embedded paper>. Background The Python Heart Rate Analysis Toolkit has been designed mainly with PPG signals in mind. The Raspberry Pi and the Arduino platforms have enabled more diverse data co

python-heart-rate-analysis-toolkit.readthedocs.io

 

728x90
반응형
LIST

'Python Library > HeartPy' 카테고리의 다른 글

[HeartPy] ECG 신호 분석  (0) 2022.08.24
[HeartPy] PPG 신호 분석  (0) 2022.08.24
[HeartPy] 알고리즘 (2)  (0) 2022.08.23
[HeartPy] 알고리즘 (1)  (0) 2022.08.23
HeartPy  (0) 2022.08.23