1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        視覺激光雷達信息融合與聯(lián)合標(biāo)定

        共 5206字,需瀏覽 11分鐘

         ·

        2021-06-16 10:22

        點擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時間送達

        本文轉(zhuǎn)自|新機器視覺
        編者按

        最近在為車輛添加障礙物檢測模塊,障礙物檢測可以使用激光雷達進行物體聚類,但是我們使用的是16線的velodyne,線數(shù)還是有些稀疏,對于較遠(yuǎn)的物體過于稀疏的線數(shù)聚類效果并不好,因此考慮使用視覺進行目標(biāo)檢測,然后投影到3D點云里面,獲取障礙物位置,同時視覺還可以給出障礙物類別信息。


        使用視覺進行目標(biāo)檢測,將檢測結(jié)果2D bounding box坐標(biāo)信息投影到點云里面獲得3D bounding boxx坐標(biāo),這里面需要將攝像頭和激光雷達進行聯(lián)合標(biāo)定,即獲取二者坐標(biāo)系的空間轉(zhuǎn)換關(guān)系。


        聯(lián)合標(biāo)定轉(zhuǎn)換關(guān)系

        聯(lián)合標(biāo)定的作用就是建立點云的point和圖像pixel之間的對應(yīng)關(guān)系,

        需要獲取相機與激光雷達外參,將點云3維坐標(biāo)系下的點投影到相機3維坐標(biāo)系下。

        還需要通過相機標(biāo)定獲得相機內(nèi)參,這個是把相機3維坐標(biāo)系下的點投影到成像平面。具體如下所示:

        上圖顯示的就是聯(lián)合標(biāo)定得到的4×4轉(zhuǎn)換矩陣的作用,將我們的3D點云轉(zhuǎn)換到相機坐標(biāo)系下面

        這幅圖顯示了相機坐標(biāo)系和成像坐標(biāo)系的關(guān)系,相機標(biāo)定會得到相機內(nèi)參矩陣和畸變系數(shù),畸變系數(shù)可以消除相機凸透鏡的畸變效應(yīng),相機內(nèi)參的信息就可以想相機坐標(biāo)下的3維點投影到2維的像素平面。相機標(biāo)定的具體原理可以參考

        Lstyle:【機器視覺】張氏法相機標(biāo)定 zhuanlan.zhihu.com


        三、相機標(biāo)定

        需要一個標(biāo)定板,要硬質(zhì)板或者泡沫的標(biāo)定板,因為標(biāo)定板的平面要保證是平的。標(biāo)定板的文件可以到opencv官網(wǎng)下載。

        首先做相機標(biāo)定,相機標(biāo)定模塊在detection/calibration/camera_calibration

        編譯

        cd your_rosworkspace_path/
        catkin_make -DCATKIN_BLACKLIST_PACKAGES=ndt_mapping;static_map;ndt_localization

        這里我們先不編譯ndt_mapping;static_map;ndt_localization這三個軟件包

        如果出錯,可以先編譯消息文件,再編譯全部文件:

        catkin_make -DCATKIN_WHITELIST_PACKAGES=smartcar_msgs;yunle_msgs;smartcar_config_msgs
        catkin_make -DCATKIN_WHITELIST_PACKAGES=“”

        然后要修改detection/calibration/camera_calibration/nodes文件夾下面python文件的可執(zhí)行權(quán)限:

        sudo chmod a+x your_path/detection/calibration/camera_calibration/.

        啟動攝像頭驅(qū)動節(jié)點

        roslaunch cv_camera cv_camera_driver.launch

        這里注意你自己的攝像頭video_id,使用如下命令查看

        ls /dev/video*

        然后根據(jù)需要修改your_path/driver/cv_camera/launch/cv_camera_driver.launch里面的

        <param name="device_id" type="int" value="1" />

        新開一個終端,執(zhí)行

        rosrun calibration cameracalibrator.py --square 0.13 --size 8x6 image:=/cv_camera/image_raw

        然后就可以進行標(biāo)定了,彈出的界面如下所示:

        需要做的就是移動標(biāo)定版,讓右上角的四個條都變綠(我這里綠的是已經(jīng)調(diào)好了,未調(diào)整是偏黃色)

        x代表左右移動,y代表上下移動,size代表遠(yuǎn)近移動,skew代表傾斜側(cè)角,可以上下傾,也可以左右傾。

        只有四個尺度的信息都滿足要求之后,右側(cè)的calibration圖標(biāo)才會顯示出來,這時候代表可以計算標(biāo)定結(jié)果了,點擊calibration,然后save,標(biāo)定結(jié)果會保存在home文件夾下面。

        四、聯(lián)合標(biāo)定

        聯(lián)合標(biāo)定使用的是autoware的CalibrationTookit模塊,代碼在detection/calibration/calibration_camera_lidar文件夾下面

        編譯好代碼之后,首先要啟動攝像頭和激光雷達的驅(qū)動節(jié)點

        roslaunch cv_camera cv_camera_driver.launch

        新終端

        roslaunch velodyne_pointcloud VLP16_points.launch

        然后驅(qū)動聯(lián)合標(biāo)定節(jié)點

        roslaunch calibration_camera_lidar camera_lidar_calib.launch

        啟動之后可以看到UI界面,具體操作指南,可以參考文檔:detection/calibration/calibration_camera_lidar/CalibrationToolkit_Manual.pdf 的2.3節(jié)

        也可以參考鏈接

        無人駕駛汽車系統(tǒng)入門(二十二)--使用Autoware實踐激光雷達與攝像機組合標(biāo)定 - AdamShan的博客 - CSDN博客 blog.csdn.net

        如何使用這個模塊上面的鏈接已經(jīng)說的很明白,這里簡單說一下:

        • 首先左上角load之前標(biāo)定的相機內(nèi)參文件,導(dǎo)入相機內(nèi)參

        • 調(diào)整點云的視角(操作方法參考上面鏈接),然后確保圖像和點云都可以看到完整的白標(biāo)定板,點擊右上角的grab捕獲單幀圖片和點云

        • 在捕獲單幀的點云上面,選取圖片中對應(yīng)標(biāo)定板的位置,選取的是圓圈內(nèi)的所有點,所包含的信息不僅僅只有點,還有平面法相量,標(biāo)定的時候一定要確保法相量與平面是垂直的,因為開始我沒有注意這個,結(jié)果后面驗證的時候投影點在圖片上顯示不出,根本沒有投影在圖像范圍內(nèi)。

        標(biāo)定好之后,在右上角有一個project,可以查看標(biāo)定的效果,一般來將,可以看到如下效果:

        左下角圖片上的紅線就是右下角點云紅線投影到圖片上的位置,下面這幅圖片換一個角度,點同樣投影上去,而且相對位置在點云和圖片里面基本一致:

        這樣的效果基本就是可以了,點擊save,會將輸出的外參文件保存在home文件夾下面。


        五、視覺與點云信息融合

        有了聯(lián)合標(biāo)定的外參文件,我們就可以進行信息融合了。

        信息融合主要有兩個模塊:點云到圖像 、 圖像到點云

        5.1 image2points

        這部分代碼在your_path/deteection/camera_point_fusion/packages/joint_pixel_pointcloud這個pkg下面

        這部分代碼實現(xiàn)的功能是建立將velodyne-16的點云投影到640×480的圖像上面,如果點云投影的二維點在圖像640×480范圍內(nèi),那么就把這個三維激光雷達點的位置記下來,同時匹配圖像上對應(yīng)像素的顏色,變成pcl::XYZRGB點返回,并顯示出來。

        除此之外,這個模塊還可以訂閱目標(biāo)檢測信息,攝像頭獲取圖像,經(jīng)過目標(biāo)檢測模塊之后,得到2維bounding box坐標(biāo),利用點云和圖像像素的對應(yīng)關(guān)系,得到3維bounding box信息,并在RVIZ中顯示出來。

        編譯好代碼之后,運行:

        roslaunch joint_pixel_pointcloud joint_pixel_pointcloud.launch

        同樣,需要先運行攝像頭驅(qū)動節(jié)點和velodyne驅(qū)動節(jié)點,還有目標(biāo)檢測節(jié)點,不過目標(biāo)檢測模塊因為某些原因不能公開到github,你可以使用自己的目標(biāo)檢測模塊,作為ROS節(jié)點添加到工作空間即可。

        代碼運行效果如下所示:

        這個就是圖像像素所對應(yīng)的點云,可以看到點云已經(jīng)被加上了黑白的顏色,點云周邊有一些比較淡的顏色,下面這幅圖加深了顏色,同時顯示出圖像對應(yīng)的點云在整個點云幀的位置:

        下面是目標(biāo)檢測的效果:

        可以看到,圖像上檢測出來的物體,基本都在3D場景下對應(yīng)出來了,其中,不同的顏色代表不同的物體類別。

        不過,因為這個目標(biāo)檢測模型是針對于自動駕駛場景的,分類對象都是car,pedestrian,info signs等,而因為實驗條件的原因我還沒有來得及拿出去測試代碼效果,就先在房間測試了一下,所以可以看到目標(biāo)檢測的框是有些沒意義的東西,不過不影響驗證信息融合效果。

        這個節(jié)點可以便于我們進行障礙物檢測,因為視覺信息進行障礙物檢測是要優(yōu)于低線數(shù)激光雷達聚類的,但是視覺信息識別物體雖然準(zhǔn),卻沒有距離信息,激光雷達可以提供距離信息,因此,視覺和激光雷達二者結(jié)合,就可以獲得障礙物的距離、類別以及位置了

        5.2 points2image

        這個是把點云投影到圖像上,具體運行基本同理我就不說了。

        代碼的具體效果如下所示:

        可以看到,點云基本是和圖像是匹配的。

        這個節(jié)點的作用是可以幫助我們進行紅綠燈識別或者其他info_sign識別。因為進行紅綠燈檢測最好是可以獲取紅綠燈在圖像上的位置,即ROI,然后再進行識別會容易很多。我們可以在事先建立好的場景語義地圖中,加入紅綠燈的位置,這樣車輛到達該位置的時候就可以立刻找到紅綠燈在圖像上的ROI,這樣會優(yōu)化info sign的檢測。具體如下所示:

        六、總結(jié)

        本文主要介紹了關(guān)于視覺和激光雷達進行信息融合相關(guān)內(nèi)容,包括相機標(biāo)定,攝像頭與激光雷達聯(lián)合標(biāo)定,信息融合節(jié)點等等

        利用激光雷達和視覺信息融合,我們可以結(jié)合二者的優(yōu)點優(yōu)化障礙物檢測或交通標(biāo)志的識別,以及優(yōu)化其他相關(guān)任務(wù)等等。

         End 


        下載1:OpenCV-Contrib擴展模塊中文版教程
        在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實戰(zhàn)項目52講
        小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。

        下載3:OpenCV實戰(zhàn)項目20講
        小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進階。

        交流群


        歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細(xì)分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


        瀏覽 63
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            学生妹操逼视频 | 日韩久久久久久久久 | 五十路在线| 91丰满的岳 毛片 | 男人天堂黄片 | www.性爱| 天天日日综合 | 北条麻妃在线播放 | gav在线| 姝姝窝人体色www精品 |