Matlab - WordPress.com

Transcripción

Matlab - WordPress.com
Guía de
Laboratorio
1
MatLab R2009b
&
Octave
Prof.: Ulises Román C – FISI-UNMSM
1
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
2
2. Cargue el Matlab y aparecerá la LINEA DE COMANDO con
el símbolo >> en una pantalla similar a esta:
LÍNEA DE COMANDO
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
ABRIR ARCHIVO
3
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.
4
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;
5
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);
6
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;
7
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;
8
Programa 8
// Grafica de la circunferencia
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;
Programa 9
//Aplicación de la función exponencial a la deformidad de una
elevación
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);
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;
9
Programa 11
//Aplicación de la función circunferencia
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;
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:
10
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;
11
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
R
G
B
b) GRIS
28 Bits (0 – 255)
c) BINARIO
20 Bits( 0,1)
12
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
13
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).
14
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.
15
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,[])
16
17
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
18
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(:,:,:)
19
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 NewM-Files
20
C. Para guardar : Files Save As: mostrar_imagen
21
D. Para ejecutar presiones F5 o el icono
como se muestra en la figura No.1:
espere los resultados
22
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:
23
10. Para ecualizar un histograma , usamos la función histeq como se
muestra en figura siguiente el código y salida:
24
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:
25
ANEXOS DE PROCESAMIENTO DE IMÁGENES:
26
27
28
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.
29
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.
2.
3.
4.
5.
INSTALAR EL MATLAB VERSION 7 (2 CDs)
EDICION MODO CONSOLA O USO DEL EDITOR/PROPIEDADES
GUARDAR EL PROGRAMA (MODO EDITOR) CUYA EXTENSION (*.m)
EJECUTAR EL PROGRAMA
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(FileSave
Asnombre del archivo, por defecto debe grabar en la carpeta work
) y ejecutar(presione el botón
) veamos la
muestra en la figura siguiente:
30
Para abrir el EDITOR de trabajo desde MatLab (FileNewM-File)
EDITE SU CODIGO DEL EJERCICIO 1 Y GUARDE COMO PROG2:
31
32
Ejercicio 3: Editar el siguiente código y visualizar:
a. Como se muestra la figura
RESULTADO
33
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:
34
35
EJERCIO: Genere la siguiente grafica usando la función rótate 3d:
36
EJERCICIOS: Generar gráficos con sus respectivos códigos, usando las siguientes
funciones : mesh, meshc, meshz, surf, surfc, surfz
37
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:
38
39

Documentos relacionados