(1)點雲到深度圖與可視化的實作
區分點雲與深度圖本質的差別
1.深度圖像也叫距離影像,是指将從圖像采集器到場景中各點的距離(深度)值作為像素值的圖像。擷取方法有:雷射雷達深度成像法、計算機立體視覺成像、坐标測量機法、莫爾條紋法、結構光法。
2.點雲:當一束雷射照射到物體表面時,所反射的雷射會攜帶方位、距離等資訊。若将雷射束按照某種軌迹進行掃描,便會邊掃描邊記錄到反射的雷射點資訊,由
于掃描極為精細,則能夠得到大量的雷射點,因而就可形成雷射點雲。點雲格式有*.las ;*.pcd; *.txt等。
深度圖像經過坐标轉換可以計算為點雲資料;有規則及必要資訊的點雲資料可以反算為深度圖像
rangeimage是來自傳感器一個特定角度拍攝的一個三維場景擷取的有規則的有焦距等基本資訊的深度圖。
深度圖像的像素值代表從傳感器到物體的距離或者深度值。
RangeImage類的繼承于PointCloud主要的功能實作一個特定的視點得到的一個三維場景的深度圖像,繼承關系為

是以我們知道有規則及必要資訊就可以反算為深度圖像。那麼我們就可以直接建立一個有序的規則的點雲,比如一張平面,或者我們直接使用Kinect擷取的點雲來可視化深度的圖,是以首先分析程式中是如果實作的點雲到深度圖的轉變的,(程式的注釋是我自己的了解,注釋的比較詳細)
在代碼利解釋的十分詳細,編譯檢視結果
沒有輸入PCD點雲檔案的結果
輸入點雲的原始圖
輸入的結果及其深度圖
(2)如何從深度圖像中提取邊界
從深度圖像中提取邊界(從前景跨越到背景的位置定義為邊界),對于物體邊界:這是物體的最外層和陰影邊界的可見點集,陰影邊界:毗鄰與遮擋的背景上的點集,Veil點集,在被遮擋物邊界和陰影邊界之間的内插點,它們是有雷射雷達擷取的3D距離資料中的典型資料類型,這三類資料及深度圖像的邊界如圖:
代碼解析:從磁盤中讀取點雲,建立深度圖像并使其可視化,提取邊界資訊很重要的一點就是區分深度圖像中目前視點不可見點幾何和應該可見但處于傳感器擷取距離範圍之外的點集 ,後者可以标記為典型邊界,然而目前視點不可見點則不能成為邊界,是以,如果後者的測量值存在,則提供那些超出傳感器距離擷取範圍之外的資料對于邊界的提取是非常重要的,
建立檔案range_image_border_extraction.cpp:
編譯的運作的結果./range_image_border_extraction -m
這将一個自定生成的,矩形狀浮點型點雲,有顯示結果可以看出檢測出的邊界用綠色較大的點表示,其他的點用預設的普通的大小點來表示.
因為有人問我為什麼使用其他的PCD檔案來運作這個程式的時候會提示 Far ranges file far_ranges_filename does not exists 這是因為在深度傳感器得帶深度圖像并可視化圖像的時候,我們都知道傳感器的測量距離受硬體的限制,是以在這裡就是要定義傳感器看不到的距離,是以當我們自己使用kinect擷取深度圖像運作這個程式的時候直接使用指令
./range_image_border_extraction -m out0.pcd 使用-m的原因是要設定傳感器看不見的位置 Setting unseen values in range image to maximum range readings
那麼對于我們使用自己使用的PCD檔案并且設定 -m後的一個結果比如
忘了宣傳我的微信公衆号了,是以微信裡會有更多的人分享,同時也希望積極關注分享你的學習
未完待續*****************8888888