> 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/french/function-blocks/blocks-reference/detections-shapes/detectors/feature-detector.md).

# Feature Detector

Ce bloc fonction trouve un objet dans une image en direct ou statique en comparant des caractéristiques avec une image d'entraînement fournie. Il met en correspondance des points distinctifs entre l'image d'entraînement et l'image d'entrée, tente d'estimer la position et la rotation de l'objet, et fournit un résultat visuel et numérique.

## 📥 Entrées <a href="#inputs" id="inputs"></a>

`Train Image` — L'image de référence contenant l'objet à détecter. Fournissez un recadrage clair et bien éclairé de l'objet.

`Input Image From Camera` — L'image où le bloc recherchera l'objet (trame caméra en direct ou image chargée).

Ce sont des sockets d'entrée.

## 📤 Sorties <a href="#outputs" id="outputs"></a>

`Detected Image` — L'image d'entrée annotée avec les graphiques de détection (par exemple, contour et centre) lorsque l'objet est trouvé.

`Detect Status` — Un booléen indiquant si l'objet a été détecté (true/false).

`Center` — Les coordonnées (x, y) du centre de l'objet détecté.

Ce sont des sockets de sortie.

## 🕹️ Contrôles <a href="#controls" id="controls"></a>

`Homography Type` — Choisissez la méthode utilisée pour estimer la transformation géométrique entre les images.

`Compute Type` — Sélectionnez la préférence interne de calcul (qualité vs performance).

`Number of features` — Nombre de points clés/caractéristiques à détecter dans l'image d'entraînement.

`Distance Threshold` — Tolérance utilisée lors de la mise en correspondance des caractéristiques (affecte l'acceptation des appariements).

`K nearest` — Nombre de correspondances les plus proches prises en compte lors de la comparaison des descripteurs.

`Pyramid Decrease Ratio` — Contrôle les étapes de réduction d'échelle pour la détection multi-échelle.

`Pyramid Levels` — Nombre de niveaux de pyramide utilisés en traitement multi-échelle.

`Point Compare Type` — Paramètre interne affectant la manière dont les points sont comparés.

Ce sont des widgets que vous pouvez ajuster pour modifier le comportement de la détection.

## ⚙️ Fonctionnement <a href="#running-mechanism" id="running-mechanism"></a>

* Le bloc extrait des caractéristiques de la `Train Image` en utilisant les paramètres de caractéristique/calcul choisis.
* Il recherche ensuite des caractéristiques correspondantes dans la `Input Image From Camera` et tente d'estimer la position et l'orientation de l'objet.
* Si une transformation valide est trouvée, le bloc annote l'image d'entrée avec un contour délimitant et un point central, définit `Detect Status` sur true et fournit les coordonnées du `Center`.
* Si aucune correspondance valide n'est trouvée, `Detect Status` est false et `Center` renvoie une coordonnée par défaut.

Le bloc s'évalue en continu lorsqu'il est connecté à des sources en direct, donc le réglage des contrôles mettra à jour le comportement en temps quasi réel.

## ✨ Caractéristiques clés <a href="#features" id="features"></a>

* Détection robuste basée sur des caractéristiques, capable de gérer les rotations et les changements d'échelle.
* Réglages multi-paramètres pour équilibrer qualité et performance.
* Retour visuel via `Detected Image` annotée pour confirmer les résultats.
* Sorties à la fois booléennes (`Detect Status`) et coordonnées précises (`Center`) pour la logique en aval.

## 📝 Instructions d'utilisation <a href="#usage" id="usage"></a>

1. Fournissez un exemple recadré et clair de l'objet dans `Train Image`. Privilégiez des images avec textures ou coins distincts.
2. Connectez une trame caméra ou une image à `Input Image From Camera`.
3. Commencez avec des valeurs modérées : réglez `Number of features` à quelques centaines et `Distance Threshold` sur une valeur intermédiaire.
4. Lancez le système et observez `Detected Image`. Ajustez `Homography Type`, `Number of features`, `Distance Threshold` et `K nearest` pour améliorer la fiabilité.
5. Utilisez le booléen `Detect Status` pour déclencher des actions (journalisation, enregistrement, comptage) ou alimentez `Center` dans d'autres blocs.

## 💡 Astuces <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Si l'échelle de l'objet et celle de la caméra diffèrent, utilisez `Image Resize` avant ce bloc pour rapprocher les échelles de l'image d'entraînement et de l'image d'entrée.
* Recadrez la zone de recherche avec `Image ROI Select` pour accélérer la détection et éviter les fausses correspondances dues à un arrière-plan encombré.
* Améliorez la robustesse en cas de bruit avec `Blur` pour réduire les hautes fréquences, ou utilisez `Contrast Optimization` pour renforcer le contraste avant la détection.
* Utilisez `Show Image` pour prévisualiser les résultats de détection pendant le réglage des contrôles.
* Pour dessiner et rapporter les résultats, combinez avec `Draw Detections` pour superposer proprement les détections sur les images de sortie.
* Si la mise en correspondance par modèle convient mieux à votre objet, pensez à essayer le bloc `Find Object` comme alternative ou approche complémentaire.
* Pour stocker des exemples ou des résultats pour revue hors ligne, associez avec `Image Logger`.

(Les suggestions ci‑dessus font référence à des blocs fonctionnels disponibles que vous pouvez combiner dans un flux.)

## 🛠️ Dépannage <a href="#troubleshooting" id="troubleshooting"></a>

* Pas de détection : augmentez `Number of features`, relâchez `Distance Threshold` ou fournissez une image d'entraînement plus claire. Essayez différentes valeurs de `Homography Type`.
* Faux positifs : réduisez `Number of features` ou resserrez `Distance Threshold`. Recadrez l'image avec `Image ROI Select` pour éliminer les arrière-plans perturbateurs.
* Performance lente : baissez `Number of features`, réduisez le nombre de niveaux de pyramide, ou effectuez la recherche sur une région plus petite. Prétraitez avec `Image Resize` pour diminuer les dimensions d'entrée.
* Mauvais résultats en faible contraste : appliquez d'abord `Contrast Optimization` ou capturez une image d'entraînement de meilleure qualité.

Si les résultats restent incohérents, procédez par itérations : ajustez les contrôles progressivement et utilisez `Show Image` pour confirmer visuellement les changements.
