import numpy as npfrom PIL import Imagedef normalize(arr): """ Linear normalization http://en.wikipedia.org/wiki/Normalization_%28image_processing%29 """ arr = arr.astype('float') # Do not touch the alpha channel for i in range(3): minval = arr[...,i].min() maxval = arr[...,i].max() if minval != maxval: arr[...,i] -= minval arr[...,i] *= (255.0/(maxval-minval)) return arrdef demo_normalize(): img = Image.open(FILENAME).convert('RGBA') arr = np.array(img) new_img = Image.fromarray(normalize(arr).astype('uint8'),'RGBA') new_img.save('/tmp/normalized.png')