> 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/roi-processing/perspective-transform.md).

# Perspective Transform

Esta función permite definir una región cuadrilátera en una imagen y generar una vista corregida, desde arriba (transformada por perspectiva) de esa región. Es interactiva: selecciona cuatro puntos en la imagen, arrástralos para refinar y usa atajos de teclado para editar la selección.

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

* `Image` — Imagen fuente mostrada dentro del bloque para la selección de puntos.

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

* `Image` — Imagen transformada por perspectiva (warped) de la cuadrilátera seleccionada.
* `Transform Matrix` — Matriz de transformación por perspectiva (útil para alimentar otros bloques que requieran una matriz de perspectiva u homografía).

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

* `Interactive Image Area` — Haz clic en la imagen para añadir puntos. Los puntos se muestran como un polígono superpuesto a medida que los añades.
* `Drag Points` — Haz clic y arrastra un punto para ajustar su posición.
* `C` — Limpia todos los puntos seleccionados.
* `U` — Deshace el último punto añadido.
* `Help Text` — Pequeñas instrucciones en el bloque que recuerdan cómo añadir, arrastrar, limpiar y deshacer puntos.

Nota: La superposición indicará si el polígono está completo y resaltará el vértice bajo el ratón para facilitar el ajuste.

## ⚙️ Mecanismo de ejecución <a href="#running-mechanism" id="running-mechanism"></a>

* El bloque muestra la imagen conectada para que puedas seleccionar interactivamente cuatro puntos.
* Si se definen menos de cuatro puntos, el bloque devuelve salidas vacías para que los bloques posteriores sepan que la transformación no está lista.
* Una vez proporcionados los cuatro puntos, el bloque los ordena, calcula el tamaño del rectángulo de salida a partir de los puntos seleccionados, construye la transformación de perspectiva y entrega la imagen warpeada junto con la matriz de transformación.
* El bloque almacena en caché la última transformación calculada para la misma imagen y conjunto de puntos para evitar recomputaciones innecesarias mientras ajustas otras partes del escenario.

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

* Selección ROI interactiva y visual con edición por arrastrar y soltar.
* Atajos de teclado para edición rápida.
* Superposición visual que muestra el polígono, el vértice resaltado y el estado de completitud.
* Devuelve tanto la imagen corregida como la matriz de transformación para reutilizar.
* Dimensionado automático que elige un rectángulo de salida apropiado en función de los puntos seleccionados.

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

1. Conecta un bloque que produzca imagen a la entrada `Image`.
2. Haz clic en el área de imagen dentro del bloque para colocar hasta cuatro puntos de esquina (en cualquier orden).
3. Arrastra los puntos para afinar sus posiciones.
4. Usa `U` para deshacer el último punto y `C` para limpiar todos los puntos.
5. Cuando haya cuatro puntos, el bloque proporcionará una imagen corregida y la salida `Transform Matrix`.

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

* Usa `Show Image` para previsualizar la imagen fuente o la transformada en una ventana de visualización más grande mientras ajustas los puntos.
* Si necesitas recortar el área primero, añade `Image ROI Select` o `Image ROI` antes de este bloque para trabajar en una región más pequeña.
* Si tu imagen fuente es muy grande, añade `Image Resizer` antes de este bloque para acelerar la interacción y reducir el uso de memoria.
* La `Transform Matrix` producida puede alimentarse al bloque `Social Distance Detector` como la entrada requerida `Perspective Matrix` para habilitar mediciones de distancia en el mundo real desde la vista warpeada.
* Guarda los resultados transformados con `Image Write` si quieres conservar una copia de las imágenes corregidas.

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

* Si no aparece salida, asegúrate de que se han definido cuatro puntos — el bloque no producirá transformación hasta que el cuadrilátero esté completo.
* Si la imagen warpeada se ve deformada, ajusta los puntos de las esquinas arrastrándolos; usar `Show Image` ayuda a inspeccionar detalles mientras afinas.
* Si la interacción va lenta en imágenes grandes, inserta `Image Resizer` antes de este bloque o trabaja en una región recortada con `Image ROI Select`.
* Si añades un punto en el lugar equivocado, pulsa `U` para eliminar el último punto o `C` para empezar de nuevo.
