基于双目视觉和三维重构的三维书写系统

最近在做双目视觉和三维重构,这是这段时间的劳动成果,放上来与大家分享,算是给大家新年的祝福,新年快乐!

 

这是一组工具,可以一步步实现一个不成熟的三维书写系统。

因为有一组视频数据,所以放到了Google Code,程序源码及样本数据都有。

项目地址:https://github.com/zhijie/3d-reconstruction-tools

 

最最终效果演示:http://v.youku.com/v_show/id_XMjMzNjk1ODAw.html

 

下面对几个工具做一个简单的介绍

0.TestImageGenerate

这个工具本意是用以产生三维视图中的简单物体图像,因为已知参数,可以检测标定处理的结果是否准确

但效果不好,仅当一个编程练习吧。mfc dialog+OpenGL

 

1.ChessboardImageGenerator

用于产生指定的棋盘图片,做标定时要用各种图像,棋盘是最常用的。有这个工具就不用去画了,棋盘虽然简单,但用画图画起来还是挺麻烦的

一个例子

 

2.ImageSampler

同时从两个摄像头采集图像并保存

 

3.VideoRecorder

同时从两个摄像头采集视频并保存为AVI

 

4.ChessboardCornerFinder

找到棋盘图像的各个角点,并产生画出角点的图像,而且保持角点位置到文件

右左

 

保存文件

 

5.GetFingerPos

提取视频中每一帧图像的手指顶点的位置,并保存到文件

重要说明,目前,手指顶点的检测方法为肤色检测,找到手的区域后,假设y值最大的即为顶点。这个假设的基础是,在录制视频时,手的运动主要为平移,没有大的旋转。在视频中可以发现这个特点。这是目前简化处理的一个手段,但仍不失现实意义

 看截图就知道了

 

为了增加手指定位的准确度,黄色的家用橡胶手套都用上了。这样效果更好,但在后期,还将提高裸手识别准确度,以代替别的辅助设备

 

6.CalibrateFromPoints

从棋盘角点数据文件进行标定,并保存结果

 

 

7.Show3dPoints

这是最后一步,也是演示视频中用到的工具

使用在两个视频中找到的手指顶点和之前保存的 标定参数,进行重构,并显示。

运行效果截图:

1.这是画的五角星重构后的不同视角截图

 

2.下面是我写的字“01s”,我的网名简写

 

同时这个工具可以把重构后的点还原到左右视图中

但目前有一个问题,就是还原后左右视图中有一个总是错误,如图

1.五角星的左右视图还原

 

2.“01s”的还原

我将在后续工作中改正之。

 看这几张图像时注意,我画的时候是面对摄像头的,而这些图像是摄像头的视角,所以是反的

================================================================================

 

为了方便大家运行改程序,在程序源码的各个文件夹中都有简单的运行方法说明。在运行时请注意查看源码,几个工具的代码都有读入之前工具产生的数据文件或视频或图像,这就会有一个路径问题,可以根据自己的情况,只需修改路径即可。

你下载的程序都可直接运行,目录结构已经经过特意安排。在看到读入文件错误时,请查看源码,注意路径。

另外注意把下载的视频放到程序解压后文件夹的data/videos中

 ------------------------------------------------------------------------------------------------------------------------------------

这一组工具组成了完整的一个系统,也代表三维书写或相关系统的一个处理过程

简单重复一遍:

1.做标定板,放置摄像头(ChessboardImageGenerator)

2.采集棋盘图像用以标定(ImageSampler)

3.录制视频(VideoRecorder)(以后如果做成完整的系统,就不用录制了,可以进行实时处理,录制视频也是为了方便做试验)

4.找到棋盘图像的角点(ChessboardCornerFinder)

5.摄像头标定(CalibrateFromPoints)

6.找到视频中手指的位置(GetFingerPos)

7.重构并显示(Show3dPoints)

 

 ===============================================================================

我的试验环境

 

标定板,把产生的棋盘打印出来就成:

右左

 

 

相关文章链接:

手势控制鼠标进行操作的方法和源码

基于动态手势识别的酷狗音乐播放器控制

sift图像特征提取与匹配算法代码

 

 

 

 

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值