使用最小二乘法解空间3D点到图像2D点的投影矩阵
实验目的:
老师题目中给了一个三维空间里面20个点的坐标,分别用两个角度拍摄这个场景,并给出两张照片中这20个点的二维坐标。要求求两张照片对应的投影矩阵。
想要将三维空间点坐标投影到二维平面坐标需要求出对应的投影矩阵,通过投影矩阵与三维坐标矩阵相乘可以得到二维点坐标。而反之如果知道三维空间点坐标和投影后的二维平面点坐标就可以找到其对应的投影矩阵。
实验过程:
首先在MATLAB中读取图像的2D和3D坐标:
clear
close all
formatSpec = '%f';
size2d_norm = [2 Inf];
size3d_norm = [3 Inf];
file_2d_pic_b = fopen('E:\硕士\计算机视觉\Assignment2\data\pts2d-pic_a.txt','r');
file_3d = fopen('E:\硕士\计算机视觉\Assignment2\data\pts3d.txt','r');
Points_2D = fscanf(file_2d_pic_b,formatSpec,size2d_norm)';
Points_3D = fscanf(file_3d,formatSpec,size3d_norm)';
使用最小二乘法求三维坐标投影到二维的投影公式推导:
[ s u s v s ] = [ m 11 m 12 m 13 m 14 m 21 m 22 m 23 m 24 m 31 m 32 m 33 m 34 ] [ X Y Z 1 ] \begin{bmatrix} su\\ sv\\ s \end{bmatrix}=\begin{bmatrix} m_{11}&m_{12}&m_{13}&m_{14}\\ m_{21}&m_{22}&m_{23}&m_{24}\\ m_{31}&m_{32}&m_{33}&m_{34} \end{bmatrix}\begin{bmatrix} X\\ Y\\ Z\\ 1 \end{bmatrix} ⎣⎡susvs⎦⎤=⎣⎡m11m21m31m12m22m32m13m23m33m14m24m34⎦⎤⎣⎢⎢⎡XYZ1⎦⎥⎥⎤
s u = m 11 X + m 12 Y + m 13 Z + m 14 s v = m 21 X + m 22 Y + m 23 Z + m 24 s = m 31 X + m 32 Y + m 33 Z + m 34 u = m 11 X + m 12 Y + m 13 Z + m 14 m 31 X + m 32 Y + m 33 Z + m 34 v = m 21 X + m 22 Y + m 23 Z + m 24 m 31 X + m 32 Y + m 33 Z + m 34 su=m_{11}X+m_{12}Y+m_{13}Z+m_{14}\\ sv=m_{21}X+m_{22}Y+m_{23}Z+m_{24}\\ s=m_{31}X+m_{32}Y+m_{33}Z+m_{34}\\ \\ u=\frac{m_{11}X+m_{12}Y+m_{13}Z+m_{14}}{m_{31}X+m_{32}Y+m_{33}Z+m_{34}}\\ v=\frac{m_{21}X+m_{22}Y+m_{23}Z+m_{24}}{m_{31}X+m_{32}Y+m_{33}Z+m_{34}}\\ \\ su=m11X+m12Y+m13Z+m14sv=m21X+m22Y+m23Z+m24s=m31X+m32Y+m33Z+m34u=m31X+m32Y+m33Z+m34m11X+m12Y+m13Z+m14v=m31X+m32Y+m33Z+m34m21X+m22Y+m23Z+m24
( m 31 X + m 32 Y + m 33 Z + m 34 ) u = m 11 X + m 12 Y + m 13 Z + m 14 ( m 31 X + m 32 Y + m 33 Z + m 34 ) v = m 21 X + m 22 Y + m 23 Z + m 24 m 31 u X + m 32 u Y + m 33 u Z + m 34 u = m 11 X + m 12 Y + m 13 Z + m 14 m 31 v X + m 32 v Y + m 33 v Z + m 34 v = m 21 X + m 22 Y + m 23 Z + m 24 0 = m 11 X + m 12 Y + m 13 Z + m 14 − m 31 u X − m 32 u Y − m 33 u Z − m 34 u 0 = m 21 X + m 22 Y + m 23 Z + m 24 − m 31 v X − m 32 v Y − m 33 v Z − m 34 v (m_{31}X+m_{32}Y+m_{33}Z+m_{34})u=m_{11}X+m_{12}Y+m_{13}Z+m_{14}\\ (m_{31}X+m_{32}Y+m_{33}Z+m_{34})v=m_{21}X+m_{22}Y+m_{23}Z+m_{24}\\ \\ m_{31}uX+m_{32}uY+m_{33}uZ+m_{34}u=m_{11}X+m_{12}Y+m_{13}Z+m_{14}\\ m_{31}vX+m_{32}vY+m_{33}vZ+m_{34}v=m_{21}X+m_{22}Y+m_{23}Z+m_{24}\\ \\ 0=m_{11}X+m_{12}Y+m_{13}Z+m_{14}-m_{31}uX-m_{32}uY-m_{33}uZ-m_{34}u\\ 0=m_{21}X+m_{22}Y+m_{23}Z+m_{24}-m_{31}vX-m_{32}vY-m_{33}vZ-m_{34}v (m31X+m32Y+m33Z+m34)u=m11X+m12Y+m13Z+m14(m31X+m32Y+m33Z+m34)v=