[Tutor] New to Python - simple question

Unaiza Ahsan unaiza.ahsan at gmail.com
Fri Nov 16 18:40:22 CET 2012


Hi all,

I am following Jan Erik Solem's book "Programming Computer Vision with
Python" and I'm just on the first chapter. The book asked us to create a
file imtools.py and put down helpful functions there, which we can just
call later.

There is a function created for histogram equalization of images (called *
histeq*), and saved in imtools.py. When I use this function and type this
in IDLE:
>>> from PIL import Image
>>> from numpy import *
>>> im = array(Image.open('Tulips.jpg').convert('L'))
>>> im2,cdf = imtools.histeq(im)

I get this:

Traceback (most recent call last):
  File "<pyshell#59>", line 1, in <module>
    im2,cdf = imtools.histeq(im)
  File "C:\Python27\imtools.py", line 18, in histeq
    imhist,bins = histogram(im.flatten(),nbr_bins,normed=True)
NameError: global name 'histogram' is not defined

And the relevant portion in imtools.py is:
def histeq(im,nbr_bins=256):
    """ Histogram equalization of a grayscale image. """

    #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

------------------------------------
Can anybody point out where I'm going wrong? I have Python 2.7, NumPY,
SciPY etc.

Thanks very much

Python Newbie!
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20121116/1030dad4/attachment.html>


More information about the Tutor mailing list