双目视觉系统:相机模型与几何关系推导

释放双眼,带上耳机,听听看~!
本文介绍了双目视觉系统中相机模型与几何关系的推导过程,以及如何获取物体深度信息的原理。适合对双目视觉感兴趣的读者。

🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题

🍊专栏推荐:深度学习网络原理与实战

🍊近期目标:写好专栏的每一篇文章

🍊支持小苏:点赞👍🏼、收藏⭐、留言📩

双目视觉系统

写在前面

Hello,大家好,我是小苏🧒🏽🧒🏽🧒🏽

在之前的文章中已经为大家介绍了计算机视觉领域的各种深度学习模型,但他们往往都是单目相机拍摄的图片,没有深度信息。那么这里我给大家介绍一些不一样的,即双目视觉,它可以获取物体的深度信息。🍋🍋🍋

其实啊,双目视觉在我们日常生活中用的也是挺广泛的,像我们耳熟能详的自动驾驶汽车基本都配备了双目相机,当然了,绝大多数自动驾驶汽车还用到了其它像毫米波雷达、激光雷达等传感器。🌼🌼🌼但双目相机绝对是自动驾驶不可或缺的一部分。🍀🍀🍀

那么双目视觉相机到底是如何获取物体深度信息的,以及双目中非常重要的四系坐标转化是如何实现的呢?这节就让我来带领大家一起来看看叭~~~🥂🥂🥂

注:大家不要看下面全是公式就没有耐心看下去,其实你沉下心来慢慢的阅读,还是比较容易看懂的。而且这一部分是非常重要的,在做多传感器融合的时候也会用到四系坐标转换的知识,总之,大家感兴趣的一定要有耐心,有恒心,相信你理解后会有很大的收获。

另外,想要入门双目视觉的,也可以去我主页搜“双目”,了解更多双目视觉的知识。

相机模型与几何关系推导

首先来看一下相机的焦距 fmathrm{f} , 如图: fmathrm{f} 即为 pmathrm{p} 所在平面和 Omathrm{O} 所在平面的距离。

双目视觉系统:相机模型与几何关系推导

接下来我们看下面的双目相机, 两个相机固定在同一直线上, 以其为一个基 准定为 Xmathrm{X} 轴。 Lmathrm{L} 为相机的成像平面, 则 xmathrm{x} 轴和 Lmathrm{L} 之前的距离就为焦距 fmathrm{f} 。外有一点 P(x, z), P C 1 交 L 于 D 1, P C 2 交 L 于 D2。【图中三条水平线是平行的】, 我们可以利 用三角形相似的知识推导一些公式:

双目视觉系统:相机模型与几何关系推导

可以看出 O′DO^{prime} D 平行 TPmathrm{TP} , 所以 △TOPtriangle T O P 相似于 △O′OD1triangle O^{prime} O D_{1} , 则

△TOP∼△O′OD1⇒xxl=zftriangle T O P sim triangle O^{prime} O D_{1} Rightarrow frac{x}{x_{l}}=frac{z}{f} quad–1>

同理可得:
ΔC2EP∼ΔC2GD2⇒x−bxr=zfDelta C_{2} E P sim Delta C_{2} G D_{2} Rightarrow frac{x-b}{x_{r}}=frac{z}{f} quad–2>
由 1>, 2> 得

{xl=xz⋅fxr=x−bz⋅fleft{begin{array}{c}
x_{l}=frac{x}{z} cdot f \
x_{r}=frac{x-b}{z} cdot f
end{array}right.

这里定义视差 diff=xl−xr=(xz−x−bz)⋅f=bz⋅fd i f f=x_{l}-x_{r}=left(frac{x}{z}-frac{x-b}{z}right) cdot f=frac{b}{z} cdot f

z=b⋅fdiffz=frac{b cdot f}{d i f f}

四系坐标转换

图像坐标系 (Image coordinate system) ——像素坐标系 (Pixel coordinate system)

首先需要明确的是像素坐标系的单位是 pix, 而图像坐标系的单位是 mm。如 下图所示, 其表示一个图像, 假设其长和宽都为 20 mm20 mathrm{~mm} ,每个小方格长为 4 mm4 mathrm{~mm} , 宽 为 10 mm10 mathrm{~mm} , 那么在横向该图像一共有 204=5frac{20}{4}=5 个小方格, 在纵向一个有 2010=2frac{20}{10}=2 个小方 格; 进一步的, 如果小方格很小, 其长为 dxmathrm{dx} , 宽为 dymathrm{dy} , 则在横向该图像一共有 20dxfrac{20}{d x} 个 小方格, 在纵向一个有 20dyfrac{20}{d y} 个小方格。那么在这个 20×2020 times 20 的图像中, 我们就说该图 像横向有 20dxfrac{20}{d x} 个像素, 纵向有 20dyfrac{20}{d y} 个像素。

双目视觉系统:相机模型与几何关系推导

言归正传, 进行图像坐标系到像素坐标系的转换。图中图像坐标系中的点 (xmathrm{x}, ymathrm{y}) 对应于像素坐标系中的点 (u, v) 。其中图像坐标系的原点坐标为 O2(u0,v0)O_{2}left(u_{0}, v_{0}right) 。不难 看出, 他们之前的关系如下:

u=xdx+u0−−3>v=ydy+v0−−4>begin{array}{ll}
u=frac{x}{d x}+u_{0} & –3> \
v=frac{y}{d y}+v_{0} & –4>
end{array}

将上述 3>,4>式整理为矩阵形式如下:

[uv1]=[1dx0u001dyv0001][xy1]−−①left[begin{array}{l}
u \
v \
1
end{array}right]=left[begin{array}{ccc}
frac{1}{d x} & 0 & u_{0} \
0 & frac{1}{d y} & v_{0} \
0 & 0 & 1
end{array}right]left[begin{array}{l}
x \
y \
1
end{array}right] quad–①

双目视觉系统:相机模型与几何关系推导

相机坐标系 (camera coordinate system)—ー图像坐标系 (Image coordinate system)

如图所示, 蓝色平面为成像平面, 其所在坐标系为成像坐标系, OcOc 为相机, XcYcZcOcX c Y c Z c O c 为相机坐标系。 P(Xc,Yc,Zc)P(X c, Y c, Z c) 为相机坐标系中一点, P′(x,y)P^{prime}(x, y) 为蓝色平面上一 点, 我们可以根据相似关系推导出一些公式:

ΔP′OcB⇒Zcy=POcP′Oc=AOcBOc                    −−5>Delta P^{prime O_{c}} B Rightarrow frac{Z_{c}}{y}=frac{P O_{c}}{P^{prime O_{c}}}=frac{A O_{c}}{B O_{c}} quad –5>

ΔPOcC∼ΔP′OcE⇒Xcx=POcP′Oc=COcEOc−−6>Delta P O_{c} C sim Delta P^{prime O_{c}} E Rightarrow frac{X_{c}}{x}=frac{P O_{c}}{P^{prime O_{c}}}=frac{C O_{c}}{E O_{c}} quad–6>

ΔDOcC∼ΔO2OcE⇒Ycy=Zcf=COcEOc  −−7>Delta D O_{c} C sim Delta O_{2} O_{c} E Rightarrow frac{Y_{c}}{y}=frac{Z_{c}}{f}=frac{C O_{c}}{E O_{c}} quad –7>

由 5>, 6>, 7> 得:

y=YcZc⋅f−−8>y=frac{Y_{c}}{Z_{c}} cdot f quad–8>

x=XcZc⋅f−−9>x=frac{X_{c}}{Z_{c}} cdot f quad–9>

将 8>, 9> 整理成矩阵形式:

Zc[xy1]=[f0000f000010][XcYcZc1]−−②Z_{c}left[begin{array}{l}
x \
y \
1
end{array}right]=left[begin{array}{llll}
f & 0 & 0 & 0 \
0 & f & 0 & 0 \
0 & 0 & 1 & 0
end{array}right]left[begin{array}{c}
X_{c} \
Y_{c} \
Z_{c} \
1
end{array}right]–②

综合(1)(2)可得:

[uv1]=1Zc[1dx0u001dyv0001][f0000f000010][XcYcZc1]−−Ileft[begin{array}{l}
u \
v \
1
end{array}right]=frac{1}{Z_{c}}left[begin{array}{ccc}
frac{1}{d x} & 0 & u_{0} \
0 & frac{1}{d y} & v_{0} \
0 & 0 & 1
end{array}right]left[begin{array}{cccc}
f & 0 & 0 & 0 \
0 & f & 0 & 0 \
0 & 0 & 1 & 0
end{array}right]left[begin{array}{c}
X_{c} \
Y_{c} \
Z_{c} \
1
end{array}right] quad–I

双目视觉系统:相机模型与几何关系推导

世界坐标系 (world coordinate system) ——相机坐标系 (camera coordinate system)

刚体变换可以理解为物体体积不发生变化, 可以进行旋转和平移。

1、旋转

下图为点 (x,y)(x, y) 经过旋转得到点 (x∗,y∗)left(x^{*}, y^{*}right) 的示意图。可以发现, 图中点的 Z 坐标没有变化, 即该旋转是在平面上绕 Zmathrm{Z} 轴旋转得到的, 我们可以根据旋转角度 θtheta 来确定旋转前后的坐标关系:【推导可查旋转后坐标公式】

{x∗=xcos⁡θ−ysin⁡θy∗=xsin⁡θ+ycos⁡θz∗=z∗1left{ begin{array}{l}
{{rm{x}}^*} = xcos theta – ysin theta \
{y^*} = xsin theta + ycos theta \
{z^*} = z*1
end{array} right.

上式是绕 Z 轴旋转得到的公式, 将其写成矩阵形式:

[x∗y∗z∗]=[cos⁡θ−sin⁡θ0sin⁡θ−cos⁡θ0001][xyz]=R1[xyz]−−10>left[begin{array}{l}
x^{*} \
y^{*} \
z^{*}
end{array}right]=left[begin{array}{ccc}
cos theta & -sin theta & 0 \
sin theta & -cos theta & 0 \
0 & 0 & 1
end{array}right]left[begin{array}{l}
x \
y \
z
end{array}right]=R_{1}left[begin{array}{l}
x \
y \
z
end{array}right] quad–10>

双目视觉系统:相机模型与几何关系推导

同理可得绕 yy 轴旋转的坐标关系 ( ϕphi 为旋转角)

[x∗y∗z∗]=[cos⁡ϕ0−sin⁡ϕ010sin⁡ϕ0cos⁡ϕ][xyz]=R2[xyz]−−11>left[begin{array}{l}
x^{*} \
y^{*} \
z^{*}
end{array}right]=left[begin{array}{ccc}
cos phi & 0 & -sin phi \
0 & 1 & 0 \
sin phi & 0 & cos phi
end{array}right]left[begin{array}{l}
x \
y \
z
end{array}right]=R_{2}left[begin{array}{l}
x \
y \
z
end{array}right] quad–11>

同理可得绕 x 轴旋转的坐标关系( beta 为旋转角)

[x∗y∗z∗]=[1000cos⁡βsin⁡β0−sin⁡βcos⁡β][xyz]=R3[xyz]−−12>left[begin{array}{c}
x^{*} \
y^{*} \
z^{*}
end{array}right]=left[begin{array}{ccc}
1 & 0 & 0 \
0 & cos beta & sin beta \
0 & -sin beta & cos beta
end{array}right]left[begin{array}{l}
x \
y \
z
end{array}right]=R_{3}left[begin{array}{l}
x \
y \
z
end{array}right] quad–12>

由 10>, 11>, 12> 可知, 当某点在三维坐标系中旋转时, 其坐标转换关系如下:

[x∗y∗z∗]=R1R2R3[xyz]=R[xyz]−−③left[begin{array}{c}
x^{*} \
y^{*} \
z^{*}
end{array}right]=R_{1} R_{2} R_{3}left[begin{array}{l}
x \
y \
z
end{array}right]=Rleft[begin{array}{c}
x \
y \
z
end{array}right]–③

其中 R 为旋转矩阵。

2、平移

做平移时坐标转换较为简单, 如下:

{x∗=x+ay∗=y+bz∗=z+cleft{ begin{array}{l}
{{rm{x}}^*} = x + a\
{y^*} = y + b\
{z^*} = z + c
end{array} right.

将其用矩阵表示:

[x∗y∗z∗1]=[100a010b001c0001][xyz1]−−④left[begin{array}{c}
mathrm{x}^{*} \
y^{*} \
z^{*} \
1
end{array}right]=left[begin{array}{llll}
1 & 0 & 0 & a \
0 & 1 & 0 & b \
0 & 0 & 1 & c \
0 & 0 & 0 & 1
end{array}right]left[begin{array}{c}
x \
y \
z \
1
end{array}right]–④

思考: 为什么不用矩阵 [x∗y∗z∗]=[100a010b001c][xyz]left[begin{array}{c}x^{*} \ y^{*} \ z^{*}end{array}right]=left[begin{array}{cccc}1 & 0 & 0 & a \ 0 & 1 & 0 & b \ 0 & 0 & 1 & cend{array}right]left[begin{array}{l}x \ y \ zend{array}right] 表示, 而要加一个维度呢?

综合(3)(4)可得:

[x∗y∗z∗1]=[R⃗T⃗0→1][xyz1]−−Ⅱleft[begin{array}{c}
x^{*} \
y^{*} \
z^{*} \
1
end{array}right]=left[begin{array}{ll}
vec{R} & vec{T} \
overrightarrow{0} & 1
end{array}right]left[begin{array}{l}
x \
y \
z \
1
end{array}right] quad–Ⅱ

注: 这一步可能不好理解, 仔细思考, 这也是上一步(4)为什么要多加一维向量 的原因, 方便这里写成这种形式, 因为 R 为一个 3×33 times 3 的矩阵, 这样更方便写成分 块矩阵的形式,同时, 也是方便下文坐标系之间的转换】

综合 I,II 可得【注: I 中的 Xc,Yc,Zc mathrm{Xc}, mathrm{Yc}, mathrm{Zc} 为 II 中的 x∗,y∗,z∗mathrm{x}^{*}, mathrm{y}^{*}, mathrm{z}^{*}

[uv1]=1Zc[1dx0u001dyv0001][f0000f000010][R⃗T⃗0→1][xwywzw1]=1Zc[fdx0u000fdy000010][R⃗T⃗0→1][xwywzw1]begin{array}{l}
{left[begin{array}{l}
u \
v \
1
end{array}right]=frac{1}{Z_{c}}left[begin{array}{ccc}
frac{1}{d x} & 0 & u_{0} \
0 & frac{1}{d y} & v_{0} \
0 & 0 & 1
end{array}right]left[begin{array}{cccc}
f & 0 & 0 & 0 \
0 & f & 0 & 0 \
0 & 0 & 1 & 0
end{array}right]left[begin{array}{ll}
vec{R} & vec{T} \
overrightarrow{0} & 1
end{array}right]left[begin{array}{c}
x_{w} \
y_{w} \
z_{w} \
1
end{array}right]} \
=frac{1}{Z_{c}}left[begin{array}{cccc}
frac{f}{d x} & 0 & u_{0} & 0 \
0 & frac{f}{d y} & 0 & 0 \
0 & 0 & 1 & 0
end{array}right]left[begin{array}{ll}
vec{R} & vec{T} \
overrightarrow{0} & 1
end{array}right]left[begin{array}{c}
x_{w} \
y_{w} \
z_{w} \
1
end{array}right] \
end{array}

注 1: 上式 [xwywzw1]left[begin{array}{c}x_{w} \ y_{w} \ z_{w} \ 1end{array}right] 即为 II 式中 [xyz1]left[begin{array}{l}x \ y \ z \ 1end{array}right] , 只因其为世界
坐标系 (world) 下的坐标,这样方便记忆。

注 2: 上式中 [fdx0u000fdy000010]left[begin{array}{cccc}frac{f}{d x} & 0 & u_{0} & 0 \ 0 & frac{f}{d y} & 0 & 0 \ 0 & 0 & 1 & 0end{array}right] 被称为相机内参矩阵, [R⃗T⃗0→1]left[begin{array}{ll}vec{R} & vec{T} \ overrightarrow{0} & 1end{array}right] 被称为相机外参矩阵。

小结

好啦,本节就为大家介绍到这里啦,这些其实都是一些基础内容,希望大家都能够弄明白喔,一起加油叭!!!🍄🍄🍄

 

 
 
 
 

如若文章对你有所帮助,那就🛴🛴🛴

        双目视觉系统:相机模型与几何关系推导

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

PyTorch实现卷积神经网络(CNN)代码详解

2023-12-9 20:58:14

AI教程

美团语音交互部获SemEval 2022结构化情感分析跨语言赛道冠军

2023-12-9 21:11:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索