WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Hintergrund Binärbild transparent setzen

 

C_J

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2011, 12:35     Titel: Hintergrund Binärbild transparent setzen
  Antworten mit Zitat      
Hi Zusammen,

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.

Irgendwelche Ratschläge?

Grüße


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 25.11.2011, 13:02     Titel:
  Antworten mit Zitat      
Moin,

das Thema Tranparenz ist im Forum mehrmals abhandelt. So z.B.

http://www.gomatlab.de/schwarzweiss.....ighlight,transparent.html

MfG

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
C_J

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2011, 14:28     Titel:
  Antworten mit Zitat      
Hi Hubertus,

erstmal Danke;

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.

Vielen Dank und Grüße
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 25.11.2011, 16:17     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 25.11.2011, 16:17     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
C_J

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2011, 16:47     Titel:
  Antworten mit Zitat      
Smile

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.

Grüße
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 25.11.2011, 18:12     Titel:
  Antworten mit Zitat      
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!

Code:
I=imread('cameraman.tif');
figure(1); imshow(I); title('Original')

I2=im2bw(I,0.5);   % um ein Binärbild zu erzeugen

X=im2uint8(I2);
X=cat(3,X,X,X);          % Binärbild zu RGB
R=X(:,:,1);                 % Rotkanal auswählen

ind=(R==1);               % Wert indizieren
Y=I;
Y(ind)=255;      % aus Schwarz wird Rot

G=X(:,:,2);
B=X(:,:,3);
s=cat(3,Y,G,B);         % Rot ist jetzt Y
figure; imshow(s)
imwrite(s,'test.png','Transparency',[1 0 0]);


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
C_J

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2011, 10:07     Titel:
  Antworten mit Zitat      
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: ---
     Beitrag Verfasst am: 28.11.2011, 15:49     Titel:
  Antworten mit Zitat      
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 Smile

Grüße und Danke
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 28.11.2011, 16:07     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.