数学建模数码相机定位.docx
- 文档编号:12667352
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:27
- 大小:152.86KB
数学建模数码相机定位.docx
《数学建模数码相机定位.docx》由会员分享,可在线阅读,更多相关《数学建模数码相机定位.docx(27页珍藏版)》请在冰点文库上搜索。
数学建模数码相机定位
高教社杯全国大学生数学建模竞赛
承诺书
我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.
我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
我们知道,抄袭别人的成果是违反竞赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们将受到严肃处理。
我们参赛选择的题号是(从A/B/C/D中选择一项填写):
我们的参赛报名号为(如果赛区设置报名号的话):
所属学校(请填写完整的全名):
参赛队员(打印并签名):
1.
2.
3.
指导教师或指导教师组负责人(打印并签名):
日期:
年月日
赛区评阅编号(由赛区组委会评阅前进行编号):
高教社杯全国大学生数学建模竞赛
编号专用页
赛区评阅编号(由赛区组委会评阅前进行编号):
赛区评阅记录(可供赛区评阅时使用):
评
阅
人
评
分
备
注
全国统一编号(由赛区组委会送交全国前编号):
全国评阅编号(由全国组委会评阅前进行编号):
数码相机定位
摘要
柯达于1975年开发世界第一部数码相机。
由此,数码照相机便家喻户晓起来。
数码相机定位在交通监管(电子警察)等方面有广泛的应用。
所谓数码相机定位是指用数码相机摄制物体的相片确定物体表面某些特征点的位置。
最常用的定位方法是双目定位,即用两部相机来定位。
对物体上一个特征点,用两部固定于不同位置的相机摄得物体的像,分别获得该点在两部相机像平面上的坐标。
只要知道两部相机精确的相对位置,就可用几何的方法得到该特征点在固定一部相机的坐标系中的坐标,即确定了特征点的位置。
于是对双目定位,精确地确定两部相机的相对位置就是关键,这一过程称为系统标定。
标定的一种做法是:
在一块平板上画若干个点,同时用这两部相机照相,分别得到这些点在它们像平面上的像点,利用这两组像点的几何关系就可以得到这两部相机的相对位置。
然而,无论在物平面或像平面上我们都无法直接得到没有几何尺寸的“点”。
实际的做法是在物平面上画若干个圆(称为靶标),它们的圆心就是几何的点了。
而它们的像一般会变形,所以必须从靶标上的这些圆的像中把圆心的像精确地找到,标定就可实现。
关键词:
针孔成像,坐标变换,图像处理,相机镜头畸变,双目定位
。
一、问题的提出与重述
1.数码相机监视系统是由:
景点(scene)方位、相机参数以及方位、成像参数部分组成的系统,系统的标定就是要确定系统各部分的相互关系(主要是几何、数量关系),系统的参数主要有两部分:
1)相机的内参数:
用于描述相机本身特定属性的参数以及在空间中定位的参数,2)相机的外参数:
是指相机相对与世界坐标系(用于公共参考的坐标系)的位置关系,主要由相机坐标系到世界坐标系的变换(平移、旋转)来描述。
确定了相机的内参数和外参数,系统就标定成功。
2.图示
u --------景点在像平面中的像;
uOC ----------------主光轴(相机坐标系Z轴)上的点在像平面的像点(殴氏坐标);
u0a --------主光轴(相机坐标系Z轴)上的点在像平面的像点(仿射坐标);3. 坐标系统
OwXwYwZw ------------ 世界坐标系
OcXcYcZc -------------- 相机坐标系
OiXiYiZi --------------- 像欧氏坐标系
OaXaYaZa --------------- 像仿射坐标系
[注:
世界坐标系是系统的一个客观的参考系;相机坐标系原点在相机光心(焦点);像的欧氏坐标系与相机坐标系的关系是:
Z轴平行且同向,X-Y面平行;像仿射坐标系与像欧氏坐标系关系密切,Z轴,Y轴平行,X轴有个倾斜,主要考虑是,像素的方快长和宽可以不等,而且,视觉效果上可能会出现倾斜情况]。
4.射影几何简介
主要介绍如何通过2D图像信息实现3D世界的自动测量,这里的测量主要指,3D中点的空间坐标,以及通过2D图像两点位置关系测量三维距离信息,这里限于针孔模型(thinlens)也称中心投影(centralprojection)针孔模型的图像信息中,3D中的平行线不在保持平行。
射影空间的概念
考虑不包括坐标原点的n+1维空间,Rn+1-{0,0,...0},定义一个等价关系,[x1,x2,...,xn]T等价于[x1',x2',...,xn']T当且仅当存在非零数值t,[x1,x2,...,xn,xn+1]T=t*[x1',x2',...,xn',xn+1']T,射影空间Pn等于Rn+1-{0,0,...0} 关于此等价关系的商空间,射影空间中的点称为齐性类,射影空间中的点的坐标通常用齐性坐标表示为,x*=[x1,x2,...,xn,1]T,最后一个坐标为1,事实上,通过原点的任意直线上的点(原点除外)属于同一个等价类.
[于是,对相机坐标系的过原点的任意射线上的点,是等价类, 因为他们的像点相同].
于是, 射影空间Pn可以和Rn建立起一一对应, ,[x1,x2,...,xn,1]T--------[x1,x2,...,xn]T
[注:
在这样的表示下的好处是,坐标变换中的平移、旋转的表达形式达到一致,后面会看到这一点。
一个射影变换是一个(n+1)*(n+1)矩阵A 使y*=Ax*, 与A相差一个数值因子的变换也是射影变换
光学中心、像平面、场景示意图
二、求解的思想
1. 建立系统的坐标变换描述,坐标间的位置关系(主要有:
1) 世界坐标系到相机坐标系的平移和旋转变换,2) 相机坐标系到像坐标系的仿射变换,确定需描述的系统参数.
2.根据已知靶标上的景点坐标与像平面对应的像素坐标,建立方程组,求解方程组确定系统参数.完成系统的初步标定.
3.根据标定的系统,系统参数已知, 计算相应景点的像素坐标用于检验偏差,或采用特殊的坐标系或特殊的位置关系检验系统标定的效果.
4. 上述是单相机监视系统, 根据单相机系统, 确定两个相机的摄象机矩阵P,P' 由此,确定两部相机的相对位置.
[注:
把标是平面图形, 因此, 两幅图片存在单应关系, 两幅图片间存在单应矩阵]
三、单相机定位系统的描述
1.世界坐标系中的坐标 到 相机坐标系的坐标的转换:
Xw是景点X在世界坐标系中的表示,点X的坐标由世界坐标系转换至相机坐标系的变换为:
Xc=R(Xw-t),t 为平移列向量,R为三阶正交矩阵,而Xc 是点X在相机坐标系下的坐标;
2. 景点以及对应像点的三维坐标:
X的三维成像坐标,的推导:
Xc的三维像点Uc 设Xc=[xc,yc,zc]T ,Uc =[-fxc/zc,-fyc/zc,-f]T Uc的坐标推导,见下述示意图(应用成像原理针孔模型)
相机坐标系的原点是相机的焦点,则由原点出发的射线上的任何点具有相同的像素坐标,这样的点在相机坐标系下的坐标具有性质:
[xc,yc,zc],[xc', yc', zc']对应坐标成比例。
既存在a非零常数,:
[xc,yc,zc] = a[xc', yc', zc'],这种关系是定义在相机坐标系下三维空间中点坐标的一个等价关系,利用等价关系将R3等价类的商空间,其中的类中每个景点成像具有相同的二维像素坐标。
3. 三维像点坐标到像素坐标的转换
1)OiXiYiZi (像平面欧几里得坐标系):
OXY面作为成像像素坐标平面,为此根据像素坐标特点,坐标系原点取在左上角,Z轴与相机坐标系Z轴有相同的指向,相机坐标系的Z轴与像素平面交点是像素平面的主点,像素坐标记为[u0,v0];
2)OUVW坐标系(像素平面仿射坐标系):
W与Zi相同,V轴是Yi的伸缩,UV面是XiYi面的仿射
3)由Xc=[xc,yc,zc]T ,Uc =[-fxc/zc,-fyc/zc,-f]T 到[U,V,W]的变换
上述的 变换矩阵记为K
如果已知[u,v]坐标与[xc,yc,zc] 的数据, 有一对点的数据就可以得到两个方程,对足够的信息量,就可以将参数确定下来
4. 景点坐标到像素坐标的变换
设世界坐标系转换至相机坐标系的变换为:
Xc=R(Xw-t),t 为平移列向量,R为三阶正交矩阵,而Xc 是点X在相机坐标系下的坐标;则有
5.建立求解M的方程组
上述可建立2k个12元的齐次方程组,可以通过Matlab中的 null 函数求解
6. K,R,t矩阵的计算
M是3行4列矩阵,前3列构成的方阵是A=KR,后1列为b=-KRt
1)利用Matlab中的函数[k,r]=qr(A)可以实现从矩阵A得到,上三角矩阵K,和正交矩阵R;
2)t=A-1*b
这样就完成了系统的标定。
实现由景点的三维坐标计算像点的像素坐标,但其逆不是一一对应的,原因在于景点与像点是多对一的。
四、标定示例的计算
1.取世界坐标系OWXWYWZW原点为靶标中心,靶标平面为XOY面,Z轴指向相机方向。
于是可确定其上5个圆的圆心在世界坐标系中的坐标,在加上靶标中心的世界坐标系的原点,六个点的坐标列表。
xyz=[
2. 靶标上的六点对应的像坐标的确定
1) 将靶标的像(题目本身给出的靶标的像就是1024*768分辨率)按1024*768分辨率,建立图像文件(复制到画板中,保存为24色真彩图或256色或16色索引图像,保存到Matlab中work文件夹。
24色真彩图的图像文件没有颜色表,图像矩阵为1024*768*3大小,256色或16色位图包含图像矩阵1024*768大小,和颜色表分表为256*3,16*3。
2)转换为灰度图像
对24位真彩图w=imread('babiaoxiang.bmp') %读出图像矩阵w
wgray=rgb2gray(w) % 将w矩阵转换为灰度矩阵(注,w为1024*768*3, 而wgray是1024*768)
imshow(wgray) % 显示灰度图像
对于索引图像(256色或16色色拉图)
[w,map]=imread('babiaoxiang.bmp') %读出图像矩阵和颜色表
wgray=ind2gray(w,map) %转换为灰度矩阵
imshow(wgray) % 显示灰度图像
3) 转换为二值图像
选取适当阈值将灰度图像转换为二值图像
n=size(wgray)
fori=1:
n
(1)
forj=1:
n
(2)
if(wgray(i,j)<50)
wgray(i,j)=0;
else
wgray(i,j)=255;
end
end
end
4) 提取边缘
(1)利用edge函数直接提取边缘(或定义其它提取边缘的算子)
wgray=edge(wgray)
(2)将边缘点集合定义出来
逐个像素判断是否是边缘,是,将像素坐标累计追加到边缘点坐标集合中。
5)将边缘点分类
(1)最小距离聚类
两个边缘点距离小于5个像素就被分成一类,按这个原则,就可以把所有边缘点分成若干类,每一类计算类中心像素坐标。
i)计算两两边缘点的距离矩阵
ii)初始时各点成一类,将距离最小的两点合并成一类,类数减少
iii)计算各类距离,再将距离最小的两类合并,直至最后合并为一类。
本题可以实施到类间距离大于5,不在合并。
(2) 已知分为五类,
i)每一类中确定一个两个坐标平均值猜测的初始向量。
ii)然后,将其它边缘点按距离初始坐标平均向量距离最短的原则,进行第一次分类。
iii)将第一次分类结果得到的各类边缘点,求坐标平均值向量作为下一次分类的各类中心,继续分类。
iv)迭代一定次数为止。
(3)有逐个边缘点按距离小于一定阈值进行分类
6) 计算各类像素平均坐标,写出[u(i),v(i)] i=1,2,3,4,5,6
按K-均值聚类并计算各类边界点平均坐标的程序:
clear
w=imread('camrea.bmp');
w=rgb2gray(w)
n=size(w);
fori=1:
n
(1)
forj=1:
n
(2)
if(w(i,j)<50)
w(i,j)=0;
else
w(i,j)=255;
end
end
end
w
w=edge(w);
n=size(w)
ed=[];
imshow(w);
fori=1:
n
(1)
forj=1:
n
(2)
if(w(i,j)==1)
ed=[ed,[i;j]];
end
end
end
%
center=[190,195,210,501,500;324,426,642,583,285];
n=size(ed);
m=10^4;
fork=1:
5 % 按K-均值聚类算法进行五次迭代
l=1;
ed1=[];
fori=1:
n
(2)
forj=1:
5
mm=max(abs(ed(:
i)-center(:
j)));
if(mm m=mm; l=j; end end m=10^4; ed1=[ed1,[ed(: i);l]]; l=1; end % nn=size(ed1); center1=zeros(3,5); fori=1: nn (2) forj=1: 5 if(ed1(3,i)==j) center1(: j)=center1(: j)+[ed1((1: 2),i);1]; end end end fori=1: 2 forj=1: 5 center1(i,j)=center1(i,j)/center1(3,j); end end center=center1((1: 2),: ) end center center= 190.9779 196.8821 213.4818 503.4054 501.2403 323.4081 425.2890 639.8097 581.7838 285.2747 center= 190.9779 196.8821 213.4818 503.4054 501.2403 323.4081 425.2890 639.8097 581.7838 285.2747 center= 190.9779 196.8821 213.4818 503.4054 501.2403 323.4081 425.2890 639.8097 581.7838 285.2747 center= 190.9779 196.8821 213.4818 503.4054 501.2403 323.4081 425.2890 639.8097 581.7838 285.2747 center= 190.9779 196.8821 213.4818 503.4054 501.2403 323.4081 425.2890 639.8097 581.7838 285.2747 center= 190.9779 196.8821 213.4818 503.4054 501.2403 323.4081 425.2890 639.8097 581.7838 285.2747 注: 程序中所使用的图像为靶标的像保存为24位真彩图像,文件名称为 camreadingwei 3. 单相机系统参数的标定 1) center=[233.9779 239.8821 256.4818 544.2403 546.4054; 344.4081 446.2890 660.8097 306.2747 602.7838]/3.78 单位换算为毫米 center= 61.8989 91.1133 63.4609 118.0659 67.8523 174.8174 143.9789 81.0251 144.5517 159.4666 2) 靶标上圆心三维坐标: scenecoord=[-50,50,0;-30,50,0;0,50,0;50,50,0;-50,-50,0;50,-50,0]; 3) 建立单相机系统参数方程组 Mx=0; 还应有一个条件,考虑到M=[KR|-KRt],且K的第三行为[0 0 1],R的第三行为单位向量,故M矩阵的第三行前三列三个元素m31m32m33 平方和为1 即m312+m322+m332=1 系数矩阵的确定: center=[233.9779 239.8821 256.4818 544.2403 546.4054; 344.4081 446.2890 660.8097 306.2747 602.7838]/3.78' scenecoord=[-50,50,0;-30,50,0;50,50,0;-50,-50,0;50,-50,0] mm11=[scenecoord,ones(5,1)]; mm12=zeros(5,4) mm13=(-center(: 1)*ones(1,4)).*mm11 mm21=zeros(5,4); mm22=mm11; mm23=(-center(: 2)*ones(1,4)).*mm11; mm=[[mm11,mm12,mm13];[mm21,mm22,mm23]], 为参数方程的系数矩阵 方程的求解: 在只知道五组点的对应坐标情况下,无法确定12个参数,但由于是齐次方程,因此只有11个参数独立,即便这样,也无法确定所有参数,为此利用下述方法求近似解: 为求 mm*x=0;的解 改为寻求满足条件 m312+m322+m332=1 的条件下的 ||mm*x||2的最小值 而||mm*x||2=(mm*x)'(mm*x)=x'*mm'mm*x 问题转化为: 求解 min x'*mm'mm*x s.t. m312+m322+m332=1 约束条件也可以改写为 x'ax=1 其中a为12阶方阵,其中,除a(9,9)=a(10,10)=a(11,11)=1外,其余元素皆为0 利用优化函数fmincon求解约束极值问题 编写目标函数文件 myfundingwei.m functiony=myfundingwei(x) center=[233.9779 239.8821 256.4818 544.2403 546.4054; 344.4081 446.2890 660.8097 306.2747 602.7838]'/3.78 scenecoord=[-50,50,0;-30,50,0;50,50,0;-50,-50,0;50,-50,0] mm11=[scenecoord,ones(5,1)]; mm12=zeros(5,4) mm13=(-center(: 1)*ones(1,4)).*mm11 mm21=zeros(5,4); mm22=mm11; mm23=(-center(: 2)*ones(1,4)).*mm11; mm=[[mm11,mm12,mm13];[mm21,mm22,mm23]]; y=x'*mm'*mm*x; 编写约束函数文件 conobjdingwei.m function
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 建模 数码相机 定位
![提示](https://static.bingdoc.com/images/bang_tan.gif)