Post on 06-Feb-2018
1
Prof.: Ulises Román C – FISI-UNMSM
1 Guía de
Laboratorio
MatLab R2009b
& Octave
2
MatLab & Octave
Uso de Funciones y Procesamiento de Imágenes
RESUMEN
La presente guía enseña a generar gráficos y procesamiento de imágenes usando las funciones de MatLab(software propietario) y Octave(software libre) , que a continuación se muestra el código y su respectiva grafica ,Es necesario tener las siguientes consideraciones para poder trabajar con los primeros programas:
1. Copie los siguientes archivos del CD a la carpeta de trabajo
del Matlab c:\matlab\work (si tiene problemas consulte con el profesor)
p1.m
p2.m
p3.m
p4.m
p5.m
p6.m
p7.m
p8.m
p9.m
p10.m
p11.m
3
2. Cargue el Matlab y aparecerá la LINEA DE COMANDO con el símbolo >> en una pantalla similar a esta:
3. Para ejecutar el Programa P1 escriba en la LÍNEA DE
COMANDO y presione ENTER y apreciara el siguiente resultado.
4. Para editar y hacer cambios en el programa, presione el icono de ABRIR ARCHIVO como se muestra en la figura
LÍNEA DE COMANDO
ABRIR ARCHIVO
4
5. Aparecerá la siguiente ventana, allí seleccionar P1 y luego presionar ABRIR
6. En una ventana nueva aparecerá el conteniendo del programa P1.m tal como se puede apreciar.
Realice los cambios deseados, por ejemplo la función y = 2
* x + 3 cámbiela a 20 * x - 5 . Luego GRABE el programa y
ejecute nuevamente, según lo señalado en la opción 3.
7. Siga los mismos pasos para ejecutar y hacer los cambios deseados en todos los programas desde P1.m hasta P9.m.
5
Programas Modelo para el Aprendizaje del MatLab
Programa P1:
clear; clc; close all; x=-3:0.01:3; y=2*x+3; figure(1); plot(x,y); grid;
Programa P2:
clear;
clc;
close all;
A=20;
f=2;
fi=90*pi/180;
t=0:0.01:4;
y=A*sin(2*pi*f*t+fi);
figure(1);
plot(t,y);
grid;
6
Programa 3: clear; clc; close all; x=-3:0.01:3; y1=2*x+3; A=5; f=1; fi=45*pi/180; t=0:0.005:4; y2=A*sin(2*pi*f*t+fi); figure(1); subplot(2,1,1); plot(x,y1); grid; subplot(2,1,2); plot(t,y2); grid;
Programa 4:
clear; clc; close all; x1=-3:0.01:3; y1=2*x1+3; x2=-4:0.01:4; y2=x2.*x2+4; x3=-5:0.02:5; y3=-4*x3+5; A=5; f=1; fi=45*pi/180; t=0:0.005:4; y4=A*sin(2*pi*f*t+fi); figure(1); subplot(2,2,1);
7
plot(x1,y1); grid; subplot(2,2,2); plot(x2,y2); grid; subplot(2,2,3); plot(x3,y3); grid; subplot(2,2,4); plot(t,y4); grid;
Programa 5:
clear;
clc;
close all;
A = input('Introducir amplitud A : ');
f = input('Introducir frecuencia f en Hz : ');
fi = input('Introducir frecuencia en grados : ');
fi=fi*pi/180;
t=0:0.01:2;
y=A*sin(2*pi*f*t+fi);
figure(1);
plot (t,y);
grid;
8
Programa P6:
// Permite ubicar punto de intersección de dos funciones clear;
clc;
close all;
x1 = input('Introducir mínimo valor del dominio de la primera función : ');
x2 = input('Introducir máximo valor del dominio de la primera función : ');
a1 = input('Introducir mínimo valor del dominio de la segunda función : ');
a2 = input('Introducir máximo valor del dominio de la segunda función : ');
x = x1:1:x2;
y = sin((x*pi)/180);
a = a1:1:a2;
b = sin(a+1);
figure(1);
plot(a,b,x,y);
grid;
Programa 7 //Grafica de una Hélice
clear;
clear;
clc;
close all;
x=input('Numero de vueltas: ');
t=linspace(0,2*x*pi,2000);
plot3(sin(t),cos(t),t);
grid on;
9
Programa 8 // Grafica de la circunferencia
Programa 9 //Aplicación de la función exponencial a la deformidad de una
elevación
Programa 10 //Aplicación de la función exponencial
clear; clc; close all; x=-4:0.01:4; a=input('Ingrese el valor de a: '); b=input('Ingrese el valor de b: '); c=input('Ingrese el valor de c: '); y=a*(x.^x)+b*x+c; plot(x,y); grid;
clear;
clc;
close all;
a=input('Introduzca el índice de deformidad
(par): ');
[ x , y ]=meshgrid(-2:0.01:2);
z =exp(-x.^a-y.^a);
mesh(x,y,z);
clear;
clc;
close all;
r=input('introducir el radio: ');
x=-r:0.0001:r;
y=sqrt(r^2-x.^2);
plot(x,y,'r',x,-y,'r');
grid;
10
Programa 11 //Aplicación de la función circunferencia
Uso de Octave:
Para este modelado decidimos utilizar una alternativa al matlab un
programa llamado OCTAVE que cumple con la mayoría de las
funciones del matlab y además es software libre por lo que no
tendremos problemas con la licencia.
Ejemplo 1:
Para este caso se va a modelar lo que seria un movimiento armónico cuando ocurre el fenómeno llamado la resonancia en la que empieza a aumentar la amplitud del movimiento de manera que puede ocurrir algo similar a lo que paso con el puente de Tacoma en Estados Unidos que poco después de inaugurado el viento lo hizo entrar en resonancia y termino por colapsar.
Para esto la función mas aproximada seria x.sen(x) así que vamos a modelare l grafico de esta función. los comandos empleados para la gráfica son estos son:
clear;
clc;
close all;
h=input('Ingrese el valor de h: ');
k=input('Ingrese el valor de k: ');
r=input('Ingrese el radio: ');
x=-5:0.01:5;
y1=sqrt(r^2-(x-h).^2)+k;
y2=-sqrt(r^2-(x-h).^2)+k;
plot(x,y1,x,y2);
grid;
11
Descargar Octave de internet y luego instalar , se mostrara la siguientes pantallas para edición y ejecución del programa del ejemplo 1. La funcionalidad es lo mismo que matlab, solo con la diferencia de este software es limitado no tiene todas las funciones. clear; clc; x=0:0.1:20; y=x.*(sin(x*pi)/180); plot(x,y); grid;
12
Parte de Procesamiento de Imágenes
El Matlab tiene funciones predefinidas para procesamiento de
imágenes así como para trabajos con redes neuronales, algoritmos
genéticos y otros.
PROCESAMIENTO DE IMÁGENES (PI): Transformar imágenes para
obtener nuevas imágenes.
Existen 3 tipos de Imágenes:
a) RGB
b) GRIS
28 Bits (0 – 255)
c) BINARIO
20 Bits( 0,1)
R
G
B
13
Formato de Imágenes
a. Mapas de Bits
b. Vectores
c. Mixtos
Formato de Entradas/Salidas
a. Imagen D Procesamiento Imagen D’
b. Imagen 2D Procesamiento Imagen 2D’
c. Imagen2D Procesamiento Patrones
d. Imagen3D Procesamiento Imagen 3D’
Identificar los objetos existentes en una imagen: PATRONES
Reconstrucciones de Imagen 3D desde 2D
REPRESENTACIÓN DE IMÁGENES: Una imagen digital es una
representación de una imagen analógica, mediante una matriz 2D
14
f(x,y) , cada elemento de la matriz es una muestra llamada pixel . Las
imágenes son capturadas mediante cámaras (sensores de luz) para
ser convertidas en imágenes digitales.
• Una imagen está representado por un conjunto de píxeles o
matriz de puntos que tienen una dimensión determinada.
• Cada píxel puede representar una “gama de colores” que está
relacionada con el número de bits que tenga cada píxel.
Formato de Imágenes
a) Mapa de bits. matriz de puntos que al unirse forman la imagen,
se habla también de formatos de trama (raster).
15
b) Vectores. ecuación matemática que representa una imagen y
que ofrece una muy alta calidad, ya que permite ser ampliada
sin perder resolución.
El formato como se almacena la imagen influye en el tiempo de
acceso y procesamiento de la imagen.
16
EJERCICIOS
1. Crear una carpeta de trabajo llamado PROC_IMAGENES, en ella deberá
guardar (03) imágenes descargadas de internet o fotos de personas o
plantas o edificios o vehículos o animales
2. Los archivos deberán tener el formato de JPG, cuyos nombres son:
Imagen1,Imagen2,Imagen3
3. Leer y mostrar la imagen desde el matlab: La imagen deberá estar en la
carpeta de PROC_IMAGENES, como se muestra la pantalla siguiente:
>> I = imread(‘imagen1.jpg’);
>> imshow(I); % Probrar con >>imshow(I,[])
17
18
4. Determinar el tamaño de la imagen
>> size(I) Salida: 648 (filas) 1152(columnas) 3(componentes)
5. Muestra la información del archivo de imágenes:
>> imfinfo imagen1.jpg % que sucede al usar >> whos I
19
6. Extraer los componentes de color
>> R = I(:,:,1)
>> G = I(:,:,1)
>> B = I(:,:,1)
7. Extraer los componentes de color- que pasa con :?
R = I(:,:,:)
G = I(:,:,:)
B = I(:,:,:)
20
8. Editar , Abrir (Archivo Abrir) y ejecutar(F5 o presionar el
icono ) un archivo en Matlab, cuya extensión es (*.m), veamos
un ejemplo:
PARA EDITAR Y GRABAR:
A. Hacer doble clic en:
B. File NewM-Files
21
C. Para guardar : Files Save As: mostrar_imagen
22
D. Para ejecutar presiones F5 o el icono espere los resultados
como se muestra en la figura No.1:
23
E. Para abrir un archivo guardado en extension *.m :
9. Para ajustar la imagen de contraste , usamos la función imadjust como se muestra en figura siguiente el código y salida:
24
10. Para ecualizar un histograma , usamos la función histeq como se muestra en figura siguiente el código y salida:
25
11. Para ajustar dos imágenes , usamos la función imadjust como se
muestra el código y el grafico en la siguiente:
12. Para generar histogramas de las imágenes , usamos la función
imhist como se muestra el código y el grafico en la siguiente:
26
ANEXOS DE PROCESAMIENTO DE IMÁGENES:
27
28
29
SEGMENTACION DE IMÁGENES
La segmentación subdivide una imagen en sus partes constituyentes u
objetos, con el fin de separar las partes de interés del resto de la imagen
de acuerdo al tipo del problema que se va resolver. Existen varias
técnicas para la detección de imágenes como: Líneas, Puntos y Bordes,
umbralizacion y regiones. La función que se usa en matlab es edge – asi
como las técnicas de: Sobel, Prewitt, Canny, Roberts,
Laplacian/Gaussian(LoG) y Zero crossing.
Ejercicios:
1.
30
GRAFICOS Y VISUALIZACION EN 2-D, 3-D
MatLab ofrece una gama de gráficos(curvas planas y superficies) como:líneas,barras,curvas,polares,histogramas,sectores,y gráficos con múltiples ejes,mallas de datos multidimensionales,etc .a continuación veamos dichos graficos:
PROCEDEMIENTOS:
1. INSTALAR EL MATLAB VERSION 7 (2 CDs) 2. EDICION MODO CONSOLA O USO DEL EDITOR/PROPIEDADES 3. GUARDAR EL PROGRAMA (MODO EDITOR) CUYA EXTENSION (*.m) 4. EJECUTAR EL PROGRAMA 5. EJERCICIOS
Ejercicio 1: Usando modo consola, editar y ejecutar el siguiente código como se muestra en la figura:
CÓDIGO RESULTADO
Ejercicio 2: Usando modo editor, editar(escribir el código), guardar(FileSave Asnombre del archivo, por defecto debe grabar en la carpeta work
) y ejecutar(presione el botón ) veamos la muestra en la figura siguiente:
31
Para abrir el EDITOR de trabajo desde MatLab (FileNewM-File)
EDITE SU CODIGO DEL EJERCICIO 1 Y GUARDE COMO PROG2:
32
33
Ejercicio 3: Editar el siguiente código y visualizar:
a. Como se muestra la figura
RESULTADO
34
b. Usando la función rótate 3d del editor genere la figura
Ejercicio 4: Genere los siguientes gráficos usando funciones predefinidas del MatLab, como se muestra en las siguientes figuras:
35
36
EJERCIO: Genere la siguiente grafica usando la función rótate 3d:
37
EJERCICIOS: Generar gráficos con sus respectivos códigos, usando las siguientes funciones : mesh, meshc, meshz, surf, surfc, surfz
38
GENERACION DE MOVIMIENTOS(PELICULAS)
Para generar una figura en movimiento se usa las siguientes funciones :
Función getframe, función moviein(n), reserva memoria para almacenar n frames, devuelve un vector columna con la información recogida.
M=moviein (n)-> inicializa una matriz para contener los cuadrados de la animación.
EJERCIO: codifica y ejecuta el siguiente programa, has modificaciones y explica que ocurre.
EJERCICIO: usando como ejemplo el ejercicio anterior, genere una curva en movimiento como se muestra en la figura siguiente:
39