Tengo un script que utiliza Google Maps API para descargar una secuencia de imágenes satelitales cuadradas de igual tamaño y genera un PDF. Las imágenes deben girarse de antemano, y ya lo hago usando PIL.Normalizar el histograma (brillo y contraste) de un conjunto de imágenes usando Python Image Library (PIL)
Noté que, debido a las diferentes condiciones de luz y terreno, algunas imágenes son demasiado brillantes, otras son demasiado oscuras, y el pdf resultante termina un poco feo, con condiciones de lectura "in the field" (que es el ciclismo de montaña fuera de pista, donde quiero tener una miniatura impresa de encrucijadas específicas).
(EDITAR) El objetivo es hacer que todas las imágenes terminen con un brillo y contraste aparente similares. Por lo tanto, las imágenes que son demasiado brillantes tendrían que oscurecerse, y las oscuras tendrían que iluminarse. (Por cierto, una vez usé imagemagick autocontrast
, o auto-gamma
, o equalize
, o autolevel
, o algo así, con resultados interesantes en imágenes médicas, pero no sé cómo hacer ninguna de estas en PIL).
Ya utilicé algunas correcciones de imagen después de convertir a escala de grises (tenía una impresora en escala de grises hace un tiempo), pero los resultados tampoco fueron buenos. Aquí está mi código de escala de grises:
#!/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
Este código funciona de forma independiente para cada imagen. Me pregunto si sería mejor analizar primero todas las imágenes y luego "normalizar" sus propiedades visuales (contraste, brillo, gamma, etc.).
Además, creo que sería necesario realizar algunos análisis en la imagen (¿histograma?), Para aplicar una corrección personalizada en función de cada imagen, y no una corrección igual para todos ellos (aunque cualquier "mejora" "la función considera implícitamente las conticiones iniciales).
¿Alguien tuvo tal problema y/o sabe una buena alternativa para hacer esto con las imágenes en color (sin escala de grises)?
Cualquier ayuda será apreciada, ¡gracias por leer!
¡Buena pregunta! Sin embargo, se necesita alguna aclaración. Además, publicar imágenes de ejemplo sería muy útil para que las personas lo usen como casos de prueba. En primer lugar, ¿existe el problema de que los bordes de los mosaicos no coincidan bien cuando los descarga? ¿O estás buscando una forma de iluminar los mosaicos oscuros y atenuar los brillantes? ¿O necesitas hacer lo último mientras mantienes la continuidad de los bordes? – Paul
Los bordes no son un problema, porque el conjunto de imágenes no es continuo. El objetivo es oscurecer a los más brillantes e iluminar a los oscuros, como dijiste. – heltonbiker