数码照相机定位剖析.docx
- 文档编号:17105727
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:18
- 大小:351.10KB
数码照相机定位剖析.docx
《数码照相机定位剖析.docx》由会员分享,可在线阅读,更多相关《数码照相机定位剖析.docx(18页珍藏版)》请在冰点文库上搜索。
数码照相机定位剖析
数码相机定位
摘要
系统标定是双目定位的关键,其在交通监管(电子警察)等方面具有重要作用。
我们分别建立了针孔模型和矩阵模型,通过Matlab软件进行求解,确定了像点的坐标与相机的相对位置,从而解决了系统标定问题。
针对问题一,由于需要求坐标,所以我们建立了四个本文会用到的坐标系,并求出了四个坐标系间的转化关系式。
我们根据相机成像的原理,建立了针孔模型,通过使用Matlab软件对圆的像作外切矩形并得出切点坐标,利用切点与圆心坐标间的关系式确定出了圆心像的像素坐标。
最后通过像心与光心坐标系之间的转换关系得出了圆心像的光心坐标。
针对问题二,它其实是问题一的一个应用,我们先将图片导入计算机,使用Matlab程序得出了椭圆与其外接矩形的交点坐标,然后将此数据带入针孔模型中,运用坐标系转化法解得圆心的像的光心坐标分别为:
A(-49.6,51.7,417.2),B(-23.9,49.6,417.2),C(34.4,45.4,417.2),D(19.4,-32.1,417.2),E(-60.2,-31.1,417.2)。
针对问题三,由射影定理知道我们需要用到三个圆心坐标,因此我们设定了A、C、E三个圆圆心的世界坐标。
再根据像点与圆心的几何关系,利用向量垂直、相似三角形的原理求得了像点与圆心的函数关系式。
利用Matlab软件求解得出像点a、c、e的坐标后,根据光心与世界间的转换关系求得了B、D的像点的光心坐标。
我们将此结果与问题二的结果作比较,分析偏差,得出模型一精度高、稳定性好的结果,验证了模型一的合理性。
针对问题四,我们将两部相机放在同一世界坐标系下,分别用两部相机对处于同一位置的同一照片进行拍摄,通过问题二的方法求解得到每个相机的光心在世界坐标系中的坐标,通过两坐标间的距离即可确定两个相机间的距离。
我们通过颜色赋值、坐标与矩阵间的相互转化,把难以处理的图片信息数据化,建立针孔与坐标模型,并给出了计算结果的程序,使定位问题可以通过计算机来解决,适应于大数据的处理,节省了人力与时间。
关键字:
数码相机定位;坐标系;针孔模型;矩阵;射影定理
1.问题重述
数码相机定位在交通监管等方面有广泛应用。
它是指用数码相机摄制物体的相片确定物体表面某些特征点的位置,最常用的定位方法是双目定位(用两部相机来定位),即用两部固定于不同位置的相机拍摄物体,分别获得物体上的特征点在两部相机像平面上的坐标。
根据两部相机精确的相对位置用几何法确定特征点的位置。
精确地确定两部相机的相对位置(即系统标定)是双位定位的关键。
标定做法:
先在平板上画若干点,同时用两部相机照相,得到两组像点,利用这两组像点的几何关系就可以得到两部相机的相对位置。
因无法得到没有几何尺寸的“点”,我们实际做法:
在物平面上画若干个圆(作为靶标),以几何圆心为点。
而圆的像一般会变形,所以必须从圆的像中把圆心的像精确地找到,从而实现标定。
靶标设计:
取1个边长为100mm的正方形,分别以四个顶点(A、C、D、E)为圆心,12mm为半径作圆。
以AC边上距离A点30mm处的B为圆心,12mm为半径作圆。
用一位置固定的数码相机摄得其像。
我们需要建立数学模型解决如下四个问题:
(1)建立数学模型和算法以确定圆心的像坐标,坐标系原点取该相机的光学中心,x-y平面平行于像平面;
(2)计算圆心的像坐标,该相机的像距(即光学中心到像平面的距离)是1577个像素单位(1毫米约为3.78个像素单位),相机分辨率为1024×768;
(3)设计一种方法检验模型,并对方法的精度和稳定性进行讨论;
(4)建立用此靶标给出两部固定相机相对位置的数学模型和方法。
2.基本假设
1.假设圆的成像为椭圆形,圆心的像位于椭圆的几何中心;
2.假设相机摄的像没有出错;
3.假设拍摄时标靶的平面没有扭曲。
3.通用符号说明
序号
符号
符号代表的意义
1
像素、图像、光心坐标系的原点
2
相机的光心
3
圆心的像在像素坐标系里的横坐标
4
圆心的像在像素坐标系里的纵坐标
5
平移向量
6
旋转矩阵
4.问题一的模型建立与求解
4.1问题的分析
问题一需要我们建立模型和算法来确定圆心的像坐标,我们首先就需要建立坐标系来表示坐标。
基于以后会用到的所有坐标,我们拟建立世界、图像、像素和光心四个坐标系,并求其转化关系式。
我们所求的坐标应在光心坐标系中。
由此,我们打算计算出各圆圆心的像素坐标,然后其转化为光心坐标[1]。
对于各圆圆心的像素坐标的计算,我们打算在椭圆的外围用计算机做一个外切矩形,由于椭圆曲线中平行的切线到椭圆中心的距离相等,那么我们就能够将矩形的中心点作为椭圆的中心,即像心。
根据相机成像的原理,我们拟建立针孔模型,通过坐标转换法来求像心的光心坐标。
4.2模型的准备
我们需要建立坐标系来表示圆心的像的坐标,为了方便,我们在此列出以后可能会用到的所以坐标系。
建立的四个坐标系的名称、意义及表示方法如下:
表1坐标系定义表
序号
坐标系名称
坐标系意义
坐标值表示方法
1
世界坐标系
根据自然环境所选定的坐标系(三维)
2
图像坐标系
坐标原点O1在图像平面的中心,X轴、Y轴分别为平行于图像平面的两条垂直边(二维)
3
像素坐标系
坐标原点O0在图像平面的左上角,X轴、Y轴分别平行于图像坐标系的X轴和Y轴
,坐标值为离散的整数值
4
光心坐标系
以相机的光心为坐标原点O2,X轴、Y轴分别平行于图像坐标系的X轴和Y轴,相机的光轴为Z轴
坐标系的方位图如下所示:
图1坐标系方位图
四个坐标系间的转化关系求解如下:
我们将坐标化为矩阵的形式,并由坐标系间的几何关系得到图像坐标系与光心坐标系之间的关系如下:
(4)
KC表示常数,f为相机焦距。
由于任意两个空间直角坐标系之间可以通过旋转、平移的方式叠合,所以光心坐标系与空间坐标系可以由旋转矩阵R和平移向量t联系在一起,它们之间存在如下转换关系:
(5)
为点P在世界坐标系中的坐标。
由于图像坐标系以毫米为单位,在图像坐标系中一般采用像素坐标,故需要将图像坐标系转化为以像素为单位的像素坐标系,转化关系如下:
(6)
式中
,
是物像元素长度比例,单位是像素。
由上述三个等式,我们分别得到了图像与光心、光心与空间、图像与像素之间的转化关系,我们将式(4)、(5)代入(6)式并化简,可以得到光心与像素之间的关系,如下所示:
(7)
其中,
,
为相机的外部参数特征,
为相机的内部参数特征。
4.3模型的建立及算法
求各圆心的像点坐标的做法如下:
第一步:
将靶标的像转化为数值图像,因为圆的像域与域外颜色不同,所以可以给他们赋与不同值,并用矩阵存储。
第二步:
找到圆的像的外切矩形,其做法如下:
把图片导入计算机中,得到一个灰度矩阵,矩阵的每个元素为每个像素的灰度值,然后根据此矩阵编Matlab程序找出每个椭圆的边界与其切线(平行于x、y轴)的交点的横纵坐标并记录。
以A圆为例,记A圆的像在X轴方向最高最低两点Ax1、Ax2,它们的X坐标分别为ax1、ax2,在Y轴方向最高最低两点Ay1、Ay2,,其y坐标分别为ay1、ay2。
设A圆的像心的像素坐标为
则由于矩形的几何中心与像心重合,我们得到如下关系式:
(1)
(2)
同理计算其他各圆圆心的像素坐标。
第三步:
通过像心坐标系与光心坐标系的转换关系得到光心坐标,做法如下:
像素坐标系与图像坐标系中的坐标原点O0与O1关系为:
,
所以,
由于相片的分辨率为
,由我们所设的图像坐标系原点在相片中的位置,我们可以得出:
由图像坐标系和光心坐标系几何关系可知P点在光心坐标系下的坐标为:
(3)
5.问题二的模型建立与求解
5.1问题的分析
问题二实际上是问题一的一个应用,我们利用问题一中的模型和算法应该可以求得各圆圆心的像坐标。
我们打算先把图形转换成.bmp格式,导入到计算机中,使计算机识别图形。
然后我们打算利用颜色的变化来编写Matlab程序,确定图像的外接矩形。
根据外接矩形的坐标,我们准备由式
(1)、
(2)计算出各圆像心的像素坐标。
最后我们拟将圆的像心的像素坐标带入公式(3)中,来求其光心坐标。
5.2模型的建立与求解
利用颜色的变化编写Matlab程序原理如下:
由于圆像的颜色与空白处颜色不同,我们给这两个颜色分别赋值。
当程序从上到下扫过图像区域时数值会发生变化,当数值发生第一次变化时的点记录为最高点,使数值发生第二次变化时的点记录为最低点。
具体做法如下:
先把图形格式转换为.bmp格式,然后把图片导入Matlab中,得到一个1024*768的灰度矩阵,矩阵的每个元素为每个像素的灰度值,然后根据此矩阵编Matlab程序(见附录)找出每个椭圆的边界与其切线(平行于x、y轴)的交点的横纵坐标,图形如下:
图2.图像坐标图
我们根据这些点的坐标由式
(1)、
(2)确定出各圆心的像的像素坐标,列表如下:
表2圆心的像的像素坐标值表
圆的代号
圆心的像的像素坐标
A
B
C
D
E
然后将上表的数据带入公式(3)中,求得其光心坐标分别为:
表3圆心的像的光心坐标值表
圆的代号
圆心的像的光心坐标
A
B
C
D
E
由表3我们得出:
通过Matlab程序和坐标系转化法,我们由针孔模型求得靶标上圆的圆心在像平面上的像坐标分别为A(-49.6,51.7,417.2),B(-23.9,49.6,417.2),C(34.4,45.4,417.2),D(19.4,-32.1,417.2),E(-60.2,-31.1,417.2)。
6.问题三的模型建立与求解
6.1问题的分析
问题三需要我们设计方法检验问题一的模型,并对方法的精度和稳定性进行讨论。
由于模型一没有提及相机在世界坐标系中的具体方位信息,所以我们打算利用这一信息来检验坐标模型。
我们拟根据问题二中已经得到的对应点的光心坐标和像素坐标,(打算)建立矩阵,来求解出像心的世界坐标参数。
求解出这些参数后,我们将结果与问题二的结果作比较,应该能得出问题一模型精度的检验结果。
6.2模型的准备
世界坐标系中有六个元素来表示相机的位置,其中三个用来描述相机光心S的空间位置,可用平移向量t表示;另外三个是表示相机空间姿态的三个角元素可用旋转矩阵R表示[2]。
平移向量即描述世界坐标系相对于光心坐标系相对位置的向量,
分别表示世界坐标系的原点在光心坐标系下的三个坐标,即这三个变量确定了相机相对与世界坐标的空间位置。
由世界坐标系到光心坐标系转换的旋转矩阵R可以由表示相机空间姿态的三个角元素a、b、c确定,
6.3模型的建立
由射影定理[3]我们得到:
两个点列间的三对对应点可以唯一确定一个射影对应。
由此可知三维中的三个点及它们的像,确定了唯一的投影关系。
所以,我们由3对对应点可以建立6个独立的方程,得到唯一确定的6个相机外部参数。
根据上述原理,只要我们在世界坐标系中任取三个点就可以将相机的外部参数确定下来。
在这里,为了方便,我们取A、C、E三圆的圆心为第一列对应点。
把A圆的圆心与世界坐标系的原点重合,AE的圆心的连线与世界坐标系的X轴重合,AC的圆心的连线与Y轴重合,如图所示:
图2相机成像图
则A、C、E三点在世界坐标系中的坐标可以表示为:
△ACE的成像为△ace,它由SA、SE、SC与像坐标平面的交点连线形成。
a、c、e由问题二已求得。
我们固定a点,将c、e分别沿着SC、SE平移到c1,e1,使AC//ac1,AE//ae1,所以△ACE与△ac1e1相似。
设c1,e1在光心坐标系Z轴方向上相对c、e的平移量为zc1、zc2,所以
(8)
又由两三角形相似,得到对应边成比例,即:
带入坐标,得到等式如下:
(9)
(10)
将公式(8)、(9)、(10)联立,组成一个非线性方程组,通过Matlab(程序见附录)求出c1,e1的最优光心坐标值,再根据两三角形的相似比
推得向量关系如下:
从而推出A、C、E的光心坐标分别为:
。
由几何关系可知:
(11)
6.3模型的求解
在问题二中我们已经求得a、c、e三点的光心坐标为分别为
、
、
。
将坐标代入等式(7)(8)(9)(10)(11)中,求得c1,e1的光心坐标分别为:
、
由于a与c1坐标均已得到,所以ac1的长度为57.15,ρ=0.5715,得出A、C、E的光心坐标如下表所示:
表4圆的像心的光心坐标表
圆心代号
圆的像心的光心坐标
A
C
E
由此得
。
由于我们已知C、D的世界坐标,所以可以求出它们在光心坐标系下的坐标值,将其与用模型一得出的坐标作对比得:
表5模型结果对比表
圆心代号
问题三求出的坐标值
问题二求出的坐标值
xyz三个方向的偏差
B
-0.3411,0.0022,0.0087
D
-0.1759,-0.0881,0.0535
由上表可以看出,模型一求解的各像点的坐标与此模型在X轴方向上有一定偏差,在Y与Z轴上偏差极小。
我们得出结论如下:
通过建立模型三,与模型一得出的结果作对比,我们发现它们得出的坐标值没有太大出入,所以此模型对于解决本问题是正确的。
由像点在XYZ三个方向的偏差的大小得出:
模型一在Y轴与Z轴上精度极高,在X轴方向上精度有略微偏大;由于每个像点通过两种方法求解的坐标的差距均较小,我们得出矩阵转换法的稳定性很高。
7.问题四的模型建立与求解
7.1问题分析
问题四需要我们给出两部固定相机相对位置的数学模型和方法,我们首先应将两部相机放在同一世界坐标系下,因为只有处于同一坐标系才能讨论其位置关系,我们拟用相机光心间的位置关系来描述相机间的位置关系。
由于问题三已求得世界坐标系到光心坐标系转换关系,而要求的相机光心在光心坐标系下的坐标我们已知,所以我们拟采用与问题三相似的办法,打算建立圆心的像的矩阵模型,用矩阵转换法处理此模型,可能得到两个相机坐标系的旋转矩阵和平移量,通过求解矩阵来得到每个相机的光心在世界坐标系中的坐标。
由于向量的模可以表示两点间的距离,我们拟根据这两个坐标,求出此向量的模,由此两个相机光心间的距离就可以获得,相机间的位置关系从而确定[2]。
7.2模型的建立
下列等式中各参数代表的意义与问题一、问题二一致。
由问题三我们得到如下世界坐标系到光心坐标系转换关系:
根据上述模型相机外部参数R与t,我们可以做如下转化:
(4)
进一步转化上式(4),得到R的逆存在如下转化关系:
(5)
因为光心坐标原点对应的坐标为
,我们将它带入式(5),得到如下等式:
我们分别设两部照相机的平移向量为t1、t2,旋转矩阵为R1、R2,则它们的关系可表示为:
与
于是我们得到两架照相机的光心在同一世界坐标系中的坐标,分别为:
,
两个点的坐标变成已知以后,两相机的相对位置便得到了确定。
我们通过求两相机光心间向量的模来确定两部相机间距:
即为两相机的间距。
8.模型的评价
8.1模型的优点
1.对于模型一,我们把原本难以处理的图片信息数据化,此法简便又实用,经过检验发现它的精度与稳定性都很好,可以处理大多数的此类定位问题。
2.对于模型二,我们通过摄影定理、向量垂直定理和相似三角形定理这三个自然定理来计算结果,所以本模型的精度、稳定性和可信度极高,完全能够作为检验模型一的依据。
3.对于模型三,我们通过将坐标转换为矩阵,再利用矩阵的变换来求解坐标,构建了合理的桥梁,使抽象的问题数据化,非常合理。
4.对于所有的模型,我们都给出了Matlab程序,我们只需要输入已知数据,即可由计算机自动求算出结果,操作简单,适用于大量数据的处理。
8.2模型的缺点
由于本题所给的圆与圆的像太少,使得我们没有足够的数据带入模型检验,对于精度与稳定性的讨论就不够全面。
参考文献
[1]李琪、王博,基于线性模型的数码相机定位算法[J],计算机与现代化,第1期(总第197期):
57-60页,2012年1月
[2]苏金林,数码相机定位方法的数学模型研究[J],自动化与仪器仪表,第3期(总第161期):
31-34页,2012年
[3]熊琰、龚华军、沈哗青,一种基于直角三点的数码相机外参数标定方法[J],冶金自动化,增刊(s2),2006年
附录
1.问题二求各个像心的Matlab代码
str1='C:
\Users\96512\Desktop\xiti3\';
str2='tupian.bmp';
str3=strcat(str1,str2);
image=imread(str3);
A=image(1:
384,376:
512);
fori=1:
384
x=mean(A(i,:
));
K(i)=x;
end
fori=1:
512
y=mean(A(:
i));
M(i)=y;
end
2.问题三计算c1,e1点坐标的代码
m1=(-60.2)/417.195;
m2=(-31.1)/417.195;
m3=34.4/417.195;
m4=45.4/417.195;
e1='(xc1+49.6)*(xe1+49.6)+(ye1-51.7)*(yc1-51.7)=0';
e2='(xe1+49.6)^2+(ye1-51.7)^2+ze1^2=(xc1+49.6)^2+(yc1-51.7)^2+zc1^2';
e3='xe1=(-0.1443)*ze1-0.1443*417.195';
e4='ye1=(-0.0745)*ze1-0.0745*417.195';
e5='xc1=0.0825*zc1+0.0825*417.195';
e6='yc1=0.1088*zc1+0.1088*417.195';
g=solve(e1,e2,e3,e4,e5,e6);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码照相机 定位 剖析
![提示](https://static.bingdoc.com/images/bang_tan.gif)