Ich versuche, einen Region-Adjazenz-Graph zu erstellen, nachdem ich ein Bild mit den Werkzeugen im Skimage
-Paket segmentiert habe. Anhand der Beispiele in der Dokumentation kann ich ein Bild mit SLIC segmentieren und den RAG erfolgreich erstellen.Skimage-Region-Anordnungsgraph (RAG) aus der Quickshift-Segmentierung
from skimage import data
from skimage import segmentation
from skimage.future import graph
import matplotlib.pyplot as plt
#Load Image
img = data.coffee()
#Segment image
labels = segmentation.slic(img, compactness=30, n_segments=800)
#Create RAG
g = graph.rag_mean_color(img, labels)
#Draw RAG
gplt = graph.draw_rag(labels, g, img)
plt.imshow(gplt)
Allerdings, wenn ich entweder segmentation.quickshift
oder segmentation.felzenszwalb
zu segmentieren das Bild verwenden und dann die RAG erstellen, bekomme ich einen Fehler bei draw_rag()
.
labels = segmentation.quickshift(img, kernel_size=5, max_dist=5, ratio=0.5)
g = graph.rag_mean_color(img, labels)
gplt = graph.draw_rag(labels, g, img)
labels = segmentation.felzenszwalb(img, scale=100, sigma=0.5, min_size=50)
g = graph.rag_mean_color(img, labels)
gplt = graph.draw_rag(labels, g, img)
Traceback (most recent call last):
File "C:\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 3032, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-34-c0784622a6c7>", line 1, in <module>
gplt = graph.draw_rag(labels, g, img)
File "C:\Anaconda\lib\site-packages\skimage\future\graph\rag.py", line 429, in draw_rag
out[circle] = node_color
IndexError: index 600 is out of bounds for axis 1 with size 600
Die Dokumentation scheint, dass die RAG Methoden vorschlagen sollte von jedem dieser Verfahren mit Segmenten kompatibel sein, so dass ich bin mir nicht sicher, ob ich etwas falsch mache, es ist ein Fehler ist, oder RAG kann nur mit der SLIC-Segmentierungsmethode verwendet werden. Irgendwelche Vorschläge?