DETECCIÓN NIVEL DEL LÍQUIDO “Histograma De Color En Python” Maestría en Ciencias en Ingeniería Mecatrónica. Presenta: Rodrigo Andrés Ocaña Sánchez No.Control M16270289 2do Semestre. Análisis y Procesamiento De Imágenes Dr. Madain Pérez Patricio Tuxtla Gutiérrez, Chiapas. 7 De Febrero 2022 7 DETECCIÓN NIVEL DEL LÍQUIDO Índice Fundamento teórico ................................................................................................................ 9 Representación de una imagen ..................................................................................................... 9 Pixeles .......................................................................................................................................... 9 Umbralización ............................................................................................................................ 10 Binarización ............................................................................................................................... 10 Histograma ................................................................................................................................. 11 Materiales y Procedimiento. ................................................................................................. 12 Materiales ................................................................................................................................... 12 Procedimiento............................................................................................................................. 12 Resultados ............................................................................................................................ 14 Conclusión............................................................................................................................ 16 Observaciones ............................................................................................................................ 16 Bibliografía........................................................................................................................... 17 8 DETECCIÓN NIVEL DEL LÍQUIDO Fundamento teórico Representación de una imagen La imagen digital puede ser representada por una matriz f de dimensiones NxM de la forma: Tabla 1_Matriz F Donde cada elemento, pixel, da la intensidad de la imagen en ese punto. Pixeles El píxel es el elemento más pequeño de una imagen reproducida digitalmente. En un monitor o en la pantalla de un teléfono móvil se suelen alinear varios píxeles en una trama. La combinación de varios píxeles constituye una imagen rasterizada. Para que un píxel represente un color específico, se compone de subpíxeles en los colores rojo, verde y azul (RGB). Estos subpíxeles pueden tener diferentes formas para crear una disposición con buena definición de imagen y pocos espacios entre los elementos de los píxeles para definir la calidad de la misma. Fig. 1-Representación esquemática de la disposición de subpíxeles Como una formula el pixel es cada punto P localizado en las coordenadas r y c con información I(p) = I(r,c) sobre la intensidad del punto. Usualmente un pixel requiere 8 bits para almacenar su intensidad I(r,c), permitiendo una escala de L= 0 hasta L= 255 posibles valores de gris. 9 DETECCIÓN NIVEL DEL LÍQUIDO Umbralización La umbralización es la segmentación más básica y simple, pues es una segmentación binaria, la cual opera sobre cada pixel de manera independiente clasificándolos por la intensidad comparada con un umbral dado. Dependiendo del umbral podemos generar una imagen binaria (Binarización) Fig.2- Histograma de escala de grises Binarización La binarización es una técnica que consiste en la realización de un barrido en la matriz de la imagen digital, por medio de bucles o recursividad, con el fin de que el proceso produzca la reducción de la escala de grises a dos únicos valores (0 y 1). Este proceso es utilizado en el análisis de imágenes, mediante esta técnica se pueden separar objetos o regiones de interés del resto de la imagen mediante operaciones lógicas. Fig.3-Imagen binarizada con diferentes umbrales 10 DETECCIÓN NIVEL DEL LÍQUIDO Histograma En el histograma se suelen usar barras, cuya altura dependerá de la frecuencia de los datos, que 1corresponde al eje Y. En tanto, en el eje X podemos observar la variable de estudio. Para esto, debemos recordar que en estadística la frecuencia es la cantidad de veces que se repite un suceso. Cabe señalar que el histograma se construye cuando la variable de estudio (la del eje horizontal) es cuantitativa. En cambio, si fuera cualitativa, se elaboraría de preferencia un diagrama de barras o un gráfico circular. Fig.4- Ejemplo Del Grafico De Histograma Los histogramas pueden usarse para medir el umbral de brillo para una imagen o una sección de una imagen a fin de determinar la presencia o la ausencia de una pieza, o para determinar los niveles relativos de llenado. 11 DETECCIÓN NIVEL DEL LÍQUIDO Materiales y Procedimiento. Materiales • • • • Computadora con IDE Python instalado O Google Colab. Librería Pillow Librería Numpy Librería matplotlib Procedimiento Importamos las librerías que utilizaremos para manipular la imagen (PIL) y las matrices (numpy), como también la librería para poder graficar el histograma (matplotlib). import numpy as np import matplotlib.pyplot as plot from PIL import Image #Importamos la imagen image=Image.open('/content/gdrive/MyDrive/Pasto.jpg') Fig.5- Imagen Importada Convertimos la imagen importada en una estructura array para manipularla como matriz de arreglos y creamos 3 listas para guardar dentro los valores de cada componente de la matriz # convirtiendo a array tipo numpy Imagen = np.array(image,dtype=np.uint8) # Adquirimos Dimensiones De La Matriz r,c,e=Imagen.shape R=list() G=list() B=list() 12 DETECCIÓN NIVEL DEL LÍQUIDO Con el ciclo for, guardamos en cada lista las veces que se repite la intensidad en la matriz de pixeles de cada color. #Guardado Datos En Lista (Repetición de los valores) for i in range(r): for j in range(c): R.append(Imagen[i,j,0]) for i in range(r): for j in range(c): G.append(Imagen[i,j,1]) for i in range(r): for j in range(c): B.append(Imagen[i,j,2]) Ahora Procedemos a graficar estos valores #Graficación Rojo plot.figure(figsize=(60,8)) plot.subplot(1, 3, 1) plot.hist(x=R, bins= range(0,255),color='#ff2e02', rwidth=1) plot.title('Histograma De Color Rojo') plot.xlabel('Intensidad') plot.ylabel('Frecuencia') plot.axis([0,255, 0, 2000]) plot.xticks(range(0,255,20)) #Intervalor En Eje X #Graficación Verde plot.subplot(1, 3, 2) plot.hist(x=G, bins= range(0,255),color="#0dff02", rwidth=1) plot.title('Histograma De Color Verde') plot.xlabel('Intensidad') plot.ylabel('Frecuencia') plot.axis([0,255, 0, 2000]) plot.xticks(range(0,255,20)) #Intervalor En Eje X #Graficación Azul plot.subplot(1, 3, 3) plot.hist(x=B, bins= range(0,255),color="#0266ff", rwidth=1) plot.title('Histograma De Color Azul') plot.xlabel('Intensidad') plot.ylabel('Frecuencia') plot.axis([0,255, 0, 2000]) plot.xticks(range(0,255,20)) #Intervalor En Eje X plot.show() #Dibujo Se hace uso del tipo de grafica histograma para rellenarla con los valores que adquirimos a través de nuestros ciclos for. 13 DETECCIÓN NIVEL DEL LÍQUIDO Resultados De la práctica obtuvimos los siguientes resultados en la ejecución del código: Fig.6- Figura Generada Para Las Gráficas De Histogramas De Color El histograma más importante para poder diferenciar el pasto bueno del pasto malo es el histograma de color verde, pues aquí podemos observar cual sería el rango en el que se pondrá el umbral para diferenciar nuestra capa. Fig.7- Gráfica Del Histograma De Color Rojo 14 DETECCIÓN NIVEL DEL LÍQUIDO Fig.8- Gráfica Del Histograma De Color Verde Fig.9- Gráfica Del Histograma De Color Azul 15 DETECCIÓN NIVEL DEL LÍQUIDO Conclusión Las herramientas de procesamiento de imágenes ayudan a optimizar las imágenes para su análisis al eliminar las características no deseadas o molestas, resaltando el contraste y eliminando el ruido. Este primer paso crítico ayuda a garantizar inspecciones precisas y repetibles una vez que se aplican las herramientas de análisis de imágenes, con el histograma de color podemos generar este tipo de filtros para separar o clasificar dichas imágenes. Con sólo mirar el histograma podemos deducir algunas cosas interesantes sobre la imagen, lo que demuestra su utilidad: 1- Existen más pixeles verdes en lo que conforma el umbral 120 a 130 de intensidad Fig.8. 2- Será difícil clasificar las imágenes porque de la misma forma, el color verde se hace presente en todo el rango desde 20 hasta 220 de intensidad (Fig.8), se estima que considera parte del pasto café verde. 3- Todos los colores están presentes en la imagen (Rojo, Verde, Azul), a su vez estos tienen una mayor frecuencia en diferente rango de intensidad (umbral). Observaciones La imagen tomada no tiene una buena iluminación por lo que será difícil clasificar esta imagen de manera correcta. El código realiza el procesamiento de manera rápida. Existe un comando directo para obtener el histograma. 16 DETECCIÓN NIVEL DEL LÍQUIDO Bibliografía Triana, N., Jaramillo, A. E., Gutiérrez, R. M., & Rodríguez, C. A. (2016). Técnicas de umbralización para el procesamiento digital de imágenes de GEM-Foils. Scientia et technica, 21(4), 352-359. Orduz Rodriguez, J. J., & Lozano Mantilla, G. A. (2015). Diseño de un sistema de visión artificial para la revisión del nivel de llenado de bebidas embotelladas. Marcos, A. G., de Pisón Ascacíbar, F. J. M., Elías, F. A., Limas, M. C., Meré, J. B. O., & González, E. P. V. (2006). Técnicas y algoritmos básicos de visión artificial. Técnicas y Algoritmos Básicos de Visión Artificial. Angulo, J., & Serra, J. (2005). Segmentación de imágenes en color utilizando histogramas bivariables en espacios color polares luminancia/saturación/matiz. Computación y Sistemas, 8(4), 303316. 17