基于计算机视觉的三维重建技术,是指利用二幅或多幅二维图像来恢复空间物体表面的几何信息,其过程是成像过程的逆过程[1]。在三维重建发展的早期,受到计算处理能力的限制和理论研究水平的限制,真实物体的建模需要昂贵的专用设备如视觉坐标测量机等来实现,并且受灰度匹配原则的限制,单一摄像机所拍摄的两幅图像不能有太大的平移和旋转,摄像机的运动收到严格限制。本课题的研究目的就是解决该项问题,用最普通的数码设备(如手持家用数码相机)从多视角获取物体序列图像,经过普通计算单元(如PC机)的处理,确定多视图的对应点与多视图之间的几何约束关系,恢复出特征点在三维空间的坐标与每幅图像对应的摄像机在三维空间中的坐标,获得三维模型。

针对非特定环境下的三维模型重建受到背景干扰而无法达到精度的问题,提出了采用基于Grabcut的图像分割方法,该方法基于图割理论能量最小化的原则,可以较好的分离前景背景,去除图像的冗余信息。且本文用三视图进行空间点的重建,相对于传统的只用两幅图的重建算法精度更高,稳定性更好。

  1. 图像预处理

图像的获取是基于立体视觉三维模型重建的基础,在通过图像传感器(如CCD摄像机)获取图像后,考虑到光照条件、摄像机性能、视点差异等影响,我们需要对获取的图像做进一步处理。

图像预处理的目的在于:提高图像的清晰度,改善图像的视觉效果,将图像转换成一种更适合于人或机器分析处理的形式[2]。包括两个部分:1)图像的平滑、滤波及增强2)背景与目标物体的分离。

在机器视觉的应用中,为了从图像中获取世界坐标系中三维物点与像点的对应关系,计算物体的位置、形状等信息,必须建立摄像机成像的几何模型并获得其参数。在大多数条件下这些参数必须通过实验与计算才能得到,这个求解参数的过程就称之为摄像机标定[3]。摄像机标定确定了摄像机内部几何和光学特性(内部参数),相对世界坐标系(如图)的摄像机坐标系的三维位置和方向(外部参数),标定的精度决定了模型重建的精度,因此相机标定采用的算法至关重要。

:

1.3 特征匹配

匹配是三维模型重构中的一个核心问题,寻找两幅或多幅图像中的对应特征点,使图像间的均方误差最小化,就可以得到更精确的相对位置关系,从而对两帧图像进行匹配。现有的特征点提取方法可以分为基于模板的特征点检测,基于边缘的特征检测和基于亮度变换的三类[4]。文中SIFT特征匹配算法是一种稳定的局部特征匹配算法[5]。该算法匹配能力较强,具有优良的尺度和旋转不变性以及对光照和视角变化的鲁棒性,广泛应用于机器人视觉、三维目标重建及医学图像配准等领域。

  1. 三维重建

在进行特征点匹配并且得到相机的内外参数后,就可以从像素坐标系中的某个像素点逆向映射成世界坐标系中的点。通过特征点在图像中的匹配关系,建立方程组,求解各个特征点在世界坐标系中的坐标值,再将各个特征点按对应关系连接成相应的三维立体图,完成物体的三维重建[6]。

2系统设计

2.1图像预处理

针对图像质量退化的问题,采取基于简化脉冲耦合神经网络模型的噪声滤波及图像增强。在本节重点讨论的图像分割中,采用基于Grabcut的图像分割方法。

Grabcut是一种交互式的图像分割方法,以简单的“硬分割”代替三分图的构建,减少了人工交互部分的工作量, 是Rother等人对Graph cuts算法的改进[7]。 该方法有以下三点改进:1)采用高斯混合模型(Gaussian Mix-ture Model,GMM)来取代直方图,完成对彩色图像的目标提取。2)多次迭代估计GMM参数取代一次最小化估计完成能量最小化的过程。3)通过非完全标记的方法降低了对交互工作的要求。

Grabcut目标提取算法中每一个GMM都可以看做是一个K维协方差,在优化过程中引入向量k作为每个像素的独立GMM参数,相应的像素点上不透明度a=0或a=1,用 q表示目标/背景颜色分布的概率模型,所以图像分割分割问题转化为

Grabcut的主要步骤如下:

初始化:1)人工设置背景TB来初始化三分图。前景区域TF为空,未知区域TU取背景TB的补集。2)将背景区域像素的.a值设为0,未知区域像素的a值设为1。3)分别用α=0和α=1两个集合来初始化前景与背景的高斯混合模型。

迭代最小化:1)求出未知区域中每个像素n所对应的GMM参数,。2)由各个像素的数据切得高斯混合模型参数q,3)利用最小能量 得到初始分割。4)重复执行步骤1),直到收敛。

用户交互编辑:1)人工交互制定图像中某些像素的a值,令其为0或1,更新三分图,执行迭代最小化中的第三步骤。2)优化:重新执行整个迭代最小化的步骤。

若用户给出的初始化信息没有得到十分满意的分割效果则进一步交互,利用更多的信息重新最小化能量,直到满意的分割结果。

宽基线条件下的特征匹配是要提取稳定的特征并进行描述,从而实现差异较大的两幅图像之间的特征匹配。

图像中SIFT特征向量生成的算法包含以下四步:1)尺度空间极值检测,确定关键点位置和所在尺度。2)通过拟合函数精确确定关键点位置和尺度,去除低对比度的点。3)通过梯度方向分布特性为每个关键点指定方向参数。4)生成SIFT特征向量。

如图左部分以关键点为中心取8×8的窗口,在每4×4的小块上计算8个方向的梯度方向直方图,即可形成一个种子点。右部分关键点由2×2共4个种子点组成,每个种子点有8个方向向量信息,实际计算过程中,为了增强匹配的稳健性,对每个关键点使用4×4共16个种子点来描述,这样对于一个关键点就可以产生128个数据,即最终形成128维的SIFT特征向量。

图所示为特征匹配的一般流程,SIFT描述子生成后,采用欧式距离作为相似性度量。

D越小,表明特征点对应距离越近,形似程度越高。匹配过程中对待匹配的点采用最近领域法搜索图像2中的特征点,找到最近的两个特征点,如果最近距离和次近距离的比值小于某个阈值,则接受这一对匹配点。据此得到的初始匹配结果后,采用RANSAC(随机抽样一致性算法)剔除误匹配。

2.4三维重建

本文采用一部数码相机从不同角度对同一物体拍3张照片,并确保同一特征点出现在3张照片中。然后通过三幅视图的图像对应计算可得到三焦点张量,与两视图几何的基本矩阵类似只与相机参数有关,相机矩阵在相差一个三维空间的射影变换下可借由三焦点张量恢复,同时确定图像之间的基本矩阵。

具体流程如下:1)从序列视图中估计二视图几何,然后连接两视图的匹配集,计算跨三幅视图的一组特征点对应。2)由至少7组非退化的对应关系计算三焦点张量。3)由三焦点张量恢复基本矩阵。4)确定两个相机的矩阵后,在相差一个射影矩阵下恢复第三个相机矩阵。5)可行性误差处理。

在得到三维坐标后,还要进行物体表面的可视化,,文中采用Delaunay三角剖分法重建出物体的三维表面。最后通过OpenGL完成纹理映射。

基于立体视觉的三维模型重建系统设计相关推荐

  1. 基于图像的三维模型重建——基础介绍

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文由知乎作者梦寐mayshine授权转载,不得擅自二次转载.原文链接:https://zhuanla ...

  2. 基于图像的三维模型重建

    基于图像的三维模型重建--特征点检测与匹配 学习笔记 ** 题目基于图像的三维模型重建,即关于图像与三维模型重建.在学习知识的过程中最直观的学习方法即是通过图像(画)来学习(比如幼儿时期学习的小儿漫画 ...

  3. 基于图像的三维模型重建——稠密点云重建

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:梦寐mayshine 链接:https://zhuanlan.zhihu.com/p/13159 ...

  4. 三角测量计算三维坐标的代码_计算机视觉10 基于图像的三维模型重建流程总结...

    基于图像的三维重建解释 基于图像的三维重建,是一种通过拍摄一个场景的不同视角的图片,恢复出场景三维模型的方法,三维重建在逆向工程,文物保护,增强现实等领域有着广泛的应用. 本文只总结流程,不做算法的详 ...

  5. 基于图像的三维模型重建——相机模型与对极几何

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:梦寐mayshine https://zhuanlan.zhihu.com/p/12968108 ...

  6. 基于3DSOM的侧影轮廓方法空间三维模型重建

    基于3DSOM的侧影轮廓方法空间三维模型重建 1 背景知识 1.1 三维信息获取方法 1.2 侧影轮廓方法原理及其流程 2 三维模型制作 2.1 马铃薯三维模型制作 2.1.1 多角度图像导入 2.1 ...

  7. 基于EinScan-S的编码结构光方法空间三维模型重建

    基于EinScan-S的编码结构光方法空间三维模型重建 1 相关原理 1.1 编码结构光成像原理 1.2 编码结构光编码方式 1.3 编码结构光与侧影轮廓方法比较 1.4 编码结构光方法流程 2 三维 ...

  8. 基于Pix4Dmapper的运动结构恢复无人机影像三维模型重建

    基于Pix4Dmapper的运动结构恢复无人机影像三维模型重建 1 背景知识 1.1 运动结构恢复方法原理 1.2 运动结构恢复方法流程 2 软件与数据准备 2.1 软件准备 2.2 数据准备 3 研 ...

  9. 基于图像的三维物体重建:在深度学习时代的最新技术和趋势综述之训练

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 1利用其他线索 前面几节讨论了直接从二维观测重建三维对象的方法.本节展示了如何使用附加提示,如中间表示 ...

最新文章

  1. 如何从零设计一款高并发架构(建议收藏)
  2. 还在学JVM?我都帮你总结好了(附脑图)
  3. UVA 10304 Optimal Binary Search Tree
  4. 想看Vue文档,cn放错位置,误入xx网站...
  5. Fastreport.Net用户手册:报表页
  6. 正则表达式中原子的5种类型
  7. WPF ----在UserControl的xaml里绑定依赖属性
  8. VMware虚拟机设置(vmtools分辨率)
  9. spring视频教程下载
  10. aspnetpager 详解
  11. 常用的VS Code插件(Java后台、前端)
  12. TDSQL将发布免费版本,助力国产数据库生态完善
  13. 明珠三国java最新_新明珠三国下载-新明珠三国最新版下载v5.0-三国在线
  14. 基于SQLite的信息管理系统
  15. Linuux-alsa-左右声道处理
  16. 禁止vite打包时将rgba转为16进制
  17. 关于Spark和Spark的学习资料
  18. 计算机起源英语短文,有关计算机发展史的英语短文
  19. Cloudsim 3.0.3中VM调度策略系列类解析(带迁移的策略)
  20. 第五章第十七题(显示金字塔)(Display pyramid)

热门文章

  1. 万字详文告诉你如何做 Code Review!
  2. qq登录界面句柄_注册QQ飞车日服账号
  3. cv曲线面积的意义_南昌大学陈义旺、武汉大学闵杰《AFM》:大面积有机太阳能电池中一种减少非辐射复合损耗的有效方法...
  4. Linux软件安装失败问题,source.list用了bionic,实际上我的Linux是focal版本
  5. java语言就业方向_Java的就业方向有哪些?
  6. 分享宝贵的考研心得, 做到这些,考研无惧暗箱操作!
  7. android必备软件!零基础如何成为高级Android开发,薪资翻倍
  8. 制作像UberEats和Deliveroo这样的移动应用程序需要多少钱
  9. 从零开始安卓端相机功能开发(一)了解用什么去开发以及流程
  10. c++ 多边形求交集代码(凸多边形与凸多边形交集)