双目摄像头标定与测距(一)-- 齐次坐标,世界坐标到像素坐标

  最近重新研究了一下双目的标定,然而回头一看,不找找代码自己都没法实现出来了,即使有学过但都记忆模糊。果然对新手而言,还是得做笔记。
对于标定而言,如果只是想单纯得到相机参数,用matlab会比opencv实现的效果更准确,matlab自带的相机标定工具箱也是简单上手的,使用教程也有很多资源。以下仅是对原理的简单描述。

齐次坐标

  在之前得先了解一下 ‘齐次坐标’ 这个概念,其主要应用在计算机图形计算上,简单理解就是为了简化几何变换在计算机上的计算。例如:

平移t:坐标(x, y)分别向上,向右平移dx,dy单位,即(x' - y')=(x+dx,y+dy),用矩阵表示:
\left[ {\begin{array}{*{20}{c}}{x'}\\{y'}\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}x\\y \end{array}} \right] + \left[ {\begin{array}{*{20}{c}}{dx}\\{dy}\end{array}} \right]\
旋转R:在二维空间中,对于旋转角度为\theta,有\left[ {\begin{array}{*{20}{c}}{x'}\\{y'}\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{\cos \theta }&{ - \sin \theta }\\{\sin \theta }&{\cos \theta }\end{array}} \right] * \left[ {\begin{array}{*{20}{c}}x\\y\end{array}} \right]\
为了合并矩阵运算的乘法与加法,所以引用了齐次坐标,即:
\left[ {\begin{array}{*{20}{c}}{x'}\\{y'}\\1\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{\cos \theta }&{ - \sin \theta }&{\rm{0}}\\{\sin \theta }&{\cos \theta }&{\rm{0}}\\0&0&1\end{array}} \right] * \left[ {\begin{array}{*{20}{c}}{\rm{1}}&{\rm{0}}&{tx}\\{\rm{0}}&{\rm{1}}&{ty}\\{\rm{0}}&{\rm{0}}{\rm{1}} \end{array}} \right] * \left[ {\begin{array}{*{20}{c}}x\\y\\1\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{\cos \theta }&{ - \sin \theta }&{\left( {1 - \cos \theta } \right)tx + ty * \sin \theta }\\{\sin \theta }&{\cos \theta }&{\left( {1 - \cos \theta } \right)ty - tx * \sin \theta }\\0&0&1\end{array}} \right] * \left[ {\begin{array}{*{20}{c}}x\\y\\1\end{array}} \right]
另一方面,在实际的投影空间里笛卡尔坐标难以进行表达,因为两条平行线会绝对平行,放在投影空间则不然,例如笛卡尔坐标下笔直平行的马路在视野里最终会无限逼近于无穷远一点,楼再建高点就能互通了。。

  齐次坐标就是讲原来n维的向量用n+1维表示,用p'=Ap(ARt组成的转换矩阵)方式表示几何变换。将(x, y)附加第三个坐标,于是每个坐标用一个三元组(x,y,w)表示,称为点(x,y)的齐次坐标。一般来说当w不为0时,采用w=1,并将(\frac{x}{w},\frac{y}{w})称为齐次点(x,y,w)的笛卡尔坐标。
有关齐次坐标这里只是片面的解释与理解

坐标转换关系图

世界坐标与相机坐标

  从世界坐标系\left( {{X_w},{Y_w},{Z_w}} \right)转换到相机坐标系,属于刚体变换(在三维空间中, 把一个几何物体作旋转, 平移的运动,称之刚体变换),参考齐次坐标的示范,当拓展到三维时\left( {{X_W},{Y_W},{Z_W}} \right) \to\left( {{X_C},{Y_C},{Z_C}} \right)

\left[ {\begin{array}{*{20}{c}}{{X_C}}\\{{Y_C}}\\{{Z_C}}\\1\end{array}} \right] = \left[{\begin{array}{*{20}{c}}{{l_{00}}}&{{l_{01}}}&{{l_{02}}}&{{t_x}}\\{{l_{10}}}&{{l_{11}}}&{{l_{12}}}&{{t_y}}\\{{l_{20}}}&{{l_{21}}}&{{l_{22}}}&{{t_z}}\\0&0&0&1\end{array}} \right] * \left[ {\begin{array}{*{20}{c}} {{X_W}}\\{{Y_W}}\\{{Z_W}}\\1\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}R&T\\0&1\end{array}} \right] * \left[ {\begin{array}{*{20}{c}}{{X_W}}\\{{Y_W}}\\{{Z_W}}\\1 \end{array}} \right]

R为3x3的旋转矩阵,T为平移向量,R,T两个外参组成世界坐标到相机坐标的转换矩阵

相机坐标到图像坐标

image.png

  摄影机坐标系的原点为摄像机光心,x轴与y轴与图像的X,Y轴平行,z轴为摄像机光轴,它与图像平面垂直,以此构成的空间直角坐标系称为摄像机坐标系,也称为相机坐标系,摄像机坐标系是三维坐标系。
  从相机坐标系到图像坐标系,是3D到2D的转换,属于透视投影,下图更清晰表现出来

由相似三角形,得:
\frac{{AB}}{{oC}} = \frac{{PB}}{{pC}} = \frac{{A{O_C}}}{{o{O_C}}} \to \frac{{{X_C}}}{x} = \frac{{{Y_C}}}{y} = \frac{{{Z_C}}}{f} \downarrow x = f\frac{{{X_C}}}{{{Z_C}}},y = f\frac{{{Y_C}}}{{{Z_C}}} 通过变换可得:{Z_C}\left[ {\begin{array}{*{20}{c}}x\\y\\1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{x{Z_C}}\\{y{Z_C}}\\{{Z_C}} \end{array}} \right] = \left[ {\begin{array}{*{20}{c}}f&0&0&0\\0&f&0&0\\0&0&1&0 \end{array}} \right] * \left[ {\begin{array}{*{20}{c}}{{X_C}}\\{{Y_C}}\\{{Z_C}}\\1\end{array}} \right]
鉴于文章开头齐次坐标的概念,Zc作为系数,在图像坐标系上,\left[ {\begin{array}{*{20}{c}} x\\y\\1\end{array}} \right] = {Z_C}\left[ {\begin{array}{*{20}{c}}x\\y\\1\end{array}} \right]

图像坐标到像素坐标

  在做图像处理的时候,我们对于图片像素点的读取,都是以图像左上角为原点,向右向下分别为x,y 的正方向,为了方便操作,我们需要从图像坐标转换到像素坐标。

其中{u_0},{v_0}代表图像坐标原点在像素坐标的位置,图像坐标的单位是mm,像素坐标的单位是pix,对于两者的转换,{d_x},{d_y}分别表示一个pix在行列上等于多少个mm。对此则有:
\left\{ {\begin{array}{*{20}{c}}{u = \frac{x}{{dx}} + {u_0}}\\{v = \frac{y}{{dy}} + {v_0}}\end{array}} \right\} \left[ {\begin{array}{*{20}{c}}u\\v\\1\end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {\frac{1}{{dx}}}&0&{{u_0}}\\0&{\frac{1}{{dy}}}&{{v_0}}\\0&0&1\end{array}} \right] * \left[ {\begin{array}{*{20}{c}}x\\y\\1\end{array}} \right]

总结

  如此一来,相机的成像原理以及对应的坐标关系可以梳理成:

\begin{array}{l}{Z_C}\left[ {\begin{array}{*{20}{c}}u\\v\\1\end{array}} \right] = \left[ {\begin{array}{*{20}{c}}{\frac{1}{{dx}}}&0&{{u_0}}\\0&{\frac{1}{{dy}}}&{{v_0}}\\0&0&1\end{array}} \right] * {Z_C}\left[ {\begin{array}{*{20}{c}}x\\y\\1\end{array}} \right]\\ = \left[ {\begin{array}{*{20}{c}} {\frac{1}{{dx}}}&0&{{u_0}}\\0&{\frac{1}{{dy}}}&{{v_0}}\\0&0&1\end{array}} \right]\left[ {\begin{array}{*{20}{c}}f&0&0&0\\0&f&0&0\\ 0&0&1&0 \end{array}} \right] * \left[ {\begin{array}{*{20}{c}} {{X_C}}\\{{Y_C}}\\{{Z_C}}\\1\end{array}} \right]\\ = \left[ {\begin{array}{*{20}{c}} {\frac{1}{{dx}}}&0&{{u_0}}\\0&{\frac{1}{{dy}}}&{{v_0}}\\0&0&1\end{array}} \right]\left[ {\begin{array}{*{20}{c}}f&0&0&0\\0&f&0&0\\0&0&1&0\end{array}} \right]\left[ {\begin{array}{*{20}{c}} {{l_{00}}}&{{l_{01}}}&{{l_{02}}}&{{t_x}}\\{{l_{10}}}&{{l_{11}}}&{{l_{12}}}&{{t_y}}\\ {{l_{20}}}&{{l_{21}}}&{{l_{22}}}&{{t_z}}\\0&0&0&1\end{array}} \right] * \left[ {\begin{array}{*{20}{c}}{{X_W}}\\ {{Y_W}}\\{{Z_W}}\\1\end{array}} \right]\end{array}

其中,相机内参:\left[ {\begin{array}{*{20}{c}}{\frac{1}{{dx}}}&0&{{u_0}}\\0&{\frac{1}{{dy}}}&{{v_0}}\\0&0&1\end{array}} \right]\left[ {\begin{array}{*{20}{c}}f&0&0&0\\0&f&0&0\\0&0&1&0\end{array}} \right],相机外参:\left[ {\begin{array}{*{20}{c}} {{l_{00}}}&{{l_{01}}}&{{l_{02}}}&{{t_x}}\\{{l_{10}}}&{{l_{11}}}&{{l_{12}}}&{{t_y}}\\{{l_{20}}}&{{l_{21}}}&{{l_{22}}}&{{t_z}}\\0&0&0&1\end{array}} \right]

以上是不考虑畸变情况下的转换,关于标定矫正将会在下一篇继续研究

参考:https://www.cnblogs.com/zyly/p/9366080.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348