A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Una imagen es una matriz

10/18
Recursos

Aportes 18

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Al minuto 6:55 aprox., afirma que al haber dividido entre 10 la matriz 鈥榠magen_mat鈥 cambiamos los colores de la imagen. Eso ocurre porque no le pasamos el par谩metro cmap=鈥榞ray鈥.

Hice el experimento y si no le pasamos el par谩metro cmap=鈥榞ray鈥 la primera vez que reconstruimos la imagen desde 鈥榤atriz_mat鈥, y me muestra exactamente la misma imagen en ambas situaciones. Concluyo de eso que lo que afirma es falso, y que los colores no cambian, al menos en el contexto en el que vimos.

Soy relativamente nuevo en el tema, as铆 que no sabr铆a dar una explicaci贸n a esto. Lo que conjeturo es que la imagen se ve as铆, sin el par谩metro cmap=鈥榞ray鈥, por el filtro 鈥榖and=0鈥 que pusimos algunas l铆neas de c贸digo antes, cuando definimos la variable 鈥榠magen_mat鈥. Lo que le铆 al respecto es que el par谩metro band filtra la banda de color RGB (entonces 鈥0鈥 para R).

驴Alguien sabr铆a explicar qu茅 est谩 pasando en realidad?

Realizando la carga de imagen desde google colab

Cuando leemos una imagen usando la biblioteca PIL obtenemos la instancia de un objeto de la clase Image. Este objeto viene con unos m茅todos asociados que nos permiten la manipulaci贸n de la imagen. En este caso usamos el m茅todo convert que nos permite transformar una imagen de un modo a otro, estos modos son RGB, RGBA, CMYk, etc. (aqu铆 dejo documentaci贸n sobre los modos disponibles para esta funci贸n). Aqu铆 se us贸 el modo 鈥楲A鈥 que da como resultado una imagen con 2 canales, uno representando la escala de grises y otro representando el canal de transparencia. Ambos canales est谩n representados con 8 bits, lo cual quiere decir que sus valores pueden ir entre 0 y 255.

Esta transformaci贸n fue necesaria ya que aunque la imagen que vemos desde un principio est谩 en escala de grises, en realidad al ser le铆da desde un archivo JPG tiene los 3 canales RGB. Esto se puede comprobar con el m茅todo getbands().



Despu茅s de la transformaci贸n vemos que esta cantidad de canales ha cambiado. Los tres canales (RGB) se han mapeado a uno solo (L) representando los diferentes tonos de grises en la imagen. El canal de transparencia no es 煤lti al haber obtenido la imagen desde un archivo JPG.



Otro m茅todo que usamos fue getdata. Este m茅todo nos entrega un objeto que contiene la secuencia de valores que componen la imagen. Cuando no se especifica un canal (band) el m茅todo devuelve los valores de todos los canales de la imagen. Por ejemplo, para la imagen original cada elemento de la secuencia tendr谩 una tupla con 3 valores, los 3 valores de cada canal. En total habr谩 12763008 valores dado que la imagen tiene un tama帽o de 3693x3456.

Algo importante es que esta secuencia de valores tiene un tipo de dato definido dentro de la biblioteca PIL, por lo cual para manipularlo de forma convencional es necesario transformarlo a una lista de python usando el m茅todo list().





El resultado muestra que el canal de transparencia siempre tiene un valor de 255 (por haber sido le铆do desde JPG). Esto se pudo haber evitado si hubi茅ramos usado s贸lo el modo 鈥楲鈥. Finalmente hay que aclarar que en el c贸digo se usa el par谩metro band=0 justamente para obtener s贸lo los valores del canal de grises.

Im谩genes como matrices
Podemos ver a las im谩genes como un conjunto de matrices que contienen los valores de los pixeles de una imagen (valores de RGB) donde las bandas se refieren a cada una de estas matrices

Hola buenas, que es lo que significa band = 0 en el codigo?

Muchas gracias

En caso de que hayan guardado la imagen en otra sub carpeta, no olviden poner los dos puntos al inicio:

"..//imagenes/imagen_ejemplo_frida_bredesen.jpg"

Normalizar es uno de los pasos m谩s importantes al trabajar con datos en ML

Muy buena clase!

Entiendo lo que quiso transmitir . Sin embargo eso de la escala de grises nos por que no hizo cambiar la imagen . Supongo que debo revisar la documentaci贸n de la librer铆a matplotlib .

  • Al dividir los valores de la imagen, se ve un cambio en la escala de los colores, pero si se hace leyendo en escala de grises, se obtiene la imagen original en escala de grises, eso quiere decir que lee la relaci贸n entre los pixeles, no es literal en la lectura de cada pixel.

Cuando importamos una imagen a una matriz usando np.array(list(imagen.getdata(band=0)), float) obtenemos:
un vector

隆Qu茅 excelente clase! Bastante pr谩ctico la optimizaci贸n en ML

En esta clase aprendi algo que nunca se me olvidara, excelente.

Esta clase fue muy buena

Hay cosas que no se explican bien o no se explican en absoluto, como el uso de varios parametros dentro de los metodos usados de python 馃槙

Excelente clase muy buenas recomendaciones