对极几何基本概念及其MATLAB实现
来源:互联网 发布:淘宝拍卖车交多少税 编辑:程序博客网 时间:2024/04/30 08:36
对极几何基本概念及其MATLAB实现
1.对极几何基本概念2.基础矩阵
3.基础矩阵估计方法
4.基础矩阵的MATLAB程序如下:
(1)点对采集程序:
clearclc% 画出的对极线不是很精确% 注意:点采集的时候要尽可能的分开,不然绘制的对极线差距很大A=imread('你的图片1');B=imread('你的图片2'); % 两个都是各自文件夹的第一个图片figure(1);imshow(A);% 下面是鼠标选点 并返回鼠标对应坐标值[location1.x,location1.y]= ginput(8) ;figure(2);imshow(B);[location2.x,location2.y]= ginput(8) ;location{1,1}=location1;location{1,2}=location2;save location.mat location; % 保存你的点对
(2)利用八点发的对极线程序如下:
function main()clearload location; % 读入你的点对数据location1=location{1,1};location2=location{1,2};F=Draw_Epipolar_Line(location1,location2) %输出得到的基础矩阵A2=imread('你刚才的图片1');B2=imread('你刚才的图片2'); h=size(B2,1); %image1的行数w=size(B2,2); %image1的列数npoints=5000;figure(1);imshow(A2);[loc1x,loc1y]=ginput(1); % 选一个点Aclose(gcf);figure(2);imshow(B2);[loc2x,loc2y]=ginput(1); % 选一个点Bclose(gcf);m1=[loc1x,loc1y,1];m2=[loc2x,loc2y,1];% 对极线表达式Ax+By+C=0中的A,B,C系数存放在l矩阵中l2=F*m1'; % 计算点A在B所在图片中的对极线l1=F'*m2'; % 计算点B在A所在图片中的对极线% 开始绘制对极线xx1 = linspace(1,w,npoints); % 产生1行,npoints列 数值为1的行向量cc1=ones(1,npoints); % 求取纵坐标yy2yy1=(-l1(1)*xx1-l1(3)*cc1)/l1(2); xx2 = linspace(1,w,npoints); % 产生1行,npoints列 数值为1的行向量cc2=ones(1,npoints); % 求取纵坐标yy2yy2=(-l2(1)*xx2-l2(3)*cc2)/l2(2); figure(3);imshow(A2);yyy1=yy1(yy1>0&yy1<h);xxx1=xx1(yy1>0&yy1<h);hold on;plot(xxx1,yyy1,'r.','MarkerSize',10); % 绘制B在A中的对极线hold on;plot(loc1x,loc1y,'g*','MarkerSize',20); % 绘制刚才选的点hold on;plot(location1.x,location1.y,'r*','MarkerSize',20);hold offfigure(4);imshow(B2);yyy2=yy2(yy2>0&yy2<h);xxx2=xx2(yy2>0&yy2<h);hold on;plot(xxx2,yyy2,'r.','MarkerSize',10);%,'MarkerSize',100hold on;plot(loc2x,loc2y,'g*','MarkerSize',20);hold on;plot(location2.x,location2.y,'r*','MarkerSize',20);hold offfunction F=Draw_Epipolar_Line(location1,location2)% location1和location2是你的之前采集的点对数据% 八点法计算对极线基础矩阵% 画出的对极线不是很精确% 下面得到矩阵AAAA=[];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(1,AAA,aa);end[~,~,V]=svd(AAA);TEMP=V(:,9);F=reshape(TEMP,3,3); % 得到基础矩阵FF=F';% 对于对极线 可设其为l=ax+by+c,上面的F*m得到的l是一个3*1的向量% ,其中的元素一次表示a b c,这个可以参照 吴昊 硕士论文《基础矩阵估% 计方法研究》中的13页
以上原理主要摘自我师姐硕士论文。原理及程序上传完毕,如有错误,还请指正。
阅读全文
0 0
- 对极几何基本概念及其MATLAB实现
- 对极几何基本概念
- 对极几何原理
- 对极几何原理
- 20170216. 对极几何
- 对极几何
- MATLAB-RSA加密算法及其MATLAB实现
- 恒虚警算法及其MATLAB实现
- kalman 滤波器及其MATLAB实现
- 线性表基本概念及其基本操作实现
- MATLAB 对图像的几何处理 system generator
- 对极几何(Epipolar Geometry)
- Epipolar geometry(对极几何)
- 简简单单应用对极几何
- Epipolar geometry对极几何
- 几何网络的基本概念
- Matlab 实现对码功能
- 学习笔记: CIC filter及其matlab实现
- 未来数字货币发展前景巨大,业内人士看好莱德币
- ebean sqlserver 2008分页查询错误
- Maven 的41种骨架
- 【VR9项目】开机电压设置
- 【mysql 递归查询】Mysql中的递归层次查询(父子查询)
- 对极几何基本概念及其MATLAB实现
- TOJ 3708: The Key Locker of Cell Phone (大水题)
- Springboot获取配置文件中值的方法
- JSP页面使用js对复选框多选
- 《可以把FILE转为int的API》(fileno())
- oracle 包里使用函数,里使用decode,substr
- mongodb 免费可视化关系工具 Robo 3T
- Spring boot jar包Ebean出错解决
- int 补零