我正在尝试在lineMOD对象检测数据集上测试我的算法。据作者介绍,深度值存储为无符号短值。我已经设法将深度值加载到cv::Mat中,但我想将它们转换为典型的浮点表示[0,1]。
起初我认为我只需要除以最大无符号短,但这似乎不是这样,因为我发现的最大值似乎是3399,而深度图中有很多零。我想这些0表示特定像素是一个对于深度相机来说太远而无法检测到的点。
有没有可能这些没有符号的短段代表毫米?如果没有,在应用生成点云的变换之前,我应该如何转换深度值?
我猜像素值不是毫米,而是一些相对值,因为深度相机比精确的毫米值更容易获得相对深度值,这些值甚至可能不是线性的。请向作者咨询以获取更多信息。
您可以尝试以下几个选项:
- 咨询作者,充分理解深度值的含义,然后进行相应的转换。
- 找出单张图像或所有图像之间的实际像素范围你的图像,比如[534,4399],将其缩放为[0.1,1.0],将这些零设置为0.0
- 简单地将unsigned short[0 ~ 65535]的全范围缩放到[0.0,1.0]