SlideShare una empresa de Scribd logo
1 de 41
Descargar para leer sin conexión
Introducción al Procesamiento
de Imágenes con Matlab
1era Parte
Departamento de Computación
Facultad de Ciencias Exactas y Naturales
Universidad de Buenos Aires
Taller de Informática I – 1er Cuatrimestre 2016
Andrea Manna
Que es una imagen?
• Una imagen es una función bidimensional f(x,y), donde x e
y representan las coordenadas espaciales y el valor de f en
cualquier par de coordenadas (x,y) representa la
intensidad de la imagen en dicho punto.
• Una imagen digital f[x,y] descrita en un espacio 2D
discreto se deriva de una imagen análoga f(x,y) en un
espacio 2D continuo a través de un proceso llamado
digitalización
• Matlab almacena las imágenes como vectores
bidimensionales (matrices), en el que cada elemento de la
matriz corresponde a un sólo pixel.
Trabajar con imágenes en Matlab es equivalente a
trabajar con matrices
Ejemplo
Descripción de una imagen
• Al digitalizarla, la imagen
continua en 2D es dividida en
M filas y N columnas
• La intersección de una fila y
una columna se llama pixel.
• El valor asignado a las
coordenadas [m,n] con
m= {1,2,...,M} y
n= {1,2,...,N} es f(m,n)
• Es común que una imagen
contenga sub-imagenes
llamadas regiones de interés
(ROI, regions of interest)
Tipos de datos en una imagen
El tipo de dato que contendrá una imagen puede ser de varios tipos
(según el tipo de dato de cada pixel):
• double: Doble precisión, números en punto flotante que varían en un
rango aproximado de -10308 a 10308 (8 bytes por elemento)
• uint8: Enteros de 8 bits en el rango de [0,255] (1 byte por elemento)
• uint16: Enteros de 16 bits en el rango de [0, 65535] (2 bytes por elemento)
• uint32: Enteros de 32 bits en el rango de [0, 4294967295] (4 bytes por
elemento)
• int8: Enteros de 8 bits en el rango de [-128, 127] (1 byte por elemento)
• int16: Enteros de 16 bits en el rango de [-32768, 32767] (2 bytes por
elemento)
• int32: Enteros de 32 bits en el rango de [-2147483648,2147483647] (4
bytes por elemento)
• logical: Los valores son 0 ó 1 (1 bit por elemento)
Tipos de datos en una imagen
Nosotros trabajaremos con tres tipos principales de imágenes:
• Imagen de intensidad es una matriz de datos cuyos valores han sido
escalados para que representen intensidades de una escala de grises. Cuando
los elementos de una imagen de intensidad son de clase uint8 (enteros
almacenados en 8 bits) o de clase uint16 (enteros almacenados en 16 bits),
pueden almacenar, respectivamente, 28=256 valores en el
rango [0:255] o 216=65536 valores en el rango[0:65535]. Si la imagen es de
clase double, los valores son números en punto flotante (que se almacenan
en 32 bits). En este último caso, los valores se toman en el rango de [0:1] por
convención.
• La imagen binaria es una imagen en blanco y negro. Cada pixel tiene asignado
un valor lógico de 0 ó 1 donde 0 representa el negro y 1 el blanco
• La imagen en color es como la imagen de intensidad pero tiene tres canales,
es decir, a cada pixel le corresponden tres valores de intensidad (RGB) en
lugar de uno.
Color vs Blanco y Negro
Conversión de un tipo a otro
Cuando realizamos transformaciones matemáticas de
imágenes, a menudo necesitamos que la imagen sea de
tipo double. Pero cuando la leemos y almacenamos
ahorramos espacio usando codificación entera. Podemos
usar las siguientes funciones:
• im2uint8: de cualquier tipo a uint8,
• im2double: de cualquier tipo a double,
• im2bw: de cualquier tipo a logical,
• rgb2gray: RGB color a gris, o sea de tres capas a una sola.
Ejemplo: I es de tipo entero y quiero convertirla a double
>>D= im2double(I)
Nota: Se pueden utilizar también las
funciones de conversión de tipo, pero
el resultado es diferente
Aplicaciones en Geología
Aplicaciones en Geología
Aplicaciones en Geología
Tipos de archivos de imágenes
• GIF (Graphics Interchange Format)
• JPEG (Joint Photographic Experts Group)
• PNG (Portable Network Graphics)
• PNM (Portable Any Map)
– PPM - Imágenes en color
– PBM - Imagenes binarias
– PGM - Imagenes en escala de grises
– PAM - General, y no unicamente de imágenes
• BMP (Windows Bitmap format)
• TIFF (Tag Image File Format)
• EPS, TGA, PCX, FITS, DCX - CCITT
Lectura, visualización y escritura de
imágenes en Matlab
• Para leer una imagen se usa el comando imread:
I= imread(‘nombre_archivo’)
Ejemplo:
I=imread(‘lena_std.tif’);
Si observamos el workspace, vemos la variable I
definida como una matriz de tres dimensiones:
Lectura, visualización y escritura de
imágenes en Matlab
• Para visualizar una imagen
se usa el comando imshow:
imshow(I)
Donde I es la matriz leída
con el comando anterior.
Ojo!!! Ya no utilizamos el
nombre del archivo. A partir
de ahora nos manejamos
con la matriz donde leímos
la imagen.
Lectura, visualización y escritura de
imágenes en Matlab
• Como vimos, la variable I tiene 3 dimensiones. Esto es porque la imagen
tomada con el comando imread posee 3 canales. Podemos manipular cada
canal por separado:
J= I(:, : , 1); Esto significa “Dame todas las
filas y todas las columnas del canal 1 y guardalo en J”
Cuando vamos a visualizar J en el espacio de trabajo, vemos que tiene 2
dimensiones. Esto es porque extrajimos una capa o canal.
>> I=imread('lena_std.tif');
>> subplot(2,2,1)
>> imshow(I)
>> subplot(2,2,2)
>> imshow( I(:,:,1) )
>> subplot(2,2,3)
>> imshow( I(:,:,2) )
>> subplot(2,2,4)
>> imshow( I(:,:,3) )
Lectura, visualización y escritura de
imágenes en Matlab
• ¿Por que cuando hacemos
>> J= I(:, : , 1)
>>imshow( I(:,:,1) )
la imagen se ve en blanco y negro?
• Simplemente porque tomamos un
solo canal de los 3 que tiene la
imagen
• Si vemos cada canal por separado lo
que se visualiza son las intensidades
en escala de gris de cada canal (rojo,
verde y azul)
La variable J posee dos dimensiones y por eso se visualiza en
gris!!!
Lectura, visualización y escritura de
imágenes en Matlab
• ¿Como haríamos para ver cada canal en su color?
• Lo que debemos hacer es “anular” los otros canales
asignandoles el valor 0.
• Veamos a Lena solo en el canal rojo:
>> T = I; %hago copia de la imagen
>> T(:,:,2) = 0; %Capa verde en cero
>> T(:,:,3) = 0; %Capa azul en cero
>> imshow(T)
La variable T posee tres dimensiones y por eso se visualiza en
color!!!
Lectura, visualización y escritura de
imágenes en Matlab
• Una vez procesada la imagen, podemos
guardarla en otro archivo. Supongamos que
queremos guardar un trozo de la figura de
Lena. Tenemos que usar el comando:
imwrite(I , ‘nombre_archivo’)
Ejemplo:
>> G = I(238:293 , 241:357 , :); % Extraemos una subimagen
>> imshow(G)
>> imwrite(G , ’trozoLena.png’)
Manipulación de una imagen
Como vimos antes hay muchas opciones una
vez que tenemos la imagen en el workspace:
• Hemos visto que podemos extraer una capa
• Hemos visto que podemos extraer una
subimagen
• Hemos visto que podemos anular (poner en
cero) uno o dos canales
Manipulación de una imagen
Podemos generar una imagen con Matlab. Para
eso precisamos una matriz:
>> h= zeros( [500,500,3], 'uint8');
Ahora tenemos que darle color. Para eso vamos a
manipular pequeñas subimagenes y coloreamos:
>> h(1:250, 1:250, 1)=70;
>> h(1:250, 251:end, 1)=120;
>> h(251:end, 1:250, 1)=230;
>> h(251:end, 251:end, 1)=180;
>> imshow(h)
Solo manipulamos el primer canal!!
Manipulación de una imagen
Vamos a modificar el resto de los canales con otros colores:
>> h(1:250, 1:250, 2)=220;
>> h(1:250, 251:end, 2)=25;
>> h(251:end, 1:250, 2)=100;
>> h(251:end, 251:end, 2)=50;
>> imshow(h)
Alteramos los colores del canal 2!!
(El canal 3 aún está en cero)
Manipulación de una imagen
Vamos a modificar el último canal:
>> h(1:250,1:250,3)=150;
>> h(1:250,251:end,3)=235;
>> h(251:end,1:250,3)=22;
>> h(251:end,251:end,3)=197;
>> imshow(h)
Alteramos los colores del canal 3!!
Ahora los 3 canales poseen diferentes intensisdades de gris que combinadas
las 3 capas, forman el color de la imagen
Combinación de colores
Histograma de una imagen
• El histograma de una imagen f es una gráfica que representa los
niveles de intensidad del color de f con respecto al número de
píxeles presentes en f con cada intensidad de color
• Puede ayudarnos para controlar la exposición en nuestras fotos, así
como para corregir los colores.
• El eje horizontal representa los diferentes tonos de gris desde el
negro puro (a la izquierda) al blanco puro (a la derecha).
• El eje vertical representa el número de pixeles que contiene la
imagen para cada tono representado en el eje horizontal.
• El histograma nos ayudará a hacernos una idea de cómo es de
correcta la exposición de una imagen. Así, en una fotografía
subexpuesta la gráfica tenderá a desplazarse a la izquierda y en una
fotografía sobreexpuesta tenderá a desplazarse a la derecha. Una
imagen que contenga todos los tonos de grises tendrá un histograma
más o menos uniforme a lo largo de todo el eje horizontal.
Histograma de una imagen
• Propiedades:
– La imagen f no se puede deducir a partir de hf
– Dos imágenes diferentes pueden tener asociado el
mismo histograma
– Los histogramas no contienen información espacial
sobre la imagen
Histograma de una imagen
• Tonos Apagados: Se trata de una imagen oscura
• Sombras o zonas oscuras: Imagen con muchas zonas
oscuras o fondo negro. El histograma tiende a irse a la
izquierda
Histograma de una imagen
• Sobreexposición: La imagen tiene zonas muy claras o “quemadas”
• Sombras pálidas: La imagen no posee zonas oscuras, no hay picos
a la izquierda. Tampoco hay zonas quemadas, o sea no hay picos a
derecha. Pero se trata de una imagen clara
Histograma de una imagen
• Contraluz: Este histograma posee forma de U. Hay zonas muy claras y otras muy oscuras. Hay
pocas zonas grises
• Distribución homogénea: El histograma de una foto homogénea se distribuye a lo largo de todo el
eje horizontal. Al no haber zonas quemadas ni excesivamente oscuras no encontraremos picos ni
grandes “montañas” en la gráfica. Es importante saber que el hecho de una distribución sea
homogénea no siempre significa que la imagen está correctamente expuesta. Dependerá
estrictamente de las características tonales de la imagen
Histograma de una imagen
• El comando Matlab para realizar histograma de una imagen es imhist
• Atención!!: El comando imhist debe usarse solamente con imágenes en
escala de grises.
>>imhist(I) % retorna el grafico del histograma con el eje x dividido en 256 partes
>>imhist(I,n) % retorna el grafico del histograma con el eje x dividido en n partes
>>[counts,x] = imhist(___) % No realiza el gráfico, sino que retorna dos vectores:
x= contiene todos los valores de intensidad, desde 0 a 255 o desde 0 a n
(según el comando hist que se use)
counts= contiene la cantidad de cada valor de intensidad guardado en x
Histograma de una imagen
• Ejemplo. Si tomamos la imagen de Lena, podríamos visualizar el
histograma de cada uno de sus canales de la siguiente manera:
>>subplot(2,2,1)
>>imshow(I)
>>xlabel ('imagen color')
>>subplot(2,2,2)
>>imhist(I(:,:,1))
>>xlabel ('canal rojo')
>>subplot(2,2,3)
>>imhist(I(:,:,2))
>>xlabel ('canal verde')
>>subplot(2,2,4)
>>imhist(I(:,:,3))
>>xlabel ('canal azul')
imagen color
0
500
1000
1500
2000
2500
3000
3500
canal rojo
0 50 100 150 200 250
0
500
1000
1500
2000
2500
3000
canal verde
0 50 100 150 200 250
0
500
1000
1500
2000
2500
3000
3500
canal azul
0 50 100 150 200 250
Histograma de una imagen
• Tomemos el canal 1:
>> I1= I(:,:,1);
>> [counts,x] = imhist(I1) ;
>> x(100:110)
99
100
101
102
103
104
105
106
107
108
109
>> bar(x,counts)
>> counts(100:110)
1559
1418
1384
1319
1342
1156
1120
955
969
828
782
-50 0 50 100 150 200 250 300
0
500
1000
1500
2000
2500
3000
3500
4000
4500
Histograma de una imagen
Histograma de la imagen que se construyó de
4 colores:
• Como debería ser este histograma? Pruébelo!!
Histograma de una imagen
• Volviendo a la imagen de Lena, veamos el
histograma de la capa 1 (rojo)
0
500
1000
1500
2000
2500
3000
3500
0 50 100 150 200 250
Vemos que el histograma se encuentra sesgado
a derecha, esto es, la imagen en la capa roja es
bastante clara. Lo comprobamos:
Histograma de una imagen
• Es decir que, basándonos en el histograma
podemos observar que la imagen es demasiado
clara ¿Cómo podríamos oscurecerla?
>> I2= I(:,:,1);
>> max(max(I2))
255
>> min(min(I2))
54
>> I3 =I2 – 50;
¿Qué logramos con esto?
Histograma de una imagen
Capa 1 Original Capa 1 modificada
0
500
1000
1500
2000
2500
3000
3500
0 50 100 150 200 250
0
500
1000
1500
2000
2500
3000
3500
0 50 100 150 200 250
Histograma de una imagen
• 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
• Ecualizar: El objetivo de la ecualización es que la
imagen tenga una distribución uniforme sobre
toda la escala de grises.
Para ecualizar el histograma se realiza la siguiente operación:
1) Se obtiene el histograma
2) Calcular los nuevos valores de intensidades utilizando la función de probabilidad de
ocurrencia
3) Reemplazar las intensidades
Ecualización de una imagen
• Función de probabilidad de ocurrencia de cada nivel de
intensidad :
histograma rk ∈ [0,255]
Ecualización de una imagen
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
ecualizacion. Por defecto, se usan 256 niveles de grises
Ejemplo: (usando la capa 1 de Lena)
>> J1= histeq(I1) ó
>> J1= histeq(I1, 128) si se quiere con, por ejemplo, 128 niveles de
grises
Ecualización de una imagen
• Comparando la imagen de Lena original y la imagen ecualizada queda:
0
500
1000
1500
2000
2500
3000
3500
0 50 100 150 200 250
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
0 50 100 150 200 250
>>J1= histeq(I1)
>>imshow(J1)
>>imhist(J1)
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.
Ecualización de una imagen
• Veamos otro ejemplo:
>> I=imread('semillas.png');
>> I1=I(:,:,1);
>> imshow(I1)
>> figure,imhist(I1);
>> g=histeq(I1,256);
>> figure,imshow(g);
>> figure,imhist(g);
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
0 50 100 150 200 250
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
0 50 100 150 200 250
Ejercicios
1. Tome la imagen de Lena e intente extraer la subimagen en color correspondiente
a la boca en la variable BOCA
2. ¿Que tipo de dato obtuvo? ¿double o uint8?
3. Tome el canal 3 de la imagen de Lena. Pasarlo a double utilizando el comando
im2double.
4. Repetir el mismo ejercicio anterior pero en vez de usar la función im2double,
utilice la función double. ¿Dio el mismo resultado? Chequearlo. En caso
negativo, ¿Cómo puede utilizar la función double para lograr el resultado
deseado? Pista: recuerde que im2double es una función que transforma
elementos uint8 en elementos double entre 0 y 1.
5. Arme una imagen teniendo en cuenta la siguiente información para cada una de
las capas:
C1= rand(300); % Capa 1
C2= rand(300); % Capa 2
C3= rand(300); % Capa 3
6. Muestre el histograma de cada una de las capas de la imagen anterior. ¿Qué
puede deducir? ¿Qué pasa si se realiza la ecualización de estas capas?

Más contenido relacionado

La actualidad más candente

java Código para calculo de salario de un empleado
java Código  para calculo de salario de un empleadojava Código  para calculo de salario de un empleado
java Código para calculo de salario de un empleadoCarmen Nereira
 
Multiplexor 4 Entradas 1 Salida (4-1)
Multiplexor 4 Entradas 1 Salida (4-1)Multiplexor 4 Entradas 1 Salida (4-1)
Multiplexor 4 Entradas 1 Salida (4-1)251089luis
 
Sumador de 4 bits
Sumador de 4 bitsSumador de 4 bits
Sumador de 4 bitsAbril Bello
 
Algoritmos para matlab
Algoritmos para matlabAlgoritmos para matlab
Algoritmos para matlabVitoto96
 
Ejercicios Resueltos de Calculo Vectorial e Integrales de linea
Ejercicios Resueltos de Calculo Vectorial e Integrales de lineaEjercicios Resueltos de Calculo Vectorial e Integrales de linea
Ejercicios Resueltos de Calculo Vectorial e Integrales de lineaRuddy Sanchez Campos
 
47427701 ejercicios-cinematica-soluciones
47427701 ejercicios-cinematica-soluciones47427701 ejercicios-cinematica-soluciones
47427701 ejercicios-cinematica-solucionespedreroguadarramaerik
 
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...rasave
 
Simulador digital 095
Simulador digital 095Simulador digital 095
Simulador digital 095maria_amanta
 
Lab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSLab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSIng. Electrónica xD
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesLuis Zurita
 
Barrido secuencial de displays
Barrido secuencial de displaysBarrido secuencial de displays
Barrido secuencial de displaysKiller_JJ
 
Electrónica digital: Sumadores y restadores
Electrónica digital: Sumadores y restadores Electrónica digital: Sumadores y restadores
Electrónica digital: Sumadores y restadores SANTIAGO PABLO ALBERTO
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejerciciostestgrupocomex
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansDaniel Gómez
 

La actualidad más candente (20)

Ejercicios
EjerciciosEjercicios
Ejercicios
 
java Código para calculo de salario de un empleado
java Código  para calculo de salario de un empleadojava Código  para calculo de salario de un empleado
java Código para calculo de salario de un empleado
 
Multiplexor 4 Entradas 1 Salida (4-1)
Multiplexor 4 Entradas 1 Salida (4-1)Multiplexor 4 Entradas 1 Salida (4-1)
Multiplexor 4 Entradas 1 Salida (4-1)
 
Sumador de 4 bits
Sumador de 4 bitsSumador de 4 bits
Sumador de 4 bits
 
Complemento A Dos
Complemento A DosComplemento A Dos
Complemento A Dos
 
Electrónica digital: Comparadores
Electrónica digital: ComparadoresElectrónica digital: Comparadores
Electrónica digital: Comparadores
 
Algoritmos para matlab
Algoritmos para matlabAlgoritmos para matlab
Algoritmos para matlab
 
Ejercicios Resueltos de Calculo Vectorial e Integrales de linea
Ejercicios Resueltos de Calculo Vectorial e Integrales de lineaEjercicios Resueltos de Calculo Vectorial e Integrales de linea
Ejercicios Resueltos de Calculo Vectorial e Integrales de linea
 
47427701 ejercicios-cinematica-soluciones
47427701 ejercicios-cinematica-soluciones47427701 ejercicios-cinematica-soluciones
47427701 ejercicios-cinematica-soluciones
 
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
Programación II CIP200 Ejercicios resueltos en el Laboratorio de estructuras ...
 
Simulador digital 095
Simulador digital 095Simulador digital 095
Simulador digital 095
 
Lab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECSLab 01 - Análisis de señales - UNTECS
Lab 01 - Análisis de señales - UNTECS
 
Estructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busquedaEstructura de Datos - Unidad 6 Metodos de busqueda
Estructura de Datos - Unidad 6 Metodos de busqueda
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
Barrido secuencial de displays
Barrido secuencial de displaysBarrido secuencial de displays
Barrido secuencial de displays
 
Unidad aritmético-lógico
Unidad aritmético-lógicoUnidad aritmético-lógico
Unidad aritmético-lógico
 
Electrónica digital: Sumadores y restadores
Electrónica digital: Sumadores y restadores Electrónica digital: Sumadores y restadores
Electrónica digital: Sumadores y restadores
 
Programación MySQL-Ejercicios
Programación MySQL-EjerciciosProgramación MySQL-Ejercicios
Programación MySQL-Ejercicios
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeans
 
Fasores
FasoresFasores
Fasores
 

Similar a Introduccion al procesamiento de imagenes con matlab

Manejo basico de imagenes matlab
Manejo basico de imagenes matlabManejo basico de imagenes matlab
Manejo basico de imagenes matlabAbner Chavez
 
Utp pdi_2014-2_sap4 binariz_zoomumbralo_logicas
 Utp pdi_2014-2_sap4 binariz_zoomumbralo_logicas Utp pdi_2014-2_sap4 binariz_zoomumbralo_logicas
Utp pdi_2014-2_sap4 binariz_zoomumbralo_logicasjcbp_peru
 
Ejercicios FOTOGRAFÍA
Ejercicios FOTOGRAFÍAEjercicios FOTOGRAFÍA
Ejercicios FOTOGRAFÍAGemaViciedo
 
Utp va_sl4_procesamiento digital de imagenes con matlab iii
 Utp va_sl4_procesamiento digital de imagenes con matlab iii Utp va_sl4_procesamiento digital de imagenes con matlab iii
Utp va_sl4_procesamiento digital de imagenes con matlab iiijcbenitezp
 
Ejercicios tema 2_imagen_digital_fotografia_2_
Ejercicios tema 2_imagen_digital_fotografia_2_Ejercicios tema 2_imagen_digital_fotografia_2_
Ejercicios tema 2_imagen_digital_fotografia_2_yolypadilla
 
Procesamiento de imagenes
Procesamiento de imagenesProcesamiento de imagenes
Procesamiento de imagenesDayana Guzman
 
Utp 2015-2_pdi_ea4 binariz_zoomumbralo_logicas
 Utp 2015-2_pdi_ea4 binariz_zoomumbralo_logicas Utp 2015-2_pdi_ea4 binariz_zoomumbralo_logicas
Utp 2015-2_pdi_ea4 binariz_zoomumbralo_logicasjcbp_peru
 
Las matemáticas en el retoque digital de imágenes
Las matemáticas en el retoque digital de imágenesLas matemáticas en el retoque digital de imágenes
Las matemáticas en el retoque digital de imágenesjorquera
 
Utp pdi_2014-2 lab2
 Utp pdi_2014-2 lab2 Utp pdi_2014-2 lab2
Utp pdi_2014-2 lab2jcbp_peru
 
Matlab graficas en 2 d y 3d
Matlab   graficas en 2 d y 3dMatlab   graficas en 2 d y 3d
Matlab graficas en 2 d y 3dJohn Jayro
 
Procesador de imágenes toolbox Matlab
Procesador de imágenes toolbox MatlabProcesador de imágenes toolbox Matlab
Procesador de imágenes toolbox Matlabdave
 

Similar a Introduccion al procesamiento de imagenes con matlab (20)

Imagenes
ImagenesImagenes
Imagenes
 
Manejo basico de imagenes matlab
Manejo basico de imagenes matlabManejo basico de imagenes matlab
Manejo basico de imagenes matlab
 
Imagenes
ImagenesImagenes
Imagenes
 
2437215 procesamiento-de-imagenes-con-matrices
2437215 procesamiento-de-imagenes-con-matrices2437215 procesamiento-de-imagenes-con-matrices
2437215 procesamiento-de-imagenes-con-matrices
 
Utp pdi_2014-2_sap4 binariz_zoomumbralo_logicas
 Utp pdi_2014-2_sap4 binariz_zoomumbralo_logicas Utp pdi_2014-2_sap4 binariz_zoomumbralo_logicas
Utp pdi_2014-2_sap4 binariz_zoomumbralo_logicas
 
Ejercicios FOTOGRAFÍA
Ejercicios FOTOGRAFÍAEjercicios FOTOGRAFÍA
Ejercicios FOTOGRAFÍA
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Tema 2
Tema 2 Tema 2
Tema 2
 
Renderizado
RenderizadoRenderizado
Renderizado
 
Renderizado
RenderizadoRenderizado
Renderizado
 
Utp va_sl4_procesamiento digital de imagenes con matlab iii
 Utp va_sl4_procesamiento digital de imagenes con matlab iii Utp va_sl4_procesamiento digital de imagenes con matlab iii
Utp va_sl4_procesamiento digital de imagenes con matlab iii
 
Tema4 contraste
Tema4 contrasteTema4 contraste
Tema4 contraste
 
Ejercicios tema 2_imagen_digital_fotografia_2_
Ejercicios tema 2_imagen_digital_fotografia_2_Ejercicios tema 2_imagen_digital_fotografia_2_
Ejercicios tema 2_imagen_digital_fotografia_2_
 
Procesamiento de imagenes
Procesamiento de imagenesProcesamiento de imagenes
Procesamiento de imagenes
 
Presentación Photoshop e Imagenes
Presentación Photoshop e ImagenesPresentación Photoshop e Imagenes
Presentación Photoshop e Imagenes
 
Utp 2015-2_pdi_ea4 binariz_zoomumbralo_logicas
 Utp 2015-2_pdi_ea4 binariz_zoomumbralo_logicas Utp 2015-2_pdi_ea4 binariz_zoomumbralo_logicas
Utp 2015-2_pdi_ea4 binariz_zoomumbralo_logicas
 
Las matemáticas en el retoque digital de imágenes
Las matemáticas en el retoque digital de imágenesLas matemáticas en el retoque digital de imágenes
Las matemáticas en el retoque digital de imágenes
 
Utp pdi_2014-2 lab2
 Utp pdi_2014-2 lab2 Utp pdi_2014-2 lab2
Utp pdi_2014-2 lab2
 
Matlab graficas en 2 d y 3d
Matlab   graficas en 2 d y 3dMatlab   graficas en 2 d y 3d
Matlab graficas en 2 d y 3d
 
Procesador de imágenes toolbox Matlab
Procesador de imágenes toolbox MatlabProcesador de imágenes toolbox Matlab
Procesador de imágenes toolbox Matlab
 

Último

CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilDissneredwinPaivahua
 
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...ssuser646243
 
Físicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresFísicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresSegundo Silva Maguiña
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxLuisvila35
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionOsdelTacusiPancorbo
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIAMayraOchoa35
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciazacariasd49
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALKATHIAMILAGRITOSSANC
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IILauraFernandaValdovi
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialyajhairatapia
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxluisvalero46
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdfRicardoRomeroUrbano
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCANDECE
 

Último (20)

CLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civilCLASE - 01 de construcción 1 ingeniería civil
CLASE - 01 de construcción 1 ingeniería civil
 
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
Como de produjo la penicilina de manera masiva en plena guerra mundial Biotec...
 
Físicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y VectoresFísicas 1: Ecuaciones Dimensionales y Vectores
Físicas 1: Ecuaciones Dimensionales y Vectores
 
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptxAMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
AMBIENTES SEDIMENTARIOS GEOLOGIA TIPOS .pptx
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacion
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIACLASE 2 MUROS CARAVISTA EN CONCRETO  Y UNIDAD DE ALBAÑILERIA
CLASE 2 MUROS CARAVISTA EN CONCRETO Y UNIDAD DE ALBAÑILERIA
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potencia
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONALCHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
CHARLA DE INDUCCIÓN SEGURIDAD Y SALUD OCUPACIONAL
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
Tiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo IITiempos Predeterminados MOST para Estudio del Trabajo II
Tiempos Predeterminados MOST para Estudio del Trabajo II
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
Descubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundialDescubrimiento de la penicilina en la segunda guerra mundial
Descubrimiento de la penicilina en la segunda guerra mundial
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptx
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
 
Edificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRCEdificio residencial Becrux en Madrid. Fachada de GRC
Edificio residencial Becrux en Madrid. Fachada de GRC
 

Introduccion al procesamiento de imagenes con matlab

  • 1. Introducción al Procesamiento de Imágenes con Matlab 1era Parte Departamento de Computación Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Taller de Informática I – 1er Cuatrimestre 2016 Andrea Manna
  • 2. Que es una imagen? • Una imagen es una función bidimensional f(x,y), donde x e y representan las coordenadas espaciales y el valor de f en cualquier par de coordenadas (x,y) representa la intensidad de la imagen en dicho punto. • Una imagen digital f[x,y] descrita en un espacio 2D discreto se deriva de una imagen análoga f(x,y) en un espacio 2D continuo a través de un proceso llamado digitalización • Matlab almacena las imágenes como vectores bidimensionales (matrices), en el que cada elemento de la matriz corresponde a un sólo pixel. Trabajar con imágenes en Matlab es equivalente a trabajar con matrices
  • 4. Descripción de una imagen • Al digitalizarla, la imagen continua en 2D es dividida en M filas y N columnas • La intersección de una fila y una columna se llama pixel. • El valor asignado a las coordenadas [m,n] con m= {1,2,...,M} y n= {1,2,...,N} es f(m,n) • Es común que una imagen contenga sub-imagenes llamadas regiones de interés (ROI, regions of interest)
  • 5. Tipos de datos en una imagen El tipo de dato que contendrá una imagen puede ser de varios tipos (según el tipo de dato de cada pixel): • double: Doble precisión, números en punto flotante que varían en un rango aproximado de -10308 a 10308 (8 bytes por elemento) • uint8: Enteros de 8 bits en el rango de [0,255] (1 byte por elemento) • uint16: Enteros de 16 bits en el rango de [0, 65535] (2 bytes por elemento) • uint32: Enteros de 32 bits en el rango de [0, 4294967295] (4 bytes por elemento) • int8: Enteros de 8 bits en el rango de [-128, 127] (1 byte por elemento) • int16: Enteros de 16 bits en el rango de [-32768, 32767] (2 bytes por elemento) • int32: Enteros de 32 bits en el rango de [-2147483648,2147483647] (4 bytes por elemento) • logical: Los valores son 0 ó 1 (1 bit por elemento)
  • 6. Tipos de datos en una imagen Nosotros trabajaremos con tres tipos principales de imágenes: • Imagen de intensidad es una matriz de datos cuyos valores han sido escalados para que representen intensidades de una escala de grises. Cuando los elementos de una imagen de intensidad son de clase uint8 (enteros almacenados en 8 bits) o de clase uint16 (enteros almacenados en 16 bits), pueden almacenar, respectivamente, 28=256 valores en el rango [0:255] o 216=65536 valores en el rango[0:65535]. Si la imagen es de clase double, los valores son números en punto flotante (que se almacenan en 32 bits). En este último caso, los valores se toman en el rango de [0:1] por convención. • La imagen binaria es una imagen en blanco y negro. Cada pixel tiene asignado un valor lógico de 0 ó 1 donde 0 representa el negro y 1 el blanco • La imagen en color es como la imagen de intensidad pero tiene tres canales, es decir, a cada pixel le corresponden tres valores de intensidad (RGB) en lugar de uno.
  • 7. Color vs Blanco y Negro
  • 8. Conversión de un tipo a otro Cuando realizamos transformaciones matemáticas de imágenes, a menudo necesitamos que la imagen sea de tipo double. Pero cuando la leemos y almacenamos ahorramos espacio usando codificación entera. Podemos usar las siguientes funciones: • im2uint8: de cualquier tipo a uint8, • im2double: de cualquier tipo a double, • im2bw: de cualquier tipo a logical, • rgb2gray: RGB color a gris, o sea de tres capas a una sola. Ejemplo: I es de tipo entero y quiero convertirla a double >>D= im2double(I) Nota: Se pueden utilizar también las funciones de conversión de tipo, pero el resultado es diferente
  • 12. Tipos de archivos de imágenes • GIF (Graphics Interchange Format) • JPEG (Joint Photographic Experts Group) • PNG (Portable Network Graphics) • PNM (Portable Any Map) – PPM - Imágenes en color – PBM - Imagenes binarias – PGM - Imagenes en escala de grises – PAM - General, y no unicamente de imágenes • BMP (Windows Bitmap format) • TIFF (Tag Image File Format) • EPS, TGA, PCX, FITS, DCX - CCITT
  • 13. Lectura, visualización y escritura de imágenes en Matlab • Para leer una imagen se usa el comando imread: I= imread(‘nombre_archivo’) Ejemplo: I=imread(‘lena_std.tif’); Si observamos el workspace, vemos la variable I definida como una matriz de tres dimensiones:
  • 14. Lectura, visualización y escritura de imágenes en Matlab • Para visualizar una imagen se usa el comando imshow: imshow(I) Donde I es la matriz leída con el comando anterior. Ojo!!! Ya no utilizamos el nombre del archivo. A partir de ahora nos manejamos con la matriz donde leímos la imagen.
  • 15. Lectura, visualización y escritura de imágenes en Matlab • Como vimos, la variable I tiene 3 dimensiones. Esto es porque la imagen tomada con el comando imread posee 3 canales. Podemos manipular cada canal por separado: J= I(:, : , 1); Esto significa “Dame todas las filas y todas las columnas del canal 1 y guardalo en J” Cuando vamos a visualizar J en el espacio de trabajo, vemos que tiene 2 dimensiones. Esto es porque extrajimos una capa o canal. >> I=imread('lena_std.tif'); >> subplot(2,2,1) >> imshow(I) >> subplot(2,2,2) >> imshow( I(:,:,1) ) >> subplot(2,2,3) >> imshow( I(:,:,2) ) >> subplot(2,2,4) >> imshow( I(:,:,3) )
  • 16. Lectura, visualización y escritura de imágenes en Matlab • ¿Por que cuando hacemos >> J= I(:, : , 1) >>imshow( I(:,:,1) ) la imagen se ve en blanco y negro? • Simplemente porque tomamos un solo canal de los 3 que tiene la imagen • Si vemos cada canal por separado lo que se visualiza son las intensidades en escala de gris de cada canal (rojo, verde y azul) La variable J posee dos dimensiones y por eso se visualiza en gris!!!
  • 17. Lectura, visualización y escritura de imágenes en Matlab • ¿Como haríamos para ver cada canal en su color? • Lo que debemos hacer es “anular” los otros canales asignandoles el valor 0. • Veamos a Lena solo en el canal rojo: >> T = I; %hago copia de la imagen >> T(:,:,2) = 0; %Capa verde en cero >> T(:,:,3) = 0; %Capa azul en cero >> imshow(T) La variable T posee tres dimensiones y por eso se visualiza en color!!!
  • 18. Lectura, visualización y escritura de imágenes en Matlab • Una vez procesada la imagen, podemos guardarla en otro archivo. Supongamos que queremos guardar un trozo de la figura de Lena. Tenemos que usar el comando: imwrite(I , ‘nombre_archivo’) Ejemplo: >> G = I(238:293 , 241:357 , :); % Extraemos una subimagen >> imshow(G) >> imwrite(G , ’trozoLena.png’)
  • 19. Manipulación de una imagen Como vimos antes hay muchas opciones una vez que tenemos la imagen en el workspace: • Hemos visto que podemos extraer una capa • Hemos visto que podemos extraer una subimagen • Hemos visto que podemos anular (poner en cero) uno o dos canales
  • 20. Manipulación de una imagen Podemos generar una imagen con Matlab. Para eso precisamos una matriz: >> h= zeros( [500,500,3], 'uint8'); Ahora tenemos que darle color. Para eso vamos a manipular pequeñas subimagenes y coloreamos: >> h(1:250, 1:250, 1)=70; >> h(1:250, 251:end, 1)=120; >> h(251:end, 1:250, 1)=230; >> h(251:end, 251:end, 1)=180; >> imshow(h) Solo manipulamos el primer canal!!
  • 21. Manipulación de una imagen Vamos a modificar el resto de los canales con otros colores: >> h(1:250, 1:250, 2)=220; >> h(1:250, 251:end, 2)=25; >> h(251:end, 1:250, 2)=100; >> h(251:end, 251:end, 2)=50; >> imshow(h) Alteramos los colores del canal 2!! (El canal 3 aún está en cero)
  • 22. Manipulación de una imagen Vamos a modificar el último canal: >> h(1:250,1:250,3)=150; >> h(1:250,251:end,3)=235; >> h(251:end,1:250,3)=22; >> h(251:end,251:end,3)=197; >> imshow(h) Alteramos los colores del canal 3!! Ahora los 3 canales poseen diferentes intensisdades de gris que combinadas las 3 capas, forman el color de la imagen
  • 24. Histograma de una imagen • El histograma de una imagen f es una gráfica que representa los niveles de intensidad del color de f con respecto al número de píxeles presentes en f con cada intensidad de color • Puede ayudarnos para controlar la exposición en nuestras fotos, así como para corregir los colores. • El eje horizontal representa los diferentes tonos de gris desde el negro puro (a la izquierda) al blanco puro (a la derecha). • El eje vertical representa el número de pixeles que contiene la imagen para cada tono representado en el eje horizontal. • El histograma nos ayudará a hacernos una idea de cómo es de correcta la exposición de una imagen. Así, en una fotografía subexpuesta la gráfica tenderá a desplazarse a la izquierda y en una fotografía sobreexpuesta tenderá a desplazarse a la derecha. Una imagen que contenga todos los tonos de grises tendrá un histograma más o menos uniforme a lo largo de todo el eje horizontal.
  • 25. Histograma de una imagen • Propiedades: – La imagen f no se puede deducir a partir de hf – Dos imágenes diferentes pueden tener asociado el mismo histograma – Los histogramas no contienen información espacial sobre la imagen
  • 26. Histograma de una imagen • Tonos Apagados: Se trata de una imagen oscura • Sombras o zonas oscuras: Imagen con muchas zonas oscuras o fondo negro. El histograma tiende a irse a la izquierda
  • 27. Histograma de una imagen • Sobreexposición: La imagen tiene zonas muy claras o “quemadas” • Sombras pálidas: La imagen no posee zonas oscuras, no hay picos a la izquierda. Tampoco hay zonas quemadas, o sea no hay picos a derecha. Pero se trata de una imagen clara
  • 28. Histograma de una imagen • Contraluz: Este histograma posee forma de U. Hay zonas muy claras y otras muy oscuras. Hay pocas zonas grises • Distribución homogénea: El histograma de una foto homogénea se distribuye a lo largo de todo el eje horizontal. Al no haber zonas quemadas ni excesivamente oscuras no encontraremos picos ni grandes “montañas” en la gráfica. Es importante saber que el hecho de una distribución sea homogénea no siempre significa que la imagen está correctamente expuesta. Dependerá estrictamente de las características tonales de la imagen
  • 29. Histograma de una imagen • El comando Matlab para realizar histograma de una imagen es imhist • Atención!!: El comando imhist debe usarse solamente con imágenes en escala de grises. >>imhist(I) % retorna el grafico del histograma con el eje x dividido en 256 partes >>imhist(I,n) % retorna el grafico del histograma con el eje x dividido en n partes >>[counts,x] = imhist(___) % No realiza el gráfico, sino que retorna dos vectores: x= contiene todos los valores de intensidad, desde 0 a 255 o desde 0 a n (según el comando hist que se use) counts= contiene la cantidad de cada valor de intensidad guardado en x
  • 30. Histograma de una imagen • Ejemplo. Si tomamos la imagen de Lena, podríamos visualizar el histograma de cada uno de sus canales de la siguiente manera: >>subplot(2,2,1) >>imshow(I) >>xlabel ('imagen color') >>subplot(2,2,2) >>imhist(I(:,:,1)) >>xlabel ('canal rojo') >>subplot(2,2,3) >>imhist(I(:,:,2)) >>xlabel ('canal verde') >>subplot(2,2,4) >>imhist(I(:,:,3)) >>xlabel ('canal azul') imagen color 0 500 1000 1500 2000 2500 3000 3500 canal rojo 0 50 100 150 200 250 0 500 1000 1500 2000 2500 3000 canal verde 0 50 100 150 200 250 0 500 1000 1500 2000 2500 3000 3500 canal azul 0 50 100 150 200 250
  • 31. Histograma de una imagen • Tomemos el canal 1: >> I1= I(:,:,1); >> [counts,x] = imhist(I1) ; >> x(100:110) 99 100 101 102 103 104 105 106 107 108 109 >> bar(x,counts) >> counts(100:110) 1559 1418 1384 1319 1342 1156 1120 955 969 828 782 -50 0 50 100 150 200 250 300 0 500 1000 1500 2000 2500 3000 3500 4000 4500
  • 32. Histograma de una imagen Histograma de la imagen que se construyó de 4 colores: • Como debería ser este histograma? Pruébelo!!
  • 33. Histograma de una imagen • Volviendo a la imagen de Lena, veamos el histograma de la capa 1 (rojo) 0 500 1000 1500 2000 2500 3000 3500 0 50 100 150 200 250 Vemos que el histograma se encuentra sesgado a derecha, esto es, la imagen en la capa roja es bastante clara. Lo comprobamos:
  • 34. Histograma de una imagen • Es decir que, basándonos en el histograma podemos observar que la imagen es demasiado clara ¿Cómo podríamos oscurecerla? >> I2= I(:,:,1); >> max(max(I2)) 255 >> min(min(I2)) 54 >> I3 =I2 – 50; ¿Qué logramos con esto?
  • 35. Histograma de una imagen Capa 1 Original Capa 1 modificada 0 500 1000 1500 2000 2500 3000 3500 0 50 100 150 200 250 0 500 1000 1500 2000 2500 3000 3500 0 50 100 150 200 250
  • 36. Histograma de una imagen • 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 • Ecualizar: El objetivo de la ecualización es que la imagen tenga una distribución uniforme sobre toda la escala de grises.
  • 37. Para ecualizar el histograma se realiza la siguiente operación: 1) Se obtiene el histograma 2) Calcular los nuevos valores de intensidades utilizando la función de probabilidad de ocurrencia 3) Reemplazar las intensidades Ecualización de una imagen • Función de probabilidad de ocurrencia de cada nivel de intensidad : histograma rk ∈ [0,255]
  • 38. Ecualización de una imagen 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 ecualizacion. Por defecto, se usan 256 niveles de grises Ejemplo: (usando la capa 1 de Lena) >> J1= histeq(I1) ó >> J1= histeq(I1, 128) si se quiere con, por ejemplo, 128 niveles de grises
  • 39. Ecualización de una imagen • Comparando la imagen de Lena original y la imagen ecualizada queda: 0 500 1000 1500 2000 2500 3000 3500 0 50 100 150 200 250 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 0 50 100 150 200 250 >>J1= histeq(I1) >>imshow(J1) >>imhist(J1) 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.
  • 40. Ecualización de una imagen • Veamos otro ejemplo: >> I=imread('semillas.png'); >> I1=I(:,:,1); >> imshow(I1) >> figure,imhist(I1); >> g=histeq(I1,256); >> figure,imshow(g); >> figure,imhist(g); 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 0 50 100 150 200 250 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 0 50 100 150 200 250
  • 41. Ejercicios 1. Tome la imagen de Lena e intente extraer la subimagen en color correspondiente a la boca en la variable BOCA 2. ¿Que tipo de dato obtuvo? ¿double o uint8? 3. Tome el canal 3 de la imagen de Lena. Pasarlo a double utilizando el comando im2double. 4. Repetir el mismo ejercicio anterior pero en vez de usar la función im2double, utilice la función double. ¿Dio el mismo resultado? Chequearlo. En caso negativo, ¿Cómo puede utilizar la función double para lograr el resultado deseado? Pista: recuerde que im2double es una función que transforma elementos uint8 en elementos double entre 0 y 1. 5. Arme una imagen teniendo en cuenta la siguiente información para cada una de las capas: C1= rand(300); % Capa 1 C2= rand(300); % Capa 2 C3= rand(300); % Capa 3 6. Muestre el histograma de cada una de las capas de la imagen anterior. ¿Qué puede deducir? ¿Qué pasa si se realiza la ecualización de estas capas?