ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:177.09KB ,
资源ID:5200696      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5200696.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(获奖论文数码相机定位.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

获奖论文数码相机定位.docx

1、获奖论文数码相机定位数码相机定位摘要本论文讨论的是对于数码相机定位的问题。依据题目提供的信息,通过计算机统计,计算机图形处理分析,空间几何等数学方法matlib,lingo等科学计算软件,在一定的假设约束条件下确定靶标上圆的圆心在计算机图像中的坐标,进而通过转换得到在该相机像平面的像坐标。首先, 通过建立空间直角坐标,然后在靶标示意图的四周作圆的外切线,再在圆的内部作圆的内切线,这样圆的四个切点连线的交点就是圆的圆心,其次建立数学模型和算法以确定靶标上圆的圆心在该相机像平面的像坐标,并通过空间几何的关系和计算机的计算将实际的坐标转换为像平面的坐标,且每个点带有的参数和像平面的点成正比的关系,这

2、样通过这些点在同一平面内代入他们的几何关系就可以把这些未知数给求出来。而最后,通过检验还对模型的精度和稳定性作了分析与讨论。另外,我们可以通过总结和探索建立用此靶标给出两部固定相机相对位置的数学模型和方法。主要方法是确定空间中的一个点,那么这个点在两部相机的像平面上的投影点也可以得到,而这两个点所确定的向量也确定,而若假设空间中的点为新的参考系中的中点,那么原来确定的向量相对位置不变,那么通过这两个向量的差向量就可以得到实际空间中两部相机的相对位置一、问题重述数码相机定位在交通监管(电子警察)等方面有广泛的应用。所谓数码相机定位是指用数码相机摄制物体的相片确定物体表面某些特征点的位置。最常用的

3、定位方法是双目定位,即用两部相机来定位。对物体上一个特征点,用两部固定于不同位置的相机摄得物体的像,分别获得该点在两部相机像平面上的坐标。只要知道两部相机精确的相对位置,就可用几何的方法得到该特征点在固定一部相机的坐标系中的坐标,即确定了特征点的位置。于是对双目定位,精确地确定两部相机的相对位置就是关键,这一过程称为系统标定。标定的一种做法是:在一块平板上画若干个点, 同时用这两部相机照相,分别得到这些点在它们像平面上的像点,利用这两组像点的几何关系就可以得到这两部相机的相对位置。然而,无论在物平面或像平面上我们都无法直接得到没有几何尺寸的“点”。实际的做法是在物平面上画若干个圆(称为靶标),

4、它们的圆心就是几何的点了。而它们的像一般会变形,如图1所示,所以必须从靶标上的这些圆的像中把圆心的像精确地找到,标定就可实现。 图 1 靶标上圆的像有人设计靶标如下,取1个边长为100mm的正方形,分别以四个顶点(对应为A、C、D、E)为圆心,12mm为半径作圆。以AC边上距离A点30mm处的B为圆心,12mm为半径作圆,如图2所示。图 2 靶标示意图用一位置固定的数码相机摄得其像,如图3所示。图3 靶标的像请你们:(1) 建立数学模型和算法以确定靶标上圆的圆心在该相机像平面的像坐标, 这里坐标系原点取在该相机的焦点,x-y平面平行于像平面;(2) 对由图2、图3分别给出的靶标及其像,计算靶标

5、上圆的圆心在像平面上的像坐标, 该相机的像距(即焦点到像平面的距离)是1577个像素单位(1毫米约为3.78个像素单位),相机分辨率为1024786;(3) 设计一种方法检验你们的模型,并对方法的精度和稳定性进行讨论;建立用此靶标给出两部固定相机相对位置的数学模型和方法。二、模型假设假设: 1.数码相机成像原理符合小孔成像原理,不存在凸镜产生的图像形变。2.原平面上的直线在像平面上的投影依然是直线。3.在原平面上确定的两直线的交点在像平面上对应两直线的交点位置不变。4.已知在原平面投影图形的边界线坐标。5.两部照相机的光轴平行。6.假设参考坐标系如下:O点坐标(0,0,0)O(0,0-1577

6、)XOY平面平行像平面三、符号说明ai以此为ACD的x轴坐标分量bi以此为ACD的y轴坐标分量xi以此为ACD的比例未知数ABCDE分别为原图中ABCDE在像平面上的投影点ABCDE分别为实际所在平面中的点。P1(1) , P1(2)为点P1的x轴分量和y轴分量。R1(1) , R1(2)为点R1的x轴分量和y轴分量。四、模型的建立与求解模型分析:模型所要做的是求出标靶平面上的特殊点的位置,进而推出两部相机之间的相对位置。在整个模型中,由于是小孔成像原理,则空间中任意点与像平面中投影的连线必定过焦点,又因为焦点坐标(0,0,0)即为原点,由空间几何得知这样的直线上的点的坐标对应成比,因此通过已

7、知的像平面上的点,则此投影点对应的空间中的实际坐标是关于一个未知数的函数,而我们知道3个已知的点便可以确定一个平面,那么未知的标靶平面是一个有3个未知数的函数,那么通过3个点之间的关系,解出3个点的实际未知后,标靶平面的方程便可以确定。那么相机相对与标靶的位置就可以知道,那如果又多部相机,并且知道每部相机相对标靶的位置,那么相机之间的关系便可以简单求出。在这些算法之前所要求的是标靶上特殊点的投影位置,由于图像关于原点投影出现远大近小,比例不能保持,但是由于直线的投影是直线,两条直线的交点只有一个,那么原平面中直线产生的交点,对应的直线的投影产生的交点也是一一对应的。那么通过图形在靶标示意图的四

8、周作圆的外切线,再在圆的内部作圆的内切线,这样圆的四个切点连线的交点就是圆的圆心问题一分析与求解:通过MATLIB载入图片后,求出图形的边界点在任意两个图形的边界点数组weizhi1;weizhi2在weizhi1选取第一个元素点R1,weizhi2中选取元素点R2所得的直线方程将weizhi1weizhi2中的所有点带入方程如果则为右或上切线为左或下切线,根据上图选择所需要的切点如下:以下是在图片平面上原点在左上顶点,横轴为Y,纵轴为X得到的坐标A 与外包线的切点为依次为(149,331)(195,364)(230,315)(183,282)C 与外包线的切点为依次为(176,652)(21

9、9,675)(251,634)(211,604)D 与外包线的切点为依次为(471,597)(560,616)(535,584)(502,549)E 与外包线的切点为依次为(467,295)(505,323)(537,282)(501,246)平面直线方程:,P1,P2为两个已知点的坐标数组。那么连列A点的两个点得到一条直线。另两点得到另一条直线,如果取得的点在A的范围内得到的就是A的圆心取P1=(195,364)P2=(183,282)得到方程1: 再取(149,331)(230,315)得到方程2: 由方程1,方程2得:A的圆心得(189,323)同理得到以下圆的圆心。A的圆心得(189,

10、323)C的圆心得(215,643)D的圆心得(497,289)E的圆心得(505,591)通过转换后ACDE在世界坐标中的坐标为:A的圆心(195,189,-1577)C的圆心(169,-131,-1577)D的圆心(-113,223,-1577)E的圆心(-121,79,-1577)问题3分析与求解:由于计算机图片存储的像素的集合,因此将真实的图像离散化了,那么计算中必定会存在误差,因此建立以下模型检验数据的可靠性。根据投影中直线对应直线,交点位置不变的性质。那么有相同的交点的2组直线,他们在投影平面中的交点也是唯一确定的那么以点C为对象,检验数据:已知:C的圆心(169,-131,-15

11、77), A 与外包线的切点为依次为(149,331)(195,364)(230,315)(183,282)C 与外包线的切点为依次为(176,652)(219,675)(251,634)(211,604)D 与外包线的切点为依次为(471,597)(560,616)(535,584)(502,549)以此求出切C的切线所交的4个交点:取P1=(219,675)P2=(506,616)得到方程1: 再取(176,652)(149,331)得到方程2: 由方程1,方程2得:交点(179,683)同理得到可得另三个交点。(248,612)(173,616)(253,664)4个交点形成的四边形的对

12、角线的交点是也是圆C的圆心。取P1=(179,683)P2=(248,612)得到方程3: 再取(173,616)(253,664)得到方程4: 由方程3,方程4得:交点坐标(218,643)原方程所求的圆心坐标为(215,643),由此可知模型存在误差,但误差较小可以接受。问题4分析与求解:同理在两部像素相同的相机拍摄的两幅图片中,对于标靶上确定的一点便可以求出两部相机的相对位置方法如下:设:已知的点X和它在相机A的参考系中的X在像平面上的点Xa在相机A的参考系中X点的位置为Xa;那么得到向量;同理在相机B中得到向量,若将向量放入相机A的参考系中那么向量减去向量所得新的向量就是B相机相对A

13、相机的位置。具体计算方法如下:计算机中显示的坐标转换为像平面的坐标后:这里我们取ACD的圆心;A的圆心(195,189,-1577)C的圆心(169,-31,-1577)D的圆心(-113,223,-1577)因为直线AA,CC,DD过圆心因此由空间几何得知:设:A点坐标x1*(195,189,-1577)C点坐标x2*(169,-31,-1577)D点坐标x3*(-113,223,-1577)因为:ACD在原平面中为一个直角三角形的三个顶点;AC=DC=378;所以: 带入空间2点之间的距离方程如下:通过LINGO解得方程的解:x1=-1.140540x2=-1.161798x3=-1.21

14、8892同理,分别取ACE;CDE改变等式右端带入相应线段的长度平方后得到的解分别为:所得的解误差较小相对稳定,说明模型可用,数据可以参考。由此组参数得到的ACD实际空间坐标依次为:A(-222.4053,-215.56206,1798.63158)C(-196. 343862,36.015738,1832.155446)D(137.734796,-271.812976,1922.192864)ACD分别四舍五入取整得:已知3点坐标得到3点式平面方程如下:解得ACD所在平面方程为:32721x+8682y-91816z-127327056=0;相机a焦点O到A的向量,相机b的焦点O到A点的向量

15、,O点到O的向量因为相机ab,所视同一点,在空间参考系中位置不变,假设取相机a的参考系为恒定不变的空间参考系,空间两向量的相对位置是不变的,那么在AOO三角形中。参考系不同但空间中两点A O位置不发生变化即不变,因此就是在相机b的参考系中向量,如下图:那么相机b到相机a的距离为方向为的方向上图为相机b的参考系中3点的关系上图在相机a参考系中3点的关系五、模型的评价和推广此模型主要算法较为简单,通过已知关系的标靶上的图形之间的关系,只要有3个已知点及他们距离的值,便可通过此模型求出标靶平面与像平面之间的位置关系,如果有多部相机亦可知道各个相机之间的位置关系。通过这些关系,所的图像就不仅是二维的,

16、通过3D软件的计算便可得到立体的三维模型。而计算机通过此模型判断出标靶的位置后,如在机器人操作时,在各个移动部件上添加标靶,可使机器人自动完成某些特定动作时达到精确定位,在机器人移动过程中通过一个确定点的相对位置改变后,机器人可以判断当前物体相对自己的移动特性如:方向,速度等。在路面监视系统中运用此模型,亦可判断通过车辆的驾驶状况,如:是否超速,是否越过停车线等。但是模型也有局限,两部相机的光轴必须平行,在实际运用中限制较大。 推广:本模型,通过使用MATLIB,LINGO等科学计算软件以及人为笔算,但计算过程不复杂,通过在一种计算机语言上把算法整合起来编译,通过一个程序载入图片完成计算效率会

17、大幅提高,并且移植性好,可通过不同编译完成在许多不同平台上的应用,如:计算机图片计算,三维模型读入计算机,路面监控,机器人研发以及应用。如果解决光轴必须平行的限制条件,那么应用范围将更为广泛。六、参考文献1 郝红伟,MATLAB 6 实例教程,中国电力出版社,2001年9月。2 主编 赵静 但琦,数学建模与数学实验(第3版),高等教育出版社,2008年1月。七、附录function B2 B3 B4 B5 B6=findIt%本程序用于计算像图外包络线切点%输出量:keypoint:切点坐标 %读位图imdata=imread(2008A.bmp);imshow(imdata);hold on

18、;%取边界线B=bwboundaries(imdata);N=length(B)-1;edge(1,1)=B(3);edge(1,2)=B(6);edge(2,1)=B(2);edge(2,2)=B(5);%沿x轴方向做切线count=1;for m=1:2 %计算切点 edge1=edge1,m; position1=1 m; edge2=edge2,m; position2=2 m; v,p,k1,b1,k2,b2=findPoint(edge1,position1,edge2,position2); %记录切点 np=length(v); keypoint(count:(count+np

19、-1),:)=v; position(count:(count+np-1),:)=p; count=count+np; %画图 x=100:600; y1=k1*x+b1; y2=k2*x+b2; plot(y1,x,y2,x); end%沿y轴方向做切线for m=1:2 %计算切点 edge1=flipdim(edgem,1,2); position1=m,1; edge2=flipdim(edgem,2,2); position2=m,2; v,p,k1,b1,k2,b2=findPoint(edge1,position1,edge2,position2); %记录切点 np=lengt

20、h(v); keypoint(count:(count+np-1),:)=v; position(count:(count+np-1),:)=p; count=count+np; %画图 y=200:800; x1=k1*y+b1; x2=k2*y+b2; plot(y,x1,y,x2);end nPoint=length(keypoint);count=ones(1,4);for m=1:nPoint thisone=position(m,1)*10+position(m,2) switch thisone case 11 B3.keypoint(count(1),:)=keypoint(m

21、,:); count(1)=count(1)+1; case 12 B6.keypoint(count(2),:)=keypoint(m,:); count(2)=count(2)+1; case 21 B2.keypoint(count(3),:)=keypoint(m,:); count(3)=count(3)+1; case 22 B5.keypoint(count(4),:)=keypoint(m,:); count(4)=count(4)+1; endendB2.edge=B2;B3.edge=B3;B4.edge=B4;B5.edge=B5;B6.edge=B6;function

22、exitflag=isItkeypoint(edge1,edge2,k,b,flag)exitflag=;s1=length(edge1);s2=length(edge2);for m=1:s1 p=edge1(m,:); y1=k*p(1)+b-p(2); if (y1*flag)0 exitflag=This is not the key point.; return; endend for m=1:s2 p=edge2(m,:); y1=k*p(1)+b-p(2); if (y1*flag)0 exitflag=This is not the key point.; return; en

23、dend function vertex,position,k1,b1,k2,b2=findPoint(edge1,position1,edge2,position2)%确定边界点的个数ss1=length(edge1);ss2=length(edge2);count=1;%搜索切点for m=1:(ss1-1) for t=1:(ss2-1) %取点 p1=edge1(m,:); p2=edge2(t,:); deltak=(p1-p2); k=deltak(2)/deltak(1);%斜率 b=-k*p1(1)+p1(2);%常数 %验证所取是否左切点或上切点 exitflag1=isIt

24、keypoint(edge1,edge2,k,b,1); %判断终止条件 if isempty(exitflag1) vertex(count,:)=p1; position(count,:)=position1; count=count+1; vertex(count,:)=p2; position(count,:)=position2; count=count+1; k1=k; b1=b; else %验证所取是否右切点或下切点 exitflag2=isItkeypoint(edge1,edge2,k,b,-1); if isempty(exitflag2) vertex(count,:)=p1; position(count,:)=position1; count=count+1; vertex(count,:)=p2; position(count,:)=position2; count=count+1; k2=k; b2=b; end end % if count4% return;% end endend

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1