Thanks John, those links will be very helpful.
I put up some more images to illustrate my process, which works with un-georeferenced probe images.
Image registration and estimate of lighting direction:

Yes, I know the lighting isn't quite correct yet.
First stage output:


The second two encode the lighting and view directions in texture coordinates.
Then the second stage creates a model (albedo plus surface normal) with surface properties that reproduce the probe images. I don't really have any intermediate images that can illustrate the second stage.
There are a few things this process can do that ISIS and ARC's tools can't, in particular it can derive some of the surface albedo without a DEM. However, I'll likely get further by interoperating with those tools than with a fully custom implementation.