Verfasst am: 29.06.2012, 12:48
Titel: Bild aus mehrere Bildern erstellen
Hallo,
ich möchte 6 Bilder unterschiedlich zusammenfügen. D.h. das Endbild soll zB 600x800 Pixel groß sein. Auf festen Positionen sollen 6 verschiedene Bitmaps eingefügt werden, aber unterschiedlich permutiert.
Ich habe schon herausgefunden, dass ich die 6! = 720 Kombinationen mit perms([1 2 3 4 5 6]) als Matrix erstellen kann.
Die Frage ist nur, wie ich ein Bild auf ein anderes "klebe".
Das "klebe" ist jetzt irgendwie schwierig zu verstehen. Bilder sind letztendlich Matrizen, d.h. Du kannst sie normal der Matrixoperationen (Addition, Multiplikaton, Division, Subtraktion) verarbeiten, diese vier Operationen kannst Du auch je elementweise durchführen.
Zusätzlich kannst Du auch Matrizen aneinander hängen, d.h. z.B. z.B. die erste Matrix hat die Dimensionen [(1,1), (5,5)] und die zweite kannst Du dann z.B: [(1,6),(5,11)] ablegen. Dafür musst Du dann lediglich de Positionen der Spalten und Zeilen korrekt angeben
Dein erstes Beispiel kann nur blau aussehen wenn du es mit imagesc anzeigen lässt, da es ein reines SW-Bild ist. Deine Funktion showimg kenne ich nicht. Wenn du jetzt eine RGB - Matrix hast wird dein SW-Bild nicht automatisch blau, da ein SW-Bild*3 wieder ein SW-Bild ergibt.
Blau kann es nur noch werden, wenn dein Ausschnitt nur über 2 Farbebenen läuft. Du mußt auch den Ausschnitt über die 3 Ebenen laufen lassen, wenn das Bild weiterhin grau sein soll, Wenn es farbig werden soll, dann die Ebenen auswählen, die die Farbe erzeugen.
Zuletzt bearbeitet von Hubertus am 02.07.2012, 11:30, insgesamt einmal bearbeitet
Das Problem scheint zu sein, dass mit "imread" keine RGB-Matrix erstellt wird, wenn das einzulesende Bild grauskaliert ist. Kann ich das irgendwie "erzwingen"?
Das Erstellen der Matrix funktioniert so gut. Noch zwei Sachen:
1) Ich verstehe noch nicht, was in deinem Beispiel der Unterschied zwischen I3 und I2 ist. Wenn ich das richtig sehe, sollten die doch absolut identisch sein, oder?
2) Ich benutze den Befehl "imshow", dabei kommt folgende Fehlermeldung: "Error using ==> image
TrueColor CData contains element out of range 0.0 <= value <= 1.0"
Tatsächlich sind die Werte nicht zwischen 0 und 1, sondern zwischen 0 und 255, wie man es auch eigentlich bei RGB-Werten erwarten sollte. Muss ich die vorher umrechnen?
Streng genommen sind I2 und I3 nicht gleich - sie sind anders entstanden. Aber es ist auch kein Fehler, sie gleich zu benennen - vielleicht in größeren Scripten unübersichtlich.
Deine Fehlermeldung ist mir unklar, da in den hier genannten Beispielen kein "double" verwendet wurde. Hast du den Befehl irgendwo eingebaut?
Welchen Type hat den das Array, das IMREAD zurückgibt?
Wenn dies ein UINT8 ist, sind Werte zwischen 0 ind 255 erlaubt, bei einem DOUBLE dagegen Werte zwischen 0 und 1.
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.