一个面向智能驾驶场景的 OpenCV 车道感知项目。该项目将传统“画两条线”的入门代码,升级为计算几何驱动的车道状态估计系统。
- 计算几何核心:齐次直线表示、线交点/距离、消失点估计。
- 相机标定链路:支持棋盘格标定、去畸变、相机位姿参数化。
- 标定质量报告:自动生成重投影误差分布、坏帧剔除结果、可视化图。
- 真实物理尺度:基于内参 + 相机安装高度/俯仰角投影到地平面,输出米制车道宽度/偏移/曲率。
- 曲线车道与变道:二次曲线模型 + 时序状态机(FSM) + 置信度评分。
- 失效检测与降级:夜晚/雨天/逆光场景识别,异常时自动降级并保持输出连续。
- 工程化能力:模块化架构、CLI、可视化看板、自动评估脚本、单元测试。
autodrive_geometry_lane/
src/autodrive_lane/
config.py
calibration/
camera_model.py
quality_report.py
geometry/
primitives.py
homography.py
metrics.py
perception/
feature_scene.py
lane_modeling.py
temporal_smoother.py
lane_change_fsm.py
overlay_renderer.py
lane_pipeline.py
visualization.py
tools/
calibrate_camera.py
synthetic_benchmark.py
video_metrics.py
tests/
test_geometry.py
test_advanced_features.py
run_demo.py
- 颜色-梯度联合预处理,提取稳定车道候选。
- 动态 ROI(可由消失点自适应更新)限制搜索区域。
- 概率霍夫提取线段,按几何约束分左右车道。
- 霍夫线段做鲁棒拟合作为几何先验,估计消失点并动态调整 ROI。
- 在 ROI 二值图中拟合左右车道二次曲线
$x(y)=ay^2+by+c$ 。 - 相机去畸变后,使用相机模型将像素点投影到地平面坐标系。
- 计算真实物理指标:
- 车道宽度(像素 + 米)
- 曲率半径(米)
- 横向偏移(米)
- 使用变道状态机(FSM)和置信度评分识别 prepare/changing/recovering 过程。
- 在夜晚/雨天/逆光触发降级策略,复用时序状态保证输出连续。
pip install -r requirements.txtpython run_demo.py --show默认会读取你现有工程中的样例视频并输出结果视频到 outputs/demo_output.mp4。
python tools/calibrate_camera.py --images "data/calibration/*.jpg" --cols 9 --rows 6 --square-size 0.025会输出:
outputs/camera_calibration.json(标定参数)outputs/calibration_quality_report.json(误差分布与坏帧剔除)outputs/calibration_quality.png(自动可视化图)
python run_demo.py --show --calibration outputs/camera_calibration.json --camera-height 1.45 --pitch-deg 3.0python tools/video_metrics.py --max-frames 500 --calibration outputs/camera_calibration.json输出 JSON 统计报告到 outputs/metrics.json。
python tools/synthetic_benchmark.pypython -m unittest discover -s tests -p "test_*.py"