資源簡介
改程序實現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算法
評論
共有 條評論