# Background Subtractor

Dieser Funktionsblock erkennt bewegte bzw. Vordergrundbereiche, indem er aktuelle Frames mit einem erlernten Hintergrundmodell vergleicht. Verwenden Sie ihn, um Vordergrundobjekte (z. B. Personen, Fahrzeuge, bewegliche Teile) von einem stabilen Hintergrund zu trennen und eine binäre/skalare Vordergrundmaske für weitere Analysen zu erzeugen.

## 📥 Inputs (sockets)

`Input Image`\
Akzeptiert das Eingabebild oder Videoframe, das analysiert werden soll (Farbe oder Graustufen).

## 📤 Outputs (sockets)

`Foreground Mask`\
Gibt eine Graustufen-/binäre Maske aus, in der die Vordergrundpixel hervorgehoben sind.

## 🕹️ Controls

`Method`\
Wählen Sie den Hintergrundsubtraktionsalgorithmus (z. B. MOG2 oder KNN) aus dem Dropdown.

`History`\
Legt fest, wie viele vergangene Frames zum Aufbau des Hintergrundmodells verwendet werden. Höhere Werte führen zu einer langsameren Anpassung des Modells.

`VarThreshold`\
Steuert die Empfindlichkeit gegenüber Pixeländerungen. Niedrigere Werte machen den Subtraktor empfindlicher für kleine Änderungen; höhere Werte verringern die Empfindlichkeit.

## ⚙️ Ausführungsmechanismus

Jedes Mal, wenn der Block ausgeführt wird:

* Verwendet er die ausgewählte `Method` und die aktuellen `History`- / `VarThreshold`-Einstellungen.
* Wenn sich Einstellungen geändert haben, wird das interne Hintergrundmodell neu initialisiert, um die neuen Parameter zu berücksichtigen.
* Verarbeitet er das eingehende `Input Image` und erzeugt die `Foreground Mask`, die die erkannten Vordergrundbereiche anzeigt.

Die Maske wird Frame-für-Frame aktualisiert und kann von anderen Blöcken für Zählungen, Tracking oder Speicherung verwendet werden.

## 🎯 Features

* Schneller Wechsel zwischen Algorithmen über `Method`.
* Echtzeit-Anpassung der Parameter mit den Schiebereglern `History` und `VarThreshold`, um Anpassungsgeschwindigkeit und Stabilität auszubalancieren.
* Erzeugt eine sofort nutzbare `Foreground Mask`, die in Erkennungs- oder Analyseblöcke eingespeist werden kann.

## 📝 Usage

1. Verbinden Sie einen bildproduzierenden Block (Kamera, Video oder Load Image) mit `Input Image`.
2. Wählen Sie die gewünschte `Method` und justieren Sie `History` und `VarThreshold`, während Sie die Ergebnisse beobachten.
3. Verwenden Sie die `Foreground Mask` mit nachgeschalteten Blöcken für Erkennung, Zählung oder Protokollierung.

## 💡 Tips and Tricks

* Bei verrauschten Ergebnissen versuchen Sie, das Eingangsbild zuerst mit `Blur` zu glätten oder hochfrequentes Rauschen mit `Denoising` zu reduzieren, bevor Sie es an diesen Block geben.
* Um kleine Sprenkel in der Maske zu entfernen, hängen Sie `Morphological Transformations` nach diesem Block an, um Opening/Closing durchzuführen.
* Wenn Sie nur an einem bestimmten Bereich interessiert sind, schneiden Sie das Eingangsbild mit `Image ROI Select` oder `Image ROI` vor der Hintergrundsubtraktion aus, um die Verarbeitung zu beschleunigen.
* Verwenden Sie `Show Image`, um die `Foreground Mask` in einem größeren Viewer zur Parametereinstellung anzuzeigen.
* Für objektbezogene Analysen leiten Sie die Maske an `Blob Detector` oder `Find Contour` weiter, um erkannte Komponenten zu extrahieren und zu vermessen.
* Um Erkennungen im Originalframe zu annotieren oder hervorzuheben, kombinieren Sie mit `Draw Detections` oder `Draw Rectangle` unter Verwendung der aus Kontur-/Blob-Analysen gewonnenen Koordinaten.
* Sind Ihre Eingangsframes sehr groß, fügen Sie `Image Resizer` ein, um zuerst zu verkleinern und die Verarbeitung zu beschleunigen.
* Speichern Sie wichtige Frames oder Masken mit `Image Logger` oder `Image Write`, wenn eine Auslösebedingung eintritt (z. B. Erkennungsanzahl überschreitet einen Schwellenwert).
* Nutzen Sie `Image Memory`, um einen Frame einzufrieren und zu inspizieren, während die Live-Verarbeitung weiterläuft.

(Hinweise oben beziehen sich nur auf die verfügbaren Funktionsblöcke.)

## 🛠️ Troubleshooting

* Wenn die Vordergrundmaske zu empfindlich ist (viele flackernde Pixel), erhöhen Sie `VarThreshold` oder `History`, damit sich das Modell langsamer anpasst.
* Werden bewegte Objekte nicht zuverlässig erkannt, verringern Sie `VarThreshold` oder reduzieren Sie vorherige Glättung.
* Enthält die Maske kleine isolierte Störungen, fügen Sie `Morphological Transformations` (Opening) hinzu oder führen Sie `Blur` auf dem Eingang aus.
* Ändert sich der Hintergrund häufig (Beleuchtung, bewegter Hintergrund), reduzieren Sie `History`, damit sich das Modell schneller anpasst, oder beschränken Sie die Verarbeitung auf eine stabile ROI mit `Image ROI Select`.
* Wenn Sie die Maske nicht klar sehen können, verwenden Sie `Show Image`, um die Maske im Bildbetrachter besser zu inspizieren.

## 🔗 Empfohlene Block-Kombinationen

* Vorverarbeitung: `Blur` → `Background Subtractor` → `Morphological Transformations`
* Fokusierte Erkennung: `Image ROI Select` → `Background Subtractor` → `Blob Detector` → `Draw Detections`
* Protokollierung und Überprüfung: `Background Subtractor` → `Show Image` (Vorschau) und `Image Logger` oder `Image Write` (Masken/Frames speichern)
* Nachanalyse: `Background Subtractor` → `Find Contour` / `Measure Object Distance` → `Data to JSON` oder `CSV Export`

Diese Kombinationen helfen beim Aufbau zuverlässiger Video-Analyse-Pipelines mit den verfügbaren Blöcken.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.augelab.com/german/function-blocks/image-transformations/transformation-filters/background-subtractor.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
