'Returns a histogram for the image. The histogram is returned as
a list of pixel counts, one for each pixel value in the source
image. If the image has more than one band, the histograms for
all bands are concatenated (for example, the histogram for an
"RGB" image contains 768 values).
A bilevel image (mode "1") is treated as a greyscale ("L") image
by this method.
If a mask is provided, the method returns a histogram for those
parts of the image where the mask image is non-zero. The mask
image must have the same size as the image, and be either a
bi-level image (mode "1") or a greyscale image ("L").
:param mask: An optional mask.
:returns: A list containing pixel counts.'

def histogram(self, mask=None, extrema=None):

    self.load()
    if mask:
        mask.load()
        return self.im.histogram((0, 0), mask.im)
    if (self.mode in ('I', 'F')):
        if (extrema is None):
            extrema = self.getextrema()
        return self.im.histogram(extrema)
    return self.im.histogram()
