Bild transformieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Python_2018
User
Beiträge: 3
Registriert: Dienstag 17. Juli 2018, 13:56

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Python_2018
User
Beiträge: 3
Registriert: Dienstag 17. Juli 2018, 13:56

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.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
Python_2018
User
Beiträge: 3
Registriert: Dienstag 17. Juli 2018, 13:56

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?
Benutzeravatar
__blackjack__
User
Beiträge: 13080
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten