基于二维仿射变换的几何一致性虚实融合
增强现实(Augmented Reality, AR)[
在AR领域中,解决几何一致性虚实融合的方法主要分为辅助标记法和辅助设备法[
上述这些方法都是在三维层面上处理模型和场景之间的遮挡和几何匹配。本文提出了几何一致性虚实融合算法,讨论了真实场景中的人体手臂是否正对摄像机拍摄的两种情况。在手臂二维图像上确定腕部的宽度和位置后,计算出虚拟腕表的位置、缩放和旋转角度,最终通过差分渲染得到虚实融合的结果。为了使结果更加真实同时也考虑了光照一致性[
2 虚实融合系统的构成
本文提出的虚实融合系统框图如
图1 虚实融合系统框图
Fig.1 System diagram of virtual-real fusion system
3 关键算法
3.1 场景模型重建算法
使用Kinect相机[
3.2 手腕位置与宽度计算
3.2.1 投影映射算法
当手臂正对摄像机时,手臂的三维模型坐标系中z轴垂直于视觉平面。此时将模型的所有xoy平面向z轴的方向投影,映射的结果就是手臂的二维图像,如
图 2 手臂二维图像
Fig.2 Two-dimensional image of arm
从
不难发现手臂二维图像上因为一些点的缺失或者与其他点重叠,一些垂直列上的点很稀疏。在计算腕部位置与宽度时,这会导致错误。因此,删除所有稀疏点的垂直列,获得新的手臂二维图像如
图3 优化后的手臂二维图像
Fig.3 Optimized two-dimensional image of arm
在
(1) |
其中:,第i列的长度值是3条线的最大值。通过每一个下边缘点与其对应的3个上边缘点之间的长度来计算腕部的长度。在获得不同列的长度之后,最短的长度被视为手腕的长度,可通过以下公式得出:
(2) |
其中:Loc是计算得出的腕部宽度,相应的x值可以确定哪根立柱是腕部位置。
3.2.2 仿射变换算法
手臂与摄像机成一定夹角,按照3.2.1的方法得到的手臂二维图像如
图4 不正对摄像机的手臂二维图像
Fig.4 Two dimensional image of arm not facing camera
由
仿射变换[
任何仿射变换都可以表示为矩阵与向量的乘积,然后通过齐次坐标将这两部分结合起来,矩阵平移公式为:
(3) |
在上面的仿射矩阵中,是线性变换参数,是平移参数。上面的操作是将(x,y)映射到(x',y')。
然后假设矩阵旋转角度为α角,则坐标的仿射矩阵为:
(4) |
类似地,假设缩放因子为s,则坐标的仿射矩阵为:
(5) |
因此,需要根据上述算法优化手臂的二维图像。求出
图5 旋转后的手臂二维图像
Fig.5 Two dimensional image of arm after rotating
3.3 坐标系统一算法
因为真实场景中物体的坐标系和虚拟物体的坐标系存在差异,所以坐标系的统一有利于虚实融合。在手腕位置的中心点处建立了第一个坐标系,同时在虚拟腕表的表盘处建立了第二个坐标系,需要通过坐标系的旋转和平移将两个坐标系统一[
矩阵旋转有3个,分别绕x轴旋转,绕y轴旋转,绕z轴旋转。其中,绕x轴旋转的旋转矩阵为:
(6) |
其中θ为旋转角度。
同理,可以得到绕y轴旋转和绕z轴旋转的旋转矩阵:
(7) |
如果有一个旋转可以表示为依次绕着3个旋转轴旋转3个角度的组合,那这3个角度可以称之为欧拉角,3个轴的旋转次序不同,得到的结果也会不同。例如,常用的AR软件Unity3D中欧拉角的旋转顺序就为ZYX,所以旋转顺序很重要。
通过欧拉角旋转将两个坐标系统一。由欧拉角求旋转矩阵时,设3个轴的欧拉角分别为。正弦值和余弦值分别为,,,,,,那么旋转矩阵为:
(8) |
解上述旋转矩阵可以逆向求得3个欧拉角,分别为:
(9) |
其中rij是旋转矩阵中的元素值,i,j=1,2,3。由此就可以得到坐标系3个坐标轴各自的旋转角度。
3.4 差分渲染算法
为了自动地将虚拟物体与真实场景相融合,采用了差分渲染算法。
3.4.1 虚拟对象的插入
为了在获得的图像中插入虚拟对象,实现场景的几何一致性,在场景中放置一个虚拟对象,场景中的一些像素会被虚拟对象遮挡。虚拟对象也会影响未被遮挡的像素,当虚拟对象在场景中投射阴影时,插入对象周围的局部区域将变暗。Debevec等[
在给定的场景光照和相机参数下,对有合成对象和无合成对象的虚拟局部场景进行渲染,得到图像和。这两个图像之间的差异揭示了插入的对象对场景的影响。该改变被添加到原始图像以生成合成图像:
(10) |
差分渲染要求在虚拟局部场景中渲染虚拟对象,并将虚拟局部场景与真实场景调成一致的像素。然而,因为虚拟局部场景的像素强度可能在每一个图像之间发生变化。通过相机进行自动曝光校正,虚拟局部场景的颜色强度会发生变化。所以插入虚拟物体后,插入前后图像的像素强度会不一致。为了克服这个问题,计算得到:
(11) |
其中和分别是具有和不具有虚拟对象的渲染无纹理场景。它们的比率显示插入虚拟对象导致的像素变暗程度。
如果原始场景中的某个区域被插入的对象遮挡,便将它替换为虚拟对象中的像素。通过在相机坐标系中比较场景像素和对象像素的深度来确定这些区域;如果插入的对象离摄像机较近,中的像素将复制到。
由于摄像机的运动,初始场景图像可能会模糊。为了产生更具说服力的结果,虚拟对象也应根据摄影机的移动进行模糊。当在时间处合成图像时,收集多个样本,样本时间其中,通过对样本时间处合成的图像进行平均来获得最终合成图像:
(12) |
式中,和的定义与
3.4.2 阴影检测
如果光源被其他对象阻挡,则投射的阴影可使其他阴影变形。如果能计算出有多少光线被遮挡,就能消除阴影。如果场景几何体和照明可用,通过
(13) |
需要通过忽略可见性项V(V表示来自光源的光按照正常照射方向照向物体表面)来计算它在没有遮挡的情况下接收的光线数量。忽略可见性项V后,
(14) |
当和分别测量到达的光线是否有遮挡时,表示光线在处无遮挡的程度。为了去除阴影,将每个像素除以的值以补偿阴影。然而,该值可能不准确,某些区域会被过度校正,而其他区域仍然太暗。为了克服这个问题,本文生成一个阈值为的阴影遮罩,并使用掩膜区域中的局部照明变化来调整其外观。
由于本方法中在插入对象和阴影检测的同时也考虑了场景中的光照影响,所以在场景中对虚拟物体进行了光照估计[
4 实验结果
4.1 手腕位置与宽度确定
采用
图6确定手腕位置与宽度实验结果
Fig.6Experiment result for determining wrist position and width
由
图7 白线标记手腕位置
Fig.7 Wrist position marked by white line
4.2 虚实融合
通过3.3中坐标系统一的算法将坐标系旋转的3个欧拉角计算出来,再通过差分渲染算法,结合计算出的虚拟物体旋转角、位置坐标和缩放将对象插入到真实场景中并进行渲染[
图8 插入虚拟腕表模型融合
Fig.8 Fusion image of virtual watch model on arm
为了使融合结果更加真实,采用基于全局照明模型的光照估计算法[17]对场景加入了光照估计,结果如
图9 虚实融合结果
Fig.9 Result of virtual-real fusion
将计算得到的手腕宽度与实际手腕宽度比较,将虚拟腕表旋转角度和位置点与实际的腕表旋转角度和位置点比较,然后进行误差分析,结果如
图10 手腕宽度计算误差分析
Fig.10 Error analysis of wrist width calculation
角度及位置 | 实验计算结果 | 实际测量结果 |
---|---|---|
x轴旋转角度 | -35° | -36.1° |
y轴旋转角度 | 180° | 178° |
z轴旋转角度 | 55° | 53.9° |
坐标系原点位置坐标 | (136,136,136) | (136.2,136.2,136.2) |
为了验证结果,按照文献[
图11 文献[
Fig.11 Result of virtual real fusion in reference[
文献[
5 结 论
本文提出了一种几何一致性的虚实融合方法,并结合光照一致性,实现了具有几何一致性和光照一致性的虚实融合系统。该系统使用Kinect重建场景三维模型,使用三维到二维的方法处理手臂,并采用一种基于空间的变换方法来提高精度。最后,使用差分渲染将虚拟对象准确地插入到真实场景中。实验结果表明,经过本文方法确定手腕的位置与宽度,其误差在实际测量的数据范围之内,得到的手表坐标系的旋转角度和位置与实际测量结果的误差在4%,且融合效果提升了15%左右。
- 2025年中科院分区表已公布!Scientific Reports降至三区
- 官方认定!CSSCI南大核心首批191家“青年学者友好期刊名单”
- 2023JCR影响因子正式公布!
- 国内核心期刊分级情况概览及说明!本篇适用人群:需要发南核、北核、CSCD、科核、AMI、SCD、RCCSE期刊的学者
- 我用了一个很复杂的图,帮你们解释下“23版最新北大核心目录有效期问题”。
- 重磅!CSSCI来源期刊(2023-2024版)最新期刊目录看点分析!全网首发!
- CSSCI官方早就公布了最新南核目录,有心的人已经拿到并且投入使用!附南核目录新增期刊!
- 北大核心期刊目录换届,我们应该熟知的10个知识点。
- 注意,最新期刊论文格式标准已发布,论文写作规则发生重大变化!文字版GB/T 7713.2—2022 学术论文编写规则
- 盘点那些评职称超管用的资源,1,3和5已经“绝种”了