Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Apliquemos la descomposición SVD a una imagen

11/18
Recursos

Aportes 17

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Perdonen, pero me reí un montón cuando el prof dijo:
“Bueno, con un poco de imaginación”

Veo que muchos preguntan que es lo que hace band=0, y que hay un poco de confusión a la hora de explicarlo así que voy a intentar aclararlo.

imagen_gr = imagen.convert('LA')

Convierte la imagen RGB a escala de grises, pero entrega una imagen con 2 canales(o bandas) L y A:

L tiene la información de la imagen en escala de grises.

A tiene la información de transparencia de la imagen, como estamos trabajando con una imagen JPG todos los valores en esta matriz son 255.

imagen_mat = np.array(list(imagen_gr.getdata(band=0)),float)

Aquí estamos tomando la información del canal(banda) L, que es el que es la que tiene la información que nos importa, la información de la imagen en escala de grises.

Algunos se están confundiendo y piensan que solo esta tomando la banda de R de una imagen RGB, pq ese es el ejemplo que da la documentación, pero recuerden que aquí convertimos esa información a una imagen a escala de grises antes, si quieren pueden graficar la banda=1 que es la que da la información de la transparencia y se darán cuenta que solo es un canal sin información importante., lo pueden hacer con el siguiente código.

imagen_gr = imagen.convert('LA')
imagen_A = np.array(list(imagen_gr.getdata(band=1)),float)
imagen_A.shape = (imagen_gr.size[1], imagen_gr.size[0])
plt.imshow(imagen_A)

Espero haya quedado claro y sirva para entender un poco el uso de esta librería.

  • Podemos reconstruir una imagen a partir de una parte de los vectores y valores singulares. No se necesitan todos los vectores ni valores para reconstruirla.

Los valores singulares de la matriz transformada mediante np.lingalg.svd estan ordenados de manera tal que los primeros elementos contienen la mayor informacion (varianza) de la imagen

getdata() Devuelve el contenido de esta imagen como un objeto de secuencia que contiene valores de píxeles. El objeto de secuencia se aplana, de modo que los valores para la línea uno siguen directamente después de los valores de la línea cero, y así sucesivamente.

Tenga en cuenta que el objeto de secuencia devuelto por este método es un tipo de datos PIL interno, que solo admite ciertas operaciones de secuencia. Para convertirlo a una secuencia ordinaria (por ejemplo, para imprimir), use list (im.getdata ()).
.
fuente: https://www.geeksforgeeks.org/python-pil-image-getdata/

Buenas, alquien me podria definir que es un valor singular? Muchas gracias.

por qué se colocó el * en vez de el producto interno?


Te tardan en cargar mucho las intrucciones?

Si alguno le pasa como ami que las instrucciones le tarda muchisimo en cargar es porque se necesita un poder de computo bastante elevado para trabajar con matrices tan grandes. Estaba en mi netbook que digamos que anda fluido pero tiene 4 gb y un i3 lo que la volvio muy limitada para calcular estas matrices tan grandes

Les recomiendo instalar Google Colaboratory y subir su projecto de Notebook ahi ya que van a usar una Maquina Virtual de Google con 12gb RAM que les va a poder permitir trabajar aunque la PC que usen no se aguante estos codigos que necesitan tanta potencia de computo

La imagen de ejemplo de esta clase la pueden descargar del siguiente link:
Imagen Ejemplo
Recuerda que debes guardarla en con un nombre y ubicación conocidos para poder acceder en el código

Excelente aplicación gráfica de la Descomposición en Valores Singulares. Sin duda esto emociona. Me ha dejado con la intriga.

Para que sirve el parámetro “banda=0” ??

debería explicar a con detalle lo de la banda

Habria que usar todos los valores singulares , no solamente uno , aunque este tenga la mayor varianza de datos … Habria que usar los 3456 valores singulares … ???

es genial ver como pasamos de una imagen a una matriz, bueno a varias matrices que al final del dia terminan siendo una misma.
excelente

Que interesante esta clase!

Sigo teniendo problemas con traer la imagen al código, saben que más puedo probar a parte de lo que hace el profesor? 😃