这个示例演示了如何在仿真环境中可视化从摄像机传感器捕获的深度和语义分割数据。该环境使用Epic Games®的虚幻引擎®进行渲染。
您可以使用深度可视化来验证传感器的深度估计算法。您可以使用语义分割可视化来分析用于从虚幻引擎环境生成合成语义分割数据的分类方案。
本例中使用的模型模拟了城市场景中的车辆驾驶。
一个模拟3D车辆与地面跟踪Block指定车辆的行驶路线。构成这条路线的路径点姿态是使用中描述的技术获得的为虚幻引擎模拟选择路径点的例子。
一个模拟3 d相机安装在汽车后视镜上的模块可以从行驶路线上获取数据。该块通过使用输出摄像机、深度和语义分割显示视频显示块。
加载包含路径点姿态的mat文件。添加时间戳到姿势,然后打开模型。
负载smoothedPoses.mat;refPosesX = [linspace(0,20,1000)', smoothedPoses(: 1)];refPosesY = [linspace(0,20,1000)', smoothedPoses(: 2)];refPosesYaw = [linspace(0,20,1000)', smoothedpose (: 3)];open_system (“DepthSemanticSegmentation.slx”)
深度图是相机传感器输出的灰度表示。这些地图以灰度显示摄像机图像,用较亮的像素表示离传感器较远的物体。您可以使用深度图来验证传感器的深度估计算法。
的深度仿真3D摄像机模块的端口输出一个深度图的值范围为0到1000米。在这个模型中,为了更好的能见度,饱和度块将深度输出饱和到最大150米。然后,一个增益块将深度图缩放到范围[0,1],以便to Video Display块可以以灰度显示深度图。
语义分割描述将图像的每个像素与类标签相关联的过程,例如路,建筑,或交通标志.在三维仿真环境中,根据标签分类方案生成合成的语义分割数据。你可以用这些标签训练神经网络用于自动驾驶应用,比如道路分割。通过可视化语义分割数据,您可以验证您的分类方案。
的标签仿真3D摄像机模块的端口为输出摄像机图像中的每个像素输出一组标签。每个标签对应一个对象类。例如,在块使用的默认分类方案中,1
对应于建筑。一个标签的0
指向未知类的对象,并以黑色显示。有关标签id及其对应对象描述的完整列表,请参见标签端口说明模拟3 d相机块引用页面。
MATLAB函数块采用
函数将标签转换为RGB三联体矩阵以实现可视化。颜色图基于CamVid数据集中使用的颜色,如示例所示基于深度学习的语义分割.颜色被映射到默认3D模拟场景中使用的预定义标签id。辅助函数label2rgb
sim3dColormap
定义了colormap。检查这些颜色图值。
开放sim3dColormap.m
运行模型。
sim卡(“DepthSemanticSegmentation.slx”);
当模拟开始时,可视化引擎可能需要几秒钟来初始化,特别是当您第一次运行它时。的AutoVrtlEnv
窗口显示了自我车后面的场景。在这个场景中,车辆沿着城市行驶了几个街区。因为这个例子主要是为了说明的目的,车辆并不总是遵循交通方向或不断变化的交通灯的模式。
摄像头显示,深度显示和语义分割显示块显示从摄像头传感器的输出。
要更改输出深度数据的可视化范围,请尝试更新饱和度和增益块中的值。
要更改语义分割颜色,请尝试修改sim3dColormap
函数。另外,在sim3dlabel2rgb
MATLAB函数块,尝试用您自己的颜色图或预定义的颜色图替换输入颜色图。看到
.colormap