python - histogram of gray scale values in numpy image -


i loaded image numpy array , want plot color values in histogram.

import numpy np  skimage import io skimage import color  img = io.imread('img.jpg') img = color.rgb2gray(img)  unq = np.unique(img) unq = np.sort(unq) 

when inspect value of unq see like

array([  5.65490196e-04,   8.33333333e-04,   1.13098039e-03, ...,          7.07550980e-01,   7.09225490e-01,   7.10073725e-01]) 

which has still values matplotlib idea loop on unq , remove every value deviates x it's predecessor.

dels = []  in range(1, len(unq)):     if abs(unq[i]-unq[i-1]) < 0.0003:         dels.append(i)  unq = np.delete(unq, dels) 

though method works inefficient not uses numpy's optimized implementations.

is there numpy feature me?

just noticed algorithm looses information how color occurs. let me try fix this.

if want compute histogram, can use np.histogram:

bin_counts, bin_edges = np.histogram(img, bins, ...) 

here, bins either number of bins, or vector specifying upper , lower bin edges.

if want plot histogram, easiest way use plt.hist:

bin_counts, bin_edges, patches = plt.hist(img.ravel(), bins, ...) 

note used img.ravel() flatten out image array before computing histogram. if pass 2d array plt.hist(), treat each row separate data series, not want here.


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -