Kennt jemand eine Python-Bibliothek, die zum Drehen sehr großer Bilder verwendet werden kann? Ich muss sicherstellen, dass die Bilder die gleichen Farben verwenden und dass es keine Interpolation gibt, das heißt, ich muss eine Rotation des nächsten Nachbarn verwenden.Drehen von großen Bildern in Python (85000x85000x3)
Das Bild ist in tiff
Format. Ich benutze ein NVIDIA DGX, um es zu verarbeiten, dieser Server enthält 512 GB Systemspeicher.
OpenCV
Ich versuchte opencv mit:
M = cv2.getRotationMatrix2D((w/2,h/2),angle,1)
im_rgb_rot = cv2.warpAffine(im_rgb,M,(w,h),flags=cv2.INTER_NEAREST)
Und es scheint, wie nach der Drehung im_rgb_rot
ein leeres Bild wird aus Nullen besteht.
SciPy
Auch habe ich versucht, scipy.ndimage.interpolation.rotate
und scipy.misc.imrotate
und auf einem kleinen Testbild verwenden, aber es scheint, wie die Rotation mich nicht gerade Kanten nicht geben, wie unten gesehen. Ich sollte beachten, dass opencv gerade Kanten gibt.
Der Code hierfür lautet:
scipy.ndimage.interpolation.rotate(im_test, 40, reshape=False, mode='nearest')
PIL
Schließlich kann ich nicht PIL verwenden, da es nicht so große Bilder unterstützt.
Das sind 14,5 Terabyte unkomprimiert. Sie sind nicht in der Nähe genug Informationen zur Verfügung gestellt. Für den Anfang müssen Sie erklären, wie diese Dinge gespeichert sind und welche Rechenressourcen Sie haben, um diese Aufgabe zu erledigen. – Gene
Entschuldigung, ich werde die Post damit aktualisieren, aber das sind 'tiff' Bilder. Es gibt eine Reihe von Größen und die größte Größe ist 85000x85000x3, ich habe noch nicht mit dieser Größe gearbeitet.Aber da 'tiff' Bilder 3 Bytes pro Pixel sind, glaube ich, dass das Bild ungefähr 50-65GB Daten haben wird. Ich benutze eine NVIDIA DGX, die 512 GB Systemspeicher hat. –
Es tut mir leid, weiß nicht wo ich meine Mathe bekommen habe. 22 GB sollte auf dieser Maschine machbar sein, aber Sie werden definitiv eine durch und durch 64-Bit-Bibliothek benötigen. Haben Sie sich ImageMagick angesehen? Ihre Dokumente haben einen Abschnitt über "massive Bilder" http://www.imagemagick.org/Usage/files/#massive. Sie können mit dem Befehlszeilentool experimentieren, aber ich glaube, es gibt eine Python-API (ich weiß, dass es eine für Ruby gibt). Ein Teil davon könnte sein, dass Ihr Betriebssystem so große Zuweisungen zulässt. Sie haben das Betriebssystem nicht erwähnt. – Gene