


Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
ejercicio informatica dame puntos porfa
Tipo: Ejercicios
Subido el 17/02/2022
2 documentos
1 / 4
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



Asignatura / Gaia: INFORMÁTICA Curso / Kurtsoa: 1º Nombre / Izena: Fecha / Data: 10 / 12 /201 9 EN SU CUENTA SE ENCUENTRA EL SIGUIENTE DIRECTORIO:
Se quiere realizar un programa que permita esconder a Wally en cualquier imagen. Para conseguirlo, programaremos los siguientes apartados. El ejercicio tendrá un único fichero main desde donde se harán las llamadas a las funciones de cada apartado. A) ( 1. 25 puntos) Programar una función que dada una imagen calcule su espejo, tal y como se muestra en la siguiente figura. Para probar la función utilizará la imagen ‘ wally.jpg’. Imagen original Imagen espejo La cabecera de la función sería la siguiente: function imgEspejo= CalcularEspejo (imagen) donde imagen es la hipermatriz de la imagen inicial e imgEspejo es la hipermatriz que guarda la imagen resultante. B) ( 2 puntos) Para poder esconder a Wally en una imagen con el objetivo de que sea difícil encontrarle, tendremos que reducir el tamaño de su imagen. Para conseguirlo, programaremos una función que consiga reducir la imagen de entrada en un factor N. Se considerará que N será siempre divisor tanto del numero de filas como de columnas de la variable “imagen”. La cabecera de la función sería la siguiente: function imgSmall=Reducir_Imagen(imagen, N) donde imagen es la hipermatriz de la imagen inicial, N el factor de reducción e imgSmall es la hipermatriz que guarda la imagen resultante de tamaño reducido.
A continuación se muestra un ejemplo de la imagen reducida con N=. Imagen original de tamaño 8x8 Imagen reducida con N=
Y 11 Y 21 Y 12 Y 22 Los píxels de la imagen reducida se calculan realizando la media de los NN pixels.* A continuación se muestran las operaciones a realizar para calcular los pixels Y 11 y Y 12 de la imagen reducida para N=4. Y 11 =(x 11 +x 12 +x 13 +x 14 +x 21 +x 22 +x 23 +x 24 +x 31 +x 32 +x 33 +x 34 +x 41 +x 42 +x 43 +x 44 )/ Y 12 =(x 15 +x 16 +x 17 +x 18 +x 25 +x 26 +x 27 +x 28 +x 35 +x 36 +x 37 +x 38 +x 45 +x 46 +x 47 +x 48 )/ Tendrá que probar esta función con la imagen de Wally y con dos valores de N: N=4 y N=8. Las imagenes resultantes se guardarán en dos ficheros llamados ‘ wally 4 .jpg’ y ‘ wally 8 .jpg’ respectivamente. C) ( 1 .25 puntos ) Por último, se programará una función que dadas dos hipermatrices que representan dos imágenes, permita superponer una imagen en otra. En este caso, superpondremos la imagen reducidad de Wally en otra imagen. La cabecera de la función sería la siguiente: function imagen_super=Superponer_Imagen(imagen_s, imagen_b, px, py) Esta función superpondrá los pixeles no verdes de la imagen pequeña ( imagen_s ) sobre la grande ( imagen_b ) tomando como punto de partida la posición X,Y ( px,py ) de la imagen grande. Se considerará que un pixel es verde si se da la siguiente condición: R<0.3&G>0.7&B<0.3. Tendrá que tener en cuenta que únicamente se podrá superponer la imagen si es posible superponerla en su totalidad. Puede probar esta función superponiendo la imagen reducida de Wally con un factor de 8 (N=8) al fichero ‘ maraton.jpg’ , siendo px=205 y py=178. La imagen resultante se guardará con el nombre ‘ maraton_wally.jpg’. Importante : si no ha conseguido programar la función Reducir_Imagen de forma correcta, puede realizar este apartado utilizando el fichero ‘ wally_8.jpg ’, que ya ha sido previamente reducido con N=8. EJERCICIO 2 (5.5 PUNTOS) En este ejercicio se va a programar un método alternativo a los métodos de ordenación vistos en clase. Para programar este método será necesario crear un array con tantos elementos como
vector:38 34 6 6 4 0 nElem: vector:8 9 …… La cabecera de la función se deja a criterio del alumno. El tamaño del vector será un número aleatorio entre 1 y 20 y los números del array podrán tener valores comprendidos entre 0 y 50. Para generar un número aleatorio entre 0 y un valor se utilizará la siguiente instrucción, donde tendrá que sustituir valor por el número hasta el cual quiere calcular números aleatorios: num=floor(rand()valor)* Tiene un ejemplo de un posible fichero ‘ pruebas.txt’ en la carpeta del examen. D) ( 1 punto) Con la información contenida en el fichero ‘ pruebas.txt’ se quiere programar una función llamada CargarInfo , para crear el siguiente vector de estructuras, donde tendremos un campo vInicial donde se guardará el vector contenido en el fichero y un campo vOrdenado, donde se guardará el vector una vez ordenado llamando a la función programada en el apartado A. La cabecera de la función se deja a criterio del alumno. IMPORTANTE : Si no ha conseguido programar la función del apartado A, podrá realizar este ejercicio utilizando la función sort de Matlab. E) ( 1 punto) Programar una función que guarde la información contenida en el vector de estructuras en un fichero llamado ‘ Resultados.txt’. La cabecera de la función sería: function EscribirFichero (info, fname) donde info es el vector de estructuras donde está la información y fname es el nombre del fichero donde se guardará dicha información. El formato del fichero sería el siguiente: vInicial:32 5 46 9 13 39 24 38 vOrdenado: 5 9 13 24 32 38 39 46 vInicial:13 1 33 21 22 30 2 vOrdenado:1 2 13 21 22 30 vInicial:38 34 6 6 4 0 vOrdenado: 0 4 6 6 34 38 …… vInicial: vOrdenado: datos 32 5 46 9 13 39 24 38 13 1 33 21 22 30 2 5 9 13 24 32 38 39 46 1 2 13 21 22 30 38 34 6 6 4 0 0 4 6 6 34 38 vInicial: vOrdenado: vInicial: vOrdenado: ...