估计摄像机投影矩阵和基本矩阵实验报告

该实验通过最小二乘法求解3D点到2D点的投影矩阵,从给定的3D点坐标和对应的2D图像点坐标出发,使用MATLAB进行计算。实验得出两个投影矩阵M1和M2,经过验证,投影矩阵计算准确,误差小,证明方法有效。
摘要由CSDN通过智能技术生成
使用最小二乘法解空间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=m11m21m31m12m22m32m13m23m33m14m24m34XYZ1

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=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值