I think this probably constitutes premature optimization.  I took Rachel's test_corr_padding unit test and converted it into a test of the relative timing of using an ImageCorrFunc, an Image or a file name.  It is called time_noise_pad.py in the the tests directory.  (We can delete it after this conversation is settled.)  Here is the output for three runs on my laptop:
```
$ python time_noise_pad.py 
time for test_corr_padding_cf = 2.34
time for test_corr_padding_im = 2.13
time for test_corr_padding_imgfile = 2.21

$ python time_noise_pad.py 
time for test_corr_padding_cf = 2.17
time for test_corr_padding_im = 2.11
time for test_corr_padding_imgfile = 2.20

$ python time_noise_pad.py 
time for test_corr_padding_cf = 2.23
time for test_corr_padding_im = 2.33
time for test_corr_padding_imgfile = 2.31
```
So it is certainly the case that all of these are probably too slow for production use, since each one is only building 3 InterpolatedImage objects, and that takes almost a second each.  But it doesn't seem to be the case that caching the ImageCorrFunc and sending that in each time helps at all.