超像素(Superpixels)
超像素是外观相似的一组相连像素。超像素分割将图像划分为数百个不重叠的超像素(而不是数千或数百万个单个像素)。通过使用超像素,您可以在更有意义的区域上计算特征,并且可以减少用于消耗算法的输入实体的数量。
可以根据视觉外观(例如颜色和纹理)来计算超像素。另外,当有深度数据(RGB-D)可用时,法线和深度可用于创建更好的超像素分割。
有许多不同的,具有不同复杂度和性能的超像素算法。Isaac SDK带有用于RGB-D图像的GPU友好超像素实现。该算法在GPU上并行计算像素-超像素关联。
下图描述了从摄像机输入到超像素分割的流程。左侧是颜色和深度输入图像。计算第一个3D点,法线和例如位于边缘的无效像素的蒙版。然后,超像素算法将计算像素-超像素亲和度映射,这些映射将集成到右侧所示的最终超像素分割中。

上面的示例图像摘自以下论文的一部分发布的数据集:大规模分层多视图RGB-D对象数据集,赖凯(Kevin Lai),李烈峰(Liefeng Bo),任小峰和Dieter Fox,在IEEE国际机器人大会上和自动化(ICRA),2011年5月。
要尝试超像素,可以使用以下命令运行image_superpixels示例应用程序:
bob@desktop:~/isaac$ bazel run //packages/superpixels/apps:image_superpixels
该应用程序在单个测试图像上运行超像素算法,并在Sight中显示结果。加载localhost:3000
以启动WebSight并查看结果。
live_superpixels示例应用程序从实时摄影机源中计算超像素。使用以下命令运行该应用程序:
bob@desktop:~/isaac$ bazel run //packages/superpixels/apps:live_superpixels
此示例应用程序需要RGB-D相机。默认情况下将其设置为使用Intel Realsense相机。
请注意,基于RGB-D的超像素算法依赖于合理的深度数据。如果像素的深度值无效,则算法不会将其用于分割。在示例应用程序的结果中,未使用的像素标记为黑色。另外,具有较大深度值的像素也从分割中排除,以避免产生非常嘈杂的超像素。可以通过修改组件max_depth
参数通过配置文件来更改此参数DepthEdges
。
网友评论