Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

GráficosSonidoVídeo

Filtros de Gimp - PSPIFiltros de Gimp - ShellOut

Filtros de Gimp - Refocus




Filtros de Gimp - Refocus




Copyright

Copyright © José Luis Lara Carrascal  2012-2023   http://manualinux.es



Sumario

Introducción
Instalación
Iniciamos Refocus
Uso de Refocus
Eg Smart Sharpen Redux
Paquetes binarios
Enlaces



Introducción  

Refocus es un filtro de Gimp, que utiliza una técnica llamada FIR Wiener Filtering, para perfilar y reenfocar las imágenes borrosas, obteniendo un resultado superior a otras técnicas tradicionales como la máscara de enfoque (Unsharp Mask), que podemos encontrar en casi todos los editores de imágenes, de más o menos calidad. En este manual trataremos la instalación de una versión modificada de este filtro, que es compatible con la última versión de Gimp, y que cuyo enlace web de descarga, ni siquiera existe ya. Versión a la que añado un parche personal de traducción de la interfaz de manejo del filtro.

Para finalizar el manual, se incluye una versión en español del Script-Fu, Eg Smart Sharpen Redux, que tiene como opción de uso, el poder utilizar el filtro Refocus, para mejorar el resultado final de la aplicación de este script.



Instalacion  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Refocus para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (16.0.6)
* Gawk - (5.2.2)
* Make - (4.4.1)
* Automake - (1.16.5)
* Autoconf - (2.71)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.8)
* GTK+ - (2.24.33)
* Gimp - (2.10.34)



Descarga  

refocus-0.9.0_gimp2.tar.xz  |  refocus_es.diff  |  refocus_preview.diff

Firma Digital  Clave pública PGP

refocus-0.9.0_gimp2.tar.xz.asc 

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'

Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto
Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma.

Parámetros adicionales

Parámetros adicionales de eliminación de avisos en el proceso de compilación
$ export {C,CXX}FLAGS+=' -w'

Parámetros adicionales de eliminación de errores específicos en el proceso de compilación
Clang 15
$ export {C,CXX}FLAGS+=' -Wno-implicit-int'

Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura
$ export LDFLAGS+=" -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64"
Cada usuario tendrá que establecer la ruta de búsqueda de directorios, en función de la distribución que utilice.

Parámetros adicionales de eliminación de errores específicos en el proceso de compilación
$ export LDFLAGS+=' -lm'

Establecer el uso de enlazador dinámico para Mold
$ export LDFLAGS+=' -fuse-ld=mold'

Establecer el uso de enlazador dinámico para LLD
Clang
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO/ThinLTO/PGO de LLD
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=" -Wl,--lto-partitions=$(nproc)"
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(nproc)"

Establecer la variable de entorno de uso de compilador para Clang
$ export CC=clang CXX=clang++

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar Jxvf refocus-0.9.0_gimp2.tar.xz
$ cd refocus-0.9.0_gimp2
$ patch -Np1 -i ../refocus_es.diff
$ patch -Np1 -i ../refocus_preview.diff
$ sed -i '102,104d' configure.in
$ autoreconf -vif -I /usr/local/share/aclocal
$ sed -i '101s: =:?&:' lib/Makefile.in
$ ./configure --bindir=$(pkg-config --variable=gimplibdir gimp-2.0)/plug-ins

Explicación de los comandos

patch -Np1 -i ../refocus_es.diff : Aplicamos este parche personal que traduce al español, los textos de la interfaz del filtro.

patch -Np1 -i ../refocus_preview.diff
: Con este otro parche personal cambiamos el tamaño predefinido del recuadro de vista previa de la imagen, de la interfaz del filtro, de 100x100 a 200x200 píxeles. El usuario puede modificar el parche a su antojo, cambiando el valor numérico en rojo, del parámetro PREVIEW_SIZE (200), por el que crea más adecuado.

sed -i '102,104d' configure.in : Borra los parámetros CFLAGS de compilación que añade el paquete, para poder compilarlo con las últimas versiones de GCC.

autoreconf -vif -I /usr/local/share/aclocal : Las modificaciones realizadas en los archivos base de configuración, implica ejecutar este comando de actualización del script de configuración del paquete. Se añade la ruta /usr/local/share/aclocal, para que encuentre el archivo gimp-2.0.m4, requerido para este proceso de reconfiguración, ruta que es la predefinida del manual de instalación de Gimp.

sed -i '101s: =:?&:' lib/Makefile.in : Este comando sólo es necesario si utilizamos la optimización LTO.

--bindir=$(pkg-config --variable=gimplibdir gimp-2.0)/plug-ins : Instala Refocus en el directorio de plugins de Gimp, en lugar de /usr/local/bin.

Compilación

$ make

Parámetros de compilación opcionales

-j$(nproc) : Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su -c "make install-strip"

Instalación alternativa como usuario

$ strip src/refocus
$ cp src/refocus $HOME/.config/GIMP/2.10/plug-ins

Estadísticas de Compilación e Instalación de Refocus

Estadísticas de Compilación e Instalación de Shiboken
CPU AMD Ryzen 5 5500
MHz 3593.250 (BoostMax=4457.000)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.4.11-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Versión de Glibc 2.38
Enlazador dinámico LLD 16.0.6
Compilador Clang 16.0.6
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto=thin -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -j12
Tiempo de compilación 1"
Archivos instalados /usr/local/lib64/gimp/2.0/plug-ins/refocus
Instalación alternativa $HOME/.config/GIMP/2.10/plug-ins/refocus
Ocupación de espacio en disco 72 KB

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX

refocus-0.9.0_es-scripts.tar.gz

$ su
# tar zxvf refocus-0.9.0_es-scripts.tar.gz
# cd refocus-0.9.0_es-scripts
# ./Desinstalar_refocus-0.9.0_es

Copia de Seguridad como root

$ su
# tar zxvf refocus-0.9.0_es-scripts.tar.gz
# cd refocus-0.9.0_es-scripts
# ./Respaldar_refocus-0.9.0_es

Restaurar la Copia de Seguridad como root

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_refocus-0.9.0_es



Iniciamos Refocus

Cuando iniciemos El Gimp, y abramos una imagen, podremos seleccionar el filtro desde Filtros >> Realzar [Enhance] >> Refocus ...


Captura- Refocus - 1


Captura- Refocus - 2




Uso de Refocus  

Definición de los parámetros de la interfaz del filtro
Tamaño matriz
Este parámetro determina el tamaño de la matriz de transformación, elemento clave en los resultados obtenidos por el filtro. Procurar siempre utilizar el valor máximo que permita las capacidades de nuestro procesador. A un valor alto, mayor será el tiempo de computación de la matriz necesario para aplicar el filtro u obtener la vista previa en la interfaz del mismo.
Radio
Define el radio de la convolución circular, valores entre el predefinido 1, y 1,40, pueden llegar a ser suficientes para la mayoría de imágenes, excepto en aquellas que estén muy desenfocadas. Cuanto más grande sea una imagen menor será el efecto del radio. A partir de 1,40 y en función del tamaño de imagen, puede crear un efecto de halo en los bordes de los objetos o personas. A mayor tamaño de imagen, mayor nivel de radio.
Gaussiano

Define el radio de la convolución gaussiana, se utiliza sobre todo en imagenes con alto contenido de desenfoque gaussiano. El problema de utilizar este tipo de convolución, es que genera mucho ruido en la imagen, creando un pernicioso efecto de halo sobre los bordes de los objetos o personas. Para compensar el efecto de este tipo de convolución, tendremos que recurrir a los parámetros de correlación y ruido, aunque el resultado obtenido puede llegar a estar más cerca de una imagen sintética que de una imagen natural o real.

Se puede combinar el uso de este parámetro con el anterior, o en su lugar, dejar en 0 el anterior, y utilizar solo éste.
Correlación
Aumentando los valores de este parámetro reducimos el efecto de perfilado sobre la imagen, y reduciéndolo, aumentamos el efecto de perfilado (también ruido) sobre la misma. Valores comprendidos entre 0,350 y 0,700 resultan más que adecuados para la mayoría de las imágenes. Por encima de 0,700, practicamente anulamos el efecto de perfilado sobre la imagen.
Ruido Junto con el parámetro de correlación se utiliza para reducir los efectos colaterales que todo filtro de enfoque suele tener sobre una imagen, y al que refocus no suele tampoco escapar. Valores comprendidos entre 0,05 y 0,20, son más que suficientes para reducir el ruido. Tener en cuenta que el temido efecto halo no lo elimina, sino que lo suaviza.

Como le sucede a la mayoría de filtros de suavizado de ruido, un abuso del mismo, puede dar como resultado una imagen plana y sintética, o como se dice comunmente, una imagen generada por ordenador.

Procurar siempre trabajar con una copia de la imagen original, duplicando la capa. Esto nos permite tener un control más exacto sobre la intensidad del filtro aplicado, pudiendo regular el nivel de opacidad de la capa superior. Cuando veamos que el resultado es óptimo, conbinamos la capa hacia abajo o aplanamos la imagen. Podemos repetir este proceso tantas veces como deseemos, los resultados pueden llegar a ser de mayor calidad, que hacerlo de una sola vez.

Y no olvidar nunca de apuntar aquellos valores que creemos son los más óptimos para un determinado tipo de imágenes, incluido el tamaño de la imagen a la que se ha aplicado el efecto. Esto nos ahorrará tener que volver a repetir el proceso de buscar el parámetro adecuado, tarea bastante entretenida para el escaso tiempo que suele tener la mayoría de la gente.



Eg Smart Sharpen Redux  

Este script está basado en este tutorial, que consiste en aplicar sólo el enfoque a los bordes de la imagen, en lugar de a la imagen entera, haciendo uso del filtro de detección de bordes, para crear una máscara de capa y posteriormente suavizando la zona de aplicación del mismo. El script utiliza por defecto el filtro de máscara de enfoque para realizar esta tarea, pero marcando la correspondiente opción, se puede utilizar el filtro Refocus, tratado en este manual. La ventaja de utilizar Refocus, a través de este script, es que los resultados suelen ser bastante buenos, tocando unos pocos parámetros, normalmente el de tamaño de matriz y el de ruido. Además, podemos aplicar el script en 3 o 4 veces consecutivas, sobre una misma imagen, y el resultado no se degrada tanto, al afectar sólo a los bordes de la imagen en lugar de a la imagen entera. La desventaja obvia es que carece de una vista previa para poder ver el efecto antes de aplicarlo.

En la versión en español se ha aumento el tamaño máximo de la matriz de transformación de 10 a 25, para equipararlo al máximo permitido por Refocus. La ubicación en el menú del programa, también se ha cambiado para diferenciar la versión en español de la original, y que será utilizada de forma predefinida, en el caso de seguir con la traducción al español de este tipo de scripts. Se podrá seleccionar desde Script-Fu >> Manualinux >> Enfocar >> Eg Smart Sharpen Redux ML.

Descarga  

egger-smart-redux-sharpen-ML_es.scm

Instalación como usuario

$ mkdir -p ~/.gimp-2.8/scripts
$ cp egger-smart-redux-sharpen-ML_es.scm ~/.gimp-2.8/scripts


Captura- Refocus - 3




Enlaces


http://refocus.sourceforge.net >> La web de Refocus.


Foro Galería Blog


Actualizado el 22-08-2023

Filtros de Gimp - Refocus

Filtros de Gimp - PSPIFiltros de Gimp - ShellOut