资源简介
改程序实现matlab的标定程序,简单易行,可与VC++联合编程。
代码片段和文件信息
%摄像机标定新算法用一个子函数计算出两组运动组的参数
%本程序用于调试摄像机标定新算法
%这个程序在原来的基础上改变了部分返回值,将标准离差改为均方值的计算
%加入标定整体误差计算,运动复原和三维复原整体误差计算
%应先用计算出的平移矢量进行三维复原,从得出的点对统计其z方向为正的个数,多者为正确的平移矢量
%已完成
%程序太复杂,简化,将输出参数只考虑整体复原误差这样的运行时间与不简化时差不多,需要进一步简化程序
function [ans]=newall4();
%以下为本算法的输入参数运动组的旋转阵和平移阵RT1T2
alpha=pi/6;
beta=pi/4;
gamma=pi/3;
% T11=[10 4 5]T12=[4 -12 1.6]T11*T12‘=0,自己设计的正交数据
t11=0.842152;
t12=0.336861;
t13=0.421076;
t21=0.313728;
t22=-0.941184;
t23=0.125491;
%摄像机内参数理论值
fu=1000;
fv=1000;
u0=0;
v0=0;
s=0.02;
%以下对计算K阵的子函数调用100次
number=100;
i=1;
counter=0;
for j=1:number
[p1p2p3p4p5p6p7p8p9p10p11]=subfun(alphabetagammat11t12t13t21t22t23);
error_K(i)=p1;
error_R(i)=p2;
error_T(i)=p3;
error_H(i)=p4;
recover(i)=p5;
Snr1(i)=p6;
Snr2(i)=p7;
elapsed_tH(i)=p8;
tK(i)=p9;
trecover(i)=p10;
elapsed_tall(i)=p11;
i=i+1;
end
%以下部分程序用于返回各参数的误差,其中每两者为一组,前者表示绝对误差均值,后者表示均方根误差
ans(1)=number.\sum(error_K);
ans(2)=number.\sum(error_R);
ans(3)=number.\sum(error_T);
ans(4)=number.\sum(error_H);
ans(5)=number.\sum(recover);
ans(6)=number.\sum(Snr1);
ans(7)=number.\sum(Snr2);
ans(8)=number.\sum(elapsed_tH);
ans(9)=number.\sum(tK);
ans(10)=number.\sum(trecover);
ans(11)=number.\sum(elapsed_tall);
%以下部分为子函数对不同运动组,分别求相应的eF,返回元胞数组
function [a]=subfunction(alphabetagammat1t2t3);
u0=0;
v0=0;
fu=1000;
fv=1000;
s=0.02;
K=[fusu0;0fvv0;001];
%计算理论值旋转阵R平移阵T本征阵E0极点p规一化极点e0e0的反对称阵ex0单应性阵H0基础阵F0
R(11)=cos(beta)*cos(gamma);
R(12)=cos(beta)*sin(gamma);
R(13)=-sin(beta);
R(21)=sin(alpha)*sin(beta)*cos(gamma)-cos(alpha)*sin(gamma);
R(22)=sin(alpha)*sin(beta)*sin(gamma)+cos(alpha)*cos(gamma);
R(23)=sin(alpha)*cos(beta);
R(31)=cos(alpha)*sin(beta)*cos(gamma)+sin(alpha)*sin(gamma);
R(32)=cos(alpha)*sin(beta)*sin(gamma)-sin(alpha)*cos(gamma);
R(33)=cos(alpha)*cos(beta);
T=[t1 t2 t3]‘;
p0=K*T;
%规一化的极点
e0=(p0./p0(3))./norm(p0./p0(3)‘fro‘);
% ex0=[0 -e0(3) e0(2);e0(3) 0 -e0(1);-e0(2) e0(1) 0];
H0=K*R*inv(K);
% F0=ex0*H0;
%以下部分程序用于生成原始以及映射后的匹配点对,并计算相应的信号功率由于数据的条件数太大
%在进行SVD之前,对数据进行正则化处理
min_x=-2;
max_x=2;
min_y=-2;
max_y=2;
min_z=1;
max_z=2;
xa=min_x+(max_x-min_x)*rand(150);
ya=min_y+(max_y-min_y)*rand(150);
za=min_z+(max_z-min_z)*rand(150);
P=[xa;ya;za];
[mn]=size(P);
j=1;
for i=1:n
P0(:i)=R*P(:i)+T;
if P0(3i)>0
P1(:j)=P(:i);
P2(:j)=P0(:i);
j=j+1;
end
end
[mn]=size(P1);
%生成映射前后的齐次坐标对[rr_xxrr_yyones(size(rr_xx2))],uorigvorig为理论值,uorig=X3i‘/X3ivorig=(k*T)(3)/X3i
rr_x1=P1(3:).\P1(1:);
rr_y1=P1(3:).\P1(2:);
rr_x2=P2(3:).\P2(1:);
rr_y2=P2(3:).\P2(2:);
uorig=P1(3:).\P2(3:);
vorig=P1(3:).\p0(3);
Pwx1=n\sum(rr_x1.^2);
Pwy1=n\sum(rr_y1.^2);
Pw1=2\(Pwx1+Pwy1);
Pwx2=n\sum(rr_x2.^2);
Pwy2=n\sum(rr_y2.^2);
Pw2=2\(Pwx2+Pwy2);
%以下部分程序用于形成噪化数据,其中A代表噪声强度并计算相应的信噪比A的值在0.0002和0.008之间变化,间距0.0002每次改变参数
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 10873 2007-04-22 09:19 matlab实现标定程序\newall4.m
文件 76 1995-05-21 18:32 matlab实现标定程序\TSAI30B3\CAL.RSP
文件 11633 1995-07-15 14:15 matlab实现标定程序\TSAI30B3\CAL_EVAL.C
文件 73084 2005-01-04 17:33 matlab实现标定程序\TSAI30B3\CAL_MAIN.C
文件 9676 1995-07-15 14:53 matlab实现标定程序\TSAI30B3\CAL_MAIN.H
文件 13509 1995-10-22 20:57 matlab实现标定程序\TSAI30B3\CAL_TRAN.C
文件 7299 1995-05-14 15:18 matlab实现标定程序\TSAI30B3\CAL_UTIL.C
文件 3605 1995-04-01 11:53 matlab实现标定程序\TSAI30B3\CCAL.C
文件 3446 1995-10-28 15:10 matlab实现标定程序\TSAI30B3\CCAL.LOG
文件 489 1995-04-02 18:30 matlab实现标定程序\TSAI30B3\CCAL.RUN
文件 3373 1995-04-01 11:54 matlab实现标定程序\TSAI30B3\CCAL_FO.C
文件 9000 1995-10-28 15:08 matlab实现标定程序\TSAI30B3\CC_CD.DAT
文件 342 1995-10-28 15:08 matlab实现标定程序\TSAI30B3\CC_CPCC.DAT
文件 6102 1995-10-28 14:19 matlab实现标定程序\TSAI30B3\CHANGES.TXT
文件 6486 1995-05-21 08:41 matlab实现标定程序\TSAI30B3\CSYN.C
文件 3617 1995-05-17 06:49 matlab实现标定程序\TSAI30B3\ECAL.C
文件 2424 1995-10-28 15:16 matlab实现标定程序\TSAI30B3\ECAL.LOG
文件 396 1995-10-28 15:15 matlab实现标定程序\TSAI30B3\ECAL.RUN
文件 23216 1995-10-15 22:18 matlab实现标定程序\TSAI30B3\ECALMAIN.C
文件 375 1995-10-28 15:15 matlab实现标定程序\TSAI30B3\ECCCPCC.DAT
文件 375 1995-10-28 15:15 matlab实现标定程序\TSAI30B3\ENCCCPCC.DAT
文件 11424 1995-10-28 13:47 matlab实现标定程序\TSAI30B3\FAQ.TXT
文件 1859 1995-07-17 23:03 matlab实现标定程序\TSAI30B3\GASDEV.C
文件 3008 1995-04-01 12:02 matlab实现标定程序\TSAI30B3\IC2WC.C
文件 3050 1995-10-28 15:20 matlab实现标定程序\TSAI30B3\INDEX.TXT
文件 2598 1995-10-23 13:43 matlab实现标定程序\TSAI30B3\MAKEFILE.BOR
文件 2632 1995-10-20 00:10 matlab实现标定程序\TSAI30B3\MAKEFILE.UNX
文件 11353 1995-07-15 15:43 matlab实现标定程序\TSAI30B3\MATRIX\MATRIX.C
文件 667 1995-07-15 15:43 matlab实现标定程序\TSAI30B3\MATRIX\MATRIX.H
..AD... 0 2008-07-02 16:46 matlab实现标定程序\TSAI30B3\MATRIX
............此处省略33个文件信息
- 上一篇:matlab编写的量子遗传算法
- 下一篇:图像匹配matlab源程序sift算法
相关资源
- 图像匹配matlab源程序sift算法
- matlab编写的量子遗传算法
- 图像降噪Matlab代码
- Alamouti编码2X2仿真(MATLAB)
- 用蚁群算法求解TSP问题的matlab程序
- 跳扩散过程下欧式期权的定价matlab源
- 小波神经网络Matlab交通仿真程序
- 粒子群算法matlab工具箱
- MATLAB音频信号的分析与合成程序
- qam 用matlab实现qam仿真的程序
- curvelet matlab工具箱
- matlab人脸识别和特征提取
- 圣诞树(matlab代码)
- MATLAB六自由度弹道仿真程序
- matlab的pde工具箱使用方法
- 心音信号处理分析(附matlab代码)
- MATLAB实现弹道仿真
- MIMO雷达DOA估计中的克拉美罗界计算
- Matlab图像分割边缘提取算法
- Boost电路的MATLAB仿真
- 基于气动力的导弹姿态控制(附MATL
- 有源电力滤波器的Matlab仿真_高勇
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
评论
共有 条评论