当前位置:   article > 正文

利用Matlab进行相机标定并使用openCV进行简单三维重建_matlab单目相三维重建么

matlab单目相三维重建么

注:本文主要针对Matlab和OpenCV跨平台进行相机标定、单相机三维重建工作的实现因为我发现网上竟然没有一篇博客径直指出这两者在进行图像处理时的巨大差异(坐标系完全不同),不然我也不会走了很多弯路(呜呜呜欲哭无泪~~~),先说最重要的点,“Matlab坐标系与OpenCV坐标系正好相反”,具体是怎么回事,继续往下看。

本文实现的是单相机的三维重建,也就是单个相机从不同角度对同一物体进行拍摄,最后进行建模,拍摄图像和结果类似于这样 

总体方法:

1. 利用Matlab标定,获取相机内参和每张图像对应的外参,关于Matlab的标定,可以参见这几篇博客:Matlab 摄像机标定+畸变校正(新版本MATLAB)_苏源流的博客-CSDN博客(主要是这篇),如何通过Matlab获取相机参数进行相机标定 - 简书;需要强调的是,正如第一篇文章所说,Matlab的内参矩阵和openCV是反的,需要转置,因为它两的坐标系正好相反,一个的y是另一个的x,因此需要转置,所以,外参的旋转矩阵在具体使用时也需要转置

2. 完成参数获取以后,需要利用Matlab的畸变系数进行畸变矫正,畸变矫正还是参考上述博文Matlab 摄像机标定+畸变校正(新版本MATLAB)_苏源流的博客-CSDN博客,需要注意的是k3系数也可以试试,不一定他说的就对。后面我会附上我整个项目的具体代码,请勿担忧。

3. 利用HSV空间进行分割,确定重建目标的位置,关于HSV空间,可参考这几篇博文:【opencv】HSV颜色分割_AI小白龙的博客-CSDN博客, OpenCV学习笔记——HSV颜色空间超极详解&inRange函数用法及实战_小天狼星不来客的博客-CSDN博客_opencv中hsv(主要代码实现可参考这篇,同样源码我会给出)

4. 设置合理三维空间坐标,将三维点通过参数矩阵映射各个图像中,并通过检查此点是否在目标上,若在则保留此三维点,不在则丢弃,从而进行筛选,将三维空间中目标上的三维点保留下来,完成三维重建。映射的原理可参照这篇博文:相机标定(Camera calibration)原理、步骤_AI人工智能科学的博客-CSDN博客_相机标定

5. 将保留的点绘制出来,即可完成简单三维重建。

关于具体的注意事项我在提供的资源中的报告中将给出,具体细节同样参见我的代码和报告。

链接:https://pan.baidu.com/s/1dzuhc-Sex5AwHC7hqQldgw 
提取码:he8l 

有关于代码中不懂的内容可以给我留言,不过我可能回复的比较慢,也可以发送邮件1085177243@qq.com,如果看见我会尽快回复。另外,请您务必保护我的报告的个人信息,感谢。

有朋友联系说链接失效了,这里专门传到了github: GitHub - hbchen121/3Dreconstruction: opencv 实现简单物体从 多张二维图片 到 三维点云的重建 同时欢迎大家关注我最新的工作。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/127771
推荐阅读
相关标签
  

闽ICP备14008679号