NYUtoolbox深度补全工具的使用

1.使用NYUtoolbox的原因

本人在准备小论文,需要用到kitti的深度图,但是我在kitti官网下载了数据集之后发现,kitti的depth数据集是稀疏的雷达图,即使是提供的groundtruth,也还是达不到直接使用深度信息的要求,如下图所示

NYUtoolbox深度补全工具的使用_第1张图片
原来的雷达depth图片可是比这个还要稀疏的。我当时想找kitti比较好的depth数据集,但是到最后发现不行,于是向导师寻求帮助,导师跟我说,NYU数据集里面的toolbox工具箱,有提供深度补全的程序,于是我就开始使用toolbox工具了。

2.开始入坑

等我下载来NYU的深度补全之后,发现事情并没有那么简单。工具箱里面使用的深度补全程序是matlab,并且使用了联合编译的,也就是我之前博客里面的mex(详细配置可以参考我之前写的关于联合编译的博客)。
讲道理,在使用matlab联合编译的时候,首先是需要使用mex指令编译C++(或者C)文件的,生成.mexw64才能被matlab文件使用(不了解的可以去matlab mex官方文档里面补补课)。接着,我看了深度补全的.m文件,发现文件里面需要用到mex_cbf_windows.cpp和mex_cbf.cpp文件,于是我使用指令mex -setup c++首先启动文件,再接着使用指令mex mex_cbf.cpp cbf.cpp以及mex mex_cbf_windows.cpp(因为mex里面还使用到了对应的cpp文件)。
但是我随即发现问题并没有那么简单,反正就是报错很多就是了,于是我陷入了僵局。
最后仔细看之后发现了问题所在。如下图。
在这里插入图片描述仔细读了代码之后发现这里有个判断过程,这个是重中之重,ispc得意思应该是判断是不是PC吧,这个windows应该就是我们使用的Windows操作系统。(我之前还寻思着这个Windows是啥)。所以讲道理应该只要编译mex mex_cbf_windows.cpp就可以了。

3.结果

然后就是跑通程序了。
当然之前程序的尺寸是480*640像素的,如果图片尺寸不是这个的话,是需要修改的(改的不是很多,按照报错自己慢慢看)。然后程序就跑出来了,如下图所示。

这张图是我在测试程序是否可行的时候使用的,发现填充效果还是比较好的,可以看到输入图是有黑区的,在填充后黑区就没有了,并且还比较光滑。至于颜色的话,可以不使用源程序的imagsc()用imshow()就行。
由于这个输入图是黑区比较少的图片,所以出现的效果还是比较好的。然后我输入了kitti的图片,结果如下所示

NYUtoolbox深度补全工具的使用_第2张图片

NYUtoolbox深度补全工具的使用_第3张图片

NYUtoolbox深度补全工具的使用_第4张图片

NYUtoolbox深度补全工具的使用_第5张图片第一张是输入的彩图,第二张是输入的groudtruth稀疏雷达图,第三张是输出的结果,第四张是我把有值的像素点反了一下呈现的效果。

4.总结

说实话,效果不是太理想,但比其他普通的算法要好很多了。不过追本溯源,我原本是想得到可用的kitti深度图,到现在出来的结果还是不理想,对我需要做的实验数据来说还是不够。我觉得主要是这个程序所面向的对象是一般的depth图,也就是黑区比较少的depth图,拿来做深度补全,效果还是很不错的,但是kitti数据集原本的雷达图太稀疏,所以效果还不是很理想。

所以,下阶段还是要好好想想其他的思路了,因为要得到kitti深度图比较好的结果,貌似不是那么容易。虽然深度补全不是我做的主要方向,但是在这个过程中学习到的还是蛮多。其实深度补全也是图像处理里面一块比较大的内容,有一帮研究者一直在做这方面的事情,包括也有像NYU使用传统算法的,也有比较新的深度学习的方法来补全深度图。

这篇博客,就当是一个记录,为以后使用NYUtoolbox的朋友们提供借鉴,少走弯路。也希望做这块的朋友能够多多交流,共同进步。

你可能感兴趣的:(深度补全,kitti数据集,NYUtoolbox)