【结构光三维重建标定学习】左超论文之Triangular stereo model

左超论文中各种标定方法一般都分为两步,第一步参数计算,第二步重建

Triangular stereo model(三角立体模型/逆相机法)信息汇总

出自论文:Feng, Shijie, Chao Zuo, Liang Zhang, Tianyang Tao, Yan Hu, Wei Yin, Jiaming Qian and Qian Chen. “Calibration of fringe projection profilometry: A comparative review.” Optics and Lasers in Engineering 143 (2021): 106622

1、 [结构光逆相机法重建详解+代码]

(https://zhuanlan.zhihu.com/p/389059581)

这篇文章分析的挺清晰的,但留了三个问题,即输入信息如何得到+如何提高精度

2、[结构光相移法中相机投影仪的标定信息如何与相位差联系]

(https://blog.csdn.net/qq_15295565/article/details/103124622)中的第三种方法 三、投影仪和相机都要标定的PMP
第二篇文章一定程度上回答了以下两个问题

怎么投影图案,求解绝对相位?
怎么帮助投影仪“看见”标定板?进行投影仪标定?
获取投影仪对应图
操作步骤:
1,投影仪选择白光模式,相机捕获水平方向上的黑白条纹图案,并计算得到水平方向上的绝对相位值;
2,投影仪选择白光模式,相机捕获竖直方向上的黑白条纹图案,并计算得到竖直方向上的绝对相位值;
3,检测圆中心;
4,通过相位图建立的一对一映射,利用这些映射来确定那些相机圆心的投影仪圆心;
5,对于不同姿态下拍摄的图像,重复1-4的步骤;
6,利用标定相机的程序来标定投影仪的参数。
————————————————
原文链接:https://blog.csdn.net/qq_15295565/article/details/103124622

3、[投影仪标定的几种思路]

(https://blog.csdn.net/Stones1025/article/details/97788474)第一种方法
详细阐述了标定步骤

相位法(精度高、实现较难)
该种方法将投影仪当作逆向的相机模型来进行标定,通过计算投影仪投射的相位信息计算出世界坐标系z=0平面和投影仪“成像平面”之间的关系,具体标定步骤如下:
S1:按照合适的角度固定好相机和投影仪,标定过程中保证二者相对静止;
S2:准备好标定板,可以使用打印的标定板,也可以使用陶瓷标定板;
S3:投影仪关闭,相机拍摄标定板图片;
S4:投影仪投射多频相移图片(投射x方向和y方向的条纹图片),相机同时进行拍摄;
S5:改变系统相对标定板的位姿,重复步骤S3、S4,拍摄>15组的数据;
S6:使用拍摄的标定板图片进行相机标定,获得相机的内外参并保存每个标定板上的角点位置信息
S7:投影仪标定;
S7.1:处理每组多频相移图片,分别计算出x方向和y方向上的绝对相位图,并将相位图的范围转换到图像行列范围;
S7.2:根据每张图片的角点位置和相位图计算出每个角点对应的投影仪“像点坐标”
S7.3:根据”像点坐标“-标定板角点世界坐标的对应关系使用相机标定计算投影仪内外参;
S8:已知每次场景下的相机外参和投影仪外参,计算出相机和投影仪之间的相对位姿。
————————————————
原文链接:https://blog.csdn.net/Stones1025/article/details/97788474

4、刘顺涛,骆华芬,陈雪梅,徐静.结构光测量系统的标定方法综述[J].激光技术,2015,39(02):252-258

这篇论文中提到的伪相机法
在这里插入图片描述

5、本人对Triangular stereo model的粗鄙解读

step1
输入:相机和投影仪的“角点坐标”
输出:相机和投影仪的标定结果 ‘Rc_1’, ‘Tc_1’, ‘KK’

step2
输入:相机和投影仪的标定结果++物体的点云(为一斜面)
输出:三维重建

step2
输入:相机和投影仪的标定结果
%camera: Projection matrix Pc
load('CamCalibResult.mat');
Kc = KK;
Pc = Kc * [Rc_1, Tc_1];

%projector: Projection matrix Pp
load('PrjCalibResult.mat');
Kp = KK;
Pp = Kp * [Rc_1, Tc_1];      

上述代码求出相机和投影仪的矩阵,可以和下图对应上
相机矩阵
投影仪矩阵

for y = 1:height
    for x = 1:width
        if ~isnan(up_test_obj(y, x))
            A = [Pc(1,1)-Pc(3,1)*(x-1), Pc(1,2)-Pc(3,2)*(x-1), Pc(1,3)-Pc(3,3)*(x-1);
                Pc(2,1)-Pc(3,1)*(y-1), Pc(2,2)-Pc(3,2)*(y-1), Pc(2,3)-Pc(3,3)*(y-1);
                Pp(1,1)-Pp(3,1)*(x_p(y,x)-1), Pp(1,2)-Pp(3,2)*(x_p(y,x)-1), Pp(1,3)-Pp(3,3)*(x_p(y,x)-1)]; % Eq. (32) in the reference paper.
            
            b = [Pc(3,4)*(x-1) - Pc(1,4); Pc(3,4)*(y-1) - Pc(2,4); Pp(3,4)*(x_p(y,x)-1) - Pp(1,4)];
            X = inv(A)*b;
            x_rec(y, x) = X(1);
            y_rec(y, x) = X(2);
            z_rec(y, x) = X(3);
        end
    end
end

这块代码可以和下图对应上
在这里插入图片描述

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值