摄像机几何

一、针孔模型&透镜

在摄像机坐标中p点的坐标为(x,y,z),我们想将他投影到像平面坐标上也就是

                ​​​​​​​        ​​​​​​​        p=\begin{bmatrix} x\\y \\ z \end{bmatrix}\rightarrow p'=\begin{bmatrix} x'\\y' \end{bmatrix}

此时x'=f(x/z) y'=f(y,z) ,注意f为小孔到象平面的距离,z为目标点到小孔平面的距离。  

我们知道,在针孔摄像机中,随着光圈的减小,成像效果为:越来越清晰,同时也越来越暗。

要解决这个问题,我们又要给相机加一个透镜,通过透镜将多条光线聚焦到胶片上,增加了照片的亮度。

此时我们已经加了透镜,跟小孔成像原理一样,

z'=f+z0,此时的f为透镜的焦距,z0为透镜的焦距到胶片的距离。

此时的x'=z'(x/z) y'=(y/z)。

加入透镜,也会给我们带来两个个问题:失焦,径向畸变。

失焦原因:物体的焦距有特定的距离。

径向畸变原因:图像像素点以畸变中心为中心点,沿着径向产生的位置偏差,从而导致图像所成的像发生了形变。

二、摄像机几何

当我们在研究成像的时候用到的坐标往往不是像面坐标而是像素坐标,像面坐标和像素坐标有一定的关系,以下面的图为例。

1.偏置:这里可以看到,像面坐标与像素坐标之间差了一个Cx和Cy,

所以有(x,y,z)->(f * x/z + Cx,f * f * y/z + C)

2.单位变换:我们需要加两个参数k,l将m(米)转换成像素

所以有(x,y,z)->(f * k * x/z + Cy , f * l *y/z +Cy)

注意k,l的单位为像素/米

将 f * k设为α,将f * l设为β,则

p = (x,y,z)->p' = (α * x/z + Cx , β * y/z +Cy)

做完这些变换我们可以思考一个问题,p到p'的变换时线性的吗?

显然不是,因为x对应的不是x一个变量, 而是x和z两个变量,所以它是非齐次的。

所以,我们需要做一些变化,首先弄清楚其次坐标的概念,

图像点的齐次坐标        (x,y)\Rightarrow \begin{bmatrix}x \\ y \\ 1 \end{bmatrix} ,空间点的齐次坐标(x,y,z)\Rightarrow \begin{bmatrix} x\\y \\ z \\ 1 \end{bmatrix}

降维:

\begin{bmatrix} x\\ y \\ w \end{bmatrix}\Rightarrow (x/w,y/w)                                              \begin{bmatrix} x\\ y \\ z \\ w \end{bmatrix}\Rightarrow (x/w,y/w,z/w)

有了齐次坐标的概念,我们就可以写出在齐次坐标中的投影变换,

设ph' 为p'的齐次坐标,有ph' -> p' = (α * x/z + Cx , β * y/z + Cy),则有

ph' = \begin{bmatrix} \alpha x + Cx*z\\ \beta y +Cy *z \\ z \end{bmatrix} = \begin{bmatrix} \alpha &0 &Cx &0 \\ 0& \beta &Cy & 0\\ 0 &0 &0 &0 \end{bmatrix}\begin{bmatrix} x\\ y \\ z \\ 1 \end{bmatrix} = M*ph   

因为M是不变的,所以就建立了二维齐次坐标和三位齐次坐标的一个线性关系:ph' = M * ph。

后面还有一个问题,就是摄像机的制作工艺可能会出现问题,就会出现像素不是方的,是一个平行四边行,夹角为\theta。所以我们需要改进M,来消除这种问题。直接给出改进结果:

p' = \begin{bmatrix} \alpha &-\alpha \cos \theta & Cx &0 \\ 0 & \beta /\sin \theta & Cy & 0\\ 0 & 0 & 1 & 0 \end{bmatrix}\begin{bmatrix} x\\ y \\ z \\ 1 \end{bmatrix}=M*p=K\begin{bmatrix} I & 0 \end{bmatrix}p

这里的K为相机内参数矩阵。

接下来就可以和上面一篇文章联系起来,将物体的世界坐标转换到相机坐标。

设一个点的世界坐标为Pw = \begin{bmatrix} Xw\\ Yw \\ Zw \\ 1 \end{bmatrix} ,齐次坐标为P = \begin{bmatrix} R &T \\ 0& 1 \end{bmatrix}Pw

所以 P' = K\begin{bmatrix} I & 0 \end{bmatrix}P=K\begin{bmatrix} I &0 \end{bmatrix}\begin{bmatrix} R & T\\ 0 & 1 \end{bmatrix}Pw = K\begin{bmatrix} R & T \end{bmatrix}Pw = MPw

我们将\begin{bmatrix} R & T \end{bmatrix}成为外参数矩阵,因为该矩阵只与摄像机的摆放位置有关系R旋转,T为平移。

此时我们将M成为投影矩阵。

当我们知道投影矩阵M和三维点Pw,就可以直接写出Pw对应的欧式坐标,P'。

令M = [ m1 , m2 ,m3]的转置,则有

p' = MPw =\begin{bmatrix} m1\\m2 \\ m3 \end{bmatrix}Pw=\begin{bmatrix} m1Pw\\m2Pw \\ m3Pw \end{bmatrix}\rightarrow \begin{pmatrix} \frac{m1Pw}{m3Pw} &\frac{m2Pw}{m3Pw} \end{pmatrix}.

  • 17
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值