RGBD 数据集简介,2019.12.15
NYU Depth Dataset V2(3D分割任务) 
数据集地址: https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html
NYU的升级版,增加了一些数据,室内场景,有分割真值的数据集,但是真值很少
数据集包括:
- 总共有408,000 RGBD 图像,包括1449张处理好的有标签和对齐的的RGBD图(2.8G)
- Raw: RGB图像, 深度图像,加速度计数据(由kinect采集)(428G)
- Toolbox: 官方提供的用于处理数据的常用函数(.m脚本)
标注的数据下载下来是.mat 形式的文件,需要用matlab脚本处理(.mat比.npy占用的内存小3倍左右)
scan net(2D、3D分割)
http://www.scan-net.org/
1513个室内场景数据(每个场景中点云数量都不一样),共21个类别的对象(0-20,总共已知类别应该是20,类别0应该是未知类别,即未标注点云),其中,1201个场景用于训练,312个场景用于测试。
该数据集有四个评测任务:3D语义分割、3D实例分割、2D语义分割和2D实例分割。
数据格式:
<scanId>
|-- <scanId>.sens
包含RGB、深度图、相机姿势和其他数据的RGB-D传感器流
|-- <scanId>_vh_clean.ply
高质量重建网格
|-- <scanId>_vh_clean_2.ply
语义标注的清理和抽取网格(??)
|-- <scanId>_vh_clean_2.0.010000.segs.json
过分割的注释网格
|-- <scanId>.aggregation.json, <scanId>_vh_clean.aggregation.json
分别在低分辨率和高分辨率的网格上融合实例级的语义标注
|-- <scanId>_vh_clean_2.0.010000.segs.json, <scanId>_vh_clean.segs.json
分别对低分辨率和高分辨率的网格进行过分割(被融合语义标注使用)
|-- <scanId>_vh_clean_2.labels.ply
Visualization of aggregated semantic segmentation; colored by nyu40 labels (see img/legend; ply property 'label' denotes the ScanNet label id)
|-- <scanId>_2d-label.zip
融合的分割标签的原始二维投影,16位png,带有ScanNet的标签id
|-- <scanId>_2d-instance.zip
融合的注释实例的原始二维投影,8位png
|-- <scanId>_2d-label-filt.zip
过滤后的:融合的分割标签的原始二维投影,16位png,带有ScanNet的标签id
|-- <scanId>_2d-instance-filt.zip
过滤后的:融合的注释实例的原始二维投影,8位png
- 重建后的surface mesh 文件(.ply):二进制PLY文件,+z轴方向竖直(向上?)
- RGB-D传感器流(*sens):压缩二进制格式,包含每帧的颜色、深度、相机姿势和其他数据。有关更多信息和解析代码参见ScanNet C++Too工具包。有关python数据导出器参见SensReader/python。
- 曲面网格分割文件(.segs.json):记录了场景中物体分割的详细信息
官方还提供了:
- ScanNet Scanner iPad App
- ScanNet Scanner Data Server
- ScanNet Data Management UI
- ScanNet Semantic Annotation Tools
用于通过ipad和RGBD相机方便的采集RGBD数据,并在服务器端接收然后在web端管理和标注数据。
数据集的21个类别: 
TUM (相机位姿估计)
https://vision.in.tum.de/data/datasets/rgbd-dataset/download
数据的帧数大小不同,运动有快有慢,有手持的相机。同时还有不同结构和纹理的数据,运动物体,3D物体重建,因此这个数据集非常大,用 Kinect 相机采集。
数据集包含RGB,深度图,相机的轨迹真值。
没有分割真值,没有目标框真值。
- associate.py 可以把拍摄时间相近的RGB图片和Depth图片,写在associate.txt文件的同一行,表示两个图是一对 RGB-D图片
python associate.py rgb.txt depth.txt > associate.txt
-
draw_groundtruth.py 可以把自己的试验结果和真实轨迹一起进行比较,并画出轨迹图。需要注意的是,试验结果必须是:时间戳,x, y, z, qx, qy, qz, qw 形式.x,y,z是T矩阵的数值,而最后的四个数值是pose的四元素表示方法
-
由于ground truth的数据比较多,同样可以利用associate.txt来匹配
RGBD文件格式:
- RGB: 640x480 8-bit 的 PNG.
- 深度图: 640x480 16-bit 的 PNG 单通道图
- RGB和深度图像已经使用PrimeSense的OpenNI驱动程序预先对齐,即RGB和深度图像中的像素已经1:1对应
- 深度图像按系数5000缩放,即深度图像中的像素值5000对应于距相机1米的距离、10000至2米的距离等。像素值0表示丢失值/无数据。
相机轨迹真值文件格式:
- 以 .txt 的形式存储,文件头可能包含以“#”开头的注释
- 每一行代表一个相机位姿,格式:timestamp tx ty tz qx qy qz qw
- tx ty tz(float)代表彩色摄像机的光心相对于世界坐标系原点的位置
- qx qy qz qw(float)以单位四元数的形式给出相机的光心相对于世界坐标系原点的朝向
Kinect的摄像机内参:
-
OpenNI通过此校准来消除图像的失真,并将深度图像(由红外摄像机拍摄)对应到RGB图像
-
因此直接将深度图重投影到RGB中,二者的像素可以一一对应
使用默认相机内参(fx,fy,cx,cy),将RGBD数据转换为3D点云的代码:
fx = 525.0 # focal length x fy = 525.0 # focal length y cx = 319.5 # optical center x cy = 239.5 # optical center y factor = 5000 # for the 16-bit PNG files # OR: factor = 1 # for the 32-bit float images in the ROS bag files for v in range(depth_image.height): for u in range(depth_image.width): Z = depth_image[v,u] / factor; X = (u - cx) * Z / fx; Y = (v - cy) * Z / fy;
SUN RGBD(场景分类,语义分割,室内布局估计,3D目标检测)
http://rgbd.cs.princeton.edu/
有10,335张RGB-D图片,有146,617 个平面目标框和58657个具有精确方向的三维目标框,以及用于场景的三维房间布局和类别。
是NYU depth v2 , Berkeley B3DO , and SUN3D ,三个数据集的并集,多了3D bounding boxes和room layouts的标注。 (所以在cite这篇论文时也要cite 一下这三篇论文)
可用于场景理解:场景分类,语义分割,室内布局估计,3D目标检测,
数据集结构:
- SUNRGBD V1 :包含RGBD数据
- SUNRGBDtoolbox:包含标注信息以及加载数据和可视化的matlab脚本