• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

SLAM14讲学习笔记(二)相机模型总结

人工智能 微鉴道长 1531次浏览 0个评论

相机模型这节的内容是最最基础重要的内容。再次回顾依然有所收获。但这一章的内容其实并不多。但是容易混淆。


1.一共涉及到的坐标系有四个: 第一,世界坐标系; 第二,相机坐标系; 第三,归一化相机坐标系; 第四,像素坐标系。   世界坐标系意如其名,不多解释;而相机坐标系是依据相机的光心(也就是小孔成像的那个小孔)建立起的坐标系。 而归一化相机坐标系,是相机坐标系下的(x,y,z)三个值除以第三维,把z归为1的一个坐标系。关于这点高翔的书里讲的有点含糊,不清楚。实际上的归一化相机坐标系并不存在,它只是一个理念上的坐标系;   实际顺序应当是: 物理成像平面     (—-间距为焦距f—-)     相机光心所在平面      (—-间距为z—-)    物体 物体经过光心投影至物理成像平面,会形成一个倒像。为了直观表示和观察,就把物理成像平面顺着光心所在平面对称到物体一侧,即: 物理成像平面    (—-间距为焦距f—-)    相机光心所在平面   (—-间距为焦距f—-)   物理成像对称平面    (—-间距为z—-)      物体   相机坐标系应当就是相机光心所在平面; (1) 世界坐标系下的一个坐标,左乘外参T(也就是变换矩阵T或者是先乘R再加t),就转化到了相机坐标系下的坐标;   那么相机坐标系下的坐标如何转化到像素坐标系呢? 首先,像素坐标系只有x,y,而相机坐标系有三个值,xyz,多出来的一个深度值z不能直接删掉,它起到了一个尺度的作用。不然一个物体在相机坐标系下(5000,4000,1000)处,直接删掉最后的1000,该物体在像素坐标系下变成了(5000,4000),你的照片哪有这么大?根据相似三角形,成像平面距离光心距离为f,物体距离光心距离为z,那么物体在相机坐标系下的x,在成像平面上的x就是X,x/X=z/f,那么X就是f*x/z。   因此,归一化相机坐标系,我认为是起到了一个媒介和尺度的作用。(也就是说它在光心所在平面右侧,距离光心平面间距为1,而真正的成像平面,应该可以叫做归“f”化相机坐标系) (2) 相机坐标系下的坐标,除以z,就得到了归一化相机坐标系下的坐标。   (3)关于内参的含义: 成像平面,我把它理解为我的相机胶片,最后是要成像在“成像平面”上的。这个成像平面,应该就是在上述“顺序”最左边的那个真实的“物理成像平面”上。但是由于最左边的物理成像平面是倒着的,因此可以理解成是它投影到右边那个对称平面上。 注意成像平面并不等于“像素坐标系”,它们在同一个平面,但是直接差了一个“缩放”和“平移”。设在u轴上缩放了α倍,v轴上缩放了β倍,原点平移了cx,cy。(在图像的右上角) 因此从相机坐标系到像素坐标系,需要先把它统一归一到“归一化相机坐标系”,然后直接从“归一化相机坐标系”变换到“像素坐标系”,其中就涉及到了三个变换,第一,像素坐标系实际是在成像平面上,也就是说从归一化相机坐标系上需要先归到”归f化相机坐标系“(也就是成像平面);第二,到了成像平面以后,还要再缩放α,β;第三,再平移原点; 把f和αβ结合起来: fx=αf,fy=βf; 内参矩阵= fx,0,cx 0,fy,cy 0,0,1 所以,在(2)以后,左乘内参矩阵K,就变到了像素坐标系下了。     2.相机的内参应该是厂家会提供的,如果没有提供,就应当自己去标定。点击这里-Opencv张正友相机标定傻瓜教程附代码 另外一个是相机畸变系数,很多人会把它混淆在内参里面。因为它也是相机固有特性,是厂家应该提供的。而在相关理论处理的时候,虽然用了内参K,但是是默认是没有畸变的。畸变并没有包括在内参里面。 畸变有两种:径向畸变和切向畸变。 径向畸变有桶形畸变和枕形畸变。这是因为透镜形状不规律导致的; 切向畸变是因为透镜和成像平面不能严格平行; 如果考虑畸变的话,在投影到归一化坐标系后,应该先纠正,再左乘内参。     3.双目相机模型: 这个也是数学的三角形理论,画图很麻烦,因此看书就行了。 几个概念: 基线b:两个相机光心之间的水平距离(当然也没有垂直距离,应该是放到一个水平线上的) 视差d:同一个物体的点在两个像素坐标系下的横坐标之差; z=fb/d,这样来算物体的深度z; f是焦距,用户没得改;d是测量结果,是实际情况不以人的意志为转移;因此能改的就是一个b,所以双目的深度存在一个理论上的最大值,由fb确定;如果希望能测到的最大距离远一些,就把基线拉长一些。 这个东西的问题在于视差d不太好确定,图像纹理变化丰富的地方,才能计算视差。   4.Opencv的表示形式: 一句话总结吧:原点在左上角,横着的是x轴,竖着的是y轴,一个[x][y]点,opencv表示为:  

image_pixel=image[y][x]

  也就是说,把图像当成一个表格,用几行几列表示那个点。  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明SLAM14讲学习笔记(二)相机模型总结
喜欢 (0)

您必须 登录 才能发表评论!

加载中……