- Simple, Accurate, and Robust Projector-Camera Calibration
- 摘要
- 1、介绍
- 背景
- 所提方法
- 配套软件
- 相关工作
- 2、方法^*^
- A.投影仪和相机模型
- B.数据获取
- C.相机标定
- D.投影仪标定
- E.立体系统标定
- F.算法
- 3、标定软件
- 4、结果
- A.硬件平台
- B.重投影误差
- C.投影仪镜头畸变
- D.真实值数据
- 扫描200x250mm的平板;
- 扫描雕塑
- 5、结论
论文地址
软件地址
-
标定的意义:结构光三维重建的精度很大程度上取决于相机和投影仪的精确标定。
-
存在的问题:虽然相机和投影仪可以由同一数学模型描述,但是现在还不太清楚如何改进相机标定的方法以用于投影仪的标定上。导致现在的投影仪标定方法用的都是简化的模型,忽略了镜头畸变,造成了精度的损失。
-
论文贡献:提出一种新方法,用于估计在投影仪图像平面上三维点的图像坐标。
-
方法条件:一台未标定的相机,以及利用局部单应性来达到亚像素精度。
-
方法效果:任何相机模型都可以用来描述投影仪,包括带径向和切向畸变参数的广义针孔模型甚至是其他带有更复杂镜头畸变的模型。
off-the-shelf 现成的;local homography 局部单应性;sub-pixel precision 亚像素精度;radial 径向;tangential 切向。
结构:背景->所提方法->配套软件->相关工作
背景 结构光系统由现成的投影仪和相机组成,它的使用门槛底而且精度高,其中投影仪可以看作相机模型的逆过程,同时被动立体系统中所有需要注意的地方几乎都不用做调整,可以直接使用。但是投影仪存在无法像相机那样直接测量三维点在投影仪图像平面上的像素坐标,因此标定过程必须适应投影仪的特性。结构光系统需要根据被测物的尺寸、测量距离来调整其系统参数(如视野、放大倍率和焦距等),因此每次使用前都需要进行标定。从这个角度来看,系统标定过程的简单化和系统的精度同样重要。
所提方法-
关键思想:利用单应性变换估计投影点在投影仪图像平面上的坐标。
-
步骤:
-
通过投影到标定对象相同的图案序列上,得到投影仪和相机像素之间的一组密集对应关系,作为后来投影到目标上的对应关系。
-
利用获得的对应关系计算一组局部单应性变换矩阵,该变换矩阵要有亚像素精度。
-
-
两个贡献:
- 主要贡献,提出一种找到投影仪像素和真实世界三维点对应关系的方法。不依赖于相机标定参数。
- 次要贡献,开发配套软件。效率高,获得所需要的数据以后,不需要人干预就能自动标定。
标定软件的使用分为两步:
-
获取原始数据
- 在投影仪工作区域内。向静止的棋盘格上投射一系列格雷码图案;
- 相机获取这些一系列模式图,保存在同一目录下;
- 改变棋盘格的姿态,重复上面两个步骤,每个姿态保存在不同的目录下;使得棋盘格的姿态充满整个工作区域。
-
软件自动标定
理想的结构光系统的标定效果是:易实现、精度高。前人的工作或多或少都有一些缺陷。
- 前人的工作
-
需要预先标定好的相机,这样相机的标定误差会不断传递和扩大,进而对整个系统的精度影响较大;
-
需要移动投影仪,这种方法不方便,同时不适用于强制度量范围的情况;
-
提出迭代调整的算法,但是需要使用彩色标定物和彩色相机,进而引入实际颜色于相机获得颜色不对应、需要相机图片不断输入,无法分离标定级次等问题;
-
有一些方法也是利用单应性变换来处理,但是单应性变换是线性的,而投影仪镜头存在非线性畸变,必须考虑镜头畸变;
-
还有的方法需要安装在高精度移动机构上的平板铝板(标定物),这种方法需要高精度机构,并不实用。
- 对比
在获得对应关系方面
前人的方法:从投影仪的角度生成复合图像再输入标准相机标定工具。缺点在于投影仪像素一般较低会损失关键信息。
所提方法:直接从相机所得图片中计算对应关系,直接利用相机的分辨率。
2、方法* A.投影仪和相机模型planar checkerboard 平板棋盘格;working volume 工作区域;mount on 安装在…;assign 分配;metric 米制的,度量;
用带有径向和切向畸变的小孔模型描述相机和投影仪。具体可以看相机模型。
B.数据获取 改进了数据获取方式,使得相机和投影仪可以同时标定。
新方式:对每一个角度投射并获取一系列格雷码模式图(如下图),不着重考虑时间而为了会的更高的精度。
相机的标定关键在于找到棋盘格角点在相机图像平面上的坐标,投影仪投射第一张是全量图案(如下图所示),以此来寻找角点。
具体步骤:第一张图像是全白图像,调用OpenCV中findChessboardCorners()函数寻找角点最后调用clibrateCamera()获得相机标定参数。
D.投影仪标定 投影仪的标定主要就是利用相机获得的图像通过局部单应性找到投影仪图像平面角点,角点找到以后就可以应用和相机一样的标定方法来标定投影仪内参矩阵。
- 找到棋盘格在投影仪图像平面的角点可以分为三个步骤:
- 通过结构光序列解码(解码图如下图所示,相同颜色表示投影仪像素的行或列),找到棋盘格在相机图像上的像素于棋盘格在投影仪图像上的行列之间的对应关系。
- 根据相机获取的图像中的每个棋盘格角点估计局部单应性变换矩阵 H H H。
- 应用获得的单应性变换矩阵 H H H,将棋盘格角点从相机图像坐标转换为对应的投影仪图像坐标(如下图所示)。
-
方法存在的问题以及解决
-
问题1:格雷码解码精度受环境光的干扰,要减小解码误差,就要把相机获取的图像中的亮度成分按一定的规则分类,文献:Y. Xu and D. G. Aliaga, “Robust pixel classification for 3d modeling with structured light,” in Proceedings of Graphics
Interface. New York, NY, USA: ACM, 2007, pp. 233–240 ,中给出了解决方案。 -
问题2:从结构光模式中学习到的对应关系不能直接把相机坐标转换到投影仪坐标,因此提出局部单应性的概念。
-
局部单应性的获取:针对每一个棋盘格角点找到对应的局部单应性变换矩阵。具体是在每个棋盘格角点的一个小邻域内(计算时利用的点相对更多)计算目标角点的单应性变换矩阵。
-
局部单应性的性质:局部单应性变换可以引入非线性畸变,因为每一个角点的变换是独立的。
-
-
单应性变换矩阵 H ^ \hat{H} H^的具体计算
p p p为相机图像平面下的角点坐标, q q q为投影仪图像平面下的角点坐标。
- 我的理解:这里的 p p p可以直接从相机图像上获取, q q q时通过格雷码序列解码得到的,局部单应性 H ^ \hat{H} H^时通过以每个角点为中心的一小块区域内的所有像素点,通过式(9)得到。 p ˉ \bar{p} pˉ是相机图像中的角点,通过式(11)得到投影仪图像中的角点 q ˉ \bar{q} qˉ。
这一部分主要标定相机和投影仪的外参数,也就是旋转矩阵 R R R和平移向量 t t t。在获得的内参数的基础上,将相机坐标系作为世界坐标系。现在已知的数据有:标定棋盘格的物理尺寸、棋盘格角点在相机和投影仪图像平面上的位置。知道以上两个数据就可以利用相机-相机系统的标定方法完成外参数的标定。文中的标定软件直接调用OpenCV的stereoCalibrate()函数完成标定。
F.算法投影仪-相机系统的标定算法可以总结为以下9个步骤:
- 检测角点:在投射全亮图案时,由获取的标定板的每一个方位图中检测棋盘格角点;
- 估计光照成分:对于每一组使用高频格雷码模式的图像,估计其全局环境光和投影仪直接投射的光线;
- 结构光解码:考虑步骤二的光线分类,将结构光解码,通过鲁棒性强的像素分类获得投影仪行列像素的对应关系;
- 计算局部单应性:以步骤一中检测到的角点为中心选取一小块固定大小的区域(47*47 像素),在这一小块区域内,利用由步骤三获得的对应关系计算局部单应性矩阵;
- 计算投影仪图像平面中的角点位置:利用步骤四获得的单应性矩阵,将相机图像平面上的角点转换为投影仪图像平面上的角点;
- 计算相机内参:在棋盘格平面上固定一个世界坐标系,由步骤一检测的角点,利用张正友标定法获得相机内参;
- 计算投影仪内参:在棋盘格平面上固定一个世界坐标系,由步骤五计算的角点,利用张正友标定法获得投影仪内参;
- 计算立体系统的外参数:固定相机和投影仪的内参,利用角点在世界、相机和投影仪坐标系下的位置估计外参数;
- 整体优化(可选):将获得的内外惨一起调整,来最小化重投影误差。
3、标定软件decompose 分解;bijective 双射的;physical dimensions 物理尺寸;by means of 通过;bundle-ajusted 一并调整
-
初衷:让标定过程尽量简单高效,运用上面所述方法获得相应的数据后,标定过程可以自动完成;
-
使用的语言:C++,用户界面采用Qt的库,调用OpenCV相应版本的库;
-
适用平台:Microsoft Windows、GUN/Linux;
-
一些改进:1、针对OpenCV中findChessboardCorners()函数运行速度慢的缺点,采用分辨率下采样的方法加速算法搜索速度,找到角点的近似位置,由于精炼实在原分辨率中进行的,因此这种方法的准确性依然比较高;2、理论上要利用最高频率的格雷码模式图来寻找直接和全局光部分,但是由于实际中投影仪的分辨率不高,这样会导致伪影,因此跳过最高频率的格雷码模式图,而使用两张次高频率的模式图来解决这个问题。
-
直接和全局光成分分离:
参考论文
令 S = { I 1 , . . . , I k } S=\{I_{1},...,I_{k} \} S={I1,...,Ik}是模式图中分选出来的各种光的集合,假设 p p p是某个像素坐标,设 L d ( p ) L_{d}(p) Ld(p)是直接光成分, L g ( p ) L_{g}(p) Lg(p)是全局光成分。式(13)中的 b b b是一个超参数,文中设置为0.3。
- 选择合适大小的邻域计算局部单应性:文中的方法选用47*47像素大小的邻域。过大无法引入镜头畸变;过小对解码精度过于敏感。需要具体系统具体分析来确定合适的邻域大小。
4、结果cumbersome 繁琐的
-
标定结果的评估:
- 扫描具有已知几何参数的物体,把扫描结果和真实标准值进行对比;
- 与现有的标定方法对比(Projector-Camera Calibration Toolbox——“procamcalib” );
-
投影仪:Mitsubishi XD300U DLP data projector ;1024x768
-
相机: Canon EOS Rebel XSi camera ;4272x2848
重投影误差自然是越小越好,但重投影误差最小时,不一定能得到最精确的重建模型,因为系统参数的优化过程中可能对标定数据进行了过拟合,导致其对其他随机物体的重建精度效果不是最好的。
- 实验对比
投影仪镜头畸变不能忽略,特别是靠近边缘时畸变非常大,表中 k 2 k_{2} k2的值就无法忽略。完整的镜头畸变情况如下图,可以看出投影仪的镜头畸变不能忽略。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pEdNyhoq-1642406143666)(D:\研一文件\笔记\Markdown\论文笔记\Simple, Accurate, and Robust Projector-Camera Calibration\image-20220117141316812.png)]
-
所提方法标定后,测量误差的分布近似为高斯分布,95%的样本都落在[-0.33,0.33].
-
procamcalib方法标定后,测量误差的分布无明显规律。
-
具体数据
-
所提方法进行标定的结构光系统和商业激光扫描仪的3D模型结果进行对比,利用豪斯多夫距离来衡量其差距,如下图所示。其误差不超过1mm。
- Hausdorff距离:是描述两组点集之间相似程度的一种量度,它是两个点集之间距离的一种定义形式。
- Hausdorff距离:是描述两组点集之间相似程度的一种量度,它是两个点集之间距离的一种定义形式。
-
文中结构光系统的
方法是从六个视角获取点云数据,在手动配准以及合并,最后利用Smooth Signed Distance (SSD) 算法进行表面重建,最终生成的3D模型如下图所示。 -
SSD的参考文献:
- SSD-C: Smooth signed distance colored surface reconstruction
- SSD: Smooth signed distance surface reconstruction
论文最大的创新点在于引入了局部单应性变换的概念,这使得通过单应性变换寻找投影仪角点时能够引入镜头畸变模型(径向和切向畸变),通过间接的方法,利用投影仪投射格雷码序列,通过相机图像,找到投影仪图像上角点的位置。其他的贡献体现在工作量上:编写配套的标定软件,改进OpenCV函数、获得环境光成分分类、多视角生成3D模型等等。
- 明确单应性变换矩阵的具体求解步骤;
- 明确张正友相机标定方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)