La imposibilidad de mejorar una imagen de baja resolución



Volviendo a retomar el tema de la imposibilidad de CSI de tomar del reflejo de los ojos una imagen rebotada, ya sea por su dispersión o por los pixeles, ahora entro en otro tema también interesante, el hacer "upscaling" es decir, ajustar el tamaño de una imagen pequeña para que sea más grande y tratar, en el proceso, de que se vea bien.

Algo imposible, claro, pero nunca falta la tía o amigo que te dice "nene, vos que sabés, ¿me mejorás esta foto?" y tenés que explicarle por qué es imposible hacerlo, para ellos este post.

Programas como el Photoshop o el Gimp tienen algunas herramientas que se inventaron para tratar de "sobrevivir" al intento sin que el resultado sea patético, el resultado final ES berreta, la calidad nunca será óptima, pero en algunos casos puede ayudar a imprimir una imagen en papel y que ésta no se vea tan mal porque la foto original tenía pocos pixeles.

La cuestión es sencilla, no podemos sacar información de donde no la hay, como mucho podemos inferirla, sugerir que ese nuevo pixel es un promedio entre los dos anteriores, el problema es que si la imagen original es demasiado pequeña, no hay información para calcular, voy a los ejemplos...



Aclaración: no se ofendan con la foto, es que me servía porque es la última que saqué, estaba a mano :P



Primero que nada la foto base, la ajusto a 600px para poder mostrarla en el blog, el original es de 14 megapixeles, pero a 600x600 la información se reduce a tan sólo 360.000 pixeles que me dirán todo lo que tengo que saber.

Ahora bien, si esa imagen, por la razón que fuere, la reduzco a 100px de lado, es decir, 10.000 pixeles solamente, estamos hablando de haber perdido el 97.2% de la información de la imagen, básicamente no nos queda nada para trabjar, es una miseria:



Ahora queremos recuperar esos 350.000 pixeles perdidos, empecemos, para hacerlo probé con Photoshop CS6 y Gimp 2.8 que son los más "nuevitos" sin meterme en programas con algoritmos especiales más dedicados a esta tarea, es decir, tomar algo que cualquier simple mortal pueda utilizar, porque encontré varios programas en C++ como para hacerlo al fiel estilo hacker, pero un fotógrafo no sabe ni qué es un compilador, vamos con el primer intento:



Nearest Neighbor es el primer ejemplo, es el algoritmo más básico de todos, seguramente al achicar funciona mejor para algunos casos porque mantiene los bordes fuertes, pero al ampliar la imagen nos deja un mosaico pixelado como es de esperarse cuando no hay nada de donde arañar. Vamos al siguiente:



La interpolación bilinear hace un buen trabajo aun siendo el método más sencillo y lineal, valga la redundancia, para calcular los pixeles intermedios en una imagen, veamos con la siguiente:



Esperaba mucho más de la bicúbica, que es una evolución de la lineal, pero al tener tan sólo 10.000 pixeles de información no hay milagros para hacer, veamos que sigue...



Photoshop ofrece la Bicubic Smoother para hacer upscaling, la recomienda, es como si le hubieran hecho un "blur" antes o después, no lo se, pero es más "suave" aun sin nada más definido de lo que la imagen original podría darnos.



La Bicubic Sharper, en cambio va para el otro lado, como si le hubiésemos dado un "sharpen" pero tampoco mejora demasiado. Como verán, no hay mucho que se pueda hacer.



Leí por ahí que se podía hacer un blur previo y el resultado iba a ser mejor, saquen sus propias conclusiones, las fotos parecen sin foco, pero no por eso son mucho mejores.

Ahora bien, hay otro algoritmo que no es utilizado por Adobe, leí en foros de fotógrafos que es mejor para ajustar el tamaño de imagenes, más preciso, pero claro, estamos hablando que es mejor al achicar ¿cómo se llevará al subir?



El resampleo Lanczos está entre los dos bicúbicos de Photoshop, no es mucho mejor en el upscaling, o eso me parece a mí.



Probé también la idea del blur y Lanczos pero notarán que nada puede mejorar tan pocos pixeles.



La versión cúbica de Gimp tampoco hace milagros

Ahora bien, para que esto tenga algún sentido quería ver qué sucedía si aumentábamos nueve veces la información, de 100x100 a 300x300, ya son 90.000 pixeles, la pérdida es del 75%, contra el 97.2% digamos que no es tan salvaje, esta sería la imagen de prueba:



De todos los métodos utilicé el que me pareció más adecuado, el Bicubic Smoother y el resultado fue el siguiente:



La diferencia de partir desde los 10.000 pixeles o los 90.000 pixeles es impresionante y aun nos falta el 75% de la información de la imagen original. El tema con el resampleo es, entonces, cuan lejos queremos llegar, no hay forma de lograr el buen funcionamiento de estos algoritmos si no le damos algo con qué trabajar.

Cuando veo que los fabricantes de televisores 4K dicen que se puede hacer upscaling de FullHD sin problemas es obvio que utilizan más métodos y técnicas de los que utilicé, pero se encuentran ante los mismos problemas de tener tan sólo un 25% de información de la que se quiere mostrar, el upscaling es una tarea titánica de cálculo en tiempo real con imagenes de 1920x1080 pasando a 3840x2160, todos los televisores nuevos que llevan un procesador para esto optaron por SoCs ARM de cuatro núcleos, es decir, metieron quad cores para poder hacer el resampleado, una bestialidad para compensar la falta de contenidos en esa resolución.

Para aquellos que quieran interiorizarse un poco más en el tema encontré muy buena info aquí: 1, 2, 3, 4, 5, 6, 7

Si te gustó esta nota podés...
Invitame un café en cafecito.app


Otros posts que podrían llegar a gustarte...

Comentarios

  • Leandro Rotela     13/02/2013 - 01:48:42

    Opera tardo en mandarme el RSS :P

    Probaste con el Firework? mi hermano ultimamente se metio a ver cosillas para mejorar la imagen y hay cosas muy interesantes :P sobre todo para las imagenes oscuras. el photoshop jamas aprendi a usarlo

  • Danbat     13/02/2013 - 02:44:08

    Vengo haciendo estas cosas en fotografía desde hace tiempo y realmente las tuve que atacar con la imaginería satelital, donde había que definir los bordes de una laguna o un bosque a partir de 8 o 9 pixeles, no 10000

    Las interpolaciones eran bilineales o bicúbicas, pero las matemáticas que habían detrás me secaron el cerebro. Y si bien yo siempre pensé que el programa (Erdas Imagine) inventaba los pixeles, lo cierto es que los resultados eran aceptables. Logré, en situaciones particulares, hacer upscaling de 9x9, o sea hacer un doble 3x3, pero era una cosa que estaba más cerca de la Fe que de la Realidad.

    El truco detrás del upscaling viene dado por la óptica y el sensor. Ya de por sí la imagen digital que tenemos es el resultado de una interpolación de dos pixeles rojos y de uno azul y uno verde. Al haber reducido primero la foto se perdió más de lo que estimaste. Un verdadero trabajo de ampliación tiene en cuenta la óptica usada y el sensor. Probablemente se consiga un mejor resultado, pero a fuerza de puro cálculo.

    Interpolar de FullHD a 4K no es nada del otro mundo, es 2x2, interpolación bilineal, una papa.

    Ah, para terminar este post dentro del post, se puede mejorar mucho una foto con dos o más tomas consecutivas. Complicado en el caso de personas, pero no a un paisaje, por ejemplo. Se amplían las fotos, se alinean bien, se funden y se obtiene una con mejor resultado. Comprobado personalmente. La técnica se llama super-resolución.

  • Gabriel     13/02/2013 - 04:37:46

    En los estudios de grabación profesional tiene un lema:
    "Entra caca, sale caca"

  • javier     13/02/2013 - 11:14:27

    No se nada de fotografía, se que por ahi me voy de tema, pero vi esas cosas en las opciones de los emuladores como el znes y no entendia un joraca. Despues entendi que era para que se vea lindo al agrandarse la imagen.
    Uno de mis algoritmos/filtros preferidos es el 2xSai. ¿Que algoritmo usaran para transformar los viejos juegos en HD y relanzarlos?

  • Juan Pablo     13/02/2013 - 11:23:38

    http://d24w6bsrhbeh9d.cloudfront.net/photo/4088882_700b.jpg

  • Gustavo V     13/02/2013 - 11:42:52

    hay un excelente capitulo de L&O:SVU en el que actua Robin Williams, haciendo de malo.

    http://www.imdb.com/title/tt1015439/

    http://www.imdb.com/title/tt1015439/

    ahi justamente tocan el tema de la resolucion de una foto, tomada desde lejos x una camara de seguridad que eran 6/8 pixeles a como habian llegado a la cara del tipo: *inventaron y dibujaron* es decir se desestimo la prueba.

    mas alla de eso, el capitulo es excelente y lo pasan a cada rato por cable

  • Gustavo     13/02/2013 - 12:08:46

    Muy interesante el articulo, pero no tengo nada enriquecedor para aportar lamentablemente.

  • Milad     13/02/2013 - 12:57:11

    Muy bueno el post, se resume a lo que decis en un comienzo, no se puede generar información de donde no la hay.

    Está buena la comparativa de las diferentes técnicas.

    Sobre lo que ponés de:

    pero en algunos casos puede ayudar a imprimir una imagen en papel y que ésta no se vea tan mal porque la foto original tenía pocos pixeles.


    Esto no es correcto. De hecho se necesita más resolución en impresión que en pantalla. Siendo un óptimo de pantalla 72 dpi contra 300 de impresión, entonces, si no zafa en pantalla, menos zafará impreso.

  • Juan Pablo     13/02/2013 - 13:31:14

    Photoshop CS6 tiene varias herramientas nuevas que pueden solucionarnos la vida, por ahi son muy tecnicas y bastante profecionales (soy diseñador grafico) pero dan buenos resultados.
    Igualmente en pantalla podemos llegar a tener una imagen aceptable, pero al momento de imprimir es cuando se termina de complicar. Es imposible, por mas "bien" que dejemos la imagen en pantalla, que esta se vea bien al momento de imprimir (todo depende tambien del sistema de impresion).
    Igualmente hay un par de trucos para ampliar la imagen y que no se vea, por ahi son muy tecnicos, como trabajar la lineatura de trama para impresion o aumentar mediante % el tamaño de la foto hasta que quede presentable.
    Igualmente mi consejo y es el que le doy a mis clintes es: Primero sacar siempre la imagen con la mayor resulucion posible (contratar un fotografo si se puede), achicar se puede agrandar no y siempre grabar o guardar las originales y modificar una copia (tendremos dos o mas imagenes iguales pero no romperemos la original). El pricipal problema es este, usan la original para achicarla y despues no hay vuelta atras. De esta manera nunca vamos a tener problemas.
    Igualmente hoy en dia todo el mundo tiene una digital, en la configuracion sale el tamaño, elijan uno intermedio - alto y ya tienen una foto para impresion.

    Guiño

  • Javier_C     13/02/2013 - 14:38:19

    Don Fabio, un capítulo aparte se da en los gráficos vectoriales, pero eso requeriría explicar qué es un vector, etc.
    A lo mejor da para otro post algún día, es una sugerencia.
    Muy bueno el post! Guiño

  • Eber     13/02/2013 - 14:45:05

    Y pensar que los fotogramas de cine en 35mm upscalean a 2k, tecnologia de la nasa el filmico.

  • xavier     14/02/2013 - 23:10:19

    Milad dijo:

    Muy bueno el post, se resume a lo que decis en un comienzo, no se puede generar información de donde no la hay.

    Está buena la comparativa de las diferentes técnicas.

    Sobre lo que ponés de:

    pero en algunos casos puede ayudar a imprimir una imagen en papel y que ésta no se vea tan mal porque la foto original tenía pocos pixeles.


    Esto no es correcto. De hecho se necesita más resolución en impresión que en pantalla. Siendo un óptimo de pantalla 72 dpi contra 300 de impresión, entonces, si no zafa en pantalla, menos zafará impreso.


    En realidad hace un tiempo que se habla del 300 dpi para impresión, pero cada vez se desmiente más ese mito venido a norma, con 150 dpi ya se pueden tener impresiones que no delatan imperfecciones a simple vista.
    Se pueden encontrar muchos artículos sobre el tema, dejo uno que tenía a mano:
    http://www.have-camera-will-travel.com/field_reports/the_300_dpi_print_myth.html

  • Fabio Baccaglioni     15/02/2013 - 01:09:44

    Javier_C dijo:

    Don Fabio, un capítulo aparte se da en los gráficos vectoriales, pero eso requeriría explicar qué es un vector, etc.
    A lo mejor da para otro post algún día, es una sugerencia.
    Muy bueno el post! Guiño


    ja, pero vectoriales nunca tiene problema de upscaling, tampoco los matices de otros formatos, depende mucho de su aplicación.


    Eber dijo:
    Y pensar que los fotogramas de cine en 35mm upscalean a 2k, tecnologia de la nasa el filmico.


    hasta donde dé el grano se podía estirar :D por eso podías hacer cine con 35mm aun sin ser perfecto, lo analógico tiene esa propiedad "estirable" pero a la vez donde se pierde, pasa lo mismo,a la entropía no le ganás así no más :D

  • Manuel Alejandro Jiménez Quintero     16/02/2013 - 07:12:19

    ¡Al pesebre fieras! Que la Esper Photo Analysis Machine que usa Deckard los deja comiendo moscas (que de por si el upscaling de VHS a Blu-ray ya es sorprendente). http://www.youtube.com/watch?v=QkcU0gwZUdg

  • Guillermo_w     17/02/2013 - 13:20:57

    Fabio Baccaglioni dijo:


    Eber dijo:
    Y pensar que los fotogramas de cine en 35mm upscalean a 2k, tecnologia de la nasa el filmico.


    hasta donde dé el grano se podía estirar :D por eso podías hacer cine con 35mm aun sin ser perfecto, lo analógico tiene esa propiedad "estirable" pero a la vez donde se pierde, pasa lo mismo,a la entropía no le ganás así no más :D


    El negativo de 35mm como se lo usaba en fotografía puede entregar hasta 24mpx de resolución si se la foto es tomada con un excelente que entregue una apabullante definición.

    Si la memoria no me falla, como se utiliza la película en cine (fotogramas verticales a lo largo de la película) la máxima resolución eran 16mpx. Por ende tienen de sobra para hacer 4K sin hacer upscale. La digitalización siempre tiene otro problema que no esta relacionado con la resolución, que es la cadencia de los cuadros. Ahora con el 24p es otro tema, podría solucionarse si eliminan el PAL y el NTSC.

  • Juan Pablo     26/02/2013 - 11:25:55

    Creo una frase que pusiste resume todo el tema:
    "...no podemos sacar información de donde no la hay..."

    Uses lo que uses, si la imagen es de baja calidad no hay nada que hacer.

  • Paola Juna     22/02/2014 - 04:15:46

    Amigo me podrias ayudar con una imagen que esta pixelada...necesito solo que se lea o se entienda lo que esta escrito el nickname porfavor...!!! Ayudame enviame tu correo para enviarte la imagen mi correo es [email protected] Porfavor es de urgencia. PORFAVOR AYUDAME

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https

Negrita Cursiva Imagen Enlace


Comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador. Los comentarios son filtrados por ReCaptcha V3.