This is a video demonstrating a possible workflow that may improve stitching results from a range of aerial photos. This particular technique does not preserve geometry nor creates a georeferenced image, so its intended use is for visual indication only. It should be useful for any image type, whether its orthophoto, NIR or infrablue.

1. Imports the photos from the camera into visualsfm. No EXIF/GPS info or log required

2. Exports the vsfm cam orientation info and uses cloudcompare to open the "bundler" file to reproject the images, removing their specific orientations.

3. Importing the new photo tiles into microsoft ICE for generating an orthophoto like image.

A photo stitcher is designed to make seams go away, so it's tricky to be sure that all photos went to the right place. Sometimes you get roads veering off into impossible directions. When you take photos from different directions and rotations, the stitching software needs to figure out a lot orientation information based on the features it recognizes, yet it doesn't allow any input of external GPS(EXIF) or orientation information. The results can be pretty disappointing.You can even see with this technique that the stitching type misapplied a couple of photos in wrong locations.

This workflow instead makes use of structure-from-motion to calculate the camera positions and then reprojects the contents of each photo into a tile with a common "up" or "north". The idea is that these tiles can then be used in Microsoft ICE using the "planar motion 1 or 2" types of photo stitching (not shown in this video).

The end results aren't perfect, but usable for some situations. The CloudCompare process seems to introduce a lot of distortion into the images, This could be due to the altitude variations around the pit, assuming it's applying a complicated 3D reprojection. I've found that it works slightly better for flatter landscapes.

It is not always necessary to rotate over x by -90 degrees, only when you get thin looking tiles. In VisualSfM when the CMVS process starts, you actually need to kill it from task manager.

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • I recently tried this method and its a great idea, thanks Gerard. One thing I have found though, is that with larger collections the orthophoto generation phase in CC often yields oblique 'squashed' images which have too little information to be undistorted (for example by changing the aspect ratio to 4:3).

    I used fixed calibration in VisualSFM after calibrating with 3DF Lapyx. The K1 radial distortion parameter is only 0.012.

    Any ideas why this should be happening?

  • The distortion is massive on the gopro, but everything is worth a try.

    You want to take pictures then, not video. You can use agisoft lens to calibrate your gopro first, then you can see before/after effect of how much your final image distorts when snapping a pic. The resolution is good enough at 12MP, but if the distortion at edges is too high, you're better off cropping the center out. That means you'd have to have much more overlap in your images. Visualsfm is happy enough dealing with lowres pics as well, because it actually caps the features it recognizes in images. So increasing resolution doesn't improve recognition capability, it would actually reduce it.

    I don't know how well visualsfm copes with extreme radial distortions, but you could try turning "shared calibration"  on, since you're not changing the zoom on the camera. I found it usually deteriorates results, but certainly worth a try.

    If you have an old point&shoot available somewhere, that may give you better results in the end. 10MP is enough. What's important is that the image is sharp. some P&S's have reasonable sharpness in center, but really degrade sharpness near the corners (bad optics).

  • That's really amazing! I would love to try it. Do you know if it works with the fisheye pictures from a GoPro?

  • Or you could just use AirPhotoSE:

    Creates orthophotos and DEMs from multiple aerial photos, in conjunction with CloudCompare and ICE. And it's free.

    AirPhotoSE Contents
  • nice job ;)

This reply was deleted.