So transformieren Sie ein Bild mithilfe einer Matrix geometrisch

1278
Mark Said Camilleri

Wie kann ich ein Bild mit einer benutzerdefinierten mathematischen 2x2-Matrix transformieren? Um klar zu sein, ist die Mathematik nicht das Problem; Ich habe bereits die Matrix, die ich will. Ich möchte nur wissen, wie ich mithilfe von Software die Umwandlung auf ein Bild anwenden kann.

Ich habe bei Google nach GIMP-Plugins gesucht (da ich weiß, dass es eine 3x3-Matrix für die Perspektive verwendet, obwohl ich keine 3x3-Matrix eingeben kann). Es gab einen namens "Mathmap", der jedoch nicht funktioniert, da er eine ältere Version von GIMP unterstützt. Ich habe auch nach Programmen gesucht, die dazu in der Lage sind, aber es kam nichts dazu.

Die Transformation ist eine geometrische Transformation, keine Filtertransformation.

Wenn mir jemand helfen kann, schätze ich es sehr.

1
Möglicherweise können Sie dies in Octave tun (hängt vom Bildformat ab) https://www.gnu.org/software/octave/doc/interpreter/Loading-and-Saving-Images.html wmz vor 9 Jahren 0
http://www.imagemagick.org/ - zum Konvertieren von Bildern im Allgemeinen. Hannu vor 9 Jahren 0

3 Antworten auf die Frage

1
jsbueno

Es gibt einen GIMP-Prozeduraufruf, der von Skripts und Plug-Ins verwendet werden soll. Er kann direkt von den interaktiven Eingabeaufforderungen aus aufgerufen werden.

Hier ist ein Beispiel für eine Python-Sitzung, bei der eine Referenz auf das letzte in GIMP geöffnete Bild abgerufen wird und eine [2, 0, 0, 0, 2, 0, 0, 0, 1] -Transformation darauf angewendet wird.

Sie können die Python-Konsole in GIMP in aufrufen filters->python-fu->console

GIMP 2.8.14 Python Console Python 2.7.5 (default, Jun 25 2014, 10:19:55)  [GCC 4.8.2 20131212 (Red Hat 4.8.2-7)] >>> img = gimp.image_list()[0] >>> img <gimp.Image '[Untitled]'> >>> matrix = [2,0,0, 0,2,0, 0,0,1] >>> more_parms = [True, TRANSFORM_RESIZE_ADJUST] >>> drawable = pdb.gimp_drawable_transform_matrix_default(img.layers[0], *(matrix + more_parms)) 

Ich konnte die Prozedur `gimp_drawable_transform_matrix_default 'finden, indem ich mit der Python-Sitzung unten im Dialogfeld auf die Schaltfläche" Durchsuchen "klickte und nach" Matrix "suche. Wenn ich einen passenden Aufruf gefunden habe, auf" Anwenden "geklickt habe, füge die Funktion ein Auf der Python-Sitzung mit Mock-Parametern aufrufen, wollte ich ersetzen.

Ich nutzte dann Pythons "Syntaxzucker", um Sequenzelemente als einzelne Parameter an einen Funktionsaufruf zu übergeben - dafür gibt es das "*". Damit es funktioniert, musste ich die zwei zusätzlichen Parameter (Interpolation und Clip-Modus) an die Matrixkoeffizienten anhängen.

Dies ist in der Tat der gleiche Anruf wie

pdb.gimp_drawable_transform_matrix_default(img.layers[0], matrix[0], matrix[1], matrix[2], ...., matrix[9], True, TRANSFORM_SIZE_ADJUST) wäre.

0
Hannu

Für das, was es wert ist, habe ich eine GEGL-fähige GIMP-Version 2.9 installiert und durch Ubuntu-spezifisch aktualisiert   

sudo add-apt-repository ppa: otto-kesselgulasch / gimp-edge sudo apt-get update sudo apt-get install gimp gimp-Resynthesizer 

Ich frage mich, ob nicht:
Menu: Filters > Generic > Convolution Matrix
... vielleicht haben Sie das?

Die Faltungsmatrix wird verwendet, um Filter anzuwenden, die ich glaube. Ich möchte eine geometrische Transformation. Mark Said Camilleri vor 9 Jahren 0
Oh, und ich weiß nicht, was es für Ubuntu ist Mark Said Camilleri vor 9 Jahren 0
Es ist unter Filtern vorhanden, aber es kann dem gleichen oder dem gleichen entsprechen, was Sie sich wünschen - ich schätze hier nur. Hannu vor 9 Jahren 0
Ich werde dann einen tieferen Blick darauf werfen. Vielen Dank Mark Said Camilleri vor 9 Jahren 0
http://en.wikipedia.org/wiki/Convolution Hannu vor 9 Jahren 0
0
George

Wenn Sie nichts dagegen haben, Werbung zu machen, gibt es eine nette App, die ich für alle Arten von Bildverarbeitungsaufgaben verwende: Batch Image Resizer (obwohl es viel mehr als nur ein Resizer ist)

Es hat eine dedizierte Aktion genau für die von Ihnen beschriebene Aufgabe:

enter image description here

Sie können es über die Befehlszeile, als GUI, nach Zeitplan oder kontinuierlich im Hintergrund ausführen, sodass es recht flexibel ist.

Sie scheinen aus irgendeinem Grund keinen Download auf ihrer Hauptseite anzubieten, aber ich konnte einen Link zur kostenlosen Version von einem anderen Ort ihrer Website retten, hoffentlich funktioniert das: BIR Download