Funciones > Procesamiento de imágenes > Manipulación de imágenes > Ejemplo: histogramas unidimensionales y bidimensionales
Ejemplo: histogramas unidimensionales y bidimensionales
Utilice las funciones imhist, imhist2 e hist2d para generar histogramas unidimensionales o bidimensionales.
Para obtener información sobre el uso de este ejemplo, consulte Acerca de los ejemplos de procesamiento de imágenes
imhist
Esta función genera un histograma para los elementos de la matriz M al dividir el rango de intensidad en n contenedores. Cada contenedor contiene el número de píxeles que se ajusta a su rango de niveles de intensidad. Por ejemplo, si n = 256, hay un solo contenedor para cada nivel de intensidad posible en una imagen en escala de grises de 8 bits. Si hay menos de 256 contenedores, los niveles de intensidad se dividen en contenedores de la siguiente manera:
Pulse aquí para copiar esta expresión
La rotulación de contenedores empieza en 0. Si hay más de 256 contenedores, su tamaño es inferior a 1.
1. Defina una matriz pequeña para ver la relación entre los valores y el aspecto del histograma.
Pulse aquí para copiar esta expresión
2. Defina el número de contenedores para aplicar la función imhist a la matriz anterior.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Puesto que n = 255, cada uno de los 256 niveles de intensidad tiene su propio contenedor independiente. Tal como se puede ver en la matriz P, el único contenedor que debería tener más de un recuento es 150.
Pulse aquí para copiar esta expresión
3. Trace un histograma de los niveles de intensidad.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
4. Defina n en un número menor, por ejemplo 5, y observe la diferencia.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Puesto que n = 5, los 256 niveles de intensidad deben dividirse en 5 contenedores independientes. Los valores de intensidad de 0 a 256/5 se incluyen en el contenedor 0, los valores de 256/5 a 512/5 se incluyen en el contenedor 1, y así sucesivamente.
Pulse aquí para copiar esta expresión
Tal como se puede ver en la matriz P y el histograma anterior, los valores de intensidad se distribuyen de la siguiente manera:
0, 30, 40 se encuentran en el contenedor 0 (0-51)
No hay ningún valor de intensidad en el contenedor 1 (52-103)
120 y tres recuentos de 150 se encuentran en el contenedor 2 (103-154)
200 se encuentra en el contenedor 3 (154-205)
240 se encuentra en el contenedor 4 (205-256)
5. Utilice la función READ_IMAGE para leer una imagen que contenga un espacio en blanco.
Pulse aquí para copiar esta expresión
(pattern.bmp)
6. Aplique la función imhist a la imagen.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
El espacio en blanco (valor de intensidad=255) de la imagen se muestra como un pico grande a la derecha. Los tonos negros y otros tonos grises diferenciados se pueden ver en otros contenedores.
7. Calcule el número de elementos que hay en los contenedores 0 (negro) y 255 (blanco).
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Las diferentes sombras grises de la imagen aparecen como picos más pequeños en el eje X.
imhist2
Esta función se puede utilizar para almacenar los datos con valores que no se encuentran dentro del rango 0–255.
1. Defina una matriz que contenga elementos que no se encuentren en el rango 0–255.
Pulse aquí para copiar esta expresión
2. Defina el número de contenedores y trace el histograma de n contenedores.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
3. Calcule los puntos finales de n contenedores.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
hist2d
Esta función genera un histograma bidimensional de dos imágenes M y N, y crea n contenedores en cada dimensión. M y N deben tener el mismo tamaño. Si las dos imágenes tienen una cantidad parecida de píxeles con intensidades similares, en la matriz de salida de hist2d habrá una diagonal pronunciada. La función divide el rango 0–255 en n contenedores.
1. Defina el número de contenedores y las dos matrices de imagen de igual tamaño.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
2. Utilice el operador vectorizador con la función bin_label definida arriba para calcular el número de contenedores para P y Q.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
El histograma bidimensional es una matriz n x n con un recuento en la columna c y la fila r, siempre que hay un elemento de Pbins con el número de contenedor c y el elemento correspondiente de Qbins tiene el recuento r. Por ejemplo, los primeros elementos de Pbins y Qbins son 0 y 2, por lo que generan un recuento en la columna 0, fila 2 de la matriz del histograma.
3. Calcule la matriz del histograma generando primero una matriz de ceros y después añadiendo los recuentos.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
4. Compare la salida anterior con la salida de hist2d.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
5. La siguiente imagen a color ofrece un ejemplo más concreto.
Utilice la función READRGB para leer la imagen y, a continuación, utilice la función WRITERGB para grabarla en un fichero.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
(smallwar.bmp)
6. Utilice la función extract para extraer los componentes verde y azul por separado para permitir la comparación de los componentes de dos color.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
7. Vea el histograma bidimensional.
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
Pulse aquí para copiar esta expresión
(hist2d.bmp)
8. Vea el histograma bidimensional como una imagen de intensidades en una escala de registro.
Pulse aquí para copiar esta expresión
Examine la imagen y observe las diferentes intensidades. La diagonal fuerte de este histograma bidimensional significa que la mayoría de los píxeles de las posiciones correspondientes presentan intensidades similares. Esto es relativamente normal en dos componentes de color de una misma fotografía. La diagonal sería menos prominente en dos imágenes con texturas muy diferentes.
¿Fue esto útil?