Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi objekt aus grafik freistellen (https://www.delphipraxis.net/62267-objekt-aus-grafik-freistellen.html)

gi_networx 2. Feb 2006 01:50


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

rowkajjh 2. Feb 2006 07:05

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.

runger 2. Feb 2006 09:15

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

zer00 2. Feb 2006 11:30

Re: objekt aus grafik freistellen
 
Ich glaube mit Photoshop geht das viel schneller. ;)

grz zer00

Airblader 2. Feb 2006 11:36

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;

zer00 2. Feb 2006 21:16

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

Oxmyx 2. Feb 2006 21:42

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.

Hador 2. Feb 2006 22:16

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) http://www.siox.org/

Und von Microsoft: Grabcut http://research.microsoft.com/vision...on/GrabCut.htm

Auch Photoshop hat mit ihrem Extrahieren Werkzueug ähnliches eingebaut.
Ebenso Corel Draw.

gi_networx 3. Feb 2006 09:11

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...

Dust Signs 3. Feb 2006 09:16

Re: objekt aus grafik freistellen
 
Zitat:

Zitat von gi_networx
Diese Grabcut sieht gut aus, ich frag mich wie die das da machen...

In der aktuellen c't steht's ;)

Dust Signs


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:44 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz