On December 24, 2011, we launched a high altitude balloon equipped with a digital camera and a SPOT GPS tracking device. You can read more about the flight and recovery in this post. The SPOT tracker transmitted latitude/longitude data (but not altitude), and did not transmit above ~20,000 ft. For a while we have been interested in reconstructing the flight path of the balloon based on the pictures taken throughout the flight.
It is possible to find the position a photo was taken from given the (x,y) locations of landmarks in a picture and some knowledge about the field of view of the camera. In the picture above we use the positions of two mountain peaks and a triangular reservoir in Socorro to find the position of the balloon. We experimented with two methods: a method that used three landmarks and a Newton-Raphson solver, and a method that used N landmarks and OpenCV, an open source computer vision library. The method with OpenCV is more accurate because it can use many landmarks, and also takes into account camera distortion. Using this method we reconstructed the flight path of the balloon, which is shown below. We found out that the balloon burst at around 91,250 ft, and that the winds that day varied significantly with elevation. You can read a detailed write up of both of the methods here, and the code we used is available here. We figure that there are at least a few other people out there who have pictures from a high altitude balloon flight but no GPS data. If you are in this situation and want to know how high your balloon went, this is the way to go.