0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

激光雷達點云預(yù)處理介紹

麥辣雞腿堡 ? 來源:古月居 ? 作者:lovely_yoshin ? 2023-11-27 18:11 ? 次閱讀

激光雷達作為自動駕駛最常用的傳感器,經(jīng)常需要使用激光雷達來做建圖、定位和感知等任務(wù)。

而這時候使用降低點云規(guī)模的預(yù)處理方法,可以能夠去除無關(guān)區(qū)域的點以及降低點云規(guī)模。并能夠給后續(xù)的PCL點云分割帶來有效的收益。

點云預(yù)處理

1.1 指定區(qū)域獲取點云

在實際使用中,我們可以看出,雖然點云的分布范圍較廣,但大部分的點都集中的中間區(qū)域,距離越遠點云越稀疏,相對的信息量也越小。

此外還能明顯看到一些離群點,因此我們可以篩選掉一些較遠的點,只保留我們感興趣范圍內(nèi)的點。以下為保留 x 在 30m,y 在 15m,z 在 2m 范圍內(nèi)的點的效果:

template < class PointType >void removePointsOutsideRegion(boost::shared_ptr< pcl::PointCloud< PointType > >& src_cloud_ptr,                               boost::shared_ptr< pcl::PointCloud< PointType > >& dst_cloud_ptr,                               const std::pair< double, double >& x_range,                               const std::pair< double, double >& y_range,                               const std::pair< double, double >& z_range) {    int num_points = src_cloud_ptr- >points.size();    boost::shared_ptr< pcl::PointCloud< PointType > > cloud_ptr(new pcl::PointCloud< PointType >());    cloud_ptr- >points.reserve(num_points);    for (const auto& pt : src_cloud_ptr- >points) {        bool inside = (pt.x  >= x_range.first && pt.x < = x_range.second && pt.y  >= y_range.first &&                       pt.y < = y_range.second && pt.z  >= z_range.first && pt.z < = z_range.second);        if (inside) {            cloud_ptr- >points.push_back(pt);        }    }    dst_cloud_ptr = cloud_ptr;} // 或者使用CropBox來實現(xiàn)去除給定區(qū)域外的點 pcl::CropBox< pcl::PointXYZ > box_filter; box_filter.setInputCloud(cloud_ptr); box_filter.setMin(Eigen::Vector4f(keep_x_range.first, keep_y_range.first, keep_z_range.first, 1.0)); box_filter.setMax(Eigen::Vector4f(keep_x_range.second, keep_y_range.second, keep_z_range.second, 1.0)); box_filter.filter(*temp_cloud_ptr);

1.2 去除給定區(qū)域的點

在某些情況下,我們也會需要去除給定區(qū)域內(nèi)部的點,比如在自動駕駛中激光掃描的區(qū)域有一部分來自搭載激光雷達的車子本身

template < class PointType >void filterPointsWithinRegion(boost::shared_ptr< pcl::PointCloud< PointType > >& src_cloud_ptr,                              boost::shared_ptr< pcl::PointCloud< PointType > >& dst_cloud_ptr,                              const std::pair< double, double >& x_range,                              const std::pair< double, double >& y_range,                              const std::pair< double, double >& z_range,                              bool remove) {    int num_points = src_cloud_ptr- >points.size();    boost::shared_ptr< pcl::PointCloud< PointType > > cloud_ptr(new pcl::PointCloud< PointType >());    cloud_ptr- >points.reserve(num_points);    for (const auto& pt : src_cloud_ptr- >points) {        bool inside = (pt.x  >= x_range.first && pt.x < = x_range.second && pt.y  >= y_range.first &&                       pt.y < = y_range.second && pt.z  >= z_range.first && pt.z < = z_range.second);        if (inside ^ remove) {            cloud_ptr- >points.push_back(pt);        }    }    dst_cloud_ptr = cloud_ptr;}// PassThrough: 可以指定點云中的點的某個字段進行范圍限制,將其設(shè)為 true 時可以進行給定只保留給定范圍內(nèi)的點的功能 pcl::PassThrough< pcl::PointXYZ > pass_filter; bool reverse_limits = true; pass_filter.setInputCloud(filtered_cloud_ptr); pass_filter.setFilterFieldName("x"); pass_filter.setFilterLimits(-5, 5); pass_filter.getFilterLimitsNegative(reverse_limits);  // reverse the limits pass_filter.filter(*filtered_cloud_ptr); pass_filter.setFilterFieldName("y"); pass_filter.setFilterLimits(-2, 2); pass_filter.getFilterLimitsNegative(reverse_limits);  // reverse the limits pass_filter.filter(*filtered_cloud_ptr); pass_filter.setFilterFieldName("z"); pass_filter.setFilterLimits(-2, 2); pass_filter.getFilterLimitsNegative(reverse_limits);  // reverse the limits pass_filter.filter(*filtered_cloud_ptr);

1.3 點云下采樣

1.3.1 柵格化采樣

這里第一點介紹柵格化的下采樣,在 PCL 中對應(yīng)的函數(shù)為體素濾波。柵格化下采樣大致的思路是計算整體點云的中心。

通過計算每個點到中心的距離結(jié)合要求的分辨率計算柵格對應(yīng)的坐標,并入其中,最后遍歷每個包含點的柵格計算其中點的幾何中心或者取該柵格中心加入目標點云即可。

pcl::VoxelGrid< pcl::PointXYZ > voxel_filter;    voxel_filter.setLeafSize(0.1, 0.1, 0.1);    voxel_filter.setInputCloud(cloud_ptr);    voxel_filter.filter(*filtered_cloud_ptr);

1.3.2 點云所在區(qū)域密度規(guī)律濾波

該方法直接基于點云分布密度進行去噪,直觀的感受是可以根據(jù)點云中每個點所在區(qū)域判斷其是否是噪聲,一般來說噪聲點所在區(qū)域都比較稀疏。

pcl::RadiusOutlierRemoval< pcl::PointXYZ >::Ptr radius_outlier_removal(        new pcl::RadiusOutlierRemoval< pcl::PointXYZ >(true));    radius_outlier_removal- >setInputCloud(cloud_ptr);    radius_outlier_removal- >setRadiusSearch(1.0);    radius_outlier_removal- >setMinNeighborsInRadius(10);    radius_outlier_removal- >filter(*filtered_cloud_ptr);

1.3.3 點云所在區(qū)域分布規(guī)律濾波

除了根據(jù)稠密意以外還可以根據(jù)距離來篩選濾波,每個點計算其到周圍若干點的平均距離,如果這個平均距離相對于整體點云中所有點的平均距離較近,則認為其不是噪點

// PCL built-in radius removal    pcl::StatisticalOutlierRemoval&lt;pcl::PointXYZ&gt;::Ptr statistical_outlier_removal(        new pcl::StatisticalOutlierRemoval&lt;pcl::PointXYZ&gt;(true)); // set to true if we want to extract removed indices    statistical_outlier_removal-&gt;setInputCloud(cloud_ptr);    statistical_outlier_removal-&gt;setMeanK(20);    statistical_outlier_removal-&gt;setStddevMulThresh(2.0);    statistical_outlier_removal-&gt;filter(*filtered_cloud_ptr);

1.3.4 根據(jù)點云是否可以被穩(wěn)定觀察到篩選

LOAM 中對點云中的點是否能形成可靠特征的一個判斷標準是它能否被穩(wěn)定觀察到。

LOAM 中著重提了這兩種情況的點是不穩(wěn)定的:

  • 特征成平面和掃描線近乎平行
  • 特征掃描到的其中一端被另一個平面擋住,這部分的點也不穩(wěn)定
template < typename PointType >void filter_occuluded_points(boost::s
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2541

    文章

    49961

    瀏覽量

    747507
  • 激光雷達
    +關(guān)注

    關(guān)注

    967

    文章

    3863

    瀏覽量

    188746
  • 自動駕駛
    +關(guān)注

    關(guān)注

    781

    文章

    13449

    瀏覽量

    165263
  • 點云
    +關(guān)注

    關(guān)注

    0

    文章

    58

    瀏覽量

    3763
收藏 人收藏

    評論

    相關(guān)推薦

    激光雷達是自動駕駛不可或缺的傳感器

    看到這種低成本的激光雷達,從研發(fā)、樣品到商用,可能會比原來預(yù)想的周期更快。因為不是一家激光雷達公司在努力,而是整個產(chǎn)業(yè)鏈都在努力。是在同一空間倡導系下表達目標空間分布和目標表面特性
    發(fā)表于 09-08 17:24

    激光雷達分類以及應(yīng)用

    激光雷達實際上是一種工作在光學波段(特殊波段)的雷達,它的優(yōu)點非常明顯:1、具有極高的分辨率:激光雷達工作于光學波段,頻率比微波高2~3個數(shù)量級以上,因此,與微波雷達相比,
    發(fā)表于 09-19 15:51

    常見激光雷達種類

    單線激光雷達特點:結(jié)構(gòu)簡單、掃描速度快、分辨率高、可靠性高、成本低。單線激光雷達實際上就是一個高同頻激光脈沖掃描儀,加上一個一維旋轉(zhuǎn)掃描。單線激光雷達雖然原理簡單但是可以有效、高頻的測
    發(fā)表于 09-25 11:30

    激光雷達面臨的機遇與挑戰(zhàn)

    機遇激光雷達在智能機器生態(tài)系統(tǒng)中有很多機遇。與使用二維圖像相比,能夠更容易的被計算機使用,用于構(gòu)建物理環(huán)境的三維形象——二維圖像是人腦最容易理解的數(shù)據(jù),而對于計算機來說,
    發(fā)表于 09-26 14:30

    固態(tài)激光雷達

    `我們已經(jīng)對單線激光雷達司空見慣,其旋轉(zhuǎn)線掃的測量方式導致造成壽命問題和價格居高不下。 因此,北醒研發(fā)了CE30,它是一款具有大視場角的固態(tài)激光雷達。它可同時輸出132°水平視場、9度垂直視場范圍內(nèi)
    發(fā)表于 01-04 10:18

    激光雷達

    `我們已經(jīng)對單線激光雷達司空見慣,其旋轉(zhuǎn)線掃的測量方式導致造成壽命問題和價格居高不下。 因此,北醒研發(fā)了CE30,它是一款具有大視場角的固態(tài)激光雷達。它可同時輸出132°水平視場、9度垂直視場范圍內(nèi)
    發(fā)表于 01-11 09:21

    固態(tài)設(shè)計激光雷達

    ``一年一度的國際消費類電子產(chǎn)品展覽會(CES)已經(jīng)完滿收官,短短的幾天時間里,我們見識了Intel無人飛機燈光秀、百度無人車、移動行李箱等眾多“黑科技”。而北醒不僅展示了性能卓越的固態(tài)激光雷達,在
    發(fā)表于 01-25 09:41

    激光雷達除了可以激光測距外,還可以怎么應(yīng)用?

    簡單的3D雷達,獲取三維數(shù)據(jù)呢?目前市面上主流的有2種方式:1、采用線狀激光器,將原先的一個變成一條線型光;2、使用一個2D激光雷達掃描,同時在另一個軸進行旋轉(zhuǎn),從而掃描出3D信息;
    發(fā)表于 05-11 15:33

    激光雷達知多少:從技術(shù)上講講未來前景

    激光雷達產(chǎn)業(yè)迅速擴大。 地基激光雷達 地基激光雷達可以獲取林區(qū)的3D信息,利用
    發(fā)表于 07-14 07:56

    激光雷達

    想了解行業(yè)國內(nèi)做固態(tài)激光雷達的廠家,激光雷達里面是怎么樣的啊
    發(fā)表于 01-17 15:29

    激光雷達數(shù)據(jù)分割算法的嵌入式平臺上的部署實現(xiàn)

    點擊上方“AI算法修煉營”,選擇“星標”公眾號精選作品,第一時間送達這篇文章是激光雷達數(shù)據(jù)分割算法的嵌入式平臺上的部署實現(xiàn)。主要的創(chuàng)新有兩
    發(fā)表于 12-21 08:28

    詳解激光雷達數(shù)據(jù)的處理過程

    隨著激光雷達的上車數(shù)量的不斷攀升,如何用好激光雷達成為了重中之重,而用好激光雷達的關(guān)鍵之一就在于處理好點
    的頭像 發(fā)表于 03-14 09:36 ?3443次閱讀

    激光雷達處理中遇到的問題及對策

    在與激光雷達公司和下游主機廠或者解決方案商的專家交流的過程中,筆者發(fā)現(xiàn),當前激光處理過程中,感知算法人員會遇到很多問題。
    的頭像 發(fā)表于 03-14 17:50 ?2245次閱讀

    自動駕駛之激光雷達預(yù)處理/特征提取

    0. 簡介 激光雷達作為自動駕駛最常用的傳感器,經(jīng)常需要使用激光雷達來做建圖、定位和感知等任務(wù)。而這時候使用降低點規(guī)模的預(yù)處理方法,可以能夠去除無關(guān)區(qū)域的
    發(fā)表于 06-06 10:07 ?2次下載
    自動駕駛之<b class='flag-5'>激光雷達</b><b class='flag-5'>預(yù)處理</b>/特征提取

    激光雷達數(shù)據(jù)包含哪些信息

    )、環(huán)境監(jiān)測、城市規(guī)劃等領(lǐng)域。激光雷達數(shù)據(jù)是激光雷達系統(tǒng)收集到的一系列三維空間坐標點,包含了豐富的空間信息。本文將介紹
    的頭像 發(fā)表于 08-29 17:18 ?263次閱讀