Difuminar imágenes con -gaussian-blur de ImageMagick
Una de las formas que tiene ImageMagick de difuminar imágenes es el operador -gaussian-blur, que convoluciona la imagen con una distribución gaussiana o normal a partir de un valor sigma dado.
El operador -gaussian-blur admite dos parámetros:
- Radio -> se usa para determinar el tamaño de la matriz que contendrá la distribución gaussiana. Debería ser un número entero. Si no se proporciona, o se establece en cero, ImageMagick calculará el radio más grande posible que proporcionará resultados significativos para la distribución gaussiana.
- Sigma -> determina la cantidad real de desenfoque que se aplicará. Es un valor opcional.
Para ver cómo opera -gaussian-blur vamos a crear una imagen con alto contraste y líneas bien definidas para ver muy claramente las modificaciones:
convert -size 200x145 xc:Black -bordercolor White -border 200x100 -bordercolor Black -border 100x50 base_blur.jpg
Modificando sólo el radio
Debemos indicar a gaussian-blur mínimo un valor, el radio, ya que si intentamos no indicarle ningún valor, nos genera un error:
convert base_blur.jpg -gaussian-blur gaussian_blur.jpg
Devuelve:
convert-im6.q16: invalid argument for option `-gaussian-blur': gaussian_blur.jpg @ error/convert.c/ConvertImageCommand/1693.
Pero si indicamos únicamente el valor del radio, no modifica la imagen, independientemente de que el valor indicado sea bajo o alto:
convert base_blur.jpg -gaussian-blur 5 gaussian_blur_5.jpg convert base_blur.jpg -gaussian-blur 50 gaussian_blur_50.jpg
Como vemos, aunque no genere un error, con un único valor, gaussian-blur no genera ninguna modificación sobre la imagen. Necesitamos el valor sigma.
Modificando radio y sigma
Para modificar radio y sigma lo indicaremos con:
-gaussian-blur $radiox$sigma
Así:
convert base_blur.jpg -gaussian-blur 5x5 gaussian_blur_5x5.jpg
convert base_blur.jpg -gaussian-blur 5x50 gaussian_blur_5x50.jpg
convert base_blur.jpg -gaussian-blur 50x5 gaussian_blur_50x5.jpg
convert base_blur.jpg -gaussian-blur 50x50 gaussian_blur_50x50.jpg
Como vemos, para que se genere un difuminado gaussiano, debemos aplicar un par radio-sigma equilibrado, con valores iguales o muy parecidos. Cuanto mayores sean ambos valores, tanto mayor será el difuminado.