Clipping detection and interpolation
측정된 속성이 센서의 감도 범위를 초과할 때마다 또는 아날로그 신호를 디지털화할 때 클리핑이 발생할 수 있다. 이 경우 클리핑은 신호가 사용 중인 센서의 경계 외부에서 계속되기 때문에 피크가 평평해짐을 의미한다.
클리핑은 신호의 (거의) 평평한 부분을 최대값에 가깝게 감지하여 앞과 뒤에 양쪽 끝에서 가파른 각도가 뒤따르는 기능을 한다. '누락된' 신호 피크는 신호의 클리핑 부분의 양쪽 끝에 있는 100ms의 데이터를 고려하는 3차 스플라인을 사용하여 보간된다. 재구성된 R-피크는 원래 신호에 오버레이되어 추가 분석에 사용된다.
Peak enhancement
진폭을 정규화한 다음 나머지 신호에 비해 R-피크 진폭을 증가시키는 피크 향상 기능을 사용할 수 있다. 선형 변환만 사용하므로 절대 피크 위치가 방해받지 않는다 (FIR 필터와 대조적으로). 사전 정의된 반복 횟수를 실행한다. 일반적으로 두 번의 반복이면 충분하다. 관심 피크도 억제하기 시작하므로 과도하게 반복하지 않도록 주의해야 한다.
import heartpy as hp
enhanced = hp.enhance_peaks(data, iterations=2)
버터워스 필터
버터워스 필터 구현은 고주파 노이즈를 제거하는 데 사용할 수 있다. 이것은 절대 피크 위치를 약간 방해하여 출력 측정에 영향을 준다. 그러나 노이즈가 심한 경우 신호에서 유용한 정보를 추출할 수 있는 유일한 방법이다.
import heartpy as hp
filtered = hp.butter_lowpass_filter(data, cutoff=5, sample_rate=100.0, order=3)
신호에 높은 노이즈가 존재하지 않는 한 필터링은 일반적으로 권장되지 않는다. 극단적인 예는 아래와 같다.
Hampel Correction
Hampel Correction은 표준 데이터 포인트보다 더 큰 창 크기 + 양쪽에 3개의 데이터 포인트 (=7)를 사용하여 Hampel 필터의 확장된 버전으로 작동한다. 단점은 윈도우 중앙값과 절대 편차 중앙값을 각 데이터 포인트에 대해 계산해야 하기 때문에 (적어도 현재 구현에서는) 상당한 처리 시간이 걸린다는 것이다.
현재 구현에서 호출되는 경우 심박수 신호의 1초 창에 대해 중앙값 필터가 사용된다. 필터 출력은 원래 신호에서 차감된다. 그렇게 하면 노이즈 억제 속성이 발생한다.
이 유형의 필터를 사용할 때 절대 피크 위치가 약간 이동한다. 이를 통해 오류가 발생함에 따라 출력 측정값이 벗어나기 시작한다. 일반적으로 오류는 높지 않지만 기본적으로 햄펠 필터링은 비활성화되어 있다. 알고리즘이 제대로 처리할 수 없는 심한 노이즈 세그먼트가 있는 경우에만 사용해야 한다.
https://python-heart-rate-analysis-toolkit.readthedocs.io/en/latest/algorithmfunctioning.html
'Python Library > HeartPy' 카테고리의 다른 글
[HeartPy] ECG 신호 분석 (0) | 2022.08.24 |
---|---|
[HeartPy] PPG 신호 분석 (0) | 2022.08.24 |
[HeartPy] 심박수 분석 (Heart Rate Analysis) (0) | 2022.08.23 |
[HeartPy] 알고리즘 (2) (0) | 2022.08.23 |
HeartPy (0) | 2022.08.23 |