Archivo

Entradas Etiquetadas ‘jpeg’

Jugando con ImageMagick (I): Dimensiones, captura, color y efectos

Jueves, 26 de Agosto de 2010 Gaspar Fernández Sin comentarios

A menudo es necesario hacer una manipulación básica de imágenes y da mucha pereza ejecutar GIMP u otro editor de imágenes para una tontería; e incluso a veces necesitamos modificar gran cantidad de imágenes y necesitamos automatizar el proceso:

Ejecución

Aunque ImageMagick, que seguro que lo encontráis en los repositorios de vuestra distribución favorita, da mucho más de sí, aquí veremos ejemplos con convert, import y mogrify

Redimensionado de imágenes

hamburgueson_2$ convert -resize [dimensión/porcentaje] origen destino

Por ejemplo para redimensionar con un ancho de 320 pixels:

$ convert -resize 320 hamburgueson.jpg hamburgueson_mini.jpg

De esta forma, si especificamos la altura, se ignorará, ya que convert intentará mantener el aspecto de la imagen.

También podemos imponer la altura y que se calcule automáticamente el ancho:

$ convert -resize x500 hamburgueson.jpg hamburgueson_mini.jpg

O si queremos, podemos también redimensionar con un porcentaje del tamaño original:

$ convert -resize 40% hamburgueson.jpg hamburgueson_mini.jpg

hamburgueson_21También es posible la redimensión sin mantener el aspecto (relación ancho/alto) de la siguiente forma:

$ convert -resize \!600×300 hamburgueson.jpg hamburgueson_deforme.jpg

Y esto mismo, también por porcentaje:

$ convert -resize \!100×30% hamburgueson.jpg hamburgueson_deforme.jpg

Capturando el escritorio

Puede que nuestro entorno preferido de escritorio no venga con esta funcionalidad, o incluso que estemos desde una máquina remota y queramos ver lo que pasa en el escritorio, una captura de pantalla no viene mal. Para ello podemos hacer lo siguiente:

screenshot-26-08-2010-100842

$ import -window root captura.jpg

O si queremos capturar una ventana en especial:

$ import ventana.jpg

Nos aparecerá un puntero especial que nos permitirá seleccionar la ventana a capturar.

O si queremos capturar una ventana en especial sin necesidad de hacer click (muy útil si estamos en un equipo remoto):

$ import -window “Titulo de la ventana” ventana.jpg

También podemos sacar el ID de la ventana con:

$ wmctrl -l

Y poner en lugar del título, el ID. Es necesario que nos encontremos en el mismo escritorio de la ventana para hacer la captura. Cómo podemos hacer eso remotamente ?

$ wmctrl -l # Nos dirá en la segunda columna el escritorio donde está la ventana

$ wmctrl -s [numero] # Saltaremos al escritorio [numero], el primero es el cero.

Espacios de color

Podemos cambiar el formato del color de forma rápida usando colorspaces, dependiendo del formato de salida y la forma en la que la imagen será utilizada, para vídeo, por ejemplo. Aunque también tenemos algunos espacios interesantes como:hamburgueson_3

$ convert -colorspace gray hamburgueson.jpg hamburgueson_gris.jpg

El tono de gris estará calculado para adecuarse al ojo humano: Gris = 0.299*Rojo+0.587*Verde+0.114*Azul

Aunque también podremos transformar a YUV, XYZ, LAB, HSL, etc; también necesitamos que el formato de salida sea compatible con esos espacios de color. Para ver una lista de todos los colorspaces disponibles:

$ covert -list colorspace

hamburgueson_31También podemos ecualizar la imagen con respecto a los diferentes espacios de color de la siguiente forma:

$ convert -colorspace [espacio] -equalize origen destino

En el ejemplo:

$ convert -colorspace hsl -equalice hamburgueson.jpg hamburgueson_hsl.jpg

Y si no queremos decir el colorspace, usaremos el actual de la imagen:

$ convert -equalize hamburgueson.jpg hamburgueson_e.jpg

Recortar imágenes

Es más cómodo hacerlo con el ratón, pero en ocasiones querremos hamburgueson_4automatizar el proceso, y podemos hacerlo de la siguiente forma:

$ convert -crop [ancho]x[alto]+[x]+[y]

Por ejemplo lo siguiente:

$ convert -crop 300×300+100+100

Creará una imagen de 300×300 y empezará a partir del punto 100×100 (desde la izquierda/arriba).

Bordes

hamburgueson_41Para añadir un borde podemos hacer lo siguiente:

$ convert -bordercolor [color] -border [ancho]x[alto] origen destino

En el ejemplo tenemos:

$ convert -bordercolor black -border 10×10 hamburgueson.jpg hamburgueson_borde.jpg

Para especificar el color podemos hacerlo de varias formas:

$ convert -bordercolor black/red/green/blue… # Por su nombre. Si queremos saber los nombres de color disponibles:

$ convert -list color

$ convert -bordercolor “#aacc11″ # Por su equivalente hexadecimal

$ convert -bordercolor “rgb(100,150,200)” # En función de sus valores RGB

$ convert -bordercolor “hsl(100,150,200)” # En función de sus valores HSL

$convert -bordercolor “cmyk(100,200,150,230)” # En función de sus valores CMYK

… etcétera… tantos formatos como espacios de color.

Ahora bien, queremos quitar el reborde añadido:

$ convert -trim hamburgueson_borde.jpg hamburgueson_nuevo.jpg

Pero es posible que por la compresión jpeg no se detecte bien el borde (es una compresión con pérdida de calidad, y se modifica la imagen; para nosotros el borde es negro, pero para el ordenador hay muchos tonos de negro), entonces podemos hacer lo siguiente:

$ convert -fuzz 10% -trim hamburgueson_borde.jpg hamburgueson_nuevo.jpg

Con esto damos una tolerancia de un 10% al color, es decir, si se parecen los tonos de negro en menos de un 10% serán considerados iguales.

hamburgueson_42También podemos añadir un biselado como el del ejemplo de la siguiente manera:

$ convert -mattecolor red -frame 20×20+10+10 hamburgueson.jpg hamburgueson_rojo.jpg

Filtros y efectos

hamburgueson_32Por si fuera poco, podemos aplicar los filtros típicos a las imágenes como blur, motion-blur, blur gaussiano (gaussian-blur), ruido (noise), carboncillo (charcoal).

En el ejemplo, se ha añadido motion-blur de la siguiente forma:

$ convert -motion-blur 10×40+10+0 hamburgueson.jpg hamburgueson_movido.jpg

Historia de Lenna

Viernes, 19 de Marzo de 2010 Gaspar Fernández Sin comentarios

lenna_mainEste post lo he rescatado de un antiguo blog que tenía allá por 2007, y es que en la Universidad estuve estudiando una asignatura, Tratamiento Digital de Imagen y había una foto que se repetía hasta la saciedad.

Todo se remonta a Julio del 1973 cuando en el Instituto de Procesamiento de Señal e Imagen del USC (California) estaban buscando una imagen para una conferencia. La imagen debía tener un gran margen dinámico. Estaban pensando en una cara, y por supuesto, qué mejor que sacarla de la revista Playboy… y como eran tontillos… Playmate de Noviembre del 1972, no, si la muchacha es guapa, aunque en la foto tenía 21 años. Y la foto no está entera, como os podéis imaginar… pero si queréis os dejo unos enlaces al final :)

Tras la conferencia mucha gente estuvo interesada en la foto, para sus investigaciones con filtros y compresión de imagen. imaginaos que sin Lenna, el JPEG no sería lo que conocemos actualmente; y bueno, que había pocas chicas en la investigación de imagen digital, todo sea dicho.

Con respecto al nombre, es Lena Söderberg, de origen sueco; pero como siempre la manía de cambiar los nombres, en la revista se llamba Lenna Sjööblom (con dos N para que los anglosajones lo pronunciaran bien). Fue el número más vendido de la historia de la revista. Aquí tenéis la ficha de Lenna.

La imagen de Lenna se ha convertido con los años en un estándar de facto de  imagen de prueba de miles de algoritmos relacionados con este campo y muy importante para la comunidad científica, tanto es así que hasta Playboy autorizó su publicación en estos círculos (normal ellos también han terminado utilizando la tecnología desarrollada por ese hecho), no denunciando ni a la revista Optical Engineering(01/1992) ni a IEEE Transactions on Image Processing (1996), ya que la foto tiene derechos. David C. Munson, editor de ésta última reista escribió una nota explicando las razones de por qué se utiliza la foto de Lenna. Más o menos viene a decir dos razones:

* Es una buena imagen de prueba, tiene regiones planas, sombras y texturas lo que es bueno para probar algoritmos de procesamiento de imágenes.

* Segundo, es una chica atractiva, y es normal que esta comunidad de investigación (casi todo hombres) giren en torno a una imagen que encuentran atractiva.

Además la imagen se ha utilizado en multitud de libros para demostrar ciertos algoritmos. Por ejemplo el que estoy leyendo ahora para la asignatura Digital Image Processing de Rafael C. Gonzalez y Richard E. Woods (muy gordo por cierto).

Ahora tenemos la otra cara de la moneda, la cara de un mundo que se empeña en criticar todo lo que se ha creado, porque es incorrecto, les parece mal. A ciertas personas les molesta que sea una mujer la que esté posando, pero les molesta aún más que provenga de una portada de Playboy, al menos está recortada, les molesta que haya salido en revistas, en libros, en miles de pruebas del desarrollo de JPEG.

Lo mejor de todo es que hasta el 1988 ella no se enteró de la repercusión que tenía, hasta que la entrevistaron de una revista de informática sueca. Y en mayo de 1997, fue invitada a la la 50th Annual Conference of the Society for Imaging Science in Technology, como parte de de la historia de la imagen digital. Y bueno, casi casi pudo montar un club de fans, todo el mundo pidiéndole autógrafos, yo creo que le hicieron más caso a ella que a todo lo demás… tantas horas delante de un ordenador mirándola fijamente, unen mucho :) Y una de sus frases fue: deben estar tan cansados de mí … ¡mirando la misma foto por todos estos años!

lenna_oldHay muy poca información sobre ella actualmente. Está casada, tiene tres hijos y trabaja para el estado. Cuando la invitaron para la conferencia que he citado antes trabajaba ayudando a discapacitados a trabajar con ordenadores.

Por cierto, el póster también sale en la película El dormilón (Original: Sleeper) de Woody Allen (1973). Lenna en Sleeper.

Aquí os dejo unos cuántos enlaces si queréis más información:

May 2001 Newsletter of the IEEE Professional Communication Society (PDF)
La Historia de Lenna
Lenna - Wikipedia
The Rest of The Lenna Story

Visita otras webs de la red