0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于单目摄像头实现3D识别SFM技术的研究

tUM2_ADA 来源:djl 作者:ADAS 2019-08-10 09:30 次阅读

通过单眼摄像头复原3D模型
为了能够通过单眼摄像头实现3D识别,SfM(Structure from Motion)的技术。采用的方法是,移动摄像头的位置,获得视点不同的多个图像,然后对这些图像加以比较,从而复原拍摄对象的三维(3D)模型。对于车载摄像头,只要车辆移动就能获得视点不同的多个图像,因此可以使用SfM制作车辆周边的简易3D模型。

获得的3D模型如何应用不是由芯片来决定的,而是取决于开发者。比如,可以组合使用由多个车载摄像头获得的图像生成的360度图像,从而提高驾驶辅助的精度等。上述一系列的图像识别处理利用VGA和全高清(1920×1080像素)车载摄像头就能实现,无需专门选择某种摄像头。

1. Bundler简介

Bundler是一个采用C和C++开发的称为sfm(struct-from-motion)的系统,它能够利用无序的图片集合(例如来自网络的图片)重建出3D的模型。最早的版本被用在Photo Tourism的项目上。

Bundler的输入是一些图像、图像特征以及图像匹配信息,输出则是一个根据这些图像反应的场景的3D重建模型,伴有少量识别得到的相机以及场景几何信息。系统借用一个由Lourakis 和Argyros提供的称为Sparse Bundle Adjustment的开发包的修改版,一点一点递增地重建出图像场景。Bundler已经成功的应用在许多网络相册系统,尤其是一些建筑相册里。

2. Bundler的编译

下载到Bundler的源代码之后,我们首先要对其进行编译。在bundler-v0.4-source\vc++\文件夹下有Visual Studio2005创建的工程Bundler.sln,当然我们也可以使用更高的版本进行编译。

在编译f2c时,会给出无法找到#include"sysdep1.h"文件的错误。进入f2c的目录,将sysdep1.h0文件名修改为sysdep1.h即可。

同时将signal1.h0文件名修改为signal1.h。再次编译f2c库时,会提示无法找到#include"arith.h"文件的错误,同时在f2c目录下并没有名字为arith.h的文件,这时可以新建一个arith.h文件,在文件里添加如下内容即可:

#define IEEE_8087
#define Arith_Kind_ASL 1
#define Long int
#define Intcast (int)(long)
#define Double_Align
#define X64_bit_pointers
#define QNaN0 0x0
#define QNaN1 0xfff80000

这时,编译f2c,便成功了。

接下来编译keyMatchFull和Bundler项目,一切顺利。

为了进行获得稠密的三围重建效果,利用Bundler提供的Bundle2PMVS和RadialUndistort工具,生成稠密重建PMVS软件所需的参数

在编译Bundlr2PMVS时,在Bundle2PMVS.cpp文件中会出现“未知的标识符mkdir”的错误。在文件的开头添加#include,

同时将mkdir替换为_mkdir,如下所示:

//mkdir(output_path,0770);

_mkdir(output_path);

至此,Bundle2PMVS编译成功。

在编译RadialUndistort时,在RadialUndistort.cpp文件中会出现“无法识别的标识符index”。

原先的代码如下所示:

//char *space = index(buf, ' ');
//if (space) *space = 0;

将其替换为:

std::string str(buf);
int space_pos = str.find(' ');
str.at(space_pos) = 0;

files.push_back(str);

至此,RadialUndistort编译成功。

3. Bundler的运行

编译完成后,需要将bundler-v0.4-source\vc++\Debug\目录下的Bundler.exe,KeyMatchFull.exe, RadialUndistort.exe, Bundle2PMVS.exe, jpeg.dll,ann_1.1_char.dll文件统统考到bundler-v0.4-source\bin\目录下。

在成功执行Bundler前,我们需要做几步准备工作:

1.下载和安装Cygwin。Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行UNIX类系统。由于Bundler默认是通过在Unix环境下执行shell脚本来启动Bundler的,因为在Windows环境下需要安装Cygwin以执行shell脚本。

要下载cygwin,直接在setup.exe上点右键“另存为”即可。也可以复制右边这个地址:http://cygwin.com/setup.exe

cygwin的安装比较简单,可以参考这篇教程

但要注意一点,Bundler程序中会使用perl、python来进行一些预处理,因此在安装过程中需要把Devel、Perl、Python三个组件库都选上。另外还有ImageMagick这个库,用来处理图片。

下载安装的时间比较久,需要等待一段时间。安装过程中一些杀毒软件(比如360)可能会提示一些安全警告,无视即可。

2.下载特征检测器。Bundler推荐使用SIFT来进行特征提取,可以到SIFT的作者David Lowe的主页上下载他提供的SIFT Demo作为我们的检测器。

下载完成后,解压该文档,将目录下的siftWin32.exe文件拷贝到BASE_PATH\bin目录中。

3.准备图片。将要进行分析处理的图片放到一个目录里,比如BASE_PATH\Pictures\中(下面也统一以Pictures代替图片目录)。作为例子,Bundler自己也提供了两套图片,分别放在BASE_PATH\examples\ET和BASE_PATH\examples\kermit中。

4.下面对运行Bundler的脚本文件进行修改:

把RunBundler.sh文件中BASE_PATH=$(dirname $(which $0)); 一句等号后边的东西替换为Bundler的根目录,也就是RunBundler.sh文件所在的目录,记得加双引号。如BASE_PATH="E:/SDK/bundler-v0.4-source";。

然后把ToSift.sh文件中BIN_PATH设为bin目录,如BIN_PATH="E:/SDK/bundler-v0.4-source/bin"。

5.这下就大功告成了!!

打开Cygwin,cd定位到Bundler根目录下,然后输入下面的命令测试一下例子的图片:

./RunBundler.sh examples/ET

4. 后续工作

Bundler输出的文件大多以“bundle_*.out”的形式来命名,我们称之为“bundle文件”。缺省命令下,Bundler在每张图片经过分析和注册(register)后都会输出一个相应的bundle文件用来保存当前的状态信息,并以“bundle_.out”的形式命名。当所有的文件都注册后,Bundler就会输出一个最终的文件“bundle.out”。另外,每一回合结束时还会紧接着生成一些后缀名为“ply”的文件,这些文件包含的是经过重建后的相机和点的信息。

这些ply文件可以通过使用专用的查看器scanalyze来查看,

当然也可以通过meshlab来查看。

利用Bundler可以得到较为稀疏的点云(pointclouds)数据。如果需要得到更密集的点,可以使用Yasutaka Furukawa博士写的另外一个非常强大的软件包,称为PMVS2,

一种比较常见的途径是使用Bundler来得到相机参数,然后使用Bundle2PMVS程序,将生成结果转换为PMVS2的输入,然后使用PMVS2来得到更密集的点云。另外,读者们可能会对另外一个同样由Furukawa博士开发的实用工具——CMVS感兴趣,CMVS是一个场景聚类程序,在使用PMVS2前可以使用它来进行一些预处理,

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 3D
    3D
    +关注

    关注

    9

    文章

    2864

    浏览量

    107338
  • 车载摄像头
    +关注

    关注

    5

    文章

    135

    浏览量

    28062
  • 单目摄像头
    +关注

    关注

    0

    文章

    4

    浏览量

    4272
收藏 人收藏

    评论

    相关推荐

    最新摄像头技术给车辆以强大的视觉功能

    ,这都得益于图像处理技术。 因为这些系统越来越复杂,有些使用双摄像头实现 3D 立体视觉或物体检测,或只是单纯为了获得前端和后端视野(通过前后窗口)。图 4:(a) Lattice 双
    发表于 04-12 14:44

    怎样去设计一种基于OPT9221和OPT8241的3D ToF摄像头电路?

    3D ToF摄像头有哪些特性?3D ToF摄像头有哪些功能?怎样去设计一种基于OPT9221和OPT8241的3D ToF
    发表于 07-04 07:15

    iPhone8什么时候上市最新消息:iPhone8将用哪种摄像头?iPhone8的3D摄像头革命

    日前,关于苹果将在新一代的iPhone上使用前置3D摄像头的消息甚嚣。苹果会在iphone8中对增强现实3D深度感测镜头技术加以利用。
    发表于 06-29 16:33 736次阅读

    3D摄像头和vcesl产业做一个超详细的专业科普

    3D摄像摄像头是什么?3D摄像头特点在于除了能够获取平面图像以外,还可以获得拍摄对象的深度信息,即三维的位置及尺寸信息,其通常由多个
    的头像 发表于 02-05 09:35 2.6w次阅读
    对<b class='flag-5'>3D</b><b class='flag-5'>摄像头</b>和vcesl产业做一个超详细的专业科普

    3D摄像头行业巨头的市场争夺战爆发“谁”能勇立潮头

    自苹果搭载3D摄像头后,摄像头市场也发生了微妙的变化,而这一变化,可能最早是从设备端开始,前几日因3D摄像头激起的人才大战还历历在
    的头像 发表于 02-11 10:55 7849次阅读

    MWC2018:奥比中光成功研发手机3D摄像头 安卓阵营进入3D人脸识别时代

    MWC2018正式拉开帷幕,在这次的展会上,联发科战略入股,奥比中光成功研发手机前置3D摄像头,最新helio P系列芯片平台支持奥比中光3D传感摄像头,媲美iPhone X,安卓阵营
    发表于 03-02 14:49 1896次阅读

    Lucid的3D融合技术实现摄像头设备仿人类视觉3D景深识别

    设备制造商现在可以利用Lucid的核心软件解决方案,在简单的双摄像头设备上实现仿人类视觉的高精度3D景深识别
    的头像 发表于 07-27 17:18 7429次阅读

    摄像对比立体摄像头的优点

    像素提高到ZYDAS-2的每度14.2个像素。这进而提高了目标识别的探测距离,远远优于传统立体摄像头相对受限的3D测量距离。
    的头像 发表于 08-09 10:51 5869次阅读

    为什么华为Mate30Pro前后都采用了3D深感摄像头

    超广角摄像头+ 8MP 长焦+ 3D 深感摄像头,双 OIS;前置则采用了 3200 万像素摄像头 + 3D 深感
    的头像 发表于 09-24 08:57 7.4w次阅读

    人脸识别中双目、3D结构光摄像头的区别

    迈迪杰科技提供的rk3288人脸识别模组可支持双目摄像头3D结构光摄像头,在客户咨询中经常有被问到双目的为什么会比目的成本高,区别在哪里
    发表于 06-18 14:38 3w次阅读

    专访模组厂商:人脸识别摄像头和双摄像头该如何选型

    高交会,笔者对专注做影像采集行业、具备较强专业能力的摄像头模组厂商金视康康总经理何世锟介绍进行了一场关于人脸识别摄像头如何选型的深度沟通。 关键点一:选单
    的头像 发表于 11-26 17:10 2080次阅读

    人脸识别中双目、3D结构光摄像头之间的区别

    联智通达提供的rk3288人脸识别模组可支持双目摄像头3D结构光摄像头,在客户咨询中经常有被问到双目的为什么会比目的成本高,区别在哪里,
    发表于 02-26 14:32 1.1w次阅读

    华为智能门锁搭载3D深感摄像头和人脸识别技术

    在智慧畅联场景下,华为智能门锁搭载了旗舰手机同款的 3D 深感摄像头和人脸识别技术。       审核编辑:彭静
    的头像 发表于 07-28 17:16 1652次阅读
    华为智能门锁搭载<b class='flag-5'>3D</b>深感<b class='flag-5'>摄像头</b>和人脸<b class='flag-5'>识别</b><b class='flag-5'>技术</b>

    使用python和opencv实现摄像机测距

    我的论文方向目前是使用摄像头实现机器人对人的跟随,首先
    的头像 发表于 07-03 10:01 2937次阅读
    使用python和opencv<b class='flag-5'>实现</b><b class='flag-5'>单</b><b class='flag-5'>目</b><b class='flag-5'>摄像</b>机测距

    颗CMOS摄像头重构三维场景,维悟光子发布红外3D成像模组

    硬件系统的轻量化和降本是3D视觉市场演进的必然趋势。维悟光子通过底层原理的创新,仅利用CMOS相机(最简单的成像系统)就可以获取完整的3D信息。本次发布的
    的头像 发表于 10-13 15:45 686次阅读
    以<b class='flag-5'>单</b>颗CMOS<b class='flag-5'>摄像头</b>重构三维场景,维悟光子发布<b class='flag-5'>单</b><b class='flag-5'>目</b>红外<b class='flag-5'>3D</b>成像模组