Was ist die dimension, um von numpy Form für Bild-Daten?
Ich bin mit nibabel
lib zum laden von Daten von nii-Datei. Ich lese das Dokument der lib an http://nipy.org/nibabel/gettingstarted.html, und festgestellt, dass
Dieser Informationen ist ohne die Notwendigkeit zu laden, alles von der Haupt-Bild-Daten in den Speicher. Natürlich gibt es auch Zugriff auf die Bilddaten als ein NumPy-array
Dies ist mein code zum laden der Daten und Formen
import nibabel as nib
img = nib.load('example.nii')
data = img.get_data()
data = np.squeeze(data)
data = np.copy(data, order="C")
print data.shape
Bekam ich das Ergebnis
128, 128, 64
Was ist die Reihenfolge der Daten, die Form? Ist es WidthxHeightxDepth
? Und mein Eingang muss so angeordnet wie depth, height, width
. Also werde ich input=data.transpose(2,0,1)
. Ist es richtig? Vielen Dank an alle
Update: ich habe festgestellt, dass die Numpy wird das Bild Lesen durch, um Height x Width x Depth
als Referenz http://www.python-course.eu/images/axis.jpeg
Ich fand, dass, Achse=0 ist in der Höhe, Achse=1 ist die Breite und Achse=2 ist die Tiefe. Ist es richtig? Wie das python-course.eu/images/axis.jpeg
Ich meinte zu gehen, die Form, die Funktion auf das Numpy-site
Der einfachste Weg, um Ihre eigene Frage zu beantworten ist, um den code auszuführen, der auf ein Beispiel-Bild mit bekannten Maßen.
Du hast Recht, es ist immer
(H, W, D)
wegen der Terminologie, die NumPy verwendet, um (axis=0, axis=1, axis=2)
oder Analog (Y, X, Z)
Achsen, wenn Sie möchten, um es auf diese Weise visualisieren.
InformationsquelleAutor John | 2017-04-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, hier ist mein nehmen:
Mit
scipy.ndimage.imread('img.jpg', mode='RGB')
, hat das resultierende array wird immer in dieser Reihenfolge:(H, W, D)
d.h. (Höhe, Breite, Tiefe) wegen der Terminologie, die numpy verwendet für ndarrays(axis=0, axis=1, axis=2)
oder Analog(Y, X, Z)
wenn man möchte, zu visualisieren, in 3 Dimensionen.Wenn man bedenkt, img_shape als ein Tupel,
Wählen, welche ist eine bequeme Möglichkeit für Sie, sich zu erinnern.
PS: Es sollte auch angemerkt werden, dass Bibliotheken, wie tensorflow auch (fast) folgt der gleichen Konvention wie numpy.
tf.image_decode_jpeg() gibt:
transpose((-1, 0, 1))
statttranspose((2, 0, 1))
Ist dein Recht als gut. Es ist nur eine andere Schreibweise der Indizes (einer Tupel/Liste).
Danke. Also benutzte ich
data = np.copy(data, order="C")
in meinem code (in Frage). Muss ich die Zeile entfernen?Ja, ich denke, es gibt keine Notwendigkeit für die
squeeze
undcopy
Operationen. Die Daten, die Sie laden mitimg.get_data()
ist selbst ein numpy arrayInformationsquelleAutor kmario23