Seite 1 von 1

Bild transformieren

Verfasst: Dienstag 17. Juli 2018, 14:14
von Python_2018
Hallo zusammen,

Zunächst: ich bin absoluter Python-Neuling aber habe in einem Seminar gerade eine für mich scheinbar unlösbare Aufgabe bekommen...

Ich habe eine PGN-Bilddatei von einem schwarz-weiß-Bild, die ich nun transformieren soll. Hierfür habe ich die Datei zunächst geöffnet:
image = skimage.io.imread(Pfad/zu/"Datei.pgn")
und würde sie nun gerne mit skimage.transform transformieren.
Das Problem hieran ist nun, dass ich nicht weiß, welches der Module dafür geeignet ist, ich habe es bisher mit SimilarityTransform versucht. Da bekomme ich aber die Fehlermeldung "Invalid shape of transformation matrix".
Zudem soll nach der Anwendung der Transformation der Maskenbereich schwarz sein und der Hintergrund weiß.

Kann mir jemand dabei helfen? Ich bin wirklich ratlos...
Tausend Dank schonmal.

Re: Bild transformieren

Verfasst: Dienstag 17. Juli 2018, 14:29
von __blackjack__
@Python_2018: Ich vermute mal Du meinst PNG (Portable Network Graphic) statt PGN (Portable Game Notation)‽

Also der Fehlermeldung nach stimmt die Form der Transformationsmatrix nicht. Welche Form hat denn Deine Matrix?

Ansonsten kann man ohne irgendwelche Information sehr schlecht irgendwas zu den Problemen sagen.

Re: Bild transformieren

Verfasst: Dienstag 17. Juli 2018, 14:55
von Python_2018
Hallo :)

Ja, das ist richtig, bitte entschuldige den Schreibfehler.
Ich wollte für die Transformation erstmal eine Matrix der Form
M=1,0,0
0,1,0
0,0,1
nehmen, da mit dem Bild dann ja ersteinmal nichts passiert, einfach um mach herauszufinden, wie die Befehle so funktionieren und was für Argumente sie brauchen.
Vielleicht scheitere ich auch schon am Erstellen der Matrix.
Wenn ich die Marix so erstelle:

a=[[1,0,0], [0,1,0], [0,0,1]]

bekomme ich die Fehlermeldung "'list' object has no attribute 'shape'".
Daher habe ich ein CSV-file mit der entsprechenden Matrix erstellt, welches ich dann einlese mit:

mask = pd.read_csv("test.csv", "rb", engine="python", delimiter=",", header=None)

Das funktioniert aber leider auch nicht so wie gedacht.
Bisher habe ich nur ein wenig mit R programmiert, daher bin ich mit der Syntax und allem in Python leider noch nicht so vertraut.

Re: Bild transformieren

Verfasst: Dienstag 17. Juli 2018, 15:05
von __deets__
Das erste ist eine Python Liste von Listen. Den Code den du nicht zeigst der die Fehlermeldung liefert erwartet aber offensichtlich eine numpy.matrix. Ein simples

m = numpy.array(a)

wobei a deine oben gezeigte Matrix ist sollte genügen.

Re: Bild transformieren

Verfasst: Dienstag 17. Juli 2018, 15:30
von Python_2018
Ah, ok. Super, dann habe ich das jetzt verstanden. Danke! :)

Wenn es nicht zu sehr stört, hätte ich noch eine Frage zu der skimage.transform funktion.
Ich habe gefunden, dass das Modul SimilarityTransform diese Argumente besitzt:
matrix, scale, rotation, translation
Wo gebe ich denn mein ursprüngliches Bild ein? Weil die Matrix enthält ja die Werte, mit denen mein Bild transformiert werden soll, oder?

Re: Bild transformieren

Verfasst: Dienstag 17. Juli 2018, 16:20
von __blackjack__
Das Objekt ist aufrufbar, allerdings erwartet es dabei kein Bild, sondern ein Array mit 2D-Koordinaten. Schau Dir vielleicht mal die `warp()`-Funktion an.

`skimage.transform` ist übrigens keine Funktion sondern ein Modul.