> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/german/function-blocks/ai-blocks/skeleton-estimation.md).

# Skeleton Estimation

Dieser Funktionsblock führt eine vollständige Körper-Skelettschätzung auf Eingabebildern durch. Er bietet mehrere Detailebenen (`Body`, `Body with Feet`, `Wholebody`), einstellbare Performance-Modi und Vertrauensschwellen, sodass Sie Geschwindigkeit und Genauigkeit ausbalancieren können. Als Ergebnisse erhalten Sie ein Visualisierungsbild, strukturierte Skelettdaten, Modell-Metadaten und eine Personenanzahl.

## 📥 Eingänge

`Image`\
Das Bild, das auf Körperhaltungen analysiert werden soll. Akzeptiert typische Bildquellen (Kamera-Frames, geladene Bilder oder verarbeitete Bilder aus anderen Blöcken).

## 📤 Ausgänge

`Visualization`\
Ein Bild mit eingezeichneten Skeletten und Bounding-Boxen für erkannte Personen.

`Skeletons`\
Strukturierte Daten, die erkannte Personen beschreiben: Bounding-Boxen, Keypoints (mit Namen und Konfidenzwerten) und optionale Gruppierungen von Körperteilen.

`Model Info`\
Metadaten zur aktuellen Modellauswahl und Laufzeiteinstellungen (Modelltyp, Modus, Gerät, Schwellenwerte).

`Person Count`\
Anzahl erkannter Personen, enthalten in den strukturierten Ausgaben.

## 🕹️ Steuerungen

`Model Type`\
Wählen Sie das Detaillierungsniveau: `Body` (17 Keypoints), `Body with Feet` (26 Keypoints) oder `Wholebody` (Körper + Gesicht + Hände).

`Mode`\
Wählen Sie ein Verarbeitungsprofil für Geschwindigkeit vs. Genauigkeit, z. B. `lightweight`, `balanced`, `performance`.

`Skeleton Style`\
Wählen Sie das Keypoint-Ausgabeformat, z. B. `MMPose` oder `OpenPose`.

`Detection Threshold`\
Minimum-Konfidenz, damit eine erkannte Person als gültig gilt.

`Keypoint Threshold`\
Minimum-Konfidenz, damit einzelne Keypoints als sichtbar markiert werden.

`Max Persons`\
Begrenzt die Anzahl der verarbeiteten und zurückgegebenen Personen, um die Leistung stabil zu halten.

## 🎯 Hauptfunktionen

* Mehrere Modellformate für verschiedene Anwendungsfälle: schnelle Körper-Erkennung oder detaillierte Ganzkörper-Analyse (Gesicht + Hände).
* Performance-Tuning über `Mode`, `Detection Threshold` und `Max Persons`, um sich an die Geräteleistung anzupassen.
* Keypoint-Filterung basierend auf Konfidenz, sodass nur zuverlässige Keypoints als sichtbar gemeldet werden.
* Visuelles Feedback durch Skelett-Overlays und Bounding-Boxen zur einfachen Überprüfung.
* Strukturierte Ausgaben, geeignet für Automatisierung, Analysen oder Protokollierung.

## ⚙️ Funktionsweise (für Anwender)

* Sobald ein Bild bereitgestellt wird, führt der Block das gewählte Schätzmodell aus und liefert sowohl ein annotiertes Bild als auch strukturierte Posedaten.
* `Detection Threshold` steuert, ob eine erkannte Person als gültig gilt. Niedrigere Werte liefern mehr Treffer, jedoch mehr False-Positives; höhere Werte sind strenger.
* `Keypoint Threshold` bestimmt, welche Keypoints als sichtbar markiert werden; damit ignorieren Sie Gelenke mit niedriger Konfidenz.
* `Max Persons` kürzt Ergebnisse auf die stärksten Erkennungen, um die Performance in überfüllten Szenen zu erhalten.
* Der Block passt sich an den gewählten `Mode` an, um einen Kompromiss zwischen Geschwindigkeit und Genauigkeit zu ermöglichen: leichtere Modi für Echtzeit, schwerere Modi für höhere Genauigkeit.

## 📝 Nutzungshinweise

1. Geben Sie eine Bildquelle an `Image`. Typische Quellen sind Kameraframes (`Camera USB`, `Camera IP (ONVIF)`) oder ein geladenes Bild (`Load Image`).
2. Wählen Sie `Model Type` je nach benötigter Detailtiefe.
3. Setzen Sie `Mode`, um Ihre Performance-Erwartungen zu erfüllen (schneller oder genauer).
4. Passen Sie `Detection Threshold` und `Keypoint Threshold` an, um unzuverlässige Erkennungen zu filtern.
5. Reduzieren Sie optional `Max Persons` für schnellere Verarbeitung auf ressourcenbegrenzten Systemen.
6. Verwenden Sie die Ausgaben: `Visualization` für Vorschauen, `Skeletons` für Analysen/Logging und `Person Count` zur Überwachung.

## 💡 Tipps und Tricks

* Für Live-Setups nutzen Sie `Camera USB`, `Camera IP (ONVIF)` oder `Stream Reader` als Bildquellen. Für Tests verwenden Sie `Load Image`.
* Wenn die Verarbeitung langsam ist, versuchen Sie:
  * Einen schnelleren `Mode` zu wählen.
  * `Max Persons` zu reduzieren.
  * Bilder vorab mit `Image Resize` zu verkleinern.
* Zur Robustheit bei verrauschten Bildern Vorverarbeitung wie `Blur` oder `Denoising` vor dem Skelett-Block einsetzen.
* Um auf einen Bereich zu fokussieren (z. B. Türbereich oder Förderband), mit `Image ROI` oder `Image ROI Select` zuschneiden und nur diesen Bereich schätzen lassen.
* Kombinieren Sie Ausgaben mit Visualisierung und Logging:
  * Senden Sie `Visualization` an `Show Image` für eine Vorschau.
  * Overlayen Sie Bounding-Boxen oder Labels mit `Draw Detections` oder `Write Text On Image` für Bedieneranzeigen.
  * Speichern Sie Verifikationsframes mit `Image Logger` oder zeichnen Sie Sessions mit `Record Video` für Audits auf.
  * Konvertieren Sie strukturierte `Skeletons`-Daten mit `Data to JSON` oder exportieren Sie Zählwerte via `CSV Export`.
* Für höhere Sicherheit oder Analytik:
  * Nutzen Sie `Skeletons` (Personenpositionen) zusammen mit `Social Distance Detector` zur Abstandskontrolle (ggf. mit `Perspective Transform` kalibrieren).
  * Geben Sie Personen-Bounding-Boxen oder Zentren an Logik-Blöcke weiter, um Alarme oder externe Aktionen auszulösen (z. B. `Send Mail` oder `MQTT Publish`).

## 🛠️ Fehlersuche

* Wenige oder keine Erkennungen:
  * Erhöhen Sie `Detection Threshold` und/oder `Keypoint Threshold` schrittweise oder wählen Sie einen genaueren `Mode`.
  * Stellen Sie sicher, dass die Personen gut ausgeleuchtet und klar im `Image` sichtbar sind.
  * Probieren Sie `Image Resize` (hoch- oder runterskalieren), um die erwartete Subjektgröße anzupassen.
* Schlechte Performance oder Reaktionsfähigkeit:
  * Wählen Sie einen leichteren `Mode`, verringern Sie `Max Persons` oder skalieren Sie Bilder mit `Image Resize` kleiner.
* Rauschen oder Flackern über Frames hinweg:
  * Erwägen Sie zeitliche Glättung in nachgelagerter Logik oder protokollieren Sie nur konﬁdente Erkennungen (mittels Schwellenwerte).
* Modellinitialisierung oder Laufzeitfehler:
  * Prüfen Sie, ob notwendige Laufzeitkomponenten verfügbar sind (über die Modul-Tools der Anwendung installierbar) und starten Sie den Block anschließend neu.

## 🔗 Beispiel-Block-Flows

* Echtzeitüberwachung: `Camera USB` → `Image Resize` → `Skeleton Estimation` → `Draw Detections` → `Show Image`
* Protokollierte Prüfspur: `Camera IP (ONVIF)` → `Skeleton Estimation` → `Image Logger` + `Data to JSON`
* Sicherheitsüberwachung (Abstandsprüfung): `Camera USB` → `Skeleton Estimation` → (Personenzentren extrahieren) → `Social Distance Detector` → `Draw Result On Image`

Nutzen Sie diese Kombinationen, um zuverlässige und leistungsfähige Pose-Erkennungssysteme zu erstellen, ohne Implementierungsdetails bearbeiten zu müssen.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.augelab.com/german/function-blocks/ai-blocks/skeleton-estimation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
