It looks you are both OK with making this an additive change to the `__init__` kwarg list: I'm perfectly happy with that.

Perhaps I'm being stupid, but I still don't see how the `Image` option for `noise_pad` strikes a sensible balance between potentially useful and potentially inefficient.  I'll try and explain more clearly.

In Python it's obviously just a replacement for `InterpolatedImage(..., noise_pad=galsim.ImageCorrFunc(noise_image))` which is fine but I agree it should be documented that this is likely to be wasteful.

As for config... If I understand correctly, config has to take a string containing an image filename for the noise image to use for the correlation function.  An efficient way to then proceed would be to have config generate an `ImageCorrFunc` for the image saved at the string location, one time only, and pass that to `noise_pad` repeatedly until (perhaps for a later object) the string changes.  Does config not currently work this way?  Perhaps this is impossible for a reason I don't understand?  If it's possible, I'd be happy to try and implement it.

The reason this is important is that typically these images of noise should and will be as large as we can make them, so that the multiple DFTs taking place during the `ImageCorrFunc.__init__` should be pretty costly.  Slower than I/O on all but the fastest systems.  So if we have a different filename for *every* galaxy we have to use the string as input anyway, and if the correlated noise fields we want to use are duplicated then we should call `ImageCorrFunc.__init__` as infrequently as possible. There doesn't seem to be any space in between these two extremes in which passing an `Image` rather than an `ImageCorrFunc` is efficient.