Someone answered a question over on the Photography SE that this could be done with photogrammetry. I had initially discounted this as I thought this was used to generate 3D models from many photographs, while I have a 3D model already, and just one photograph.

To be more specific, I know the 3D positions of buildings in a city. I need to determine the camera location that would have generated a given photo of those buildings. These are photos from about 90-140 years ago.


  1. This must be automatable. If the process needs very much more human intervention than drawing a few bounding boxes around buildings and linking them to specific buildings in a database then it will not be useful for me (i.e., no flying around in Google Earth until things match*).
  2. I will not know the model or optics of the camera that took the photo.
  3. I will not know if the image I have has been cropped.

Can anyone point me to software that can accomplish this? Alternatively, if it's not off topic, can anyone offer advice on writing my own? I already think I can at least find a bearing and azimuth given the above constraints, but don't know if I can reduce that to a point or short line segment of possibilities.

* For one, we don't have the human resources but, even more limiting, many of these buildings no longer stand, streets no longer exist, etc..


You can certainly solve a camera position of a single photo with known 3D data (anywhere from 4 to 7 known 3D points depending on what you know about the camera). PhotoModeler can do this. But to do this automatically with little to no user intervention on a scene of unknown content would be difficult.

Your Answer

