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

2 Bilder übereinanderlegen

 

orion2000

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 11:15     Titel: 2 Bilder übereinanderlegen
  Antworten mit Zitat      
Hallo zusammen,

habe hier ein sehr kniffliges Problem (für mich zumindest) bei dem ich einfach nicht mehr weiter weiß:

Ich möchte ein Grauwertbild (P) mit einem farbigen Bild (I) überlagern.
(Zum Verständnis: das Grauwertbild zeigt einen Tintentropfen und das farbige Bild ist der Rand des Tropfens, dass ich erstellt habe duch Filter, Kantendetektion, usw).

Jetzt suche ich eine Lösung wie ich diesen "Tropfenrahmen" (komplett weißes Bild mit einem roten kreisähnlichen Form in der Mitte) wieder auf dem Grauwertbild anzeigen lassen kann. Sprich das Grauwertbild soll der Hindergrund sein und darauf ist dann nach der Überlagerung noch zusätzlich der rote Rahmen zusehen.
Ist das überhaupt möglich, da ja die Dimensionen auch nicht stimmen...

Code:

whos I
  Name       Size              Bytes  Class    Attributes

  I         26x33x3             2574  uint8              

>> whos P
  Name       Size            Bytes  Class    Attributes

  P         26x33              858  uint8      
 


Danke für jede Hilfe Smile


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 01.12.2010, 11:54     Titel:
  Antworten mit Zitat      
Moin,

das ist kein Problem. Du mußt nur aus dem Graubild ein Colorbild machen, also m*n*3. Da Du dann 3x den gleichen Inhalt hast, bleibt es ein Graubild.

Viele Grüße

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
orion2000

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 13:26     Titel:
  Antworten mit Zitat      
ja das habe ich mir schon gedacht und deswegen die information der einzelnen bilder hier gepostet...wie erzeuge ich denn daraus ein colorbild?
und danach dann einfach addieren oder wie?
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 01.12.2010, 14:28     Titel:
  Antworten mit Zitat      
Es gibt in Matlab wohl für alles mehrere Wege - das vorne weg. Hier ist einer davon:

1. S/W Bild in Colorbild wandel:

Code:
Color = repmat(X,[1 1 3]);   % x = SW - Bild


Bilder übereinander legen:

Code:
bild1=imread('1.tif');
bild2=imread('2.tif');
matrix=0.5*ones(size(bild2,1),size(bild2,2));
hold on
h=imshow(bild2)
set(h,'AlphaData',matrix)

frame=getframe(gcf);    % Dieser Teil speichert den Inhalt der figure
I=frame2im(frame);
imwrite....


Das müßte eigentlich klappen.

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
orion2000

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2010, 15:07     Titel:
  Antworten mit Zitat      
ok, das mit dem bild umwandeln hat funktioniert.

Aber wenn ich nun die bilder mit dem code von dir überlagere, dann bekomm ich nur ein helleres bild von meinem ursprünglichem bild. auch wenn ich die bilder vertausche dann bekomm ich nur eine hellrote umrandung...
irgendwie fehlt immer das andere bild dazu...
hab auch mit dem wert ein wenig rumgespielt, aber hat auch nichts verändert, außer, dass das eine bild, das gerade dargestellt wird, dann heller wird. aber halt immer nur eins und keine überlagerung.
 
Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 01.12.2010, 16:54     Titel:
  Antworten mit Zitat      
Um die Intensität der Bilder zu ändern mußt Du den Wert: matrix=0.5 ändern. Damit kannst Du die Intensität zwischen den beiden Bilder angleichen. Sollte das nicht ausreichen, kannst Du auch die Bildhelligkeiten vor dem Überlagern ändern, in dem Du einfach: X=X+20 % Bild wird heller
anwendest. Entsprechend X=X-20 % Bild wird dunkler. Oder auf das Endresultat anwenden.

Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
orion2000

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.12.2010, 11:13     Titel:
  Antworten mit Zitat      
ja funktioniert schon so wie du es sagst, nur das ergebnis ist nicht sonderlich toll.

hab aber nun eine neue bessere lösung gefunden Smile bei der beide den vollen kontrast behalten und jedes einzelene pixel angefragt wird.

wenn das pixel rot ist, dann wird der rote rand genommen, ansonsten das andere bild geschrieben für das jeweilige pixel.

poste sie mal für alle, die ein ähnliches problem haben könnten:


Code:


P = imread('roter_rand.bmp')
Z = imread('Tropfen.bmp')
Z_color = repmat(Z,[1 1 3]);               % x = SW - Bild, damit beide Bilder gleiche Dimension haben

[n,m,t] = size(P);                      % Dimension der Matrix des Bildausschnitts
     
     for y = 1:1:1:m
             for x = 1:1:1:n    
                     for z = 1:1:1:t
                                if P(x,y,z) == 0;     % Pixelweise Abfrage, da ja nur in diesem Bild eine 0 bei einem roten Pixel auftaucht.
                                   PZ(x,y,z) = P(x,y,z);  % wenn JA, dann dieses bild schreiben
                                else
                                   PZ(x,y,z) = Z_color(x,y,z);  % ansonsten das andere Bild in das Pixel schreiben
                                end
                     end
             end
     end    
     
     figure, imshow(PZ)

 
 
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.