Hintergrundsubtraktion

Aus toolbox_interaktion
Wechseln zu: Navigation, Suche

Eine einfache, aber sehr wirkungsvolle Methode ist die Hintergrundsubtraktion, die z.B. auch im medizinischen Bereich bei der Digitalen-Subtraktions-Agiografie (DSA) angewendet wird.

Dabei wird zunächst ein Bild ("Hintergrund") aufgenommen, welches das später zu erkennende Objekt nicht enthält. Vom zu analysierenden Bild wird dann dieses Hintergrundbild subtrahiert. Als Ergebnis der Subtraktion erhält man alle Unterschiede zum "leeren" Hintergrundbild – also z.B. eine Person, die im Bild aufge¬nommen wurde. Der EyesWeb3.3-Patch hintergrundsubtraktion.eyw zeigt eine Realisierung der Hintergundsubtraktion.

Eyw hintergrundsubtraktion.png


Der Patch für Eyesweb XMI 5.2 hintergrundsubtraktion_xmi_a.eywx sieht entsprechend aus.


Eywx hintergrundsubtraktion xmi a.png


Das Ergebnis der Hintergrundsubtraktion ist nachfolgend beispielhaft gezeigt:

Hintergrundbild:

Input 000.jpg

Beispiele für dei Hintergrundsubtraktion (jeweils zunächst der Input un dann das Ergebnis der Subtraktion):

Input 050.jpg Subtract 050.jpg

Input 270.jpg Subtract 270.jpg

Bei der Realisierung der Hintergrundsubtraktion sind vor allem folgende Punkte zu beachten:

  • 1. Bei der Subtraktion ist der Absolutbetrag zu verwenden. Falls ein Objektpunkt heller sein sollte (= größerer Grauwert/Farbwert) als der entsprechende Hintergrundpunkt, erhält man ein negatives Ergebnis bei der Subtraktion. Ein Bild hat aber per definitionem nur positive Werte.
  • 2. Es ist auf gleichbleibende Beleuchtung zu achten. Ändert sich die Beleuchtung, so ergibt sich bei der Subtraktion in (fast) jedem Bildpunkt eine Differenz.
  • 3. Automatisch Blendenregelung der Kamera abschalten. Ändert sich der Bildinhalt (z.B. oben durch die Person), so wird meist die Belichtung/Blende der Kamera nachgeregelt. Dies führt dann – wie in Pkt. 2 – zu Differenzen in allen Bildpunkten.
  • 4. Die Schattenbildung sollte möglichst reduziert werden, da der Schatten natürlich auch als „Objekt“ im Differenzbild erhalten bleibt (siehe Beispiel unten)


Je nach Anwendung kann es sinnvoll sein, statt eines Farbbildes ein Grauwertbild zu verwenden, wie der nachfolgende EyesWeb3.3-Patch hintergrundsubtraktion_gw.eyw zeigt:

Eyw hintergrundsubtraktion gw.png


Der Patch für Eyesweb XMI 5.2 hintergrundsubtraktion_xmi_b.eywx sieht entsprechend aus.


Eywx hintergrundsubtraktion xmi b.png


Beispiel:

Input gw 270.jpg Subtract gw 270.jpg


Hiermit ist im nachfolgenden EyesWeb3.3-Patch hintergrundsubtraktion_gw_sp.eyw schon gut der Schwerpunkt der Person zu bestimmen, womit eine interaktive Anwendung gesteuert werden kann. Der Schwerpunkt wird hier mit dem Block „Baricenter“ berechnet und mit „Draw Point“ in das Bild eingezeichnet. Die Koordinaten des Schwerpunkts können dann ebenso mittels MIDI oder OCS an eine zu steuernde Anwendung übertragen werden.

Eyw hintergrundsubtraktion gw sp.png


Der Patch für Eyesweb XMI 5.2 hintergrundsubtraktion_xmi_c.eywx sieht entsprechend aus.


Eywx hintergrundsubtraktion xmi c.png


Beispiel:

Subtract gw sp 050.jpg Subtract gw sp 270.jpg


Das Ergebnis der Hintergrundsubtraktion kann auch die Basis für eine Binarisierung sein, da das "Objekt" sich nun gut vom Hintergrund unterscheidet. Dies ist im Allgemeinen eine wesentlich bessere Ausgangssituation als eine Binarisierung ohne vorhergehende Bearbeitung des Bildes. Der nachfolgende Eyesweb-Patch hintergrundsubtraktion_gw_sub_bin_sp.eyw veranschaulicht dies.

Eyw hintergrundsubtraktion gw sub bin sp.png

Eine Problematik ist nun aber, dass das Ergebnis der Binarisierung – und damit das Ergebnis der Scherpunktberechnung – von einer (manuellen) Parametrierung des Schwellwertes abhängig ist. Je nach eingestelltem Schwellwert ist das Ergebnis unterschiedlich, wie nachfolgend zu sehen ist.


Beispiel 1 (Schwellwert 127)

Subtract bin127 sp 050.jpg Subtract bin127 sp 270.jpg

Der Schatten ist bei dieser Einstellung nicht sichtbar, allerdings fehlen auch Teile des Körpers, die im Differenzbild dunkler erscheinen.


Beispiel 2 (Schwellwert 13)


Subtract bin13 sp 050.jpg Subtract bin13 sp 270.jpg

Hier ist der Körper "kompakter" und "vollständiger", aber dafür sind auch viele Störungen im Hintergrund sowie der Schatten sichtbar.


Natürlich kann durch entsprechende Verfahren versucht werden, diese Störungen zu entfernen (Median-Filter, Morphologische Operationen etc.), jedoch bleibt die grundsätzliche Problematik der Parametrierung des Schwellwertes erhalten.

Um die Problematik des Schwellwertes besser zu lösen, wurde in EyesWeb 3.3 der Block "Background Substraction Multi Threshold (BgndSubMultThresh)" implemetiert. Dieser Algorithmus zerlegt das Bild in mehrere Bereiche und versucht automatisch einen Schwellwert für jeden Bereich zu finden. Der nachfolgende Eyesweb-Patch hintergrundsubtraktion_gw_multiThres_sp.eyw zeigt die Anwendnung dieses Blocks.

Eyw hintergrundsubtraktion gw multiThres sp.png


In Eyesweb XMI 5.2 sind mehrere Verfahren zur Hintergrundsubtraktion implementiert.


Eywx hintergrundsubtraktion xmi specials.png


Beispiel für die Anwendung des Blocks "Background Substraction Multi Threshold":

Subtract gw multThres sp 050.jpg Subtract gw multThres sp 270.jpg

Wie dem Beispiel zu entnehmen ist, sind auch hier Störungen im Hintergrund verblieben, jedoch ist das Ergebnis durchaus besser als bei der "einfachen" Binarisierung im vorher gehenden Bespiel.


Wie schon vorher erwähnt, können Störungen durch die Anwendung entsprechender Filteroperation reduziert werden. Dies wird nachfolgend gezeigt.

Der nichtlineare Median-Filter (in EyesWeb kann dies im Block „NonlinearFilter“ parametriert werden) stellt eine Möglichkeit zur Entfernung von Störungen dar, wie dies im Patch hintergrundsubtraktion_gw_multiThres_median_sp.eyw

Eyw hintergrundsubtraktion gw multiThres median sp.png


Beispiel (3x3 Median):

Subtract gw multThres Median sp 050.jpg Subtract gw multThres Median sp 270.jpg


Beispiel (5x5 Median):

Subtract gw multThres Median5 sp 050.jpg Subtract gw multThres Median5 sp 270.jpg


Wie den Beispielen zu entnehmen ist, sind nun fast alle Störungen im Hintergrund eliminiert und die Bestimmung des Schwerpunkts entspricht den Erwartungen.


An Stelle des Median-Filters kann auch die morphologische Operation "Opening" zur Beseitigung der Störungen verwendet werden (hintergrundsubtraktion_gw_multiThres_opening_sp.eyw):

Eyw hintergrundsubtraktion gw multiThres opening sp.png


Beispiel:

Subtract gw multThres opening sp 050.jpg Subtract gw multThres opening sp 270.jpg

Auch hier werden die Störungen gut aus dem Bild entfernt. Welches der Verfahren – Median oder Opening - vorzuziehen ist, hängt vom konkreten Anwendungsfall ab.