• 大小: 1KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-14
  • 语言: Matlab
  • 标签: 对极线  

资源简介

利用八点法求两幅图像之间的基础矩阵,并绘制对极线。先将自己要求对极线的两张图片放置解压后的根目录,运行selectpoints函数,运行完之后会保存需要的八组点,然后运行main即可。

资源截图

代码片段和文件信息

function main()
clear

load location;
location1=location{11};
location2=location{12};
F=Draw_Epipolar_Line(location1location2)

A2=imread(‘2.jpg‘);
B2=imread(‘3.jpg‘);
h=size(B21);                                                         %image1的行数
w=size(B22);                                                         %image1的列数
npoints=5000;
figure(1)
imshow(A2);
[loc1xloc1y]=ginput(1);
close(gcf);
figure(2)
imshow(B2);
[loc2xloc2y]=ginput(1);
close(gcf);
m1=[loc1xloc1y1];
m2=[loc2xloc2y1];
l2=F*m1‘;                        %点m1在image2中的对极线
l1=F‘*m2‘;


% 用于产生1w之间的npoints点行矢量,其中1、w、npoints分别为起始值、终止值、元素个数
xx1 = linspace(1wnpoints); 
% 产生1行,npoints列 数值为1的行向量
cc1=ones(1npoints);  
% 求取纵坐标yy2
yy1=(-l1(1)*xx1-l1(3)*cc1)/l1(2); 



% 用于产生1w之间的npoints点行矢量,其中1、w、npoints分别为起始值、终止值、元素个数
xx2 = linspace(1wnpoints); 
% 产生1行,npoints列 数值为1的行向量
cc2=ones(1npoints);  
% 求取纵坐标yy2
yy2=(-l2(1)*xx2-l2(3)*cc2)/l2(2);  

figure(3)
imshow(A2);
yyy1=yy1(yy1>0&yy1xxx1=xx1(yy1>0&yy1hold on
plot(xxx1yyy1‘r.‘‘MarkerSize‘10);%‘MarkerSize‘100
hold on
plot(loc1xloc1y‘g*‘‘MarkerSize‘20);
hold on
plot(location1.xlocation1.y‘r*‘‘MarkerSize‘20);
hold off

figure(4)
imshow(B2);
% 为防止对极线算出的坐标有负的  下面两行代码是进行越界处理的
yyy2=yy2(yy2>0&yy2xxx2=xx2(yy2>0&yy2hold on
plot(xxx2yyy2‘r.‘‘MarkerSize‘10);%‘MarkerSize‘100
hold on
plot(loc2xloc2y‘g*‘‘MarkerSize‘20);
hold on
plot(location2.xlocation2.y‘r*‘‘MarkerSize‘20);
hold off









function F=Draw_Epipolar_Line(location1location2)
% 八点法绘制对极线

% 画出的对极线不是很精确
% 下面得到矩阵A
AAA=[];
for i=1:8
    aa=[ location2.x(i)*location1.x(i)  location2.x(i)*location1.y(i)  location2.x(i)  ...
            location2.y(i)*location1.x(i)  location2.y(i)*location1.y(i)  location2.y(i)  ...
            location1.x(i) location1.y(i) 1  ];
      AAA=cat(1AAAaa);
end
[~~V]=svd(AAA);
TEMP=V(:9);
F=reshape(TEMP33);                 % 得到基础矩阵F
F=F‘;



% 对于对极线  可设其为l=ax+by+c,上面的F*m得到的l是一个3*1的向量
% ,其中的元素一次表示a b c,这个可以参照 吴昊 硕士论文《基础矩阵估
% 计方法研究》中的13页





 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        513  2017-04-28 19:51  SelectPoints.m

     文件       2360  2017-04-28 19:51  main.m

----------- ---------  ---------- -----  ----

                 2873                    2


评论

共有 条评论

相关资源