1. Cambio del modo de color
Una imagen puede representarse en diferentes modos de color, tales como:
- RGB: Modo estándar a color.
- L: Escala de grises.
- CMYK: Usado en impresión.
- RGBA: RGB con canal alfa (para transparencia).
Para convertir una imagen a otro modo de color se usa el método convert().
Convertir a escala de grises
Para hacer una imagen en blanco y negro, usa el modo de color L:
# Conversión a escala de grises
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
Este código convierte una imagen a blanco y negro y la guarda en el archivo gray_example.jpg. Esto es útil si deseas crear un estilo monocromático o preparar una imagen para análisis donde solo se toman en cuenta los niveles de brillo.
Convertir al modo CMYK
CMYK se usa frecuentemente en la industria de impresión. Convertir una imagen a este modo puede ser útil si se prepara para imprimir.
# Conversión a CMYK
cmyk_image = image.convert("CMYK")
cmyk_image.save("cmyk_example.jpg")
2. Aplicar filtros a una imagen
Pillow ofrece varios filtros incorporados que puedes usar para crear efectos variados. Estos filtros están en el módulo ImageFilter.
Aplicar filtros de desenfoque, contorno y nitidez
from PIL import ImageFilter
# Aplicar un filtro de desenfoque
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_example.jpg")
# Aplicar un filtro de contornos
contour_image = image.filter(ImageFilter.CONTOUR)
contour_image.save("contour_example.jpg")
# Aplicar un filtro de nitidez
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_example.jpg")
Aquí aplicamos tres filtros diferentes:
- BLUR: Desenfoca la imagen, útil para crear efectos suaves.
- CONTOUR: Resalta los contornos de los objetos en la imagen.
- SHARPEN: Incrementa la nitidez, haciendo la imagen más nítida.
Otros filtros
Algunos otros filtros útiles en Pillow:
- DETAIL: Resalta los detalles.
- EDGE_ENHANCE: Mejora los bordes.
- SMOOTH: Suaviza la imagen.
# Aplicar un filtro para mejorar los bordes
edge_image = image.filter(ImageFilter.EDGE_ENHANCE)
edge_image.save("edge_enhance_example.jpg")
3. Ajuste del brillo, contraste, nitidez y saturación
El paquete ImageEnhance de Pillow te permite ajustar fácilmente el brillo, contraste, nitidez y saturación de una imagen.
Ajuste de brillo
Para cambiar el brillo usa la clase ImageEnhance.Brightness. El coeficiente de brillo puede ser cualquier número: 1.0 es el brillo original, menos de 1.0 oscurece y más de 1.0 aumenta el brillo.
from PIL import ImageEnhance
# Cambiar el brillo
enhancer = ImageEnhance.Brightness(image)
brighter_image = enhancer.enhance(1.5) # Incrementa el brillo en un 50%
brighter_image.save("brighter_example.jpg")
Ajuste de contraste
El contraste hace que las áreas claras sean más claras y las oscuras más oscuras. Para ajustar el contraste usa ImageEnhance.Contrast.
# Cambiar el contraste
enhancer = ImageEnhance.Contrast(image)
higher_contrast_image = enhancer.enhance(1.5) # Incrementa el contraste en un 50%
higher_contrast_image.save("higher_contrast_example.jpg")
Ajuste de nitidez
La nitidez determina qué tan claros serán los bordes de los objetos en una imagen. Usa ImageEnhance.Sharpness para cambiar la nitidez.
# Cambiar la nitidez
enhancer = ImageEnhance.Sharpness(image)
sharper_image = enhancer.enhance(2.0) # Incrementa la nitidez 2 veces
sharper_image.save("sharper_example.jpg")
Un valor de 1.0 mantiene la nitidez original, menos de 1.0 hace la imagen más borrosa, y más de 1.0 la hace más nítida.
Ajuste de saturación de color
La saturación de color hace que los colores sean más o menos intensos. Usa ImageEnhance.Color para cambiar la saturación.
# Cambiar la saturación
enhancer = ImageEnhance.Color(image)
more_vibrant_image = enhancer.enhance(1.5) # Incrementa la saturación en un 50%
more_vibrant_image.save("more_vibrant_example.jpg")
4. Comparación de métodos de corrección de imagen
| Método | Descripción | Aplicación |
|---|---|---|
convert("L") |
Convertir imagen a modo blanco y negro | Estilo monocromático, análisis de niveles |
ImageFilter |
Aplicar filtros para desenfoque, nitidez, etc. | Efectos gráficos, resaltar objetos |
ImageEnhance.Brightness |
Ajustar el brillo de una imagen | Iluminar o oscurecer |
ImageEnhance.Contrast |
Cambiar el contraste | Mejorar visibilidad de detalles |
ImageEnhance.Sharpness |
Cambiar la nitidez | Resaltar bordes, aumentar claridad |
ImageEnhance.Color |
Ajustar la saturación de color | Crear imágenes brillantes y vibrantes |
5. Ejemplos
Ejemplo de procesamiento completo de imagen
Combinemos todo lo anterior y creemos un código que realice varias etapas de corrección de color, aplicando filtros y cambiando el brillo, contraste y saturación.
from PIL import Image, ImageEnhance, ImageFilter
# Cargar imagen
image = Image.open("example.jpg")
# Convertir a blanco y negro
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
# Aplicar filtro de nitidez
sharpened_image = gray_image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_gray_example.jpg")
# Incrementar el brillo
enhancer = ImageEnhance.Brightness(sharpened_image)
brighter_image = enhancer.enhance(1.3) # 30% más brillante
brighter_image.save("brighter_gray_example.jpg")
# Incrementar el contraste
enhancer = ImageEnhance.Contrast(brighter_image)
higher_contrast_image = enhancer.enhance(1.5) # 50% más contraste
higher_contrast_image.save("final_example.jpg")
Aplicaciones prácticas de la corrección de color
- Edición de fotos: Ajustar el brillo y contraste mejora la visibilidad de los detalles en una foto, mientras que los filtros pueden hacer que una imagen sea más expresiva.
- Preparar imágenes para análisis: Convertir a blanco y negro, incrementar nitidez y contraste ayuda a que la imagen sea más clara y apta para análisis.
- Estilizar imágenes: Cambiar la saturación y aplicar filtros permite crear estilos únicos y efectos para proyectos de diseño.
GO TO FULL VERSION