Table des matières:

Utilisation de seuils d'intensité variables en niveaux de gris pour visualiser et identifier les anomalies dans les images de mammographie : 9 étapes
Utilisation de seuils d'intensité variables en niveaux de gris pour visualiser et identifier les anomalies dans les images de mammographie : 9 étapes

Vidéo: Utilisation de seuils d'intensité variables en niveaux de gris pour visualiser et identifier les anomalies dans les images de mammographie : 9 étapes

Vidéo: Utilisation de seuils d'intensité variables en niveaux de gris pour visualiser et identifier les anomalies dans les images de mammographie : 9 étapes
Vidéo: Speckle Tracking en échocardiographie - Utilité clinique du Strain 2024, Novembre
Anonim
Utilisation de seuils d'intensité variables en niveaux de gris pour visualiser et identifier les anomalies dans les images de mammographie
Utilisation de seuils d'intensité variables en niveaux de gris pour visualiser et identifier les anomalies dans les images de mammographie

Le but de ce projet était d'identifier et d'utiliser un paramètre pour traiter des images de mammographie en niveaux de gris de diverses classifications de tissus de fond: gras, gras glandulaire et tissu dense. Cette classification est utilisée lorsque les radiologues analysent des mammographies et doivent déterminer si la densité tissulaire masquera des anomalies telles que des lésions ou des tumeurs. C'est parce que les deux structures physiologiques normales telles que le tissu glandulaire et le tissu conjonctif fibreux. et les morphologies anormales telles que les calcifications et les tumeurs apparaîtront très lumineuses sur la mammographie tandis que les tissus adipeux moins denses apparaîtront en noir. Par conséquent, il était approprié de programmer un classificateur capable de manipuler les niveaux d'intensité des pixels pour mieux visualiser et identifier les masses.

Étape 1: Organisation des données de mammographie

Organisation des données de mammographie
Organisation des données de mammographie

L'une des premières choses que j'ai réalisé que je devais gérer était d'organiser les données d'une manière très claire, concise et accessible. Ce sont les variables que j'ai extraites de la base de données mini-MIAS des mammographies. J'ai créé deux tableaux. Un contenant 4 colonnes:

  1. Numéro d'image:
  2. x coordonnée de masse
  3. y coordonnée de masse
  4. Rayon de masse: (Ceci a défini une taille approximative pour la masse

Le deuxième tableau contenait des informations de classification:

  1. Type de tissu de fond: gras (F), gras glandulaire (G), dense (D)
  2. Description de la masse: bien définie (CIRC), spiculée (SPIC), autre mal définie (MISC) Distorsion architecturale (ARCH), asymétrie (ASYM), normale (NORM)
  3. Diagnostics: bénin (B), malin (M)

Étant donné que le but de ce projet était de déterminer le meilleur seuil pour chaque type de tissu de fond, toutes les informations n'étaient pas nécessaires. Cependant, vous pouvez étendre votre projet pour inclure l'analyse de texture et tester votre classificateur par rapport aux descriptions de masse connues.

Note latérale: La base de données à partir de laquelle j'ai obtenu les images de mammographie diagnostiquées a organisé les informations sur chaque mammographie dans un fichier texte séparé des images. Il m'a été légèrement difficile d'extraire les données d'un fichier texte et de les organiser sous forme de tableau, mais le lien suivant a été très utile pour comprendre tout cela. Alternativement, ajustez simplement le code que j'ai collé ci-dessus pour vos besoins.

Format de fichier de mammographie: mdb001 G CIRC B 535 425 197

mdb002 G CIRC B 522 280 69

Aide TextScan: https://www.mathworks.com/help/matlab/ref/textsca…Base de données sur les mammographies:

Étape 2: Traitement d'image

Traitement d'image
Traitement d'image

Eh bien, la deuxième chose qui m'est venue lorsque je cherchais à identifier les masses était que pour de nombreuses mammographies anormales, je ne pouvais pas dire visuellement où se trouvait l'anomalie ou quelle était sa taille. Évidemment, comme je ne suis pas un radiologue expérimenté, c'était prévu. Cependant, le moyen le plus simple de trouver des anomalies (selon mes longues recherches sur Google) consistait à examiner les concentrations de zones claires et sombres. J'ai principalement utilisé la fonction adapthisteq pour améliorer le contraste de l'image, puis imbinarize pour convertir l'image en une image binaire afin d'expérimenter différents niveaux de seuil.

  1. adapthisteq: Cette fonction transforme les valeurs d'intensité des images en niveaux de gris et rvb à l'aide d'une égalisation d'histogramme adaptative à contraste limité. En d'autres termes, il ajuste l'histogramme des valeurs d'intensité à un type de distribution spécifié. Le lien mathworks pour cette fonction est joint ci-dessous pour une lecture plus approfondie.
  2. imbinarize: crée une image binaire à partir d'une image en niveaux de gris en attribuant tous les pixels au-dessus d'une certaine intensité à 1s et les pixels en dessous de cette valeur à 0. J'ai utilisé cette fonction pour tester le seuil optimal pour réduire le bruit de fond des tissus.

Étape 3: Code de seuil

Code de seuil
Code de seuil

Une boucle for est utilisée pour binariser la mammographie avec des seuils variables. Pour donner une vue d'ensemble, la boucle for contient le code de l'étape 3 à l'étape 7. Ainsi, chaque image binaire sera analysée à la recherche d'anomalies. De plus, cette boucle for est enfermée dans une autre boucle for qui importe une nouvelle image de mammographie de la base de données à chaque itération.

Étape 4: Recherche d'anomalies pour chaque image binaire

Recherche d'anomalies pour chaque image binaire
Recherche d'anomalies pour chaque image binaire
Recherche d'anomalies pour chaque image binaire
Recherche d'anomalies pour chaque image binaire

J'ai ensuite traité les images binaires en utilisant la fonction strel en conjonction avec imopen pour supprimer le bruit de fond. L'image binaire de l'étape précédente est inversée et filtrée en utilisant le voisinage défini par SE. Ensuite, j'ai utilisé bwlabel pour étiqueter toutes les zones qui avaient au moins 8 pixels connectés.

La fonction region props a été utilisée pour trouver les propriétés centroïdes et de surface de chaque tache identifiée par bwlabel.

Ensuite, tous les points de plus de 500 pixels ont été identifiés à l'aide d'ismember. Les centroïdes des taches identifiées ont été tracés sur une image qui n'affichait que les taches d'une superficie supérieure à 500. Area Identified = ismember(Labeled, indicies(sortedAreas>500)); Taches = Identifiées>0;

Étape 5: Tracer l'emplacement et la taille de la masse diagnostiquée pour une comparaison visuelle

Tracer l'emplacement et la taille de la masse diagnostiquée pour une comparaison visuelle
Tracer l'emplacement et la taille de la masse diagnostiquée pour une comparaison visuelle
Tracer l'emplacement et la taille de la masse diagnostiquée pour une comparaison visuelle
Tracer l'emplacement et la taille de la masse diagnostiquée pour une comparaison visuelle
Tracer l'emplacement et la taille de la masse diagnostiquée pour une comparaison visuelle
Tracer l'emplacement et la taille de la masse diagnostiquée pour une comparaison visuelle

Je voulais voir si les spots trouvés par bwlabel étaient corrects. Je l'ai fait de deux manières. J'ai d'abord analysé la précision de mon classificateur en faisant une comparaison visuelle. J'ai simplement tracé la taille et l'emplacement réels de l'anomalie (cercle rouge) et l'emplacement déterminé par le code (x bleu) sur l'image de mammographie prétraitée. Les six images ci-dessus montrent les effets de l'augmentation de la valeur seuil en niveaux de gris.

Étape 6: mise en œuvre de la deuxième méthode de comparaison

Implémentation de la deuxième méthode de comparaison
Implémentation de la deuxième méthode de comparaison

La deuxième façon dont j'ai testé le classificateur et les valeurs de seuil consistait à déterminer si les emplacements trouvés par le classificateur se trouvaient à une certaine distance des coordonnées de l'anomalie diagnostiquée. J'ai enregistré les seuils pour lesquels au moins un des points identifiés était à moins de 1,5 * r de l'anomalie connue dans un fichier texte séparé appelé Mammogram Data. Le but était de trouver le seuil minimum nécessaire à mon classificateur pour identifier l'anomalie.

Étape 7: Analyser les données collectées

Analyser les données collectées
Analyser les données collectées
Analyser les données collectées
Analyser les données collectées

J'ai exécuté le programme sur toutes les images de mammographie anormales et je me suis retrouvé avec un énorme fichier texte de données. Afin de trouver le meilleur seuil pour chaque type de tissu, j'ai organisé les données par type de tissu et tracé un histogramme des valeurs de seuil pour chaque type de tissu. La valeur seuil appropriée a été décidée en fonction du seuil qui fournissait les résultats les plus précis pour chaque type de tissu. J'ai enregistré ces données pour les télécharger dans mon classificateur.

Étape 8: Créer votre propre classificateur

Faire votre propre classificateur !
Faire votre propre classificateur !
Faire votre propre classificateur !
Faire votre propre classificateur !
Faire votre propre classificateur !
Faire votre propre classificateur !
Faire votre propre classificateur !
Faire votre propre classificateur !

Après avoir trouvé les valeurs de seuil les plus appropriées pour chaque type de tissu, j'ai modifié mon code d'origine pour qu'un utilisateur saisisse le numéro d'image et le type de tissu afin de choisir le seuil pour l'image de mammographie. J'ai ensuite tracé l'emplacement de la mammographie diagnostiquée avec les emplacements trouvés sur les images de mammographie originales. Je voulais rendre cela plus amusant alors j'ai programmé une fonction pour recadrer une région circulaire entourant le retour sur investissement. L'utilisateur serait invité à choisir un point central et plusieurs points qui englobent le mieux le retour sur investissement. J'ai joint les deux fichiers matlab ici.

Étape 9: Des améliorations ? Des pensées?

Au moment où j'écrivais ce instructable, je commence à voir de nombreuses améliorations que je pourrais apporter au classificateur, telles que trouver des moyens de distinguer les différents types de masses identifiés en fonction de l'analyse de la texture ou améliorer mes tests de précision dans la section SandBoxProject. déposer. Comme il s'agissait d'un projet avec une date limite, j'ai dû m'arrêter quelque part, mais j'espère pouvoir utiliser les compétences en traitement d'images que j'ai acquises dans d'autres applications. De plus, j'ai joint le fichier qui a été utilisé pour traiter par lots toutes les images de mammographie anormales.

Conseillé: