Dans mon projet, je dois numériser une image ECG prise avec un appareil photo normal (jpeg). Par exemple, j'ai l'image capturée par la caméra suivante:
et je veux obtenir quelque chose comme ça: -
puis les données numérisées (points x, y), comme dans cette vidéo sur la numérisation de l'ECG
Je ne sais pas comment le faire, j'ai donc cherché et consulté plusieurs articles de recherche. L'approche générale des algorithmes est la suivante: -
- passer à l'image du niveau de gris
- supprimer le quadrillage
- ajouter des points manquants
- convertir une image 2D en image 1D
Je suis coincé avec le deuxième point, c'est-à-dire la suppression du quadrillage. J'ai recherché d'autres références pour ce faire et j'ai trouvé que l'analyse de l'histogramme pourrait être utile.
Pouvez-vous me guider sur la façon de procéder (j'utilise MATLAB 2010)? Toute aide serait appréciée.
image-processing
Deepak
la source
la source
Réponses:
Désolé, j'utilise Mathematica, mais il devrait être vraiment facile d'implémenter l'idée dans Matlab. Je donne quand même le code, donc quand ma description n'est pas assez détaillée, vous pouvez obtenir le reste du code.
L'idée de base est la suivante: vous regardez votre image par colonne. Traitez chaque colonne de pixels séparément. Notez que dans l'intrigue, j'ai inversé les valeurs de gris. Donc, le noir est 1 et le blanc est 0.
Si vous tracez les valeurs (inversées) de luminosité-pixel, vous n'avez fondamentalement que deux situations. Le premier est, lorsque votre colonne n'est pas sur une ligne de grille verticale. L'intrigue ressemble
La deuxième situation est, où vous êtes directement sur une ligne de grille verticale. Ensuite, la ligne de grille influence la luminosité de toute la colonne
Mais ce que vous voyez, c'est que votre EEG sombre semble toujours être le maximum. Par conséquent, l'algorithme très complexe est le suivant: Parcourez chaque colonne et prenez la position du pixel le plus noir.
Notez que j'ai recadré un peu du côté droit de votre image, car elle était complètement blanche là-bas. Le résultat est
Vous pouvez maintenant joindre les points ou les interpoler comme vous le souhaitez et vous obtenez votre EEG
la source
Vous avez une image en couleur où le quadrillage est rouge et la trace est noire. alors ignorez simplement les pixels rouges!
Si vous ne pouvez pas être sûr que l'image est exactement alignée, vous pouvez utiliser les lignes de la grille pour calculer un biais (simplement la pente de l'image en pixels / pixel lorsque vous allez à droite).
Transformer ensuite la trace noire en valeur 1d est simple. Commencez dans la première colonne sur le bord gauche et trouvez le pixel noir (ou le centroïde d'un petit groupe de pixels connectés) - la position verticale est votre valeur.
Faites cela pour chaque colonne de l'image.
Lorsque vous avez une valeur manquante, vous devrez interpoler entre les valeurs connues avant et après.
Pour des points supplémentaires, vous pouvez définir une limite sur la façon dont la trace peut changer d'une colonne à l'autre pour vous permettre de repérer des points aléatoires ou des pics de bruit.
la source