wie kann ich in einem Binärbild den Background auf eine transparente Farbe setzen?
Zur Vorstellung:
ich habe ein Eingabebild und ein Binärbild mit detektierten Changes als Foreground.
Nach der Prozessierung möchte ich gerne die Changes auf das Eingabebild legen (muss nicht in Matlab erfolgen). Dafür benötige ich jedoch die (100%-)Transparenz des Hintergrundes. Dem Foreground sollte eine Farbe (zB rot) zugewiesen werden.
ich möchte die Bilder in Matlab nicht überlagern, sondern lediglich ein Bild mit identischen Dimensionen rausschreiben welches an den Foregroundpixeln den Farbwert Rot und die Backgroundpixel transparent setzt.
Also, ich sehe ganz viel Wald - aber keine Bäume. Mir ist immer noch nicht klar, was du vorhast. Daher zunächst noch ein paar Grundsätzlichkeiten.
Das eine Thema ist Transparenz und da muss ich noch einmal auf die Suchfunktion hier im Forum hinweisen. Du kannst nicht Bereiche aus logical in ein RGB kopieren. Du musst aus logical erst einmal RGB machen. Dadurch änderst sich dein Bildinhalt vom Binärbild nicht. Aber dann....
Kannst du das noch einmal anders formulieren (für Doofe) oder eine Skizze dranhängen?
Also, ich sehe ganz viel Wald - aber keine Bäume. Mir ist immer noch nicht klar, was du vorhast. Daher zunächst noch ein paar Grundsätzlichkeiten.
Das eine Thema ist Transparenz und da muss ich noch einmal auf die Suchfunktion hier im Forum hinweisen. Du kannst nicht Bereiche aus logical in ein RGB kopieren. Du musst aus logical erst einmal RGB machen. Dadurch änderst sich dein Bildinhalt vom Binärbild nicht. Aber dann....
Kannst du das noch einmal anders formulieren (für Doofe) oder eine Skizze dranhängen?
C_J
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 25.11.2011, 15:47
Titel:
ok, dann nochmal ausführlich.
Inputs:
a) Originalbild z.B. 100x100
b) Binärbild mit Vordergrund(1)- und Hintergrund(0)-Pixel. 100x100
Input b) soll derart manipuliert werden, dass lediglich die Pixel mit Wert 1 auf einen Farbwert (zB rot) gesetzt werden und alle anderen Pixel (=Hintergrund) "transparent" gesetzt werden. Dieses Outputbild soll ebenfalls die Dimensionen 100x100 besitzen.
Zweck:
ich möchte z.B. mit einer anderen Bildverarbeitungssoftware später beide Bilder übereinander legen. Deshalb wäre es hinderlich, wenn die (uninteressanten) Hintergrundpixel das Originalbild überlagern würden.
Ich habe am Wochenende keinen Zugriff auf einen Matlab-Rechner. Nur meine Unterlagen. Aber heute nachmittag habe ich noch folgenden Versuch gemacht.
Du musst dein Binärbild in ein RGB wandeln. Das RGB Bild in R+G+B zerlegen. Im Rotkanal die Werte 1 auf 255 indizieren, damit sie rot werden.
Das Rote wird beim Speichern in ein *.png-Format transparent. Versuche mal folgendes:
Du brauchst dafür aber einen 32 oder 64 Bit-Rechner, da nur diese Transparenz erstellen. Mit 8 Bit geht das nicht!
Alles was Rot war müsste jetzt schwarz sein. Matlab stellt Transparenz mit schwarz dar. Ich hoffe, mir ist kein Fehler unterlaufen. Irgendwie ging das.
C_J
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.11.2011, 09:07
Titel:
Hi Hubertus,
auch ich habe am Woe keinen Matlab-Rechner.
Ich versuche, Deinen Vorschlag heute zu testen und dann Feedback zu geben.
Bis hierhin erstmal vielen Dank!
Grüße
C_J
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.11.2011, 14:49
Titel:
Hi Hubertus,
Dein Vorschlag scheint zu funktionieren. Zumindest habe ich in einer anderen Software das eingefärbte Binärbild dem Originalbild als Overlay überlagern können.
Jedoch:
der Vordergrund ist mit Deinem Vorschlag bei mir cyan eingefärbt
Wenn du das Bild in anderen Programmen öffnest, gibt es so einige Überraschungen. Vergleichsbilder mit unterschiedlichen Farbkanälen zeigen z.B. in CS4 und Astroart keine Unterschiede, während IrfanView die gleichen Resultate wie Matlab zeigt. Gimp zeigt sogar Transparenz. So große Unterschiede habe ich bisher bei keinem Verfahren gesehen. Der Farbkanal im obigen Beispiel ist eindeutig rot. Überprüfe mal, wenn möglich, was andere Programme aus deinem Bild machen.
Viele Grüße
Hubertus
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.