首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >坐标系与矩阵(7): 相机校正

坐标系与矩阵(7): 相机校正

作者头像
Peter Lu
发布2021-07-20 11:35:19
1.2K0
发布2021-07-20 11:35:19
举报
文章被收录于专栏:LETLETLET

本系列的最后一篇,关于相机校正的内容。这一块原理和之前的介绍完全相同,需要两个步骤:将世界坐标下的位置转为相机坐标下对应的位置,然后进一步将该位置转为2D平面,对应最后的照片。前者对应上一篇中的

模型视图矩阵,在视觉中称为extrinsic parameters:

后者对应上一篇的

,在视觉中称为intrinsic parameters。

实际中,并没有远近裁剪面的概念,也不需要将2D坐标缩放至

,假设存在一个image plane来成像,存在矩阵

满足该投影转换。假设

是图片的中心点,f为焦距,同样基于相似三角形,可得:

实际中,焦距在x方向和y方向上可能不相同,甚至两个轴并不垂直,上图所示,

称为skew coefficient。考虑如上实际情况,得到一般解:

这样,我们实现了到相机像素坐标位置的转换关系,是以

的像素数。如何获取相机对应的extrinsic和intrinsic· parameters,这就是相机校正要做的事情。

我们会用一个黑白棋盘来进行校正,因为其黑白分明,格子的距离相等,且在一个平面上。棋盘左上角的第一个角默认为原点,确定x,y的方向,z是叉乘的方向。

如上图,是OpenCV校正时的过程,识别格子的角点。通常,提供更多的校正图片,最终得到的结果就越准确,误差也就越小。这里,我截取了十张校正图片进行校正,最终获取相机对应的参数。这个过程称为offline。

OpenCV校正后会生成一个out_camera_data.yml文件,其中最重要的信息是camera_matrix和distortion_coefficients。前者是一个

矩阵,也就是相机的intrinsic parameters

我笔记本摄像头对应的参数

这样,在online阶段,我们可以基于原点

,构建世界坐标系下的某个物体,OpenCV会实时根据原点的位置计算对应的extrinsic parameters

,这样,就可以在摄像头下huizhi 一些自定义的几何对象,这也是图像增强技术的基本原理。

上图是截取视频的一帧,基于offline中的K和distortion_coefficients,在online阶段实时的获取世界坐标系下的原点位置和XYZ轴,分别对应红色,绿色和蓝色,以及extrinsic参数(R,t),最终绘制正方体和随时间旋转的锥体

Distortion又是几个意思呢。这是因为真实的相机并不是pinhole,而是滤镜,如下图所示。等角滤镜会产生radial distortion的现象。所以需要进行纠偏操作。

通常,纠偏至少需要四个参数

对应下图中tangential distortion系数。

OpenCV中提供了五个参数,顺序为

,对应的纠偏算法为,可以调用projectPoints实现:

关于该系列,正如本系第一篇所述,一直想梳理一下这块的内容,但懒得开头,无意看到某位同事提了齐次坐标,以此为契机,算是完成了一个小小的夙愿,尽管我也清楚很多地方写的很仓促。写到这,想起来一本关于数学家的小册子 ’Heroes in my heart’,十年过去了,对作者在最后一段的感慨还能记住大半。

至此,完成了坐标系与矩阵系列。关于坐标系,不妨看看相对论(我也只是科普水平),当我们把时间也作为坐标系中的一个维度,可能会有新的体会;关于矩阵,分享一下黑客帝国1中,Morpheus说的一句话:’unfortunately, no one can be told what the Matrix is. You have to see it for yourself’。一个有理想的人,难免在某些时候活的很累,愿你永远无忧无虑,愿你爱的人懂得温暖来自何方。

听一首憨人,就睡了,又是一个不眠的夜晚~

参考资料:https://ww2.mathworks.cn/help/vision/ug/camera-calibration.html

INFOMCV computer vision

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LET 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档