跳转至

Cornell Grasp Dataset

描述该数据集的文章https://www.cs.cornell.edu/~asaxena/papers/lenz_lee_saxena_deep_learning_grasping_ijrr2014.pdf

数据集获取

官方的下载地址连它的域名一起挂掉了,只有Kaggle 上可以下载到

数据格式

数据集文件夹组织如下:

.
├─depth_image
| ├─pcd0100.txt
| ├─pcd0101.txt
| ...
| └─pcd1034.txt
├─image
| ├─pcd0100r.png
| ├─pcd0101r.png
| ...
| └─pcd1034r.png
├─neg_label
| ├─pcd0100cneg.txt
| ├─pcd0101cneg.txt
| ...
| └─pcd1034cneg.txt
└─pos_label
  ├─pcd0100cpos.txt
  ├─pcd0101cpos.txt
  ...
  └─pcd1034cpos.txt

depth_image文件夹下保存有PCD v.7格式的点云信息,image文件夹下是正常的RGB图片,neg_label是……是啥我也不清楚。

数据格式

深度信息

深度信息采用Point Cloud Data file format v.7编码,详细信息见[]

以下,拿出depth_image/pcd0100.txt作个分析

# .PCD v.7 - Point Cloud Data file format
FIELDS x y z rgb index
SIZE 4 4 4 4 4
TYPE F F F F U
COUNT 1 1 1 1 1
WIDTH 253674
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 253674
DATA ascii
1924.064 -647.111 -119.4176 0 25547
1924.412 -649.678 -119.7147 0 25548
1919.929 -650.5591 -116.9839 0 25549
1920.276 -653.1166 -117.2799 0 25550
...以下每行五个数,略。

可以看到本文件很明显地分成三个部分:

第一部分:版本号

# .PCD v.7 - Point Cloud Data file format

很明显这一行是在标识版本为0.7

第二部分:头信息

FIELDS x y z rgb index
SIZE 4 4 4 4 4
TYPE F F F F U
COUNT 1 1 1 1 1
WIDTH 253674
HEIGHT 1
VIEWPOINT 0 0 0 1 0 0 0
POINTS 253674
DATA ascii

这一部分构成了数据的定义,逐行分析如下:

FIELD:以后的每一行都有什么域,相当于电子表格中的表头

SIZE:该field中每一列的数据占用的字节数

TYPE:每列数据的数据类型:FloatInteger或者Unsigned integer.

COUNT:每个field的数据数,也就是对应多少列

WIDTHHEIGHT:如果height为 1,则width为数据点的数目;否则,两个数是正常的图片宽高。

VIEWPOINT:视点,观测者的位置,以translation (tx ty tz) + quaternion (qw qx qy qz)的形式表达,默认值是0 0 0 1 0 0 0

POINTS:数据点数目

DATA:有三种顾名思义的取值:asciibinarybinary_compressed

第三部分:数据

上边讲的都是瓶子,下面要给您上酒了,您请好:

1924.064 -647.111 -119.4176 0 25547
1924.412 -649.678 -119.7147 0 25548
1919.929 -650.5591 -116.9839 0 25549
1920.276 -653.1166 -117.2799 0 25550

好吧,很多时候瓶子比酒有意思,that's life。


聊了这么多,下面就是字符串处理时间了?

别想了,自己做字符串处理是最费力不讨好的事情。想一想,这么有影响力的数据格式,怎么可能没有专门进行读写的库呢?

MATLAB pcread只支持PCD 0.7,有pcread就有pcwrite

Pythonopen3d库做三维图,还有pypcd(停更了)

MATLAB中处理pcd文件

MATLAB中存在一系列以pc开头的一系列命令

pointCloud | pcplayer | pcshow | pcwrite | pcmerge | pcfitplane | planeModel | pctransform | pcdownsample | pcdenoise | pcregistericp

MATLAB范例如是说:

ptCloud = pcread('teapot.ply');
pcshow(ptCloud);

MATLAB中,点云处理属于于Computer Vision Toolbox的一部分,详见https://ww2.mathworks.cn/help/vision/point-cloud-processing.html

pcread可读取plypcd格式的点云文件,但要求点云文件以plypcd为后缀名;pcwrite亦可输出plypcd文件。

Cornell Grasping Dataset中,数据集作者提供了背景,我们可以通过减除背景的方式得到物体的图像。注意减除背景之后可能得到\(0\)值,可能需要进行特殊处理。