Monday, 22 September 2014

Fisheye Lenses for Photogrammetry



Most of the computer vision literature tends to concentrate on the use of linear pinhole projection models and simple lens distortion terms. This is advantageous in terms of simplicity and computational speed, but by using a more general projection model expressed as an image coordinate to ray function, it becomes surprisingly easy to make use of more exotic lens and camera types such as an ultra wide angle fisheye.



Why would you want to do this? Using photogrammetry to scan enclosed spaces can be rather tedious due the need to maintain good overlap between images while achieving sufficient parallax and covering a full 360 degree field of view. The wider the lens, the easier this gets, and a fisheye lens is as wide as you can get with a normal camera.

My choice of lens in this case is the Samyang 7.5mm fisheye for micro four thirds cameras. It covers the full sensor area (rather than being a circle-in-a-square type which wastes available resolution), is very cheap, and is very sharp in all but the extreme corners of the frame.



To express the projection of the Samyang fisheye, I used an equisolid angle model given by: 


Where r, f and theta are the radius from the centre of the sensor, focal length, and angle between a ray and the optical axis respectively.
It seemed unlikely that the lens would fit this perfectly so I added polynomial radial distortion and decentering terms to that.

Armed with my fisheye lens on a Panasonic G3 and a suitable mathematical model for the lens, I went down to the beach to capture some images for calibration.





Perhaps not the most beautiful photos ever taken of a New Zealand beach, but they fill the frame with some nice high texture sand for accurate feature matching.

Performing a bundle adjust on the calibration sequence yielded extremely low values for the decentering and extra distortion terms. The Samyang fisheye turns out to be very close to an ideal equisolid angle projection, closer than most standard wide angle lenses are to being rectilinear.

The resulting reconstruction has good detail, but includes rather a lot of geometry from the surroundings in this non-enclosed setting.




2 comments:

  1. Hi Roddy, can you tell me what the tool chain was do to all this? I am a complete novice but willing to learn :)

    Cheers from Oz.

    ReplyDelete
  2. Hi Paul, the photogrammetry reconstruction part of this uses a tool chain that I wrote a few years ago and isn't publicly available. However, you can do the same thing using Agisoft Photoscan or other similar photogrammetry software. The last time I checked, that didn't support fisheye lenses, so you would need to use a wide angle rectilinear lens instead.

    ReplyDelete