一种VR看图方法及立体照片的三维测量方法与流程

文档序号:25534358发布日期:2021-06-18 20:27阅读:954来源:国知局
一种VR看图方法及立体照片的三维测量方法与流程

本发明属3d影像领域,涉及一种立体观看方式和立体图的三维测量,尤其是一种在vr眼镜上的看图和测量。



背景技术:

vr眼镜实际是一种头戴显示器,一般这种显示装置都是左右眼各看一个显示屏。有一种vr眼镜手机盒子,是看手机屏幕的,用手机显示左右视差图拼一起的左右格式的立体图片,这也正好可用于这种vr眼镜手机盒子。但是,左右格式的立体图片有两种格式,一种是左视差图片在左,右视差图片在右的平行格式,还有一种是左视差图片在右,右视差图片在左的交错格式,手机显示交错格式的立体图片就无法在vr眼镜盒子上观看了,这是一个问题。还有就是这样的左右格式立体图片不能像普通2d看图软件那样放大来看,因为照片一放大,就会把一边的影像挤出屏幕外,破坏了左右视差图像的对称,两视差画面不是同一场景了,所以左右格式的立体照片无法实现放大观看。还有一个问题就是,立体图片包含了三维信息,而现在还没有能提取三维信息的立体看图软件。



技术实现要素:

为了解决这三个问题,本发明把手机屏幕分成左右两个窗口(图1),把立体照片从中分开,分开的两图各放一个窗口,两窗口图像还可以交换,以完全适应立体图片的平行和交错两种格式的观看。有两窗口模式,就可以放大看立体图了。放大时,两窗口的影像同时放大,拖动画面也是两窗口画面同时移动,以此解决观看立体图片不能放大的问题。还有,三维影像具有三维尺寸信息的,这本应可以用作测量用途。为此,本申请在vr手机看图软件和头戴显示装备的看图软件上开发测量功能,在两窗口中心各建一个鼠标箭头或十字线或其它标记类图标(以下省略十字线和图标),用鼠标或手柄来控制两箭头同时上下左右移动。并且,还可以用鼠标滚轮或手柄按键控制其中一个窗口的箭头作横向细微移动,这样在立体观看中箭头就可以在空间里作三维方向移动,箭头可贴近立体影像中的任何物体。通过计算,可得出箭头所指处的深度距离,有了深度定位,在深度那个层面还可以得出宽度和高度的尺寸,这样立体照片就具有三维测量的功能了。如可测量照片中的人的身高、肩宽、前后物体间的距离等,这也是3d影像的又一用途。

本发明解决其技术问题所采用的技术方案是:

1.手机软件vr看图软件在手机屏幕上建立左右两个窗口,把要显示的左右格式立体照片从中分开,以适合宽度或适合高度的方式分别居中放入两窗口中;两窗口所放图像也可以交换,以适应立体照片的平行格式和交错格式;立体影像可以放大,放大时,两窗口的影像同时放大;拖动画面时,两窗口影像同时移动;放大观看时还具有视差微调功能,就是只对其中一窗口画面做细微的横向移动。

2.深度测量在立体看图软件上,左右两视差照片显示在左右两窗口中,在两窗口中建立左右两相同标记类图标,两图标可作上下左右同时移动,也可单独一边作横向移动,单独移动时在立体观看中图标是在作深度方向移动,由此图标可作三维移动,图标可指向立体影像中的任一物体,用其单独横向移动的像素数去对应立体拍摄构成的直角三角形的一个角的角度数、或对应该三角形的一条边的边长、或对应该三角形的一个实测距离对照表,用三角形相关的计算方法去计算立体照片中某物体距相机的距离。

3.宽高测量有了深度距离,就可得出该深度层面的宽高尺寸;图3,实测某一距离ab拍出的场宽实际尺寸bc,以该尺寸用相似三角形对应边成比例的计算方法或三角函数的计算方法去计算其它距离层面所在的场宽bc∶ab=bc∶ab,bc=ab*bc/ab;再以单位尺寸占总尺寸的比值0.1/bc,计算出单位尺寸在窗口中所占的像素数n’=n*0.1/bc,以该像素数作为该距离层面十字线上的刻度间隔,刻度的间隔像素n’=0.1*n*ab/ab/bc式中,n是半个窗口的像素,ab是实测bc的距离,bc是实测的半个场宽,ab是距离,0.1是刻度单位0.1米;

或者用标记的方法测量宽高,用鼠标箭头在立体观看的情况下去标记欲测量的地方,即两箭头重合在某一物体上时的标记,用两标记跨越的间隔像素y,去求出标记跨越的尺寸x,即x=y*场宽/窗口像素,将计算出的x数值标记在两窗口相应的位置上。

本发明的有益效果是:本vr看图方法为立体影像的观看提供了一种新模式,尤其是立体影像的放大观看,使立体影像也能发挥高像素照片的作用,放大的立体图观看更震撼。并且,本三维测量方法还能把立体照片包含的三维信息挖掘出来,有力地突出了立体照片的实用价值,对视觉技术的应用和发展都具有重大的意义。

附图说明

图1:手机显示屏;

图2:测深度距离原理图;

图3:测宽高尺寸原理图。

具体实施方式

1.窗口vr看图软件在手机横向屏幕上建立左右两个窗口(图1),把要显示的立体格式照片从中分开,以适合宽度或适合高度的方式分别居中放入两窗口。两窗口所放图像也可以交换,以适应左右立体照片的交错格式观看。在两窗口模式下,左右两照片可以在两窗口中以1∶1或其它放大比例的方式居中显示。这种画面超出窗口以外的显示方式,可对图像进行拖动。拖动画面时,两窗口画面同时移动。在放大模式下,还可以具有间距微调功能,就是只对其中一窗口画面做细微的横向移动,以解决放大观看时,两视差画面中相同物体可能视差过大而使同一物体在两窗口处的位置不对称、甚至一个挤出窗口外的问题。

2.深度拍摄三维照片就具有深度信息,三维照片是用两个相机模仿人的两只眼睛那样去记录影像的,这两张具有视差的照片再分别交给我们两只眼睛去观看,在我们大脑里就能还原成身临其境的空间感。三维拍摄的两相机和被摄物体可构成一个直角δabc(图2),由三角形的特性就可以测量被摄物体到立体相机之间的深度距离。设直角b处为左相机,角c处为右相机,左相机光轴c与右相机光轴b交汇与a,通过三角函数计算∠c的角度就可以得出被摄物体a、e等处的深度距离。①确立基本角度hh就是右相机光轴b构成的角度,其角度为立体相机所固定,以此角度为0计算被测物体角度,该角度对应处为原点o;②偏移角度j用被测物体对准右相机镜头光心的视线来测定该视线偏移h的(相对)角度,即图2中∠ace;③用传感器d的像素数n来对应量角器刻度图2中,被测物体e投影在传感器上e’,e’偏移原点o’的像素数n,用n来度量角度。d’为等效传感器;④推算标准实拍e点,投影于e’,实测角度∠ace为α,实测传感器像素数o’-e’为n’,则每像素对应角度θ≈α/n’,α、n’为实测已知,用此每像素对应的角度θ来推算其它角度。在小角度范围内,基本可以用平直的传感器d’的像素数来对应量角器(图中虚线圆)圆弧上的刻度,若角度过大(图2放大图m处)可分段用三角形的计算方法精确计算直线对应圆弧的差异;⑤用箭头定位深度在vr看图软件上,在左右眼的窗口中各建一个鼠标箭头或十字线或其它标记类图标,两箭头保持平行,两箭头初始(原始)放在两窗口中心,即居中显示的两视差照片的相机光轴交汇处a点上,(实拍a处标杆)。若立体相机两镜头光轴是平行的(没有光轴相交),可设定一个交汇点,即右箭头初始可落在左相机光轴上某一距离的标杆上,以此作为计算角度的基本角度和原点;两箭头可以用鼠标或手柄控制上下左右同时移动(由于两箭头同时移动,实际被测物体无须只限定在原理图左相机的光轴上),并且还利用深度测量键(如鼠标滚轮或手柄按键)单独控制右窗口中的箭头只做横向移动(此时可以叫测距箭头),两箭头间距的变化在立体观看中是在做深度的变化(即配合上下左右的移动,箭头可在三维空间中作任意方向移动,也就是两箭头可以同指在两视差照片中的任一同一物体上),利用箭头单独移动的像素数n,用n来计算偏移角度j,j=n*θ;⑧测距角度β用j计算出测距(绝对)角度β=h+j=h+n*θ,n为右箭头单独移动的像素数,往左移为负值;⑦深度距离x用绝对角度计算深度距离x=a*tan(h+n*θ),式中,h、θ、a均为已知,n为测量键移动箭头相对1∶1照片的像素,若显示的照片有缩放,均按缩放比恢复成1∶1对应的像素计算。

除用三角形的一个角来计算深度距离外,也可以用相似三角形的一条边来计算深度距离。如过e点做平行于a的直线,该直线交b线于p,则δabc相似于δaep,ab作为测距的原始距离。实测偏移距离ae,该偏移距离时箭头单独移动到e物体(标杆)的偏移像素数为n’(相当于平移b),则每像素对应ep长度θ=ep/n’,由于ep与偏移距离ae的关系是ep∶bc=ae∶ab(相似三角形对应边成比例)ae=ep*ab/bc,所以每像素对应ae的偏移距离θ=ep*ab/bc/n’,所求距离x=ab+n*θ,式中ab是初始距离,n是测距箭头偏移的像素,往左为负值,θ是每移动像素对应的距离。

直接地,实测ae和n’,算出推算数据每像素偏移距离θ=ae/n’,x=ab+n*θ,也一样可以算出深度距离。

此外,深度距离还可以通过列举对应表的方法算出,即在左相机光轴c上布上一串距离标杆,用测距箭头去对应实拍照片上的这些标杆,将测距箭头对准标杆所偏移原始o点的像素和标杆的距离记录在一个对应表中。打开测距软件时,直接将距离数据通过测距箭头所在的像素数从对应表中提取出来。

若立体相机两镜头角度都有小于90度,用直角三角形的分析方法也适用,用图2虚线a’就可以构成两个都小于90度的非直角三角形,但是画直角边a,还是可以作为直角三角形来分析,最多左相机距离少了1公分左右,把它算进去或忽略不计都可以。

此深度计算方法适用于看手机屏幕的vr眼镜的看图软件,也适用于vr眼镜和头戴显示器的看图软件。

3.宽高有了深度定位,就很容易测量某深度那个层面的宽度和高度了。图3,直角δabc相似δabc(以下视场都用半个视场来分析),实测一个距离层面的半个场宽为bc,就可以算出其它距离层面的半个场宽bc,bc∶ab=bc∶ab,bc=ab*bc/ab。若为十字线标刻度(图1),则计算刻度间距,如果bc单位为米,设刻度单位刻度为0.1米,则每刻度占场宽的比例为0.1/bc。设在看图软件上半个窗口的像素数为n,则单位刻度所占窗口像素n’=n*0.1/bc,把bc=ab*bc/ab代入,n’=n*0.1/(ab*bc/ab)刻度的间隔像素n,=0.1*n*ab/ab/bc

式中,n是半个窗口的像素,ab是实测bc的距离,bc是实测的半个场宽,ab是被距离(前面求出的x),0.1是刻度单位0.1米,若刻度密到一定程度,刻度单位可以再改为米、百米或千米。

bc也可以通过三角函数算出,即bc=ab*tana,a可以通过之前的实测bc得出。

有了刻度数据,看图软件就可根据该距离(x)的刻度间隔像素数n’把刻度标在两十字线上了(图1),由此测量十字线所在那个层面的物体的宽度和高度。如果刻度密到一定程度,再将0.1的单位换成米或更大的单位。

如果用的是鼠标箭头,测量高宽可以用鼠标箭头在立体观看的情况下(即两箭头同时对准某一物体上)去标记要测量的位置,软件再根据标记的间隔像素y,去求出标记的宽或高跨越的物体尺寸,即x=y*bc/n,将计算出的x数据显示在两窗口对应的层面上(两显示数据平行,其间距等于两鼠标箭头的间距)。

以上观看方式,只适用固定镜距、固定镜头角度、固定照片尺寸、固定镜头焦距的立体相机,若要适用不同这四个固定参数的立体拍摄相机拍摄的立体照片,需要软件加入参数设置。如照片尺寸有变化,需要改变了像素的密度,就是需要对实测的每像素的角度θ≈α/n做修正。若镜距改变,也需要改变参与计算的常数a。若镜头角度的改变,也需要改变h的数值。若立体相机镜头焦距的改变,也要修改实测bc的场宽等。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1