práctica 06 instrucción break tratamiento de imágenes en

Anuncio
6ª Práctica. Matlab
página 1
PROGRAMACIÓN EN MATLAB
PRÁCTICA 06
INSTRUCCIÓN BREAK
TRATAMIENTO DE IMÁGENES EN MATLAB
FUNCIONES Y GRÁFICOS
EJERCICIO 1.
INSTRUCCIÓN BREAK................................................................................................................. 1
EJERCICIO 2.
TRATAMIENTO DE IMÁGENES EN MATLAB ....................................................................... 2
EJERCICIO 2.1
EJERCICIO 2.2
EJERCICIO 2.3
EJERCICIO 3.
OBTENCIÓN DEL NEGATIVO DE UNA IMAGEN..................................................................................... 2
SUPERPOSICIÓN DE DOS IMÁGENES ................................................................................................... 2
ROTACIÓN DE UNA IMAGEN............................................................................................................... 3
DERIVADA E INTEGRAL............................................................................................................. 4
En primer lugar crea un directorio llamado Practica06 en tu directorio G:\Informatica1. En este
directorio deberás guardar todos los ficheros y todo el trabajo resultante de esta práctica. Después
arranca el programa MATLAB y coloca como directorio de trabajo o directorio activo el directorio
creado previamente.
EJERCICIO 1. INSTRUCCIÓN BREAK
Crea un subdirectorio dentro de G:\Informatica1\Practica06 llamado Ejercicio01 y dentro de él,
guarde el siguiente ejercicio.
Escribir un programa que pida por teclado un vector y un número y compruebe si ese número
se encuentra o no dentro del vector. Se debe mostrar un mensaje por pantalla que indique si el
elemento se encuentra o no en el array.
Ejemplo:
En pantalla aparecerá: El elemento 4 está en el vector
En pantalla aparecerá: El elemento 21 NO está en el vector
Escuela Superior de Ingenieros de San Sebastián – Universidad de Navarra
Informática 1 y Fundamentos de Computadores
página 2
EJERCICIO 2. TRATAMIENTO DE IMÁGENES EN MATLAB
La digitalización de una imagen permite realizar operaciones numéricas sobre ella. Esto es lo que
realizan las distintas funciones implementadas en los programas para tratamiento de imágenes.
Mediante las distintas operaciones se pueden realizar efectos especiales sobre una imagen, eliminar
ruido, darle más o menos luz a una fotografía, etc.
En el directorio Q:\Informatica1\Practica06 se dispone de una serie de archivos gráficos del
tipo JPG con los que puede probar los programas que se piden a continuación. Crea un
subdirectorio dentro de G:\Informatica1\Practica06 llamado Ejercicio02 y dentro de él, guarde los
siguientes ejercicios.
EJERCICIO 2.1 Obtención del negativo de una imagen
Construya un nuevo subdirectorio que se llame Ejercicio0201 y sitúe, como siempre, el directorio
de trabajo de Matlab dentro.
Realice una función cuyo encabezado sea:
function negativo(archivo)
Donde archivo es una cadena de caracteres con el nombre completo del archivo (incluida su
extensión). Esta función debe abrir dos figuras, en la primera figura dibujará la imagen contenida
en el archivo y en la segunda figura el negativo de la misma imagen.
EJERCICIO 2.2 Superposición de dos imágenes
Construya un nuevo subdirectorio que se llame Ejercicio0202 y sitúe, como siempre, el directorio
de trabajo de Matlab dentro.
Se trata de hacer un programa capaz de unir dos imágenes en una sola, utilizando una imagen como
fondo y otra como imagen superpuesta. A su vez, la imagen que va a ser superpuesta tiene un fondo
de color verde y el resto de la imagen tiene colores diferentes al color del fondo. En el directorio
Q:\Informatica1\Practica06 dispone de dos archivos jpg para probar su función. Ambos archivos
tienen el mismo número de píxeles.
Realice una función en Matlab cuyo encabezado sea:
function superposicion(archivo1,archivo2)
Donde archivo1 es una variable para guardar una cadena de caracteres con el nombre
completo del fichero jpg que se va a utilizar como imagen de fondo y archivo2 es el nombre
completo del archivo que se va a utilizar como imagen superpuesta. Para ello debe escribir a
continuación del encabezado de la función, las instrucciones necesarias para realizar las siguientes
tareas:
A) Lectura de los archivos pasados por el usuario para guardar las imágenes en sendas
variables llamadas matriz_coloresA y matriz_coloresB.
B) Transformación del formato de las dos hipermatrices cargadas (matriz_coloresA y
matriz_coloresB) a números de tipo double y dividirlas por 255.
C) Abrir una figura y dibujar la imagen contenida en matriz_coloresA encuadrada sobre la
figura con igual escala para los píxeles horizontales y verticales.
TECNUN
6ª Práctica. Matlab
página 3
D) Abrir una figura y dibujar la imagen contenida en matriz_coloresB encuadrada sobre la
figura con igual escala para los píxeles horizontales y verticales.
E) Inicializar una hipermatriz a cero que tenga el mismo tamaño que las dos hipermatrices
anteriores. Esta será quien contenga la imagen final, por lo que le vamos a llamar imagen_final.
F) Recorrer píxel a píxel la hipermatriz llamada matriz_coloresB e identificar si el píxel en
el que nos encontramos es más o menos verde. Para ello chequéese si el rojo es <0.3, el verde es
>0.7 y el azul es <0.3. En caso afirmativo (es decir, si es verde), hay que rellenar el píxel de
imagen_final con el de matriz_coloresA. En caso negativo (es decir, si no es verde) hay que
rellenar al píxel de imagen_final con el de matriz_coloresB.
G) Abrir una figura y dibujar la imagen contenida en la hipermatriz imagen_final encuadrada
sobre la figura con igual escala para los píxeles horizontales y verticales (Figura 2.1a).
(a)
(b)
Figura 2.1: Superposición de imágenes (a) e imagen rotada (b)
EJERCICIO 2.3 Rotación de una imagen
Ahora vamos a tratar de dibujar la imagen final pero rotada 180º (Figura 2.1b). Para ello debe
añadir al programa que está desarrollando el código necesario para realizar las siguientes tareas:
A) Inicializar otra hipermatriz a cero que tenga el mismo tamaño que el resto de
hipermatrices anteriores. Esta será quien contenga la imagen final rotada 180 º, por lo que le vamos
a llamar imagen_final180.
B) Ahora deberá asignar en sentido contrario los píxeles de la hipermatriz imagen_final a la
hipermatriz imagen_final180, de manera que el primer píxel de imagen_final sea el último píxel
en imagen_final180, el segundo píxel sea el penúltimo; y así sucesivamente hasta que el último
píxel de imagen_final sea el primero de imagen_final180.
C) Abrir otra figura y dibujar la imagen contenida en imagen_final180 encuadrada sobre la
figura con igual escala para los píxeles horizontales y verticales.
Escuela Superior de Ingenieros de San Sebastián – Universidad de Navarra
Informática 1 y Fundamentos de Computadores
página 4
EJERCICIO 3. DERIVADA E INTEGRAL
Crea un subdirectorio dentro de G:\Informatica1\Practica06 llamado Ejercicio03 y dentro de él,
guarde los siguientes ejercicios.
Realice una función en Matlab cuyo encabezado sea:
function y=funcion(x)
3
Donde x es un número e y es el valor de la función matemática y=(xcos(x)) en el punto x.
B) Realice una función en Matlab cuyo encabezado sea:
function D=derivada(x)
donde x es un número y D es el valor de la derivada numérica de funcion en el punto x con
una constante de derivación k=0.001.
D=
funcion ( x + k ) − funcion ( x)
k
C) Realice una función en Matlab cuyo encabezado sea:
function I=integracion(x0,x1)
Donde I es el valor de la integración numérica de funcion entre los puntos x0 y x1
respectivamente, con un paso de integración k=0.001.
I=
x1− k
∑ funcion ( x) * k
x= x0
D) Realice una función en Matlab cuyo encabezado sea: function dibujar(xi,xf). Esta
función deberá abrir una gráfica y dibujar sobre ella lo siguiente:
a) En azul: La función escrita en el fichero funcion.m entre los puntos xi y xf con un
paso entre punto y punto de 0.1.
b) En rojo: La derivada de la función entre los puntos xi y xf con un paso entre punto y
punto de 0.1.
c) En negro: El valor del área acumulada por la función desde xi hasta xf con un paso
entre punto y punto de 0.1.
TECNUN
6ª Práctica. Matlab
página 5
Figura 3.1: Ejemplo del dibujo que realiza la función dibujar al pasarle como argumentos de
entrada xi=-1 y xf=1.
E) Realice una función en Matlab cuyo encabezado sea:
function I=integracion2(x0,x1)
Donde I es el valor de la integración numérica de funcion entre los puntos x0 y x1
respectivamente, con un paso de integración k=0.001. Sin embargo, el cálculo del área para la
integración no va a realizarse como en el caso anterior, que era el caso que se presentó en clase y
que se encuentra abajo a la izquierda, sino de una forma más exacta, que es la forma presentada
abajo a la derecha, y que consiste en añadir al área del rectángulo el del triángulo superior.
F) Añada a la función dibujar el código necesario para que abra una segunda figura y dibuje
entre los puntos xi y xf con un paso entre punto y punto de 0.1 las gráficas de la integración
mediante el primer método (integracion.m) y mediante el segundo método (integracion2.m)
superpuestas en azul y rojo respectivamente.
Escuela Superior de Ingenieros de San Sebastián – Universidad de Navarra
Descargar