πŸ“–
Wiki
Back to my personal website
  • Home
  • Equipment and Devices
    • 3D Printer
    • Laser Cutter
    • Motion Capture System
    • Sensors
      • RGB-D Cameras
      • Velodyne LiDAR
      • Zed Camera
      • RealSense D435i
      • IMU
    • eGPU
    • Nvidia AGX Xavier
    • CPU Benchmark
    • Installation Checklist
  • Development
    • Linux
      • Shell
      • GDB
      • Git
      • Tmux
      • Network
      • Tricks
      • Debug FAQ
    • CMake
      • Catkin Tools
      • CMakeLists
      • CMake Variables
      • CMake Commands
      • CMake: find_package()
    • ROS
      • Gazebo
      • wstool
      • roslaunch
      • rosbag
      • multi-threaded spinner
    • ROS2
      • Convert ROS1 bag to ROS2 bag
    • C++
      • C++ 11
      • C++ Examples
      • C++ Debug
      • Factory Method
      • Timing
    • Google Tools
      • GLog
      • GFlags
      • GTest
      • Style Guide
      • Clang Format
    • PCL
      • Point Type
      • Methods
      • Architecture
      • Code Explained
    • Open3D
      • Python API
      • Registration
      • Visualization
      • Tools
    • OpenCV
      • Documentation
      • Modules
    • Other Libraries
      • Eigen
      • Ceres
      • g2o
      • GTSAM
    • Website
  • Algorithm
    • SLAM
      • K-D Tree
      • Octree
      • Bag of Words
      • Distance Measures
      • Coordinate Systems
      • LOAM
      • Iterative Closest Point
      • Generalized ICP
      • Mahalanobis Distance
    • Computer Science
      • Computational Model
      • Sorting
      • Analysis
      • Complexity Classes (P, NP)
      • Divide and Conquer
      • Greedy Algorithm
      • Dynamic Programming
      • Tree
      • Graph
    • Computer Vision
      • Camera Models
      • Distortion
      • Motion Models
      • Shutter
      • Image Sensors
      • Epipolar Geometry
      • Multiple-View Geometry
    • Datasets
      • RGB-D Datasets
      • Point Cloud Datasets
      • LiDAR SLAM Datasets
  • Math
    • Optimization
      • Convex Optimization
      • Descent Methods
    • Probability
      • Moment
      • Covariance Matrix
      • Stochastic Process
    • Topology
      • References
      • Concepts
      • Topological Spaces
      • Representation of Rotations
      • Representation of 3-sphere
    • Algebra
      • Linear Algebra
      • Matrix Factorization
      • Condition Number
      • Matrix Lie Group
    • Differential Geometry
      • Manifold
      • Submanifold
      • Quotient Manifolds
      • Tangent Space
  • Quadrotor
    • PX4 Development
    • Companion Computer
    • Drone Hardware
    • Propeller Lock
    • Debug
  • Favorites
    • Bookmarks
Powered by GitBook
On this page
  • Pinhole Model
  • MEI Model or UCM Model
  • References

Was this helpful?

  1. Algorithm
  2. Computer Vision

Camera Models

PreviousComputer VisionNextDistortion

Last updated 1 year ago

Was this helpful?

Pinhole Model

Let point P=[X,Y,Z]P = [X, Y, Z]P=[X,Y,Z] located at the object in 3D space, point Pβ€²=[Xβ€²,Yβ€²,Zβ€²]P' = [X', Y', Z']Pβ€²=[Xβ€²,Yβ€²,Zβ€²] located on the imaging plane in 3D space, point Pβ€²β€²=[u,v]P'' = [u, v]Pβ€²β€²=[u,v] located on the image in pixel coordinates.

Since most modern digital cameras will automatically flip the image to its upright position for us, we can move the imaging plane to the front side as well (same side as the object). Then we can make math easier (replace the -1 with 1) and have Xβ€²=fXZX' = f \frac{X}{Z}Xβ€²=fZX​and Yβ€²=fYZY' = f \frac{Y}{Z}Yβ€²=fZY​ according to the similar triangle.

The relation between three reference frames (O, O', and O'') is the following.

u=Ξ±Xβ€²+cx=fxXZ+cxv=Ξ²Yβ€²+cy=fyYZ+cy\begin{align*} u &= \alpha X' + c_x = f_x \frac{X}{Z} + c_x \\ v &= \beta Y' + c_y = f_y \frac{Y}{Z} + c_y \end{align*}uv​=Ξ±Xβ€²+cx​=fx​ZX​+cx​=Ξ²Yβ€²+cy​=fy​ZY​+cy​​

In matrix form, we can obtain the camera intrinsic matrix KKK.

Z(uv1)=(fx0cx0fycy001)(XYZ)=Β defΒ KP\begin{equation*} Z\left(\begin{array}{l} u \\ v \\ 1 \end{array}\right)=\left(\begin{array}{ccc} f_{x} & 0 & c_{x} \\ 0 & f_{y} & c_{y} \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{l} X \\ Y \\ Z \end{array}\right) \stackrel{\text { def }}{=} \boldsymbol{K} \boldsymbol{P} \end{equation*}Z​uv1​​=​fx​00​0fy​0​cx​cy​1​​​XYZ​​=Β defΒ KP​

MEI Model or UCM Model

References

    • Very good discussions and summary of camera models; read this paper first!

  • 14 Lectures in Visual SLAM

Paper:

, Daniel Cremers group, 3DV 2018

Single View Point Omnidirectional Camera Calibration from Planar Grids
The Double Sphere Camera Model
OpenCV Documentation: Camera Calibration and 3D Reconstruction
https://en.wikipedia.org/wiki/Pinhole_camera_model