3. Descripción de los procesos utilizados En esta aplicación el problema de visión artificial que se plantea es la discriminación y localización de una serie de objetos, concretamente discos circulares blancos, sobre una banda de transporte oscura. La cámara proporciona imágenes de resolución 64x48 en tonos de grises con una profundidad de 8 bits, es decir, con 256 niveles de grises. No obstante se puede fijar un factor de escalado para bajar la resolución y aumentar la velocidad de proceso, y así se hará trabajndo con imágenes de 32x24. Los algoritmos que se aplicarán sobre la imagen original serán los siguientes, en el orden indicado:. Captura de la imagen mediante las librerías MIL Lite 2. Preprocesamiento con filtrado de la mediana. 3. Obtención del histograma de la imagen. 4. Cálculo de umbral óptimo (con método de Otsu) para binarización, para separar las piezas del fondo independientemente de las condiciones de luz que haya en ese momento. 5. Binarización de la imagen. 6. Erosión binaria de la imagen, para eliminar puntos aislados y separar piezas unidas. 7. Segmentación mediante etiquetado, para separar las piezas. 8. Análisis de características de cada objeto. 3.2 Preprocesamiento En todas las aplicaciones es interesante incluir al menos un algoritmo de suavizado en el dominio del espacio, es decir, trabajando con una función unidimensional que transforme la intensidad de cada píxel en un valor promediado u obtenido de alguna otra forma, a partir de los píxeles de su entorno. Concretamente utilizando un promedio en base a la mediana del entorno, se pueden eliminar píxeles muy blancos que puedan resultar de reflejos en las piezas debido a unas condiciones de luz distintas a las ensayadas. Este método tiene la ventaja frente al promedio aritmético de que no desdibuja los bordes de las piezas, que en una aplicación como esta puede ser perjudicial porque piezas muy cercanas pueden quedar unidad debido al promedio. El filtrado de la median garantiza que el método de Otsu tenga un resultado más fiable, puesto que en caso de brillos aislados abundantes la imagen presentaría un grupo importante en la zona alta del histograma, y en lugar de 2 regiones (fondo y objeto) habría 3 regiones. 3.3 Histograma El histograma de una imagen es la representación gráfica o analítica de la distribución relativa de cada valor posible de pixel de imagen, y en caso de imágenes grises de 8 bits será un vector de 256 componentes, siendo la componente i el número de pixeles de nivel i en la imagen, dividido por el número total de pixeles: Ingeniería en Automática y Electrónica Industrial 3-
El histograma es formalmente la función estadística de densidad de probabilidad en forma discreta de los distintos niveles de gris dentro de la imagen. Si se integra el resultado es la función de distribución ω[i]. histograma [i]= N pixeles de nivel i N total i [i]= j= histograma[ j ] i 255 i 255 3.4 Umbral óptimo mediante método de Otsu Previamente a la binarización de la imagen para segmentar objeto de fondo, se debe fijar el umbral adecuado. Si la imagen presenta unas zonas de objeto y fondo bien diferenciadas, el histograma tendrá una forma como se muestra en Ilustración 3.: Histograma de imagen con objetos y fondo diferenciados, y el umbral adecuado se sitúa en el valle de la figura. Ilustración 3.: Histograma de imagen con objetos y fondo diferenciados Para la determinación automática de este umbral se ha implementado el algoritmo denominado método de Otsu, publicado en 979 en IEEE Transactions on System Man Cybernetics por Nobuyuki Otsu, en el artículo A threshold selection method from gray-level histogram. El algoritmo consiste en obtener para todos los umbrales posibles (tantos como niveles de gris tenga la Ingeniería en Automática y Electrónica Industrial 3-2
imagen) un valor denominado varianza entre clases (σ B2, sigma_b_squared) y que viene a medir el grado de diferencia entre los pixeles de la clase intensidad<umbral, y la clase restante intensidad>umbral, que representarían objeto y fondo (o viceversa) respectivamente. El umbral que maximize esta varianza entre clases es el óptimo para la binarización. Las formulación de estos conceptos se detalla en Ilustración 3.2: Formulación del método de Otsu. 2 B t = T t t 2 t optimo =Max { 2 B t } t t t = i= n i N t t = i = i n i N i MAX T = i= i n i N 3.5 Binarización de la imagen B 2 t varianza entre clases i t e i t t probabilidad dela clase i t t media de la clase i t n i número de pixeles de intensidad i N número de pixelestotal de la imagen T media total dela imagen Ilustración 3.2: Formulación del método de Otsu El proceso de binarización de la imagen reducirá el conjunto de posibles valores de cada pixel a 2, blanco y negro, y. De esta forma las operaciones posteriores son más rápidas y en general se consumen menos recursos del sistema. Dado un umbral t, la imagen se recorre asignando el valor correspondiente a cada pixel según: pixelbinario= { si pixel t si pixel t} 3.6 Erosión binaria de la imagen Los procedimientos de erosión y dilatación de imágenes consisten en aplicar una máscara con 's a cada píxel con su entorno, y tomar como valor de salida el mínimo o máximo respectivamente. Concretamente en el caso de la erosión binaria, el mínimo será si hay algún píxel negro en el entorno, por tanto se borrarán todos los píxeles del borde exterior de los objetos, y los que estén aislados. Depende del orden de la máscara utilizada (3x3,5x5,7x7,..) la erosión será más agresiva, aunque el tiempo de computación aumenta considerablemente con ésta y en general todas las operaciones de contorno, cuando el orden utilizado es alto. Ingeniería en Automática y Electrónica Industrial 3-3
En función de la naturaleza de la imagen, se pueden utilizar máscaras con estructuras espaciales en la distribución de los 's, para realizar la erosión por ejemplo en direcciones paralelas a un eje, o formas concretas. En este proyecto se utilizan matrices de máscara sin estructura. El procedimiento se muestra en Ilustración 3.3: Resultado de erosión binaria con máscara no estructurada de 3x3. Ilustración 3.3: Resultado de erosión binaria con máscara no estructurada de 3x3 En esta aplicación la función de erosión se implementa con dos objetivos:. Filtrado binario de la imagen, eliminando todos los píxeles aislados que puedan aparecer, y que posteriormente se etiquetarían como un objeto encontrado. Aunque se descarte por tener un tamaño demasiado pequeño, se está sobrecargando el procesamiento innecesariamente, y además hay un número máximo previsto de objetos que podría desbordarse si hay mucho ruido, dejando fuera los objetos verdaderamente interesantes. 2. Separación de piezas unidas, puesto que la erosión moderada permite borrar la zona de contacto entre discos que vengan unidos en la cinta, siempre claro está que esa zona de unión tenga un ancho en píxeles menor que la máscara utilizada. En tal caso el procedimiento tendría que repetirse varias veces, o utilizar una máscara muy grande, resultando demasiado agresivo y lento en computación como para ser útil. 3.7 Etiquetado y segmentación El siguiente procedimiento aplicado es la segmentación de la imagen separando los distintos objetos. Para ello hay que utilizar un criterio de conectividad entre pixeles, como pueden ser los siguientes (ver Ilustración 3.4: Pixeles 4-conectados (izda) y 8-conectados (dcha) ): Conectividad-4: la conexión es horizontal y vertical. Conectividad-8: la conexión es también en diagonal. Ingeniería en Automática y Electrónica Industrial 3-4
Ilustración 3.4: Pixeles 4-conectados (izda) y 8- conectados (dcha) El etiquetado consiste en recorrer la imagen y asignar una etiqueta a cada píxel, que será nueva si ese píxel no está conectado, o la misma del píxel al que esté conectado en caso de estarlo (digamos que la hereda). Ocurrirá no obstante que un píxel podrá encontrarse conectado a dos píxeles con etiquetas distintas. Entonces se asignará la etiqueta de menor valor (la más antigua) y se registrará 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 3 3 4 5 4 2 2 2 2 Ilustración 3.5: Procedimiento de etiquetado Ingeniería en Automática y Electrónica Industrial 3-5
en un array al efecto el enlace existente entre ambas etiquetas. Después de terminar el recorrido completo de la imagen, se deben resolver todos estos enlaces agrupando las etiquetas emparentadas en una misma etiqueta de grupo, de modo que al final se tendrá una imagen etiquetada, donde cada píxel tendrá una etiqueta que a su vez corresponderá con una etiqueta de grupo. El número de etiquetas de grupo encontradas será el número de objetos distintos (no conectados) de la imagen. En Ilustración 3.5: Procedimiento de etiquetado se muestra un ejemplo sencillo con dos objetos, partiendo de una imagen donde los píxeles blancos tienen valor 255. Se recorre la imagen en orden de filas, mirando si cada píxel está 4-conectado con los pixeles ya recorridos, o sea, con el de la izquierda y el de arriba. La conectividad-4 produce una algoritmo bastante más rápido y así se implementa en este proyecto. Si los enlaces se registran adecuadamente, al final se obtiene la imagen etiquetada junto con un vector que agrupa las etiquetas en etiquetas de grupo. Así a un píxel con etiqueta e pertenecal objeto identificado por EtiquetaGrupo[e]. En el ejemplo anterior sería: EtiquetaGrupo[]=(,,2,,2,2) 3.8 Análisis de características de cada objeto Una vez segmentada la imagen, se procederá a calcular el centro de gravedad de cada objeto, medido en pixeles. Si las coordenadas del píxel son (i,j) en los ejes X e Y respectivamente, la expresión necesaria es: m i pixel m i, j x CG = pixel Npix m del objeto m m y CG m = j pixel m i, j Npix m pixel m del objeto m Se requiere recorrer de nuevo la matriz de imagen etiquetada utilizando el vector de clases para computar cada píxel en su objeto correspondiente. Se podría haber generado una matriz de clases ya compactada, es decir, con el número de clase en lugar de etiqueta, pero es un proceso adicional que no aporta nada, sino consumo de tiempo, porque después es necesario volver a barrer esa matriz. El número de pixeles del objeto Npix se utilizará además para confirmar que se trata de una pieza objetivo, puesto que el tamaño esperado se conoce a priori. Así en caso de tener algunas piezas pegadas o alguna mancha se podrá discriminar, puesto que la posición del centro de gravedad de todas formas no sería válida. También puede ocurrir que los discos se corten en la imagen, incluso que un disco grande cortado se vea como un disco pequeño, provocando un error en la manipulación del robot puesto que la posición del centro de gravedad no será buena. Por eso también se computan los píxeles de cada objeto que se encuentran en un ancho predefinido de periferia, desechando el objeto si se supera un límite determinado. Ingeniería en Automática y Electrónica Industrial 3-6