0:00:00.000,0:00:04.853 En esta sección, vamos a agregar lo que se denominan expresiones al código que tenemos 0:00:04.853,0:00:09.590 disponible. Y eso es como la última pieza que necesitábamos para comenzar a escribir, tú sabes, 0:00:09.590,0:00:14.093 código de manipulación de imagen un poco realista.[br]Y, en particular por el final de esta 0:00:14.093,0:00:19.006 sección jugaremos con rompecabezas que se basan en imágenes así que, eso será un poco divertido. 0:00:19.006,0:00:23.860 Así que, hemos escrito código como esto muchas veces. Entonces, aquí dice . Nosotros 0:00:23.860,0:00:28.246 tenemos un número, 40 o 100 o 250 o lo que sea y está en el código. 0:00:28.246,0:00:32.866 Resulta que en su lugar puedes escribir de esta manera. Entonces aquí dice . Y el 0:00:32.866,0:00:37.408 11 + 31 aquí, eso se llama una expresión. Y básicamente, en lugar de un 0:00:37.408,0:00:42.872 número fijo que se conoce de antemano, podemos poner una pequeña, una pequeña 0:00:45.440,0:00:48.007 expresión aritmética. Así que en este caso,11 + 31, es un pequeño problema. La forma en que esto funciona 0:00:48.007,0:00:52.919 es que, cuando el computador se ejecuta, cuando llega a esta línea. Lo primero que 0:00:52.919,0:00:57.058 va a hacer, es, se dice que va a evaluar la expresión. [br]Por lo que sólo escoge la 0:00:57.058,0:01:01.364 expresión, y dice bien. Bien, tengo que averiguar qué número se trata. En 0:01:01.364,0:01:05.172 este caso, sólo hace la adición, por lo tanto, 11 + 3, es 42. Así que una vez la 0:01:05.172,0:01:09.478 expresión ha sido evaluada a un número 42, el código puede continuar, 0:01:09.478,0:01:13.837 y sólo tiene que utilizar ese número. Así pues, en efecto, esto sólo imprime 42. Y así en cualquier lugar 0:01:13.837,0:01:18.191 del código donde habríamos tenido un número, [br]como 0 o 255 o 100 o algo 0:01:18.356,0:01:23.041 en su lugar vamos a ser capaces de poner pequeñas expresiones aritméticas a efectos de incorporar un 0:01:23.041,0:01:27.609 poco de computación para calcular qué número queremos que utilice. Eso nos 0:01:27.609,0:01:33.157 va a permitir resolver mejor los problemas. Bien, no hemos hablado de eso por ahora, pero 0:01:33.157,0:01:38.894 el píxel tiene estas tres funciones adicionales.[br]Está y lo que 0:01:38.894,0:01:43.811 hace es, es una especie de reverso de .[br]Recupera el número del 0:01:43.811,0:01:49.043 píxel. Así que hay algún valor rojo; 0 o 100 o algo. [br]Esto lo recupera. 0:01:49.043,0:01:54.150 Y están también y .[br]Así que va a ser muy 0:01:54.150,0:01:59.217 natural utilizar estos en expresiones para meterse con los valores RGB de un píxel. Así que 0:01:59.217,0:02:04.357 supongamos que lo que quiero hacer es doblar el valor rojo de un píxel, por lo que si es 50 quisiera 0:02:04.357,0:02:08.846 hacerlo un 100 y si es un 100 quiero hacerla un 200 o lo que sea. Así que aquí hay algo de código 0:02:08.846,0:02:13.390 que hace eso por lo que voy a pasar esto y esta idea de hacer un relativo 0:02:13.390,0:02:18.103 cambio a un píxel es cambio que usted sabe lo triple o algo parecido 0:02:18.103,0:02:22.479 ese,que va a ser una forma mucho más realista para hacer frente a los valores RGB 0:02:22.479,0:02:27.085 de los pixeles. Ahora veamos lo que hace este código. Entonces esta cita es correcta. 0:02:27.085,0:02:31.672 Dobla el valor rojo de un píxel. Así que lo que la primera línea hace, es, llama a . 0:02:31.672,0:02:36.246 Así se va a recuperar el número fuera. [br]Y vamos a decir, en este 0:02:36.246,0:02:40.646 caso, que el valor rojo es 50. Así, , va a recuperar el 50. 0:02:40.646,0:02:45.046 Y entonces, aquí, estamos utilizando el signo igual de la manera que hacíamos antes, para 0:02:45.046,0:02:49.446 almacenar ese número en una variable. Voy a, voy a llamarla "old" (viejo), por el, el antiguo 0:02:49.446,0:02:54.194 valor. Así que, básicamente, esto sólo almacena 50 en "old". Así entonces, la siguiente línea dice 0:02:54.194,0:02:58.481 . Así que aquí, estoy usando la expresión. Y recuerda, la 0:02:58.481,0:03:02.635 manera en que funciona es, cuando llega a esta línea, la primer cosa que va a hacer 0:03:02.635,0:03:06.841 es evaluar la expresión. Por lo que va a mirar "old" multiplicado por dos. "Old", recuerda tiene 0:03:06.841,0:03:10.790 almacenado 50. Así que, básicamente, esto dice 50 veces dos, se va a evaluar eso, devolverá 100. 0:03:10.790,0:03:14.944 Por lo tanto evalúa la expresión para llegar a 100.[br]Y ahora que tiene 0:03:14.944,0:03:18.944 ese valor, entonces puede seguir adelante y ejecutar el código. Y eso es lo que dice , 0:03:18.944,0:03:23.995 esencialmente 100. Así que si piensas a través de toda la secuencia, básicamente esto 0:03:23.995,0:03:28.825 saca el 50, multiplica por dos para obtener 100 y almacena eso de nuevo. 0:03:28.825,0:03:35.152 Entonces en efecto, se multiplica por dos. Ahora. En realidad esta es la manera en que vamos a escribirlo. 0:03:35.152,0:03:39.212 Todo esto se puede condensar a sólo una línea porque, realmente esa, 0:03:39.212,0:03:42.907 esa variable "old" de ahí, no estaba añadiendo mucho. [br]Sólo fue como una 0:03:42.907,0:03:47.123 cosa temporal. Y así que imaginemos ese mismo caso de píxel donde el 0:03:47.123,0:03:51.235 valor rojo es 50, y yo sólo voy a ejecutar esto.[br]Sólo lo he condensado a una línea. 0:03:51.235,0:03:55.503 Así, imaginemos este código ejecutándose.[br]Entonces, tengo un píxel realmente, aquí lo 0:03:55.503,0:03:59.459 tengo. Píxel con rojo de 50 y voy a ejecutar esta línea. [br]Así que la primera cosa 0:03:59.459,0:04:03.831 que va a hacer es darse cuenta que hay una expresión aquí, 0:04:03.831,0:04:08.194 dos veces. Así, se va a evaluar esa expresión. Así que 0:04:08.194,0:04:12.652 vas a ir a buscar lo que es actualmente el valor rojo. Digamos 50. Por lo que dirá, 0:04:12.652,0:04:17.406 es el misma matemáticas que teníamos antes, 50 veces 2. Eso es 100. Y entonces con 0:04:17.406,0:04:22.161 ese valor 100, esencialmente va a llamar de 100 para poner eso de nuevo. 0:04:22.161,0:04:27.153 Así que funciona como la misma dinámica por la que pasamos. Por lo que obtiene el 0:04:27.153,0:04:31.964 valor, multiplica por dos y lo pone de nuevo.[br]O, en efecto 0:04:31.964,0:04:36.891 se duplica el valor rojo. Así que voy a hacer un montón de ejemplos que siguen, con este patrón. 0:04:36.891,0:04:44.265 Así que lo vamos a ver. Como voy a empezar a usar esto dentro de bucles 0:04:44.265,0:04:51.270 como anteriormente habíamos hecho le sabemos decir cero o 250 tuvimos algunos número fijo pero ahora 0:04:51.270,0:04:56.872 vamos a escribir código y éste es el ejemplo que acabo de hacer. Código como este donde 0:04:56.872,0:05:02.475 vamos a cambiar el valor rojo basado en lo que era el valor rojo antes. Y entonces 0:05:02.475,0:05:08.146 la dinámica es, vamos a tener, ya sabes, muy a menudo vamos a decir y entonces 0:05:08.146,0:05:13.680 en el paréntesis vamos a llamar a y luego cierta aritmética. Por lo tanto 0:05:13.680,0:05:18.966 en este caso, esta línea duplica el valor rojo, o en última instancia, esta línea llama a 0:05:18.966,0:05:23.795 de 0.5 veces. Entonces está tomando el valor viejo 0:05:23.795,0:05:28.318 y multiplicarlo 0.5 veces o esencialmente dividir por dos,[br]por eso va a 0:05:28.318,0:05:33.391 hacerlo más pequeño y, a continuación, colocarlo de nuevo.[br]Así,eso es todo, seguiremos 0:05:33.391,0:05:38.341 ese patrón, un montón de veces. Así que permítanme llegar a un ejemplo real, aquí. Supongamos que yo, 0:05:38.341,0:05:42.999 yo voy a tomar la imagen de la flor.[br]Y digamos que quiero que se vea 0:05:42.999,0:05:47.737 más naranja. Por lo mi estrategia va a ser, bueno, vamos a cambiar el valor de verde. Vamos a 0:05:47.737,0:05:51.756 apenas bajar el verde. Y así, matemáticamente, voy a decir, vamos a 0:05:51.756,0:05:55.654 cambiar el verde para que este al 75% de lo que era. Ahora, en este ejemplo, 0:05:55.834,0:06:00.573 realmente he comenzado la página con ningún código en ella. Por lo que voy a escribirlo ahora. 0:06:00.573,0:06:05.011 Así digo píxel, por lo tanto, [br]si quiero cambiar el verde al 75% de 0:06:05.011,0:06:09.570 lo que era. Y esto es, sabes, alguno[br]del ejemplo que mostré. Diré 0:06:09.570,0:06:14.189 . También puedes escribir esto fuera [inaudible] entones, quiero llamar a 0:06:14.189,0:06:19.123 y quiero poner aquí algún tipo de expresión, la quiero 0:06:19.123,0:06:23.551 para calcular un número que quiero devolver para el valor verde. Por lo que el patrón 0:06:23.551,0:06:28.204 que voy a usar aquí es , voy a obtener el valor antiguo y 0:06:28.204,0:06:32.689 entonces puedo, tú sabes, multiplicar tantas veces. [br]En este caso multiplicar 0.75 0:06:32.689,0:06:37.615 veces. Así voy cambiarlo a tres cuartas partes de lo que era. Así que vamos 0:06:37.615,0:06:42.818 a probar eso. Ah, vale. Entonces hace que sea, si recuerdan era 0:06:43.010,0:06:49.062 como amarillo. Realmente si pongo 1.0 aquí,[br]no podemos hacer ningún cambio. Bueno, eso era 0:06:49.062,0:06:53.830 cuando era agradable y amarillo. Entonces aquí esta tu 0.75 de nuevo. 0:06:53.830,0:06:57.867 Entonces tenemos un poco más de naranja.[br]Debo decir, para estos ejemplos voy a, 0:06:57.867,0:07:01.954 sólo voy a tomar el tiempo para escribir el código. Y puedes hacerlo si lo deseas 0:07:01.954,0:07:06.092 al volver sobre esto mismo. Hay un pequeño botón de "mostrar solución" aquí abajo. Por lo tanto, 0:07:06.243,0:07:09.977 si vienes a la revisión posterior, el código de la solución está disponible. Pero, solo 0:07:09.977,0:07:14.014 sentía como practicar propósitos. Es mejor comenzar con una pantalla en blanco. Y entonces 0:07:14.014,0:07:18.051 realmente pasar por el proceso de escribir el código. Por lo tanto, todos estos ejemplos seguirán 0:07:18.051,0:07:22.621 ese patrón. Vamos a intentar algo un poco más difícil. Entonces esto dice 0:07:22.882,0:07:29.753 poner el rojo, verde y azul cada uno a 0.75 de sus valores originales y, a continuación, intentaremos 0:07:30.014,0:07:37.171 con 0.5 y 0.25. ¿Qué voy a hacer?. Una GRAN tradición de ciencias de la computación, es en lugar 0:07:37.171,0:07:43.340 de escribir el código absolutamente desde el principio, yo voy a copiarlo, el que hice 0:07:43.340,0:07:49.665 antes y sólo voy a pegarlo. Voy a hacer tres copias del mismo, y luego lo arreglamos 0:07:49.665,0:07:56.067 para hacer lo que quiera aquí. Está bien, así que normalmente siempre voy en orden, rojo, verde, azul. 0:07:56.067,0:08:02.269 Así que voy a decir para y, lo que hice decir a 0.75. Bueno, por lo que 0:08:02.269,0:08:07.980 eso, eso es una buena. Y, a continuación, decimos para obtener verde 0.75 veces. 0:08:07.980,0:08:13.548 Y entonces, haremos azul al final. Así , . Puedes ver una especie de 0:08:13.548,0:08:18.903 patrón aquí del y siendo combinados. [br]Eso está muy bien. Es un muy 0:08:18.903,0:08:24.249 factible patrón. Así que voy a ejecutarlo así.[br]Sí, es un poco sutil pero lo 0:08:24.249,0:08:28.916 que ha hecho, es tomar la imagen original y hacerla un poco más oscura. Porque si 0:08:28.916,0:08:33.468 piensas sobre eso, multiplicar por 0.75 estamos como moviendo todo hacia 0:08:33.468,0:08:37.962 cero y evidentemente cero, cero es negro puro, por lo que nosotros estamos como comprimiendo así. 0:08:37.962,0:08:42.599 Así que vamos a intentar hacerlo un poco extremo. Así, podrá multiplicarse 0.5 veces y 0:08:42.599,0:08:48.095 voy a ejecutar eso. Oh, es un poco más oscuro.[br]Y si casi por 0.25 tan sólo un cuarto de 0:08:48.095,0:08:53.591 los valores originales. Ah, entonces sí, entonces se está haciendo bastante oscuro. Por lo tanto, esto demuestra 0:08:53.591,0:08:59.427 un realista e interesante uso de este tipo de idea de escala de usar 0:08:59.427,0:09:05.058 combinado con y multiplicarlo tantas veces para jugar 0:09:05.058,0:09:10.134 con los valores. Escalar hacia arriba o escalar hacia abajo. Muy bien. Así que hay un, 0:09:10.134,0:09:13.721 un tercer problema aquí, yo voy a saltarlo. Este es sólo para práctica extra, 0:09:13.721,0:09:17.548 si quieres ven y prueba este y tiene un, tiene un código de solución 0:09:17.548,0:09:21.960 también. Así que lo que realmente quiero hacer,[br]es trabajar uno de estos 5-10-20 0:09:21.960,0:09:27.560 puzzles(rompecabezas). Así que la idea con el rompecabezas 5-10-20 es que hubo alguna 0:09:27.560,0:09:33.378 imagen de una flor, pieza de fruta o algo y se ha modificado 0:09:33.378,0:09:39.268 y se ha modificado de manera que los valores rojos, verdes y azules han sido todos divididos por 0:09:39.268,0:09:44.868 cinco, diez o veinte. Por lo que los valores son mucho más pequeños, las imágenes podrían ser 0:09:44.868,0:09:50.016 realmente oscuras y el desafío, es multiplicar los valores rojos, verdes y azules 0:09:50.016,0:09:54.894 por cinco, diez o veinte.[br]Esencialmente "deshacer" el oscurecimiento 0:09:54.894,0:10:01.216 para de algún modo regresar la imagen. Y así. Así como esto solo [inaudible] sólo desciende a algunos 0:10:01.216,0:10:05.783 experimentando y jugando un poco para tratar de averiguar cómo obtener la 0:10:05.783,0:10:10.295 imagen de nuevo. Entonces el número cinco se utiliza una vez, el número diez una vez y el 0:10:10.295,0:10:14.587 número veinte se utiliza una vez, así que básicamente sólo tienes que averiguar cuál 0:10:14.587,0:10:19.264 va con qué color. Y debo decir, sabes hay sólo seis posibles formas de 0:10:19.264,0:10:23.721 tener cinco diez y veinte por lo que no hay realmente mucho por lo que pasar. La 0:10:23.721,0:10:28.508 forma en que pienso es bueno quizas puedes imaginar los cinco primero es rojo y 0:10:28.508,0:10:33.182 así está bien, cinco es la primera y entonces es bien cinco, diez, veinte. O 0:10:33.182,0:10:37.374 cinco, veinte, diez. Así que si cinco es la primera hay sólo dos posibilidades y entonces 0:10:37.374,0:10:40.778 Asimismo si diez primeros hay sólo dos posibilidades y si veinte es la primera 0:10:40.778,0:10:44.009 hay es sólo dos posibilidades, así que es una forma puede tipo de organización 0:10:44.009,0:10:48.781 mientras tu buscas a través de este, bien permítanme permítanme volver aquí. Como ya he dicho 0:10:48.781,0:10:55.588 antes y agarrar, una copia de mi código así no empezamos con nada. Bueno, en 0:10:55.588,0:11:00.888 este caso lo que tenemos es un, un plátano.[br]En realidad, aquí, voy a, voy a comentar estas] 0:11:00.888,0:11:06.066 líneas fuera por un segundo, por lo que sólo podemos ver lo que ve la imagen con nada. Por lo tanto 0:11:06.066,0:11:10.936 existe la imagen de rompecabezas. Y lo que muestra-, te voy a decir. Hay una banana 0:11:10.936,0:11:15.929 amarilla y está sobre un fondo de ladrillo rojo oscuro. Y entre los ladrillos rojos, 0:11:15.929,0:11:20.738 hay un poco de musgo verde que se puede ver. Así que si se fija la imagen, nos 0:11:20.738,0:11:26.287 debería poder ver todas esas cosas.[br]Para corregir la imagen. Lo que quiero hacer aquí 0:11:26.287,0:11:31.162 es multiplicar. Permite, sólo me va a... Voy a empezar sólo con cinco, diez, veinte como 0:11:31.162,0:11:36.294 estos. Así que vamos a decir, bien vamos a adivinar que el rojo debe ser multiplicado por cinco, 0:11:36.294,0:11:41.234 necesita ser multiplicado por diez el verde y el azul tiene que ser multiplicado por 0:11:41.234,0:11:45.501 veinte. Su sólo una suposición. Por tanto, si hago eso. Mm-hm, bien, bien, que 0:11:45.501,0:11:50.421 claramente equivocada, verdad? El banano no se ve muy bien. Y los ladrillos tienen esto 0:11:50.421,0:11:55.342 elenco de azul, por lo no es bueno. Así que voy, me quedo con la suposición de que 0:11:55.342,0:11:59.959 los cinco es el primero, aunque. Y voy a tratar otra permutación. Muy bien, así que, bien 0:11:59.959,0:12:05.618 tal vez es cinco, veinte, diez. [br]Así lo probaré así. Ah, y eso es peor. 0:12:05.618,0:12:11.343 [risa] >> Bien. Por lo tanto, no creo que los cinco es el primero. Cuando traté de las dos maneras 0:12:11.343,0:12:20.603 con los cinco primeros. Así que vamos a tratar de los diez primeros, así que voy a tratar de diez. 520. Bien, por lo que 0:12:20.603,0:12:26.014 Sólo estoy escala estos. Ew, hm. ¿Bueno, quiero decir que creo que estamos recibiendo, derecho? Quiero 0:12:26.014,0:12:31.493 decir el plátano parece bastante bueno, pero obviamente son los ladrillos, que sabemos no es 0:12:31.493,0:12:36.430 purpura. [risa] Se supone que es rojo. Así que permítanme intentar, estoy 0:12:36.430,0:12:41.976 va a intentar dejando los cinco en el medio y sólo poniendo el 20 primero. Veinte, 0:12:41.976,0:12:47.548 cinco, diez, vamos a intentar que. Allí lo tenemos. Existe la banana, se ve bonita y 0:12:47.548,0:12:53.158 amarilla. Puede ver los ladrillos tienen este color rojo oscuro. Y, a continuación, incluso un poco 0:12:53.158,0:12:58.492 de musgo verde aquí. Eso es tranquilizador. Así que voy a acercar esto, 0:12:58.492,0:13:03.750 para poder mostrarte. [inaudible] algunas, algunas de las cualidades de la misma. Entonces parcialmente esta, 0:13:03.750,0:13:08.288 esta el ladrillo. Y el musgo y los plátanos se ven bien. Sólo hay una 0:13:08.288,0:13:12.540 cosa menor, pero usted verá hay tipo de un, consulte hay una especie de este banding horizontal 0:13:12.540,0:13:17.453 en el plátano y está bien es que es el aspecto de la solución 0:13:17.453,0:13:22.695 cuando tu la haces rápidamente. Eso está sucediendo porque cuando el rojo, verde y azul cuando 0:13:22.695,0:13:27.875 fueron divididos por este número por diez o quizás veinte todos aquellos valores que 0:13:27.875,0:13:33.117 normalmente van a cero a cincuenta cinco que se comprimen hasta que quizás sólo van 0:13:33.117,0:13:37.737 cero a cero a veinte cuatro o doce. Y como resultado... Porque eran 0:13:37.737,0:13:41.850 comprimido a ese rango, hubo pocos matices de amarillo disponible, 0:13:41.850,0:13:45.963 Cuando se fue comprimida abajo como ese. Y aun cuando ampliamos lo copia de seguridad, estamos 0:13:45.963,0:13:50.077 sigue atascado con sólo esos pocos matices. Eso es lo que estamos viendo en estos 0:13:50.077,0:13:53.826 banda horizontal, existe, hubo pocos tonos diferentes 0:13:53.826,0:13:58.043 amarillo. Y eso no se ha podido capturar.[br]Voy a ampliar un poco. Es incapaz de 0:13:58.043,0:14:02.642 captura. Estudios gradaciones reales, los que se desee. Y eso es sólo una especie de, 0:14:02.642,0:14:07.485 un artefacto de la forma, el que trabaja este ejercicio. Muy bien. Así, los ejercicios que 0:14:07.485,0:14:11.998 siguen en esta sección son realmente poco más de estos cinco, diez, veinte puzzles. Por lo tanto, 0:14:11.998,0:14:13.980 es algo que debes chequear.