您的位置:首页 > 其它

关于《一种鱼眼图象到透视投影图象的变换模型》

2015-07-25 09:53 197 查看
《一种鱼眼图象到透视投影图象的变换模型》与另一篇论文《一种基于椭圆抛物面透视投影约束的鱼眼镜头校正方法》其实算法差不多的。所以试着实现一个就好了,可是我不知道这篇论文算法的最后一步:确定目标图象的大小,求(uo,vo)对应的中心点(xo,yo),利用公式(1)求出目标图象。 这一步的z怎么确定,如果z确定不了,那怎么可能求出目标图象?

那个先想想,我也同时问了别人,等有结果了再补上:

这里先写算法的前几步吧 反正还是比较清晰的

A=imread('F:\orl_zhifangtu\yuyan3.jpg');

>> [A,R]=kuaisusaomiao(A,40);


接下来开始选择一条对应空间直线的鱼眼上的圆弧 我选的是右边这栋歪掉的大厦 在上面取9个点 因为论文中要6个未知参数嘛 用绿色的菱形表示出来 下图中

>> imshow(A)

>> hold on

>> [i1,j1]=ginput(1);

>> plot(i1,j1,'g.');

>> [i2,j2]=ginput(1);

>> plot(i2,j2,'g.');

>> [i3,j3]=ginput(1);

>> plot(i3,j3,'g.');

>> [i4,j4]=ginput(1);

>> plot(i4,j4,'g.');

>> [i5,j5]=ginput(1);

>> plot(i5,j5,'g.');

>> [i6,j6]=ginput(1);

>> plot(i6,j6,'g.');

>> [i7,j7]=ginput(1);

>> plot(i7,j7,'g.');

>> [i8,j8]=ginput(1);

>> plot(i8,j8,'g.');

>> [i9,j9]=ginput(1);

>> plot(i9,j9,'g.');

>> hold off;

DATA=[i1j1;i2 j2;i3 j3;i4 j4;i5 j5;i6 j6;i7 j7;i8 j8;i9 j9];
W=zeros(9,6);
%每一行放的是A,B,C,D,E,F这6个所求参数的系数
for n=1:9
i=DATA(n,1);
j=DATA(n,2);
W(n,1)=j^2;
W(n,2)=2*i*j;
W(n,3)=i^2;
W(n,4)=j;
W(n,5)=i;
W(n,6)=1;
end
%因为是超定齐次线性方程组 9个方程6个未知数 用最小二乘解出来 对应最小特征值的特征向量就是所求的解
[V D]=eig(W'*W);

D



D =



1.0e+010 *



0.0000 0 0 0 0 0

0 0.0000 0 0 0 0

0 0 0.0000 0 0 0

0 0 0 0.0001 0 0

0 0 0 0 0.0554 0

0 0 0 0 0 5.9756

可是奇怪的是这里有三个都小 都是0 为什么?我取的是第二个

>> V



V =



-0.0000 0.0009 0.0052 0.8840 -0.4344 0.1724

0.0000 0.0013 -0.0031 -0.4239 -0.5898 0.6874

-0.0000 0.0004 0.0060 0.1969 0.6807 0.7055

-0.0024 -0.9997 -0.0254 0.0005 -0.0009 0.0014

0.0097 0.0254 -0.9996 0.0071 0.0037 0.0029

-0.9999 0.0026 -0.0097 0.0001 0.0000 0.0000

我取了第二个特征向量作为解

>> A=9;

>> B=13;

>> C=4;

>> D=9997;

>> E=254;

>> F=26;

按照论文公式求光学中心和长半轴

>> uo=(C*D-B*E)/2/(B^2-A*C);

vo=(A*E-B*D)/2/(B^2-A*C);

R=sqrt(((C*D^2-2*B*D*E+A*E^2)/4/(B^2-A*C)+F)*((A+C+sqrt((A-C)^2+4*B^2))/2/(B^2-A*C)));



光学中心的结果 和长半轴的结果:





如果上面没错 接下来就是论文最后一步 可是那个z怎么确定呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: