• 大小: 148.87 KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-08-14
  • 语言: Matlab
  • 标签: matlab  标定  

资源简介

改程序实现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个文件信息

评论

共有 条评论