博主是那种动手能力较差的人(超级容易踩坑,一个坑踩超级久),独自搭建一个单目+结构光系统是真的挺挑战的。
在自己做的过程中,最让人心累的就是,我结果不好的话,会认为是投影仪不够好才标定出问题的bulabulabula…,基本上卡着我的点都是诸如“怎么从投影仪投射一张正常的图片”这种让大佬们感觉很低级的问题。其实我的确很容易被所谓“低级问题”卡住,这也是需要进步的一个点。
本次实验主要参考了这位博主的3D重构系列博客。
相机+投影仪
相机是从包工头那里拿的MindVision,投影仪是博主还是白的时候从京东买的一个200多的“家庭影院”投影仪,物理分辨率800*480。听说别人用的都是几千块的投影仪,我的200块,我……是有点怕的。
系统标定
包括两个部分,相机标定和投影仪标定。OpenCV和MATLAB都有对应的标定工具,由于我使用的C++,所以用的OpenCV标定。标定过相机的伙伴可能对相机标定已经不陌生了,那么系统标定主要是投影仪怎么标定了。
OpenCV标定将投影仪看做一个相机模型,使用棋盘格进行标定。且只要知道了投影仪图片的角点坐标+角点坐标对应的世界坐标就能够对投影仪进行标定了。
具体操作坚持一个原则:保证打印棋盘格(用于相机的标定)和投影棋盘格在同一个平面上(对我来说比较难的是采集图片,我苦于没有准备好白板,标定的事情拖了好久好久)。采集图片时,保持相机与投影仪的相对位姿不变,改变白板与相机+投影仪系统的相对位姿,使用相机采集图片。
新手疑问1:打印棋盘格和投影棋盘格怎么摆?如图,相互不交叉,且角点个数不一样就可以了,保证角点个数不一样是为了在运行程序的时候区分是打印的其棋盘格还是投影的棋盘格(也就是标定的是相机还是投影仪)。


本文分享了博主在搭建单目+结构光3D重构系统过程中的经验与教训,详细介绍了系统标定、三维重构原理及测试结果,特别强调了投影仪和相机标定的重要性。
226

被折叠的 条评论
为什么被折叠?



