百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

基于改进SFM的三维重建算法研究

toyiye 2024-06-21 12:01 7 浏览 0 评论

物体建模往往需要大量人力和物力,但随着计算机算力提高,计算机视觉研究的不断深入和摄影设备的普及,基于视觉的建模技术成为解决此问题的一种新方法,并成功运用于文物保护、增强现实、自动驾驶、大规模场景三维重建以及医学图像处理等领域[1]。三维重建作为计算机视觉的一个重要研究内容,基于Marr理论框架,形成了多种理论方法,运动恢复结构(Structure from Motion,SFM)方法[2]是最广泛采用的方法之一。近年来,基于SFM研制出多种建模系统,如Visual SFM[3]、ETH-3D[4]、LS-ACTS[5]等。

特征点匹配是基于SFM重建算法中最关键的一步,直接影响重建效果[2]。目前主要匹配算法有KLT(Kanade Lucas Tomasi Tracking,KLT)算法[6]、尺度不变特征转换(Scale Invariant Feature Transform,SIFT)算法[7]和加速稳健特征(Speeded Up Robust Features,SURF)算法[8]等,以及一些上述算法的改进算法,如基于仿射变换的SURF算法[9]。文献[10]采用SIFT算法提取图像特征点并匹配,结合相机参数将一组匹配点映射为一组空间直线,由于各种误差的存在,直线间将异面,取异面直线公垂线的中点为三维空间点。但SIFT算法实时性差,不利于未来工程应用。文献[11]使用SURF算法,寻找图像序列中的特征点,利用随机抽样一致(Random Sample Consensus,RANSAC)算法优化求解相机位置参数,得到图像的投影矩阵,并三角化生成空间点云,利用投影矩阵将三维点反投影回原图像,消除与原匹配点误差太大的特征点。但SIFT和SURF算法得到的匹配数据都比较稀疏,导致模型不完整。

基础矩阵描述了两幅图像间对极几何的关系,估计基础矩阵是重建过程中重要的一步。估计基础矩阵常用的方法有七点法和八点法等方法,具有计算速度快的优点,但对噪声敏感[12]。HARLEY R I提出了归一化八点算法,在估计基础矩阵前对匹配点归一化处理,提高了算法的抗噪能力[13]

在基于SFM重建算法中,基础矩阵的估计要求匹配数据精度高,三角化重建要求匹配数据数量大,二者对匹配数据的要求不同。本文提出一种采用不同匹配数据的重建算法,首先通过对比上下文直方图(Contrast context histogram,CCH)算法[14-15]提取图像匹配点对,使用归一化八点算法和M估计抽样一致(M-estimator Sample and Consensus,MSAC)算法[11]计算基础矩阵F,结合摄像机内参得到本质矩阵后,计算图像旋转矩阵R和平移矩阵T,并得到相机投影矩阵P;然后使用KLT特征跟踪算法更新匹配数据,三角化得到匹配点三维信息;最后将图像匹配点的颜色赋予三维空间点,得到具有颜色信息的点云模型。实验表明,本文算法能有效得到目标点云模型。

1 相关研究工作

1.1 CCH匹配算法

计算CCH描述子之前,通过多尺度拉普拉斯金字塔下提取Harris角点[15]。将每一个角点Pc的邻域分为4个同心圆,每个圆区域均匀分为8个不重叠子区域,因此,存在32个子区域(r1,r2,…,r32)。将Pc点的方向设置为CCH描述子的0°方向,并以最小半径同心圆0°的子区域为r1,如图1所示。定义角点Pc邻域内一点P的对比度值:

遍历待匹配图像和匹配图像之间的特征点以进行匹配,CCH算法采用基于最近距离的匹配:

1.2 KLT算法

SFM建模算法为获得高质量的匹配数据,使用的图像大都是在尺度和光照等条件相差不大时取得的,而这正满足KLT算法的假设。Kanade等提出的KLT算法假设在图像的亮度恒定或相差不大、空间一致或有小运动情况下,通过计算特征点的位移,得到对应的匹配点[6]

KLT算法采用计算Hessian矩阵特征值的方法提取图像上特征点。假定在t时刻图像中的一点P1(x,y),对应灰度为I(x,y,t),经过时间dt后运动到新的位置P2(x+dx,y+dy),对应的灰度为I(x+dx,y+dy,t+dt),d=[dx,dy]为位移量,dt为时间变化量。

式中,Ir为两帧图像局部窗口内灰度之差,因而位移d=G-1e,从而得到该点对应的匹配点。

2 改进的三维重建算法

2.1 基础矩阵估算

2.2 投影矩阵计算

从二维图像得到三维空间信息,需要相机的参数,包括相机内参矩阵K、平移矩阵T和旋转矩阵R。

其中,[R t]为3×4的外参矩阵,P=K×[R t]为内外参组合后3×4的投影矩阵。

2.3 三角化

2.4 改进三维重建的流程

序列图像的重建是在两幅图像重建基础上通过增加匹配数据,得到更密集的点云。所以两幅图像的重建是SFM重建的基础,若两幅图像间重建得到大量的数据,可以极大地减少工作量。本文均以两幅图像为重建数据,分为以下几步:

(1)计算CCH描述子:导入图像,根据1.1节中方法得到CCH描述子,并得到匹配点对;

(2)估计基础矩阵F:基础矩阵的估计是为了得到本质矩阵E。使用2.1节中提到的方法估计基础矩阵,结合内参矩阵得到本质矩阵;

(3)计算投影矩阵P:通过对本质矩阵E的分解得旋转矩阵R和平移矩阵T,结合相机内参恢复出相机的投影矩阵;

(4)更新匹配数据:采用1.2节中提到的KLT算法,跟踪特征点,更新匹配数据;

(5)三角化:利用2.3节方法,计算三维点生成点云;

(6)点着色:将图像匹配点对的颜色赋予空间三维点,得到有色彩的点云。

3 实验结果与分析

本文算法在Intel i3 CPU、4 GB RAM的Windows 7操作系统下,使用MATLAB R2016a实现。实验由两部分组成:(1)Fountain和Herz-Jesu图像[16],并将本文算法与文献[10]和文献[11]中的算法进行对比;(2)Desktop和Symbol图像,采用IMX258摄像头(Nubia手机内置)拍摄,分别为电脑桌面和西南科技大学制造科学与工程学院标志,以验证本文算法在真实场景下的可行性。

3.1 算法对比实验

图2和图3分别为Fountain图像和Herz-Jesu图像重建结果,算法均采用为两幅图像重建生成点云,图中只列举了其中一幅,表1和表2为重建点云的数量和时间的对比。可以看到本文算法生成的点云在点的数量上优势明显。Herz-Jesu图像分辨率为3 024×2 048,建模效果比分辨率为720×480的Fountain图像要好,因为高分辨率意味着更丰富的信息。采用文献[10]和文献[11]中特征提取与匹配的方法,在特征匹配阶段,对于图像低频特征区域,描述子之间相似度较高,容易被认为是误匹配而被剔除,导致显示为空洞,如Herz-Jesu图像的“墙”部分,而采用本文算法可以得到“墙”部分点云。

基于SIFT和SURF提取特征并匹配的方法,能够在图像光照、旋转及尺度等多种条件的变化下取得很好的匹配效果。而对于SFM来说,图像都是在光照和尺度等条件变化比较小的情况下取得的,以相机为参考系,可以认为场景内物体进行了小运动。此前提下,采用KLT特征追踪算法更新匹配数据,可以得到更好的效果。KLT算法基于特征的小运动假说,通过计算特征点的位移实现匹配,在图像低频区域,避免了特征点匹配时描述子相似度高而被剔除。因此,对于SFM重建方法,生成点云时,使用基于KLT的跟踪算法更合适。

SFM三维重建方法中两次使用匹配数据,第一次用于计算基础矩阵,第二次用于三维重建。在图像匹配上CCH算法具有很高精度,同时匹配点数量较其他方法减少,利于MSAC算法迭代计算基础矩阵,使计算结果收敛。

3.2 真实场景重建实验

采用张正友相机标定方法将IMX258摄像头进行相机标定,标定得到对应于式(10)中相机的参数:αx=3 115.833 678、γ=7.867 908、u0=1 527.096 651、αy=3 132.207 642、v0=2 073.525 058。表3为使用本文算法得到的图像运动参数。图4(a)和图4(c)为拍摄得到的Desktop图像与Symbol图像,分辨率均为4 160×3 120;图4(b)和图4(d)分别是使用本文算法建模的对应结果,点云模型点数量分别为43 374和56 013。可以看出,采用本文算法实现的物体的三维重建,其得到的点云模型相对完整。

4 结束语

本文通过分析基于SFM的三维重建算法对匹配数据的要求不同,提出一种改进的三维重建算法。使用CCH算法得到匹配数据计算基础矩阵,使用KLT角点跟踪算法更新匹配数据,最后得到有色彩的点云模型。与现有的算法相比,本文算法在图像低频区域能得到更丰富的匹配数据,重建模型更完整。

本文算法实现了基于图像的建模,并取得了较好效果。由于手机透镜采用塑胶透镜,光学性能较玻璃透镜低;同时手机CMOS传感器性能比专业单反低。因此Desktop和Symbol的图像质量比Fountain和Herz-Jesu差,下一步将研究提高手机拍摄图像质量的算法,结合本文算法开发基于序列图像的三维重建APP,实现使用手机完成图像的拍摄和重建全过程。

参考文献

[1] 佟帅,徐晓刚,易成涛,等.基于视觉的三维重建技术综述[J].计算机应用研究,2011,28(7):2411-2417.

[2] CAO M,CAO L,JIA W,et al.Evaluation of local features for structure from motion[J].Multimedia Tools & Applications,2018,77(9):1-15.

[3] WU C.Towards linear-time incremental structure from motion[C].International Conference on 3D Vision,IEEE Computer Society,2013:127-134.

[4] ZACH C.Robust bundle adjustment revisited[C].European Conference on Computer Vision.Springer,2014:772-787.

[5] ZHANG G,LIU H,DONG Z,et al.Efficient non-consecutive feature tracking for robust structure from motion[J].IEEE Trans Image Process,2015,25(12):5957-5970.

[6] SHI J,TOMASI C.Good features to track[C].Proceedings of IEEE Conference on Computer Vision and Pattern Recognition.IEEE,2002:593-600.

[7] LOWE D G.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,60(2):91-110.

[8] BAY H,ESS A,TUYTELAARS T,et al.Speeded-up robust features[J].Computer Vision & Image Understanding,2008,110(3):404-417.

[9] 刘欣,李校林,谢灿,等.一种基于仿射变换的SURF图像配准算法[J].电子技术应用,2014,40(6):130-132.

[10] 胡影峰.基于SIFT特征匹配算子的三维重建方法研究[J].自动化仪表,2011,32(1):30-32.

[11] 景子君.运动法三维重建的研究与实现[D].合肥:中国科学技术大学,2018.

[12] 阚江明.基于计算机视觉的活立木三维重建方法[D].北京:北京林业大学,2008.

[13] HARTLEY R I.In defence of the 8-point algorithm[C].International Conference on Computer Vision,IEEE Computer Society,1995:1064-1070.

[14] HUANG C R,CHEN C S,CHUNG P C.Contrast context histogram a discriminating local descriptor for image matching[C].International Conference on Pattern Recognition.IEEE,2006:53-56.

[15] HUANG C R,CHEN C S,CHUNG P C.Contrast context histogram—An efficient discriminating local descriptor for object recognition and image matching[J].Pattern Recognition,2008,41(10):3071-3077.

[16] STRECHA C,HANSEN W V,GOOL L V,et al.On benchmarking camera calibration and multi-view stereo for high resolution imagery[C].2018 IEEE Conference on Computer Vision and Pattern Recognition.IEEE,2008:1-8.

作者信息:

蒋华强1,2,蔡 勇1,2,张建生1,李自胜1,2

(1.西南科技大学 制造科学与工程学院,四川 绵阳621010;

2.制造过程测试技术省部共建教育部重点实验室,四川 绵阳621010)

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码