I've made a lot of progress with the timing of shots in the last few days. I set up a handshake from the camera shooting routines in continuous mode, to the Lua script so they wait for each other. This was my first test of the new routines, on the SX260 and also the G1X. Here's the G1X video (watch in HD):
http://www.youtube.com/watch?v=1-Dez4slXU4#wsIt's instructive to look at the first two frames, and the last frame of the video. Here they are, in full resolution:
This shot was metered by the camera with the standard center metering area. I set 4 shot metering areas, one in each quadrant, which are drawn over the first picture. If you click on the picture and zoom in, you can see that the areas are slightly separated from each other.
This shot was taken about 1/2 second after the first shot, and is metered by the new shot_meter functions using the first shot. Each metering area returns an exposure correction to the script. The script picks the darkest correction, and sets the exposure for the next (this) shot. This results in optimum exposure of the sky, and underexposure of the darker part below, which is what I wanted.
This is the last shot of the video, when the SDHC card filled up (with RAW images). The camera kept on shooting correctly exposed images that were never saved, but were logged and timed. I knew something wasn't correct, but didn't realize it was a full card. I'll have to check for this in the future. The log says that the script was ready for this shot 730 msec early (out of a 1000 msec total interval). That's pretty good. However, the next shot was 1200 msec LATE! That's horrible. The script spent about 2 full seconds hung up by the file save problem, it would appear, which delayed the next shot because of the hand shake.
The result of this test is that I realized that the Lua script can't keep up with the speed of continuous mode shooting. I'll move the exposure adjustments into the C shoot loop, and the script will just monitor what's going on, enter new exposure compensation values occasionally, and start/stop the whole thing. I know this will work because I've done it by setting my interval to 0, which disables the hand shake. The script misses shots, but still sets exposure whenever it can, so it looks ok for a time lapse. By moving the set exposure part into the C shoot loop, each shot will be correctly exposed.
I'm not sure I've gotten across how useful this all is. Time lapses come out crystal clear, and slow enough to appreciate, when each shot can be a single frame. This requires high speed shooting. And with a picture every 1/2 second, you're pretty close to having a video, but with 4000x3000 resolution, 14 bit dynamic range, and accurate exposure using shot metering. The pictures in this time lapse have enough resolution to zoom in on the post office and watch the trucks come and go. The first picture shows 4 trucks at the post office loading dock. The last picture shows 5 trucks. You could look through the pictures and find exactly when the 5th truck arrived, or make a video zoomed in at the post office lot. Right click on the picture, and save or open it in a new tab to see the full resolution image. The place I'm talking about is in a notch in the trees towards the lower, right center of the image.
Also, I was showing some friends how fast the camera took pictures in continuous mode, and how it still adjusted the exposure between shots. They hammed it up in front of the camera for awhile, but when they stopped, there was one image where their phony smiles became real smiles for just a moment. Those moments don't happen very often, and you don't capture them with correct exposure unless you're really lucky. High speed multi-shot metering could be an extremely useful feature for point and shoot cameras. Stay tuned.