點雲數據詳解——創建360度全景視圖

本課程正在構建中,但將要教授的視圖類型如下所示。

Image of panoramic lidar depth

Image of panoramic lidar height

Image of panoramic lidar reflectance

 

 

同時請參閱此博客文章此博客文章,瞭解本課程中將包含的大部分內容。 

使用Mayavi進行交互式3D可視化——Interactive 3D Visualization using Mayavi

關於

Mayavi是一個科學的可視化庫,能夠可視化點雲數據。
獲得Mayavi

正在建設....同時,如果您使用的是Ubuntu,可以查看這個要點,以便在機器上進行設置。

    TLDR; mayavi是安裝非常痛苦。

可視化

正在建設....同時我已經將這個以下功能放在一起以可視化點雲數據。 稍後將更詳細地解釋這一點。

# ==============================================================================
#                                                                     VIZ_MAYAVI
# ==============================================================================
def viz_mayavi(points, vals="distance"):
    x = points[:, 0]  # x position of point
    y = points[:, 1]  # y position of point
    z = points[:, 2]  # z position of point
    # r = lidar[:, 3]  # reflectance value of point
    d = np.sqrt(x ** 2 + y ** 2)  # Map Distance from sensor

    # Plot using mayavi -Much faster and smoother than matplotlib
    import mayavi.mlab

    if vals == "height":
        col = z
    else:
        col = d

    fig = mayavi.mlab.figure(bgcolor=(0, 0, 0), size=(640, 360))
    mayavi.mlab.points3d(x, y, z,
                         col,          # Values used for Color
                         mode="point",
                         colormap='spectral', # 'bone', 'copper', 'gnuplot'
                         # color=(0, 1, 0),   # Used a fixed (r,g,b) instead
                         figure=fig,
                         )
    mayavi.mlab.show()

使用Matplotlib進行交互式3D可視化——Interactive 3D Visualization using Matplotlib

注意:本課程仍在建設中......
介紹

Matplotlib具有易於設置的優點。幾乎所有從事機器學習或數據科學工作的人都已經安裝了這個。但是,有幾個原因可以避免使用它在3D中以交互方式顯示點雲。

首先matplotlib非常慢。如果您想要實際可視化LIDAR掃描之類的所有點,它可能會使您的計算機崩潰。

其次,它只是沒有產生非常好的點雲可視化。例如,如果您正在處理LIDAR點雲,則在使用matplotlib時,您不太可能識別場景中的任何內容。

Mayavi的缺點是安裝起來非常棘手,但在可視化點雲數據方面做得非常出色。如果可以的話,我會鼓勵你嘗試。
可視化。

注意:本課程仍在建設中......

爲了防止matplotlib崩潰您的計算機,建議僅查看點雲數據的子集。例如,如果您可視化LIDAR數據,那麼您可能只想查看每25-100個點中的一個。下面是一些示例代碼,可幫助您入門。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

skip = 100   # Skip every n points

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
point_range = range(0, points.shape[0], skip) # skip points to prevent crash
ax.scatter(points[point_range, 0],   # x
           points[point_range, 1],   # y
           points[point_range, 2],   # z
           c=points[point_range, 2], # height data for color
           cmap='spectral',
           marker="x")
ax.axis('scaled')  # {equal, scaled}
plt.show()

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章