相机的坐标转换(2):单应性矩阵的求解
2017-03-07 15:29
134 查看
在这篇文章里我们继续上一话题,对得到的转换矩阵进行求解。
s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜α00−αcotθβ0u0v01⎞⎠⎟(R0TT1)⎛⎝⎜⎜⎜xwywzw1⎞⎠⎟⎟⎟(1)
上述式子只是为了行文方便,如果要求解,我们得写成下面的样子:
s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜α00−αcotθβ0u0v01⎞⎠⎟(r1r2r3t)⎛⎝⎜⎜⎜xwywzw1⎞⎠⎟⎟⎟(2)
那么,我们如何得到对应的空间点坐标呢。
我们假设标定模板位于zw=0上,结合棋盘格的边长我们就可以得到相应的角点的空间位置。譬如,假设每一个小格子的大小为300*300,那么,红点1的坐标为(0,0,0),则红点2的坐标为(0,300,0),依次类推,这样我们就得到对应点的空间坐标。
s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜α00−αcotθβ0u0v01⎞⎠⎟(r1r2t)⎛⎝⎜xwyw1⎞⎠⎟(3)
用单应性矩阵的形式可表示成:
s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜h11h21h31h12h22h32h13h23h33⎞⎠⎟⎛⎝⎜xwyw1⎞⎠⎟(4)
作为一个单应性矩阵,H并没有看上去的那样风光,哦,我是说,尽管看起来H是一个3×3的矩阵,其实单应性矩阵的自由度只有8个。好了,划重点的时间又到了,图像平面间的单应矩阵(Homography Matrix)H,具有8个自由度。在这篇文章里,我们只具体研究图像平面间的单应性矩阵。一般而言,为了归一化,我们可以设h33=1,于是,公式4就变成了如下所示:
s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜h11h21h31h12h22h32h13h231⎞⎠⎟⎛⎝⎜xwyw1⎞⎠⎟(4)
显然可得,
⎧⎩⎨⎪⎪⎪⎪⎪⎪u=sus=h11xw+h12yw+h13h31xw+h32yw+h33v=svs=h21xw+h22yw+h23h31xw+h32yw+h33(5)
简单地变个形,我们就可以得到:
{0=h31xwu+h32ywu+h33u−(h11xw+h12yw+h13)0=h31xwv+h32ywv+h33v−(h21xw+h22yw+h23)(6)
但是作为一个大学生,如果只会列公式,那么我们和咸鱼,,,嗯,我是说我们和小学生有什么区别。我们要列,矩,阵。唯有如此,才能体现出我们曾上过矩阵这门课,或者说,被它上过。
[−xw0−yw0−100−xw0−yw0−1xwuxwvywuywvuv]h=0(7)
其中,h=[h11,h12,h13,h21,h22,h23,h31,h32]T(8)
我们共有8个未知参数,需要四个像公式(7)这样的式子才能求解,棋盘格里的一个小格子刚好能提供四个角点,看来选棋盘格是有原因的。
我们用下角标来区别四个角点的坐标,那么我们可以用下面的式子来唯一求解:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢−xw10−xw20−xw30−xw40−yw10−yw20−yw30−yw40−10−10−10−100−xw10−xw20−xw30−xw40−yw10−yw20−yw30−yw40−10−10−10−1xw1uxw1vxw2uxw2vxw3uxw3vxw4uxw4vyw1uyw1vyw2uyw2vyw3uyw3vyw4uyw4vuvuvuvuv⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢h11h12h13h21h22h23h31h32⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=0(9)。
对应Ah=0这样的矩阵求解,我们目前的技术手段已经非常成熟了,譬如,熟读矩阵论的我们一定知道:我们可以采用SVD分解的方法来求。当然,要想结果准确,排除噪声、检测误差等因素带来的影响,还是要采取一些手段的,譬如采用最大似然的思想,采用随机抽样一致的方法等。
关于如何求出相机内参,我们下篇再讲。
ps:单应性矩阵不仅应用在相机标定的过程中,同时也用在图像拼接的过程中。更多关于单应性矩阵求解的内容,请戳这里。
1.前文
在上篇文章里,我们最终得到如下公式:s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜α00−αcotθβ0u0v01⎞⎠⎟(R0TT1)⎛⎝⎜⎜⎜xwywzw1⎞⎠⎟⎟⎟(1)
上述式子只是为了行文方便,如果要求解,我们得写成下面的样子:
s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜α00−αcotθβ0u0v01⎞⎠⎟(r1r2r3t)⎛⎝⎜⎜⎜xwywzw1⎞⎠⎟⎟⎟(2)
2.(u,v)与(xw,yw,zw)的求解
在张正友标定法当中,我们一般用棋盘格作为标定模板,通过图像处理上的方法我们可以得到棋盘格上的角点坐标,这样我们就得到了(u,v).那么,我们如何得到对应的空间点坐标呢。
我们假设标定模板位于zw=0上,结合棋盘格的边长我们就可以得到相应的角点的空间位置。譬如,假设每一个小格子的大小为300*300,那么,红点1的坐标为(0,0,0),则红点2的坐标为(0,300,0),依次类推,这样我们就得到对应点的空间坐标。
3.单应性矩阵的求解
当zw=0时,公式(2)可变为:s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜α00−αcotθβ0u0v01⎞⎠⎟(r1r2t)⎛⎝⎜xwyw1⎞⎠⎟(3)
用单应性矩阵的形式可表示成:
s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜h11h21h31h12h22h32h13h23h33⎞⎠⎟⎛⎝⎜xwyw1⎞⎠⎟(4)
作为一个单应性矩阵,H并没有看上去的那样风光,哦,我是说,尽管看起来H是一个3×3的矩阵,其实单应性矩阵的自由度只有8个。好了,划重点的时间又到了,图像平面间的单应矩阵(Homography Matrix)H,具有8个自由度。在这篇文章里,我们只具体研究图像平面间的单应性矩阵。一般而言,为了归一化,我们可以设h33=1,于是,公式4就变成了如下所示:
s⎛⎝⎜uv1⎞⎠⎟=⎛⎝⎜h11h21h31h12h22h32h13h231⎞⎠⎟⎛⎝⎜xwyw1⎞⎠⎟(4)
显然可得,
⎧⎩⎨⎪⎪⎪⎪⎪⎪u=sus=h11xw+h12yw+h13h31xw+h32yw+h33v=svs=h21xw+h22yw+h23h31xw+h32yw+h33(5)
简单地变个形,我们就可以得到:
{0=h31xwu+h32ywu+h33u−(h11xw+h12yw+h13)0=h31xwv+h32ywv+h33v−(h21xw+h22yw+h23)(6)
但是作为一个大学生,如果只会列公式,那么我们和咸鱼,,,嗯,我是说我们和小学生有什么区别。我们要列,矩,阵。唯有如此,才能体现出我们曾上过矩阵这门课,或者说,被它上过。
[−xw0−yw0−100−xw0−yw0−1xwuxwvywuywvuv]h=0(7)
其中,h=[h11,h12,h13,h21,h22,h23,h31,h32]T(8)
我们共有8个未知参数,需要四个像公式(7)这样的式子才能求解,棋盘格里的一个小格子刚好能提供四个角点,看来选棋盘格是有原因的。
我们用下角标来区别四个角点的坐标,那么我们可以用下面的式子来唯一求解:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢−xw10−xw20−xw30−xw40−yw10−yw20−yw30−yw40−10−10−10−100−xw10−xw20−xw30−xw40−yw10−yw20−yw30−yw40−10−10−10−1xw1uxw1vxw2uxw2vxw3uxw3vxw4uxw4vyw1uyw1vyw2uyw2vyw3uyw3vyw4uyw4vuvuvuvuv⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢h11h12h13h21h22h23h31h32⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥=0(9)。
对应Ah=0这样的矩阵求解,我们目前的技术手段已经非常成熟了,譬如,熟读矩阵论的我们一定知道:我们可以采用SVD分解的方法来求。当然,要想结果准确,排除噪声、检测误差等因素带来的影响,还是要采取一些手段的,譬如采用最大似然的思想,采用随机抽样一致的方法等。
4下文
尽管已经可以求出单应性矩阵了,但我们的任务还没有结束。单应性矩阵里既包含相机内参也包括相机外参。相机标定的目的在于求出内参。毕竟不同张的图片都对应着不同的外参,而相机不变,则内参不变。所以,内参才是我们要追求的唯一。关于如何求出相机内参,我们下篇再讲。
ps:单应性矩阵不仅应用在相机标定的过程中,同时也用在图像拼接的过程中。更多关于单应性矩阵求解的内容,请戳这里。
相关文章推荐
- OSG学习笔记25——屏幕坐标——相机坐标——世界坐标之间的转换
- 像素坐标、相机坐标、世界物理坐标之间的坐标转换条件。
- opencv-相机标定步骤、评估标定误差以及标定之后图像坐标到世界坐标的转换
- 简单版相机坐标转换
- Nyoj 298 点的变换[利用矩阵求解坐标点的转换,平移,绕原点旋转,沿x,y轴翻转]
- opencv-相机标定步骤、评估标定误差以及标定之后图像坐标到世界坐标的转换
- PnP 单目相机位姿估计(二):solvePnP利用二维码求解相机世界坐标
- 关于相机坐标到投影空间坐标转换的理解
- 利用ArcGIS进行地图投影和坐标转换…
- 地址栏url不识别地图坐标为字符串型的X,Y.必须转换成数值型才识别
- Geometryservice:坐标转换、求多边形面积和周长
- Objective-C-UI控件学习之UIView中坐标转换的方法
- 45度tile坐标转换
- WebGIS项目中利用mysql控制点库进行千万条数据坐标转换时的分表分区优化方案
- WGS84坐标和UTM坐标的转换
- 重温数据结构-栈的应用:进制转换,括号匹配检测,行编辑,迷宫求解,求表达式的值
- cocos2d-x 2.1坐标转换总结
- unity初识之坐标转换
- CCD相机模数转换芯片时序简介
- BD09坐标(百度坐标) WGS84(GPS坐标) GCJ02(国测局坐标) 的相互转换