Individuazione del raggio r delle sfere sovrapposte nell'immagine 3D


9

Il mio problema attuale:

  • Ho un'immagine binaria 3D di input (una matrice 3D che ha solo 0 e 1) che consiste in numeri casuali di sfera con raggio r.
  • Non sappiamo quante sfere ci sono nell'immagine.
  • Tutte le sfere hanno lo stesso raggio r, ma non conosciamo il raggio r.
  • Le sfere si trovano ovunque nell'immagine e possono sovrapporsi.
  • l'immagine di esempio è riportata di seguito.

Il mio requisito:

  • qual è il raggio r?

Attualmente, appiattisco semplicemente l'immagine per eliminare l'asse z ed eseguire il rilevamento dei bordi e sto provando Hough Transform utilizzando: http://rsbweb.nih.gov/ij/plugins/hough-circles.html

Tuttavia, con Hough Transform, vedo che è necessario specificare le variabili raggio minimo, raggio massimo e numero di cerchi. Ho provato alcuni tentativi di seguito:

raggio noto

raggio sconosciuto

Dati i parametri corretti, Hough Transform è in grado di rilevare bene i cerchi. Ma nella vera applicazione, non so quante sfere ci siano e rendere il programma che tenta di indovinare il raggio minimo e massimo non è fattibile. Ci sono altri modi per ottenere questo risultato?

Collegamento incrociato: /math/118815/finding-radius-r-of-the-overlappable-spheres-in-3d-image


Modifica la tua domanda e aggiungi una descrizione del formato dell'immagine di input.

Il formato dell'immagine di input è un'immagine 3D binaria.
Karl

Il tuo problema sembra sottovalutato, a meno che tu non abbia intenzione di dire che le sfere non possono sovrapporsi.
ObscureRobot

No, le sfere possono sovrapporsi. Nel caso più semplice, nessuna sfera si sovrappone affatto, ma questo non è sempre vero.
Karl

Risposte:


9

Una soluzione più semplice e molto più efficiente dal punto di vista computazionale rispetto a Hough Transform consiste nell'utilizzare la trasformazione a distanza:

  • Trova la superficie delle tue sfere (ovvero i pixel che hanno valore 1 e hanno almeno uno pixel vicino);
  • Calcola la trasformazione della distanza rispetto alla superficie delle sfere, ma limita il calcolo solo ai pixel interni alle sfere. L'output sarà una mappa della distanza;
  • Il raggio sarà esattamente il valore massimo nella mappa della distanza.

Un altro vantaggio di questa soluzione rispetto alla trasformazione di Hough è che fornisce un valore molto più preciso per il raggio.


Ma se due sfere si sovrappongono, il massimo non sarebbe la distanza più lunga dal lato lontano di una sfera al lato opposto dell'altra sfera?
endolito il

1
@endolith No, perché il valore di trasformazione della distanza di un dato pixel (voxel), in questo caso, corrisponde alla distanza dalla superficie della sfera più vicina.
Alceu Costa,

3

La trasformazione di Hough non richiede, nella sua forma generale, congetture sul raggio dei cerchi che stai cercando, né su quanti ce ne siano. Forse sei stato ingannato dalla tua fonte. La trasformazione può essere computazionalmente costosa nella sua forma più generale; qualsiasi informazione precedente in tuo possesso può rendere l'esecuzione dell'algoritmo più veloce e più accurata.

Mi aspetterei che la trasformazione di Hough, date le tue immagini di input, trovasse il raggio delle sfere con ragionevole precisione; ci sono molti punti nelle immagini che rappresentano punti sulla circonferenza dei cerchi con lo stesso raggio.

Dato quel raggio, sembra che il resto del problema sia rotto, quindi non scriverò più.

Vedo che la spiegazione di Wikipedia della trasformazione di Hough indica anche che può essere utilizzato per trovare oggetti 3D in immagini 3D, a condizione che tali oggetti possano essere parametrizzati, cosa che una sfera potrebbe certamente essere.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.