- 添加完整的项目文档(README.md, design.md, CLAUDE.md) - 实现核心检测算法:ROI管理、峰值检测、帧间稳定 - 支持实时摄像头检测和视频文件处理 - 包含图像预处理:去雾、几何校正、图像增强 - 提供多种输出格式:JSON、CSV、矩阵、文本 - 实现双阈值检测算法适应雾天环境 - 添加ROI标定工具和配置文件管理 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
159 lines
5.6 KiB
Markdown
159 lines
5.6 KiB
Markdown
|
||
---
|
||
|
||
## 一、场景假设与需求重述
|
||
- **灯阵布局**:室外,多排布置,每排 6 盏灯(等距摆放)
|
||
- **监控目标**:前三排共 **18盏** 灯的亮灭状态
|
||
- **摄像头部署**:灯阵正前方稍许偏斜
|
||
- **雾天问题**:光晕扩散,后排光晕进入前排 ROI,轮廓模糊
|
||
- **目标**:雾天也能稳定检测前三排亮/灭
|
||
|
||
---
|
||
|
||
## 二、ROI布置示意(概念图)
|
||
|
||
下面是一个矩阵式 ROI 布置示意(不按真实比例,仅示例布局思路):
|
||
|
||
```
|
||
+--------------------------------------------------+
|
||
| |
|
||
| [R1C1] [R1C2] [R1C3] [R1C4] [R1C5] [R1C6] | ← 第一排ROI
|
||
| |
|
||
| [R2C1] [R2C2] [R2C3] [R2C4] [R2C5] [R2C6] | ← 第二排ROI
|
||
| |
|
||
| [R3C1] [R3C2] [R3C3] [R3C4] [R3C5] [R3C6] | ← 第三排ROI
|
||
| |
|
||
+--------------------------------------------------+
|
||
```
|
||
|
||
**说明:**
|
||
- ROI = Region of Interest(兴趣区域),即每个灯的专用检测窗口
|
||
- ROI中心对准灯泡中心位置
|
||
- ROI范围比灯直径稍大(可覆盖轻微光晕)
|
||
- ROI之间要预留黑边区间(相邻最小亮区距离),减少光晕互相污染的几率
|
||
- 这些 ROI 坐标在**晴天标定一次即可,固定保存**
|
||
|
||
---
|
||
|
||
## 三、落地技术方案(无代码详细步骤)
|
||
|
||
我将方案分为**硬件部署**、**环境标定**、**算法执行流程**、**雾天适配增强**、**长期维护建议**五个部分。
|
||
|
||
---
|
||
|
||
### 1. 硬件部署
|
||
1. **摄像头**
|
||
- 分辨率 ≥1080p,低照度高清(星光级)
|
||
- 固定安装,不摇动
|
||
- 镜头焦距选择能完整拍下前三排,并保留背景缓冲区
|
||
- 带**偏振滤光片**(减少雾散射杂光)
|
||
|
||
2. **角度控制**
|
||
- 尽量正对灯阵,倾斜控制在 ±10° 内
|
||
- 已存在倾斜需用**透视校正**(software)补偿
|
||
|
||
3. **照明波段**(可选增强)
|
||
- 如果可以更换灯具,考虑:窄波段 LED + 同波段滤光镜(比如850nm近红外)
|
||
- 普通可见光场景也可工作,只是雾天性能略受限
|
||
|
||
---
|
||
|
||
### 2. 环境标定(一次性)
|
||
1. 选择能见度良好的白天或傍晚进行
|
||
2. 手动或软件定位 18 盏灯中心坐标
|
||
3. 为每个灯定义:
|
||
- ROI矩形位置
|
||
- ROI中心区域(核心区,用于抑制光晕干扰)
|
||
- 边缘缓冲区(保证相邻光晕不影响ROI中心判定)
|
||
4. 保存 ROI 参数(固定使用)
|
||
|
||
---
|
||
|
||
### 3. 算法执行流程(实时检测)
|
||
|
||
#### 3.1 整体流程框架图
|
||
```
|
||
[视频帧读取]
|
||
↓
|
||
[透视/几何校正]
|
||
↓
|
||
[去雾增强(可选)]
|
||
↓
|
||
[逐ROI处理] ← ROI列表(18个灯)
|
||
↓
|
||
灰度化 -> 高斯模糊 -> 核心区峰值提取
|
||
↓
|
||
[亮度+面积双阈值判断]
|
||
↓
|
||
[帧间稳定滤波]
|
||
↓
|
||
[输出灯亮灭状态]
|
||
```
|
||
|
||
#### 3.2 关键技术点
|
||
- **透视/几何校正**
|
||
把倾斜拍摄的画面校正成灯阵规则矩形,方便ROI直接定位
|
||
|
||
- **去雾增强(可选开关)**
|
||
- CLAHE(提升局部对比度)
|
||
- Gamma校正(如γ=0.7提亮暗部)
|
||
- 频域高通(抑制低频光晕)
|
||
|
||
- **核心亮度判断**
|
||
对 ROI 中央小圆区域取**最大亮度值**和**平均亮度值**,与阈值比较
|
||
- 阈值1(峰值亮度阈值)
|
||
- 阈值2(亮度占比/面积阈值)
|
||
|
||
- **面积限制**
|
||
灯亮:亮度峰高且亮区面积在合理范围
|
||
灯灭:亮度峰低或亮区过大(可能是光晕污染)
|
||
|
||
- **帧间稳定**
|
||
连续 3~5 帧一致才更新最终状态,消除瞬时雾波动的干扰
|
||
|
||
---
|
||
|
||
### 4. 雾天适配增强
|
||
- **物理增强**:偏振镜,波段匹配滤光片
|
||
- **亮度阈值自适应**:根据摄像头当前画面平均亮度,动态调整峰值亮度阈值
|
||
- **算法抗干扰**:
|
||
- 如果后排光晕进入前排 ROI,通常中心亮度分布较平缓 → “尖峰检测”可区分
|
||
- 记录 ROI 中心亮度与边缘亮度的差值(Δ亮度),Δ大则是自亮,Δ小可能是污染
|
||
|
||
---
|
||
|
||
### 5. 长期维护建议
|
||
1. **定期标定复查**:摄像头安装略微变化或环境光大改动时(建议每季度一次)
|
||
2. **天气多样数据积累**:保存雾天与晴天检测样本
|
||
3. **AI升级准备**:当数据积累到几百小时,可引入轻量化 CNN/YOLO 模型训练,进一步增强鲁棒性
|
||
|
||
---
|
||
|
||
## 四、方案优势
|
||
- **固定 ROI** + **核心区域峰值法** 能显著减少雾天光晕串扰
|
||
- 对硬件和算法要求适中,能快速落地
|
||
- 保留了可升级到 AI 的接口
|
||
- 即使非常浓的雾,前三排 ROI 中心仍可检测出亮点变化
|
||
|
||
---
|
||
|
||
## 五、你可以直接交给工程团队的落地说明
|
||
- 硬件:1080p星光级相机,固定安装,镜头视野包含前三排,配偏振镜
|
||
- 标定:晴天标 18 盏灯的 ROI 和核心区坐标
|
||
- 图像处理链:
|
||
1. 几何校正
|
||
2. ROI 裁剪
|
||
3. 灰度化 + 高斯滤波
|
||
4. 核心区峰值提取 + 阈值判断
|
||
5. 面积过滤(防串扰)
|
||
6. 帧间稳定(滑动窗口)
|
||
- 可选:去雾增强和阈值自适应
|
||
- 输出:每秒更新一次 18 盏灯的亮灭表
|
||
|
||
---
|
||
|
||
✅ **结论**:
|
||
按照上面图示的 ROI 布置 + 核心亮度法,即便是在类似你给的图片场景(雾+夜晚)下,也可以在大多数天气情况下稳健识别前三排灯的亮灭,而且这个方案完全可落地且不依赖高算力。
|
||
|
||
---
|