针孔相机模型是使用的较多的模型,下面总结三维模型重建中的针孔相机成像过程。
首先,空间中的一个点要在针孔相机的像平面重建,需要4步。
1.从世界坐标系变化到相机坐标系
世界坐标系可以定义在任意位置,作为参考坐标系,相机坐标系以相机的光心看为远点,相机朝向为Z轴,朝上为Y轴,再根据右手定则确定X轴,如图(Ocam表示相机坐标系原点,Owor表示世界坐标系所选的点的原点):

空间中的一个点表示为
Xw=[xwywzw]X_w=\left[\begin{matrix}x_w\\y_w\\z_w \end{matrix}\right]Xw=⎣⎡xwywzw⎦⎤
这个空间中的点对应的相机中的点表达为:
Xc=[xcyczc]X_c=\left[\begin{matrix}x_c\\y_c\\z_c \end{matrix}\right]Xc=⎣⎡xcyczc⎦⎤
XcX_cXc和XwX_wXw之间可以通过刚体变换来进行转换(刚体变换即变换前后两点的的距离依旧保持不变的变换,可分为平移变换、旋转变换和镜像(或叫翻转)变换):
1- 平移变换
假设存在点(x,y,z),将x移动a,y移动b,z移动c,到新的点(x′,y′,z′)(x^{'},y^{'},z^{'})(x′,y′,z′),则:
x′=x+ax^{'}=x+ax′=x+a
y′=y+by^{'}=y+by′=y+b
z′=y+cz^{'}=y+cz′=y+c
平移向量为:
t=[abc]t=\left[\begin{matrix}a\\b\\c \end{matrix}\right]t=⎣⎡abc⎦⎤
写成矩阵形式:
[x′y′z′1]=[100a010b001c0001][xyz1]\left[\begin{matrix}x^{'}\\y^{'}\\z^{'}\\1 \end{matrix}\right]= \left[\begin{matrix}1&0&0&a\\0&1&0&b\\0&0&1&c\\0&0&0&1 \end{matrix}\right] \left[\begin{matrix}x\\y\\z\\1 \end{matrix}\right]⎣⎢⎢⎡x′y′z′1⎦⎥⎥⎤=⎣⎢⎢⎡100001000010abc1⎦⎥⎥⎤⎣⎢⎢⎡xyz1⎦⎥⎥⎤
中间4x4的矩阵叫变换矩阵。可见,如果要平移坐标,要将坐标维度增加1,变成齐次坐标(齐次坐标(homogeneous coordinates)就是将一个原本是n维的向量用一个n+1维向量来表示,常用于投影几何)。
在计算机图形学中,为了实现平移、旋转、缩放等图像操作,需要用到齐次坐标。
例1:世界坐标系wor相对相机坐标系cam的x、y、z分别平移了10,20,30,求次变换齐次矩阵。
[x′y′z′1]=[10010010000100001]×[10000102000100001]×[10000100001300001]×[xyz1]=[1001001020001300001]×[xyz1]\left[\begin{matrix}x^{'}\\y^{'}\\z^{'}\\1 \end{matrix}\right]=\left[\begin{matrix}1&0&0&10\\0&1&0&0\\0&0&1&0\\0&0&0&1 \end{matrix}\right] \times \left[\begin{matrix}1&0&0&0\\0&1&0&20\\0&0&1&0\\0&0&0&1 \end{matrix}\right]\times \left[\begin{matrix}1&0&0&0\\0&1&0&0\\0&0&1&30\\0&0&0&1 \end{matrix}\right]\times \left[\begin{matrix}x\\y\\z\\1 \end{matrix}\right]= \left[\begin{matrix}1&0&0&10\\0&1&0&20\\0&0&1&30\\0&0&0&1 \end{matrix}\right]\times \left[\begin{matrix}x\\y\\z\\1 \end{matrix}\right]⎣⎢⎢⎡x′y′z′1⎦⎥⎥⎤=⎣⎢⎢⎡10000100001010001⎦⎥⎥⎤×⎣⎢⎢⎡10000100001002001⎦⎥⎥⎤×⎣⎢⎢⎡10000100001000301⎦⎥⎥⎤×⎣⎢⎢⎡xyz1⎦⎥⎥⎤=⎣⎢⎢⎡1000010000101020301⎦⎥⎥⎤×⎣⎢⎢⎡xyz1⎦⎥⎥⎤
三个分量矩阵位置可以交换,因为是独立变量,互不影响。
所以,平移齐次矩阵为:[1001001020001300001]\left[\begin{matrix}1&0&0&10\\0&1&0&20\\0&0&1&30\\0&0&0&1 \end{matrix}\right]⎣⎢⎢⎡1000010000101020301⎦⎥⎥⎤
2- 旋转变换
例2:世界坐标系wor相对相机坐标系cam绕x轴顺时针旋转了α\alphaα(逆时针旋转为正,所以以下变换均为逆时针旋转):
变换矩阵:[x′y′z′1]=[10000cosα−sinα00sinαcosα00001]×[xyz1]\left[\begin{matrix}x^{'}\\y^{'}\\z^{'}\\1 \end{matrix}\right]= \left[\begin{matrix}1&0&0&0\\0&cos{\alpha}&-sin{\alpha}&0\\0&sin{\alpha}&cos{\alpha}&0\\0&0&0&1 \end{matrix}\right] \times \left[\begin{matrix}x\\y\\z\\1 \end{matrix}\right]⎣⎢⎢⎡x′y′z′1⎦⎥⎥⎤=⎣⎢⎢⎡10000cosαsinα00−sinαcosα00001⎦⎥⎥⎤×⎣⎢⎢⎡xyz1⎦⎥⎥⎤
再绕y轴顺时针旋转β\betaβ(应该再左乘一个变换矩阵):
[x′′y′′z′′1]=[10000cosα−sinα00sinαcosα00001]×[x′y′z′1]\left[\begin{matrix}x^{''}\\y^{''}\\z^{''}\\1 \end{matrix}\right]= \left[\begin{matrix}1&0&0&0\\0&cos{\alpha}&-sin{\alpha}&0\\0&sin{\alpha}&cos{\alpha}&0\\0&0&0&1 \end{matrix}\right] \times \left[\begin{matrix}x^{'}\\y^{'}\\z^{'}\\1 \end{matrix}\right]⎣⎢⎢⎡x′′y′′z′′1⎦⎥⎥⎤=⎣⎢⎢⎡10000cosαsinα00−sinαcosα00001⎦⎥⎥⎤×⎣⎢⎢⎡x′y

最低0.47元/天 解锁文章
1129

被折叠的 条评论
为什么被折叠?



