2013-02-10 19 views
5

devo questa routine di fare equalizzazione di una foto:Istogramma equalizzazione per Python

def histeq(im,nbr_bins=256): 

    #get image histogram 
    imhist,bins = histogram(im.flatten(),nbr_bins,normed=True) 
    cdf = imhist.cumsum() #cumulative distribution function 
    cdf = 255 * cdf/cdf[-1] #normalize 

    #use linear interpolation of cdf to find new pixel values 
    im2 = interp(im.flatten(),bins[:-1],cdf) 

    return im2.reshape(im.shape), cdf 

#im = array(Image.open('AquaTermi_lowcontrast.jpg').convert('L')) 
im = array(Image.open('Unequalized.jpg').convert('L')) 
#Image.open('plant4.jpg').convert('L').save('inverted.jpg') 

im2,cdf = histeq(im) 

plt.imshow(im2) 
plt.savefig("outputhisto.jpg") 

Quando eseguo questo con il picture dalla pagina wiki di histogram equalization si traduce in questo: enter image description here

Invece di regolare correttamente il contrasto dell'immagine su qualcosa lungo le linee di this. Che cosa sto facendo di sbagliato?

+0

Perché il downvote? – Nick

+0

Dunno. Non importa quando ci sono sei upvotes :) :) –

risposta

5

Sei sicuro di non eseguire il rendering con la mappa colori errata? Prova

plt.imshow(im2, cmap=plt.cm.gray) 

O

plt.imshow(im2, cmap=plt.get_cmap('gray')) 
+1

Genius! haha è stato facile. E la sintassi esatta è 'cmap = plt.cm.gray' non grigia. Grazie! – Nick

Problemi correlati