在计算机视觉中,通常都会碰到自己制作数据集的情况,有些时候需要自己写爬虫程序从网站上下载不同标签的图片。而有些情况下,我们则需要利用自己的摄像头进行数据的获取。在特定的领域,比如说三维重建,slam这些应用领域,在不使用深度学习的情况下,是需要在配置文件中给出相机的内参的,外参一般就用程序跑出来了。对于不同型号的摄像头,其内参一般是不一样的,下面给出一种简便的方法,对单目摄像头进行标定。LZ使用的是Matlab R2016a,不同的版本可能方法有所不同。

1.准备自己的数据集
LZ这里使用的是棋盘标定法,所以用的标定块如下图所示。这个标定板可以自己网上下载一个,或者用matlab画一个,这个不是很难。注意一点,在用摄像头采集数据的时候,要保证标定板是处于一个平整的位置。像LZ用的比较简陋,就直接打印在纸上,平铺在桌面上,进行数据采集了。这里可以拍20张左右,多变换一点角度,还有距离。

python 鱼眼相机标定及图片去畸变代码_数据集

2.将数据放入matlab中进行处理

LZ直接使用的是matlab的标定箱,因为使用的并不是什么特殊的摄像头,就是一般的网上买到的摄像头,所以不需要特意去写什么程序来标定。

python 鱼眼相机标定及图片去畸变代码_数据_02

在matlab的应用程序中可以找到一个应用Camera Calibrator的应用。

python 鱼眼相机标定及图片去畸变代码_matlab_03

点击Camera Calibrator这个应用,显示如上图案,点击add images,程序会要求输入棋盘的边长,这个要自己进行测量,当然测量要尽量准确。添加之前制作好的数据集,它会经过一定的筛选,剔除不合格的图片。

python 鱼眼相机标定及图片去畸变代码_数据集_04

LZ一共准备了23张图片,一共有9张图片不合格。

python 鱼眼相机标定及图片去畸变代码_数据_05

matlab会给每张图片建坐标系。

” alt=”这里写图片描述” title=”” />

选择自己要矫正的参数,点击按钮calibrate,进行对相机进行标定。接下里几幅图都是matlab自己计算得到的外参。还有重投影误差的柱状图,这个应该是基本的计算机视觉的知识了,LZ就不再赘述了。

python 鱼眼相机标定及图片去畸变代码_数据集_06

以棋盘为中心的相机的位姿图

python 鱼眼相机标定及图片去畸变代码_摄像头_07

以相机为中心的棋盘的位姿图

python 鱼眼相机标定及图片去畸变代码_摄像头_08

最后选择export camera parameters,将我们需要的内参进行导出。

python 鱼眼相机标定及图片去畸变代码_数据集_09

最后我们需要的内参都在其中啦!哈哈,完美哦O(∩_∩)O