ECG 이미지에서 신호를 복구하는 방법


14

내 프로젝트에서는 일반 카메라 (jpeg)로 촬영 한 ECG 이미지를 디지털화해야합니다. 예를 들어 다음과 같은 카메라 캡처 이미지가 있습니다.

전에

나는 다음과 같은 것을 얻고 싶다 :-

후

ECG 디지털화에 관한 이 비디오 에서 와 같이 디지털화 된 데이터 (x, y 포인트)

어떻게해야할지 모르겠 기 때문에 여러 연구 논문을 검색하고 참고했습니다. 알고리즘의 일반적인 접근 방식은 다음과 같습니다.

  1. 그레이 레벨 이미지로 변경
  2. 눈금 선 삭제
  3. 누락 된 포인트 추가
  4. 2D 이미지를 1D 이미지로 변환

나는 그리드 라인을 삭제하는 두 번째 지점에 붙어 있습니다. 이 작업을 수행하기 위해 더 많은 참조를 찾은 후 히스토그램 분석이 도움이 될 수 있습니다.

이 작업을 수행하는 방법을 알려 주시겠습니까 (MATLAB 2010을 사용하고 있습니다)? 도움을 주시면 감사하겠습니다.


나는 기본적으로 여기에 같은 것을 물었다 : stackoverflow.com/q/1657941/125507
endolith

당신이 게시물에 언급 된 코드의 MATLAB 부분을 구현 한 것처럼 디팍 @, 당신이 친절하게 당신이 보간을위한 1 차원 신호로 스캔 한 이미지를 변환하는 matlab에 일부 공유 할 수 있습니다 보인다
user3278

답변:


16

죄송합니다, Mathematica를 사용하지만 아이디어를 Matlab에 구현하기가 정말 쉬워야합니다. 어쨌든 코드를 제공하므로 내 설명이 충분하지 않으면 나머지 코드를 얻을 수 있습니다.

기본 아이디어는 이미지를 열 단위로 보는 것입니다. 모든 픽셀 열을 개별적으로 처리합니다. 플롯에서 회색 값을 반전 시켰습니다. 따라서 검정은 1이고 흰색은 0입니다
. (반전 된) 밝기 픽셀 값을 플로팅하면 기본적으로 두 가지 상황 만 있습니다. 첫 번째는 열이 세로 격자 선이 아닐 때입니다. 줄거리는 다음과 같습니다

두 번째 상황은 수직 그리드 선에 직접있는 경우입니다. 그런 다음 그리드 선은 전체 열의 밝기에 영향을 미칩니다.

그러나 당신이 보는 것은 당신의 어두운 뇌파가 항상 최대 인 것 같습니다. 따라서 매우 복잡한 알고리즘은 다음과 같습니다. 모든 열을 통과하여 가장 검은 픽셀의 위치를 ​​옮깁니다.

img = ColorConvert[
   ImagePad[
    Import["http://i.stack.imgur.com/500Kg.jpg"], {{0, -20}, {0, 0}}],
    "Grayscale"];

Image[
 Transpose[Function[With[{m = Min[#]},
     Map[Function[{v}, If[v == m, 1, 0]], #]]] /@ 
   Transpose[ImageData[img, "Real"]]
  ]
 ]

이미지가 완전히 흰색 이었기 때문에 이미지 오른쪽을 약간 자릅니다. 결과는

이제 포인트에 합류하거나 원하는 방식으로 보간하여 EEG를 얻을 수 있습니다


@ 패트릭 : 나는 아이디어를 좋아한다!
Jonas

이것은 격자 선이 이미지 축과 직선이고 평행 한 경우에만 작동합니다.
endolith

@endolith, 당신은 그것을 시도했습니다, 맞습니까 ?? 여기에서 이미지가 정확하게 정렬되지 않은 경우 작동합니다. Btw, 격자 선이 가로 / 세로가 아닌 경우 회전 된 이미지의 경우 EEG에 대해 잘못된 {x, y} 값을 얻을 수 있으므로이를 제거하는 전체 절차는 완전히 쓸모가 없습니다.
halirutan 2012 년

@ 패트릭 : 데이터가 픽셀 좌표와 정렬되지 않으면 올바른 x, y 값을 얻지 못합니다.
endolith

@ 패트릭 귀하의 알고리즘이 작동했습니다 :) 그리고 신호를 성공적으로 추출했지만 신호를 보간하는 데 여전히 어려움이 있습니다 (이미지 처리에 익숙하지 않기 때문에) 신호를 보간하는 방법에 친절하게 도움이됩니까? 다시 감사합니다 :)
Deepak

5

눈금 선이 빨간색이고 추적이 검은 색인 컬러 이미지가 있습니다. 빨간색 인 픽셀은 무시하십시오.

이미지가 정확하게 정렬되었는지 확신 할 수없는 경우 격자 선을 사용하여 기울기를 계산할 수 있습니다 (오른쪽으로 갈 때 이미지의 기울기가 픽셀 / 픽셀로 나타남).

그런 다음 검은 추적을 1d 값으로 바꾸는 것이 간단합니다. 왼쪽 가장자리의 첫 번째 열에서 시작하여 검은 색 픽셀 (또는 작은 연결된 픽셀 그룹의 중심)을 찾으십시오. 수직 위치는 귀하의 가치입니다.
이미지의 각 열에 대해 그렇게하십시오.
결 측값이있는 경우 이전과 이후의 알려진 값 사이를 보간해야합니다.

추가 포인트의 경우 임의의 점 또는 노이즈 스파이크를 발견 할 수 있도록 열 열에서 트레이스가 얼마나 많이 변경 될 수 있는지에 대한 제한을 설정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.