钟落潭有没有做网站的,网站域名解析时间,桂林象鼻山门票多少钱,网站流量少怎么办一#xff0e;相机标定主要涉及三个坐标系#xff1a;图像坐标系、摄像机坐标系和世界坐标系 【图像坐标系】 摄像机采集的图像变换为数字图像后#xff0c;每副数字图像在计算机内为M x N数组#xff0c;M行N列的图像中每一个元素#xff08;pixel#xff09;数值就是图… 一相机标定主要涉及三个坐标系图像坐标系、摄像机坐标系和世界坐标系 【图像坐标系】 摄像机采集的图像变换为数字图像后每副数字图像在计算机内为M x N数组M行N列的图像中每一个元素pixel数值就是图像点的亮度灰度。如图在图像上定义直角坐标系UV每一个像素为单位的图像坐标系坐标由于u,v只能表示像素位于数组中的列数与行数并没有使用物理单位表示该像素在图像中位置所以需要再建立以物理单位mm表示的图像坐标系该图像坐标系以图像内某一点O1为原点X轴和Y轴分别平行于U轴和V轴。 如图中u、v表示以像素为单位的图像坐标系的坐标x、y表示以mm为单位的图像坐标系的坐标。在X、Y坐标系中原点O1定义在摄像机光轴与图像平面的交点该点一般位于图像中心。但是由于制造原因很多情况下会有偏移。若O1在U、V坐标系中坐标为u0v0,每一个像素在X轴与Y轴方向上的物理尺寸为dx、dy则图像任一像素在两个坐标系下有如下关系 【摄像机坐标系】 如图Oc点为摄像机光心Xc轴和Yc轴与图像的X轴与Y轴平行Zc轴为摄像机光轴它与图像平面垂直。光轴与图像平面的交点即为图像坐标系的原点。由点Oc与Xc、Yc、Zc轴组成的直角坐标系称为摄像机坐标系OOc为摄像机焦距 由于摄像机可以安放在现实环境中任意位置所以在环境中任选一个基准坐标系来描述摄像机位置并用它描述环境中任何物体的位置该坐标系为世界坐标系。它有Xw、Yw和Zw轴组成摄像机坐标系与世界坐标系之间的关系可以用旋转矩阵与平移向量t来描述。 总体来说世界坐标系到图像坐标系的关系可总结如下 摄像头成像几何关系其中Oc点称为摄像头透镜的光心Xc轴和Yc轴与图像的x轴和Y轴平行Zc轴为摄像头的光轴它与图像平面垂直。光轴与图像平面的交点O1即为图像坐标系的原点。由点Oc与Xc、Yc、Zc轴组成的坐标系称为摄像头坐标系Oc O1 的距离为摄像头焦距用f表示。 图像坐标系是一个二维平面又称为像平面实际上就是摄像头的CCD传感器的表面。每个CCD传感器都有一定的尺寸也有一定的分辨率这个就确定了毫米与像素点之间的转换关系。举个例子CCD的尺寸是8mm X 6mm帧画面的分辨率设置为640X480那么毫米与像素点之间的转换关系就是80pixel/mm。”设CCD传感器每个像素点的物理大小为dx*dy相应地就有dxdy1/80。 二 针孔模型 又称为线性摄像机模型任何空间点M在图像中的投影位置m为光心Oc与M的连线OcM与图像平面的交点各种相似三角形有木有但是要注意像平面和现在讨论的其实是关于Oc对称的哦所以计算的时候不要忘记了负号不然出来的图像就是倒着的啦这种关系也称为重心摄影或者透视投影。此时有比例关系如下 将上面的世界坐标到摄像机坐标的转换代入最后皆可以得到世界坐标系与摄像机坐标系之间的关系啦 其中很容易可以知道alphf/dxbetaf/dy分别代表了以X轴与Y轴方向上的像素为单位表示的等效焦距。gamma在较高精度的相机模型中引入表示图像平面中以像素为单位的坐标轴倾斜程度的量度gammaalpha*tanthetatheta是相机CCD阵列v轴的偏斜角度。 由针孔模型我们可以知道如果一直摄像机的内外参数就知道投影矩阵M,这时候对任何空间点就可以求出其对应图像坐标但是如果已知空间某点的像点m位置u,v即使已经知道摄像机内外参数Xw也不能唯一确定因为在投影过程中消去了Zc的信息。 在上面的式子中M是3x4不可逆矩阵当已知M与u,v时由公式得到的三个方程中消去z只可以得关于XwYw与Zw的两个线性方程这个方程组即为射线OP的方程也就是说投影点为m的所有点均在该射线上所以该空间是不能唯一确定的。 三. 相机畸变 摄像头由于光学透镜的特性使得成像存在着径向畸变可由三个参数k1,k2,k3确定由于装配方面的误差传感器与光学镜头之间并非完全平行因此成像存在切向畸变可由两个参数p1,p2确定。单个摄像头的定标主要是计算出摄像头的内参焦距f和成像原点cx,cy、五个畸变参数一般只需要计算出k1,k2,p1,p2对于鱼眼镜头等径向畸变特别大的才需要计算k3以及外参标定物的世界坐标。OpenCV中使用的求解焦距和成像原点的算法是基于张正友的方法而求解畸变参数是基于 Brown 的方法。 1.径向畸变 设u、v为理想的图像像素坐标相对应的 为真实获得的像素坐标。则x,y就为理想的图像物理坐标 为实际获得的图像物理坐标可以得到如下的关系式 我们知道u0,v0在求摄像机内参的时候可以知道 在圆心提取排序后也可以知道,(u,v)可以通过OpenCV中cvProjectpoints函数求得反投影残差。x,y可以通过 和求出于是克得到如下公式 设Dkd所以可以求出畸变系数k1,k2. 在求得了径向畸变的系数以后就可以如下得到成像仪某点理想的径向位置 其中r就是当前点的所在透镜半径k3只有在精度很高的时候才用得到可以看到其实是将径向畸变做了一个泰勒展开并忽略高阶误差得到的 2.切向畸变(由于透镜表面曲率不总是严格共线产生) 主要包括离心畸变和薄棱镜畸变其中离心畸变是由摄像机的镜头中各个透镜的光轴不能完全重合造成的。 离心畸变其数学模型可以表示为 薄棱镜畸变是由镜头设计和制造缺陷等误差造成比如镜头与摄像机像面之间有很小的倾角其不仅会引起径向偏差而且会引起切向误差其数学模型为 可以看到薄棱镜畸变的结果就是之前内参矩阵求解时候的那个gamma啦 综合考虑径向畸变和切向畸变就需要对小孔成像模型进行修正理想的图像点归一化坐标为p(x,y)T,有畸变的图像点的归一化坐标为Pd(xd,yd)T之间关系为 特别说明在opencv中求出了畸变系数和摄像机内参数以后就可以用cvUndistort2( ImageC1, Show1, intrinsic_matrix, distortion_coeffs);来进行图像矫正了 建议使用Matlab工具箱来矫正Opencv自己的函数误差不是一般大而且对角点提取的精度要求超高虽然用了亚像素级别⊙﹏⊙b汗之前自己按照书上来结果发现矫正以后图像扭曲的不行还以为自己的问题查错查了好久结果直接标定传入参数进行矫正以后各种准确…….。 附录cvUndistort2的函数说明