Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

We have an opportunity for an OpenCV Developer to help us solve a problem and potentially be a "go-to" person for future development requirements. We'd like to hear from YOU if this is something you can help us resolve!

We are a small drone-imagery analysis company in Colorado Springs working with Precision Agriculture flyers to service the farming communities. One of our challenges is to mosaic LARGE numbers of images (>1000) after we've analyzed them. And our process is not working :( so here's a little of where we are in the process....

The goal is to stitch a set of unordered images obtained from an aerial platform to create a single image.

Additional Information

The images do contain pitch, roll and yaw information (but can be assumed to be shot nadir) and they also contain geo coordinates. This information gets us close to a solution, but the sensors are not accurate enough to form a good looking result (Some of the individual images appear to be positioned up to 5 yards from their actual position when compared to either each other or to a ground control image. The images are also not rotationally oriented to each other correctly. Again, this varies, but appears to be off by up to 15 degrees in some cases).

Software

The application is written in c++ using OpenCV for the image processing, SBA (sparse bundle adjust) libraries for final BA, and Gdal for conversion from JPEG to geotiff.

The Approach

I have tried many things so far, but this is what seems to get me the closest results:

Load in the camera intrinsic values. Perform feature matching using SURF. Obtain the estimated Homography between images 1 and 2 using Open CV methods, including RANSAC to remove outliers from the matches. Extract the Rotations and Translations from the Homography and project the image using Image Warp functions. Blend the images

As I mentioned, the results are close, but still noticeable errors in the rotation and translation between the images.

I am assuming a bundle adjustment should “fix” the images, but I have not been able to see this functionality work correctly. The OpenCV Bundle Adjust is for rotations only, so I have been researching using another library that should correct for rotation and translations. So far, the results are worse than pre-bundle adjustment, so I am currently trying to figure out this library. The version I have expects a set of 3D object points, and 2 sets of image points. I have been making an assumption the image is planer, and setting the z-values for the object points to 1 (I don’t have a DEM to work from. The image is of a football field and is pretty flat, so I am assuming this assumption should work. However, it is also possible the assumption is incorrect, so figuring out a bundle adjustment for just the 2D points in the image would be acceptable at this time.

Problems

Need to figure out if there is a better way of estimating the initial Homography. Possibly looking at an iterative approach to refine the results. Is there a better method than SURF (The matches seem to be pretty good when visualizing the results) to find and match features. Figure out if there is a way to do a bundle adjust that provides rotation and translation adjustments over a 2D point set.

Hope to hear back soon!!