GrabBag/App/BeltTearing/Doc/检测参数与伪彩说明.md

52 lines
3.0 KiB
Markdown
Raw Permalink Normal View History

2026-08-12 18:03:28 +08:00
# 检测参数与伪彩说明
## 算法检测参数
2026-08-12 18:03:28 +08:00
以下参数直接传入 `SSG_beltTearingParam`,由算法负责检测和筛选撕裂结果。
2026-08-12 18:03:28 +08:00
| 配置/TCP字段 | XML属性 | 界面名称 | 单位 | 本程序缺省值 |
|--------------|---------|----------|------|--------------|
| `tearingMinDepth` | `TearingMinDepth` | 最小撕裂深度 | mm | 2.0 |
| `tearingMinYWidth` | `TearingMinYWidth` | 最小撕裂宽度 | mm | 2.0 |
| `tearingMaxYWidth` | `TearingMaxYWidth` | 最大撕裂宽度 | mm | 150.0 |
2026-08-12 18:03:28 +08:00
缺省值参考随算法提供的调用示例;已有XML缺少新属性时使用这些值,不改动原有参数。最小深度和最小宽度必须为有限非负数;最大宽度必须为有限正数且不小于最小宽度。参数页面和TCP写入均校验这些要求,写入后保存到当前配置文件并应用于算法。
2026-08-12 18:03:28 +08:00
算法版本调用 `sg_beltTearingVersion()` 实时获取,不作为可编辑参数或XML配置保存。参数页面将其与服务端软件版本分别显示;TCP `GET_CONFIG` / `SET_CONFIG` 的成功应答通过 `config.algorithmVersion` 返回算法版本。
相机配置只保留IP地址,配置结构和XML不再保存相机名称。旧XML中的相机名称属性会被忽略,后续保存时移除;服务器列表中的服务器名称不受影响。
## 1. 报警确认
2026-08-12 18:03:28 +08:00
执行报警复位时,系统清空报警寄存器及TCP历史最大值,并记录当时仍存在的撕裂ID。已确认ID继续显示在实时结果和ROI图像中,但在其消失前不再进入报警输出。相同ID消失后再次出现时可重新报警。
## 2. 周期伪彩
2026-08-12 18:03:28 +08:00
伪彩不使用固定Z最小值和最大值,也不提供相关配置参数。每50 mm使用一次完整的16位伪彩码范围,下一段重复使用同一颜色表:
```text
0..50 mm -> 0x0000..0xFFFF
50..100 mm -> 0x0000..0xFFFF
100..150 mm -> 0x0000..0xFFFF
```
换算公式:
```text
rangeStart = floor(z / 50.0) * 50.0
offset = z - rangeStart
code = round(offset / 50.0 * 65535.0)
rgb = pseudoColorLut[code]
```
`pseudoColorLut` 使用完整HSV色环,`0x0000`和`0xFFFF`颜色连续,方向为红->品红->蓝->青->绿->黄->红。每50 mm重复一次完整色环。生成2D图像时使用三维点的物理X/Y坐标进行等比例正投影,X/Y共用相同的毫米到像素比例;传入的800x600仅作为最大输出边界,实际图像尺寸根据物理X/Y范围动态计算。像素颜色只由对应点的Z值确定;先在扫描线内部插值,再在相邻扫描线之间按实际X/Y坐标插值,使皮带表面形成连续色带。无效点和超过正常采样间距的大缺口不插值,继续显示为黑色。
图像在符合报警过滤条件的撕裂ROI上绘制黑色外框和红色内框。
## 4. 尺寸口径
- X方向长度:`abs(roi.right - roi.left)`。
- Y方向宽度:`abs(tearWidth)`。
- Z方向深度:SDK的 `tearDepth`,过滤时取绝对值,`-1`按特殊值处理。
- TCP 1.5保留旧字段 `max`,其值与 `maxLength` 相同。