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..

2 Answers 2


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.


fSpy can do this. OpenSource and free. Download from : https://fspy.io/

  • Can you detail what features has your recommendation that fulfills the question?
    – Alejandro
    Commented Nov 29, 2021 at 14:13
  • Your answer could be improved with additional supporting information. Please edit to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Dec 1, 2021 at 9:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.