笔者本身对三维比较感兴趣,无意中在学校中接触到了三维重建,因此在师姐和师兄的指导下,从0开始学习三维重建,越往里面学越感觉到里面的东西很多,在这里我只介绍我自己在三维重建过程中用到的方法、工具和一些算法、参考的博客、论文,其中的很多东西并不是重建中最佳的选择(但每一件我都亲身试验和深入了解过),我在学习中得到的每一点进步都是在前人无私的分享中获得的,因此写此博客的目的也是想将这种分享的精神延续下去。
我都被自己高大上的言语打动了,不过读者也不要期望太多,本人只是一个不知名大学的在校大学生,水平很有限,接触的东西很有限,阐述过程中也一定会有错误,请大家指正,共同进步。。。。。废话太多了。
三维重建 ,英文术语名称是3D Reconstruction.
顾名思义,三维重建是将三维的物体在虚拟世界中重建出来,通俗点说,我们做的就是照相机的逆操作(照相机是将现实中的物体呈现在二维图片中,而三维重建是将二维图片中的信息在三维虚拟空间中显现)
如今二维的东西已经不能满足于人们对事物的感知,什么AR、VR炒得很火热,我们不能断定以后的世界将会充满虚拟现实,但我们能肯定的是人类对三维的好奇是不会减少的。
在学习三维重建前,我们可以先大体上了解一下我们在此过程中需要做些什么。所以了解三维重建的一般步骤必不可少,这样我们在做的时候才知道我们为什么要做这个?
上述三维重建的步骤是从百度百科中copy过来的,比较详细地介绍了三维重建的一般过程,笔者也是这样一步步学习的。
vs2013+opencv2.4.9
因为opencv 3.0后很多函数发生了一些变化,现在网上的很多资料都是基于opencv3.0以前的版本,所以安装2.0以后的版本便于参考和学习。
具体参考:http://jingyan.baidu.com/article/75ab0bcbee4b47d6864db2fc.html
按照上述步骤将环境配置完成以后,可以运行以下代码验证是否配置成功:
#include
using namespace std;
using namespace cv;
int main(){
Mat srcImage1= imread("1.jpg",1);//该图片必须在工程目录下
//如果读入图像失败
if(!srcImage1.data)
{
printf("error");
return false;
}
//显示图像,在哪个个窗口显示
namedWindow("image", CV_NORMAL);//此函数以后会很有用,CV_NORMAL保证输出的图片可拉伸
imshow("image", srcImage1); //void namedWindow(const string& winname, int flags = WINDOW_AUTOSIZE)//用来创建窗口的函数
//此函数等待按键,按键盘任意键就返回
waitKey();
return 0;}
作为开源的计算机视觉库,opencv提供了很多对图像处理的函数,因此对opencv的操作必不可少(相关资料):
《learning opencv》是很经典的一本书
opencv中文论坛
http://blog.csdn.net/chenyusiyuan/article/details/5072597 邹老师的opencv学习笔记,对学习opencv很有帮助
http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/calib3d/doc/calib3d.html opencv相关函数的帮助文档
另外国内现在以三维重建为题材的论文很多,可以到中国知网等搜索阅读。
路漫漫其修远兮。。。共勉