> 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/image-transformations/operations/subtract-images.md).

# Subtract Images

Esta función calcula la diferencia píxel a píxel entre dos imágenes para resaltar cambios o defectos. Es útil para tareas de comparación como detectar desviaciones respecto a una referencia, inspección visual y análisis de movimiento/cambio.

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

`Actual Image`\
Entrada — la imagen que se va a comparar (imagen fuente).

`Reference Image`\
Entrada — la imagen que se restará de la `Actual Image` (línea base o referencia).

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

`Difference Image`\
Salida — imagen resultante que muestra la diferencia por píxel entre las entradas.

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

Este bloque no tiene controles o widgets visibles para el usuario.

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

* Genera una imagen de diferencia visual que enfatiza los cambios a nivel de píxel entre dos imágenes del mismo tamaño.
* Funciona con imágenes en color o en escala de grises (ambas entradas deben compartir las mismas dimensiones).
* Operación simple y rápida, adecuada como paso de preprocesado para detección posterior o registro.

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

Cuando ambas entradas proporcionan imágenes, el bloque produce la `Difference Image` realizando una resta píxel a píxel: `Actual Image` menos `Reference Image`. El bloque requiere que ambas imágenes tengan dimensiones idénticas; si los tamaños difieren, el bloque informará un error. La salida de diferencia puede conectarse a bloques de visualización, umbralización o conteo para interpretar los resultados.

## 📝 Uso <a href="#usage" id="usage"></a>

1. Conecte una imagen fuente al socket de entrada `Actual Image`.
2. Conecte una imagen de referencia o línea base al socket de entrada `Reference Image`.
3. Asegúrese de que ambas imágenes tengan el mismo tamaño. Si no es así, inserte el bloque `Image Resize` antes de este bloque.
4. Use la salida `Difference Image` para visualización o procesamiento posterior.

Ejemplos de flujos comunes:

* Inspección visual: conecte `Difference Image` a `Show Image` para previsualizar los cambios.
* Detección binaria: alimente `Difference Image` a `Image Threshold` para crear una máscara de áreas cambiadas.
* Cuantificación: pase la máscara umbralizada a `Non-zero of Image` para contar píxeles cambiados.
* Registro: guarde resultados con `Image Logger` o `Image Write` para mantener historial.

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

* Asegure la alineación y que la resolución de las imágenes coincida antes de restarlas. Use `Image Resize` o bloques de alineación geométrica si es necesario.
* Para hacer visibles diferencias sutiles, aplique `Contrast Optimization` o `Normalize Image` a la `Difference Image` antes de visualizar.
* Convierta la diferencia a una máscara binaria usando `Image Threshold` para aislar cambios significativos. Combine la máscara con `Non-zero of Image` para obtener una medida numérica del cambio.
* Para inspección rápida durante el desarrollo, conecte la salida a `Show Image`. Para ejecuciones automáticas, guarde resultados con `Image Logger` o `Image Write`.
* Si espera una salida de un solo canal, verifique los formatos de canal de las entradas (grayscale vs RGB) y conviértalos de forma consistente upstream.

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

* Tamaños de imagen no coincidentes\
  Asegúrese de que ambas entradas compartan el mismo ancho y alto. Use el bloque `Image Resize` para remuestrear una de las imágenes.
* Muy poca o ninguna diferencia visible\
  Aplique `Contrast Optimization` o `Normalize Image` para amplificar cambios pequeños, o use `Image Threshold` para crear una máscara binaria.
* Colores o canales inesperados\
  Confirme que ambas entradas estén en el mismo espacio de color (ambas en escala de grises o ambas en RGB) antes de conectarlas.
* Necesita una medida numérica del cambio\
  Tras umbralizar la diferencia, envíe la máscara a `Non-zero of Image` para obtener un recuento de píxeles cambiados.
