Pillow
Filtros
Avanzando en el manejo de imágenes trataré en esta entrada sobre una forma compleja de modificarlas. Me refiero al uso de filtros. Trataremos algunos de ellos mediante el módulo ImageFilter.
Un filtro de imágenes es el procesamiento de la imagen para su mejora o modificación, a fin de resultar cierto contenido o mejorar los valores de la imagen desde diferentes perspectivas (luminosidad, modificación del color, nitidez...).
El uso de filtros nos interesa, pues, por los efectos técnicos y artísticos de los mismos, pero también (y es lo que aquí nos trae) por motivos relativos al propio procesamiento, digamos que como preparación previa para posteriores desarrollos, como el reconocimiento automatizado de cierto contenido en las imágenes.
No obstante, en estos momentos nos limitaremos a explicar un número determinado (y limitado) de filtros y mostrar sus efectos. Se trata, pues, de completar la colección de herramientas que hemos ido viendo en entradas precedentes. Además nos sirve de enlace con la temática que desarrollaremos posteriormente, la cual, aunque no hablemos de ella ahora, es la que posibilita los procedimientos que trataremos.
El primer paso para aplicar filtros es importar los módulos...
from PIL import Image, ImageFilter
... y cargar la imagen (vg)...
#Directorio de la imagenimg_dir = 'img/cuadro.png'#Imagen originalimg = Image.open(img_dir)
... la cual, por motivos didácticos, nos interesa ahora que sea compleja y de calidad. En todo caso, el efecto de algunos filtros es fácilmente detectable, pero el de otros no lo es o depende de las características de la imagen original; por eso te recomiendo que pruebes con diferentes imágenes.
Por otra parte, la sintaxis es muy simple: función filter() aplicada a la variable asociada al archivo (vg. img.filter()) que contiene como parámetro la clase ImageFilter seguida del atributo NOMBRE_DEL_FILTRO, todo ello asociado a una nueva variable (img_FiltroX = img.filter(ImageFilter.CONTOUR)).
Te dejo a continuación el script con los filtros de mayor interés del módulo ImageFilter, aunque sobre eso hay opiniones. El código de cada filtro está comentado (por eso lo dejo en tinta negra) para que puedas activarlos (y visualizarlos) de forma sucesiva.
from PIL import Image, ImageFilter#Directorio de la imagenimg_dir = 'img/formas.png'#Imagen originalimg = Image.open(img_dir)img.show() #Ver imagen#Modificaciones mediante filtros -----------------------------------------------#Filtro BLUR (difuminar)'''img_Blur = img.filter(ImageFilter.BLUR)img_Blur.show()'''#Filtro CONTOUR (contorno)'''img_Cont = img.filter(ImageFilter.CONTOUR)img_Cont.show()'''# Filtro DETAIL (detalle)'''img_Det = img.filter(ImageFilter.DETAIL)img_Det.show()'''#Filtros EDGE_ENHANCE y EDGE_ENHANCE_MORE (realzar bordes)'''img_Bor1 = img.filter(ImageFilter.EDGE_ENHANCE)img_Bor1.show()''''''img_Bor2 = img.filter(ImageFilter.EDGE_ENHANCE_MORE)img_Bor2.show()'''#Filtro EMBOSS (efecto grabado)'''img_Emb = img.filter(ImageFilter.EMBOSS)img_Emb.show()'''#Filtro FIND_EDGES (detección de bordes)'''img_BorDetec = img.filter(ImageFilter.FIND_EDGES)img_BorDetec.show()'''#Filtro SHARPEN (agudizar)'''img_Ag = img.filter(ImageFilter.SHARPEN)img_Ag.show()'''#Filtros SMOOTH y SMOOTH_MORE (suavizar)'''img_Su1 = img.filter(ImageFilter.SMOOTH)img_Su1.show()''''''img_Su2 = img.filter(ImageFilter.SMOOTH_MORE)img_Su2.show()'''
El esperado efecto de cada filtro queda explicado en el comentario que antecede, así que no es necesaria más explicación. Lo que sí te sugiero desde el punto de vista técnico-estético, que es el que ahora nos interesa, es que pruebes con diferentes imágenes (tamaño, calidad, formato, complejidad compositiva...)



No hay comentarios:
Publicar un comentario
Comenta esta entrada