Udacity传感器融合笔记(三)Camera与lidar数据融合-(上)

之前两篇文章记录了lidar感知相关笔记,这篇记录视觉感知以及视觉数据和lidar数据的简单融合。直接上干货。文章主要记录两部分:
1.lidar数据的处理
2.camera与lidar数据的融合

关于视觉部分的基础知识这里不再记录,主要包括图像特征点的提取,关键点、描述子、角点的定义。图像特征点的匹配等等。

1.Lidar点云处理
对于第一部分,要达到的效果就是对lidar数据的过滤处理,同时离本车近的数据点我们红红色表示,离本车远的数据点,我们用绿色表示,中间依次过渡。先放结果图:
在这里插入图片描述图中一个蓝色线格代表2米的距离。
接下来,我们要对lidar点云进行过滤,将属于障碍物的点云保留,数据路面的点云滤除。先放结果:
在这里插入图片描述代码实现部分:
代码部分较为简单,整体思路大致可分为几个部分,
第一部分为创建空白图像,设置图像大小、分辨率;
第二部分为读取lidar数据并将其画在刚刚创建的图线上,这部分涉及世界坐标到图像坐标系的一个转换;
第三部分是将不同距离的lidar点标记为不同的颜色,从近及远用红色到绿色逐渐过渡。
第四部分就是加入蓝色的表示距离的格子线。

(1)创建空白图像

    cv::Size worldSize(10.0, 20.0); // width and height of sensor field in m
    cv::Size imageSize(1000, 2000); // corresponding top view image in pixel
    float maxVal = worldSize.height;
    // create topview image
    cv::Mat topviewImg(imageSize, CV_8UC3, cv::Scalar(0, 0, 0));

(2)加载lidar数据

   for (auto it = lidarPoints.begin(); it != lidarPoints.end(); ++it)
    {
        float xw = (*it).x; // world position in m with x facing forward from sensor
        float yw = (*it).y; // world position in m with y facing left from sensor

        int y = (-xw * imageSize.height / worldSize.height) + imageSize.height;
        int x = (-yw * imageSize.height / worldSize.height) + imageSize.width / 2;

(3)标记为不同颜色,去除路面点

double zw = (*it).z;
        double minZ = -1.42;//去除路面点的阈值
        if(zw > minZ) {
            double val = (*it).x;
            int red = min(255, (int)(255 * abs((val-maxVal) / maxVal)));//red和green两个值的公式可自行定,只要满足近处到远处由红变绿即可
            int green = min(255, (int)(255 * (1 - abs((val - maxVal) / maxVal))));
            
            cv::circle(topviewImg, cv::Point(x,y), 5, cv::Scalar(0, green, red), -1);//将点云画在图像上
        }

(4)画距离标线

float lineSpacing = 2.0; // 每2米一条线
    int nMarkers = floor(worldSize.height / lineSpacing);
    for (size_t i = 0; i < nMarkers; ++i)
    {
        int y = (-(i * lineSpacing) * imageSize.height / worldSize.height) + imageSize.height;
        cv::line(topviewImg, cv::Point(0, y), cv::Point(imageSize.width, y), cv::Scalar(255, 0, 0));//画线
    }

接下来会写camera与lidar数据的融合的相关内容,也是此片博客的下半文。有什么问题欢迎大家留言讨论。也可关注小博主,私聊。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Udacity自动驾驶数据集是Udacity为其自动驾驶算法比赛专门准备的数据集。该数据集对连续视频图片进行了仔细的标注,主要包含了汽车、行人、大型车辆等类别。数据集的大小为1.5G,共有9420张图像。标注格式采用了2D坐标,包括了Car、Truck、Pedestrian类。如果你需要使用该数据集,你可以通过下载dataset1来获取数据。同时,你可以使用数据格式转化工具将数据转化为voc格式,以便更好地进行处理和分析。\[2\]\[3\] #### 引用[.reference_title] - *1* [Udacity CH2 数据集解析小技巧](https://blog.csdn.net/weixin_44337149/article/details/118541085)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Udacity Self-Driving 目标检测数据集简介与使用](https://blog.csdn.net/Jesse_Mx/article/details/72599220)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Udacity Self-Driving自动驾驶目标检测数据集使用指南](https://blog.csdn.net/u010801994/article/details/85092375)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值