Está en la página 1de 40

5° Clase Práctica

Procesamiento Digital de Imágenes


Ingeniería Electrónica

Tema:
Manejo de Imágenes en Matlab
Manejo de Imágenes en Matlab
¿PARA QUÉ SE UTILIZA EL HISTOGRAMA?
Analizar tus imágenes sólo observándolas a través de la pantalla, ya que este método es poco
fiable, depende de la luz ambiente, de la calidad de la pantalla, y de su propia luminosidad.

Debes utilizar el histograma para “leer” la luz de tu imagen.

Si nos centramos en el eje horizontal, podemos


dividirlo en tres zonas imaginarias.

- La zona situada a la izquierda del histograma,


nos informa sobre las sombras de la imagen.

- La zona central, nos informa sobre las zonas


de luminosidad media,

- y la zona derecha, sobre las zonas de luces.


El eje horizontal nos muestra la luminosidad de la imagen.
Manejo de Imágenes en Matlab
¿PARA QUÉ SE UTILIZA EL HISTOGRAMA?

Un histograma sin información en la zona de sombras ni


en la zona media, que aglutina toda la información en la
zona derecha de la imagen (luces), es muy probable que
esté sobreexpuesta. Suele reflejar no sólo la información
en la parte derecha, sino también una cantidad de píxeles
(picos) elevados en la zona más derecha de la imagen,
pareciendo que estos fueran a salirse de la gráfica.

Un histograma que acumule la información en la zona


de sombras (izquierda), con poca o ninguna información
en la zona media y la zona de luces, es muy probable que
sea demasiado oscura; subexpuesta. Igual que en los
histogramas sobreexpuestos, la información suele
acumularse en forma de picos en la zona izquierda,
pareciendo que estos fueran a “salirse” de la gráfica.
Manejo de Imágenes en Matlab
¿PARA QUÉ SE UTILIZA EL HISTOGRAMA?

•Un histograma con toda la información acumulada en una misma zona, nos habla de una
imagen con poco contraste.

Tanto si la información lumínica se concentra a la derecha, a la izquierda, o en la zona media. El


contraste lumínico se da por la diferencia entre luces y sombras en una imagen, por lo que si
ésta carece de diferenciación entre luces y sombras, la imagen resultante se conoce como una
imagen de bajo contraste.
Manejo de Imágenes en Matlab

•Un histograma con la información acumulada en los extremos de la gráfica (en las luces
y en las sombras) y con poca o ninguna información en la zona de luces medias, es un
histograma de alto contraste, ya que la diferencia entre luces y sombras es elevada, por
ejemplo una imagen a contraluz, daría un histograma parecido al que planteamos.
Manejo de Imágenes en Matlab

EL HISTOGRAMA POR SÍ SOLO NO DA INFORMACIÓN ESPACIAL

Un error muy extendido en la interpretación de


un histograma es pensar que se puede obtener
información espacial de él. Es decir, que
simplemente viendo el histograma, podemos
saber a qué zonas de la foto corresponden.

El histograma no da información espacial.

Solamente mirando el histograma no podemos


saber nada de la imagen, simplemente la cantidad
de píxeles que hay de cada valor, pero no dónde se
ubican en la foto.
Manejo de Imágenes en Matlab
Manejo de Imágenes en Matlab
El histograma de una imagen es una herramienta visual de gran aceptación y utilidad para el estudio de
imágenes digitales.
Es una herramienta importante en el análisis de imágenes:
¿Es buena la calidad de una imagen? ¿Sobra Luz? ¿Falta contraste?

Ayuda a decidir cual es el procesamiento mas adecuado para mejorar la calidad de la imagen…
- Tanto cualitativamente (que operación aplicar)
- Tanto cuantitativamente (en qué cantidad)

- A veces no es tan fácil emparejar los colores de una


imagen, dada la variedad de valores de intensidad.

- Un histograma ideal es aquel que se extiende


ocupando casi todo el rango de tonos.

- Para lograr un histograma ideal, se suele utilizar un


comando para ecualizar una imagen.
Manejo de Imágenes en Matlab
TRANSFORMACIÓN DEL HISTOGRAMA

Contracción del histograma


Expansión del histograma

La instrucción:
imadjust(b, [low_in high_in], [low_out high_out], gamma)

Transforma la imagen cargada en “b” según:

⇒ Con: gamma = 1
low_in = low_out = 0
high_in = high_out = 1
La imagen no sufre transformación alguna.
Manejo de Imágenes en Matlab
Contracción del histograma
Se contraen los niveles de grises, es decir los niveles de grises usados en la imagen de salida serán
menores que los usados en la imagen original.
Manejo de Imágenes en Matlab

Contracción del histograma


Para la contracción del histograma solo es necesario modificar los valores
[low_out high_out] de la instrucción interna correspondiente al comando “imhist (c,n)”

Imhist(imadjust (I,[low_in,high_in] [low_out,high_out], gamma))

Ejemplo: Contracción del histograma de una imagen.


>> imhist(imadjust(nombre de imagen, [0 1], [0.25 0.75],1)); % Considerando gamma = 1

ó
>>J=imadjust(nombre de imagen,[0 1],[0.3 0.7]);
>> imhist(J)
ó
>> d=imadjust(b,[0 1],[0 1],0.5); % gamma 0.5, y el 0 es el negro y el 1 es el blanco
Manejo de Imágenes en Matlab
Expansión del histograma
Se expanden los niveles de grises, es decir los niveles de grises usados en la imagen de salida serán
mayores que los usados en la imagen original
Manejo de Imágenes en Matlab

Estiramiento del histograma:


Se emplea para mejorar el contraste de las imágenes, dado que distribuye un intervalo
del histograma de la imagen de modo que ocupe todo el rango de valores.
Manejo de Imágenes en Matlab

Expansión del histograma


Para la expansión del histograma solo es necesario modificar los valores
[low_in high_in] de la instrucción interna correspondiente al comando “imhist (c,n)”

Imhist(imadjust (I,[low_in,high_in] [low_out,high_out], gamma))

Ejemplo: Expansión del histograma de una imagen.


>> imhist(imadjust(nombre de imagen, [0.25 0.75], [0 1],1)); % Considerando gamma = 1

ó
>> e=imadjust(b,[0 1],[0 1],1.5); % gamma 1.5, manteniendo el 0 y el 1
>> imhist(e)
Manejo de Imágenes en Matlab

Transformación del histograma


Imhist(imadjust (I,[low_in,high_in] [low_out,high_out], gamma))

Estiramiento lineal del histograma

Gamma = 1
Manejo de Imágenes en Matlab
Transformación Gamma
Imhist(imadjust (I,[low_in,high_in] [low_out,high_out], gamma))
Manejo de Imágenes en Matlab
Imhist(imadjust (I,[low_in,high_in] [low_out,high_out], gamma))
Transformación Gamma ¿Qué representa la transformación gamma?

Es el ajuste de los valores de intensidad de una imagen con el objetivo de compensar las
variaciones de los dispositivos de salida.

Para gamma = 1 no hay ninguna corrección.

Para gamma > 1 hay una gran corrección en el contraste para valores pequeños del color de
entrada mientras que una pequeña corrección en el contraste para valores grandes. El brillo
aumenta más para valores intermedios del color de entrada.

Para gamma < 1 hay una pequeña corrección en el contraste para valores pequeños del color
de entrada mientras que una gran corrección en el contraste para valores grandes. El brillo
disminuye más para valores intermedios del color de entrada.
Manejo de Imágenes en Matlab
Transformación Gamma
Imhist(imadjust (I,[low_in,high_in] [low_out,high_out], gamma))
Manejo de Imágenes en Matlab

Ejercicio:
- Tomar una imagen color, transformarla en escala de grises
- Realizar el histograma de grises de imagen invertida
- Realizar el histograma de grises de imagen en escala de grises.
- Realizar la contracción del histograma de imagen invertida
- Realizar la contracción del histograma de en escala de grises.
- Realizar la expansión del histograma de imagen invertida
- Realizar la expansión del histograma de en escala de grises.
- Realizar la transformación del histograma utilizando gamma 0,5 – 0,75 – 1 - 2 – 4
- Dividir la pantalla y visualizar las distintas imágenes y sus histogramas
- Colocar el titulo a cada uno.
Manejo de Imágenes en Matlab

Caso Práctico:
Dada la siguiente imagen como podemos corregir la falta de contraste
- Analizar el histograma
Manejo de Imágenes en Matlab

Caso Práctico - Resolución


Evaluación Visual de la imagen

El histograma presenta, una acumulación de pixel


en los niveles medios, con grises oscuros y claros,
en lugar de blancos y negros definidos
Los pixeles están concentrados en el centro del
histograma, no abarcan todo el rango total. La
imagen parece tener un velo agrisado . Los pixeles
del extremo izquierdo , que deberían ser negros y
caer sobre el nivel 0, son gris oscuro de nivel 52 y
los del extremo derecho que deberían ser blancos
y caer sobre el nivel 255, son gris claro de nivel
226.
Para devolver el contraste: Se debería estirar el histograma hasta que los pixeles de las puntas llegaran
a tocar los extremos del rango total
Manejo de Imágenes en Matlab

Caso Práctico - Resolución


Para devolver el contraste: Se debería estirar el histograma hasta que los pixeles de las puntas llegaran
a tocar los extremos del rango total
El histograma muestra la redistribución
pareja de todos los pixeles a lo largo de
todo el rango tonal.

Se deben mostrar todos los pasos que se


hicieron para llegar a esta imagen

El resultado es una imagen con mas


blancos y mas negros. Es decir con mayor
contraste
Manejo de Imágenes en Matlab
ECUALIZACIÓN
La ecualización del histograma es una de las
tantas técnicas, para cambiar el contraste de
una imagen de manera automática.

Una imagen muy brillante tendrá todos Para aumentar el contraste de una imagen se estirar
los píxeles confinados en valores altos su histograma hacia cualquiera de los extremos

ECUALIZAR:
El objetivo de la ecualización es ampliar el rango dinámico de los niveles de grises para
acentuar el contraste visual de la imagen.
Se busca que la imagen tenga una distribución uniforme sobre toda la escala de grises.
Manejo de Imágenes en Matlab

ECUALIZACIÓN
• Proceso no lineal.

• Destaca el brillo de una imagen de forma adecuada para el


análisis visual humano.

• Pretende cambiar una imagen con un histograma mas plano,


donde todos los niveles son equiprobables.
Manejo de Imágenes en Matlab

Ecualización del histograma:


Intenta igualar la frecuencia de aparición de todos los niveles de gris,
mejorando el contraste de la imagen, aunque a veces puede provocar la
aparición de ruido donde hay una rampa en el histograma acumulado.
Manejo de Imágenes en Matlab

Puede observarse que la imagen se ecualizó y el contraste cambió significativamente.


Manejo de Imágenes en Matlab
La ecualización del histograma.
Manejo de Imágenes en Matlab

ECUALIZACIÓN
Manejo de Imágenes en Matlab

Ecualización del Histograma

- Emplea un mapeo no lineal.

- Se reasignan los valores de la intensidad


de los píxeles de la imagen original, para
que la imagen final contenga una
distribución uniforme de intensidades.

- Se diferencia del estiramiento del


histograma en que la ecualización puede
emplear funciones no lineales.

- Se emplea en procesos de comparación


de imágenes y en la corrección de
efectos no lineales (ruidos de los
dispositivos de captura).
Manejo de Imágenes en Matlab

La forma del histograma


proporciona informaciones
importantes como:
la intensidad media y
la dispersión de los valores
de nivel de gris,
siendo esta última, la
medida de contraste de la
imagen.

Cuanto mayor es la dispersión a lo largo del eje de los niveles de gris, mayor es el
contraste de la imagen y es entonces cuando el sistema visual humano consigue una
mejor respuesta en su apreciación de la imagen.
Manejo de Imágenes en Matlab
Un Histograma informa sobre el número de píxeles que hay para cada nivel de gris.
Es una gráfica en donde se muestra el número de pixel de cada nivel de gris

Los histogramas son la base de muchas técnicas de procesamiento de la imagen en el dominio espacial.

En matlab el comando que se utiliza para ecualizar una imagen es histeq:

>> J = histeq(I,n)
donde
I es la imagen en escala de grises que queremos ecualizar
n es la cantidad de niveles de grises que se quieren utilizar en la ecualización.

Por defecto, se usan 256 niveles de grises


Ejemplo: (usando la capa 1 de Lena)

>> J1= histeq(I1) ó


>> J1= histeq(I1, 128) % con 128 niveles de grises
Manejo de Imágenes en Matlab
Comparando la imagen de Lena original y la imagen ecualizada

La ecualización del histograma genera una imagen cuyos niveles de intensidad son igualmente
probables y, además, cubren todo el rango [0,255].
El resultado neto de este proceso es una imagen cuyo rango dinámico ha sido incrementado, que
tenderá a poseer un mayor contraste.
Manejo de Imágenes en Matlab
Histograma de la imagen: >> imhist (f,n)

Donde n es el número de intervalos (subdivisiones de la escala de intensidad) usados para


formar el histograma, cuyo valor por defecto es 256.

>> imhist (f,n)/numel(f) Histograma normalizado

>> g = histeq(f, n) Histograma ecualizado

Donde n indica el número de niveles de intensidad específico para la


imagen de salida, por ejemplo, n=256.

Por ejemplo:
Manejo de Imágenes en Matlab

Ecualización
del histograma
Manejo de Imágenes en Matlab
Contraste de ecualización adaptable del histograma (CLAHE)
Imagen Original Después de la ecualización

En Matlab Perdida de Información por


>> h = histeq(I) exceso de brillo

Para resolver este problema, se utiliza la ecualización de histograma adaptable de contraste limitado CLAHE
Manejo de Imágenes en Matlab

Contraste de ecualización adaptable del histograma (CLAHE)


Imagen Original Después de la ecualización aplicando CLAHE

En Matlab
>> J = adapthisteq(I)
Manejo de Imágenes en Matlab

Ecualización de una imagen

I = imread('tire.tif');
J = histeq(I); % Ecualizar
imshowpair(I,J,'montage') axis off
Manejo de Imágenes en Matlab

Contraste de ecualización adaptable del histograma (CLAHE)

I = imread('tire.tif');
J = adapthisteq(I,'clipLimit',0.02,'Distribution','rayleigh'); % ecualización Clahe
imshowpair(I,J,'montage'); title('Original Image (left) and Contrast Enhanced Image (right)')
Manejo de Imágenes en Matlab

Ecualización adaptativa en Python

También podría gustarte