In meinem Projekt muss ich ein EKG-Bild digitalisieren, das mit einer normalen Kamera (JPEG) aufgenommen wurde. Ich habe beispielsweise das folgende mit der Kamera aufgenommene Bild:
und ich möchte so etwas bekommen: -
und dann die digitalisierten Daten (x, y Punkte), wie in diesem Video zur Digitalisierung des EKG
Ich habe keine Ahnung, wie ich das machen soll, also habe ich mehrere Forschungsarbeiten durchsucht und konsultiert. Der allgemeine Ansatz der Algorithmen ist wie folgt:
- Zum Graustufenbild wechseln
- Gitterlinien löschen
- fehlende Punkte hinzufügen
- 2D-Bild in 1D-Bild konvertieren
Ich bleibe beim zweiten Punkt, dem Löschen der Gitternetzlinien. Ich habe einige Referenzen nachgeschlagen, um dies zu tun, und fand, dass die Histogrammanalyse hilfreich sein könnte.
Können Sie mir bitte erklären, wie das geht (ich verwende MATLAB 2010)? Jede Hilfe wäre dankbar.
quelle
Antworten:
Entschuldigung, ich benutze Mathematica, aber es sollte wirklich einfach sein, die Idee in Matlab umzusetzen. Ich gebe den Code trotzdem weiter. 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 Pixelspalte separat. Beachten Sie, dass ich im Plot die Grauwerte invertiert habe. Schwarz ist also 1 und Weiß ist 0.
Wenn Sie die (invertierten) Helligkeitspixelwerte zeichnen, haben Sie im Grunde genommen nur zwei Situationen. Die erste ist, wenn sich Ihre Spalte nicht auf einer vertikalen Gitterlinie befindet. Das sieht nach der Handlung aus
Die zweite Situation ist, wenn Sie sich direkt auf einer vertikalen Gitterlinie befinden. Dann beeinflusst die Gitterlinie die Helligkeit der gesamten Spalte
Aber Sie sehen, dass Ihr dunkles EEG immer das Maximum zu sein scheint. Der sehr komplexe Algorithmus lautet daher: Gehen Sie jede Spalte durch und ermitteln Sie die Position des am meisten schwarzen Pixels.
Beachten Sie, dass ich ein wenig von der rechten Seite Ihres Bildes beschnitten habe, da es dort komplett weiß war. Das Ergebnis ist
Jetzt können Sie die Punkte beliebig zusammenfügen oder interpolieren und erhalten Ihr EEG
quelle
Sie haben ein Farbbild, in dem die Gitterlinien rot und die Spur schwarz sind. Ignorieren Sie also einfach alle roten Pixel!
Wenn Sie nicht sicher sind, ob das Bild genau ausgerichtet ist, können Sie die Gitternetzlinien verwenden, um einen Versatz zu berechnen (einfach die Neigung des Bildes in Pixel / Pixel, wenn Sie nach rechts gehen).
Dann ist es ganz einfach, die schwarze Kurve 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 zusammenhängenden Gruppe von Pixeln) - die vertikale Position ist Ihr Wert.
Tun Sie dies für jede Spalte im Bild.
Wenn Sie einen fehlenden Wert haben, müssen Sie vorher und nachher zwischen den bekannten Werten interpolieren.
Für zusätzliche Punkte können Sie ein Limit festlegen, um wie viel sich die Kurve von Spalte zu Spalte ändern kann, damit Sie zufällige Punkte oder Rauschspitzen erkennen können.
quelle