双目立体视觉:一(坐标系变换、左乘右乘、旋转矩阵)

本文深入讲解坐标系变换原理,探讨平移与旋转操作,以及如何使用齐次坐标表示空间点,实现从世界坐标系到相机坐标系的转换,强调坐标系变换在机器人视觉中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二郎就不设置什么VIP可见啥的了,这样大家都能看到。
如果觉得受益,可以给予一些打赏,也算对原创的一些鼓励,谢谢。

钱的用途:1)布施给他人;2)二郎会有更多空闲时间写教程

在研究双目之前我们需要先明白几个概念

1.坐标系变换(为了理解世界坐标系变化到相机坐标系)

坐标系变换涉及两种,一种平移,一种旋转……二郎觉得好复杂,到底啥是坐标系变换?空间中的一个点怎么对应到另一个空间呢?
坐标系其实就是一个辅助工具,我们空间中存在一个点,它就存在那里,有无坐标系它都不会消失,所以明确一点,坐标系只是度量的工具,它并不影响我们空间中存在的那个点。
所以,很多情况下,考虑坐标系变化时,你先画一个点,然后各种旋转平移那个坐标系骨架(三个轴串起来,感觉很像骨架),然后你只需一个个把点对应到坐标系上,而并不要逆过来为了迎合坐标系而移动点。
上面的很多人容易弄错,在想着坐标系变换时,在大脑里想的时候点也随着变换来回晃动,可以明确,点不动如山……
那么我们来讨论左边变换的平移和旋转,这两个哪个先做都无所谓,二郎更喜欢先旋转对齐,再平移回去。
旋转(一涉及旋转,觉得自己空间感不好的都一阵蒙圈,其实谁都不能x,y,z同时在那转,都是固定一个轴,转动其他两个轴。)
固定x轴,转y,z
在这里插入图片描述
那个红色的点是空间中的一个点,为啥我们坐标表换需要加一个空间点?
1.一般直接研究坐标的变换比较少,都是研究一个点在坐标1下的坐标为(x,y,z),那么在坐标2下的坐标为多少?(已知(x,y,z)和θ,求(x2,y2,z2))
2.通过空间点做为媒介,将两个坐标系联系起来,然后求取坐标系变换的过程。(已知(x,y,z)和(x2,y2,z2)求θ)。
变换可以用以下公式表示
在这里插入图片描述
这个公式怎么来的呢?在应对矩阵时,我们不妨先转化为方程的形式
Xc = X
Yc = cosθ·Y+sinθ·Z
Zc = -sinθ·Y+cosθ·Z
可以看出绕X轴转,X轴是不发生变化的。那么,这种变化是怎么求得的呢?只需两步
对应
在这里插入图片描述
空间点对应在坐标系。
分解
在这里插入图片描述
可以看出这个分解和我们高中、初中学的力分解类似,涉及到空间点,包括力的分解在内,有一个技巧,所有的分解都满足欧式距离不变性
(a,b,c,d)(a1,b1,c1,d1)
a2+b2+c2+d2=(a1)2+(b1)2+(c1)2+(d1)2
这种方法可以检查我们结果的正确与否,同时这个也是高中老师没有提到的。
在这里插入图片描述
上面的这些都可以推导出来。
我们的坐标系变化有平移和旋转
旋转可以表示为
在这里插入图片描述
三坐标的旋转直接相乘,这里的乘有一个知识点,二郎需要提一下

左乘还是右乘

左乘——相对于固定坐标系进行变换,(固定坐标系—我们上面提到的固定x轴旋转……,这里的固定,其实我们已经暗暗地定义了一个坐标系,这个坐标系我们潜意识认为它是不变的,这也就是世界坐标系。除了平时我们假设了固定坐标系就是我们认识的世界坐标系,其他情况是我们需要将坐标系1变换到坐标系2,这时,我们的坐标系2可以设为该固定坐标系)
在这里插入图片描述
V’ = R * V = Rz * Ry * Rx V,变换顺序是先绕x转,再绕y转,最后绕z转。
右乘——相对于自身坐标系进行变换,每变一次下一次需要以新坐标系为标准进行变换。比如第一次变换后,原x轴的位置变为y轴,那么下一次绕y轴的变换,就会绕之前的x轴变换。
在这里插入图片描述
平移+旋转
在这里插入图片描述
在这里插入图片描述
这两个图来自:https://wenku.baidu.com/view/12533c6d1611cc7931b765ce0508763231127408.html
看完例子,大家应该能看懂了。

还有就是为什么要用齐次坐标表示?
不加齐次之前
在这里插入图片描述
加了齐次之后
在这里插入图片描述
可以看出,齐次是为了把加项添加到变换矩阵中。
上面的都是基础知识,我们将世界坐标系变换到相机坐标系,采用左乘,将相机坐标系作为定坐标系。
主要记住一点,绝对位置肯定不会变,只是变坐标系。

这里还要写一点——为啥要把世界坐标系变到相机坐标系?因为我们相机坐标系可以将图像的世界点联系起来,啥是世界点?一般情况下我们是需要测量物体到机器人的距离和位置关系,因此世界坐标系一般定在机器人上,或者是机器人工作的场景中。
世界坐标系与相机坐标系的关系就是相机的外参——因此在用棋盘图进行求内参时外参是不确定的。
在这里插入图片描述

### 双目相机中坐标系间的转换 #### 世界坐标系到相机坐标系的转换 对于双目视觉系统而言,通常会选取其中个摄像机作为参考标准来定义世界坐标系。假设选择了摄像头,则其位置即为世界坐标系的原点[^1]。 当已知某点P的世界坐标\( P_w=(X, Y, Z)^T \),要将其映射至对应的相机坐标下表示形式 \( P_c=(X',Y',Z')^T \),需要用到旋转和平移操作: \[ P_c=R*P_w+t \] 其中R代表旋转矩阵而t则是平移向量;这两个参数共同构成了所谓的“外部参数”,用于描述目标相对于固定参照物的姿态变化情况[^4]。 #### 相机坐标系到图像坐标系的转换 旦获得了物体在相机坐标下的表达方式之后,下步便是通过投影模型计算该对象落在感光元件上的具体位置——也就是获取它的二维平面坐标(x,y)。此过程涉及到焦距f以及主点偏移量cx,cy等因素的影响: \[ x=f*\frac{X'}{Z'}+c_x \\ y=f*\frac{Y'}{Z'}+c_y \] 上述方程组中的变量均属于内部属性范畴之内,它们被统称为“内在参数”。这些数值反映了特定型号设备本身的物理特性,并且可以通过校准程序获得精确测量结果[^2]。 #### 图像坐标系到像素坐标的转换 最后步是从连续化的理想化图像坐标转译成离散型的实际显示单元地址(u,v): \[ u=\alpha*x+\beta\\ v=\gamma*y+\delta \] 这里的α、β、γ、δ均为常系数项,主要取决于具体的传感器尺寸规格及其分辨率设置等方面的信息[^3]。 综上所述,在处理双目立体匹配任务时,需要综合考虑以上各个层面的因素才能完成从真实场景到数字化呈现这复杂而又精细的过程。 ```python import numpy as np def world_to_camera(Pw,R,t): Pc=np.dot(R,Pw)+t return Pc def camera_to_image(Pc,f,cx,cy): X_prime=Pc[0];Y_prime=Pc[1];Z_prime=Pc[2] x=f*(X_prime/Z_prime)+cx y=f*(Y_prime/Z_prime)+cy return [x,y] def image_to_pixel(xy,alpha,beta,gamma,delta): u=alpha*xy[0]+beta v=gamma*xy[1]+delta return [int(round(u)), int(round(v))] ```
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值