Procesamiento digital de imagenes con Matlab
IMÁGENES CON MATLAB
1
http://lonely113.blogspot.com
Lectura de Imágenes
2
Mediante el comando:
Imagen=imread(‘nombre.extensión’)
La imagen a leer debe encontrarse en la carpeta de trabajo de
Matlab. Los formatos de imagen soportados por Matlab son:
Formato
Extensión
TIFF
.tiff
JPEG
.jpg
GIF
.gif
BMP
.bmp
PNG
.png
XWD
.xwdhttp://lonely113.blogspot.com
Ejemplo: Lectura de una imagen *.jpg
3
La imagen "fruta.jpg" se encuentra en el directorio de
trabajo.
>> Im_RGB=imread('fruta.jpg');
http://lonely113.blogspot.com
Representación de Imágenes en Matlab
4
En Matlab una imagen en formato de color RGB se
representa por tres matrices bidimensionales,
correspondientes a los planos R, G y B.
1=R2=G
3=B
http://lonely113.blogspot.com
Obtención de los Planos RGB
5
Para obtener los planos R, G y B se ejecutan los comandos:
Im_R=Imagen(:,:,1)
Im_G=Imagen(:,:,2)
Im_B=Imagen(:,:,3)
Ejemplo:
>> Im_R=Im_RGB(:,:,1);
>> Im_G=Im_RGB(:,:,2);
>> Im_B=Im_RGB(:,:,3);
http://lonely113.blogspot.com
Tamaño de la Imagen
6
Obtención del tamaño de Imagen:
>> [m,n,p]=size(Im_RGB)m=
600
n=
800
p=
3
Im_RGB: 600x800
3 planos (R,G y B)
http://lonely113.blogspot.com
Despliegue de Imágenes
7
Se realiza con el comando:
Imshow(Imagen)
Dónde: Imagen es del tipo uint8.
>> imshow(Im_RGB)
http://lonely113.blogspot.com
Escritura de Imágenes
8
Con el comando:
imwrite(Imagen,’nombre.extensión’)
>> imwrite(Im_RGB,'imagen.jpg');http://lonely113.blogspot.com
Lectura de Valor de Pixeles
9
Obtención de valor de pixel
Imagen(m,n)
; Cuando Imagen está en escala de grises (un solo plano).
Imagen(m,n,p) ; Para imagen RGB. Devuelve el valor del pixel
correspondiente al plano p (1, 2 ó 3).
Dónde: m,n son las coordenadas del pixel.
>> Im_RGB(300,300,1)
ans =
255
>> Im_RGB(300,300,2)
ans =
178
>> Im_RGB(300,300,3)
ans =10
http://lonely113.blogspot.com
Selección manual y Lectura de Valor de
Pixel
10
Mostrar la imagen con el comando imshow.
Escribir el comando: pixel=impixel;
Clic en el pixel y Enter.
>> imshow(Im_RGB)
>> pixel=impixel
pixel =
252 144 115
http://lonely113.blogspot.com
Edición de Pixeles
11
Para modificar el valor de un pixel:
Imagen(m,n)=x ; Para una imagen enescala de grises.
imagen(m,n,p)=x ; Para una imagen RGB.
Dónde: x es un número entero entre 0 y 255 correspondiente a
escala de grises (0=negro y 255=Blanco)
>> Im_RGB(200,750,1)=255;
>> Im_RGB(200,750,2)=255;
>> Im_RGB(200,750,3)=255;
http://lonely113.blogspot.com
Perfil de Imagen
12
Mostrar la imagen con el comando: imshow.
Escribir el comando: improfile
Trazarla línea para obtener el perfil en la imagen (clic en inicio y clic en final) y Enter.
Si se desea se puede guardar el perfil en una variable. Ejecutando:
perfil=improfile;
>> imshow(Im_RGB)
>> improfile
300
250
200
150
100
50
0
http://lonely113.blogspot.com
0
50
100
150
200
250
300
Distance along profile
350
400
450
500
Submuestreo13
Submuestrear una imagen reduce su tamaño y permite que
el procesamiento posterior de la imagen se agilice.
a11
a12
a13
a14
a15
a16
a17
a18
…
a1n
Se toman pixeles equidistantes (muestras), dependiendo del
factor elegido, y se desecha el resto de pixeles.
Imagen_ sub=Imagen(1:a:end,1:a:end,1:1:end)
Dónde: a es el factor de muestreo.
Si a=2 la imagen se reducea la mitad.
http://lonely113.blogspot.com
Ejemplo: Submuestreo de la imagen Im_RGB
por un factor de 4.
14
>> Im_sub=Im_RGB(1:4:end,1:4:end,1:1:end);
>> imshow(Im_sub)
http://lonely113.blogspot.com
Transformación Uint8 - Double
15
En algunos casos es necesario que la imagen a procesar
sea del tipo "double", ya que uint8 admite sólo valores
enteros entre 0 y 255.
...
Regístrate para leer el documento completo.