CN105787464A - 一种大量图片在三维场景中的视点标定方法 - Google Patents
一种大量图片在三维场景中的视点标定方法 Download PDFInfo
- Publication number
- CN105787464A CN105787464A CN201610158627.9A CN201610158627A CN105787464A CN 105787464 A CN105787464 A CN 105787464A CN 201610158627 A CN201610158627 A CN 201610158627A CN 105787464 A CN105787464 A CN 105787464A
- Authority
- CN
- China
- Prior art keywords
- photographs
- threedimensional model
- point
- camera
- parameter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 40
- 238000009877 rendering Methods 0.000 claims abstract description 22
- 230000009466 transformation Effects 0.000 claims abstract description 20
- 238000005457 optimization Methods 0.000 claims abstract description 16
- 239000013598 vector Substances 0.000 claims description 41
- 239000011159 matrix material Substances 0.000 claims description 32
- 238000013519 translation Methods 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 6
- 230000008878 coupling Effects 0.000 claims description 5
- 238000010168 coupling process Methods 0.000 claims description 5
- 238000005859 coupling reaction Methods 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 3
- 238000009795 derivation Methods 0.000 claims description 3
- 238000005259 measurement Methods 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 9
- 238000011156 evaluation Methods 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 6
- 238000007405 data analysis Methods 0.000 description 3
- 239000000463 material Substances 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 241000270322 Lepidosauria Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003203 everyday effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 244000097202 Rathbunia alamosensis Species 0.000 description 1
- 235000009776 Rathbunia alamosensis Nutrition 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/35—Categorising the entire scene, e.g. birthday party or wedding scene
- G06V20/38—Outdoor scenes
- G06V20/39—Urban scenes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
- G06T15/205—Image-based rendering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10004—Still image; Photographic image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20092—Interactive image processing based on input by user
- G06T2207/20101—Interactive definition of point of interest, landmark or seed
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- Computing Systems (AREA)
- Geometry (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种大量图片在三维场景中的视点标定方法,包括以下步骤:1,数据准备,准备好场景中需要标定的多张图片,以及其对应的网格三维模型;2,图片的自标定,在整个图片集上运行SfM算法,恢复出场景的点云三维模型,以及每张图片关于点云三维模型的相机内外参数;3,校准点云三维模型和网格三维模型,在两个模型上分别标定6个以上对应点后,使用数值优化的方法求解两个模型之间的变换;4,确定图片在网格三维模型下的相机内外参数,利用变换的传递性质,得到图片在网格三维模型下的拍摄参数;5,渲染和评价,将相机参数应用于原模型进行渲染,并比较算法的效果。
Description
技术领域
本发明属于计算机视觉,人工智能,自动化等领域,涉及大量图片在三维场景中的视点标定方法,更具体的是,在少量交互下,对同一场景大量图片进行相机自动定标的方法。
背景技术
随着互联网和相机技术的不断发展,人们越来越习惯于拍摄照片并分享到网络上。常见的社交网站Facebook、Twitter、人人网、新浪微博等,每天都有大量的用户上传所拍摄的照片。除此之外,还有一些摄影爱好者图片分享网站,每天也有大量图片上传,例如Flickr、网易Lofter等。
进入大数据时代,基于照片的数据分析才刚刚开始。很多数据分析任务,都需要感知图片在场景中的位置。目前情况下,某些摄录设备会自动在照片上加上GPS(GlobalPositioningSystem)信息,例如iPhone、单反相机。不过互联网上更常见的情况是图片中不携带GPS信息。于是,确定每张图片在场景中的位置是一个热切的需求。
常见的单张图片定标方法,是在网格三维模型和图片上标记一系列的对应点,据此采用直接线性变换的方法(DirectLinearTransformation-DLT)确定该图片在网格三维模型下的相机内外参数。如果同一场景有大量图片需要标定,则采用该方案代价很高。过于高昂的代价,使得一些数据分析任务根本不能进行。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术领域的空白,提供一种对同一场景下大量图片的自动定标方法,给定某个场景的大量图片和网格三维模型情况下,用户仅需要极少量的交互即可得到每张照片的拍摄位置和焦距。
技术方案:本发明公开了大量图片在三维场景中的视点标定方法,其特点在于仅需要少量的交互即可确定大量图片和网格三维模型之间的空间位置关系,并提出了一种算法自动地确定每张图片拍摄时所在位置以及焦距信息,其特征在于,包括以下步骤:
步骤1,数据准备:选定一个场景,例如凯旋门、巴黎圣母院、自由女神等,获取其相关的摄影图片及对应的网格三维模型;
步骤2,图片之间的自标定:对图片应用SfM(StructurefromMotion,运动中探知结构)算法,得到场景的部分点云三维模型,并推断出每张摄影图片在该点云三维模型下的相机内外参数;
步骤3,校准点云三维模型和网格三维模型:网格三维模型来源于互联网素材库,与步骤4求得的网格三维模型会有一定差异。在此标定6个以上的对应点后,使用数值优化的方法求解两个模型之间的变换;
步骤4,确定摄影图片在网格三维模型下的相机内外参数:利用校准点云三维模型和网格三维模型变换的传递性质,求得摄影图片在网格三维模型下的拍摄参数;
步骤5,渲染和评价:经过步骤4得到了一系列相机内外参数,将每对拍摄参数分别应用于网格三维模型上进行渲染,生成结果图片,比较生成的结果图片和原摄影图片视点是否一致,并评价算法效果的优劣。
其中,步骤1中包括以下步骤:
步骤1-1,选定一个场景,例如:凯旋门、巴黎圣母院、自由女神等,从互联网上使用爬虫获取该场景一定量(一般300张以上)的摄影图片;
步骤1-2,获取该场景的网格三维模型,可以从3DWarehouse上搜索并下载。一律使用3DSMax导出为WavefrontOBJ格式保存。
步骤2中,图片之间的自标定是指在所有图片上提取特征,并使用特征匹配的方法寻找图片之间的关系,建立并解决优化问题得到场景的点云三维模型,以及各张图片在点云三维模型下的相机内外参数,包括以下步骤:
步骤2-1,对获取的每张摄影图片使用SIFT算法(Scale-invariantfeaturetransform,尺度不变特征转化)提取特征点,每个特征点可以表示为一个128维的特征向量fea=(α1,α2,α3,……,α128),点i和点k对应特征向量feai和feak,它们之间的距离distik定义为
其中αij表示特征向量feai的第j个分量,αkj表示特征向量feak的第j个分量,该特征向量用于检测两幅图像之间是否有匹配关系;
步骤2-2,检测两幅摄影图片之间是否有匹配关系:计算每张图片的SIFT特征点,每张图片的每个特征点都由128维的向量来描述,通过特征向量来计算不同图片中特征点之间的距离来确定这两张图片之间是否有匹配关系;每一张摄影图片i都对应一个相机,一个相机的参数有7个参数来描述,分别是具有三个分量的旋转向量Θi=[θi1θi2θi3],一个具有三个分量的平移向量ti=[ti1ti2ti3]和焦距fi;如果两幅摄影图片中有相同的点p,则这个点p和两个相机的中心位置O1以及O2是共面的,因此得到极线约束ui TFijuj=0,其中参数ui和uj分别存放着点p在摄影图片i中的坐标位置和点p在摄影图片j中的坐标位置,Fij为摄影图片i和图片j之间构成的基础矩阵,对任意两幅摄影图片使用RANSAC方法对极线约束求出基础矩阵,由此基础矩阵计算出两幅摄影图片之间检测出的SIFT特征点相对应的个数ninliers,nmatch表示一般情况下应该匹配的特征点的个数,inliers表示通过基础矩阵验证之后的SIFT特征匹配的特征点,match则表示一般情况下应该匹配的SIFT特征点,当ninliers>nmatch,则判定这两幅摄影图片之间有匹配关系,nmatch的取值为常量;
步骤2-3,
从所有匹配摄影图片中的SIFT特征点匹配最多的两幅摄影图片开始一个一个地加入相机,每一个特征匹配的联通部分定义了一个三维点Xj,误差函数e如下式所示定义为投影的3D点和检测的特征点之间的平方和:
e=∑i∈I∑j∈X(i)f(rij)2,
其中I是所有摄影图片的集合,X(i)是投影到摄影图片i上的三维点的集合,函数f(rij)是一个鲁棒性误差函数,rij是检测出来的摄影图片i和摄影图片j之间互相匹配的特征点的位置和投影的三维点之间的差值,如下式所示:
rij=mij-uij,
其中mij是检测的特征点的位置,uij是三维点Xj在摄影图片i上的投影点,通过下式计算:
uij=Ki(RiXj+ti),
其中,Ki是摄影图片i对应的相机的投影矩阵,Ri是图片i对应的旋转矩阵,ti为图片i对应的平移向量,使用莱文贝格-马夸特算法来解决这个非线性的最小平方问题,每一次的迭代都具有如下形式:
其中Φ=[Θ,X]是由相机参数Θ和结构化参数三维点坐标X所组成的向量,r是向量剩余值,J=δr/δΦ,J是一个M×N的雅克比矩阵,M是测量数据的数量即检测数的SIFT特征点数量的2倍,N=nΘ+nX,nΘ表示相机参数的数量,nX表示结构参数三维点的数量,Cprior为一个先验的协方差矩阵,直接求出Φ,得出每个摄影图片对应的相机参数;
步骤2-4,通过摄影图片对应的相机参数,恢复出点云三维模型:选取其中的一个相机作为标准的坐标系,通过相机参数得到特征点的平面坐标,从而恢复出点云三维模型。真实3D场景中的点会在相机中心到对应图片中点的射线上,当再加入一个有相同特征点的相机时,就有了两条射线,而这两条射线的交点就是3D场景中的真实点的位置。
步骤3中,校准点云三维模型和网格三维模型,是指在两个模型上标定6个或以上的对应点,求得两个不同模型之间的变换关系,包括以下步骤:
步骤3-1,使用程序同时载入该场景的点云三维模型和网格三维模型;
步骤3-2,在点云三维模型和网格三维模型上分别拾取n个对应点,n≥6,并得到这些点在各自模型中的坐标表示,记yk为第kk个点在点云三维模型中的坐标,1≤k≤n,记xk为第k个点在网格三维模型中的坐标;
步骤3-3,将拾取的点坐标作为输入,推导变换参数和已知点对坐标之间的关系:
yk=cRxk+t,
其中,i是对应点的下标,c、R和t是三个未知的参数,c表示点云三维模型和网格三维模型之间的尺度变换参数,为一个实数;R表示旋转变换,是一个3x3的实数矩阵;t表示平移变换,是一个三维的实数向量;
步骤3-4,将点对坐标关系转换为一个二阶优化问题:
上式表示通过找到合适的参数c,R,t,使得经过公式变换后的点坐标与实际点坐标之间误差的平方和最小;
步骤3-5,将优化问题转换为数值优化库-Levmar中的形式,并使用莱文贝格-马夸特(Levenberg-Marquardt)方法求解。根据最小化目标反复迭代,求得c,R,t这三个参数。
步骤4中,通过变换的传递,得到每张摄影图片在网格三维模型下的相机内外参数,包括以下步骤:
步骤4-1,根据步骤3-5得到的三个参数,将任何一个在网格三维模型下的点坐标x,在点云三维模型下对应的坐标y为:
y=cRx+t,
步骤4-2,假设一张摄影图片在点云三维模型下的外参数为(R′,t′),其中,R′表示相机的旋转矩阵,为一个3x3的正交矩阵;t′为相机的平移向量,是一个3维向量。(R′,t′)即构成了拍摄图片时相机的外参数,则点云坐标系下任一点y在相机坐标系下的坐标y′表示为:
y′=R′y+t′;
步骤4-3,使用以下公式得到网格三维模型到该相机坐标系的坐标变换:
y′=R′y+t′=R′(cRx+t)+t′=cR′Rx+(R′t+t′);
步骤4-4,在网格三维模型下,将该摄影图片视点的外参数表示为(cR′R,R′t+t′),内参数与步骤2求出的内参数保持一致,得到外参数中的相机拍摄的视点和在内参数中的相机焦距信息。
步骤5中,使用步骤4得到的相机参数,渲染网格三维模型从而便于评价,包括以下步骤:
步骤5-1,对每张摄影图片,使用OpenGL(开源图形库)渲染网格三维模型,其中,以步骤4得到的相机外参数作为渲染时的“模型-相机变换”;以步骤2得到的相机内参数作为渲染时的“投影变换”。渲染的结果以PNG图片格式存储;
步骤5-2,比较原图和对应的渲染结果,模型渲染结果与原图愈一致,则表示相机标定的效果愈精准。相对于查看恢复出的相机内外参数数据,浏览模型渲染图用户能够更简单地评价恢复得到视点的正确性。
有益效果:本发明的显著优点是:
(1)本发明提出的大量图片在三维场景中的视点标定方法在一定程度上弥补了该领域的空白,解决了传统单独标定每张图片的方法效率低下的问题;
(2)本发明提出的自动标定算法具有一般性,对常见单建筑场景均适用;
(3)本发明提出的自动标定方法准确率高,大部分情况下恢复出的视点与原视点一致。
附图说明
图1为本发明方法的基本流程图。
图2为凯旋门的摄影作品,作为欲标定的图片集。
图3为凯旋门的网格三维模型。
图4为生成的点云三维模型。
图5为三维模型的校准过程示例。
图6为算法最终的可视化结果。
具体实施方式
下面结合附图和具体实施方式对本发明做更进一步的具体说明。
本方法的流程图如图1所示,分为五大过程,首先是准备需要标定的摄影图片,以及用于代表场景的网格三维模型;其次是在图片上提取特征并利用图片相关关系,恢复出部分的点云三维模型;之后建立优化目标,确定网格三维模型到点云三维模型的变换;然后推导出每张图片在网格三维模型下的相机内外参数;最后使用得到的相机内外参数,渲染网格三维模型到图片文件,比较视点恢复的效果。
具体的说,如图1所示,本发明公开了一种大量图片在三维场景中的视点标定方法,主要包括以下几个步骤:
步骤1,数据准备:选定一个场景,例如凯旋门、巴黎圣母院、自由女神等,获取好其相关的摄影图片及对应的网格三维模型;
步骤2,图片之间的自标定:对图片应用SfM算法,得到场景的部分点云三维模型,并推断出每张摄影图片在该点云三维模型下的相机内外参数;
步骤3,校准点云三维模型和网格三维模型:网格三维模型来源于互联网素材库,与步骤4求得的网格三维模型会有一定差异。在此标定6个以上的对应点后,使用数值优化的方法求解两个模型之间的变换;
步骤4,确定摄影图片在网格三维模型下的相机内外参数:利用校准点云三维模型和网格三维模型变换的传递性质,求得摄影图片在网格三维模型下的拍摄参数;
步骤5,渲染和评价:经过步骤4得到了一系列相机内外参数,将每对拍摄参数分别应用于网格三维模型上进行渲染,生成结果图片,比较生成的结果图片和原摄影图片视点是否一致,并评价算法效果的优劣。
其中,步骤1中包括以下步骤:
步骤1-1,选定一个场景,例如:凯旋门、巴黎圣母院、自由女神等,从互联网上使用爬虫获取该场景300张以上的摄影图片;
步骤1-2,获取该场景的网格三维模型,可以从3DWarehouse上搜索并下载。一律使用3DSMax导出为WavefrontOBJ格式保存。
步骤2中,图片之间的自标定是指在所有图片上提取特征,并使用特征匹配的方法寻找图片之间的关系,建立并解决优化问题得到场景的点云三维模型,以及各张图片在点云三维模型下的相机内外参数,包括以下步骤:
步骤2-1,对获取的每张摄影图片使用SIFT算法(Scale-invariantfeaturetransform,尺度不变特征转化)提取特征点,每个特征点可以表示为一个128维的特征向量fea=(α1,α2,α3,……,α128),点i和点k对应特征向量feai和feak,它们之间的距离distik定义为
其中αij表示特征向量feai的第j个分量,αkj表示特征向量feak的第j个分量,该特征向量用于检测两幅图像之间是否有匹配关系,;
步骤2-2,检测两幅摄影图片之间是否有匹配关系:计算每张图片的SIFT特征点,每张图片的每个特征点都由128维的向量来描述,通过特征向量来计算不同图片中特征点之间的距离来确定这两张图片之间是否有匹配关系;每一张摄影图片i都对应一个相机,一个相机的参数有7个参数来描述,分别是具有三个分量的旋转向量Θi=[θi1θi2θi3],一个具有三个分量的平移向量ti=[ti1ti2ti3]和焦距fi;如果两幅摄影图片中有相同的点p,则这个点p和两个相机的中心位置O1以及O2是共面的,因此得到极线约束ui TFijuj=0,其中参数ui和uj分别存放着点p在摄影图片i中的坐标位置和点p在摄影图片j中的坐标位置,Fij为摄影图片i和图片j之间构成的基础矩阵,对任意两幅摄影图片使用RANSAC方法对极线约束求出基础矩阵,由此基础矩阵计算出两幅摄影图片之间检测出的SIFT特征点相对应的个数ninliers,当ninliers>nmatch,nmatch,表示一般情况下应该匹配的特征点的个数,inliers表示通过基础矩阵验证之后的SIFT特征匹配的特征点,match则表示一般情况下应该匹配的SIFT特征点,则判定这两幅摄影图片之间有匹配关系,nmatch的取值为常量;
步骤2-3,
从所有匹配摄影图片中的SIFT特征点匹配最多的两幅摄影图片开始一个一个地加入相机,每一个特征匹配的联通部分定义了一个三维点Xj,误差函数e如下式所示定义为投影的3D点和检测的特征点之间的平方和:
e=∑i∈I∑j∈X(i)f(rij)2,
其中I是所有摄影图片的集合,X(i)是投影到摄影图片i上的三维点的集合,这里的函数f(rij)是一个鲁棒性误差函数,rij是检测出来的摄影图片i和摄影图片j之间互相匹配的特征点的位置和投影的三维点之间的差值,如下式所示:
rij=mij-uij,
其中mij是检测的特征点的位置,uij是点Xj在摄影图片i上的投影点,通过下式计算:
uij=Ki(RiXj+ti),
其中,Ki是摄影图片i对应的相机i的投影矩阵,Ri是图片i对应的旋转矩阵,ti为图片i对应的平移向量,使用莱文贝格-马夸特算法来解决这个非线性的最小平方问题,每一次的迭代都具有如下形式:
其中Φ=[Θ,X]是由相机参数Θ和结构化参数三维点坐标X所组成的向量,r是向量剩余值,J=δr/δΦ,J是一个M×N的雅克比矩阵,M是测量数据的数量即检测数的SIFT特征点数量的2倍,N=nΘ+nX,nΘ表示相机参数的数量,nX表示结构参数三维点的数量,Cprior为一个先验的协方差矩阵,直接求出Φ,得出每个摄影图片对应的相机参数;
步骤2-4,通过摄影图片对应的相机参数,恢复出点云三维模型:选取其中的一个相机作为标准的坐标系,通过相机参数得到特征点的平面坐标,真实3D场景中的点会在相机中心到对应图片中点的射线上,当我们再加入一个有相同特征点的相机时,我们就有了两条射线,而这两条射线的交点就是3D场景中的真实点的位置。
步骤3中,校准点云三维模型和网格三维模型,是指在两个模型上标定6个或以上的对应点,求得两个不同模型之间的变换关系,包括以下步骤:
步骤3-1,使用程序同时载入该场景的点云三维模型和网格三维模型;
步骤3-2,在点云三维模型和网格三维模型上分别拾取n(n≥6)个对应点,并得到这些点在各自模型中的坐标表示,记yk为第k(1≤k≤n)个点在点云三维模型中的坐标,记xk为第k个点在网格三维模型中的坐标;
步骤3-3,将拾取的点坐标作为输入,推导变换参数和已知点对坐标之间的关系:
yk=cRxk+t,
其中,k是对应点的下标,c、R和t是三个未知的参数,c表示点云三维模型和网格三维模型之间的尺度变换参数,为一个实数;R表示旋转变换,是一个3x3的实数矩阵;t表示平移变换,是一个三维的实数向量;
步骤3-4,将点对坐标关系转换为一个二阶优化问题:
上式表示通过找到合适的参数c,R,t,使得经过公式变换后的点坐标与实际点坐标之间误差的平方和最小;
步骤3-5,将优化问题转换为数值优化库-Levmar中的形式,并使用莱文贝格-马夸特(Levenberg-Marquardt)方法求解。根据最小化目标反复迭代,求得c,R,t这三个参数。
步骤4中,通过变换的传递,得到每张摄影图片在网格三维模型下的相机内外参数,包括以下步骤:
步骤4-1,根据步骤3-5得到的三个参数,将任何一个在网格三维模型下的点坐标x,在点云三维模型下对应的坐标y为:
y=cRx+t,
步骤4-2,假设一张摄影图片在点云三维模型下的外参数为(R′,t′),其中,R′表示相机的旋转矩阵,为一个3x3的正交矩阵;t′为相机的平移向量,是一个3维向量。(R′,t′)即构成了拍摄图片时相机的外参数,则点云坐标系下任一点y在相机坐标系下的坐标y′表示为:
y′=R′y+t′;
步骤4-3,替换步骤4-2公式中的变量y,得到网格三维模型到该相机坐标系的坐标变换:
y′=R′y+t′=R′(cRx+t)+t′=cR′Rx+(R′t+t′);
步骤4-4,在网格三维模型下,将该摄影图片视点的外参数表示为(cR′R,R′t+t′),内参数与步骤2求出的内参数保持一致,等价于得到了蕴含在外参数中的相机拍摄的视点和蕴含在内参数中的相机焦距信息;
步骤5中,使用步骤4得到的相机参数,渲染网格三维模型从而便于评价,包括以下步骤:
步骤5-1,对每张摄影图片,使用OpenGL(一种开源图形库)渲染网格三维模型,其中,以步骤4得到的相机外参数作为渲染时的“模型-相机变换”;以步骤2得到的相机内参数作为渲染时的“投影变换”。渲染的结果以PNG图片格式存储;
步骤5-2,比较原图和对应的渲染结果,模型渲染结果与原图愈一致,则表示相机标定的效果愈精准。相对于查看恢复出的相机内外参数数据,浏览模型渲染图用户能够更简单地评价恢复得到视点的正确性。
实施例
本实施例的实验硬件环境是:Intel(R)Core(R)i5-2300CPU2.8GHz,10GB内存,NVIDIAGTX550显卡,软件环境是MicrosoftVisualStudio2013、QtCreator3.3,MicrosoftWindows8Professional和Matlab2012a。测试样例来自网络上公开的图片。
步骤1,数据准备:选定一个场景,例如凯旋门、巴黎圣母院、自由女神等,准备好其相关的摄影图片,及对应的网格三维模型。此处选择凯旋门模型作为演示,图2a和图2b(图中文字与本发明内容无关)是需要定标的图片,图3是凯旋门的网格三维模型;
步骤2,图片之间的自标定:对图片应用SfM算法,得到场景的部分点云三维模型,并推断出每张图片在该点云三维模型下的相机内外参数。算法运行完毕后,得到的点云三维模型如图4所示;
步骤3,校准点云三维模型和网格三维模型:网格三维模型来源于互联网素材库,与步骤4求得的网格三维模型会有一定差异。在此标定6个以上的对应点后,使用数值优化的方法求解两个模型之间的变换。标定点云三维模型和网格三维模型的过程分别如图5a和图5b所示;
步骤4,确定图片在网格三维模型下的相机内外参数:利用变换的传递性质,求得图片在网格三维模型下的拍摄参数;
步骤5,渲染和评价:经过步骤4得到了一系列相机内外参数,将每对参数分别应用于网格三维模型上进行渲染,可以生成一系列的图片。比较生成的图片和原图片视点是否一致,从而评价算法效果的优劣。算法的部分结果如图6a~图6d所示,每张图片在结果中对应两个输出,其中,图6a和6c(图中文字与本发明内容无关)分别是两张不同的原图,图6b和6d分别是原图标定后的渲染效果图。模型渲染结果与原图愈一致,则表示相机标定的效果愈精准。
本发明提供了一种大量图片在三维场景中的视点标定方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
Claims (6)
1.一种大量图片在三维场景中的视点标定方法,其特征在于,包括以下步骤:
步骤1,数据准备:选定一个场景相关的摄影图片及对应的网格三维模型;
步骤2,图片之间的自标定:对摄影图片应用SfM算法,得到场景的部分点云三维模型,并推断出每张摄影图片在该点云三维模型下的相机内外参数;
步骤3,校准点云三维模型和网格三维模型;
步骤4,确定摄影图片在网格三维模型下的相机内外参数:利用校准点云三维模型和网格三维模型变换的传递性质,求得摄影图片在网格三维模型下的拍摄参数;
步骤5,将每对拍摄参数分别应用于网格三维模型上进行渲染,生成结果图片。
2.如权利要求1所述的一种大量图片在三维场景中的视点标定方法,其特征在于,步骤1包括以下步骤:
步骤1-1,选定一个场景,从互联网上获取该场景一定量的摄影图片;
步骤1-2,获取该场景的网格三维模型,使用3DSMax导出为WavefrontOBJ格式保存。
3.如权利要求2所述的一种大量图片在三维场景中的视点标定方法,其特征在于,步骤2包括以下步骤:
步骤2-1,对获取的每张摄影图片使用SIFT算法提取特征点,每个特征点表示为一个128维的特征向量,该特征向量用于检测两幅摄影图片之间是否有匹配关系;
步骤2-2,检测两幅摄影图片之间是否有匹配关系:计算每张图片的SIFT特征点,通过特征向量来计算不同图片中特征点之间的距离来确定这两张图片之间是否有匹配关系;每一张摄影图片i都对应一个相机,一个相机的参数有7个参数来描述,分别是具有三个分量的旋转向量Θi=[θi1θi2θi3],一个具有三个分量的平移向量ti=[ti1ti2ti3]和焦距fi;如果两幅摄影图片中有相同的点p,则该点p和两个相机的中心位置O1以及O2是共面的,因此得到极线约束ui TFijuj=0,其中参数ui和uj分别存放着点p在摄影图片i中的坐标位置和点p在摄影图片j中的坐标位置,Fij为摄影图片i和摄影图片j之间构成的基础矩阵,对任意两幅摄影图片使用RANSAC方法对极线约束求出基础矩阵,由此基础矩阵计算出两幅摄影图片之间检测出的SIFT特征点相对应的个数ninliers,当ninliers>nmatch,则判定这两幅摄影图片之间有匹配关系,nmatch的取值为常量;
步骤2-3,从所有匹配摄影图片中的SIFT特征点匹配最多的两幅摄影图片开始一个一个地加入相机,每一个特征匹配的联通部分定义了一个三维点Xj,误差函数e如下式所示定义为投影的三维点和检测的特征点之间的平方和:
e=∑i∈I∑j∈X(i)f(rij)2,
其中I是所有摄影图片的集合,X(i)是投影到摄影图片i上的三维点的集合,函数f(rij)是一个鲁棒性误差函数,rij是检测出来的摄影图片i和摄影图片j之间互相匹配的特征点的位置和投影的三维点之间的差值,如下式所示:
rij=mij-uij,
其中mij是检测的特征点的位置,uij是三维点Xj在摄影图片i上的投影点,通过下式计算:
uij=Ki(RiXj+ti),
其中,Ki是摄影图片i对应的相机的投影矩阵,Ri是图片i对应的旋转矩阵,ti为图片i对应的平移向量,使用莱文贝格-马夸特算法来解决这个非线性的最小平方问题,每一次的迭代都具有如下形式:
其中Φ=[Θ,X]是由相机参数Θ和结构化参数三维点坐标X所组成的向量,r是向量剩余值,J=δr/δΦ,J是一个M×N的雅克比矩阵,M是测量数据的数量即检测数的SIFT特征点数量的2倍,N=nΘ+nX,nΘ表示相机参数的数量,nX表示结构参数三维点的数量,Cprior为一个先验的协方差矩阵,直接求出Φ,得出每个摄影图片对应的相机参数;
步骤2-4,通过摄影图片对应的相机参数,恢复出点云三维模型:选取其中的一个相机作为标准的坐标系,通过相机参数得到特征点的平面坐标,从而恢复出点云三维模型。
4.如权利要求3所述的一种大量图片在三维场景中的视点标定方法,其特征在于,步骤3包括以下步骤:
步骤3-1,载入该场景的点云三维模型和网格三维模型;
步骤3-2,在点云三维模型和网格三维模型上分别拾取n个对应点,n≥6,并得到这些点在各自模型中的坐标表示,记yk为第k个点在点云三维模型中的坐标,1≤k≤n,记xk为第k个点在网格三维模型中的坐标;
步骤3-3,将拾取的点坐标作为输入,推导变换参数和已知点对坐标之间的关系:
yk=cRxk+t,
其中,k是对应点的下标,c、R和t是三个未知的参数,c表示点云三维模型和网格三维模型之间的尺度变换参数,为一个实数;R表示旋转变换,是一个3x3的实数矩阵;t表示平移变换,是一个三维的实数向量;
步骤3-4,将点对坐标关系转换为一个二阶优化问题:
上式表示通过找到合适的参数c,R,t,使得经过公式变换后的点坐标与实际点坐标之间误差的平方和最小;
步骤3-5,将优化问题转换为数值优化库-Levmar中的形式,并使用莱文贝格-马夸特方法求解,根据最小化目标反复迭代,求得c,R,t这三个参数。
5.如权利要求4所述的一种大量图片在三维场景中的视点标定方法,其特征在于,步骤4包括以下步骤:
步骤4-1,根据步骤3-5得到的三个参数,将任何一个在网格三维模型下的点坐标x,在点云三维模型下对应的坐标y表示为:
y=cRx+t,
步骤4-2,假设一张摄影图片在点云三维模型下的外参数为(R′,t′),其中,R′表示相机的旋转矩阵,为一个3x3的正交矩阵;t′为相机的平移向量,是一个3维向量,(R′,t′)即构成了拍摄图片时相机的外参数,则点云坐标系下任一点y在该相机坐标系下的坐标y′表示为:
y′=R′y+t′;
步骤4-3,使用以下公式得到网格三维模型到该相机坐标系的坐标变换:
y′=R′y+t′=R′(cRx+t)+t′=cR′Rx+(R′t+t′);
步骤4-4,在网格三维模型下,将该摄影图片视点的外参数表示为(cR′R,R′t+t′),内参数与步骤2求出的内参数保持一致,得到外参数中的相机拍摄的视点和在内参数中的相机焦距信息。
6.如权利要求5所述的一种大量图片在三维场景中的视点标定方法,其特征在于,步骤5包括:
步骤5-1,对每张摄影图片,使用OpenGL渲染网格三维模型,其中,以步骤4得到的相机外参数作为渲染时的模型-相机变换;以步骤2得到的相机内参数作为渲染时的投影变换,渲染的结果以PNG图片格式存储。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610158627.9A CN105787464B (zh) | 2016-03-18 | 2016-03-18 | 一种大量图片在三维场景中的视点标定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610158627.9A CN105787464B (zh) | 2016-03-18 | 2016-03-18 | 一种大量图片在三维场景中的视点标定方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105787464A true CN105787464A (zh) | 2016-07-20 |
CN105787464B CN105787464B (zh) | 2019-04-09 |
Family
ID=56394171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610158627.9A Active CN105787464B (zh) | 2016-03-18 | 2016-03-18 | 一种大量图片在三维场景中的视点标定方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105787464B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107610219A (zh) * | 2017-08-29 | 2018-01-19 | 武汉大学 | 一种三维场景重构中几何线索感知的像素级点云稠密化方法 |
CN108632521A (zh) * | 2017-03-20 | 2018-10-09 | 电子科技大学中山学院 | 一种嵌入式qml图像采集预览花屏的处理方法 |
CN109807937A (zh) * | 2018-12-28 | 2019-05-28 | 北京信息科技大学 | 一种基于自然场景的机器人手眼标定方法 |
CN113554741A (zh) * | 2020-04-24 | 2021-10-26 | 北京达佳互联信息技术有限公司 | 一种对象三维重建的方法、装置、电子设备及存储介质 |
CN115423758A (zh) * | 2022-08-15 | 2022-12-02 | 山东电力建设第三工程有限公司 | 一种全场精细化dni预测方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150237330A1 (en) * | 2014-02-18 | 2015-08-20 | Electronics And Telecommunications Research Institute | Camera alignment method using correspondence between multi-images |
-
2016
- 2016-03-18 CN CN201610158627.9A patent/CN105787464B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150237330A1 (en) * | 2014-02-18 | 2015-08-20 | Electronics And Telecommunications Research Institute | Camera alignment method using correspondence between multi-images |
Non-Patent Citations (1)
Title |
---|
刘俊江: ""基于多幅图像的几何和纹理自动重建"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108632521A (zh) * | 2017-03-20 | 2018-10-09 | 电子科技大学中山学院 | 一种嵌入式qml图像采集预览花屏的处理方法 |
CN107610219A (zh) * | 2017-08-29 | 2018-01-19 | 武汉大学 | 一种三维场景重构中几何线索感知的像素级点云稠密化方法 |
CN107610219B (zh) * | 2017-08-29 | 2020-03-10 | 武汉大学 | 三维场景重构中几何线索感知的像素级点云稠密化方法 |
CN109807937A (zh) * | 2018-12-28 | 2019-05-28 | 北京信息科技大学 | 一种基于自然场景的机器人手眼标定方法 |
CN113554741A (zh) * | 2020-04-24 | 2021-10-26 | 北京达佳互联信息技术有限公司 | 一种对象三维重建的方法、装置、电子设备及存储介质 |
CN113554741B (zh) * | 2020-04-24 | 2023-08-08 | 北京达佳互联信息技术有限公司 | 一种对象三维重建的方法、装置、电子设备及存储介质 |
CN115423758A (zh) * | 2022-08-15 | 2022-12-02 | 山东电力建设第三工程有限公司 | 一种全场精细化dni预测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105787464B (zh) | 2019-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110296691B (zh) | 融合imu标定的双目立体视觉测量方法与系统 | |
CN111199564B (zh) | 智能移动终端的室内定位方法、装置与电子设备 | |
CN106296812B (zh) | 同步定位与建图方法 | |
Kneip et al. | OpenGV: A unified and generalized approach to real-time calibrated geometric vision | |
US10008005B2 (en) | Measurement system and method for measuring multi-dimensions | |
CN104240289B (zh) | 一种基于单个相机的三维数字化重建方法及系统 | |
CN109472828B (zh) | 一种定位方法、装置、电子设备及计算机可读存储介质 | |
CN105787464B (zh) | 一种大量图片在三维场景中的视点标定方法 | |
CN108038902A (zh) | 一种面向深度相机的高精度三维重建方法和系统 | |
CN104616247B (zh) | 一种用于基于超像素sift航拍地图拼接的方法 | |
CN109559349A (zh) | 一种用于标定的方法和装置 | |
CN111784778A (zh) | 基于线性求解非线性优化的双目相机外参标定方法和系统 | |
CN102156986A (zh) | 近红外摄像机的标定方法 | |
CN108759788A (zh) | 无人机影像定位定姿方法及无人机 | |
CN109934165A (zh) | 一种关节点检测方法、装置、存储介质及电子设备 | |
Huang et al. | Vision pose estimation from planar dual circles in a single image | |
Eichhardt et al. | Relative pose from deep learned depth and a single affine correspondence | |
CN104504691A (zh) | 基于低秩纹理的摄像机位置和姿态测量方法 | |
CN104318566A (zh) | 可返回多个高程值的新型多视影像铅垂线轨迹匹配方法 | |
Fabbri et al. | Camera pose estimation using first-order curve differential geometry | |
Zhang et al. | Dense 3d mapping for indoor environment based on feature-point slam method | |
Budge et al. | Automatic registration of fused lidar/digital imagery (texel images) for three-dimensional image creation | |
CN108961381A (zh) | 用于对物体的三维几何模型着色的方法和装置 | |
CN106651950B (zh) | 一种基于二次曲线透视投影不变性的单相机位姿估计方法 | |
CN110148205A (zh) | 一种基于众包影像的三维重建的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |