You are on page 1of 12

Taller: Manipulacin Bsicas de imgenes

Nombre: EDITH GARCES


Cdigo: 246249
Fecha: 11-11-2015
Objetivo
El objetivo de este taller es explorar las tcnicas bsicas de manipulacin de
imgenes utilizando MATLAB y IPT.
Objetivos

Explora los diferentes tipos de imagen compatibles con MATLAB y IPT

Aprenda a leer las imgenes en MATLAB

Explora conversin de la imagen.

Aprenda cmo mostrar imgenes

Aprenda a escribir imgenes en el disco.

Procedimiento
El IPT es compatible con imgenes de tipo binario, indexado, intensidad y
color. Antes de que una imagen pueda ser procesada en MATLAB, primero se
debe cargar en la memoria. Para leer una imagen, se utiliza la funcin
imread.
1. Cargue la imagen coins.png mediante la ejecucin de la siguiente
declaracin:
I = imread ('coins.png');
Pregunta 1
Qu tipo de imagen es coins.png?
ColorType: grayscale

Pregunta 2
Por qu utilizamos el operador punto y coma (;) despus de la declaracin imread? Qu
sucede si lo omitimos?
Se utiliza para evitar que se muestre el resultado de la variable en el
command window; si omitimos el punto y coma se mostrar la matriz
completa de la imagen.

Imgenes Binarias, de intensidad y color pueden ser ledas con la funcin imread como se ha
demostrado anteriormente. Al leer una imagen indexada, debemos especificar las variables,
tanto para la imagen y su mapa de color. Esto se ilustra en el siguiente paso:

2. Cargue la imagen trees.tif.


[X, mapa] = imread ('trees.tif');

Algunas operaciones pueden requerir convertir una imagen de un tipo a


otro. Por ejemplo, la realizacin de los ajustes de imagen en una imagen
indexada puede no dar los resultados buscados porque los clculos se
realizan sobre los valores del ndice y no los valores RGB representativos.
Para hacer esta tarea fcil, podemos convertir la imagen indexada a una
imagen RGB utilizando ind2rgb.

3. Convertir la imagen indexada X con el mapa de colores map a una


imagen RGB, X_rgb.
X_rgb = ind2rgb (X, mapa);

pregunta 3
Cuntas dimensiones tiene la variable X_rgb y cules son sus tamaos?
Tamao (filas x columnas): 258x350; clase: double; tipo de imagen:
truecolor
4. Convertir la imagen indexada X con el mapa de colores de map a una
imagen de intensidad.
X_gray = ind2gray (X, mapa);

pregunta 4
Qu tipo de clases es X_gray?
Clase: uint8
5. Podemos comprobar que la imagen de intensidad nueva consta de
valores de pxeles en el rango [0, 255].

max (X_gray (:))

ans = 255

min (X_gray (:))

ans = 0

pregunta 5
Por qu estamos obligados a utilizar el operador dos puntos (:) al
especificar la variable X_gray? Qu sucede si lo omitimos?
Si omitimos los dos puntos nos mostrar todos los valores mximos o
mnimos en todas las columnas.
Se demostr en el paso anterior que la imagen X_gray contena valores en
el rango [0, 255] (en esta imagen en particular, pas a ser exactamente 0 y
255, que es slo una coincidencia). Vamos a ver lo que sucede cuando
convertimos la imagen a clase double.
6. convierta la variable gris X_gray a clase double.
X_gray_dbl = im2double(X_gray);

pregunta 6
Cul es el rango de valores para la nueva variable X_gray_dbl?
max (X_gray_dbl (:))

ans = 1

min (X_gray_dbl (:))

ans = 0

Del mismo modo, puede convertir a otros tipos de clase utilizando


im2uint8 y im2uint16, por ejemplo. Al convertir una imagen uint16 a
uint8, hay que tener cuidado porque la conversin cuantifica los 65.536
valores posibles a 256 valores posibles.
MATLAB viene con funciones integradas que presentan imgenes. La funcin
image se puede utilizar para mostrar los datos de una imagen y la funcin

imagesc llevar a cabo la misma operacin pero adems escala los datos
de la imagen a su rango completo de valores. El IPT ofrece una funcin de
imagen que muestra una mayor optimizacin de ajustes sobre los ejes de la
imagen para proporcionar una mejor visualizacin de los datos de la
imagen: imshow.
7. Utilice la funcin imshow (con la opcin impixelinfo) para mostrar la
imagen coins.png que est cargada actualmente en la variable I.
imshow (I), impixelinfo

Imgenes Binarias, intensidad y color se pueden mostrar como se ha


demostrado anteriormente. Para mostrar imgenes indexadas, debemos
especificar el mapa de color junto con los datos de la imagen.
8. Muestre la imagen indexada trees.tif. Los datos de imagen se
almacenan en la variable X y el mapa de color en el map. Tenga en cuenta
que la opcin impixelinfo proporciona un indicio claro que esta es una
imagen de color indexado.
imshow (X, mapa), impixelinfo

pregunta 7
Considere una imagen donde el rango de posibles valores para cada pixel no

es [0, 255], en cambio posee una gama no estndar de [0, 99]. Cmo
podemos mostrar la imagen de modo que un valor de 99 representa el
blanco y un valor de 0 representa negro?
X = uint16([0 109 204; 68 10 70; 50 255 120])
fmax = max(X(:));
fmin = min(X(:));
Za = uint8(99.0*double((X-fmin))/double((fmax-fmin)))
X =
0
68
50
Za =

0
26
19

109
10
255
42
4
99

204
70
120

79
27
47

La funcin impixel permite la inspeccin de los contenidos de los pxeles


seleccionados de inters dentro de la imagen.
9. Utilice la funcin impixel para explorar de forma interactiva los
contenidos de los pxeles de los puntos seleccionados en la imagen. Utilice
el ratn para hacer clic sobre los puntos de inters: clics normales se
utilizan para seleccionar los pxeles, al pulsar la tecla Backspace o Delete
elimina el pxel previamente seleccionado, un doble clic aade un pxel final
y termina la seleccin, y pulsando Return finaliza la seleccin sin la adicin
de un pxel final.
RGB = imread('peppers.png');
[c, r, p] = impixel(RGB);
c =
245
r =
196
p =
255

220

75

pregunta 8
Cul es el significado de los valores almacenados en las variables r, c, p?
Nos devuelve los valores de los pixeles seleccionados.
La funcin improfile se puede utilizar para calcular y representar grficamente los valores de
intensidad a lo largo de una lnea o un path de varias lneas en una imagen.
10. Utilice la funcin improfile para explorar el contenido de una lnea en la imagen coins.png
que est cargado actualmente en la variable I.

r1 = 17; c1 = 18; r2 = 201; c2 = 286;


imshow(I)
line([c1, c2], [r1, r2], 'Color', 'g', 'LineWidth', 2);
figure
improfile(I, [c1, c2], [r1, r2]);
ylabel('Gray level');

La funcin imtool es la ltima funcin del IPT para la visualizacin de imgenes. Proporciona
todas las capacidades de visualizacin de imgenes de imshow, as como el acceso a otras
herramientas para la navegacin y la exploracin de imgenes, como la herramienta Pixel
Region tool, la Image Information tool, y Adjust Constrast tool

11. Utilice la funcin imtool para mostrar la imagen que est cargada en la
variable X_rgb. Tenga en cuenta que una ventana secundaria (informacin
general) se abrir tambin. Explora la funcionalidad adicional, incluyendo la
posibilidad de medir distancias entre dos puntos dentro de la imagen.
imtool(X_rgb)

Podemos mostrar varias imgenes dentro de una figura mediante la funcin


subplot. Al utilizar esta funcin, los dos primeros parmetros especifican el
nmero de filas y columnas para dividir la figura. El tercer parmetro
especifica que ubicacin de la subdivisin se va a usar. En este caso el
subplot ser subplot(2,3,3), le estamos diciendo a MATLAB que divida la
figura en dos filas y tres columnas y establecer la tercera celda como activo
para mostrar la figura.
12. Cerrar las figuras abiertas (close all).

13. Ejecute las siguientes instrucciones para crear un subplot con dos
imgenes:
A = imread('pout.tif');
B = imread('cameraman.tif');
figure
subplot(1,2,1), imshow(A)
subplot(1,2,2), imshow(B)

pregunta 9
Cul es el rango de valores para la imagen A y la imagen B?
En el paso anterior, se muestran dos imgenes, ambas eran imgenes de intensidad. A pesar de
que no hay un mapa de color asociado con las imgenes de intensidad, MATLAB utiliza un
mapa de color en escala de grises para mostrar una imagen de intensidad (esto sucede en el
fondo y suele ser invisible para el usuario). Consideremos el caso en el que una imagen de
intensidad y una imagen indexada se muestran en una figura, utilizando la funcin subplot.

14. Cierre todas las figuras abiertas.

15. Visualice las imgenes coins.png (cargado en I variable) y trees.tif


(cargado en la variable X y su mapa de color en la variable map) en un
subplot. Ejecutar cada declaracin a la vez para ver el efecto en las
imgenes a medida que se muestran.
figure
subplot(1,2,1), imshow(I)

subplot(1,2,2), imshow(X, mapa)

pregunta 10
Qu pas con la imagen de la moneda justo despus se visualiza la imagen
de los rboles? Explica tu respuesta.
La imagen de las monedas cambio de color debido a que la imagen de los
rboles es una imagen indexada.
Para visualizar correctamente las imgenes con mapas de diferentes
colores, hay que utilizar la funcin de subimage.
16. Utilice la funcin de subimage para mostrar varias imgenes con
diferentes mapas de color.
figure

subplot(1,2,1), subimage(I), axis of


subplot(1,2,2), subimage(X, mapa), axis of

La funcin subimage convierte la imagen a su equivalente imagen RGB y


luego muestra esa imagen. Podemos hacer esto fcilmente nosotros
mismos, pero no hay conversin directa de la intensidad a RGB, por lo que
primero debemos convertir de intensidad para un ndice, y luego desde
indexado a RGB.

17. convertir manualmente la imagen intensidad de las monedas (cargado


en la variable I) a una imagen indexada y luego a RGB. Tenga en cuenta que
la imagen rboles (cargada en la variable X con su mapa de color en la
variable map) ya se ha convertido a RGB en el paso 3 (guardada en la
variable X_rgb).
[I_ind, I_mapa] = gray2ind(I,256);
I_rgb = ind2rgb(I_ind,I_mapa);

pregunta 11
Qu contienen las variables de I_ind y I_mapa?

18. Muestre las imgenes a color utilizando la funcin imshow.


figure
subplot(1,2,1), imshow(I_rgb)
subplot(1,2,2), imshow(X_rgb)

19. Use imwrite para guardar dos de las imgenes modificadas en este
taller estos archivos sera usados a futuro en el semestre. Utilice el formato
JPEG para uno de ellos y la extensin PNG para el otro. Por ejemplo,

imwrite(X_rgb, 'rgb_trees.jpg');
imwrite(X_gray, 'gray_trees.png');

You might also like