Ermitteln des Radius r der überlappbaren Kugel (n) im 3D-Bild


9

Mein aktuelles Problem:

  • Ich habe ein eingegebenes 3D-Binärbild (eine 3D-Matrix mit nur 0 und 1), das aus Zufallszahlen von Kugeln mit dem Radius r besteht.
  • Wir wissen nicht, wie viele Kugeln sich im Bild befinden.
  • Alle Kugeln haben den gleichen Radius r, aber wir kennen den Radius r nicht.
  • Kugeln befinden sich überall im Bild und können sich überlappen.
  • Beispielbild ist unten angegeben.

Meine Anforderung:

  • Was ist der Radius r?

Derzeit reduziere ich das Bild einfach, um die z-Achse zu entfernen und eine Kantenerkennung durchzuführen, und versuche Hough Transform mithilfe von: http://rsbweb.nih.gov/ij/plugins/hough-circles.html

Bei Hough Transform sehe ich jedoch, dass die Variablen minimaler Radius, maximaler Radius und Anzahl der Kreise angegeben werden müssen. Ich habe unten einige Versuche versucht:

bekannter Radius

unbekannter Radius

Mit den richtigen Parametern kann Hough Transform die Kreise gut erkennen. In der realen Anwendung weiß ich jedoch nicht, wie viele Kugeln vorhanden sind, und es scheint nicht möglich, das Programm zu veranlassen, den minimalen und maximalen Radius zu erraten. Gibt es andere Möglichkeiten, dies zu erreichen?

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


Bearbeiten Sie Ihre Frage und fügen Sie eine Beschreibung des Formats des Eingabebilds hinzu.

Das Format des Eingabebildes ist ein binäres 3D-Bild.
Karl

Ihr Problem scheint unterbeschränkt zu sein, es sei denn, Sie wollten sagen, dass sich die Kugeln nicht überlappen können.
ObscureRobot

Nein, die Kugeln können sich überlappen. Im einfachsten Fall überlappen sich überhaupt keine Kugeln, dies ist jedoch nicht immer der Fall.
Karl

Antworten:


9

Eine einfachere Lösung und im Vergleich zur Hough-Transformation viel rechnerisch effizienter ist die Verwendung der Entfernungstransformation:

  • Finden Sie die Oberfläche Ihrer Kugeln (dh die Pixel mit dem Wert 1 und mindestens einem benachbarten 0-Pixel).
  • Berechnen Sie die Abstandstransformation in Bezug auf die Kugeloberfläche, beschränken Sie die Berechnung jedoch nur auf Pixel, die sich innerhalb der Kugeln befinden. Die Ausgabe ist eine Entfernungskarte.
  • Der Radius ist genau der Maximalwert in Ihrer Entfernungskarte.

Ein weiterer Vorteil dieser Lösung im Vergleich zur Hough-Transformation besteht darin, dass sie einen viel genaueren Wert für den Radius liefert.


Aber wenn sich zwei Kugeln überlappen, wäre das Maximum nicht der größere Abstand von der anderen Seite einer Kugel zur anderen Seite der anderen Kugel?
Endolith

1
@endolith Nein, da der Abstandstransformationswert eines bestimmten Pixels (Voxels) in diesem Fall dem Abstand zur nächsten Kugeloberfläche entspricht.
Alceu Costa

3

Die Hough-Transformation erfordert in ihrer allgemeinen Form keine Schätzungen des Radius der gesuchten Kreise und der Anzahl der Kreise. Vielleicht wurden Sie von Ihrer Quelle in die Irre geführt. Die Transformation kann in ihrer allgemeinsten Form rechenintensiv sein; Alle vorherigen Informationen können die Ausführung des Algorithmus beschleunigen und genauer machen.

Ich würde erwarten, dass die Hough-Transformation angesichts Ihrer Eingabebilder den Radius der Kugeln mit angemessener Genauigkeit ermittelt. Die Bilder enthalten viele Punkte, die Punkte auf dem Umfang von Kreisen mit demselben Radius darstellen.

Angesichts dieses Radius scheint der Rest des Problems geknackt zu sein, sodass ich nicht mehr schreibe.

Ich sehe, dass die Erklärung von Wikipedia zur Hough-Transformation auch darauf hinweist, dass damit 3D-Objekte in 3D-Bildern gefunden werden können, vorausgesetzt, diese Objekte können parametrisiert werden - was sicherlich eine Kugel sein könnte.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.