2026年5月8日 · 深度技术解读 · 阅读约 15 分钟
TrayVision 托盘货物同一性视觉核验系统
技术方案完整解读
入库的托盘和出库的托盘,是不是同一堆货? TrayVision 用 2–3 台工业相机 + 几何轮廓特征比对,给仓库装上一双可靠的"眼睛"。本文深度解析 v0.1 PRD 的完整技术方案。
TrayVision
机器视觉
WMS对接
轮廓比对
仓储核验
PRD解读
一、核心问题:仓库最后一公里的核验盲区
在仓库运营中,入库、出库和盘点是三个关键节点。货物在这三个节点之间流转时,物理形态上不应发生变化——位置、排列、数量均应保持一致。
但现实是:上了 AGV、上了 WMS,最后一道"货对不对"的核验,全靠人工目检。
典型场景:原料库送来一托盘电子元器件,WMS 登记了入库;但出库时发现有一箱被换成了空箱。如果在出库节点没有自动核验,这笔损失往往在盘点时才能发现——为时已晚。
TrayVision 的核心目标:在入库、出库、盘点三个拍照点,用工业相机"记住"货物的几何轮廓特征,出库/盘点时比对判断是否一致,确保"拉进去的是什么,拉出来的就是什么"。
产品定位说明:TrayVision 是一套配套系统,对接现有 WMS,不替代 WMS 的库存管理逻辑。它专注于"货物一致性核验"这一件事。
目标客户画像
- 制造业、化工业、流通业的中大型仓库
- 已部署 WMS 的企业(需要 WMS 推送事件)
- 对货物完整性有较高要求的场景:原料库、成品库、医药库
- 部署了 AGV 的自动化仓库(核验点天然存在)
二、系统架构:从 WMS 到边缘计算
整个系统在架构上分为四层:WMS 触发层 → 事件接收层 → 边缘计算层 → 客户端展示层。
┌─────────────────────────────────────────────────────┐
│ WMS(客户侧) │
│ HTTP POST → JSON 事件推送 │
└──────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────┐
│ 事件接收服务(监听指定端口) │
│ 接收 INBOUND / OUTBOUND / INVENTORY_CHECK │
└──────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────┐
│ 业务逻辑服务 │
│ 分发任务 → 调度相机 → 处理结果 │
└───┬──────────┬──────────┬────────────────────────────┘
│ │ │
▼ ▼ ▼
┌────────┐ ┌────────┐ ┌──────────────┐
│相机1 │ │相机2 │ │相机3(后/俯视)│
│左前45° │ │右前45° │ │ │
└────┬───┘ └────┬───┘ └──────┬───────┘
│ │ │
└──────────┴─────────────┘
│
▼
┌─────────────────────┐
│ 边缘计算设备 │
│ 工控机 x86 / Jetson │
│ 特征提取 + 轮廓比对 │
└──────────┬──────────┘
│
▼
┌─────────────────────┐
│ 客户端(PAD / PC) │
│ 对比图 + 告警 + 确认 │
└─────────────────────┘
两种部署方式
相机随堆垛机移动,在放货和取货位置触发拍照。适合立体仓库场景。
优势:覆盖固定核验点,不额外占用通道空间
固定在货架巷道入口,货物运入运出必经点。固定角度,灯光可控。
优势:角度稳定,标定一次长期可用
系统不限定具体安装形式,可根据仓库实际情况灵活组合。
优势:适应不同仓库布局
三、三种操作:入库 / 出库 / 盘点
系统支持三种 WMS 触发事件,每种操作的处理逻辑不同:
📥
入库 INBOUND
WMS 推送入库事件 → 拍照 → 提取特征建立 profile → 关联 WMS 货物代码 → 货物进入"在库"状态
新建 profile
📤
出库 OUTBOUND
WMS 推送出库事件 → 拍照 → 与入库 profile 比对 → 输出结果。一致则出库,不一致则阻止并告警。
✅ PASS ❌ FAIL
📋
盘点 INVENTORY_CHECK
WMS 推送盘点事件 → 拍照 → 与上次 profile 比对 → 展示对比图。人工确认后更新 profile,货物仍放回仓库。
profile 更新
四条关键业务规则
1
入库时托盘必然有货
若 WMS 告知"空托盘入库"(托盘号一致但实际空),视为正常空托盘入库,系统不触发拍照核验。
2
出库比对失败 = 阻止出库
系统同时告知 WMS 比对失败,并在客户端展示入库照片与本次照片,高亮差异区域,等待人工确认。
3
盘点 ≠ 出库
盘点比对后货物仍放回仓库,不影响库存数量。profile 以本次拍照为准更新,保留历史版本。
4
托盘复用不额外校验
WMS 告知某托盘已出库,系统即认为该托盘已空,不对托盘本身状态做额外校验,由 WMS 负责托盘流转管理。
四、相机布局:2-3台够不够?
系统使用 2–3 台普通 RGB 工业相机(无需深度传感器,无需 3D 重建),核心思路是:覆盖托盘正面和侧面,确保任意位置缺失一件货物,至少有一个相机能捕捉到缺口。
推荐布局:2相机方案
相机2(右前45°)
↙
┌─────────────────────────────────┐
│ │
相机1 ──→ │ 托盘 + 货物堆 │ ← 操作人员
(左前45°)│ │
└─────────────────────────────────┘
视角说明:
相机1(左侧)→ 拍摄货物左侧面 + 正面
相机2(右侧)→ 拍摄货物右侧面 + 正面
相机3(后/俯视)→ 补拍顶面,适用于高大堆叠货物
多相机同步触发,单次拍照总耗时 < 1秒
相机数量的选择:2台相机覆盖大多数场景;若货物高大且堆叠复杂(如多品种混放),建议加装第3台俯视相机,捕捉顶层轮廓。
镜头与光源选型要点
📷
分辨率要求
≥ 500万像素,帧率 ≥ 30fps。GigE Vision 接口是主流选择,稳定可靠。
🔦
光源选型
LED 环形光源或同轴光源,确保轮廓清晰,减少金属桶表面反光干扰。
🎯
工作距离
由仓库现场实际布局决定,影响镜头焦距选型。需现场测量后确定(见待确认事项)。
五、核心算法:几何轮廓特征比对
这是 TrayVision 最核心的技术模块。本系统以几何轮廓特征比对为核心算法,不依赖 3D 重建或深度相机——这是与市面上大多数竞品的关键差异点。
为什么不用 YOLO?YOLO 擅长"这是什么类型的货物"和"有几件货",但无法直接判断"出库的这堆货是不是入库的那堆货"。TrayVision 用几何轮廓比对解决同一性问题,YOLO 作为可选辅助层(见本节末尾)。
5步处理流程
①
相机标定(Calibration)
使用标定板建立像素坐标系 → 实际尺寸(cm)的映射关系,输出内参矩阵 + 畸变系数。目的:将不同相机的图像投影到统一的正视基准面,消除透视差异。
②
图像预处理(Preprocessing)
畸变校正 → 投影归一化(将各相机图像映射到正视基准面)→ 背景分离(提取托盘+货物前景区域)。
③
轮廓与几何特征提取(Feature Extraction)
入库时从图像中提取5类特征存入 profile(见下表)。
④
比对引擎(Comparison Engine)
出库/盘点时提取同等维度特征 → 与 profile 做差异计算 → 输出 PASS / FAIL 及差异类型。
⑤
结果可视化(Visualization)
客户端展示入库照片与本次照片对比,高亮差异区域,辅助人工决策。
入库 Profile 存储的5类特征
| 特征类型 | 说明 |
| 外轮廓多边形 | 货物堆在投影面上的整体边界形状 |
| 轮廓面积 | 投影面积(cm²),经相机标定换算为实际尺寸 |
| 包络矩形 | 外接矩形长宽(cm) |
| 高度估算 | 根据覆盖面积与已知货物类型推估堆叠高度 |
| 缺口检测 | 轮廓内部是否存在明显凹陷(即缺件) |
算法阈值设计(初始建议,需实测调优)
轮廓形状相似度
(Hu Moments)
> 0.85
通过 / ≤0.85 告警
阈值说明:货物边缘轻微形变(如纸箱被压了一角)属于正常可接受范围,不触发告警。具体阈值由现场调试确定,上表为初始建议值。
YOLO 的定位:辅助增值模块
YOLO 作为辅助层接入,不替代核心比对逻辑,承担以下任务:
- 货物数量粗筛:入库检出 N 件,出库检出 ≠ N → 直接告警,跳过精细比对(减少无谓计算)
- 货物类型校验:WMS 已知货物类型,YOLO 检出类型不一致 → 告警
- 预过滤:减少精细比对的调用次数,降低误报率
若客户货物类型固定、数量不多,YOLO 模块可作为可选增值功能交付。
六、WMS 接口:HTTP POST 事件推送
TrayVision 作为接收服务端,WMS 主动推送 HTTP POST 事件到指定端口(示例:8080)。这是最轻量的集成方式,不需要双方轮询。
通信规格
| 参数 | 说明 |
| 通信模式 | WMS 主动推送(HTTP POST),本系统作为服务端 |
| 协议 | HTTP / HTTPS |
| 数据格式 | JSON |
| 认证方式 | IP 白名单 或 Bearer Token(待与客户确认) |
入库事件(INBOUND)
{
"event": "INBOUND",
"timestamp": "2026-04-12T14:30:00+08:00",
"tray_id": "TRAY-001",
"goods_id": "GD-2024001",
"location": "A-03-02",
"operator": "op001"
}
出库事件(OUTBOUND)
{
"event": "OUTBOUND",
"timestamp": "2026-04-12T15:00:00+08:00",
"tray_id": "TRAY-001",
"goods_id": "GD-2024001",
"location": "A-03-02",
"operator": "op002"
}
盘点事件(INVENTORY_CHECK)
{
"event": "INVENTORY_CHECK",
"timestamp": "2026-04-12T16:00:00+08:00",
"tray_id": "TRAY-001",
"goods_id": "GD-2024001",
"operator": "op001"
}
系统响应格式
比对成功:
{
"result": "PASS",
"tray_id": "TRAY-001",
"compare_time_ms": 1840,
"features_match": true
}
比对失败:
{
"result": "FAIL",
"tray_id": "TRAY-001",
"compare_time_ms": 1840,
"diff_type": "area_mismatch",
"diff_value": 0.12,
"threshold": 0.05
}
双向通信:WMS 如何接收比对结果?
当前设计为本系统被动接收 WMS 事件。WMS 接收系统响应的方式有三种方案,待与客户 WMS 团队确认:
A
方案 A:回调回传 URL
本系统主动 POST 比对结果到 WMS 指定的回调接口。推送式,实时性最好。
B
方案 B:WMS 主动轮询
WMS 定时查询本系统的比对结果接口。拉取式,WMS 主导节奏。
C
方案 C:共享中间件
双方读写同一数据库或消息队列(如 RabbitMQ)。中间件式,耦合度最低。
七、数据存储:照片去哪儿了
存储内容清单
| 数据类型 | 说明 | 必须 |
| 原始照片 | 每张相机的 JPEG/PNG,含 EXIF 元数据 | 必须 |
| 特征 profile | JSON,含轮廓坐标、面积、高度等结构化数据 | 必须 |
| 事件日志 | 每次操作的完整请求/响应记录(JSON Lines) | 必须 |
| 客户端操作日志 | 人工确认/告警处理的记录 | 建议 |
| YOLO 检测结果 | 检测框坐标、类别、置信度(若启用) | 可选 |
保留期限策略
| 货物状态 | 保留期限 | 说明 |
| 在库中 | 永久 | 直至货物实际出库 |
| 已出库 | 默认3个月 / 最长12个月 | 可按客户需求配置 |
| 盘点记录 | 12个月 | 含历史 profile 版本 |
目录结构
/warehouse_data/
/{customer_id}/
/profiles/
/{tray_id}/
inbound_[timestamp].jpg ← 入库原始照片
inbound_[timestamp].json ← profile
latest.json ← 当前在库 profile
/raw_images/
/{tray_id}/
/{timestamp}/
camera_01.jpg
camera_02.jpg
camera_03.jpg
/inventory_cycles/
/{tray_id}/
/{timestamp}.jpg
/{timestamp}.json
/events/
/{YYYY-MM}.jsonl ← 按月分表的 JSON Lines 日志
八、客户端:PAD 操作界面
客户端是操作人员日常使用的界面,提供两种形态:PAD 版(Android / Windows 平板)和Web 版(浏览器访问),适配拍照工位和 PC 两种使用场景。
四大核心界面
📷
拍照确认页
显示 WMS 事件信息(托盘号、货物代码);"开始拍照"按钮;拍照进度指示;操作员信息。
🔍
比对结果页
入库照片(左)| 本次照片(右)| 差异高亮标注 | ✅ 确认放行 / ❌ 人工告警按钮。
⚠️
告警历史页
所有比对失败的记录,含时间戳、操作员、货物照片、差异类型、处理状态。
📊
系统状态页
相机连接状态、存储容量使用率、最后同步时间、WMS 连接状态。
响应时间要求
| 操作 | 目标时间 |
| 拍照触发到图像就绪 | < 1 秒 |
| 图像就绪到比对结果输出 | 2–3 秒 |
| 人工确认到 WMS 回传完成 | < 1 秒 |
九、性能指标:98% 准确率怎么来的
系统的性能指标基于轮廓比对算法的理论特性和工业相机的硬件能力设定,在实际部署中需通过 POC 实测验证。
| 指标 | 目标值 | 说明 |
| 单次比对耗时 |
≤ 3 秒 |
从拍照完成到结果输出(含所有相机图像处理) |
| 误报率 |
< 2% |
货物实际无变化但触发告警(需要人工复核介入) |
| 漏报率 |
0% |
货物实际有变化但不告警(目标值,需实测验证) |
| 系统可用性 |
≥ 99.5% |
非计划停机时间,每年允许停机 < 1.8 天 |
| 数据保存完整性 |
100% |
无照片丢失、无 profile 损坏(需存储冗余设计保障) |
关于"98%准确率"的说明:PRD 中标注"准确率≥98%"指的是核验算法本身的准确率,即在实验室条件下,轮廓比对结果的正确率。实际落地时,系统误报率(<2%)由阈值决定,漏报率(0%)由相机覆盖率和轮廓特征区分度决定,需通过 POC 实测确认。
十、货物适配:不规则货物怎么办
系统支持多种货物类型,核心思路是:通过轮廓几何特征判断同一性,不识别货物语义。因此对货物"长什么样"的包容性较强,但不同货物形态需要注意不同事项。
| 货物形态 | 特征提取方式 | 注意事项 |
| 纸箱 📦 |
矩形轮廓 + 投影面积 |
堆叠后轮廓呈阶梯状,算法需兼容多层次轮廓边界 |
| 塑料圆桶 🛢️ |
圆形/椭圆形轮廓 + 直径 |
弧形边缘检测稳定,但需注意滚桶摆放方向的变化 |
| 金属桶 ⚙️ |
圆形轮廓 + 直径 + 侧高 |
表面反光可能干扰边缘检测,需配置偏振光源 |
| 化肥袋、大件不规则货物 |
不规则多边形轮廓 |
轮廓不规则,阈值需适当放宽,Hu Moments 相似度更可靠 |
关于条码/标签:货物表面的条码、标签、标记无需识别,条码另由扫码器处理(不在本系统范围内)。轮廓比对只看"物理外形",不依赖任何视觉标识。
十一、硬件选型:相机和工控机怎么配
以下是初始参考规格,需在现场实测后确定最终型号。
| 组件 | 推荐类型 | 规格要点 |
| 工业相机 |
GigE Vision 接口 |
分辨率 ≥ 500万像素,帧率 ≥ 30fps,支持 PoE 供电更佳 |
| 镜头 |
C/CS 接口定焦 |
焦距根据工作距离计算,需现场测量后选型(见待确认事项) |
| 光源 |
LED 环形 / 同轴光源 |
减少金属表面反光,确保轮廓清晰 |
| 边缘计算设备 |
x86 工控机 或 NVIDIA Jetson |
x86:OpenCV 算法;Jetson:可加速 YOLO 推理(如后续加视觉AI) |
| 网络 |
千兆以太网 |
相机到工控机(PoE),工控机到局域网 |
x86 vs Jetson 怎么选?
适合纯轮廓比对算法,无需 GPU 加速的场景。
优势:成本低,稳定可靠,Windows/Linux 均支持
适合:货物类型固定,轮廓比对作为唯一核验手段
适合同时运行轮廓比对 + YOLO 辅助检测的场景。
优势:GPU 加速,YOLO 推理速度快,功耗低
适合:货物类型多样,需要 YOLO 数量粗筛作为第一道过滤
十二、待确认事项:5个关键决策点
以下是 v0.1 PRD 中明确标注为"待确认"的事项,这些决策将影响后续开发方向和技术实现,需要尽快与客户 WMS 团队和业务方对齐。
高
WMS 接收系统回传结果的方式
A(回调)/ B(轮询)/ C(中间件)—— 影响接口开发方案
高
是否需要 YOLO 辅助模块
影响训练成本、交付范围、硬件选型(Jetson vs x86)
中
相机工作距离(影响镜头焦距选型)
需现场测量托盘到相机安装位置的距离
中
告警时人工复核的强制程度
人工确认后才能放行?还是仅记录不阻止?——影响业务流程
低
多语言支持需求
客户端是否需要除中文外的其他语言(如英语)
附:后续交付物路线图
| 交付物 | 说明 | 优先级 |
| 技术 POC | 用实际货物 + 相机测试轮廓比对算法可行性 | 🔴 高 |
| 产品规格说明书 | 固化本份 PRD,作为开发基准 | 🔴 高 |
| WMS 对接规范文档 | 与客户 WMS 团队对接接口细节 | 🟡 中 |
| UI/UX 设计稿 | 客户端界面原型(PAD 场景) | 🟡 中 |
| PPT / 产品宣传页 | 对外展示用,含产品定位、架构、优势 | 🟡 中 |
| 边缘部署方案 | 客户现场安装、标定、调试流程 | 🟢 低 |
想了解 TrayVision 实际效果?
我们已具备完整技术方案,欢迎联系我们安排技术交流或 POC 测试。