视觉基础之相机标定

 
 

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

基于视觉的图像处理,通常要在实验前进行相机的标定,以获取相应的参数。为方便查阅,遂将常用到的三种相机标定总结如下。

相机内参标定

Step1 : 在相机前方放置棋盘格,前后左右方向转动棋盘格,角度不宜超过45度,采集不同方向的图片,待后续处理;

2b903a4683d94c3b3d0905c201dc3a3f.jpeg

Step2 : 打开Matlab,在APP列找到Camera Calibration工具,将采集的棋盘格图片导入,保证能够正确导入的图片数量在20-30张之间,测量每个黑白格的真实大小并输入Matlab中。

8b98b9780a8076581a8ee59945c01621.jpeg

Step3 : 观察棋盘格角点都被正确检测到后,点击Calibrate按钮,观察重投影误差,若图片数量较多,可将重投影误差较大的图片删去,重新calibrate,直到达到一个较理想状态;

fd5ef3e1e3728207430b51e21a73b417.jpeg

Step4 : 选中Export Camera Parameters按钮,将计算得到的相关参数导入到Matlab中;若要进行更精确的标定,可在标定时考虑畸变误差或采用双目相机标定方法。

a8854e2a058db643a8ac669f5c514cdd.png

图示即为我们所需要的相机的内参矩阵,其中fx=1.1259e+03, fy=1.1267e+03, u=480.6138, v=359.5351。


注意事项:

1、 棋盘格在图片中的大小不能过小,要保证角点清晰可探测;

2、 Matlab所得到的内参矩阵与我们通常情况下所计算的内参矩阵互为转置;

3、 若要进行雷达相机联合标定,标定步骤需进行部分调整。

逆透视标定

Step1 : 在图片正中间纵向方向绘制一条直线,从车辆正前方沿着图片中心线拉直尺,距离根据要求调整,一般在15m左右;

    Step2 : 在摄像机的视野范围内的平坦地面选择一个矩形,要求矩形的纵轴线与图片正中心的直线重合;对所选取的矩形的四个顶角进行标记,要求标记在摄像机的图像画面中能够清晰显示,如下图四个矿泉水瓶。

2faff85e7f10949269c0c9ebcbcfc29b.jpeg

Step3 : 启动标定程序,分别输入X轴偏移距离a, Y轴偏移距离b, 矩形宽度w,矩形高度h,比例系数k,一般取经验值:1280,445,360,600,4.5,具体可根据实际情况进行调整,依次选取左上角、右上角、左下角、右下角点,使得上图中绿色的线与标定图像中的红线重合。标定完成后,得到逆透视变换矩阵H,可在实际实验中检验H的值是否合理。保证图片能看到本车道和相邻车道,且保持直线平行性不变。

注意事项:

1、 标定的逆透视图像区域与测试的逆透视图像区域尺寸应保持一致;

2、 标定时矩形的靠近摄像机的两个点应尽量靠近车辆,近乎贴合盲区时标定所得矩阵较准确;

3、 世界坐标系:智能车所在地面组成的二维平面,横轴为X轴,纵轴为Y轴,原点左边是X轴正轴,下面是Y轴正轴。图像坐标系:图像左上角为原点,横轴为X轴,纵轴为Y轴。所以矩形四个角的坐标依次为:(a/k ,b/k),((a+w)/k,b/k),(a/k,(b+h)/k),((a+w)/k, (b+h)/k),所涉及到的四个参数a、b、h、k的单位均为厘米,当a为正值时,逆透视图像向右偏移,b为正值时,逆透视图像向下偏移。(横向偏移越大,则鸟瞰图像中横向的视野就越宽;纵向偏移越大,则纵向视野就越远)。

单目测距标定

(1)纵向距离标定:

准备工具:测距所涉及到的原理和公式:

根据摄像机成像原理,以及摄像机与路面的关系建立了图像像素坐标系与世界坐标距离的几何模型,如下图所示:

10996621bad2d6a901977e1e4d36d777.png

根据几何模型可推导出图像物理坐标与世界坐标距离关系式为:

4c1cf62228ab000e079478217aefc842.png

根据图像物理坐标与像素坐标之间的转换关系得:

a30fe1c4e5fe453d1861d23d5c1dfb0a.png

其中,ay表示摄像头的有效焦距,α表示摄像头的俯仰角,可通过公式反推通过标定求得,v0表示主点纵坐标,v是像素行数。

实验操作步骤:

Step1 : 通过棋盘格标定法获取相机内参fv和v0的值,测量相机离地高度h。

Step2 : 在图片正中间纵向方向绘制一条直线,从车辆正前方沿着图片中心线拉直尺,距离大约60m左右,测量相机到直尺原点的距离;

Step3 : 从远到近依次取15个标志点,分别输入他们到相机的真实距离,建立像素点与真实点之间的一一对应关系,借助程序即上述几何关系求解出摄像头的俯仰角,从而进行前方物体纵向距离的计算。

bcfe428459781e74d07b54cedb0c80d1.gif

(2)横向距离标定:

标定原理:

单目摄像机在拍摄时,所有平行与摄像机光轴的直线均汇聚与一点(即消失点L),且在待测点与消失点连线上的任意一点到光轴的距离均相等。

在图像左上角建立基于图像像素的平面坐标系,将待测点用像素坐标表示出来,求出待测点与消失点的连线在图像上的连线与光轴之间的角度,与实际待测点距光轴的距离进行匹配,最后根据数据对标定进行数据拟合即可完成横向标定。

00c07a956bdab4bef7ce3966709d8209.jpeg

 实验操作步骤:

Step1 : 将车辆停在车道中央,保持车道线方向与车身纵轴方向平行,利用鼠标在图片中的车道线上选两点,图片中心线上取一点,计算出消失点坐标;

Step2 : 在车辆前方某一距离处(一般取15m),在车辆纵轴线一侧横向摆放10个障碍物,鼠标在图片中从左到右依次取点,计算每个障碍物与消失点连线与光轴之间的角度,并记录每个障碍物到车辆中心的真实横向距离,建立角度与真实距离之间的一一对应关系,并通过Matlab进行曲线拟合,测试时,只需获取像素点,即可通过计算角度和拟合所得到的曲线获得目标距离本车的横向距离。

来源:爱吃草莓的小泥猴

 
 

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇

 
 

3fdabf7d7e33fce232e9668b589d1ef6.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值