作者:天涯居士 | 来源:3DCV
在公众号「3DCV」后台,回复「原论文」即可获取论文pdf和代码。
添加微信:dddvisiona,备注:结构光,拉你入群。文末附行业细分群。
01 沙姆用途
在结构光技术中,投影仪经常用到沙姆(移轴)镜头来增加景深,那么背后的原理是什么呢?让我们来看,如图1所示:

沙姆定律:当被摄主体平面(Subject Plane)、镜头平面(Lens Plane)、成像平面(Image Plane)这三个面的延长面相交于同一条直线,那么被拍摄主体/测量平面(Subject Plane)上的全部景物在成像平面上都是清晰的(黑色那条线)。
注1:对于成像平面与镜头平面平行的平面,可以认为是相交于无穷远处,而且实际工艺,也无法完全做到平行。
注2:镜头在不同距离下对光线的汇聚作用不同,因此景深也并非无限,而仅仅是这条黑线附近。如果更换测量平面,则需要重新调整成像平面、镜头平面之间的夹角、镜头的焦距等参数。
这里推荐大家学习「3D视觉工坊」近期正在开课中的:(第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]课程,相较之前3D视觉工坊推出的结构光系列课程,该课程更加偏向于工业实战,目的在于帮助大家更快地入门结构光技术,从而更早地独立阅读相关论文。作者对第一期课程中存在的问题和不足进行了改进,大部分内容都得到了更新,讲解更为细致,可操作性更强,而非简单地第一期课程重复!
实际的投影仪成像平面(Image Plane)和镜头平面(Lens Plane)是固定的,因此清晰成像的范围,也就是在主体/测量平面(Subject Plane)附近。那么这么做有什么用呢?如图2所示:
(来自文献Meng Wang, Yongkai Yin, Dingnan Deng, et al. Improved performance of multi-view fringe projection 3D microscopy[J]. Optics Express, 2017, 25(16):19408.)
-
普通镜头(左侧):相机成像平面与镜头平面是平行的,无论是相机、投影仪,它们清晰成像(人眼认为还可以)的范围都在平行于镜头的长方形平面的前后,做并集之后,可以看到公共区域仅为:红色的菱形区域。
-
沙姆镜头(右侧):相机成像平面与镜头平面是呈现一定倾角的,投影仪在平行于芯片的一定范围内清晰成像,而沙姆镜头的相机同样在测量平面清晰成像,因此公共区域就是:较大的长方形区域。
有时候,结构光相机需要对整个测量平面清晰成像。显然,采用沙姆镜头的结构光系统更能满足该要求。
需要说明的是,虽然似乎好像,沙姆镜头仅仅是根据测量平面与镜头平面之间的位置关系,偏移一下成像芯片和镜头的角度。但为了保证成像质量,纠正里面的各种光学误差(例如像差、慧差),实际的光学设计成本也是更高的。就好像相机成像最简单的原理,无非是一个针孔模型,那你总不能设计一个孔来成像吧?一颗好的定焦光学镜头,无论是单反相机还是工业相机,价格都是很昂贵的。
02 同轴/偏轴
另外,还有个概念,投影仪的偏轴,也就是offset>0,这是两个不同的概念:
光学原理如下,只是通过偏移光轴映射(光路可逆)在DLP芯片上的位置,来做到偏轴。可以看到,这个DLP芯片跟镜头平面依然是平行的。
-
好处:方便投影,放在桌面上即可直接进行投影。
-
缺点:
-
与相机非同轴,光机需要倾斜。
-
同轴光机,亮度呈现上下分布对称,因此均匀度更好。
-
不完全符合针孔相机模型(当然,利用逆相机法,同样也能重建,可以当做另一半的虚拟DMD芯片没有发光)。
-
参考链接:
移轴摄影、沙姆定律与射影几何 [知乎]
移轴/沙姆/Scheimpflug 结构的相机标定 [知乎]
Meng Wang, Yongkai Yin, Dingnan Deng, Xiangfeng Meng, Xiaoli Liu, and Xiang Peng, Improved performance of multi-view fringe projection 3D microscopy, Optics Express, 2017
—END—
高效学习3D视觉三部曲
第一步 加入行业交流群,保持技术的先进性
目前工坊已经建立了3D视觉方向多个社群,包括SLAM、工业3D视觉、自动驾驶方向,细分群包括:[工业方向]三维点云、结构光、机械臂、缺陷检测、三维测量、TOF、相机标定、综合群;[SLAM方向]多传感器融合、ORB-SLAM、激光SLAM、机器人导航、RTK|GPS|UWB等传感器交流群、SLAM综合讨论群;[自动驾驶方向]深度估计、Transformer、毫米波|激光雷达|视觉摄像头传感器讨论群、多传感器标定、自动驾驶综合群等。[三维重建方向]NeRF、colmap、OpenMVS等。除了这些,还有求职、硬件选型、视觉产品落地等交流群。大家可以添加小助理微信: dddvisiona,备注:加群+方向+学校|公司, 小助理会拉你入群。
第二步 加入知识星球,问题及时得到解答
针对3D视觉领域的视频课程(三维重建、三维点云、结构光、手眼标定、相机标定、激光/视觉SLAM、自动驾驶等)、源码分享、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答等进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业、项目对接为一体的铁杆粉丝聚集区,6000+星球成员为创造更好的AI世界共同进步,知识星球入口:「3D视觉从入门到精通」
学习3D视觉核心技术,扫描查看,3天内无条件退款
第三步 系统学习3D视觉,对模块知识体系,深刻理解并运行
如果大家对3D视觉某一个细分方向想系统学习[从理论、代码到实战],推荐3D视觉精品课程学习网址:www.3dcver.com
科研论文写作:
基础课程:
[1]面向三维视觉算法的C++重要模块精讲:从零基础入门到进阶
[2]面向三维视觉的Linux嵌入式系统教程[理论+代码+实战]
工业3D视觉方向课程:
[1](第二期)从零搭建一套结构光3D重建系统[理论+源码+实践]
SLAM方向课程:
[1]深度剖析面向机器人领域的3D激光SLAM技术原理、代码与实战
[1]彻底剖析激光-视觉-IMU-GPS融合SLAM算法:理论推导、代码讲解和实战
[2](第二期)彻底搞懂基于LOAM框架的3D激光SLAM:源码剖析到算法优化
[3]彻底搞懂视觉-惯性SLAM:VINS-Fusion原理精讲与源码剖析
[4]彻底剖析室内、室外激光SLAM关键算法和实战(cartographer+LOAM+LIO-SAM)
视觉三维重建
[1]彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进)
自动驾驶方向课程:
[1] 深度剖析面向自动驾驶领域的车载传感器空间同步(标定)
[2] 国内首个面向自动驾驶目标检测领域的Transformer原理与实战课程
[4]面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
[5]如何将深度学习模型部署到实际工程中?(分类+检测+分割)