[SciPy-User] Help optimizing an algorithm

Chris Weisiger cweisiger@msg.ucsf....
Wed Jan 30 11:29:01 CST 2013


We have a camera at our lab that has a nonlinear (but monotonic) response
to light. I'm attempting to linearize the data output by the camera. I'm
doing this by sampling the response curve of the camera, generating a
linear fit of the sample, and mapping new data to the linear fit by way of
the sample. In other words, we have the following functions:

f(x): the response curve of the camera (maps photon intensity to reported
counts by the camera)
g(x): an approximation of f(x), composed of line segments
h(x): a linear fit of g(x)

We get a new pixel value Y in -- this is counts reported by the camera. We
invert g() to get the approximate photon intensity for that many counts.
And then we plug that photon intensity into the linear fit.

Right now I believe I have a working algorithm, but it's very slow (which
in turn makes testing for validity slow), largely because inverting g()
involves iterating over each datapoint in the approximation to find the two
that bracket Y so that I can linearly interpolate between them. Having to
iterate over every pixel in the image in Python isn't doing me any favors
either; we typically deal with 528x512 images so that's 270k iterations per
image.

If anyone has any suggestions for optimizations I could make, I'd love to
hear them. My current algorithm can be seen here:
http://pastebin.com/mwaxWHGy

-Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20130130/a160296b/attachment.html 


More information about the SciPy-User mailing list