Explorar el Código

Updated to book version

Luis Albertorio hace 8 años
padre
commit
d6507f5a28
Se han modificado 1 ficheros con 26 adiciones y 33 borrados
  1. 26
    33
      README-es.md

+ 26
- 33
README-es.md Ver fichero

1
-
2
 #Recursión - Revolvedor de imágenes
1
 #Recursión - Revolvedor de imágenes
3
 
2
 
4
-![main1-small.png](images/main1-small.png)
5
-![main2-small.png](images/main2-small.png)
6
-![main3-small.png](images/main3-small.png)
3
+![main1.png](images/main1-small.png)
4
+![main2.png](images/main2-small.png)
5
+![main3.png](images/main3-small.png)
7
 
6
 
8
 
7
 
9
 La recursión es una técnica muy utilizada en programación. Con esta técnica se resuelven problemas resolviendo un problema similar pero para casos más pequeños. Podemos construir conjuntos de objetos o procesos utilizando *reglas recursivas* y *valores iniciales*. Las *funciones recursivas* son funciones que se auto-invocan, utilizando cada vez conjuntos o elementos más pequeños,  hasta llegar a un punto en donde se utiliza la condición inicial en lugar de auto-invocarse. En esta experiencia de laboratorio practicarás la definición e implementación de funciones recursivas para revolver una imagen y hacerla incomprensible.
8
 La recursión es una técnica muy utilizada en programación. Con esta técnica se resuelven problemas resolviendo un problema similar pero para casos más pequeños. Podemos construir conjuntos de objetos o procesos utilizando *reglas recursivas* y *valores iniciales*. Las *funciones recursivas* son funciones que se auto-invocan, utilizando cada vez conjuntos o elementos más pequeños,  hasta llegar a un punto en donde se utiliza la condición inicial en lugar de auto-invocarse. En esta experiencia de laboratorio practicarás la definición e implementación de funciones recursivas para revolver una imagen y hacerla incomprensible.
10
 
9
 
11
-## Objetivos:
10
+##Objetivos:
12
 
11
 
13
 1. Definir e implementar funciones recursivas.
12
 1. Definir e implementar funciones recursivas.
14
 2. Practicar el procesamiento de imágenes.
13
 2. Practicar el procesamiento de imágenes.
15
 3. Practicar el uso de estructuras de control y repetición.
14
 3. Practicar el uso de estructuras de control y repetición.
16
 
15
 
17
 
16
 
18
-## Pre-Lab:
17
+##Pre-Lab:
19
 
18
 
20
 Antes de llegar al laboratorio debes haber:
19
 Antes de llegar al laboratorio debes haber:
21
 
20
 
25
 
24
 
26
 3. Haber tomado el quiz Pre-Lab que se encuentra en Moodle.
25
 3. Haber tomado el quiz Pre-Lab que se encuentra en Moodle.
27
 
26
 
28
-
29
 ---
27
 ---
30
 
28
 
31
 ---
29
 ---
32
 
30
 
33
 
31
 
34
-## Revolver imágenes digitalmente
32
+
33
+##Revolver imágenes digitalmente
35
 
34
 
36
 Al revolver las imágenes digitalmente reordenamos los píxeles de las imágenes para romper la relación entre píxeles adyacentes y así hacer que la imagen original sea incomprensible. Esta técnica se usa mucho para cifrar imágenes y esconder datos. [1]
35
 Al revolver las imágenes digitalmente reordenamos los píxeles de las imágenes para romper la relación entre píxeles adyacentes y así hacer que la imagen original sea incomprensible. Esta técnica se usa mucho para cifrar imágenes y esconder datos. [1]
37
 
36
 
114
 ---
113
 ---
115
 
114
 
116
 
115
 
117
-## Funciones adicionales provistas en el proyecto
116
+##Funciones adicionales provistas en el proyecto
118
 
117
 
119
 El proyecto en el que trabajarás hoy contiene la función `cropSwap` que implementa la funcionalidad de intercambiar los píxeles contenidos en dos rectángulos congruentes dentro de una imagen. Su prototipo es:
118
 El proyecto en el que trabajarás hoy contiene la función `cropSwap` que implementa la funcionalidad de intercambiar los píxeles contenidos en dos rectángulos congruentes dentro de una imagen. Su prototipo es:
120
 
119
 
123
 ```
122
 ```
124
 
123
 
125
 Sus parámetros son:
124
 Sus parámetros son:
126
-`img`: referencia a la imagen que se desea modificar (un objeto de clase `QImage`)
127
-`x0`, `y0`,`x0`, `y0`: coordenadas de las esquinas superior izquierda del los rectángulos.
128
-`width`, `height`: ancho y altura (en píxeles) de los rectángulos.
125
+* `img`: referencia a la imagen que se desea modificar (un objeto de clase `QImage`)
126
+* `x0`, `y0`,`x0`, `y0`: coordenadas de las esquinas superior izquierda del los rectángulos.
127
+* `width`, `height`: ancho y altura (en píxeles) de los rectángulos.
129
 
128
 
130
 Por ejemplo, si deseamos intercambiar los píxeles de la mitad superior e inferior de una imagen *P* de ancho 100 y alto 150, invocamos la función así:
129
 Por ejemplo, si deseamos intercambiar los píxeles de la mitad superior e inferior de una imagen *P* de ancho 100 y alto 150, invocamos la función así:
131
 
130
 
140
 
139
 
141
 
140
 
142
 
141
 
143
-## Sesión de laboratorio:
142
+##Sesión de laboratorio:
144
 
143
 
145
 
144
 
146
 El proyecto `ImageScrambler` contiene el esqueleto de una aplicación para revolver y "des-revolver" imágenes. En la experiencia de laboratorio de hoy trabajarás con el archivo `Filter.cpp` para completar la aplicación.
145
 El proyecto `ImageScrambler` contiene el esqueleto de una aplicación para revolver y "des-revolver" imágenes. En la experiencia de laboratorio de hoy trabajarás con el archivo `Filter.cpp` para completar la aplicación.
148
 
147
 
149
 
148
 
150
 
149
 
151
-### Ejercicio 1: Pseudocódigo de la función para revolver
150
+###Ejercicio 1: Pseudocódigo de la función para revolver
152
 
151
 
153
 Escribe el pseudocódigo para expresar el algoritmo de revolver descrito arriba como una función recursiva.
152
 Escribe el pseudocódigo para expresar el algoritmo de revolver descrito arriba como una función recursiva.
154
 
153
 
155
 
154
 
156
 
155
 
157
-### Ejercicio 2: Función recursiva para revolver la imagen
156
+###Ejercicio 2: Función recursiva para revolver la imagen
158
 
157
 
159
-#### Instrucciones
158
+####Instrucciones
160
 
159
 
161
-1. Carga a QtCreator el proyecto `ImageScrambler`  haciendo doble "click" en el archivo `ImageScrambler.pro` en el directorio `Documents/eip/Recursion-ImageScrambler` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/recursion-imagescrambler` para descargar la carpeta `Recursion-ImageScrambler` a tu computadora.
160
+1) Carga a QtCreator el proyecto `ImageScrambler`  haciendo doble "click" en el archivo `ImageScrambler.pro` en el directorio `Documents/eip/Recursion-ImageScrambler` de tu computadora. También puedes ir a `http://bitbucket.org/eip-uprrp/recursion-imagescrambler` para descargar la carpeta `Recursion-ImageScrambler` a tu computadora.
162
 
161
 
163
-2. El código que te proveemos crea la interfaz de la Figura 9.
162
+2) El código que te proveemos crea la interfaz de la Figura 9.
164
 
163
 
165
-    ---
164
+---
166
 
165
 
167
-    ![figure9.png](images/figure9.png)
166
+![figure9.png](images/figure9.png)
168
 
167
 
169
-    **Figura 9.** Interfaz del proyecto `Image Scrambler`.
168
+**Figura 9.** Interfaz del proyecto `Image Scrambler`.
170
 
169
 
171
-    ---
170
+---
172
 
171
 
173
-    El botón que dice `Scramble Image` se programó para que invoque una función llamada `ScrambleFilter`.
172
+El botón que dice `Scramble Image` se programó para que invoque una función llamada `ScrambleFilter`. 
174
 
173
 
175
-3. Completa la función `ScrambleFilter` contenida en el archivo `Filter.cpp` de modo que implemente el algoritmo recursivo de revolver imágenes. La función tiene el siguiente formato:
174
+3) Completa la función `ScrambleFilter` contenida en el archivo `Filter.cpp` de modo que implemente el algoritmo recursivo de revolver imágenes. La función tiene el siguiente formato:
176
 
175
 
177
  ```cpp
176
  ```cpp
178
 QImage ImageScrambler::ScrambleFilter(QImage image, int N, int sx, int sy, int width, int height);
177
 QImage ImageScrambler::ScrambleFilter(QImage image, int N, int sx, int sy, int width, int height);
179
-```
178
+   	 ```
179
+
180
 
180
 
181
-4. Baja la imagen contenida en http://i.imgur.com/ZiJ61Gk.png para que valides la función que implementaste.
181
+4) Baja la imagen contenida en http://i.imgur.com/ZiJ61Gk.png para que valides la función que implementaste.
182
 
182
 
183
 ---
183
 ---
184
 
184
 
205
 [2] Dalhoum, Abdel Latif Abu, et al. "Digital Image Scrambling Using 2 D Cellular Automata." IEEE MultiMedia 19.4 (2012): 28-36.
205
 [2] Dalhoum, Abdel Latif Abu, et al. "Digital Image Scrambling Using 2 D Cellular Automata." IEEE MultiMedia 19.4 (2012): 28-36.
206
 
206
 
207
 [3] http://www.instructables.com/id/Python-Programming-recursion/
207
 [3] http://www.instructables.com/id/Python-Programming-recursion/
208
-
209
----
210
-
211
----
212
-
213
----
214
-