Delphi-PRAXiS

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

Vjay 3. Feb 2006 09:49

Re: objekt aus grafik freistellen
 
Mhm, wie ist denn das wenn der Fotograph einfach 2 Fotos macht?
Also sprich eins vor dem Beginn der Session, dann könntest du das Model-Bild mit dem Pre-Bild vergleichen und überall, wo sie sich ähnleln = weiß.
Wenn die Lichtverhältnisse immer ungefähr gleich wären, wäre dies nicht nötig, aber das ist wohl sicher nicht der Fall.

Dust Signs 3. Feb 2006 09:53

Re: objekt aus grafik freistellen
 
Zitat:

Zitat von Vjay
Mhm, wie ist denn das wenn der Fotograph einfach 2 Fotos macht?
Also sprich eins vor dem Beginn der Session, dann könntest du das Model-Bild mit dem Pre-Bild vergleichen und überall, wo sie sich ähnleln = weiß.
Wenn die Lichtverhältnisse immer ungefähr gleich wären, wäre dies nicht nötig, aber das ist wohl sicher nicht der Fall.

Die Lösung wäre allein von dem her nicht gut, weil die Frau einen Schatten auf die Wand wirft...

Dust Signs

DerDan 3. Feb 2006 10:12

Re: objekt aus grafik freistellen
 
Mal die Idee von Vjay weiterspinnen:

Wenn man zwei Fotos von der gleichen Scene macht nur aus unterschiedlichen Winkeln dann müßte man doch die Frau als 3D Object erkennen und Freistellen können. aus diesem 3D Object müßt man dann nur wieder ein Foto machen und schon ist dia Aufgabe gelöst.


wobei mir völlig klar ist, das das mit dem 3D Object ein riesen aufwand ist!


mfg

Der Daniel

Vjay 3. Feb 2006 10:28

Re: objekt aus grafik freistellen
 
Oder man lässt einen Schatten in der Tolleranz liegen.

Sehe sonst echt schwarz es zu einer sehr hohen quote ohne jeglichen Usereingriff automatisch durchlaufen zu lassen - besonders bei dem Hintergrund.
Ich meine, bei dem Beispiel ist der Kontrast ja noch recht hoch, aber was ist wenn das Model Kleider trägt die dem Hintergrund mehr ähneln?Oder stehen mehrere Hintergründe zur Verfügung, die dann - dem Kontrast entsprechend - geändert werden?
Wohl nicht, sonst würde jetzt auch ein vernünftiger Hintergund vorhanden sein ;)

mimi 20. Jul 2007 22:07

Re: objekt aus grafik freistellen
 
ich weiß das Thema ist etwas älter und es ist mit Sicherheit schon ein ansatzt gefunden worden, aber wie Währe es hiermit:
Der User müsste nur alle eck-punkte Defnieren, die werden dann verbunden und ausgeschnitten. Schon ist die Frau isoliert und es kann ein neuer Hintergrund gezeichnet werden.

(Wobei ich frage warum das nötig ist, ist es nur als Aufgabe gedachte gewesen, oder steckt mehr dahinter).

Wobei wie währe es denn, wenn die Frau keine Farben hätte die im hintergrund Vorkommen ?
(mit Toleranzen natürlich)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 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-2025 by Thomas Breitkreuz