Verfasst am: 06.08.2020, 15:26
Titel: Hintergrund von Bild ändern
Hallo,
ich erstelle mir eine Form bsp. Kreisring, die ein Muster enthält. Dafür nutze ich folgenden Code. Im Anhang ist das Ergebnis auch so wie ich es haben möchte.
Also nächstes möchte ich nun dem Hintergrund einen anderen Grauwert geben, 0-256. Und hier ist das Problem. Mein Muster enthält 0en und 1en und mein Hintergrund besteht auch aus 0en. Wenn ich der 0 einen anderen Grauwert zuweise, nimmt auch das Schwarz meines Musters diesen an und das möchte ich nicht. Ansich müsste ich die Form mit Muster selektieren, damit ich meinem Hintergrund einen anderen GW geben kann. Oder wäre es sinnvoll für meine Maske keine Logical Values zu verwenden und dort gleich den Hintergrund mit dem GW zu definieren?
Da die Bilder die gleiche Größe haben, könnte ich doch sagen:
Setze mir auf den Index meiner Maske mit dem Wert 1, den Wert meines Muster an gleiche Stelle
Setze mir auf den Index meiner Maske mit dem Wert 0, den GW meines Hintergrunds
% Mask_diff besteht aus double(1080,1920) aus 0en und 1en
for i = 1:1080 for j = 1:1920 if mask_diff(i,j) == 1% Hier soll das Muster hin
MusterundHintergrund(i,j) = Muster(i,j);
elseif mask_diff(i,j) == 0% Mein Hintergrund
MusterundHintergrund(i,j) = 100;
end end end
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Was mir jetzt noch eingefallen ist. Wenn ich das Bild aus meiner letzten Antwort mit einem zweiten Bild (zB Kreis mit anderem Muster oder GW und Radius = Innenradius vom Kreisring) kombinieren möchte, also zu einem Bild, dann fällt mir als ersten eine Addition ein. Dadurch addiere ich den GW des Hintergrunds mit den Werten im Kreis, die nicht mehr die ursprünglichen sein werden.
Addiere ich die Bilder über einen schwarzen Hintergrund, habe ich meinen Kreisring mit dem Schachbrettmuster, einen Kreis mit Muster oder anderem GW und einen schwarzen Hintergrund.
Problem: Hintergrund Wert = 0, Schwarz in Schachbrettmuster Wert = 0, Werte in Kreis eventuell = 0
Dann funktioniert meine Lösung nicht. Ich müsste dann für das Schachbrettmuster Schwarz = 1 und Weiß = 256 zuweisen. Damit habe ich dann wieder den Hintergrund als Wert 0. Ist nur die Frage, wie das ganze funktioniert, wenn ich Grauwertbilder als Füllung verwenden möchte, die dann Werte von 0-256 enthalten können und mit anderen Bildern überlager, wie in PS mit mehreren Ebenen.
Ich müsste mal nachschauen, ob man den Hintergrund anfangs transparent machen kann und ihm zum Schluss einen GW zuweist.
Mir ist auch noch eine andere Variante eingefallen, bei der ich mir jedoch nicht sicher bin, ob sie so gut und viel zu umständlich ist?
Ich erstelle ja zu Beginn eine Maske, die ein Kreis oder Kreisring ist. Dann erhalte ich eine 1920x1080 Matrix in der meine Form aus 1 und der Hintergrund aus 0 besteht. Nun könnte ich mir die Indizes meiner 1en von der Form zB als Bildinfo.txt abspeichern. Für eine zweite Form mache ich das gleiche. Möchte ich nun Form 1 und Form 2 kombinieren erstelle ich eine neue Matrix 1920x1080 aus Nullen (Mein Zielbild), setze die Bildpunkte meines ersten Bildes auf die Indizes 1 meiner ersten Form. Danach setze ich das zweite Bild auf die Indizes 1 meiner zweiten Form und dort wo ich eine 0 habe, gebe ich dem Hintergrund meinen gewünschten GW.
den Erklärungen zu folgen fällt mir etwas schwer. Vorschlag aber:
Zitat:
Nun könnte ich mir die Indizes meiner 1en von der Form zB als Bildinfo.txt abspeichern.
Wenn es nicht nach Abschluss der MATLAB-Session verfügbar bleiben muss, würde ich so etwas nicht in einer Datei, sondern in einer Variablen abspeichern, z.B.
wobei das doch im wesentlichen die Maske an sich ist?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
die Variable müsste zu jeder Zeit verfügbar sein (Tage/Wochen später), da für eine Studie immer wieder unterschiedliche Formen mit einem Muster generiert und kombiniert werden und die bisherigen erstellen erhalten bleiben sollen.
Ich habe zur Zeit ein anderes Problem, das ich jetzt bearbeiten/lösen muss und deswegen dieses Thema jetzt leider pausiert. Sobald ich das fertig habe, würde ich mich hier wieder einklinken.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.