Une approche avancée pour détecter les limites en utilisant les parois des vaisseaux comme exemple

Information intéressante


La figure ci-dessous montre une reconstruction tridimensionnelle du cœur, obtenue à la suite du travail d'un tomographe moderne:


Pour l'échelle, l'épaisseur du bulbe aortique est de 3,2 cm, pensez-y! Cependant, lorsque les gens ont des problèmes cardiaques dus aux vaisseaux sanguins, alors, en règle générale, nous ne parlons pas de si gros problèmes. L'image montre que le cœur est entouré de petits vaisseaux, et certains d'entre eux se ramifient directement à partir des grandes artères. Ce sont les artères coronaires dites qui alimentent le cœur directement avec du sang. Si un rétrécissement de la lumière (sténose) se produit en eux, par exemple, en raison de la formation de calcium, le flux sanguin diminue. Lorsque la sténose est prononcée, une nécrose tissulaire se produit, c'est-à-dire une crise cardiaque. Ensuite, je parlerai de notre approche pour calculer les limites des vaisseaux sanguins, ce qui vous permet en conséquence de trouver automatiquement le rétrécissement et de leur donner une estimation.

Pour comprendre le matériel, vous devez avoir une compréhension superficielle du volume, des voxels et de leurs intensités. Vous pouvez le découvrir en lisant le début de cet article .

Pour évaluer le rétrécissement d'un vaisseau, nous devons connaître la lumière du vaisseau ou sa frontière interne. Pour ce faire, détectez au moins tout le calcium. On retrouve également la limite extérieure, car elle permet d'estimer l'épaisseur de paroi, ce qui est également utile. Pour commencer, examinons le schéma complet de détection des limites, puis nous analyserons chaque étape en détail:


Tracer la ligne médiane


L'étape la plus difficile en termes de mise en œuvre (au moins elle a pris le plus de temps). La méthode est basée sur l'utilisation d'une matrice de Hesse (segmentation multi-échelle de vaisseaux utilisant l'amélioration de la matrice de Hesse). Plus de détails dans l' article déjà mentionné.

Tranchage


Nous n'avons qu'une ligne centrale et nous avons besoin d'intensités spatialement dépendantes de voxels qui peuvent être facilement travaillées. Pour les obtenir, une «pile» de tranches est en cours. Pour commencer, les points sont définis sur des distances fixes sur la ligne centrale. Ensuite, une perpendiculaire est construite à partir de chaque point . Après est la deuxième perpendiculaire . O Where - la direction de la ligne médiane en un point. Les deux perpendiculaires sont normalisées. À chaque point vecteur de ligne centrale former un système de coordonnées 2D. Ainsi, des tranches sont formées:


La position du voxel est définie comme ici Sont les coordonnées réelles du voxel, k est le numéro de tranche. Formule inverse pour les coordonnées réelles: . Lors du passage à un nouveau système de coordonnées, l'espace formé par les tranches est simplifié:


Ce dont nous avons besoin!

Construction de la frontière extérieure du navire


Jetons un coup d'œil au diagramme:


Nous découpons notre pile de tranches obtenues à l'étape précédente en huit plans (comme pour couper un gâteau) et nous effectuons tous les calculs dans l'espace des plans:

Couper


Si vous affichez les valeurs normalisées des intensités des voxels qui ont frappé le plan de coupe, nous obtenons l'image suivante:


Pour détecter les limites du navire, l'approche classique (détection de bord par gradient) est utilisée conjointement avec la recherche du chemin. Schéma:


1. Appliquer un lissage gaussien avec une petite valeur pour supprimer le bruit:
Pour un point avec des coordonnées :
renvoie la valeur de l'intensité en un point ; r prend généralement la valeur ( - arrondir); - coefficient de lissage.

2. A chaque point on retrouve le gradient et sa valeur, les calculs sont effectués avec des valeurs d'intensité lissées:
,
- dérivés privés. Ils sont trouvés par la méthode des différences finies:

,
- intensité en un point après lissage.
Ensuite, nous avons besoin de la direction du gradient ( Est la normalisation du vecteur) et la valeur du gradient ( Est la longueur du vecteur)

3. La direction du gradient est traduite en degrés ou radians:
(atan2 () est la fonction de l'arc tangente en C ++, à ne pas confondre avec atan ()), puis on arrondit l'angle pour qu'il puisse avoir 4 valeurs par incréments de 45 degrés, soit le haut et le bas sont considérés dans la même direction:

4. Effectuez la suppression des valeurs non maximales. Si la valeur du gradient au moins dans l'un des deux points voisins (selon la direction du gradient) est supérieur ou égal à la valeur du gradient au point courant, alors un tel point ne peut pas appartenir à la frontière:


5. Tous les voxels restants sont considérés comme des limites. En fonction de la valeur du gradient, du seuil de calcium (qui n'est pas immédiatement disponible) et de la proximité du centre «vertical», chaque point se voit attribuer un certain coût (plus le voxel est brillant, plus sa priorité lors de la recherche d'un chemin est élevée):

Sous cette forme, les limites du navire sont définies de manière presque unique.

6, 7. Pour construire des frontières, nous utilisons la recherche du chemin. Les points extrêmes les plus proches avec le moindre coût sont considérés comme les points initial et final. Pour rechercher un chemin, utilisez une recherche simple en largeur, qui sélectionne les points limites les moins coûteux. Des sauts sont également disponibles, mais leur prix est élevé. Les limites supérieure et inférieure du navire sont recherchées séparément, puis un lissage leur est appliqué:

Résultat


Cette procédure est effectuée pour chaque plan, ce qui se traduit par des anneaux à seize segments pour chaque tranche de la pile. Ces anneaux forment les bords extérieurs du vaisseau.

Comme vous pouvez le voir sur l'image, il existe des zones dans lesquelles les bordures ne sont pas détectées correctement. Cela est dû à la présence de calcium, ce qui entraîne la détection de limites de calcium plutôt que de limites de vaisseaux. Pour éviter que cela ne se produise après la première détection des limites, il est nécessaire de déterminer le seuil de calcium (plus à ce sujet plus tard), puis d'effectuer la deuxième détection des limites, en ignorant les voxels liés au calcium. On obtient alors:

Bon résultat

Détection de seuils de frontières internes, externes et de seuil de calcium


Une fois la frontière extérieure connue, nous devons collecter des informations statistiques. À savoir, les intensités de tous les voxels qui se trouvent à l'intérieur du vaisseau.

Détection de seuil


Considérons maintenant la maximisation des attentes de l'algorithme de clustering (ci-après dénommée EM). Commençons par la fonction de distribution normale: elle est caractérisée par une attente mathématique et écart type . Voici comment ils affectent le type de distribution:



Supposons que nous ayons des données (points) provenant d'une source «jaune» et d'une source «bleue»:


Ensuite, en utilisant des formules standard, nous trouvons facilement la moyenne et l'écart type pour chaque source. Formules pour la source «a»:




Mais que se passe-t-il si nous connaissons le nombre de sources, mais ne savons pas quels points appartiennent à quelle source? Et si nous avions une telle photo?


Si quelqu'un venait nous dire les paramètres de distribution, alors nous pourrions facilement calculer la probabilité que chaque point appartienne à chacune des sources. La probabilité que le point appartienne à la source "a":






Et si nous avons besoin de calculer les paramètres source, connaissant les probabilités:



Ainsi, un cercle vicieux est obtenu: si nous connaissions les paramètres des sources, nous calculerions quel point appartient à quelle source, mais nous ne connaissons pas les paramètres. Et si nous savions quel point appartient à quelle source, nous calculerions leurs paramètres, mais nous ne savons pas quel point appartient à quelle source. L'équilibre entre ces faits est exactement ce que fait l'algorithme EM.

Au démarrage, EM reçoit certains paramètres prédéfinis pour les sources, qui peuvent simplement être sélectionnés au hasard. Évidemment, si les paramètres sont connus, alors nous pouvons calculer la probabilité que chaque point appartienne à chacune des sources. Maintenant que les probabilités sont connues, nous pouvons calculer de nouveaux paramètres plus précis. Ensuite, tout recommence, mais avec de nouveaux paramètres. Après chaque cycle, les paramètres des sources deviennent plus précis.

Comment utiliser ces connaissances en relation avec les navires? Jetons un coup d'œil à la structure de l'un d'eux:

Dans les diagrammes, ce point est généralement omis, mais des formations de graisse et de calcium peuvent également être présentes dans le vaisseau. Ainsi, chaque voxel appartiendra à l'un des tissus. Après les expériences, il s'est avéré qu'il suffit de faire les divisions suivantes:

- gras
- mur # 1
- mur # 2
- moyen de contraste
- calcium

La distribution des intensités de voxels dans chaque cas est normale. C'est-à-dire nous avons tout ce dont nous avons besoin pour utiliser EM pour trouver les paramètres de chaque source.

Les résultats sont assez bons

La ligne verte est un histogramme des intensités, la ligne rouge est le modèle mathématique résultant.

Maintenant que nous connaissons les paramètres de chaque source, nous pouvons calculer les seuils - les valeurs des intensités, à l'intersection desquelles, l'appartenance au voxel change d'une source à l'autre. Nous sommes intéressés par:

1. Le seuil de la limite extérieure du navire. Si l'intensité du voxel est inférieure à cette valeur, il est considéré qu'il n'appartient pas du tout au navire;

2. Le seuil de la limite intérieure du navire. Si l'intensité du voxel est supérieure à cette valeur, alors il
fait référence à la lumière du vaisseau, c'est-à-dire à un mélange de sang et de produit de contraste;

3. Le seuil de calcium. Si la valeur de l'intensité du voxel est supérieure à cette valeur, alors elle se réfère au calcium.

Construction de la bordure intérieure du navire


Comme toujours, commençons par le diagramme; les calculs sont effectués pour chaque tranche.



Si vous affichez visuellement les données en fonction des seuils obtenus à l'étape précédente, nous obtenons l'image suivante:



La couleur rouge est la paroi du navire. Couleur verte - dégagement. Le blanc est le calcium.

La première chose qui attire votre attention est le calcium «suspendu», qui ne jouxte aucun des murs. Ceci est considéré comme normal et résulte du lissage appliqué par le tomographe lui-même.

Vous devez d'abord obtenir les limites en fonction des seuils, et pour cela, l'algorithme des carrés de marche est utilisé. On peut dire, passe en deux étapes. Premièrement, la zone est divisée par une grille discrète et les carrés dans lesquels les valeurs d'intensité sont supérieures ou égales au seuil sont considérés comme «positifs», les autres sont considérés comme «négatifs».

Chaque fois, nous serons dans une sorte de nœud, et nous devons dessiner un contour autour des carrés «positifs». Pour prendre une décision, nous considérerons les signes de quatre carrés voisins: en haut à gauche, en bas à gauche, en haut à droite, en bas à droite. Hors symétrie, nous nous intéressons à trois cas.

1. Trois carrés d'un signe et d'un opposé, le mouvement du contour se produit en diagonale:

Exemple


2. Deux carrés de même signe et deux opposés, et les carrés de même signe sont d'un côté, le mouvement du contour est vertical ou horizontal:

Exemple


3. Deux carrés du même signe et deux opposés, des carrés avec les mêmes signes sont placés sur les côtés opposés:

Exemple


Il s'agit d'un cas exceptionnel, pour prendre une décision, la valeur moyenne de l'intensité dans les quatre carrés est prise, et si elle est supérieure ou égale au seuil, alors le centre est positif, dans d'autres cas, il est négatif. Il est également important de savoir quel nœud est actuellement actif:

Exemple


L'algorithme des carrés de marche construit avec précision et sans ambiguïté un contour. Dans l'exemple ci-dessous, j'ai délibérément décalé la ligne du centre du côté pour que chaque pas soit clairement visible.

Exemple
Plus précisément, les premier et deuxième cas:



Pour chaque section du navire, nous trouvons deux contours principaux - c'est le contour de la frontière extérieure et le contour de la frontière intérieure. Nous «découpons» immédiatement le contour extérieur avec notre autre contour extérieur, que nous avons trouvé au début de l'article en recherchant des chemins. Ceci est fait pour ignorer les branches du navire. Nous ignorons les contours du calcium qui sont trop éloignés de la paroi intérieure, comme s'ils n'existaient pas du tout, nous trouvons le reste et les utilisons à l'avenir. Si le centre du vaisseau est à l'intérieur du calcium, nous le déplaçons dans la direction la plus proche du circuit de calcium jusqu'à ce que le centre se trouve dans la lumière (dans la région verte). Un tel centre mis à jour, je vais appeler la position de départ.

Selon le schéma, il peut y avoir deux cas: simple et complexe.


Si la position de départ est à l'intérieur d'une boucle de calcium fermée (par exemple, si un stent est installé), alors nous assimilons immédiatement la bordure intérieure à cette boucle. Les choses sont plus compliquées lorsque le centre est en dehors du calcium. Dans ce cas, nous devons élargir le circuit de démarrage afin qu'il circule en douceur autour du calcium et de la frontière intérieure:


Pour atteindre le résultat souhaité, un algorithme spécial a été développé sur la base des idées utilisées dans les moteurs physiques 2D, en particulier la résolution des collisions de polygones et le théorème des axes séparés.

Deux concepts de base qui ne peuvent pas être évités: pour les polygones convexes qui se croisent, le vecteur mtv (vecteur de translation minimum) est le plus petit déplacement de l'un des polygones, après quoi l'intersection s'arrête.

Nous avons également besoin des normales de polygone - en 2D, elles sont perpendiculaires aux faces et indiquent «out»:

Afin de ne pas allonger l'article, je vais omettre le reste des détails concernant les moteurs physiques. La seule chose que je note, c'est qu'à chaque itération, chaque point du contour accumule l'influence des forces sur lui-même sous la forme d'un vecteur, et à la fin de chaque itération il se déplace de la longueur de ce vecteur dans sa direction. Considérez les forces:

1. Deux forces agissent sur chaque sommet du contour de départ dans la direction des sommets voisins, et les forces sont directement proportionnelles à la distance à ces sommets. Cela fait rétrécir le contour et s'efforcer de maintenir une forme arrondie;

2. Si le sommet du contour latéral tombe à l'intérieur du contour de départ, alors le décalage proportionnel au vecteur mtv du sommet du sommet est appliqué à la face la plus proche du contour de départ;

3. Si le haut du contour de départ se trouve à l'intérieur du contour latéral, un décalage proportionnel au vecteur de sommet mtv du sommet est appliqué au sommet du contour de départ. Ceci, avec le paragraphe précédent, ne permet pas au circuit d'aller au-delà des limites des autres circuits;

4. Si les cas 2 et 3 ne fonctionnaient pas pour le sommet, une force lui est appliquée dans la direction moyenne des deux normales des faces adjacentes. Cela garantit la croissance du contour «en largeur».

Important: vous ne pouvez pas déplacer complètement un sommet ou une face de la longueur du vecteur mtv - il est multiplié par un certain coefficient compris entre 0,2 et 0,8. Les coefficients de chaque force dans les autres cas sont sélectionnés expérimentalement.

Grâce à cette approche, on retrouve la lumière du vaisseau, en tenant compte du fait que le calcium ne jouxte pas près des parois. Maintenant, combinez simplement les résultats de toutes les sections et obtenez les bordures intérieure et extérieure du navire:


L'imprécision apparente de la frontière après le stent est causée par une bifurcation anormale:


La zone de la bordure intérieure à la coupe caractérisera le jeu même qui nous intéresse finalement. L'utilisation ultérieure de ces données, je considère trivial et ne nécessitant pas d'examen. Enfin, je vais laisser l'image de la bordure intérieure exportée en 3D:

Source: https://habr.com/ru/post/fr441204/


All Articles