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...
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
orion2000
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 01.12.2010, 13:26
Titel:
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?
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.
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
orion2000
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 02.12.2010, 11:13
Titel:
ja funktioniert schon so wie du es sagst, nur das ergebnis ist nicht sonderlich toll.
hab aber nun eine neue bessere lösung gefunden 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,[113]); % 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
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.