该项目的目标/步骤如下:
- 给定一组棋盘图像计算相机校准矩阵和畸变系数。
- 对原始图像应用失真校正。
- 使用颜色变换、渐变等来创建阈值二值图像。
- 应用透视变换来校正二进制图像(“鸟瞰图”)。
- 检测车道像素并拟合以找到车道边界。
- 确认检测到的线与现实和之前的线一致,即它们具有相似的曲率,水平距离在3.7m左右等。
- 确定车道的曲率和车辆相对于中心的位置。
- 将检测到的车道边界变形回原始图像。
- 输出车道边界的视觉显示以及车道曲率和车辆位置的数值估计。
校准图像的过程使用棋盘图案并从对象点的定义开始(现实世界中奶酪图案上的已知点以 xyz 坐标给出,其中 z=0 因为图案位于平面上)和图像点(在图像上找到的点,使用函数:cv2.findChessboardCorners)。对于文件夹“/camera_cal”中的每个图像,这些点存储在 numpy 数组中。通过匹配图像和目标点(使用函数 cv2.calibrateCamera),我们可以获得相机矩阵和畸变参数,这将允许我们使用“cv2.undistort”函数对图像进行去畸变。然后将这些参数保存在 pickle 文件中以备将来使用。
图。1。扭曲的棋盘图案
图 2。未扭曲的棋盘图案
管道
在这里,我总结了我的车道数据操作管道。
1.畸变校正
应用相机不失真(功能不失真(img,mtx,dist,None,mtx)),我们可以从失真图像(img):到未
失真图像: 通过使用相机矩阵(mtx)和失真系数(dis