-
En esta sección, vamos a agregar lo que se denominan expresiones al código que tenemos
-
disponible. Y eso es como la última pieza que necesitábamos para comenzar a escribir, tú sabes,
-
código de manipulación de imagen un poco realista.
Y, en particular por el final de esta
-
sección jugaremos con rompecabezas que se basan en imágenes así que, eso será un poco divertido.
-
Así que, hemos escrito código como esto muchas veces. Entonces, aquí dice . Nosotros
-
tenemos un número, 40 o 100 o 250 o lo que sea y está en el código.
-
Resulta que en su lugar puedes escribir de esta manera. Entonces aquí dice . Y el
-
11 + 31 aquí, eso se llama una expresión. Y básicamente, en lugar de un
-
número fijo que se conoce de antemano, podemos poner una pequeña, una pequeña
-
expresión aritmética. Así que en este caso,11 + 31, es un pequeño problema. La forma en que esto funciona
-
es que, cuando el computador se ejecuta, cuando llega a esta línea. Lo primero que
-
va a hacer, es, se dice que va a evaluar la expresión.
Por lo que sólo escoge la
-
expresión, y dice bien. Bien, tengo que averiguar qué número se trata. En
-
este caso, sólo hace la adición, por lo tanto, 11 + 3, es 42. Así que una vez la
-
expresión ha sido evaluada a un número 42, el código puede continuar,
-
y sólo tiene que utilizar ese número. Así pues, en efecto, esto sólo imprime 42. Y así en cualquier lugar
-
del código donde habríamos tenido un número,
como 0 o 255 o 100 o algo
-
en su lugar vamos a ser capaces de poner pequeñas expresiones aritméticas a efectos de incorporar un
-
poco de computación para calcular qué número queremos que utilice. Eso nos
-
va a permitir resolver mejor los problemas. Bien, no hemos hablado de eso por ahora, pero
-
el píxel tiene estas tres funciones adicionales.
Está y lo que
-
hace es, es una especie de reverso de .
Recupera el número del
-
píxel. Así que hay algún valor rojo; 0 o 100 o algo.
Esto lo recupera.
-
Y están también y .
Así que va a ser muy
-
natural utilizar estos en expresiones para meterse con los valores RGB de un píxel. Así que
-
supongamos que lo que quiero hacer es doblar el valor rojo de un píxel, por lo que si es 50 quisiera
-
hacerlo un 100 y si es un 100 quiero hacerla un 200 o lo que sea. Así que aquí hay algo de código
-
que hace eso por lo que voy a pasar esto y esta idea de hacer un relativo
-
cambio a un píxel es cambio que usted sabe lo triple o algo parecido
-
ese,que va a ser una forma mucho más realista para hacer frente a los valores RGB
-
de los pixeles. Ahora veamos lo que hace este código. Entonces esta cita es correcta.
-
Dobla el valor rojo de un píxel. Así que lo que la primera línea hace, es, llama a .
-
Así se va a recuperar el número fuera.
Y vamos a decir, en este
-
caso, que el valor rojo es 50. Así, , va a recuperar el 50.
-
Y entonces, aquí, estamos utilizando el signo igual de la manera que hacíamos antes, para
-
almacenar ese número en una variable. Voy a, voy a llamarla "old" (viejo), por el, el antiguo
-
valor. Así que, básicamente, esto sólo almacena 50 en "old". Así entonces, la siguiente línea dice
-
. Así que aquí, estoy usando la expresión. Y recuerda, la
-
manera en que funciona es, cuando llega a esta línea, la primer cosa que va a hacer
-
es evaluar la expresión. Por lo que va a mirar "old" multiplicado por dos. "Old", recuerda tiene
-
almacenado 50. Así que, básicamente, esto dice 50 veces dos, se va a evaluar eso, devolverá 100.
-
Por lo tanto evalúa la expresión para llegar a 100.
Y ahora que tiene
-
ese valor, entonces puede seguir adelante y ejecutar el código. Y eso es lo que dice ,
-
esencialmente 100. Así que si piensas a través de toda la secuencia, básicamente esto
-
saca el 50, multiplica por dos para obtener 100 y almacena eso de nuevo.
-
Entonces en efecto, se multiplica por dos. Ahora. En realidad esta es la manera en que vamos a escribirlo.
-
Todo esto se puede condensar a sólo una línea porque, realmente esa,
-
esa variable "old" de ahí, no estaba añadiendo mucho.
Sólo fue como una
-
cosa temporal. Y así que imaginemos ese mismo caso de píxel donde el
-
valor rojo es 50, y yo sólo voy a ejecutar esto.
Sólo lo he condensado a una línea.
-
Así, imaginemos este código ejecutándose.
Entonces, tengo un píxel realmente, aquí lo
-
tengo. Píxel con rojo de 50 y voy a ejecutar esta línea.
Así que la primera cosa
-
que va a hacer es darse cuenta que hay una expresión aquí,
-
dos veces. Así, se va a evaluar esa expresión. Así que
-
vas a ir a buscar lo que es actualmente el valor rojo. Digamos 50. Por lo que dirá,
-
es el misma matemáticas que teníamos antes, 50 veces 2. Eso es 100. Y entonces con
-
ese valor 100, esencialmente va a llamar de 100 para poner eso de nuevo.
-
Así que funciona como la misma dinámica por la que pasamos. Por lo que obtiene el
-
valor, multiplica por dos y lo pone de nuevo.
O, en efecto
-
se duplica el valor rojo. Así que voy a hacer un montón de ejemplos que siguen, con este patrón.
-
Así que lo vamos a ver. Como voy a empezar a usar esto dentro de bucles
-
como anteriormente habíamos hecho le sabemos decir cero o 250 tuvimos algunos número fijo pero ahora
-
vamos a escribir código y éste es el ejemplo que acabo de hacer. Código como este donde
-
vamos a cambiar el valor rojo basado en lo que era el valor rojo antes. Y entonces
-
la dinámica es, vamos a tener, ya sabes, muy a menudo vamos a decir y entonces
-
en el paréntesis vamos a llamar a y luego cierta aritmética. Por lo tanto
-
en este caso, esta línea duplica el valor rojo, o en última instancia, esta línea llama a
-
de 0.5 veces. Entonces está tomando el valor viejo
-
y multiplicarlo 0.5 veces o esencialmente dividir por dos,
por eso va a
-
hacerlo más pequeño y, a continuación, colocarlo de nuevo.
Así,eso es todo, seguiremos
-
ese patrón, un montón de veces. Así que permítanme llegar a un ejemplo real, aquí. Supongamos que yo,
-
yo voy a tomar la imagen de la flor.
Y digamos que quiero que se vea
-
más naranja. Por lo mi estrategia va a ser, bueno, vamos a cambiar el valor de verde. Vamos a
-
apenas bajar el verde. Y así, matemáticamente, voy a decir, vamos a
-
cambiar el verde para que este al 75% de lo que era. Ahora, en este ejemplo,
-
realmente he comenzado la página con ningún código en ella. Por lo que voy a escribirlo ahora.
-
Así digo píxel, por lo tanto,
si quiero cambiar el verde al 75% de
-
lo que era. Y esto es, sabes, alguno
del ejemplo que mostré. Diré
-
. También puedes escribir esto fuera [inaudible] entones, quiero llamar a
-
y quiero poner aquí algún tipo de expresión, la quiero
-
para calcular un número que quiero devolver para el valor verde. Por lo que el patrón
-
que voy a usar aquí es , voy a obtener el valor antiguo y
-
entonces puedo, tú sabes, multiplicar tantas veces.
En este caso multiplicar 0.75
-
veces. Así voy cambiarlo a tres cuartas partes de lo que era. Así que vamos
-
a probar eso. Ah, vale. Entonces hace que sea, si recuerdan era
-
como amarillo. Realmente si pongo 1.0 aquí,
no podemos hacer ningún cambio. Bueno, eso era
-
cuando era agradable y amarillo. Entonces aquí esta tu 0.75 de nuevo.
-
Entonces tenemos un poco más de naranja.
Debo decir, para estos ejemplos voy a,
-
sólo voy a tomar el tiempo para escribir el código. Y puedes hacerlo si lo deseas
-
al volver sobre esto mismo. Hay un pequeño botón de "mostrar solución" aquí abajo. Por lo tanto,
-
si vienes a la revisión posterior, el código de la solución está disponible. Pero, solo
-
sentía como practicar propósitos. Es mejor comenzar con una pantalla en blanco. Y entonces
-
realmente pasar por el proceso de escribir el código. Por lo tanto, todos estos ejemplos seguirán
-
ese patrón. Vamos a intentar algo un poco más difícil. Entonces esto dice
-
poner el rojo, verde y azul cada uno a 0.75 de sus valores originales y, a continuación, intentaremos
-
con 0.5 y 0.25. ¿Qué voy a hacer?. Una GRAN tradición de ciencias de la computación, es en lugar
-
de escribir el código absolutamente desde el principio, yo voy a copiarlo, el que hice
-
antes y sólo voy a pegarlo. Voy a hacer tres copias del mismo, y luego lo arreglamos
-
para hacer lo que quiera aquí. Está bien, así que normalmente siempre voy en orden, rojo, verde, azul.
-
Así que voy a decir para y, lo que hice decir a 0.75. Bueno, por lo que
-
eso, eso es una buena. Y, a continuación, decimos para obtener verde 0.75 veces.
-
Y entonces, haremos azul al final. Así , . Puedes ver una especie de
-
patrón aquí del y siendo combinados.
Eso está muy bien. Es un muy
-
factible patrón. Así que voy a ejecutarlo así.
Sí, es un poco sutil pero lo
-
que ha hecho, es tomar la imagen original y hacerla un poco más oscura. Porque si
-
piensas sobre eso, multiplicar por 0.75 estamos como moviendo todo hacia
-
cero y evidentemente cero, cero es negro puro, por lo que nosotros estamos como comprimiendo así.
-
Así que vamos a intentar hacerlo un poco extremo. Así, podrá multiplicarse 0.5 veces y
-
voy a ejecutar eso. Oh, es un poco más oscuro.
Y si casi por 0.25 tan sólo un cuarto de
-
los valores originales. Ah, entonces sí, entonces se está haciendo bastante oscuro. Por lo tanto, esto demuestra
-
un realista e interesante uso de este tipo de idea de escala de usar
-
combinado con y multiplicarlo tantas veces para jugar
-
con los valores. Escalar hacia arriba o escalar hacia abajo. Muy bien. Así que hay un,
-
un tercer problema aquí, yo voy a saltarlo. Este es sólo para práctica extra,
-
si quieres ven y prueba este y tiene un, tiene un código de solución
-
también. Así que lo que realmente quiero hacer,
es trabajar uno de estos 5-10-20
-
puzzles(rompecabezas). Así que la idea con el rompecabezas 5-10-20 es que hubo alguna
-
imagen de una flor, pieza de fruta o algo y se ha modificado
-
y se ha modificado de manera que los valores rojos, verdes y azules han sido todos divididos por
-
cinco, diez o veinte. Por lo que los valores son mucho más pequeños, las imágenes podrían ser
-
realmente oscuras y el desafío, es multiplicar los valores rojos, verdes y azules
-
por cinco, diez o veinte.
Esencialmente "deshacer" el oscurecimiento
-
para de algún modo regresar la imagen. Y así. Así como esto solo [inaudible] sólo desciende a algunos
-
experimentando y jugando un poco para tratar de averiguar cómo obtener la
-
imagen de nuevo. Entonces el número cinco se utiliza una vez, el número diez una vez y el
-
número veinte se utiliza una vez, así que básicamente sólo tienes que averiguar cuál
-
va con qué color. Y debo decir, sabes hay sólo seis posibles formas de
-
tener cinco diez y veinte por lo que no hay realmente mucho por lo que pasar. La
-
forma en que pienso es bueno quizas puedes imaginar los cinco primero es rojo y
-
así está bien, cinco es la primera y entonces es bien cinco, diez, veinte. O
-
cinco, veinte, diez. Así que si cinco es la primera hay sólo dos posibilidades y entonces
-
Asimismo si diez primeros hay sólo dos posibilidades y si veinte es la primera
-
hay es sólo dos posibilidades, así que es una forma puede tipo de organización
-
mientras tu buscas a través de este, bien permítanme permítanme volver aquí. Como ya he dicho
-
antes y agarrar, una copia de mi código así no empezamos con nada. Bueno, en
-
este caso lo que tenemos es un, un plátano.
En realidad, aquí, voy a, voy a comentar estas]
-
líneas fuera por un segundo, por lo que sólo podemos ver lo que ve la imagen con nada. Por lo tanto
-
existe la imagen de rompecabezas. Y lo que muestra-, te voy a decir. Hay una banana
-
amarilla y está sobre un fondo de ladrillo rojo oscuro. Y entre los ladrillos rojos,
-
hay un poco de musgo verde que se puede ver. Así que si se fija la imagen, nos
-
debería poder ver todas esas cosas.
Para corregir la imagen. Lo que quiero hacer aquí
-
es multiplicar. Permite, sólo me va a... Voy a empezar sólo con cinco, diez, veinte como
-
estos. Así que vamos a decir, bien vamos a adivinar que el rojo debe ser multiplicado por cinco,
-
necesita ser multiplicado por diez el verde y el azul tiene que ser multiplicado por
-
veinte. Su sólo una suposición. Por tanto, si hago eso. Mm-hm, bien, bien, que
-
claramente equivocada, verdad? El banano no se ve muy bien. Y los ladrillos tienen esto
-
elenco de azul, por lo no es bueno. Así que voy, me quedo con la suposición de que
-
los cinco es el primero, aunque. Y voy a tratar otra permutación. Muy bien, así que, bien
-
tal vez es cinco, veinte, diez.
Así lo probaré así. Ah, y eso es peor.
-
[risa] >> Bien. Por lo tanto, no creo que los cinco es el primero. Cuando traté de las dos maneras
-
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
-
Sólo estoy escala estos. Ew, hm. ¿Bueno, quiero decir que creo que estamos recibiendo, derecho? Quiero
-
decir el plátano parece bastante bueno, pero obviamente son los ladrillos, que sabemos no es
-
purpura. [risa] Se supone que es rojo. Así que permítanme intentar, estoy
-
va a intentar dejando los cinco en el medio y sólo poniendo el 20 primero. Veinte,
-
cinco, diez, vamos a intentar que. Allí lo tenemos. Existe la banana, se ve bonita y
-
amarilla. Puede ver los ladrillos tienen este color rojo oscuro. Y, a continuación, incluso un poco
-
de musgo verde aquí. Eso es tranquilizador. Así que voy a acercar esto,
-
para poder mostrarte. [inaudible] algunas, algunas de las cualidades de la misma. Entonces parcialmente esta,
-
esta el ladrillo. Y el musgo y los plátanos se ven bien. Sólo hay una
-
cosa menor, pero usted verá hay tipo de un, consulte hay una especie de este banding horizontal
-
en el plátano y está bien es que es el aspecto de la solución
-
cuando tu la haces rápidamente. Eso está sucediendo porque cuando el rojo, verde y azul cuando
-
fueron divididos por este número por diez o quizás veinte todos aquellos valores que
-
normalmente van a cero a cincuenta cinco que se comprimen hasta que quizás sólo van
-
cero a cero a veinte cuatro o doce. Y como resultado... Porque eran
-
comprimido a ese rango, hubo pocos matices de amarillo disponible,
-
Cuando se fue comprimida abajo como ese. Y aun cuando ampliamos lo copia de seguridad, estamos
-
sigue atascado con sólo esos pocos matices. Eso es lo que estamos viendo en estos
-
banda horizontal, existe, hubo pocos tonos diferentes
-
amarillo. Y eso no se ha podido capturar.
Voy a ampliar un poco. Es incapaz de
-
captura. Estudios gradaciones reales, los que se desee. Y eso es sólo una especie de,
-
un artefacto de la forma, el que trabaja este ejercicio. Muy bien. Así, los ejercicios que
-
siguen en esta sección son realmente poco más de estos cinco, diez, veinte puzzles. Por lo tanto,
-
es algo que debes chequear.