[PYTHON] Teilen der Wasserkammmethode im 3D-Bild mit ImageJ

Hintergrund

In den letzten Jahren ist es einfacher geworden, dreidimensionale Bilder zu erfassen, aber die für dreidimensionale Bilder verwendeten Bildverarbeitungsbibliotheken sind nicht wesentlich. Dieses Mal wollte ich eine Regionsunterteilungsmethode namens Watershed für ein 3D-Bild verwenden, also suchte ich danach und stellte fest, dass eine Funktion zur Durchführung einer 3D-Morphologieberechnung im Plug-In der Bildverarbeitungssoftware Fidschi implementiert ist (Fidschi ist nur imageJ). Also habe ich es versucht. Im Folgenden haben wir die Einführungsmethode und die Verwendung der Funktion zusammengefasst.

Umgebung

Plug-In-Einführung

Laden Sie MorphoLibJ 1.3.1.jar von https://github.com/ijpb/MorphoLibJ/releases herunter. Um mit der GUI zu installieren, öffnen Sie Fidschi und ziehen Sie die heruntergeladene Datei per Drag & Drop. Wenn Sie vom Terminal aus installieren, können Sie MorphoLibJ_-1.3.1.jar unter /Applications/Fiji.app/plugins/ ablegen. Unten finden Sie die Dokumentation zu diesem Plug-In. http://imagej.net/MorphoLibJ#Watershed_segmentation

Funktion

Zuerst habe ich das folgende Bild auf Python erstellt, das als Beispiel für die Verwendung der Funktion verwendet wird.

import numpy as np
import skimage.io as skimage
img = np.zeros((100, 100, 100))
for i in range(100):
    for j in range(100):
       for k in range(100):
          if (i - 40)**2 + (j - 40)**2 + (k - 40)**2 < 400:
             img[i][j][k] = 255
          if (i - 60)**2 + (j - 60)**2 + (k - 60)**2 < 900:
             img[i][j][k] = 255
skimage.imsave('example.tif', img.astype(uint8))

example.jpg

Von hier aus werden wir Beispiele für die Verwendung von Funktionen anhand dieses Bildes zusammenfassen. Visualize verwendet auch den 3D-Viewer des Plugins.

Distance Tranceform Watershed 3D

Plugin > MorphoLibJ > Binary Images > Distance Transform Watershed 3D

watershedGUI.jpg

Dieses Mal ist das Ergebnis der Ausführung mit der in der obigen Abbildung angegebenen Option unten dargestellt.

watershed.jpg

Bildwerte sind für jedes Objekt beschriftet. In diesem Zustand ist es jedoch schwierig, den Unterschied zu erkennen, selbst wenn er visualisiert wird. Daher wird als nächstes die Funktion beschrieben, die die Farbbeschriftung durchführt.

Labels to RGB

Plugin > MorphoLibJ > Label images > Labels to RGB

labelingGUI,jpg.png

Persönlich ist es gut, dass die Farbkarte goldene Hörner hat. Das Ergebnis der Ausführung mit der in der obigen Abbildung angegebenen Option ist unten dargestellt.

labeling.jpg

Es ist ersichtlich, dass beim ursprünglichen Zusammenführen von zwei Objekten die Fläche durch eine Wasserscheide geteilt wird.

Erwägung

Ich habe versucht, quantitativ zu überprüfen, wie angemessen die geteilten Objekte sind.

Objekt Volumen[voxel] 元のVolumen[voxel] Prozentsatz[%]
Grün 31922 33493 95.31
Blau 104973 113040 92.86

Zu diesem Zeitpunkt stellt das ursprüngliche Volumen einen Wert dar, der durch Berechnen des Volumens aus dem Radius erhalten wird, der bei der Erstellung des Bildes bestimmt wurde. Das Verhältnis wurde aus $ \ frac {Volumen} {ursprüngliches Volumen} \ mal 100 $ berechnet.

Aus diesem Ergebnis ist ersichtlich, dass es nicht in eines der Objekte unterteilt ist. Wasserscheide für die Entfernungstransformation In 3D ist die Entfernung der Parameter, der die Teilungsgenauigkeit am meisten beeinflusst. Es ist jedoch möglicherweise besser, das hier erhaltene Verhältnis als einen der Indizes zu verwenden, wenn dieser Parameter optimiert wird.

Recommended Posts

Teilen der Wasserkammmethode im 3D-Bild mit ImageJ
Laden Sie Bilder von der URL mit Pillow in Python 3
Versuchen Sie es mit einer objektorientierten Klasse in R (R6-Methode)
Bestimmen Sie den Schwellenwert mithilfe der P-Tile-Methode in Python
Laden Sie Bilder mithilfe von Anfragen herunter
Bilder mit Matplotlib anzeigen
Simplex-Methode (Einzelmethode) in Python
2D-Plot in Matplotlib
Private Methode in Python
Sammeln Sie Bilder mit icrawler
Methodenaufruf mit __getattr__
[Blender Python] Zeigen Sie Bilder in 3D-Ansicht mit OpenGL (bgl) an.