在使用相机的视觉任务中,我们总是听到相机标定这个词, 那么相机标定到底是干什么, 为什么要进行相机标定呢? 常用的相机标定方法又有哪些呢? 本文试图从这几个方面来详细解释相机标定。 与其他的文章不同, 本文抛开繁琐的数学公式以及成像几何原理, 用通俗易懂的方式来解释。
1 相机标定是什么
相机标定简单地说就是为了计算出相对准确的相机参数, 通常包括内参和外参。 内参就是相机本身的一些参数, 如焦距, 畸变等。 外参就是跟场景相关的一些参数, 比如相机相对于某一参考坐标系平移, 旋转了多少。
2 为什么要标定
上面说了, 标定主要是为了计算出内参和外参。
内参通常相机生产出来就固定了, 但是通常都是有误差的, 这个误差来源很多, 如装配误差, 器件的不一致性等等。 有时这个误差会很大, 因此在使用前非常有必要进行标定。
外参标定通常跟使用场景有关, 比如用视觉定位的时候, 就需要知道相机坐标系与世界坐标系之间的映射关系, 那么这个时候就需要进行外参的标定。
3 怎么标定
相信大家看到最多的标定方式就是棋盘格标定了。 没错, 这个标定方式确实是当前最常用, 也很强大的标定方法了。
那么这个标定方法具体是怎么做的呢?
其实操作起来也很简单:
- 首先, 准备一个标定板。 (网上下载一个棋盘格图案打印出来即可)
- 然后用待标定相机从多个不同位置和角度拍摄多组图片, 10几张通常就足够了。 (当然也可以相机不动, 移动标定板)
- 最后就是计算了。 得到多组图像后, 标定板上各个点的坐标我们是已知的,通过拍摄的图像我们又知道了像素坐标。 这些点一一对应起来, 实际上就得到了很多的点对。 通过这些点对, 我们就可以计算出相机的内参和外参。 当然这种情况下, 我们更关注的是内参, 因为这个外参是相对的, 标定板换个不同位置这个外参就变了, 实际上没啥用处。 这个计算通常也不需要我们自己写算法, 有很多现成的库都有, 如opencv等等。