Hello, like many people here I'm interested in making planar panoramas and potentially some 3D surface reconstruction from aerial images. My hardware:
Quadcopter: 3DR Iris
Camera Gimbal: Tarot 2D for GoPro
Camera: GoPro Hero 4 Silver
The first thing I realized when I got the GoPro is that there is no way to programmatically trigger a photo capture! One can achieve this from the GoPro app, but that requires a wifi connection which should be disabled while operating the Iris otherwise there might be interference with the radio signals (though I have not experimented with keeping the wifi on and checking for how far the quad needs to be before the wifi becomes a problem).
There are some YouTube videos showing people soldering wires to the GoPro shutter connection and controlling the camera by manually closing the circuit, however I don't really want to do this. It voids the warranty on the camera for one, and just seems way too hacky.
In the absence of programmatic control of the GoPro trigger, I tried the following options for frame capture:
1. Use the photo mode to take pictures at a regular interval. There are two primary photo modes on the GoPro that allow for taking pictures at different FPS - Continuous mode and Multi-Shot mode. I chose the Time Lapse option under Multi-Shot mode settings as the GoPro automatically takes pictures at the set FPS without the user needing to press the shutter button. As far as I know, the other options require the user to push the shutter button, which makes them unsuitable for our purpose. There are many FPS options offered under Time Lapse. 2 or 1 FPS should work ok for most applications.
The pictures at the beginning and the end of the mission will be redundant, but that's not a big problem with a SD card with large enough capacity
2. Capture a video and use ffmpeg to strip out frames. I tried capturing videos at different resolutions and frame rates and then stripped out frames using the default options for ffmpeg. Some results are below:
Significant image distortion can be noticed near the edge of the car in the center of the picture.
The quality of the frame capture with the higher resolution video is slightly better.
increase the frame rate of the video capture leads to significantly better image capture quality. Finally, the key distinguishing feature of the GoPro Hero 4, 4K video:
Now the frame capture is of significantly higher quality, almost rivaling the quality of a time lapse picture
Time Lapse at 2 FPS:
So it appears that quality of the frame captures from a 4K video are comparable in quality to that of a photo. However, 4K videos take a lot of memory to store, a 32GB SD card can store about an 1 hour 10 min of 4K footage. Other considerations come into play as well - grabbing frames from a massive video file takes time and the number of resulting frames can be huge, making processing difficult. Also, at 30FPS, there can be significant motion blur during fast rotations, leading to poor quality of the frame captures. Keeping all this in mind, using Time Lapse photos seems to be the way to go for taking aerial pictures. I haven't tried experimenting with other photo mode settings such as exposure time, white balance, ProTune settings and so on.
Which cameras/camera gimbals are you guys using for aerial photos? I should have done a bit more research on the GoPro cameras, because they don't appear to be ideally suited for aerial photography. The fish eye lens and lack of shutter control being the most important reasons. Although the fish eye effect can be mitigated by image processing. Also, the Tarot gimbal I have only supports GoPro cameras. Has anyone succeeded in modifying a Tarot gimbal to hold a different camera? I'm also learning about CHDK (Canon Hacker Dev Kit) that allows controlling some Canon cameras using scripts stored on the SD card. Has anyone tried this on an Iris?