[OpenDroneMap-dev] Ideas for speeding up the Point Matching

Alex Mandel tech_dev at wildintellect.com
Sun Mar 15 20:00:56 PDT 2015


So 2 days in to running ~1000 images I started pondering how to speed up
the point matching step.

Here's the basic idea, split the list of images into related chunks,
process those chunks and then process a slice of overlap from 2 adjacent
chunks.

This nice part is that this idea will work for either time/numeric
ordered or GeoExif grouping.

Here's the basic idea, take a number of photos that is reasonable to
process like 100. Now take your set of photos, 1000 and divide it by
100. So you first do 10 sets of a 100. Then you take 1/2 or 1/3 or 1/4
of two adjacent sets. So the last 50 of set 1 and first 50 of set 2 (for
1/2), that gives you 9 additional sets of 100 but you only have to do
1/2 of the matches, only the ones that have a photo from a different
original set.

Here's the math:
n!/(r!(n-r)!)
http://www.calculatorsoup.com/calculators/discretemathematics/combinations.php

n is number of photos in a set
r is 2, number of photos in a pair

100 Photos is 4950 pairs. If you do just 1000 you get 499,500 pairs to
check. If you do what I said above, groups of 100, with 50% overlap you
get 71,775 pairs to check ((10*4950)+9(4950/2))

Now for the fancy part, the dumb application of this to GeoExif is to
take the bbox of all the photos, take the longer side of the box and
divide it by 10, so you make 10 new rectangles and run each of those as
a set, then run the 9 overlap regions. Long term we can get smarter with
how we pick the regions to ensure ~100 images per region.

So steps to accomplish this,
1. write a short script to make lists of photos in each set to run.
2. figure out how to send the lists to the point matching tool
2a. figure out how to make the point matching tool skip matches done in
a previous set.
3. Continue from there as usual.

Feedback anyone?

Thanks,
Alex


More information about the OpenDroneMap-dev mailing list