Laboratorio Guía de 1 MatLab R2009b Octave · PDF file1 Prof.: Ulises Román C...

Post on 06-Feb-2018

240 views 5 download

Transcript of Laboratorio Guía de 1 MatLab R2009b Octave · PDF file1 Prof.: Ulises Román C...

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