# DetectBlobs

La función DetectBlobs realiza un tipo de análisis de blobs conocido como «análisis de la conectividad» en una región de interés (RDI). En el «análisis de la conectividad», los píxeles de la RDI se dividen en dos categorías, blob o fondo, considerando para ello un valor umbral en escala de grises de modo que todos los píxeles con valores por debajo del umbral se asignan a la categoría «negra» y todos los píxeles con valores por encima del umbral a la categoría «blanca».

De esta forma, los píxeles con valores similares se agrupan en función de su "color" y en función de si "están en contacto" o no con los píxeles vecinos. Los píxeles del fondo están conectados a sus vecinos si están en contacto con ellos en cualquiera de sus lados laterales o en el superior o inferior, mientras que los píxeles de un blob están conectados con sus vecinos si están en contacto con ellos en cualquiera de sus lados, ya sea en un lado lateral, en el superior o inferior, o en un punto diagonal del mismo.

Una vez procesada la imagen, estará segmentada por blobs y píxeles de fondo. Los blobs que se encuentren en la RDI se identificarán en función de sus características físicas y valores asignados, tales como ubicación del blob en la imagen (sus coordenadas de fila y columna), su área, perímetro, extensión y elongación. Los datos de los blobs extraídos se almacenan y proporcionan como resultados en una estructura de datos Blobs.

Esta función constituye el primer paso del análisis de blobs y tanto FindBlobs como SortBlobs utilizan finalmente Referencias de celda a una estructura de datos Blobs de la función DetectBlobs, ya sea directamente o a través de Auditing.

## DetectBlobs Entradas

Parámetro | Descripción
Imagen | This parameter must reference a spreadsheet cell that contains an Imagen data structure; by default, this parameter references A0, the cell containing the data structure. This parameter can also reference other Image data structures, such as those returned by the Image Vision Data Access functions or Funciones de transformación de coordenadas.
Elemento posicionador | Define la región de interés (RDI) con relación a un Fixture entrado o al sistema de coordenadas de imagen proporcionado por una función de Vision Tools. Establecer la RDI con relación al un elemento posicionador permite asegurar que si se gira o desplaza el elemento posicionador, se girará o desplazará en consonancia la RDI, manteniéndose fija la relación entre ambos. El valor de configuración predeterminado es (0,0,0), la esquina superior izquierda de la imagen.
X | El desplazamiento en X, en coordenadas de la imagen.
Y | El desplazamiento en Y, en coordenadas de la imagen.
Theta | La rotación desde el eje X de la imagen, en el sistema de coordenadas de imagen. (+/-360 grados en el sentido de las agujas del reloj)
Región | También conocida como región de interés (RDI), especifica la región de la imagen que se somete a análisis. Haga doble clic sobre el parámetro Región para crear un Modo gráfico interactivo que permite transformar y girar. Seleccione este parámetro y pulse el botón «Maximizar región» en la barra de herramientas de edición de tareas de la hoja de propiedades a fin de expandir automáticamente la región hasta cubrir toda la imagen.
X | El desplazamiento en X del origen, en coordenadas del elemento posicionador.
Y | El desplazamiento en Y del origen, en coordenadas del elemento posicionador.
Ancho | El tamaño de la región en la dirección del eje X.
Altura | El tamaño de la región en la dirección del eje Y.
Ángulo | La orientación en coordenadas del elemento posicionador.
Curva | La desviación angular entre el eje X de la región y la línea limítrofe del lado opuesto.
Nota: Los parámetros Elemento posicionador y Región deben estar definidos dentro de los límites de la imagen; de lo contrario, la función dará #ERR.
Región externa | Este parámetro utiliza Referencias de celda a una herramienta o función de control Annulus, Circle, Region, EditAnnulus, EditCircle, EditCompositeRegion, EditPolygon, EditRegion. Cuando se utiliza este parámetro, la función ignora los ajustes de Región y Elemento e inspecciona el área de imagen especificada por la región a la que se hace referencia. Si se hace referencia a un control de EditCompositeRegion, el área de inspección puede consistir en una combinación de formas. Cada forma de la región combinada puede definirse como una forma añadida al área de inspección o una sustraída (enmascaramiento) de la misma. Nota: Si este parámetro ha sido configurado como referencia a una región externa, entonces, para utilizar la Región interna de la función, habrá que poner manualmente este parámetro a cero introduciendo para ello el valor 0 en lugar de la referencia de celda. En caso contrario, la función seguirá haciendo referencia a la región externa.
Número a clasificar | Especifica el número de blobs a clasificar.
0 | Da todos los blobs que cumplen los parámetros de color y tamaño especificados en Color Blob/Color Fondo y Límite de área: Mín./Límite de área: Máx. de parámetro.
1 a 4096 (valor predeterminado = 1) | Da como máximo el número especificado de blobs que cumplen los ajustes de color y tamaño especificados en Color Blob/Color Fondo y Límite de área: Mín./Límite de área: Máx. de parámetro. Si se encuentran más blobs, se seleccionarán los de mayor extensión (área).
Nota: Si el valor del parámetro Número a clasificar es mayor que cero, la función DetectBlobs insertará automáticamente una tabla de resultados que presentará como máximo las 10 entradas que corresponden a los 10 primeros blobs contenidos en la estructura de datos Blobs. Si desea que se visualicen más entradas, puede ampliar la tabla copiando la última fila y pegando adicionalmente la fila tantas veces como desee al final de la table; asegúrese de incrementar el número de índice de la(s) fila(s) recién pegada(s) para que se indexen adecuadamente los blobs.
Umbral | Especifica el valor en escala de grises que ha de utilizarse para separar los blobs del fondo. Este valor puede determinarse utilizando el ajuste automático de la función DetectBlobs (ajuste por defecto) o configurarlo manualmente mediante ensayo y error o establecerlo como Referencias de celda a los resultados calculados por una función Histograma.
-1 (valor predeterminado) | La función calcula automáticamente un valor umbral a partir de evaluaciones estadísticas de escala de grises en la imagen.
De 0 a 255 | Especifica un valor umbral en escala de grises, comprendido entre 0 y 255.
Rellenar orificios | Especifica uno de los dos métodos para procesar las estadísticas acumuladas en orificios.
0 = DESACTIVADO (por defecto) | Habilita la contribución de orificios en las estadísticas globales de blobs. Por ejemplo, añadir orificios a un blob hace que disminuya el área del blob. Nota: Cuando se pone a DESACTIVADO, se notifican blobs que son de hecho orificios dentro de otro blob. En el siguiente ejemplo, se notifica la presencia de un blob, Blob 1, que es de hecho un orificio dentro de otro blob, el Blob 0. En las estadísticas de blobs, el valor del área del blob denominado Blob 0 (fila superior) no contiene el área del blob denominado Blob 1 (fila inferior).
1 = ACTIVADO | Deshabilita la contribución de orificios en las estadísticas globales de blobs. Por ejemplo, añadir orificios a un blob no tiene ningún efecto sobre el área del blob. Nota: Cuando se pone a ACTIVADO, se ignoran los blobs que son orificios dentro de otro blob. En el siguiente ejemplo, se ignora el orificio contenido en el Blob 0 y se notifica como resultado un solo blob (Blob 0). En las estadísticas de blobs, el valor del área del Blob 0 se refiere a todo el área del blob, incluido el orificio.
Blobs fronterizos | Especifica una de las dos formas de gestionar los blobs que cruzan la frontera de la RDI.
0 = DESACTIVADO | Excluye los blobs que cruzan el límite de la RDI; cualquier blob que cruce la frontera de la RDI no se incluirá en la estructura final de datos Blobs.
1 = ACTIVADO (por defecto) | Incluye los blobs que cruzan el límite de la RDI; cualquier blob que cruce el límite de la RDI se incluirá en la estructura final de datos Blobs (siempre que cumpla también los ajustes especificados en Color Blob/Color Fondo y Límite de área: Mín./Límite de área: Máx.de parámetro.
Color: Blob | Especifica el color del blob.
0 = negro | Devuelve únicamente los blobs que están por debajo del valor umbral especificado.
1 = blanco | Devuelve los blobs que están por encima del valor umbral especificado.
2 = cualquiera (por defecto) | No hay ningún requisito en cuanto al color del blob.
Nota: Cuando Color: Blob y Color: Fondo tiene el mismo valor de ajuste que Color, no se notificará ningún blob. Por ejemplo, cuando Color: Blob configurado como negro y Color: Fondo configurado también como negro, no se notificará ningún blob.
Color: Blob = Negro Color: Fondo = Negro | Color: Blob = Cualquiera o Blanco Color: Fondo = Negro
Sin embargo, incluso si Color: Blob y Color: Fondo está configurado con el mismo color, se notificarán blobs detectados cuando están contenidos en un área de color opuesto (véanse los ejemplos siguientes). Si alguna parte del blob no está contenida en un área de color opuesto, no se notificará la existencia de dicho blob.
Color: Blob = Negro Color: Fondo = Negro | Color: Blob = Blanco Color: Fondo = Blanco
Color: Fondo | Especifica el color del fondo en la imagen capturada. El análisis de conectividad octodireccional se realiza en el primer plano y el cuadridireccional en el fondo.
0 = negro
1 = blanco (por defecto)
Límite de área: Mín. | Especifica una limitación al área mínima, en número de píxeles, de todos los blobs devueltos por la función (por defecto = 100); se devolverán únicamente los blobs que tengan un área mayor que el valor de límite de área: Mín. especificado. El intervalo de valores admisibles para el parámetro es: Límite inferior: 0 Límite superior: Resolución (ancho * alto) del sistema de visión conectado. Por ejemplo, si está conectado al sistema de visión In-Sight D902, el intervalo de valores admisibles para el parámetro es de 0 a 2.304.000 (1920x1200).
Límite de área: Máx. | Especifica una limitación al área máxima, en número de píxeles, de todos los blobs devueltos por la función (por defecto = 100000); se devolverán únicamente los blobs que tienen un área menor que el valor límite de área: Máx. especificado. El intervalo de valores admisibles para el parámetro es: Límite inferior: 0 Límite superior: Resolución (ancho * alto) del sistema de visión conectado. Por ejemplo, si está conectado al sistema de visión In-Sight D902, el intervalo de valores admisibles para el parámetro es de 0 a 2.304.000 (1920x1200).
Mostrar | Especifica el modo de visualización de los gráficos de DetectBlobs sobre la imagen.
0 = ocultar todo (por defecto) | Todos los gráficos estarán ocultos, excepto cuando la celda que contiene la función DetectBlobs está resaltada en la hoja de cálculo.
1 = solo gráficos de resultados | Se visualizarán en todo momento los contornos de los blobs.
2 = gráficos de entrada y resultado | Se visualizarán en todo momento la región de la imagen entrada y los contornos de los blobs extraídos.

## DetectBlobs Salidas

Devuelve | Una estructura de datos Blobs que contiene los blobs extraídos de la imagen o #ERR si alguno de los parámetros de entrada no es válido.
Resultados | Cuando se inserta inicialmente DetectBlobs en una celda, se crea una tabla de resultados en la hoja de cálculo por medio de las siguientes Blobs Vision Data Access functions Nota: Si el Número a clasificar es igual a 0, la tabla comprenderá únicamente la función GetNFound (ObtenerNEncontrados). Si el valor del parámetro Número a clasificar es mayor que cero, la función DetectBlobs insertará automáticamente una tabla de resultados que presentará como máximo las 10 entradas que corresponden a los 10 primeros blobs contenidos en la estructura de datos Blobs. Si desea que se visualicen más entradas, puede ampliar la tabla copiando la última fila y pegando adicionalmente la fila tantas veces como desee al final de la table; asegúrese de incrementar el número de índice de la(s) fila(s) recién pegada(s) para que se indexen adecuadamente los blobs.
Etiqueta | Nombre de la función | Descripción
X | GetX(Blobs, Índice de Blob) | Devuelve la coordenada X del centro de masa de un blob (centroide).
Y | GetY(Blobs, Índice de Blob) | Devuelve la coordenada Y del centro de masa (centroide) de un blob.
Ángulo | GetAngle(Blobs, Índice de Blob) | Devuelve el ángulo del eje principal (mayor) de un blob con respecto al eje Y.
Color | GetColor(Blobs, Índice de Blob) | Devuelve el valor cromático (0 = negro, 1 = blanco) de un blob.
Puntuación | GetScore(Blobs, Índice de Blob) | Una medida del grado de coincidencia del blob con los criterios utilizados por la función FindBlobs.
Área | GetArea(Blobs, Índice de Blob) | Devuelve el área del blob (medida en píxeles). Nota: Si el blob tiene orificios en su interior, el valor del área variará en función de si está habilitada o no la casilla de «Rellenar orificios».
Elongación | GetElongation(Blobs, Índice de Blob) | Devuelve un valor que cuantifica la expansión de píxeles de un blob desde el centro de masa (centroide) del mismo. Por ejemplo, un círculo tiene una elongación de valor igual a 0, mientras que un clavo tiene un valor de elongación elevado.
Orificios | GetHoles(Blobs, Índice de Blob) | Devuelve el número de orificios contenidos en un blob. Nota: Solo los orificios que tienen un área mayor que el valor límite de área: Mín. especificado.
Perímetro | GetPerimeter(Blobs, Índice de Blob) | Devuelve la longitud del contorno del blob; el perímetro se determina contando los lados externos de los píxeles que forman el contorno del blob.
Extensión | GetSpread(Blobs, Índice de Blob) | Devuelve un valor que indica cómo se distribuyen los píxeles de un blob que están más alejados del centro de masa (centroide) del mismo. Por ejemplo, un objeto de forma circular tiene un valor de Spread (extensión) menor que un objeto de forma ovalada.

## Ejemplo con DetectBlobs

La función DetectBlobs se utiliza para identificar y localizar blobs formados por píxeles en contacto entre sí, pudiendo tener los blobs diversas formas y tamaños. Este ejemplo ilustra cómo la información devuelta en la tabla de resultados de la estructura de datos DetectBlobs está relacionada con los blobs encontrados y cómo dicha información puede utilizarse para clasificar y filtrar posteriormente los blobs en función de sus características.

Para este ejemplo, se ha utilizado la siguiente imagen para ayudar a ilustrar el significado de los valores que se devuelven en la tabla de resultados de la función DetectBlobs:

Se insertó una función DetectBlobs en una celda vacía de la hoja de cálculo. A partir de las formas en la imagen, los parámetros de la hoja de propiedades de DetectBlobs se configuraron de la siguiente manera:

- Imagen: Para este ejemplo se ha utilizado la configuración predeterminada, pero este parámetro puede hacer referencia a cualquier estructura de datos Imagen, por ejemplo, una estructura de datos de imagen producida por una función Filter que procesa la imagen para eliminar el exceso de ruido en ella antes de inspeccionar la imagen en busca de blobs.
- Elemento posicionador: Se ha utilizado la configuración predeterminada de elemento posicionador porque se utiliza una imagen estática que no se va a girar ni desplazar. Sin embargo, cuando se utilice la función DetectBlobs con imágenes que están sometidas a movimientos, es aconsejable asignar un Fixture a la región de la imagen.
- Región: La región de la imagen se maximizó para incluir todas las formas en el análisis. Tras hacer clic sobre el parámetro Región y pulsar el botón «Maximizar región» en la barra de herramientas de la hoja de propiedades, se amplia automáticamente la región hasta cubrir toda la imagen.
- Número a clasificar: El número a clasificar se ha ajustado poniéndolo a seis. Se podría haber puesto también este parámetro a 0 y entonces la herramienta habría extraído automáticamente todas los blobs que cumplieran los parámetros de color y tamaño especificados en Color Blob/Color Fondo y Límite de área: Mín./Límite de área: Máx. de parámetro.
- Umbral: Se ha utilizado el ajuste predeterminado con el que se calcula automáticamente el valor de Umbral en escala de grises. En esta imagen, las diferencias de valores en escala de grises son muy pronunciadas y se distingue clarísimamente cuáles son los píxeles oscuros y cuáles los claros. En las aplicaciones en las que la gradación es más sutil y el ajuste de umbral automático no llega a separar muy bien los valores, puede resultar muy útil utilizar funciones Histograma como las funciones HistHead o HistTail para determinar las intensidades en escala de grises de distintas regiones de la imagen.
- Rellenar orificios: Se utilizó el ajuste predeterminado con el que se incluye la contribución de los orificios encontrados en los blobs, lo que implica que disminuye el área total de los blobs con orificios. Si se hubiera marcado la casilla de «Rellenar orificios», se notificarían también los orificios encontrados dentro de los blobs y se habría añadido el área de los orificios, lo que habría aumentando el área de los blobs con orificios.
- Blobs fronterizos: Se ha utilizado el ajuste predeterminado con el que se incluyen los blobs que cruzan el límite de la región en la imagen. Con este ajuste, si se hubiera movido la imagen hacia la izquierda de manera que el círculo más grande y la forma cuadrada más pequeña cruzarían el límite izquierdo de la región en la imagen, las partes de dichas formas geométricas que aún estarían dentro del límite de la región se habrían extraído como blobs. Sin embargo, si la casilla estuviera sin marcar, no se habrían procesado dichos blobs.
- Límite de área: Mín./Máx.: Se han utilizado los ajustes predeterminados. Con estos ajustes se filtran, durante la fase de extracción, los blobs de la región según los ajustes de límite mínimo y máximo del área de un blob para determinar si un blob puede clasificarse o no como blob.
- Mostrar: Se ha utilizado el ajuste predeterminado con el que solo se visualizan los gráficos de resultados cuando está seleccionada la celda que contiene la estructura de datos Blobs, como es el caso en el ejemplo siguiente.

Una vez configurada la hoja de propiedades de DetectBlobs, se genera una estructura de datos Blobs y una tabla para los datos de resultados.

Los valores devueltos en la tabla de resultados pueden utilizarse para filtrar y clasificar los blobs utilizando las funciones FindBlobs y SortBlobs. Por ejemplo, se podría insertar una función FindBlobs en la hoja de cálculo y hacer referencia a la función DetectBlobs. Se utilizaría entonces la función FindBlobs para filtrar los blobs en función de su extensión. A continuación, se podría insertar una función SortBlobs en la hoja de cálculo y hacer con ella referencia a la función FindBlobs recientemente creada a fin de ordenar la lista de blobs en función de su posición X, Y.