第一章:点云基础——从零认识三维世界的“像素”
大家好,我是你们这门课的主讲。在正式开始之前,我想先聊聊一个最基础的问题:点云到底是什么?
说白了,点云就是三维空间里一堆点的集合。每个点都带着自己的坐标(X, Y, Z),有时候还带着颜色、强度之类的附加信息。你想想看,我们平时看到的照片是二维的,由像素组成;而点云就是三维的“像素”,只不过这些像素是悬浮在空间里的。
我记得刚入行那会儿,第一次看到激光雷达扫出来的点云数据,密密麻麻的,像星空一样。当时我就想:这玩意儿要是能直接看懂,那自动驾驶、三维重建不都简单了?嗯,后来发现没那么简单,但点云确实是理解三维世界的基石。
1.1 点云数据格式:PCD、PLY、LAS
点云数据存成什么格式?这问题我经常被问到。目前主流的有三种:PCD、PLY 和 LAS。它们各有各的脾气。
| 格式 | 全称 | 特点 | 常见场景 |
|---|---|---|---|
| PCD | Point Cloud Data | PCL库原生格式,支持ASCII和二进制,读写快 | 科研、PCL项目 |
| PLY | Polygon File Format | 支持顶点和面片,可带颜色、法向量 | 三维扫描、图形学 |
| LAS | LASer | 工业标准,支持分类、强度、回波等属性 | 测绘、LiDAR点云 |
PCD 是我个人最常用的格式。为什么?因为PCL(Point Cloud Library)就是它亲爹,读写接口特别友好。你写个 pcl::io::loadPCDFile 就能把数据拉进来,省心。
PLY 呢,更偏向图形学。如果你做三维重建,最后要导出带网格的模型,PLY是首选。它既能存点,又能存三角面片,还能存颜色。我在做文物数字化项目时,就经常用PLY格式保存扫描结果。
LAS 是测绘领域的“老大哥”。它里面存的东西特别全:每个点的分类(地面、植被、建筑)、回波次数、强度值……嗯,如果你做林业或者地形分析,LAS格式基本绕不开。
1.2 点云获取方式:LiDAR vs 深度相机
点云从哪来?主要有两条路:LiDAR(激光雷达)和深度相机。这两者差别挺大,我分别说说。
LiDAR(激光雷达)
LiDAR的原理很简单:发射激光,测量反射回来的时间,算出距离。它扫出来的点云精度高、范围远,但价格也贵。自动驾驶车上顶着的那个“小帽子”,就是LiDAR。
我记得有一次做室外场景重建,用了一台16线LiDAR。扫出来的点云密密麻麻,连树叶的缝隙都能看清。但问题来了——LiDAR数据量太大,一帧可能上百万个点,处理起来电脑风扇呼呼转。
深度相机
深度相机(比如Intel RealSense、Kinect)就亲民多了。它通过结构光或ToF(飞行时间)技术获取深度图,再转成点云。优点是便宜、帧率高,适合室内场景。缺点是精度不如LiDAR,而且受光照影响大——大太阳底下基本废了。
我建议:室外大场景用LiDAR,室内小场景用深度相机。如果你只是做算法验证,深度相机完全够用;但如果是工程落地,LiDAR更靠谱。
1.3 点云可视化基础:Open3D
拿到点云数据,第一件事是什么?可视化。你看不见数据,怎么知道它长什么样?
Open3D 是我最推荐的点云可视化工具。它轻量、跨平台、API设计得特别人性化。不像PCL,装个库都要折腾半天。Open3D 一行 pip install open3d 就搞定。
下面我写个最简单的可视化代码,你感受一下:
import open3d as o3d
# 读取点云文件
pcd = o3d.io.read_point_cloud("example.pcd")
# 可视化
o3d.visualization.draw_geometries([pcd])
就三行代码,点云就出来了。你可以用鼠标旋转、缩放、平移,交互体验很好。
如果你要显示多个点云,或者加点颜色、法向量,也很简单:
import open3d as o3d
import numpy as np
# 生成随机点云
points = np.random.rand(1000, 3)
pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(points)
# 给点云上色(红色)
pcd.paint_uniform_color([1, 0, 0])
# 可视化
o3d.visualization.draw_geometries([pcd])
嗯,这里要注意:Open3D 默认的坐标系是右手系,X轴向右,Y轴向上,Z轴朝外。如果你从其他工具导出的点云坐标系不一样,记得先转换一下。
本章知识体系
为了让你更直观地理解本章内容,我画了一张结构图。它把点云基础的核心脉络串起来了:
这张图把本章的三个核心模块串起来了:数据格式(PCD/PLY/LAS)、获取方式(LiDAR/深度相机)、可视化工具(Open3D)。它们共同构成了点云处理的基础设施。
好了,第一章就到这里。内容不多,但都是实打实的基础。你把这些概念吃透了,后面学分割、识别才会顺手。记住:基础不牢,地动山摇。