Verfasst am: 10.03.2010, 15:38
Titel: 2 Bilder überlagern ohne zu plotten
Hallo miteinander,
wie kann ich 2 Bilder (gleicher Größe) übereinander legen ohne diese per imshow in einem figure anzeigen zu lassen?
Das obere Bild soll später per AlphaData und einer Maske partiell transparent werden.
Hintergrund: Erstelle ein Avi-File mit mehr als tausend frames. Wenn ich da jedes Frame per imshow anzeigen lass ist das Perfomance technisch suboptimal.
erst mal Danke für die Vorschläge.
Ich hab zwei 768x1024x3 RGB Bilder. Eins ist eine Kameraaufnahme das andere ein einfarbiges Bild, wobei letzteres das erstere überlagern soll.
Beide Lösungsmöglichkeiten führen zum gleichen Ergebnis (siehe Anhang). Das sieht mir nach einer Verschmelzung beider Bilder aus. Ich brauche aber ein übereinander liegen der Bilder. D.h. wenn ich das einfarbige Bild auf 0 Transparenz setze soll nur das zu sehen sein.
Du kannst mit a+b wieder auf die Bilder zugreifen. Man müßte diese Zeilen nur für Color-Bilder erweitern (? Schleife) oder den Weg über die Layer gehen. Du kannst die beiden Bilder z.B. in den Rot und Grünkanal packen und dann über R(:,:,1) bzw. G(:,:,2) wieder trennen. Würde mich interessieren, wenn Du eine Lösung gefunden hast
Erstmal viel Glück, werde das weiter interssiert beobachten
der Sinn des übereinanderlegens ist der, dass ich der Maske die Transparenz des einfarbigen oben liegenden Bild variabel definieren kann. Damit kann ich auf die Straße des unten liegenden Bilds variable Geometrien legen.
Leider bringt mich dein letzter Lösungvorschlag nicht weiter, da cat die Bilder nicht übereinanderlegt.
Ich hätte ein Lösungsvorschlag der aber nicht schön ist:
bei mir passiert irgendwelcher Mist auf dem Rechner, muß das klären. Kann das mit cat nicht reproduzieren. Aber mit den Layern müßte das doch gehen, oder habe ich Dein Problem falsch verstanden
Bis dann
Hubertus
Hab jetzt den Fehler gefunden. Bleiben noch die Farbkanäle, transparent übereinander und jedes Bild kann angesprochen werden. Wo ist da das Problem? Oder ist das heute nicht mein Tag?
kann sein, dass ich Deine Lösung noch nicht verstanden hab.
Wenn bild1 und bild2 sw-Bilder mit 640x400 Pixeln sind dann bekomm ich nach cat eine 640x400x2 Matrix. Mein Ziel ist es aber eine 640x400 Matrix mit den 2 überlagernden Bilder zu erhalten.
Hab ich da jetzt was falsch gemacht? Was hälst du von meiner Lösung mit dem nicht sichtbaren figrue?
ich will noch einmal auf meinen Vorschlag zurück kommen. Du kannst 2 Bilder transparent übereinander legen, wenn es sich in der nachfolgenden Version um 1 Colorbild und 1 S/W-Bild handelt. Vielleicht läßt sich dieses Beispiel erweitern. Ich bin da noch nicht so weit.
Also prinzipiell sollten die Bilder auch ohne Umwege direkt transparent übereinander gelegt werden können. Die entsprechenden Formeln findet man auf Wikipedia:
@Maddy deine Tipp hat zur Lösung geführt! (siehe Code) Vielen Dank!!!
@Hubertus vielen Dank auch an Dich für deine Tipps und Anregungen!!!
hier meine Lösung:
Code:
% img = eingelesenes Kamerabild % img_farbe = einfarbiges Bild % img_maske = Matrix mit Werten zwischen 0 und 1 welche die Transparenz von % img_farbe steuert
img_out = img;
img_size = size(img);
for q = 1:img_size(1) for r = 1:img_size(2)
alpha = img_maske(q,r);
img_out(q,r,1) = (alpha * img_farbe(q,r,1)) + ((1-alpha) * img(q,r,1));
img_out(q,r,2) = (alpha * img_farbe(q,r,2)) + ((1-alpha) * img(q,r,2));
img_out(q,r,3) = (alpha * img_farbe(q,r,3)) + ((1-alpha) * img(q,r,3));
end end
Verfasst am: 01.03.2015, 21:06
Titel: bilder mit alphadata maske überlagern und abspeichern
Vielen Dank für diese Nachricht, ich war kurz vor der Aufgabe!
Wollte Bild a mit Bild b transparent überlagern und dann das Ergebnis mit einem weitern Bild c überlagern.
Dazu muss ab irgendwann abgespeichert werden und hat danach nach allen von mir getesteten Varianten eine andere Größe.
So wie hier gezeigt funktionierts prima!
Einstellungen und Berechtigungen
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.