W moim projekcie muszę zdigitalizować zdjęcie EKG zrobione zwykłym aparatem (JPEG). Na przykład mam zarejestrowany następujący aparat:
i chcę dostać coś takiego: -
a następnie zdigitalizowane dane (punkty x, y), jak w tym filmie na temat digitalizacji EKG
Nie mam pojęcia, jak to zrobić, więc przeszukałem i zapoznałem się z kilkoma artykułami badawczymi. Ogólne podejście algorytmów jest następujące:
- zmień na obraz w poziomie szarości
- usuń linie siatki
- dodaj brakujące punkty
- przekonwertować obraz 2D na obraz 1D
Utknąłem z drugim punktem, tj. Usunięciem linii siatki. Poszukałem więcej referencji, aby to zrobić, i odkryłem, że analiza histogramu może być pomocna.
Czy możesz mi pomóc, jak to zrobić (używam MATLAB 2010)? Każda pomoc będzie mile widziana.
image-processing
Deepak
źródło
źródło
Odpowiedzi:
Przepraszam, używam Mathematiki, ale implementacja pomysłu w Matlabie powinna być naprawdę łatwa. W każdym razie podaję kod, więc kiedy mój opis nie jest wystarczająco szczegółowy, resztę możesz uzyskać z kodu.
Podstawowa idea jest taka: patrzysz na obraz kolumnowo. Przetwarzaj każdą kolumnę pikseli osobno. Zauważ, że na wykresie odwróciłem szare wartości. Tak więc czerń ma wartość 1, a biel wynosi 0.
Jeśli wydrukujesz (odwrócone) wartości jasności-pikseli, w zasadzie masz tylko dwie sytuacje. Po pierwsze, gdy kolumna nie znajduje się na pionowej linii siatki. Fabuła wygląda
Druga sytuacja polega na tym, że jesteś bezpośrednio na pionowej linii siatki. Następnie linia siatki wpływa na jasność całej kolumny
Ale widzisz, że twój ciemny EEG wydaje się zawsze maksymalny. Dlatego bardzo złożonym algorytmem jest: Przejdź przez każdą kolumnę i przyjmij pozycję najbardziej czarnego piksela.
Zauważ, że przyciąłem trochę prawej strony twojego obrazu, ponieważ był tam całkowicie biały. Wynik to
Teraz możesz dołączyć do punktów lub interpolować je w dowolny sposób, a otrzymasz swój EEG
źródło
Masz kolorowy obraz, w którym linie siatki są czerwone, a ślad jest czarny. więc po prostu zignoruj wszystkie czerwone piksele!
Jeśli nie masz pewności, czy obraz jest dokładnie wyrównany, możesz użyć linii siatki do obliczenia pochylenia (po prostu nachylenie obrazu w pikselach / piksel w prawo).
Następnie przekształcenie czarnego śladu w wartość 1d jest proste. Zacznij od pierwszej kolumny przy lewej krawędzi i znajdź czarny piksel (lub centroid małej, połączonej grupy pikseli) - pozycja pionowa to twoja wartość.
Zrób to dla każdej kolumny na obrazie.
W przypadku braku wartości konieczne będzie interpolowanie znanych wartości przed i po.
Aby uzyskać dodatkowe punkty, możesz ustawić limit zmiany śladu między kolumnami, aby umożliwić wykrycie przypadkowych kropek lub skoków hałasu.
źródło