Wie kann ich das Signal von einem EKG-Bild wiederherstellen?

  • In meinem Projekt muss ich ein EKG-Bild digitalisieren, das mit einer normalen Kamera (JPEG) aufgenommen wurde. Zum Beispiel habe ich die folgende Kamera aufgenommen:

    Wie kann ich das Signal von einem EKG-Bild wiederherstellen?

    und ich möchte etwas wie das Folgende bekommen: -

    Wie kann ich das Signal von einem EKG-Bild wiederherstellen?

    und dann die digitalisierten Daten (x, y Punkte), wie in diesem Video zur Digitalisierung des EKG

    Ich habe keine Ahnung, wie Tun Sie es, also habe ich mehrere Forschungsarbeiten durchsucht und konsultiert. Der allgemeine Ansatz der Algorithmen ist wie folgt: -

    1. zu Graustufenbild wechseln
    2. Gitterlinien löschen
    3. Fehlende Punkte hinzufügen
    4. 2D-Bild in ein 1D-Bild konvertieren

    Ich halte fest zweiter Punkt, dh das Löschen der Gitternetzlinien. Ich habe einige weitere Hinweise dazu gesucht und festgestellt, dass die Analyse des Histogramms hilfreich sein könnte.

    Können Sie mir bitte eine Anleitung geben, wie das geht (ich verwende MATLAB 2010)? Jede Hilfe wäre dankbar.

    08 January 2012
    Marjan VenemaPaul K
2 answers
  • Tut mir leid, ich verwende Mathematica, aber es sollte wirklich einfach sein, die Idee in Matlab zu implementieren. Ich gebe den Code trotzdem. Wenn meine Beschreibung nicht detailliert genug ist, können Sie den Rest aus dem Code entnehmen.

    Grundidee ist: Sie betrachten Ihr Bild spaltenweise. Verarbeiten Sie jede Spalte von Pixeln separat. Beachten Sie, dass ich in der Grafik die Grauwerte invertiert habe. Schwarz ist also 1 und Weiß ist 0.
    Wenn Sie die (invertierten) Helligkeit-Pixel-Werte darstellen, haben Sie grundsätzlich nur zwei Situationen. Die erste ist, wenn sich Ihre Spalte nicht in einer vertikalen Rasterlinie befindet. Das Diagramm sieht folgendermaßen aus:

    Wie kann ich das Signal von einem EKG-Bild wiederherstellen?

    Die zweite Situation ist, dass Sie sich direkt auf einer vertikalen Gitterlinie befinden. Dann beeinflusst die Rasterlinie die Helligkeit der gesamten Spalte.

    Wie kann ich das Signal von einem EKG-Bild wiederherstellen?

    Was Sie jedoch sehen, ist Ihr dunkles EEG scheint immer das Maximum zu sein. Der sehr komplexe Algorithmus lautet daher: Gehen Sie jede Spalte durch und nehmen Sie die Position des am stärksten schwarzen Pixels ein.

     img = ColorConvert[
       ImagePad[
        Import["https://bestecode.com/attachments/Answer/1061/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"]]
      ]
     ]
     

    Beachten Sie, dass ich ein wenig von der rechten Seite Ihres Bildes gekuppelt habe, da es dort komplett weiß war. Das Ergebnis ist

    Wie kann ich das Signal von einem EKG-Bild wiederherstellen?

    Jetzt können Sie die Punkte verbinden oder sie auf jede beliebige Art interpolieren, und Sie erhalten Ihre EEG

    Wie kann ich das Signal von einem EKG-Bild wiederherstellen?

    03 January 2012
    Darren Kopp
  • Sie haben ein Farbbild, in dem die Gitternetzlinien rot und die Spur schwarz sind. ignorieren Sie einfach alle Pixel, die rot sind!

    Wenn Sie nicht sicher sind, ob das Bild genau ausgerichtet ist, können Sie die Rasterlinien verwenden, um eine Schräglage zu berechnen (einfach die Neigung der Bild in Pixel / Pixel, wenn Sie nach rechts gehen.)

    Dann ist es ganz einfach, die schwarze Spur in einen 1d-Wert umzuwandeln. Beginnen Sie in der ersten Spalte am linken Rand und suchen Sie das schwarze Pixel (oder den Schwerpunkt einer kleinen verbundenen Pixelgruppe) - die vertikale Position ist Ihr Wert.
    Machen Sie das für jede Spalte im Bild. < br /> Wenn Sie einen fehlenden Wert haben, müssen Sie vorher und danach zwischen den bekannten Werten interpolieren.

    Für zusätzliche Punkte können Sie festlegen, wie viel Die Ablaufverfolgung kann sich von Spalte zu Spalte ändern, um zufällige Punkte oder Rauschspitzen zu erkennen.

    03 January 2012
    msanders