Calibrate Camera with one Photo (Linear Method)

Have you ever wondered how a photographer got a shot? Performs camera calibration from labelled points in 3D space and pixel coordinates
659 Downloads
Updated 12 Jan 2024

View License

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
http://people.csail.mit.edu/bkph/articles/Tsai_Revisited.pdf
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

Cite As

Aaron T. Becker's Robot Swarm Lab (2024). 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 .

MATLAB Release Compatibility
Created with R2017b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Tags Add Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.2

Updated by Utkarsh Gupta on 01/12/2024 improving the code readability by using arrays to store plots and added functionality that lets user 'undo' their clicks.

1.1.1

Added link to instruction video: https://youtu.be/WEYwitb6dTo

1.1.0

Updated comments and cleaned up the GUI

1.0.0