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

47 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 检测参数与伪彩说明
## 1. 报警过滤参数
| 配置字段 | XML属性 | 单位 | 规则 |
|----------|---------|------|------|
| `tearingMinWidthY` | `TearingMinWidthY` | mm | `abs(tearWidth)` 小于该值时不报警,0表示不限制 |
| `tearingMinDepthZ` | `TearingMinDepthZ` | mm | `abs(tearDepth)` 小于该值时不报警,0表示不限制 |
SDK返回 `tearDepth == -1` 表示贯穿型或无可用深度,该结果始终通过Z深度门槛。过滤在SDK检测后、所有报警协议输出前执行,因此 TCP、标准Modbus和简化Modbus使用一致的报警集合。
参数可通过配置界面、XML配置文件或TCP 1.6 `GET_CONFIG` / `SET_CONFIG` 读取和修改。修改后写回当前配置文件;相机 IP 修改后需重启服务或使用完整的相机重连流程才能应用,`REST_DETECT` 只重新启动检测流。
## 2. 报警确认
执行报警复位时,系统清空报警寄存器及TCP历史最大值,并记录当时仍存在的撕裂ID。已确认ID继续显示在实时结果和ROI图像中,但在其消失前不再进入报警输出。相同ID消失后再次出现时可重新报警。
## 3. 周期伪彩
伪彩不使用固定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` 相同。