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

# Feature Detector

Este bloque de función localiza un objeto en una imagen en vivo o estática comparando características con una imagen de entrenamiento proporcionada. Compara puntos distintivos entre la imagen de entrenamiento y la imagen de entrada, intenta estimar la posición y rotación del objeto y devuelve un resultado visual y numérico.

## 📥 Entradas <a href="#inputs" id="inputs"></a>

`Train Image` La imagen de referencia que contiene el objeto a detectar. Proporcione un recorte claro y bien iluminado del objeto.

`Input Image From Camera` La imagen donde el bloque buscará el objeto (fotograma de cámara en vivo o imagen cargada).

Estos son los sockets de entrada.

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

`Detected Image` La imagen de entrada anotada con gráficos de detección (por ejemplo, contorno y centro) cuando se encuentra el objeto.

`Detect Status` Un booleano que indica si el objeto fue detectado (true/false).

`Center` Las coordenadas (x, y) del centro del objeto detectado.

Estos son los sockets de salida.

## 🕹️ Controles <a href="#controls" id="controls"></a>

`Homography Type` Elija el método usado para estimar la transformación geométrica entre las imágenes.

`Compute Type` Seleccione la preferencia interna de cálculo (calidad vs rendimiento).

`Number of features` Cuántos puntos clave/características detectar en la `Train Image`.

`Distance Threshold` Tolerancia usada al emparejar características (afecta la aceptación de coincidencias).

`K nearest` Número de coincidencias más cercanas que se consideran al comparar descriptores.

`Pyramid Decrease Ratio` Controla los pasos de reducción de escala para detección multi-escala.

`Pyramid Levels` Número de niveles de pirámide usados en el procesamiento multi-escala.

`Point Compare Type` Parámetro interno que afecta cómo se comparan los puntos.

Estos son los widgets que puede ajustar para modificar el comportamiento de la detección.

## ⚙️ Cómo funciona <a href="#running-mechanism" id="running-mechanism"></a>

* El bloque extrae características de la `Train Image` usando las configuraciones seleccionadas de características/cálculo.
* Luego busca en la `Input Image From Camera` características coincidentes e intenta estimar la ubicación y orientación del objeto.
* Si se encuentra una transformación válida, el bloque anota la imagen de entrada con un contorno y un punto central, establece `Detect Status` en true y devuelve las coordenadas del centro detectado.
* Si no hay coincidencia válida, `Detect Status` es false y `Center` devuelve una coordenada por defecto.

El bloque evalúa continuamente cuando está conectado a fuentes en vivo, por lo que ajustar los controles actualizará el comportamiento casi en tiempo real.

## ✨ Características clave <a href="#features" id="features"></a>

* Detección basada en características robusta que maneja cambios de rotación y escala.
* Ajustes con múltiples parámetros para balancear calidad vs rendimiento.
* Retroalimentación visual mediante la `Detected Image` anotada para confirmar resultados.
* Salidas que incluyen un estado booleano y la posición exacta del centro para lógica posterior.

## 📝 Instrucciones de uso <a href="#usage" id="usage"></a>

1. Proporcione un ejemplo recortado y claro del objeto en `Train Image`. Prefiera imágenes con texturas o esquinas distintivas.
2. Conecte un fotograma de cámara o una imagen a `Input Image From Camera`.
3. Empiece con valores moderados: ponga `Number of features` en unas pocas centenas y `Distance Threshold` en un valor medio.
4. Ejecute el sistema y observe la `Detected Image`. Ajuste `Homography Type`, `Number of features`, `Distance Threshold` y `K nearest` para mejorar la fiabilidad.
5. Use el booleano `Detect Status` para activar acciones (registro, guardado, conteo) o alimente `Center` a otros bloques.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Si la escala del objeto y de la cámara difieren, use `Image Resize` antes de este bloque para que la `Train Image` y la imagen de entrada estén más cercanas en escala.
* Recorte el área de búsqueda con `Image ROI Select` para acelerar la detección y evitar coincidencias falsas por fondos con mucho ruido.
* Mejore la robustez en condiciones de ruido con `Blur` para eliminar ruido de alta frecuencia, o utilice `Contrast Optimization` para aumentar el contraste antes de la detección.
* Use `Show Image` para previsualizar los resultados de detección de forma interactiva mientras ajusta los controles.
* Para dibujar y reportar resultados, combínelo con `Draw Detections` para superponer las detecciones de forma clara en las imágenes de salida.
* Si la coincidencia basada en plantillas es más adecuada para su objeto, considere probar el bloque `Find Object` como alternativa o complemento.
* Para almacenar ejemplos o resultados para revisión offline, agréguelo junto con `Image Logger`.

(Los consejos anteriores hacen referencia a bloques de función disponibles que puede combinar en un flujo.)

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* Sin detecciones: aumente `Number of features`, relaje `Distance Threshold` o proporcione una `Train Image` más clara. Pruebe diferentes valores de `Homography Type`.
* Falsos positivos: reduzca `Number of features` o apriete `Distance Threshold`. Recorte la imagen con `Image ROI Select` para eliminar fondos confusos.
* Rendimiento lento: reduzca `Number of features`, baje los niveles de pirámide o ejecute una región de búsqueda más pequeña. Preprocese con `Image Resize` para reducir las dimensiones de entrada.
* Resultados pobres con bajo contraste: aplique primero `Contrast Optimization` o capture una `Train Image` de mayor calidad.

Si los resultados siguen siendo inconsistentes, itere: ajuste los controles de forma incremental y use `Show Image` para confirmar visualmente los cambios.
