# Medición de ancho de baldosa

### Medición del ancho de la baldosa

Las mediciones pueden ser desafiantes según el contexto del proyecto. Los bloques de función listos para usar de AugeLab Studio permiten realizar mediciones de forma fácil y rápida en casos complejos.

Este ejemplo te mostrará cómo medir el ancho (efectivamente la distancia) de una baldosa de madera.

Primero. Usa el bloque de función `Load Image` (../../blocks/blocks-reference/io/image/load-image.md) y carga **wood.jpg** desde la carpeta de imágenes de ejemplo proporcionada por AugeLab Studio.

!\[]\(.assets/gitbook/image (90).png)

Nuestro objetivo es medir el ancho de cada baldosa y mostrarlos. A continuación, necesitaremos preprocesar la imagen para reducir el ruido introducido por la cámara o el entorno. Para estos casos, el bloque `Blur` (../../blocks/blocks-reference/imgproc/filters\_color/blur.md) con la opción **Median Blur** es una buena elección. Crea la lógica siguiente:

!\[]\(.assets/gitbook/image (92).png)

Mantenemos el *Kernel Size* en 3 para que el preprocesado sea mínimo, ya que cualquier tipo de preprocesado puede afectar el resultado final de la medición. Después, usaremos el bloque `Histogram on Line` (../../blocks/blocks-reference/imgproc/analysis/histogram-on-line.md).

El bloque `Histogram on Line` detecta automáticamente bordes pronunciados y almacena sus ubicaciones como puntos según los valores de umbral y posición que proporciones. Con la lógica abajo:

!\[]\(.assets/gitbook/image (83).png)

Le decimos al bloque `Histogram on Line` que calcule bordes en la posición horizontal píxel 100 y que busque bordes que excedan valores superiores a 100 (rango 0–255).

La ubicación horizontal de la línea de detección (segundo conector) es la más importante, ya que otros factores pueden causar detecciones falsas. Prueba con 350 y observa qué ocurre:

!\[]\(.assets/gitbook/image (84).png)

Elegir una línea horizontal con más perturbaciones ha provocado detecciones falsas. Por lo tanto, siempre es recomendable elegir una línea que esté mínimamente afectada por el ruido y el entorno.

Como hemos calculado con éxito las ubicaciones de los bordes de cada baldosa, podemos calcular el ancho de la primera baldosa introduciendo varios bloques.

Primero, usaremos la salida `Peak Mean Locations` del bloque `Histogram on Line`. Esta salida consiste en una [lista](https://docs.augelab.com/spanish/function-blocks/sockets#purple-position) de posiciones:

!\[]\(.assets/gitbook/image (86).png)

Cada posición contiene coordenadas horizontales y verticales (x, y) de los picos. Podemos calcular la distancia entre cada punto usando el bloque `Demux` (../../blocks/blocks-reference/data\_logic/logic/demux.md), o usando el bloque `Measure Position Distance` (../../blocks/blocks-reference/imgproc/analysis/measure-position-distance.md).

Usa el bloque `List Operations` (../../blocks/blocks-reference/data\_logic/ops/list-operations.md) y elige `get` en el menú desplegable. Sigue la lógica siguiente:

!\[]\(.assets/gitbook/image (87).png)

La lógica anterior selecciona el primer elemento usando cero (0) y el segundo elemento usando uno (1). Con `Measure Position Distance`; se calculan y presentan las distancias en x-y y la distancia Euclidiana.

Verás que la distancia en y es cero, porque todos los puntos están en la misma línea horizontal.

¡Listo! Has calculado el ancho de la primera baldosa.

### Calcular todos los anchos de las baldosas

Ahora, calculemos los demás anchos usando operaciones con listas y por lotes.

Con el mismo bloque `List Operations`, selecciona la opción `pop` del desplegable. La opción `pop` elimina el elemento en el índice dado de una lista. Crea la lógica siguiente:

!\[]\(.assets/gitbook/image (88).png)

El bloque `List Operations` primero copia la lista proporcionada y luego calcula el resultado deseado. Creamos una lista de ubicaciones de picos sin el primer elemento y otra lista eliminando el último elemento.

Usándolas con `Batch Processing` (../../blocks/blocks-reference/data\_logic/flow/batch-processing.md) y `Data Type Converter` (../../blocks/blocks-reference/data\_logic/ops/data-type-converter.md), podemos calcular la diferencia posicional entre cada par de picos:

!\[]\(.assets/gitbook/image (89).png)

Es importante usar `Data Type Converter` cuando trabajes con `Batch Processing`. Si un bloque de función recibe un lote, se ejecuta en modo batch. Usa la opción `Batch2List` en su menú para volver al modo de operación normal.

¡Eso es todo! Has calculado el ancho de todas las baldosas.
