![]() |
objekt aus grafik freistellen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Ihr da,
ich hab hier folgendes Problem: Ich habe hier einige Bilder (JPG, aber kann ich ja notfalls auch in Bitmap umwandeln). Diese sehen z.B. so aus: Siehe Attachment So, jetzt soll ich einen Algorithmus schreiben der über das Bild fliegt und mir den Hintergrund komplett in weiß umwandelt. Also die Fotos werden vor einer weißen Wand gemacht, aber die Aufnahme IST leider nicht 100% Weiß im Hintergrund. Jetzt überleg ich schon ewig um auf einen Lösungsansatz zu kommen aber mir will partout nichts einfallen was die akzeptable Qualität bringen könnte. Der User soll so gut wie _garnicht_ in den Prozess eingreifen. Einfach nur das Bild auswählen und gut is. Hat jemand eine Idee für einen Ansatz oder evtl einen Algorithmus in petto??? Viele Grüße Michl |
Re: objekt aus grafik freistellen
Naja, der Hintergrund ist doch grau, also R~G~B. Desweiteren hast Du doch eine schöne Kante, die Dame hebt sich doch schön vom Hintergrund ab. Das solte eigtl. reichen.
|
Re: objekt aus grafik freistellen
Hallo,
ich glaube nicht dass das so einfach geht. Er muss eine ganze (ich nenns mal so) Farbbandbreite umwandeln. Zunächst muss er dazu die Hintergrundfarbe bestimmen.Dann muss er alle relevanten Abweichungen dazu bestimmen und diese umwandeln. Wie gesagt nicht trivial. Rainer |
Re: objekt aus grafik freistellen
Ich glaube mit Photoshop geht das viel schneller. ;)
grz zer00 |
Re: objekt aus grafik freistellen
Die HG-Farbe zu bestimmen ist schon das größere Problem, wenn es nicht der User machen soll.
BTW @zer00: Das ist ja sinnlos. Er will es ja als Programm schreiben. Das Freistellen muss - wie du sagst - mit gewisser Toleranz geschehen. Dafür könnte sich in etwa sowas anbieten:
Delphi-Quellcode:
R := GetRValue(...);
G := ...; B := ...; MinR := R - Toleranz; MinG := ...; MinB := ...; MaxR := R + Toleranz; MaxG := ...; MaxB := ...; if (MinR < 0) then MinR := 0; if ....; if (MaxR > 255) then MaxR := 255; if ....; if ((R > MinR) AND (R < MaxR) AND (G > MinG) AND (G < MaxG) AND (B > MinB) AND (B < MinB)) then begin // Farbe setzen end; |
Re: objekt aus grafik freistellen
Ist mir auch klar, ist nur als Scherz gemeit.
Oder darf man in diesem Forum keine Scherze machen? grz zer00 |
Re: objekt aus grafik freistellen
Liste der Anhänge anzeigen (Anzahl: 1)
Das was du machen willst, nennt sich "Keyer", und bei sowas akzeptable Ergebnisse zu kriegen, ist keine einfache Sache. Selbst professionelle Lösungen (z.B. der Keyer "Keylight" in AfterEffects, oder der discreet keyer in "Combustion") bringen da ohne viel Nachbearbeitung von Hand oft nur sehr unbrauchbare Ergebnisse. Ein einfacher Keyer, der nur bestimmte Farbbereiche ausblendet, liefert meistens keine guten Ergebnisse. Bei deinem Beispielbild würde wohl nicht nur der graue Hintergrund verschwinden (bei genügend großer Toleranz), sondern gleichzeitig auch noch das helle Muster auf dem Kleidungsstück, die Highlights auf der Haut, etc.
Ich habe mal ein Beispielbild angehängt, das ich mit dem normalen "Color Keyer" von After Effects bearbeitet habe. Einmal mit Toleranz 15, dann Toleranz 30 und schließlich Toleranz 75 von der ursprünglich gewählten Farbe. Du siehst, wie viele Bildbereiche tatsächlich in diesen Farbbereich fallen. Was du dir vorgenommen hast, ist quasi unmöglich. Selbst professionelle Lösungen scheitern oft an solchen Sachen, und wenn man es doch schafft, dann nur in Feinarbeit mit 100 verschiedenen Einstellmöglichkeiten. Einen Automatismus gibt es da nicht. |
Re: objekt aus grafik freistellen
Es tut mir leid Oxmyx aber ich muss die wiedersprechen.
Ich schreibe grad meine Facharbeit über Bildsegmentierung. Sowas können heute verdammt viele Programme. Und bei weit komplizierteren Motiven. Die zz. am weitesten entwickelten sind wohl Siox (in Gimp) ![]() Und von Microsoft: Grabcut ![]() Auch Photoshop hat mit ihrem Extrahieren Werkzueug ähnliches eingebaut. Ebenso Corel Draw. |
Re: objekt aus grafik freistellen
Hi Ihr,
danke erstmal für eure Antworten. Ich werd mir das alles mal durch den Kopf gehen lassen. Diese Grabcut sieht gut aus, ich frag mich wie die das da machen... |
Re: objekt aus grafik freistellen
Zitat:
Dust Signs |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz