I've been looking at designing an SfM pipeline that's next to linearly scalable and can run in parallel. I have a background in programming and worked on a number of distributed systems. I'm just relaying my thoughts here to see what can possibly be achieved with little effort.
I have never implemented SIFT or anything related to SfM processing, not even on a single computer. So far I understand some basics of the processing pipeline.
My proposed architecture for parallellization is to attempt to redesign the pipeline as a set of operations on files on top of the hadoop framework with a "ceph" file backend, where these steps are designed as 100% parallellizable map/reduce steps, of course significantly subdividing the work. I'm not suggesting implementing each algorithm from scratch, but rather attempt to use 'best-of-class' implementations from library for each substep and try to manipulate the intermediate output files to a file format that the other process understands.
SfM can be described as the following pipeline:
The result is a sparse 'point cloud' with known projection matrices (the cameras). Undistortion of images is not performed here because this affects feature finding in the images due to pixel stretching.
1-5 are definitely parallellizable. the others should be evaluated in more detail.
After these steps, the original images can be analyzed in high detail to extract more information and generate denser point clouds. An intermediate output could be bundler.out and list.txt at this point with undistorted images.
Libraries and applications that could be used for some of these steps :
I see this is an old thread and I am dealing with a similar situation (the major difference is that it is simultaneous multi-camera rather than SfM). Did you end up finding a good solution?
Well, I worked on writing some software on my own, but it's a big job to do that. I just used Agisoft Photoscan in the end and let it run longer. If you really have that much data, very large photos and many of them, then you should look into Acute3D. Obviously there's a price tag there. Look on youtube for aerometrex and their site for some video for examples.
This is just the processing stage though. The viewing solution must be clear, what formats it accepts, if you need LOD to make it viewable. Acute3D creates "cubes" of data of very large areas in different levels of detail, so you can move through the data quite seamlessly. Other data productions may require intermediate steps or if they do monolithic processing and even then you may run into memory issues. I believe PS allows you to 'chunk' the data up and then seam it together later, but I never got to projects of that size.
Thank you very much for the quick and helpful reply!