☰
双目散斑结构光从原理到调试:散斑生成、参数匹配与标定优化
2026/10/7 6:30:39 网站建设 项目流程

前阵子项目里调一套双目散斑结构光模组,刚开始以为很简单:不就是激光器加衍射片,往物体上投一堆散斑,再走一遍双目匹配算法吗?结果通上电、看着屏幕上密密麻麻的散斑图,我被现实狠狠教育了一顿——白墙上全是飞絮状噪点,近处桌面上的散斑糊成一片,标定重投影误差死活压不到0.5像素以下。后来花了近两周时间,从散斑生成原理、系统参数到标定流程全部重新梳理了一遍,最后才把深度图调到可用状态。

双目散斑结构光,简单说就是主动投影散斑图案的双目立体视觉。它是在被动双目基础上增加一个散斑投射器,目的不是像条纹结构光那样直接编码相位,而是给白墙、纸箱、光滑表面这类低纹理区域主动注入视觉特征,让左右相机有东西可匹配。这个方案结合了主动照明和成熟的双目立体几何,在三维重建、深度测量、人脸识别、机械臂引导这些场景里非常常见。这篇内容适合准备上手双目散斑模组的同学,也适合已经在调但深度图效果不理想的朋友,我会从散斑生成原理、系统参数、质量评价、相机标定到图案优化,按我实际踩坑的顺序逐步展开。

1. 低纹理表面的救场方案:散斑给双目匹配“造特征”

1.1 被动双目在哪些地方会失效

立体匹配的本质,是在左右两张图中找同名点,然后根据视差恢复深度。找同名点靠的是局部窗口内的灰度或颜色特征。问题在于,真实世界里大量表面是低纹理甚至无纹理的:办公室的白墙、打印机的光滑外壳、柜门、桌面,这些区域灰度方差极小,任何窗口看过去都一样,算法根本找不到唯一对应点。

我测过一个被动双目系统,对着一面迎着阳光的白墙,深度图上出现大量“瀑布式”伪差,边缘位置全是毛刺。把窗口从5x5调到21x21也没用,因为窗口内根本没有可辨识的纹理,只有环境光造成的一点渐变。这时候大家才想起来,与其指望场景里自带纹理,不如主动打一束光上去——这就是散斑结构光最朴素的出发点。

1.2 散斑不是简单的“补光”

散斑投射器做的事情,可以理解为给被测表面临时贴上一层高对比度的“图案贴纸”。这层图案有几个好处:

  • 它是主动注入的,不依赖被测物体本身的颜色和材质;
  • 左右相机能同时看到同一份图案,因此立体匹配能稳定收敛;
  • 散斑通常工作在近红外波段,人眼看不到,不影响被测物体的外观。

这里要特意区分一下散斑结构光和条纹结构光。条纹/编码结构光一般使用单目相机加投影仪,需要精确标定投影仪的内参和外参,对投影仪的畸变和非线性响应很敏感。双目散斑结构光则保留了双目立体视觉的完整几何模型,双目标定、极线校正、立体匹配这一套成熟流程都能复用,投射器只是作为“纹理发生器”,不参与几何重建的绝对定位。这意味着,如果你后续想换更大基线、更高分辨率的相机,重建算法的底层逻辑基本不用动,改造系统的自由度要大很多。

对了,有一个结论可能和直觉相反:散斑图案并不是越“随机”越好。真正重要的是局部唯一性——任意一个小的匹配窗口,在整个参考散斑图中都能找到唯一位置。这跟二维码的定位设计是一个道理,太规则会产生周期性歧义,太随机又会让匹配窗口丢失可辨识的约束。

2. 散斑怎么生成:激光衍射与微透镜阵列两条路线

2.1 先说清楚“散斑”的两个含义

做这个方向的人第一关就会遇到术语混淆。激光散斑(speckle)是相干激光照射粗糙表面时,表面微结构对光的散射形成干涉,产生的颗粒状明暗图案;而结构光系统里说的“散斑”,通常指的是经过扩散器件之后形成的伪随机点阵。两者来源完全不同,一个是被动产生的,一个是主动设计的。

在双侧相机拍到的图像里,这两种东西其实经常同时存在:DOE投影点阵是主动设计的“信号”,激光本身的相干散斑叠加在点阵边缘上,则是“噪声”。好的模组设计要尽量压制后者,因为它会破坏散斑点边缘的锐利度,影响亚像素匹配稳定性。

2.2 DOE:一束激光变成几万个光点

目前消费级双目散斑模组用得最多的方案,是激光二极管加衍射光学元件(DOE,Diffractive Optical Element)。DOE本质上是一块带有微纳浮雕相位结构的薄片,激光束经过它时,不同位置的相位延迟不同,经过衍射叠加后,光能量会重新分布到特定方向的若干个衍射级上,每个衍射级就是一个光斑投影方向。

决定点阵扩散角度的核心参数,是DOE表面的最小结构周期。简单记忆一句话:衍射周期越小,扩散角度越大;波长越长,衍射角度也越大。工程上对于近红外850nm波长,要投射出50度以上的扩散角,DOE特征尺寸通常要做几微米量级,这对加工精度要求很高。点阵的排列可以是矩形栅格、六角网格,也可以掺杂伪随机扰动,设计自由度在相位分布图上,好坏直接决定零级光的比例和整片衍射效率。

用DOE的优点很明显:体积小、扩散角大、单点能量高。缺点也不难遇到:一是激光器波长随温度漂移后,衍射角会跟着变化,远距离投影时散斑图案可能整体位移几个像素;二是DOE加工误差和装配误差会放大零级光,在画面中心形成一个亮斑,严重时会饱和一片传感器区域。

2.3 微透镜阵列:可控图案的另一种选择

除了DOE,也有不少工业级方案用微透镜阵列(MLA,Microlens Array)。微透镜阵列可以理解为一整片密密麻麻的微小透镜,每一颗微透镜都投影出一个光斑,光斑的排列取决于透镜阵列的排布。

MLA方案最大的优势是图案可控性更强。你可以自由设计每个微透镜的孔径形状、排布位置和倾斜角度,做出完全定制化的半随机点阵,而不是像DOE那样只能通过相位编码在衍射规则内做文章。散斑均匀性通常也比DOE好,因为每个微透镜的透过率可以单独设计,边缘暗角问题更容易在源头解决。代价是体积更大、成本更高,高密度点阵下微透镜间的串扰也需要额外处理。

对比维度DOE方案MLA方案
光源要求激光(相干光)LED或激光均可
图案设计自由度受衍射规律限制高,可编辑性更强
投影均匀性一般,边缘能量容易衰减较好,可逐透镜设计
点阵密度可以做到很高受微透镜尺寸限制
体积成本小、适合量产偏大、成本更高
温度稳定性波长漂移敏感对波长不敏感
典型场景消费级人脸识别、短距离测量工业级大范围测量、定制光场

实际选型没有绝对答案。消费级产品追求体积和成本,DOE基本是默认选项;工业项目里如果对均匀性和图案可定制性要求高,MLA可能更合适。如果只是做算法验证,其实可以用普通投影仪投一个伪随机点阵到场景里,先把算法链路跑通,再回来选硬件方案。

2.4 选型时容易被忽略的一点

选投射器的时候,很多人只看“散斑数量”和“投影角度”,却忽略了散斑图案在传感器成像面上的实际密度。同样的散斑投射器,放在不同距离、不同分辨率的相机下面,成像效果完全不一样。这个问题我在下一章专门展开,因为它属于典型的“硬件参数打架”问题,不是孤立调某一个部件就能解决。

3. 双目散斑系统,参数之间是互相打架的

3.1 基线、焦距和工作距离的三角关系

双目系统的深度精度有一个基础公式,虽然简单,但值得反复默念:

σz ≈ (z²) / (b · f) · σd

其中z是工作距离,b是双目基线,f是相机焦距(像素单位),σd是视差估计误差。这个公式给出了三条硬约束:

  • 精度随距离的平方下降。工作距离从0.5米加到1.5米,同样视差误差下深度误差会放大9倍。所以不要指望一套小基线模组能同时覆盖近距离和远距离高精度。
  • 基线越大精度越高。但基线拉大,近距离公共视野会变小,两台相机看到的共同区域变少,散斑图案可能只有一侧能照到。
  • 散斑系统里σd往往不取决于算法本身,而取决于散斑点成像质量。斑点边缘模糊、过曝、密度太高,视差估计误差就会变大。

我现在的选型习惯是:先明确工作距离范围和目标精度,反推基线和相机的下限,再看视野和体积约束,最后才看散斑投射器。顺序反了的话,后面大概率要推倒重来。

3.2 散斑密度必须和相机分辨率匹配

这个坑我踩得最深。拿到一个散斑投射器,第一件事是看它在传感器上每个散斑之间的像素距离,而不是只看“点数有多少”。

假设投射器在某个工作距离上,相邻散斑点的物理间距是p,相机在该距离上的像素焦距是f(单位像素),那么图像上相邻散斑之间大约是:

d_pix = p / (f) 稍等,准确说,物体面上间距p对应的像素间距 = p · f / z

比如,p=3毫米,f=600像素,z=800毫米,得到约2.25像素,这比较理想。如果p只有1毫米,同样条件下算出来只有0.75像素,散斑点之间几乎连成一片,匹配窗口里全是纠缠不清的高频噪声,NCC代价曲线会非常平缓,视差估计误差直线上涨。反过来,如果p太大,散斑在匹配窗口里只有一两个点,特征约束不足,误匹配率也会升高。

我实际测试的经验范围是:散斑点间距在传感器上大约2到4像素,单个散斑点的直径大约1.5到2.5像素,这时候匹配算法的可靠性最高。这个结论是“匹配算法视角”下的,和人眼觉得“看得清楚”完全没有关系。

3.3 曝光与同步:左右相机必须保持一致

双目散斑系统最容易翻车的工程细节,是左右相机不是“同一个大脑”。如果左相机自动曝光、右相机也自动曝光,两边的亮度和增益往往不一样,同一个散斑点在两幅图像里的形态差异变大,匹配代价就会失真。

做法很直接:固定曝光时间、固定增益,左右相机使用相同参数。更稳妥的做法是硬件触发同步,保证左右两帧是同一时刻拍摄的。否则手稍微动一下,左帧拍到的物体位置和右帧不一致,视差图边缘就会出现“拖尾”,这种错误没法靠后处理消除。

此外,相机前端要加和投射器波长匹配的窄带滤光片。我见过有人用850nm的投射器,相机端不加滤光片就在阳光直射下测试,环境光直接把散斑对比度稀释到接近于零,深度图全是洞。加了中心波长850nm、半带宽30nm左右的滤光片之后,即时在户外,散斑依然清晰可辨。

4. 散斑好坏不能靠眼睛判断,要用匹配指标说话

4.1 参考散斑图怎么采集

评估散斑质量的第一步,是采集一张可靠的参考散斑图。把一块白色漫反射平板垂直于光轴放好,平板表面尽量平整,在系统设计的额定工作距离附近拍摄。注意几个细节:

  • 散斑投射器要开机预热一段时间再采集,等激光器波长稳定,否则图案位置会漂移;
  • 采集参考图和后续测试图时,曝光、增益参数必须完全一致;
  • 平板要足够大,把整个视场覆盖住,避免背景干扰。

参考图不是采集一次就能永久复用的。每次改动投射器位置、更换激光器、或者环境温度变化明显之后,都应该重新采集。我在项目里吃过亏,拿了旧的参考图去和新的测试图做匹配,结果整幅深度图都偏了,排查了半天才发现是参考图过期了。

4.2 三个关键指标:匹配率、误匹配率、平面RMS

评估散斑图案好坏,我一般固定三个指标,不凭肉眼感觉。

第一个是有效匹配率:匹配成功且置信度达标的像素数除以有效像素总数。这个指标衡量散斑“够不够吃”。低于90%通常说明散斑过稀、过曝或者环境光干扰太严重。

第二个是误匹配率:通过左右一致性检查后,左右视差差异大于某个阈值(比如1像素)的像素比例。这个指标衡量散斑“会不会吃错”。如果散斑图案存在周期性歧义,或者在倾斜面上图案变形太大,误匹配率会明显上升。

第三个是平面RMS:在几个不同距离处放平面,用深度图拟合一个平面,看残差的均方根。这是我最喜欢的综合指标,因为深度噪声、视差误差、标定误差最终都会体现在平面RMS里。比如0.5米处平面RMS做到0.3毫米以下,说明系统噪声控制得不错;如果还在1毫米以上,就需要回头查散斑成像质量或者其他环节了。

4.3 相关窗口的选择

散斑质量评估离不开窗口大小。窗口太小,局部特征不足,匹配歧义增高;窗口太大,深度边缘被平滑,边界处会“糊掉”。

对0.3到1.5米的工作距离、百万像素级别分辨率的相机,我一般从9x9或者11x11开始试。窗口设置好之后,配合散斑密度做一轮网格搜索,看哪个组合能同时满足高匹配率和低平面RMS。窗口选择本质上是“尺度”问题——散斑间距大,窗口就要大;散斑间距小,窗口可以适当缩小。两者不匹配时,再怎么调参数都救不回来。

4.4 一个案例:规整点阵的周期性误匹配

曾经用微透镜阵列方案做过一套系统,点阵非常整齐,人眼看很舒服,均匀性也好。结果一跑匹配,深度图上有周期性横条纹。后来定位到原因:点阵过于规整,在特定倾斜角度下,匹配窗口内出现多个相似结构,算法锁定了错误的匹配位置。

解决办法是在设计微透镜排布时加入局部扰动,把阵列变成“半随机”点阵,同时保证局部唯一性。回归之后,误匹配率从5%降到0.6%左右。这件事给我的教训是:散斑图案的设计不能只盯着“看起来均匀”,要和匹配算法联合起来评估,定量指标比视觉直觉可靠。

5. 标定做不好,散斑再好也白搭

5.1 标定期间第一件要记住的事:关掉散斑

这是一个常见的低级错误。有些人觉得散斑能辅助角点检测,标定时故意开着投射器,结果角点检测器被散斑干扰,角点坐标偏移惨不忍睹。

正确做法是:标定期间关掉散斑投射器,只保留均匀的标定光源。如果相机带了红外滤光片,要用能被红外照亮的棋盘格(比如红外反光油墨打印的图案),或者用普通漫反射棋盘格配合红外补光。我在实验室里通常关掉环境光,用一个均匀的红外LED板照亮棋盘格,角点检测稳定且重复性好。

5.2 棋盘格准备与采集姿势

棋盘格第一要求是平。不要拿热敏纸、打印纸直接贴,纸受潮或者弯曲以后,角点世界坐标的误差会直接进入标定结果。我现在会用玻璃板,把棋盘格贴在玻璃背面(玻璃在前,格子在玻璃后面),这样标定板表面是光学平面,反光问题也少很多。角点尺寸不要太小,边长20到30毫米比较合适,内部角点数选8x6或9x7。

采集姿势上,至少拍20到30对左右图,覆盖这些情况:

  • 标定板放在画面中心,平面大约正对相机;
  • 左右倾斜约30度、上下倾斜约30度;
  • 放在近距离、中间距离、远距离各若干张;
  • 标定板出现在画面边缘的情况一定要有,不能全部居中。

5.3 用SB检测角点和亚像素精化

OpenCV里传统的findChessboardCorners在低对比度、带噪声的红外图像上经常漏检,新版提供了findChessboardCornersSB,使用鞍点检测,亚像素精度明显更好,推荐优先用。

import cv2 import numpy as np pattern_size = (9, 6) # 内部角点数 criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 1e-6) for fname in image_files: img = cv2.imread(fname, cv2.IMREAD_GRAYSCALE) ok, corners = cv2.findChessboardCornersSB( img, pattern_size, flags=cv2.CALIB_CB_ADAPTIVE_THRESH + cv2.CALIB_CB_NORMALIZE_IMAGE ) if not ok: continue # 再做一次亚像素精化,进一步稳定 corners = cv2.cornerSubPix(img, corners, (5, 5), (-1, -1), criteria)

5.4 不合格角点的三层剔除策略

很多人标定的问题不是检测不上,而是把所有检测到的角点全部送入标定,没有剔除不合格的视图。视觉 SLAM 领域的普通做法在这里同样适用:先粗标定,再迭代剔除异常。

我常用的三层剔除流程是这样的:

第一层,检测阶段直接排除。如果某张图的棋盘格被手指挡掉一半、有反光、或者运动模糊导致角点检测置信度低,直接丢弃。

第二层,检测后做合理性检查。相邻角点之间的距离应该符合等比变化,如果某一行相邻角点偏移量突变,大概率是检测混叠或者棋盘格被遮挡了。

第三层,整体标定后按重投影误差剔除。先用所有通过前两层检测的图像做一次初始标定,然后逐张计算重投影误差,把误差较大的视图剔除,再用剩余图像重新标定,迭代两到三次。

def filter_views_by_reprojection_error(objpoints, imgpoints, size, max_err=0.3): ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera( objpoints, imgpoints, size, None, None ) keep_idx = [] for i in range(len(objpoints)): proj, _ = cv2.projectPoints(objpoints[i], rvecs[i], tvecs[i], mtx, dist) err = np.mean(np.linalg.norm(proj[:, 0, :] - imgpoints[i], axis=1)) if err <= max_err: keep_idx.append(i) else: print(f"view {i} reprojection error = {err:.3f} px, removing") # 用筛选后的数据再标定一次 obj_keep = [objpoints[i] for i in keep_idx] img_keep = [imgpoints[i] for i in keep_idx] ret, mtx, dist, rvecs, tvecs = cv2.calibrateCamera( obj_keep, img_keep, size, None, None ) return mtx, dist, keep_idx

阈值0.3像素不是永恒的。百万像素级传感器上0.3像素算比较严格,如果是五百万像素,单像素物理尺寸更小,可以放宽到0.4到0.5像素。我一般先看整体分布,比如所有视图的误差排序,剔除明显偏离长尾的部分,而不是一刀切。

我自己的实际案例:第一次标定,全部20对图像重投影误差0.42像素,怎么调都下不来。用上面方法按误差排序,有3张图像误差在0.8像素以上,全是标定板靠近图像边缘、且倾斜角度很大的视图。剔除后回归,误差降到0.19像素。同一个模组,深度精度肉眼可见地变好了。

5.5 双目标定之后的最终检查

双目立体标定用cv2.stereoCalibrate,输入左右相机的角点对,最终输出左右相机的相对旋转和平移。这一步要关注两个东西:

一是整体重投影误差,和单目类似,越小越好。二是立体校正之后的行对齐程度。校正完成后,可以在校正图上画几条水平线,或者直接输出视差图,看看边缘是否存在明显的行偏移。如果校正后同一位置在左右图中不在同一行,说明内外参还是有问题,需要回到前面重新检查和剔除。

立体校正最怕的是“局部最优”:整体重投影误差很小,但某个区域对应关系错乱。这种问题通常出现在标定板没有覆盖到画面边缘时。所以我在前面强调,边缘视角的图像一定要多拍几张。

6. 散斑优化的具体方向:密度、点形、均匀性与温漂

6.1 密度优化:用匹配率曲线找拐点

散斑密度不是越密越好,也不是越稀越好。最实用的办法是:在同一测试场景、同一曝光参数下,测试若干种不同密度的散斑投射方案,做出“匹配率-密度”曲线,找到拐点。

我做过的测试中,散斑间距从0.8像素一路加宽到3.5像素,匹配率是先升后降的。间距太密的时候,相邻散斑混叠,局部特征高度相似,匹配率只有82%;间距到2.3像素左右达到峰值96%以上;再往3.5像素走,窗口里的散斑数量开始不够,匹配率缓慢下降,边缘区域的孔洞也开始变多。对当时那套系统来说,2到2.5像素就是甜区。

6.2 点直径和亚像素稳定性

散斑点不是越小越锐利越好。过小的点,在传感器上只占不到1个像素,相当于采样退化,亚像素位置信息丢失;过大的点,相邻点粘连,局部对比度下降。

我比较看重一个指标:同一平面多次采集后,视差的帧间抖动。散斑直径在1.0像素时,NCC匹配的亚像素抖动经常超过0.2像素;优化到2.1像素后,抖动可以压到0.08像素左右。这直接决定深度图的平滑程度,特别是平面场景,抖动大一点,深度图上就会看到明显的颗粒感。

6.3 均匀性与零级光的处理

DOE方案的边缘能量衰减几乎是不可避免的。画面上经常出现中心亮、四角暗。这个问题的优化有两个层面:

硬件层面,选择边缘级次加了权重补偿的DOE设计,或者加一枚光场均匀化透镜。软件层面,可以在匹配前对图像做局部归一化,但这会牺牲一部分对比度,对弱特征区域不太友好。最理想的做法还是让硬件均匀性好一些,软件端只做微调。

中心零级光是DOE方案的“老熟人”。如果画面中央出现一个远亮于其他散斑的亮斑,大概率就是零级光。好的DOE会在相位设计上抑制零级,但如果是模组装配或者低端DOE引入的,可以在光路中加入一个很小的中心挡块把它物理挡住。不要小看这个细节,中心区域如果饱和了,匹配算法在这一片就完全失效,深度图上就是一个大洞。

6.4 温漂与参考图更新

激光器发热后波长会漂移,DOE的衍射角随之变化。这个影响在近距离不算明显,但在1米以上工作距离,几个纳米的波长漂移足以让散斑图案整体移动好几像素。

对策分三层。第一层是硬件层面,给激光器做好散热,或者选用带温控的激光器封装。第二层是工作流程层面,开机后预热几分钟再采集参考图和正式测试,不要在冷启动状态下直接做高精度测量。第三层是系统层面,如果工作环境温度范围很宽,需要建立“参考图-温度”映射,在不同温度档位分别采集参考图。这个优化在消费级产品里少见,但在工业环境里挺实用。

6.5 环境光干扰的滤光方案

环境光的问题在室内不明显,一旦放到窗边或者户外,太阳光里包含大量近红外成分,会直接把散斑信号淹没。我给相机配了窄带滤光片之后,户外深度图从“基本不可用”提升到“可用但有噪点”。如果再配合算法端的自适应曝光策略,效果会更好。

滤光片选择要注意三点:中心波长要匹配激光器,半带宽不要太宽,否则环境红外光还是漏进来;滤光片要装在镜头的入射光路上,装在传感器前面虽然也能用,但容易产生反射和鬼影。另外,左右两台相机的滤光片透射率一致性也会影响匹配,最好成对购买或者同一批次。

7. 一次从“满屏噪点”做到可用的调试记录

7.1 现象与初判

有一段时间,我用DOE方案在办公室场景里调一套模组,工作距离设定在0.3到1.5米。初始状态深度图表现如下:

  • 白墙区域全是飞絮状噪点,边缘有“毛刺”;
  • 画面中央有一片完全无法匹配的区域,对应散斑投射的零级亮斑;
  • 近距离放在桌面上的纸箱,边缘出现横向条纹;
  • 0.5米处平面RMS约1.2毫米,差得离谱。

7.2 逐项排查的顺序

我没有直接上手改算法,而是按“成像链路”的顺序逐项排查。

先关掉散斑投射器,拍左右相机的原始图像。结果发现两个问题:左右相机自动曝光参数不一致,白墙左边亮右边暗;增益较高时,红外噪声明显放大。改成固定曝光、固定增益之后,原始画面的基础帧噪声降下来一截。

再打开散斑投射器,看散斑原始图像。中心果然饱和,用光电测量仪验证是零级光的能量集中在中心。我在DOE前面加了一枚中心遮挡片,中心亮斑消除,画面中间区域恢复了匹配能力。

接着用ImageJ统计散斑图像在传感器上的点间距,发现只有约1.2像素,明显过密。在保证视场角的要求下,调整了投射器的物距比,使散斑在目标工作距离上的成像间距达到2.3像素左右。重新采集参考图后,匹配率从82%跳到96%。

最后回到标定。单目重投影误差0.42像素,剔除三张误差最大的边缘视角图后降到0.19像素。双目标定完成后,重新立体校正,视差图的边缘毛刺明显减少。

7.3 最终参数与效果

整套调整后的系统参数如下:

参数项调整前调整后
散斑成像间距约1.2像素约2.3像素
匹配率82%96%
单目重投影误差0.42像素0.19像素
0.5米平面RMS1.2毫米0.42毫米
1.0米平面RMS无法稳定评估约1.1毫米

这次调试的真正收获是:深度图质量不是某一项指标单独决定的,散斑成像、曝光、标定三大块必须同时达标,任何一块有明显短板,最终结果就会被那块短板限制。先修成像链,再动算法,排查效率最高。

7.4 一个小经验

项目收尾后我自己捋了一下,最想提醒后来人的一条:每次改动散斑投射器的位置、电流、或者更换激光器,都要重新采集参考散斑图。参考图是这套系统一切匹配的基准,基准偏了,算法怎么调都是白搭。还有一个习惯也值得养成:标定和散斑是两个互斥状态,标定关投影,测试开投影,别嫌麻烦去省那一次切换。按这个流程走下来,双目散斑系统其实没有玄学,每一步都能在原始图像和数值上找到对应关系。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询