Páginas

Mostrando entradas con la etiqueta GIMP. Mostrar todas las entradas
Mostrando entradas con la etiqueta GIMP. Mostrar todas las entradas

lunes, 16 de diciembre de 2013

GIMP, UFRaw y Lensfun - Reconociendo una lente por UFRaw

El formato que utilizo para tomar fotos con mi vieja cámara Nikon D80 es el que me ofrece mayor calidad, es decir, en el formato NEF (RAW) con una resolución de 3.872 × 2.592 píxeles. Descarto guardar las fotos en el modo NEF+JPEG, pues siempre me he planteado realizar un postprocesado de las fotos que tome, pero partiendo del formato de mayor calidad que me ofrezca la cámara.
Para el postprocesado utilizo GIMP (GNU Image Manipulation Program). No voy a entrar en una polémica y compararlo con el conocido Photoshop, tan popular en el mundo profesional. Solo decir que Gimp me permite realizar la mayoría de los retoques fotográficos que necesito. Si me dedicara profesionalmente al retoque fotográfico, profundizaría en conocer las ventajas de utilizar Photoshop en lugar de Gimp, no solo por su calidad sino desde un punto de vista de rentabilidad y productividad.
Dicho esto, pasemos al objeto del artículo.

UFRaw (The Unidentified Flying Raw)

Cuando intentamos abrir imágenes RAW con GIMP, y habiendo instalado UFRaw, GIMP llamará a UFRaw para que podamos ajustar ciertos parámetros de la imagen y exportarla a GIMP en el formato que utiliza.
Además de poder ajustar, entre otras cosas, la exposición y el balance de blancos de una fotografía, las versiones más recientes de UFRaw permiten corregir las distintas distorsiones que produce una lente determinada (aberraciones cromáticas y geométricas, viñeteado y distorsiones varias). Esta reciente funcionalidad de UFRaw se basa en el programa Lensfun, programa que cuenta con una extensa base de datos de lentes que se va ampliando por momentos. Pero mi lente no estaba reflejada en la base de datos, por lo que tuve que buscar en Internet si alguien había parametrizado mi lente para poder ser reconocida por Lensfun y, por tanto, por UFRaw.
Para no tener que cargar con excesivo peso cuando me voy de excursión, terminé comprándome el objetivo Tamron 18-270mm F/3.5-6.3 Di II VC PZD. Es una lente aceptable. Pero a su menor distancia focal (18mm, 28mm equivalente para 35mm) la distorsión es apreciable.  Muestra un cierto efecto de barrilado que, aunque en fotografías sin líneas rectas en sus bordes no llega a ser visible, quería aplicar estas correciones en todo el abanico de distancias focales.
Así que buscando en Internet, encontré un fichero lens.xml en lensfun-tamron-18-270mm.

Lensfun

¿Pero qué hacer con este fichero? Buscando de nuevo en Internet, averigüé que la base de datos que utiliza Lensfun para hacer sus correcciones, en una plataforma Ubuntu, se encuentra ubicada en
/usr/share/lensfun
y que la base de datos consiste en una relación de ficheros con extensión xml, tantos como marcas de lentes fotográficas esté considerando Lensfun. Así que busqué un fichero con el nombre que contuviese tamron, o algo parecido, y encontré slr-tamron.xml.
Éste era el fichero que tenía que editar. ¿Pero con qué? Con el que había encontrado en la red con nombre lens.xml.
El contenido del fichero lens.xml contenía:
EL fichero consta de un bloque de datos, limitado por el par de etiquetas <lens>---</lens>. Este bloque será el que insertemos en el fichero slr-tamron.xml. Teniendo en cuenta que este fichero solo se puede editar con privilegios de root, lo editaremos desde un terminal, tecleando lo siguiente:
sudo gedit /usr/share/lensfun/slr-tamron.xml
Una vez echa la inserción, guardaremos los cambios y saldremos de la edición.
Abriremos un fichero NEF(RAW) y veremos si en la pestaña de corrección de distorsiones aparece el nuevo objetivo. Si es así, lo elegimos y veremos cómo la imagen se comba por el centro de los bordes, compensando la distorsión que produjo la lente a una distancia focal determinada.
La primera vez que lo intenté, no lo conseguí, y el problema radicaba en que no existía correspondencia entre el nombre de la lente que aparecía en el campo EXIF y el del bloque de la lente. Editando de nuevo el fichero slr-tamdon.xml y sustituyendo <model>Tamron 18.0 - 270.0 mm f/3,5-6,3 Di II VC LD Aspherical IF MACRO</model> por <model>Tamron AF 18-270mm F/3.5-6.3 Di II VC PZD</model> resolví el problema. Debo comprobar que esta nueva versión del objetivo tenga otras distorsiones. En un principio, considero que ópticamente son los mismos.

Comparando una misma fotografía sin corregir (izquierda) y corregida (izquierda) podremos notar la diferencia. Me hubiera gustado tener una fotografía con líneas rectas en los bordes para que fuera más visible la distorsión.
La lente tiene otro tipo de aberraciones, las cromáticas, pero no he encontrado (no me he puesto en ello) el modo de reflejarlo en el bloque de datos del correspondiente objetivo, con el objeto de también corregirlas.

Enlaces

- GIMP
- UFRaw
- Lensfun
- GNU (es)
- Gimptalk
- Tamron 18-270mm F/3.5-6.3 Di II VC PZD review
- lensfun-tamron-18-270mm
- 10 Reasons Why You Should Be Shooting RAW
- Cuarto oscuro digital II. Flujo de trabajo con UFRaw
 

martes, 5 de noviembre de 2013

Ubuntu 13.10 (saucy salamander), zeitgeist y el bloqueo de los iconos en el lanzador de Unity

Los sufridos problemas al actualizar Ubuntu

No escarmiento. Siempre me ocurre lo mismo. Nada más salir una nueva versión de Ubuntu, no tardo ni dos días en que decido actualizar el ordenador de escritorio que tengo con la última versión. En este caso, con la versión 13.10 (aka saucy salamander).
A pesar de todo, una vez actualizado, el sistema me arrancó perfectamente, y aparentemente no se observaron cambios enormes ni problemas que me dejasen el PC para formatear el disco duro e reinstalar la versión anterior.
Pero poco a poco van apareciendo ligeras diferencias con respecto a lo acostumbrado, incómodas al principio, pero útiles a la larga. Por ejemplo, el gestor de archivos que se instala por defecto es el de siempre, Nautilus, con alguna funcionalidades suplementarias.
Aparte del propio sistema operativo, se actualizan aplicaciones para que puedan funcionar sin problemas con la versión 13.10. ¿Sin problemas? Bueno, no exactamente. Otro ejemplo que me ha llevado tiempo y que no he conseguid resolver totalmente ha sido la versión 2.8.6 de GIMP que se instaló por defecto. Funcionaba todo salvo un pequeño incordio, pero que hacía inoperante el programa. El panel lateral de herramientas ocupaba la mitad de la ventana. No hubo manera de poder dejarlo a mi gusto, más estrecho. Al final me decidí instalar la versión 2.9.1 del siguiente modo:
sudo add-apt-repository ppa:otto-kesselgulasch/gimp-edge
sudo apt-get update
sudo apt-get install gimp
funcionando casi a la perfección... ¿si? no, no me funciona la integración de GIMP 2.9.1 con ufraw, programa que me permite importar ficheros RAW a GIMP. Yo utilizo imágenes con el formato .NEF de NIKON y es el único modo que yo se de importar este tipo de ficheros al editor de imágenes GIMP. Y continúo sin resolver el problema.
Pero otras sutiles diferencias, más que sutiles eran y son errores, errores que sin dejar el ordenador maltrecho, me resultan un paso atrás en comparación de lo que tenía. Y me refiero al lanzador de Unity.

El lanzador (launcher) de Unity

Con el paso del tiempo me acostumbré al nuevo interfaz de usuario, Unity, el que trae por defecto Ubuntu desde la versión 11.04. El cambio fue radical pero con el tiempo me fui acostumbrando al nuevo modo de operar. Sobre todo, por la barra de iconos que se mostraban en la izquierda del escritorio y que es conocida como lanzador (de aplicaciones) o launcher.
Puedo crearme tantos iconos como quiera, puedo ordenarlos a mi gusto, y hasta puedo asociar a cada icono una lista de opciones que se muestran cuando pulso el botón derecho del ratón sobre cualquier icono, opciones que puedo definir a mi gusto, siempre y cuando sean acciones aceptables por la aplicación pertinente.
 Llegados a este punto, se podrá entender fácilmente lo que me pasaba y que no había manera de solucionar. Lo que me pasaba era que cuando instalaba una aplicación, automáticamente se mostraba un icono de la aplicación en el lanzador, para que me fuera fácil abrir el navegador. Por ejemplo, el icono de Google Chrome es un icono que se incluyó en el lanzador cuando instalé el navegador Google Chrome. Si soy de los que instalo miles de aplicaciones, podéis imaginar que los iconos que pueden mostrarse en el lanzador pueden llegar a ser incontables. Afortunadamente, pensé, aparece en la lista de opciones la de 'No mantener en el lanzador'. Pues aunque aparecía como opción, esta opción no funcionaba. Ni tampoco funcionaba mover un icono a otro lugar en el lanzador. Ambas posibilidades estaban bloqueadas.
Después de varios intentos, durante varios días de búsqueda en Internet, por fin encontré el modo de solucionar este par de problemas. Y consistía, ¿quién podía llegar a imaginarlo?, en borrar un fichero caché del programa zeitgeist, programa que se encarga de registrar todas las actividades que realizas en tu PC. Con este programa Ubuntu puede buscar y encontrar fácilmente cualquier cosa que se encuentre en nuestras unidades de almacenamiento. Y no, no tiene nada que ver con el documental con el mismo título, Zeitgeist: The Movie, que quizás alguno de vosotros hayáis visto. Recomiendo verla al que no la haya visto.

Procedimiento para solucionar el problema

Solamente hay que borrar el siguiente fichero:
~/.local/share/zeitgeist/activity.sqlite
No dudo que habrá razones para ello, pero así, de primeras, me cuesta entender la relación que existe entre el lanzador de Unity y el programa zeitgeist. En estos casos, resuelto el problema, no suelo perder más el tiempo intentando buscar el porqué ocurre esto. Evidentemente, está registrado como un gazapo (bug) del interfaz Unity; y que supongo resolverán con el tiempo.

Alternativas 'clásicas'

En la transición en la que me encontré mientras aprendía a utilizar el lanzador de Unity, recurrí a un programa que me permitía acceder a todas las aplicaciones (o a casi todas) que tenía instaladas, a la antigua usanza, mediante menús desplegables en la barra superior de Unity. Este programa es el Classic Menu Indicator.
El modo de acceder de este modo a las aplicaciones no es tan directo, pero la ventaja es de que se encuentran casi todas las que están instaladas en el PC. Este programa lo continúo utilizando frecuentemente, para aquellos programas que no se encuentran en el lanzador del escritorio.

Enlaces

- In 13.10 “unlock from launcher” option isn't working
- Comment 6 for bug 1233199
- Zeitgeist: Controla tus actividades en el ordenador
- Classic menu indicator

- Zeitgeist: The Movie

jueves, 3 de octubre de 2013

GfxTablet - Tableta gráfica virtual para plataforma Linux utilizando una tablet Android

Huyendo del camino fácil

De siempre me ha interesado la fotografía y el diseño gráfico. Tanto es así que hace ya algún tiempo que me compré una tableta digitalizadora. Estoy hablando de la época en que el sistema Android no se había popularizado y también de cuando aún no existían los smartphones.
En aquel momento, la tableta que compré era una CyberTablet Z12, de la marca  Adesso, que especificaba claramente que era para un entorno de Windows Vista.
La marca no era tan reconocida como Wacom, lo que a la hora de integrarla en un entorno Linux, como era mi caso, no fue del todo directo. Aún eran los tiempos en que los fabricantes solo desarrollaban drivers para Windows. Pero me arriesgué. Supuse que buscando por la red, con el poderoso Google, me sería fácil encontrar algún aficionado que hubiese desarrollado los drivers para que fuese reconocido por Linux y, por tanto, poder integrarlo con los programas GIMP, Inscape y todos aquellos programas gráficos de código abierto que existen en un entorno Linux.
Todo fue cuestión de precios y de prestaciones mínimas. Y porque pensé que me sería fácil su integración. Y aunque no me fue fácil, llegué a hacerla funcionar, sino plenamente sí lo suficiente para practicar con ella.
Es una tableta que aún se comercializa, con unas prestaciones aceptables para lo que yo quería - retoque fotográfico:

  • 10 x 6,25 pulgadas de área de escritura.
  • lápiz inalámbrico de 1024 niveles de presión y con dos botones.
  • conectada y alimentada a través de un puerto USB.
Repescando la tableta, la he conectado a la plataforma Ubuntu 13.04 que tengo y la ha reconocido sin ningún problema.
Pero no era esto de lo que quería hablar, sino de una solución parecida utilizando una tablet o un smartphone con sistema Android.

La solución con GfxTablet

A principios de este año apareció en GIMPUSERS.com, un portal dedicado a la aplicación GIMP, una entrada refiriéndose a un desarrollo realizado para utilizar un dispositivo Android, preferiblemente una tablet por su mayor tamaño, como tableta digitalizadora para GIMP, que por su implementación era factible utilizarlo para cualquier programa gráfico que funcionase en una plataforma Linux. Finalmente decidí probar y lo que sigue a continuación es mi experiencia al respecto.
gfxTablet nos permite utilizar un dispositivo Android, preferentemente una tablet por su mayor tamaño, como una tableta digitalizadora gráfica. El proyecto se encuentra aquí. Consta de dos componentes:
  • La aplicación Android
  • El driver de entrada para el PC
La aplicación que se instala en el dispositivo Android envía al PC paquetes de datos UDP por el puerto 40118 con la información de coordenadas y de presión sobre la pantalla táctil.
El driver que se instala en el PC simula una tableta virtual gobernada por la aplicación instalada en el android.

Requerimientos

  • Cualquier dispositivo Android con pantalla táctil y Android 4.0 o superior.
  • Plataforma Linux con módulo uinput integrado en el kernel.

Dónde encontrar GfxTablet

En FDroid, se encuentra una ficha en inglés sobre gfxTablet e incluye unos enlaces con más información al respecto.
Podemos encontrar la aplicación Android en el Play Store de Google,  y el driver se encuentra en networktablet 64-bit, dynamically linked. Eso sí, este driver es válido para plataformas de 64-bit y está comprobado que funciona en Ubuntu 13.04, 12.10 o Fedora 18. En el caso de que nuestro PC no sea de 64, u otra versión de Linux, habrá que bajar el código del driver y generar el ejecutable, siempre que el kernel del Linux tenga integrado el módulo uinput.

Instalación del driver en Linux

Si para la instalación del driver partimos del código fuente, nos bajaremos dicho código, que viene en un fichero comprimido, lo descomprimimos y lo compilamos.
user@user-pc:~$ wget https://f-droid.org/repo/at.bitfire.gfxtablet_2_src.tar.gz
user@user-pc:~$ tar -xzvf at.bitfire.gfxtablet_2_src.tar.gz
user@user-pc:~$ cd at.bitfire.gfxtablet_2_src/driver-uinput
user@user-pc:~/at.bitfire.gfxtablet_2_src/driver-uinput@ sudo make
[sudo] password for user: ******** 
cc networktablet.c protocol.h -o networktablet
user@user-pc:~/at.bitfire.gfxtablet_2_src/driver-uinput@
lo que nos generará un fichero, con el nombre networktablet.
EL sistema Linux deberá tener instalado la utilidad make y el compilador de c gcc. Si no fuera el caso, habría que instalarlos para poder compilar el código fuente del driver.

Activación del driver

Le asignamos los permisos oportunos (chmod a+x)  y lo tendremos listo para ser activado en modo privilegiado:
user@user-pc:~/at.bitfire.gfxtablet_2_src/driver-uinput@ chmod a+x networktablet
user@user-pc:~/at.bitfire.gfxtablet_2_src/driver-uinput@ sudo ./networktablet
[sudo] password for user: ******** 
GfxTablet driver (protocol version 1) is ready and listening on 0.0.0.0:40118 (UDP)
Hint: Make sure that this port is not blocked by your firewall.
Y a partir de este momento el driver estará esperando los mensajes UDP que le envíe la aplicación GfxTablet instalada en el dispositivo Android.
Podemos comprobar que el driver está instalado, abriendo otra ventana de comandos y tecleando lo siguiente:
user@user-pc:~/at.bitfire.gfxtablet_2_src/driver-uinput@ xinput list
⎡ Virtual core pointer                     id=2 [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer               id=4 [slave  pointer  (2)]
⎜   ↳ Logitech USB Receiver                    id=9 [slave  pointer  (2)]
⎜   ↳ Network Tablet                           id=10 [slave  pointer  (2)]
⎣ Virtual core keyboard                    id=3 [master keyboard (2)]
    ↳ Virtual core XTEST keyboard              id=5 [slave  keyboard (3)]
    ↳ Power Button                             id=6 [slave  keyboard (3)]
    ↳ Power Button                             id=7 [slave  keyboard (3)]
    ↳ Logitech USB Receiver                    id=8 [slave  keyboard (3)]
user@user-pc:~/at.bitfire.gfxtablet_2_src/driver-uinput@
apareciendo el drive Network Tablet, listo para su uso en aplicaciones gráficas de Linux.
Activamos la aplicación GfxTablet y la configuramos, poniendo la ip que tenga el PC en estos momentos - mediante ifconfig.
Seguidamente comprobamos que responde a los trazos que hagamos sobre la pantalla táctil del dispositivo. A medida que movamos el dedo por encima de la pantalla del dispositivo, o mejor con un lápiz digitalizador,  en la ventana de comandos aparecerá en la ventana de comandos una línea tras otra, con las coordenadas y el valor con el que presionamos la pantalla táctil.
.x: 8892, y: 10979, pressure: 819
.x: 10291, y: 10473, pressure: 819
.x: 11961, y: 10253, pressure: 819
.x: 13341, y: 10632, pressure: 819
.x: 14363, y: 10933, pressure: 819
.x: 15505, y: 11699, pressure: 819
.x: 16287, y: 12936, pressure: 1228
.x: 16762, y: 13455, pressure: 1228
.x: 16829, y: 13631, pressure: 819
.x: 17257, y: 14103, pressure: 819
.x: 17485, y: 14320, pressure: 1023
.x: 17590, y: 14366, pressure: 1023
...
Ahora solo queda ver si funciona con una aplicación gráfica de Linux, por ejemplo GIMP. Ejecutamos GIMP y nos vamos a Editar->Preferencias->Dispositivos de entrada y pulsamos la opción Configurar los dispositivos de entrada extendidos... apareciendo los dispositivos de entrada existentes, entre los que se tendrá que encontrar Network Tablet. Lo seleccionamos y lo configuramos, poniendo el modo en Pantalla. Guardamos y Cerramos. Y ya podemos hacer uso de la tableta digitalizadora.

Observaciones

Una vez que terminemos de utilizar el driver, será mejor abortar la ejecución del driver, pulsando CTRL-C en la ventana donde esté funcionando el driver.

Este utilidad está licenciada bajo la licencia MIT.

Referencias

GfxTablet Demo in Youtube 
GfxTablet - Android App on Google Play

Mejoras

Este solución permite utilizar de una manera rudimentaria un dispositivo Android como tableta virtual de una aplicación gráfica de Linux. Para sacarle más partido a esta solución se me ocurren algunas mejoras que a continuación paso a relacionar:
  • movimiento relativo del lápiz.
  • poner una imagen como fondo de la aplicación GfxTablet, que sirva de referencia al movimiento del lápiz, con lo que se facilitaría la acción de trazar la imagen en el lienzo.
  • limitar el movimiento del cursor al lienzo activo de la aplicación gráfica.
  • activar/desactivar la acción del lápiz sobre el lienzo.
Si a alguien se le ocurre alguna idea más, que la exponga en los comentarios para ver la manera de implementarla.