Uploaded by spartan_ra

HistogramaDeColor

advertisement
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
Download