Updated 25 Oct 2019
Have you ever wondered how a photographer got a shot? This code computes the camera's original position and orientation from a single photo -- all you need to do is measure the real-world coordinates of points seen in the photograph and then click on those points in the photo. The code also determines the camera's focal length, optical center, and the scaling of the pixels in x and y.
All you need is a photograph (imageFilename), and to update gather3Ddata.m with the coordinates of points in the 3D world visible in the photo.
Instruction video: https://youtu.be/WEYwitb6dTo
This uses the method in Robot Modeling and Control by Spong, Vidgasgar and
Hutchinson. This methods is also known as Tsai's calibration method
Tsai, Roger Y. (1986) "An Efficient and Accurate Camera Calibration Technique
for 3D Machine Vision", Proceedings of IEEE Conference on Computer Vision
and Pattern Recognition, Miami Beach, FL, 1986, pp. 364-374.
by Steban Soto, Cora Yuzhu, Aaron T. Becker in 2018, updated with mouse handler
by Shreyas Poyrekar in 2018.
This code requires an image in the working directory named 'imageFilename.jpg'
It also requires the function gather3Ddata.m and findOrthocenter.m
Aaron T. Becker's Robot Swarm Lab (2020). Calibrate Camera with one Photo (Linear Method) (https://www.mathworks.com/matlabcentral/fileexchange/73079-calibrate-camera-with-one-photo-linear-method), MATLAB Central File Exchange. Retrieved .
Added link to instruction video: https://youtu.be/WEYwitb6dTo
Updated comments and cleaned up the GUI