与内部参数。以寻找实物的特征点与像图中点坐标的关系。 5.1 模型的建立和求解:
利用数码相机我们可以获得一个三维物体的二维图像,建立了世界坐标系 、照相机坐标系 、像坐标系 、物坐标系四个坐标系。如图5所示,xoy平面为数码照相机平面坐标系,xwowyw平面为物平面坐标系,xcocyc平面为像平面坐标系。
z ?xw,yw,zw?ow y o1xw y1 ocxc yc?xc,yc? o x1 y x 图5 相机坐标与像坐标和物坐标
先把各个坐标进行如图5的转换,得到各坐标系点转化到图像像素坐标系点,然后通过模型计算求解。转化过程如图6所示。
图6 各个坐标间的转化流程图
过程A:将世界坐标?xw,yw,zw,1?转化成照相机坐标?x?x???y?R?????z??0???1??xw?T?yw??1??zw??1??????,y,z,1?,则有
6
其中:R为3*3正交单位旋转矩阵; T为位移向量,T??Tx,Ty,Tz?。
过程B:空间点在照相机坐标系中的坐标为?x,y,z?,它在相机成像平面上 的投影点为p?xc,yc,f?,有:
?xc??yc???1??f???0??????00f00010??0?0???x???y???z????1?
过程C:图像坐标系定义在图像上,?x1,y1?为像素坐标,?xc,yc?为物理 坐标。?xc,yc?坐标系以oc为原点,xc轴与yc轴分别与x1,y1轴平行,oc为相机光轴与图像平面的交点。若oc在x1,y1坐标系中的坐标为?a,b?,像素在xc轴与yc轴方向上的物理尺寸为sx,sy,则:
?x1??sx???y1?0??????1???00sy0a??b?1???xc???y?c???1??
根据过程A,B,C,世界坐标系表示的P的坐标与投影点p的坐标?x1,y1?的关系如下?1?:
?x1??sx????y1?0??????1???00sy0?xw?T?yw??1??zw??1??????a??b?1???f?0???00f00010???R0??0?0???xw?T?yw??1??zw??1???????xw?y?w?zw??1??xw????yw??M????zw????1????sx??0???00sy0ab10??0?0???R??0??a1????a?5????a9?a2a6a10a3a7a11?xwa4????ywa8??zwa12????1
????MM1???2即:
?xw?x1??yw???y?M?1??zw??1????1 (1)
其中:在针孔模型下r?f?1,M为3?4矩阵,称为投影矩阵,内部包含内外参
7
数。M1完全由sx,syM1,a,b决定,由于sx,sy,a,b只与照相机的内部结构有关,故称
为内部参数矩阵,M2只与目标在世界坐标系中的位置有关,则称之为方位矩
阵。
如果我们能通过给定的一些已知量确定该数码相机的参数矩阵M,就能利用靶标的中心坐标求得投影到像平面上的像的物理坐标。但通过现有的已知量无法求出M矩阵,因此通过matlab取点法来求解,方法如下:
首先用matlab提取了图像上外轮廓点的像素坐标。在像平面内,为了得到靶标上圆的圆心在该相机像平面的像坐标(以o为坐标原点),我们需要从像平面内的直角坐标系x1o1y1转化到xcocyc坐标系下。像平面的局部放大图如下图6,
?2??x1,y1?为图像的像素坐标,?xc,yc?为像的物理坐标,它们的关系如下:
?x1?a?sx?xc?y?b?sy?yc?1 (2)
其中,?a,b?是像平面中心的坐标,也是数码照相机光轴与像平面的交点,由分辨率可以确定;?sx,sy?为图像平面单位距离上的像素数,单位为像素每毫米(pixels/mm)。经过查阅资料可知sx?sy,则sx?sy?c。
o1ocxc x1 y1 yc
图7 像平面局部放大图
要确定靶心在像平面上投影的坐标,则只需求得靶心投影在像平面上的像的像素坐标,然后由公式(1)可以转化到以oc为圆心的直角坐标系中,即求得像的物理坐标,从而得出靶心在像平面上的坐标(以o为坐标原点)。 问题二:
要计算靶标上圆像平面上的像坐标,但已知的只有给定的相机的分辨率、像距,像图等量,利用数据处理调整点的统计分布,可得到一些特征点的坐标,代入提前设定的椭圆标准方程式,也可采用重心法,便得到椭圆像的中心的坐标。
5.2 问题二的模型的建立和求解:
8
由题目中给定的分辨率、相距等已知量,我们可以确定以下参数:
,b??1024sx?sy?c?3.78m?a???pixels/m?,
?2,7682???512,384?,而像平面内的
像素坐标由matlab提取,过程如下:
我们可以对像坐标系中靶标的像(即图像一)进行图像处理,由于圆的投影可以近似的看作椭圆,因此可转化为通过求像图上一个个椭圆(圆的投影)的方程来确定其像的中心坐标。
首先要对椭圆边界进行有效的近似精确的取点。通过ACDSee工具把原图的BMP格式的图像1进行编辑转换成为黑白色的TIFF图像格式文件,如下图8所示:
图8 转换成为黑白色的TIFF图像
用MATLAB对图像2进行像素坐标二进制转换(0代表黑色,1代表白色)。 代码见附录2。
得到像素坐标二进制图——图8,这样便可以在边界可较为精确的找到值为1的点的坐标,即椭圆边界点的坐标。
图9 像素坐标二进制图
从像素坐标二进制图可较为精确的找到值为1的点的坐标(即椭圆边界点的坐标),由于每一个椭圆的边界点都可以随机取出好多,并由椭圆的中心不在原
9
点的标准方程式
?x?p?a22??y?q?b22?1,其中为?p,q?椭圆的中心坐标,a为长半
轴,b为短半轴,,所以我们选取椭圆变线上的最上端a’,最下端b’,最左端c’,最右端d’四个点坐标,此外为了更小误差的确定椭圆的圆心,还从上述所取四端点分成的四个区域各取一点,分别为e’,f’,g’,h’,来再次确定圆心的坐标,再从像上随机取适合的四点k’,l’??这一过程见选点图 10。
图10 选点图
再由这些点随机的取四个也可以组成一组来确定椭圆圆心点的坐标,其取得的点的坐标见附录1 。在此我们仅以A为圆心的图的像为例,B,C,D,E的方法根本上与A雷同就在此不累述了。
表1 提出A的像素二位进制坐标点
a' b' c' d' e' f' g' h' k' l' AX 325 281 322 365 294 354 355 293 290 362 AY 148 189 231 188 160 160 215 220 217 173
运用matlab编程求出五个像的中心坐标,(代码如下见附录2)
将四组对应的值代入就可得到相应的椭圆圆心的坐标,即(p,q)经过计算机的运算后,我们取出五组A的圆心坐标,可见表2。
10