Trouver le rayon r de la ou des sphères superposables dans l'image 3D

9

Mon problème actuel:

  • J'ai une image binaire 3D d'entrée (une matrice 3D qui n'a que 0 et 1) qui se compose de nombres aléatoires de sphère de rayon r.
  • Nous ne savons pas combien de sphères il y a dans l'image.
  • Toutes les sphères ont le même rayon r, mais nous ne connaissons pas le rayon r.
  • Les sphères sont partout dans l'image et peuvent se chevaucher.
  • un exemple d'image est donné ci-dessous.

Mon exigence:

  • quel est le rayon r?

Actuellement, j'aplatis simplement l'image pour me débarrasser de l'axe z et effectuer la détection des bords et j'essaie Hough Transform en utilisant: http://rsbweb.nih.gov/ij/plugins/hough-circles.html

Cependant, avec Hough Transform, je vois que les variables rayon minimum, rayon maximum et nombre de cercles doivent être spécifiées. J'ai essayé quelques tentatives ci-dessous:

rayon connu

rayon inconnu

Étant donné les paramètres corrects, Hough Transform peut très bien détecter les cercles. Mais dans la vraie application, je ne sais pas combien de sphères il y a, et il semble impossible de faire en sorte que le programme tente de deviner les rayons minimum et maximum. Existe-t-il d'autres moyens d'y parvenir?

Lien croisé: /math/118815/finding-radius-r-of-the-overlappable-spheres-in-3d-image

Karl
la source
Modifiez votre question et ajoutez une description du format de l'image d'entrée.
Le format de l'image d'entrée est une image 3D binaire.
Karl
Votre problème semble sous-contraint, sauf si vous aviez l'intention de dire que les sphères ne peuvent pas se chevaucher.
ObscureRobot
Non, les sphères peuvent se chevaucher. Dans le cas le plus simple, aucune sphère ne se chevauche, mais ce n'est pas toujours vrai.
Karl

Réponses:

9

Une solution plus simple et beaucoup plus efficace en termes de calcul par rapport à Hough Transform consiste à utiliser la transformation de distance:

  • Trouvez la surface de vos sphères (c'est-à-dire les pixels qui ont la valeur 1 et ont au moins un pixel voisin 0);
  • Calculez la transformation de distance par rapport à la surface des sphères, mais limitez le calcul uniquement aux pixels qui sont internes aux sphères. La sortie sera une carte de distance;
  • Le rayon sera exactement la valeur maximale dans votre carte de distance.

Un autre avantage de cette solution par rapport à la transformation de Hough est qu'elle fournit une valeur beaucoup plus précise pour le rayon.

Alceu Costa
la source
Mais si deux sphères se chevauchent, le maximum ne serait-il pas la distance la plus longue entre le côté éloigné d'une sphère et le côté éloigné de l'autre sphère?
endolith
1
@endolith Non, car la valeur de transformation de distance d'un pixel donné (voxel), dans ce cas, correspond à la distance à la surface de la sphère la plus proche.
Alceu Costa
3

La transformation de Hough ne nécessite pas, dans sa forme générale, de supposer le rayon des cercles que vous recherchez ni leur nombre. Vous avez peut-être été induit en erreur par votre source. La transformation peut être coûteuse en termes de calcul sous sa forme la plus générale; toute information préalable dont vous disposez peut rendre l'exécution de l'algorithme plus rapide et plus précise.

Je m'attendrais à ce que la transformation de Hough, compte tenu de vos images d'entrée, trouve le rayon des sphères avec une précision raisonnable; il y a beaucoup de points dans les images représentant des points sur la circonférence de cercles de même rayon.

Étant donné ce rayon, vous semblez avoir le reste du problème craqué, donc je n'écrirai plus.

Je vois que l'explication de Wikipedia sur la transformation de Hough indique également qu'elle peut être utilisée pour trouver des objets 3D dans des images 3D, à condition que ces objets puissent être paramétrés - ce qui pourrait certainement être une sphère.


la source