Image Stitching Tutorial Part #1: Introduction
Background
During the summer of 2014 I began investigating image stitching techniques and technologies for a NOAA sponsored UAS marine survey project. In the summer of 2015 I was hired by the University of Minnesota Department of Aerospace Engineering and Mechanics to work on a Precision Agriculture project that also involves UAS’s and aerial image stitching.
Over the past few months I have developed a functional open-source image stitching pipeline written in python and opencv. It is my intention with this series of blog postings to introduce this work and further explain our approach to aerial image processing and stitching.
Any software development project is a journey of discovery and education, so I would love to hear your thoughts, feedback, and questions in the comments area of any of these posts. The python code described here will be released under the MIT open-source software license (one of my to-do list items is to publish this project code, so that will happen “soon.”)
Why?
The world already has several high quality commercial image stitching tools as well as several cloud based systems that are free to use. Why develop yet another image stitching pipeline? There are several reasons we began putting this software tool chain together.
- We are looking at the usefulness and benefits of ‘direct georeferencing.’ If we have accurate camera pose information (time, location, and camera orientation of each image), then how can this improve the image analysis, feature detection, feature matching, stitching, and rendering process?
- One of the the core strengths of the UMN Aerospace Engineering Department is a high quality 15-state kalman filter attitude determination system. This system uses inertial sensors (gyros and accelerometers) in combination with a GPS to accurately estimate an aircraft’s ‘true’ orientation and position. Our department is uniquely positioned to provide a high quality camera pose estimate and thus examine ‘direct georeferencing’ based image processing.
- Commercial software and closed source cloud solutions do not enable the research community to easily ask questions and test ideas and theories.
- We hope to quantify the sensor quality required to perform useful direct georeferencing as well as the various sources of uncertainty that can influence the results.
- We would love to involve the larger community in our work, and we anticipate there will be some wider interest in free/open image processing and stitching tools that anyone can modify and run on their own computer.
Outline
I will be posting new tutorials in this series as they are written. Here is a quick look ahead at what topics I plan to cover:
- Direct Georeferencing
- Image stitching basics
- Introduction to the open-source software tool chain
- Aircraft vs. camera poses and directly visualizing your georeferenced data set
- Feature detection
- Feature matching
- Sparse Bundle Adjustment
- Seamless 3D and 2D image mosaics, DEM’s, Triangle meshes, etc.
Throughout the image collection and image stitching process there is art, science, engineering, math, software, hardware, aircraft, skill, and a maybe bit of luck once in a while (!) that all come together in order to produce a successful aerial imaging result.
Software Download
The software referenced in this tutorial series is licensed with the MIT license and available on the University of Minnestoa UAV Lab public github page under the ImageAnalysis repository.