主要内容

导入点云数据深度学习

在深度学习工作流使用点云数据,数据必须从其原始形式读入数据集到MATLAB。在这个例子中,我们使用悉尼城市对象数据集(1]。这个例子展示了如何使用MATLAB数据存储和表示数据深度学习阅读。

下载悉尼城市对象数据集

悉尼城市对象数据是122 MB的未压缩的形式,可能会花几分钟下载根据您的网络连接速度。

sydneyUrbanObjectsPath = downloadSydneyUrbanObjects (tempdir ());

定义为点云数据存储

创建一个数据存储加载点云数据从悉尼城市对象,连同相关对象标签。

ds = loadSydneyUrbanObjectsData (sydneyUrbanObjectsPath);

从数据存储读取和显示第一次观察到。

data =预览(ds)
data =1×2单元阵列{1×1 pointCloud}{(四轮驱动)}
disp(数据)
{1×1 pointCloud}{(四轮驱动)}

阅读和预览的方法的输出数据存储单元阵列中,第一列是pointCloud对象和第二列是相关联的类标签。pointCloud对象可以使用pcshow函数可视化。

图pcshow(数据{1})标题(字符串(数据{2}))

引用

阿拉斯泰尔•Quadros[1]詹姆斯·安德伍德Bertrand Douillard;2013年。悉尼城市对象数据集。

万博1manbetx支持功能

函数datasetPath = downloadSydneyUrbanObjects (dataLoc)%这个函数下载tar存档tempdir悉尼城市对象%提供作为输出数据保存的位置。如果输入参数个数= = 0 dataLoc = pwd ();结束dataLoc =字符串(dataLoc);url =“http://www.acfr.usyd.edu.au/papers/data/”;name =“sydney-urban-objects-dataset.tar.gz”;如果~ (fullfile (dataLoc,存在“sydney-urban-objects-dataset”),“dir”)disp (“下载悉尼城市对象数据集…”);解压(url +名字,dataLoc);结束datasetPath = dataLoc.append (“sydney-urban-objects-dataset”);结束函数ds = loadSydneyUrbanObjectsData (datapath公司、折叠)% loadSydneyUrbanObjectsData创建与点云数据存储%为悉尼城市对象分类标签数据集相关联。%% ds = loadSydneyUrbanObjectsData (datapath公司)返回一个数据存储%代表点云和悉尼城市相关的类别%对象数据集。datapath公司,输入一个字符串或字符数组%表示路径的根目录悉尼城市对象%的数据集。%% ds = loadSydneyUrbanObjectsData(___,折叠)选择性地允许%的规范需要折叠,你希望包含在%输出ds。例如,[1 2 4]指定你想要第一,%第二和第四折叠的数据集。默认值:(1 2 3 4)。如果输入参数个数< 2折叠= 1:4;结束datapath公司=字符串(datapath公司);路径= fullfile (datapath公司,“对象”,filesep);%,包括所有的折叠在数据存储中foldNames {1} = importdata (fullfile (datapath公司,“折叠”,“fold0.txt”));foldNames {2} = importdata (fullfile (datapath公司,“折叠”,“fold1.txt”));foldNames {3} = importdata (fullfile (datapath公司,“折叠”,“fold2.txt”));foldNames {4} = importdata (fullfile (datapath公司,“折叠”,“fold3.txt”));名称= foldNames(折叠);名称= vertcat(名字{:});fullFilenames = append(路径、名称);ds = fileDatastore (fullFilenames,“ReadFcn”@extractTrainingData,“FileExtensions”,“。斌”);结束函数dataOut = extractTrainingData(帧)(pointData、强度)= readbin(帧);[~、名称]= fileparts(帧);name =字符串(名称);名称= extractBefore(名称、“。”);labelNames = [“四轮驱动”,“台”,“自行车”,“自行车”,“建筑”,“公共汽车”,“汽车”,“自行车”,“挖土机”,“行人”,“支柱”,“极”,“职位”,“摩托车”,“ticket_machine”,“traffic_lights”,“traffic_sign”,“预告片”,“垃圾”,“树”,“卡车”,“树干”,“伞”,“哑巴”,“范”,“植物”];标签=分类(名称、labelNames);dataOut = {pointCloud (pointData“强度”、强度),标签};结束函数(pointData、强度)= readbin(帧)% readbin读取点和强度数据从悉尼城市二进制对象%的文件。%的名字= [“t”、“强度”、“id”,…% ' x ', ' y ', ' z ',……%“方位”、“范围”、“pid”)%%格式= [‘int64’,‘uint8’,‘uint8’,……%’float32’,‘float32’,‘float32’,……% ' float32 ', ' float32 ', ' int32 ']fid = fopen(帧,“r”);c = onCleanup(@()文件关闭(fid));fseek(支撑材10 1);%将第一个X点位置10个字节从开始X =从文件中读(fid,正无穷,“单一”,30);fseek (fid, 14日1);Y =从文件中读(fid,正无穷,“单一”,30);fseek(支撑材,18岁,1);Z =从文件中读(fid,正无穷,“单一”,30);fseek(支撑材8 1);强度=从文件中读(fid,正无穷,“uint8”33);pointData = [X, Y, Z];结束