Ho uno script che utilizza l'API di Google Maps per scaricare una sequenza di immagini satellitari quadrate di dimensioni uguali e genera un PDF. Le immagini devono essere ruotate in anticipo, e lo faccio già usando PIL.Normalizzare l'istogramma (luminosità e contrasto) di un insieme di immagini utilizzando Python Image Library (PIL)
Ho notato che, a causa delle diverse condizioni di luce e del terreno, alcune immagini sono troppo luminose, altre sono troppo scure e il PDF risultante risulta un po 'brutto, con condizioni di lettura non ideali "sul campo" (che è il backcountry mountain bike, dove voglio avere una miniatura stampata di incroci specifici).
(EDIT) L'obiettivo è quindi di rendere tutte le immagini con luminosità e contrasto apparenti simili. Quindi, le immagini che sono troppo luminose dovrebbero essere oscurate, e quelle scure dovrebbero essere alleggerite. (a proposito, una volta ho usato imagemagick autocontrast
, o auto-gamma
o equalize
o autolevel
, o qualcosa del genere, con risultati interessanti in immagini mediche, ma non so come fare una di queste cose in PIL).
Ho già utilizzato alcune correzioni di immagine dopo la conversione in scala di grigi (aveva una stampante in scala di grigi qualche tempo fa), ma i risultati non erano neanche buoni. Ecco il mio codice in scala di grigio:
#!/usr/bin/python
def myEqualize(im)
im=im.convert('L')
contr = ImageEnhance.Contrast(im)
im = contr.enhance(0.3)
bright = ImageEnhance.Brightness(im)
im = bright.enhance(2)
#im.show()
return im
Questo codice funziona in modo indipendente per ogni immagine. Mi chiedo se sarebbe meglio analizzare prima tutte le immagini e poi "normalizzare" le loro proprietà visive (contrasto, luminosità, gamma, ecc.).
Inoltre, penso che sarebbe necessario eseguire alcune analisi nell'immagine (istogramma?), In modo da applicare una correzione personalizzata a seconda di ogni immagine, e non una correzione uguale per tutti loro (anche se "migliorare" "la funzione considera implicitamente le contizioni iniziali).
Qualcuno ha avuto tale problema e/o conosce una buona alternativa per farlo con le immagini colorate (senza scala di grigi)?
Qualsiasi aiuto sarà apprezzato, grazie per la lettura!
Buona domanda! Tuttavia sono necessari alcuni chiarimenti. Inoltre, pubblicare immagini di esempio sarebbe molto utile per le persone da utilizzare come casi di test. Innanzitutto, il problema è che i bordi delle tessere non corrispondono bene quando li scarichi? O stai cercando un modo per illuminare le piastrelle scure e offuscare quelle luminose? O hai bisogno di fare quest'ultimo mentre manteni la continuità del bordo? – Paul
I bordi non sono un problema, perché il set di immagini non è continuo. L'obiettivo è scurire i più brillanti e illuminare quelli oscuri, come hai detto tu. – heltonbiker