跳到主要内容
成像与视觉 · 实用指南

立体视觉工作区

分割并校正并排摄像头流,检查立体图像对,并使用显式标定配置探索深度输出。

  • 相机输入
  • 立体像对
  • 深度预览
打开工具

功能简介

立体视觉工作区读取并排摄像头流,分离两个视图,在 OpenCV 可用时应用内置校正配置,并生成探索性灰度深度预览。你可以单独保存立体图像对和深度图像,或将会话文件打包为 ZIP。

仅供探索性深度

深度画布是逐帧可视化,不是校准的原始深度数据。它不保留毫米值,不得直接用于叶片厚度、尺寸计量或独立归一化帧之间的比较。

开始之前

  • 连接一个在一帧视频中并排输出左右视图的摄像头。
  • 使用 HTTPS 或 localhost,以及支持 MediaDevices、Canvas 和 WebAssembly 的浏览器。
  • 仅在选择 Start camera(启动摄像头)后授予摄像头权限;页面不会自动开始捕获。
  • 对于内置标定配置,使用原始 1280 × 480 流:每只眼 640 × 480 像素。其他设备或分辨率不受此配置标定。
  • 在 OpenCV.js 和 JSZip 从外部 CDN 加载期间保持网络连接可用。
  • 预期在实时校正和深度计算期间会有较大的 CPU 和内存使用。

快速流程

  1. Camera configuration(摄像头配置)下,选择 Video device(视频设备)并设置 Total width(总宽度)和 Height(高度)。
  2. 输入文件系统安全的 Sample ID(样本 ID)或保持默认 sample 前缀。
  3. 选择 Start camera 并批准浏览器权限请求。
  4. 检查状态面板。校准校正需要 OpenCV 和成功初始化的校正映射;basic mode(基本模式)仅是回退预览。
  5. 选择 Capture stereo(捕获立体对)以保存当前左右画布。
  6. 选择 Compute depth(计算深度),检查灰度结果,然后如果它作为视觉记录有用则选择 Save depth map(保存深度图)。
  7. 选择 Download ZIP(下载 ZIP)以打包所有捕获的会话文件。
  8. 在断开摄像头或离开页面之前选择 Stop(停止)。

控件与输出

控件当前行为
Video device选择一个检测到的摄像头。标签在授予权限前可能保持通用。
Total width / Height请求流尺寸。这些值不会创建新的标定配置。
Start camera / Stop启动或释放所选媒体流。
Sample ID提供捕获文件名中使用的已清理前缀。
Capture stereo将左右 PNG 添加到会话 ZIP 并提供单独下载链接。
Compute depth从当前图像对计算一个视差衍生的灰度深度可视化。
Save depth map将当前灰度深度 PNG 添加到会话。它在深度计算后启用。
Download ZIP将内存中的会话下载为 stereo_captures.zip

立体图像对文件名遵循:

sample_stereo_001_left_rectified.png
sample_stereo_001_right_rectified.png

深度文件名遵循:

sample_depth_001_depth_precision.png

文件名描述了预期工作流。确认状态面板报告了正常工作的 OpenCV 校正;回退分割图像可能否则在未经校准重映射的情况下保留 _rectified 后缀。

工作原理

每帧视频被复制到隐藏的 Canvas 并在宽度中点处分割。OpenCV 就绪时,应用使用固定的内参、畸变、旋转和平移值为一个立体装置构建 640 × 480 校正映射,然后重映射两个眼睛图像。

Compute depth 将图像对转换为灰度,并运行 OpenCV StereoBM,使用 64 个视差和 15 像素块。视差使用内置焦距和约 59.94 mm 基线在内部转换,但应用随后将该单帧的有效最小和最大值映射到 0–255。仅显示和保存此归一化图像。

如果 OpenCV 无法加载,应用回退到简单分割和基于浏览器的块匹配。该回退较慢,不是 OpenCV 路径的校准替代。

数据、隐私与外部服务

  • 摄像头帧、图像处理、捕获列表和 ZIP 组装保留在浏览器中;应用不上传视频流。
  • OpenCV.js 从多个公共 CDN 尝试加载,JSZip 从 jsDelivr 加载。其可用性和策略对本站来说是外部的。
  • 捕获仅保留在页面的内存 ZIP 中,直到下载。刷新或离开页面会清除会话。
  • 所选摄像头 ID 在本地存储,以便浏览器稍后恢复偏好。

局限性

  • 内置标定特定于一个 1280 × 480 并排装置。镜头更换、摄像头移动、对焦更改、尺寸调整或其他设备会使其失效。
  • 在配置的焦距、基线和 64 视差搜索下,最近可表示深度约为 0.49 m。因此工作区未配置为 5–30 cm 测量范围。
  • 保存的深度 PNG 仅包含相对灰度;它不包含该帧的归一化范围、原始视差、置信度或公制深度。
  • 逐帧归一化意味着不同图像中相等的灰度值不一定代表相等的距离。
  • 无纹理、反射、重复、遮挡或同步不良的场景可能产生无效匹配。
  • 实时重映射和回退匹配器在移动或低功耗硬件上可能较慢。
  • 不提供标定编辑器、原始深度导出、点云、叶片轮廓或厚度分析。

排障

问题应检查什么
未列出摄像头连接设备,使用 HTTPS,授予权限,并在浏览器显示标签后重新打开设备列表。
摄像头访问失败关闭其他摄像头应用程序,检查站点权限,并再次尝试 Start camera
两个眼睛视图未对齐确认并排顺序,请求 1280 × 480,并验证物理装置与内置标定匹配。
状态报告基本模式检查网络并重新加载以便 OpenCV.js 初始化;不要将回退输出视为已校准。
深度大部分为黑色或有噪声改善纹理和漫射照明,减少反射,保持两只眼睛同步,并避免遮挡。
Save depth map 不可用先启动摄像头并完成 Compute depth
ZIP 下载不可用至少捕获一对立体图像或深度图,并确保 JSZip CDN 已加载。
页面无响应停止流,降低分辨率,关闭其他重度标签页,并避免在低功耗设备上使用基本回退。

打开立体视觉工作区

返回应用实验室