關於《一種魚眼圖象到透視投影圖象的變換模型》
《一種魚眼圖象到透視投影圖象的變換模型》與另一篇論文《一種基於橢圓拋物面透視投影約束的魚眼鏡頭校正方法》其實演算法差不多的。所以試著實現一個就好了,可是我不知道這篇論文演算法的最後一步:確定目標圖象的大小,求(uo,vo)對應的中心點(xo,yo),利用公式(1)求出目標圖象。 這一步的z怎麼確定,如果z確定不了,那怎麼可能求出目標圖象?
那個先想想,我也同時問了別人,等有結果了再補上:
這裡先寫演算法的前幾步吧 反正還是比較清晰的
A=imread('F:\orl_zhifangtu\yuyan3.jpg');
>> [A,R]=kuaisusaomiao(A,40);
>> 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怎麼確定呢?