如何计算摄像机intrinsic K,旋转矩阵R和翻译通过摄像机投影矩阵向量T ?

155(30天)
我看到了 官方文件 Matlab R2019a版本已经支持估计摄像机投影矩阵,条件是至少6套分在同金宝app一个平面上可以解决,但问题是摄像机矩阵P是否可以推断得到相机intrinsic K,旋转矩阵R,翻译。向量T ?
我看到第三方函数分解它。我不知道如果它是可靠的。在这里我提出:
函数(K, Rc_w、Pc、pp、光伏)= DecomposeCamera (P)
% DECOMPOSECAMERA摄像机投影矩阵的分解
%
%用法:[K, Rc_w、Pc、pp、光伏)= decomposecamera (P);
%
% P是分解成形式P = K * (R - R * Pc)
%
%的论点:P - 3 x 4摄像机投影矩阵
%的回报:
% K -校正矩阵的形式
% | ax s ppx |
% | 0 ay ppy |
% | 0 0 1 |
%
%的地方:
% ax = f / pixel_width和ay = f / pixel_height,
% ppx和ppy定义像素的主要点,
% s是相机倾斜。
% Rc_w - 3 x 3旋转矩阵定义世界坐标系
%的相机坐标系。R的列转置定义
%相机的方向X, Y和Z轴在世界
%的坐标。
%的个人电脑,相机在世界坐标中心地位。
%页——图像主点。
% pv -主向量相机中心C通过页
%指出从相机。这可能不是一样的
% R '(:, 3)如果主点不是在的中心
%的形象,但它应该是相似的。
%
%参见:RQ3
%参考:哈特利Zisserman 2日,患儿155 - 164页
% (c) 2010年彼得Kovesi版权
%中心勘探目标
%的地球和环境
西澳大利亚大学的%
%彼得。kovesi映象edu盟
%
%特此授予许可,免费的,任何的人获得一份
%的软件和相关的文档文件(“软件”),交易
%在软件没有限制,应当具备下列条件:
%
%以上的版权声明和本许可声明应当包含在
%所有副本或实质性部分的软件。
%
% 2010年10月的原始版本
% 2013年11月的描述旋转矩阵R纠正(转置)
%从哈特利投影矩阵和Zisserman 163页用于测试
如果~ (“P”,“var”)
P = [3.53553 e + 2 3.39645 e + 2 2.77744 e + 2 -1.44946 e + 6
-1.03528 e + 2 2.33212 e + 1 4.59607 e + 2 -6.32525 e + 5
7.07107 e 1 -3.53553 e 1 6.12372 e 1 -9.18559 e + 2];
结束
%方便变量列的P
p1 = P (: 1);
p2 = P (:, 2);
p3 = P (:, 3);
p4 = P (:, 4);
M = (p1 p2 p3);
m3 = M (3:) ';
%相机中心,分析解决方案
X =侦破([p2 p3, p4]);
Y =检波器([p1 p3, p4]);
Z =侦破([p1 p2 p4]);
T =检波器([p1 p2 p3]);
电脑= [X, Y, Z; T];
电脑= Pc / Pc (4);
电脑=电脑(1:3);%进行不均匀
% Pc = null (P, r);%计算C的数值方法
%主点
页= M *立方米;
页= pp / pp (3);
页=页(1:2);%进行不均匀
%的主要ray指出相机
pv =侦破(M) *立方米;
pv(光伏/规范(pv);
%执行RQ M矩阵的分解。注意,rq3返回K + ve
%对角元素,所需的标定矩阵。
[K, Rc_w] = RQ3 (M);
%检查R是右手,如果不是发出警告
如果点(交叉(Rc_w (: 1), Rc_w (:, 2)), Rc_w (:, 3) < 0
警告(“注意,旋转矩阵是左手”);
结束
子函数是:
函数(R, Q) = RQ3 (A)
% RQ3 RQ 3 x3矩阵的分解
%
用法:百分比(R, Q) = rq3 (A)
%
%的论点:A - 3 x 3矩阵
%的回报:R -上三角3 x 3矩阵
% Q - 3 x 3正交旋转矩阵
%,R * Q =
%
% R的行和列的迹象和Q选择对角线
% + ve R的元素。
%
%参见:DECOMPOSECAMERA
%以下算法由哈特利,Zisserman A4.1 p 579第二版
% (c) 2010年彼得Kovesi版权
%中心勘探目标
%的地球和环境
西澳大利亚大学的%
%彼得。kovesi映象edu盟
%
%特此授予许可,免费的,任何的人获得一份
%的软件和相关的文档文件(“软件”),交易
%在软件没有限制,应当具备下列条件:
%
%以上的版权声明和本许可声明应当包含在
%所有副本或实质性部分的软件。
%
2010年10月%
% 2014年2月注册修改建议的Mathias Rothermel
%避免潜在的除零问题
如果~所有(大小(A) = = 3 [3])
错误(必须3 x3的);
结束
每股收益= 1平台以及;
%找到旋转Qx设置(3 2)为0
(3)=(3、3)+每股收益;
c =——(3) /√((3、3) ^ 2 + (3 2) ^ 2);
s = (3 2) /√((3、3) ^ 2 + (3 2) ^ 2);
Qx = [1 0 0;0 c - s;0 c];
R = * Qx;
%找到旋转Qy设置(3,1)为0
(3)= R(3、3) +每股收益;
c = R (3,3) /√(R (3、3) ^ 2 + R (3,1) ^ 2);
s = R (3,1) /√(R (3、3) ^ 2 + R (3,1) ^ 2);
Qy = [c 0;0 1 0;s 0 c];
R = R * Qy;
%找到旋转求设定(2,1)为0
(2,2)= R(2, 2) +每股收益;
c = - R (2, 2) /√(R (2, 2) ^ 2 + (2, 1) ^ 2);
s = R (2, 1) /√(R (2, 2) ^ 2 + (2, 1) ^ 2);
求= [c - s 0;s c 0;0 0 1);
R = R *求出;
Q =求“* Qy”* Qx”;
%调整和Q的对角元素R + ve
n = 1:3
如果R (n, n) < 0
R (:, n) = - R (:, n);
问(n:) = - Q (n:);
结束
结束

接受的答案

马特·J
马特·J 2021年4月9日
编辑:马特·J 2021年4月9日
对各种随机输入矩阵,它给相同的输出(在数值精度)作为自己的分解程序(附件),所以我觉得倾向于信任它。

更多的答案(0)

下载188bet金宝搏


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的