Skip to content

feat(lane_detection): 视频模式快速搜索优化#7374

Open
ultra223 wants to merge 23 commits into
OpenHUTB:mainfrom
ultra223:homework/ultra223
Open

feat(lane_detection): 视频模式快速搜索优化#7374
ultra223 wants to merge 23 commits into
OpenHUTB:mainfrom
ultra223:homework/ultra223

Conversation

@ultra223

Copy link
Copy Markdown
Contributor

概述

视频模式下,首帧使用滑动窗口搜索,后续帧在上一帧多项式曲线 ±margin 范围内搜索车道像素(带搜索),大幅减少计算量。检测丢失时自动回退到滑动窗口,连续回退超限时重新校准。

变更内容

新增函数

  • lane_advanced.pyextract_lane_pixels_fast()
    • 在上一帧多项式曲线 ±50px 范围内搜索车道像素
    • 有效像素 < 30 时返回 None,触发回退
    • 纯向量化 NumPy 实现,无循环开销

修改文件

文件 变更
lane_advanced.py 新增 extract_lane_pixels_fast();修复 process_frame 重复定义 bug
lane_video.py 重写:集成快速搜索 + 回退 + 连续回退校准;新增耗时统计
config.py 新增 use_fast_searchfast_search_marginfast_search_min_pixelsfast_max_consecutive_fallback
main.py 新增 --no-fast 参数
README.md 新增步骤7章节,进度 7/10

搜索策略

搜索方式 说明
第 1 帧 滑动窗口 直方图定位基点,9 窗口逐层搜索
第 2+ 帧 带搜索 上一帧曲线 ±50px 范围搜索
搜索失败 回退滑动窗口 有效像素 < 30
连续回退 ≥ 5 次 重新校准 强制滑动窗口重新定位

运行方式

# 默认启用快速搜索
python main.py --mode video --video path/to/video.mp4

# 关闭快速搜索
python main.py --mode video --video path/to/video.mp4 --no-fast

测试结果

ultra223 and others added 23 commits May 9, 2026 18:32
按仓库约定合并为单一 main.py 入口,删除多余脚本与 homework 草稿目录;
在 docs/lane_detection 中展示步骤效果图并更新 mkdocs 导航。

Co-authored-by: Cursor <cursoragent@cursor.com>
新增 lane_advanced.py,实现基于鸟瞰图的高级车道线检测:
- 透视变换(IPM)将前视图转为鸟瞰图
- HSV + Sobel 梯度联合二值化提取车道线像素
- 直方图定位车道线基点 + 滑动窗口搜索像素
- 二次多项式拟合弯道曲线(替代线性回归)
- 反透视变换将检测结果叠加回原图
新增 lane_video.py,支持视频文件输入与逐帧车道线检测:
- 重构 lane_advanced.py,抽取 process_frame() 供图片/视频共用
- 视频模式逐帧执行高级流水线
- 多项式系数 EMA 平滑,消除帧间抖动
- 支持 --alpha 参数控制平滑强度
- 实时显示 + 输出视频保存
基于二次多项式拟合系数,新增车道曲率半径与车辆偏移计算功能:
- 曲率半径公式 R = (1 + (2Ay+B)²)^(3/2) / |2A|,像素坐标转米制
- 车辆相对车道中心的横向偏移,判断偏左/偏右/居中
- draw_metrics_overlay() 在结果图左上角叠加半透明信息面板
- 颜色编码:绿色=安全,黄色=弯道,红色=偏移过大
- 新增 --no-metrics 参数控制信息显示/隐藏
- 视频模式下每帧实时显示曲率与偏移数据
基于曲率半径和车辆偏移量,新增三级驾驶风险预警:
- lane_warning.py:compute_warning_level() 判定安全/注意/危险
- 车道区域填充色随预警级别动态变化(绿/黄/红)
- 半透明信息面板置顶显示 STATUS 标签
- 预警条件:偏移 > 0.40m 或 曲率 < 200m → 危险
          偏移 > 0.15m 或 曲率 < 500m → 注意
          车道线丢失 → 危险
- 新增 --no-warning 参数控制预警开关
新增快速搜索模式(band search),视频模式下首帧用滑动窗口,
后续帧在上一帧多项式曲线 ±50px 范围内搜索车道像素:
- lane_advanced.py: 新增 extract_lane_pixels_fast() 带搜索函数
- lane_video.py: 集成快速搜索 + 丢失回退 + 连续回退校准机制
- 修复 process_frame 重复定义 bug
- 视觉指示:视频左下角显示 BAND/SW 搜索状态
- --no-fast 参数关闭快速搜索,回退纯滑动窗口
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant