1. Cambiare modalità di colore
Un'immagine può essere rappresentata in diverse modalità di colore, come:
- RGB: Modalità colore standard.
- L: Tonalità di grigio.
- CMYK: Utilizzato per la stampa.
- RGBA: RGB con canale alfa (per trasparenza).
Per convertire un'immagine in una modalità di colore diversa, puoi usare il metodo convert().
Conversione in tonalità di grigio
Per rendere l'immagine in bianco e nero, usa la modalità di colore L:
# Conversione in tonalità di grigio
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
Questo codice converte l'immagine in bianco e nero e la salva nel file gray_example.jpg. È utile se vuoi creare uno stile monocromatico o preparare un'immagine per l'analisi, dove contano solo i livelli di luminosità.
Conversione in modalità CMYK
CMYK è spesso usato nella stampa. Convertire un'immagine in questa modalità può essere utile se l'immagine è destinata alla stampa.
# Conversione in CMYK
cmyk_image = image.convert("CMYK")
cmyk_image.save("cmyk_example.jpg")
2. Applicare filtri all'immagine
Pillow offre diversi filtri integrati che puoi usare per creare vari effetti. Questi filtri si trovano nel modulo ImageFilter.
Applicazione di filtri per sfocatura, contorni e nitidezza
from PIL import ImageFilter
# Applicazione del filtro sfocatura
blurred_image = image.filter(ImageFilter.BLUR)
blurred_image.save("blurred_example.jpg")
# Applicazione del filtro contorni
contour_image = image.filter(ImageFilter.CONTOUR)
contour_image.save("contour_example.jpg")
# Applicazione del filtro nitidezza
sharpened_image = image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_example.jpg")
Qui applichiamo tre filtri diversi:
- BLUR: Sfoca l'immagine, utile per creare effetti morbidi.
- CONTOUR: Evidenzia i contorni degli oggetti nell'immagine.
- SHARPEN: Aumenta la nitidezza, rendendo l'immagine più definita.
Altri filtri
Alcuni altri filtri utili in Pillow:
- DETAIL: Evidenzia i dettagli.
- EDGE_ENHANCE: Migliora i bordi.
- SMOOTH: Ammorbidisce l'immagine.
# Applicare il filtro per migliorare i bordi
edge_image = image.filter(ImageFilter.EDGE_ENHANCE)
edge_image.save("edge_enhance_example.jpg")
3. Regolare luminosità, contrasto, nitidezza e saturazione
Il pacchetto ImageEnhance in Pillow consente di modificare facilmente luminosità, contrasto, nitidezza e saturazione dell'immagine.
Regolazione della luminosità
Per modificare la luminosità, usa la classe ImageEnhance.Brightness. Il fattore di luminosità può essere qualsiasi numero: 1.0 — luminosità originale, meno di 1.0 — oscura, più di 1.0 — aumenta la luminosità.
from PIL import ImageEnhance
# Modifica della luminosità
enhancer = ImageEnhance.Brightness(image)
brighter_image = enhancer.enhance(1.5) # Aumento luminosità del 50%
brighter_image.save("brighter_example.jpg")
Regolazione del contrasto
Il contrasto rende le parti chiare più chiare e quelle scure più scure. Per regolare il contrasto, usa ImageEnhance.Contrast.
# Modifica del contrasto
enhancer = ImageEnhance.Contrast(image)
higher_contrast_image = enhancer.enhance(1.5) # Aumento del contrasto del 50%
higher_contrast_image.save("higher_contrast_example.jpg")
Regolazione della nitidezza
La nitidezza definisce quanto siano netti i bordi degli oggetti nell'immagine. Per regolare la nitidezza, usa ImageEnhance.Sharpness.
# Modifica della nitidezza
enhancer = ImageEnhance.Sharpness(image)
sharper_image = enhancer.enhance(2.0) # Aumento nitidezza 2 volte
sharper_image.save("sharper_example.jpg")
Il valore 1.0 mantiene la nitidezza originale, meno di 1.0 rende l'immagine più sfocata, più di 1.0 — più nitida.
Regolazione della saturazione
La saturazione dei colori rende i colori più o meno intensi. Per modificare la saturazione, usa ImageEnhance.Color.
# Modifica della saturazione
enhancer = ImageEnhance.Color(image)
more_vibrant_image = enhancer.enhance(1.5) # Aumento saturazione del 50%
more_vibrant_image.save("more_vibrant_example.jpg")
4. Confronto dei metodi di correzione immagine
| Metodo | Descrizione | Applicazione |
|---|---|---|
convert("L") |
Convertire un'immagine in modalità bianco e nero | Stile monocromatico, analisi delle tonalità |
ImageFilter |
Applicare filtri per sfocatura, nitidezza, ecc. | Effetti visivi, evidenziare oggetti |
ImageEnhance.Brightness |
Regolazione della luminosità | Illuminare o oscurare |
ImageEnhance.Contrast |
Modifica del contrasto | Miglioramento visibilità dettagli |
ImageEnhance.Sharpness |
Modifica della nitidezza | Rendere i bordi più nitidi |
ImageEnhance.Color |
Regolazione saturazione colori | Creare immagini vivaci |
5. Esempi
Esempio di elaborazione completa di un'immagine
Uniamo tutto quanto detto sopra e creiamo un codice che esegue diverse fasi di correzione colore, applicando filtri e modificando luminosità, contrasto e saturazione.
from PIL import Image, ImageEnhance, ImageFilter
# Caricamento immagine
image = Image.open("example.jpg")
# Conversione in modalità bianco e nero
gray_image = image.convert("L")
gray_image.save("gray_example.jpg")
# Applicazione del filtro nitidezza
sharpened_image = gray_image.filter(ImageFilter.SHARPEN)
sharpened_image.save("sharpened_gray_example.jpg")
# Aumento della luminosità
enhancer = ImageEnhance.Brightness(sharpened_image)
brighter_image = enhancer.enhance(1.3) # Più chiaro del 30%
brighter_image.save("brighter_gray_example.jpg")
# Aumento del contrasto
enhancer = ImageEnhance.Contrast(brighter_image)
higher_contrast_image = enhancer.enhance(1.5) # Più contrastato del 50%
higher_contrast_image.save("final_example.jpg")
Applicazioni pratiche della correzione colore
- Modifica foto: Regolare luminosità e contrasto può migliorare la visibilità dei dettagli in una foto, e i filtri possono rendere l'immagine più espressiva.
- Preparazione delle immagini per l'analisi: Convertire in bianco e nero, aumentare nitidezza e contrasto rendono l'immagine più chiara e adatta all'analisi.
- Stilizzazione immagini: Cambiare saturazione e applicare filtri consente di creare stili unici ed effetti per progetti di design.
GO TO FULL VERSION