一种立体视觉三维可视化系统中自动调节图像视差的方法转让专利

申请号 : CN201410294832.9

文献号 : CN104093013B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 段祺珅龚建华

申请人 : 中国科学院遥感与数字地球研究所

摘要 :

本发明涉及一种立体视觉三维可视化系统中自动调节图像视差的方法,其根据六个辅助相机获得的观察位置周边环境的深度距离值,对主相机框架进行整体缩放,而后又根据另一个虚拟辅助相机获取的深度距离值对虚拟主相机的间距进行调整,两次调整的过程能够将生成的立体视觉三维图像中主要内容与显示平面在深度上的差距约束在预设的范围里,从而避免会聚/调节的问题。每一次调节后生成的立体视觉三维图像都能产生有正确深度层次感,并且图像中的主要内容的视差都不超过d'。因此,本发明可以广泛用于计算机立体视觉图形学领域。

权利要求 :

1.一种立体视觉三维可视化系统中自动调节图像视差的方法,其包括以下步骤:

1)定义主相机框架、各虚拟相机的参数及投影矩阵;

其中,水平间隔dmainCams设置左虚拟主相机和右虚拟主相机,两左、右虚拟主相机连成的线段中点为锚点Pivot,与相距DRect处设置一矩形投影面Rect,矩形投影面Rect的中心点为C',C'与锚点Pivot构成的线段垂直于矩形投影面Rect;矩形投影面Rect的高度为hRect,宽为wRect;设定左、右虚拟主相机,锚点Pivot以及矩形投影面Rect之间相对方向上的位置关系为主相机框架;在锚点Pivot处设置七个虚拟辅助相机:front、back、left、right、up、down和additional;

2)根据使用环境设定如下参数:d、w、h、D、p%、d'、n、f、a、b、Ci、vi和upi,并根据这些参数设置虚拟主相机和虚拟辅助相机;

其中,d为左、右虚拟主相机之间的初始水平间距;w为显示最终生成的立体视觉三维图像的显示设备的宽度;h为显示最终生成的立体视觉三维图像的显示设备的高度;D为显示最终生成的立体视觉三维图像的显示设备的最佳观看距离;p%为显示的非背景内容中主体内容所占的百分比阈值;d'为显示的非背景内容中主体内容在显示设备上可容忍的最大视差;n为左虚拟主相机和右虚拟主相机初始的近裁剪面距离;f为左虚拟主相机和右虚拟主相机初始的远裁剪面距离;且0.1

2,...,N;a*a为六个虚拟辅助相机front、back、left、right、up、down存储深度距离值的纹理尺寸;b*b为虚拟辅助相机additional存储深度距离值的纹理尺寸,其中,a=25且b=26;

根据以上参数设置两个虚拟主相机和七个虚拟辅助相机:①设置虚拟主相机:

a)初始化主相机框架中各参数;

b)以vi和upi叉乘确定向量ti;以Ci为起点,沿vi上距离DRect处设置矩形投影面Rect,矩形投影面Rect的高为hRect,宽为wRect;

c)将主相机框架的锚点Pivot与Ci重合,两虚拟主相机之间水平距离为dmainCams,左虚拟主相机的近裁减面距离nmainCams1、远裁减面距离fmainCams1,右虚拟主相机的近裁减面距离nmainCams2、远裁减面距离fmainCams2;

②设置虚拟辅助相机:

a)确定各虚拟辅助相机的朝向;

b)设定各虚拟辅助相机的近裁剪面距离、远裁剪面距离;

c)针对六个虚拟辅助相机front、back、left、right、up和down一一对应创建一个尺寸为a*a的存储深度距离值的浮点纹理;针对虚拟辅助相机additional创建一个尺寸为b*b的存储深度距离值的浮点纹理;

3)当Ci、vi和upi发生变化后,重复步骤2)中①的b)~c)对主相机框架的位置和方向进行调节;若立体视觉三维可视化系统发出视差调节的指令,则进入下一步;若不发出视差调节的指令,则不进行任何操作;

4)根据步骤3)中Ci、vi和upi的变化,重复步骤2)的②中a)~b);

5)根据七个虚拟辅助相机获得的Ci周边环境的深度距离值,对主相机框架进行缩放,具体包括以下步骤:

①使用七个虚拟辅助相机对Ci周边的三维场景进行渲染,各虚拟辅助相机获得对应Ci周边的深度信息,并将深度信息转化为具体的深度距离值,将六个虚拟辅助相机front、back、left、right、up和down的各深度距离值存入步骤2)中设定的各对应尺寸为a*a的浮点纹理中;虚拟辅助相机additional的深度距离值存入步骤2)中设定的尺寸为b*b的浮点纹理中;

②在六个虚拟辅助相机front、back、left、right、up、down的深度距离值中,取各自的最小深度距离值,并将六个虚拟辅助相机中最小的深度距离值记为minDist;

③获取虚拟辅助相机additional的深度距离值中最小的深度距离值记为minAddDist,获取仅次于虚拟辅助相机additional的远裁剪面距离fadd的深度距离值记为maxAddDist;

④根据公式 计算当前

Ci周边环境的尺度参考值;其中,k是约束系数,且1≤k≤3;

⑤根据公式scalenew=scaleold+α*(scaleref-scaleold)计算当前Ci周边环境的尺度值;

其中,α是计算环境尺度时的约束系数,且0<α<1;scaleold为上一次视差调节时Ci周边环境的尺度值,其初始值为D;

⑥对当前主相机框架进行缩放变换,缩放中心为锚点Pivot点,缩放系数为scalenew/scaleold,将dmainCams、DRect、wRect、hRect、nmainCams1、fmainCams1、nmainCams2、fmainCams2分别乘以缩放系数scalenew/scaleold得到各自对应的新值,得到视差调节后的两虚拟主相机、锚点Pivot和矩形投影面Rect之间相对方向上新的位置关系;

6)根据虚拟辅助相机additional获取的深度距离值,对两虚拟主相机的水平间距进行调整;

7)通过步骤5)和步骤6)实现对主相机框架中两虚拟主相机、锚点Pivot和矩形投影面Rect之间相对方向上的位置关系的调整,改变两虚拟主相机的空间位置与投影矩阵,生成立体视觉图像对;

8)根据Ci、vi和upi的变化,重复步骤3)~7),实现自动调节图像视差。

2.如权利要求1所述的一种立体视觉三维可视化系统中自动调节图像视差的方法,其特征在于:所述步骤1)中,设定主相机框架、各虚拟相机的参数及投影矩阵的方法如下:①左、右虚拟主相机:

左虚拟主相机的近裁剪面距离为nmainCams1,远裁剪面距离为fmainCams1;右虚拟主相机的近裁剪面距离为nmainCams2,远裁剪面距离为fmainCams2;根据C'、hRect、wRect、nmainCams1和fmainCams1确定左虚拟主相机的离轴投影矩阵,并将其作为左虚拟主相机的投影矩阵;同理根据C'、hRect、wRect、nmainCams2和fmainCams2确定右虚拟主相机的投影矩阵;

②七个虚拟辅助相机:

各虚拟辅助相机的朝向分布如下:

①虚拟辅助相机front、additional垂直并正对矩形投影面Rect的方向;

②虚拟辅助相机back垂直并背向矩形投影面Rect的方向;

③虚拟辅助相机left指向左虚拟主相机的方向;

④虚拟辅助相机right指向右虚拟主相机的方向;

⑤虚拟辅助相机up指向平行于矩形投影面Rect向上的方向;

⑥虚拟辅助相机down指向平行于矩形投影面Rect向下的方向;

七个虚拟辅助相机的近裁剪面距离、远裁剪面距离如下表所示:虚拟辅助相 front back left right up down additional机

近裁剪面距离 nfront nback nleft nright nup ndown nadd远裁剪面距离 ffront fback fleft fright fup fdown fadd六个虚拟辅助相机front、back、left、right、up和down的投影矩阵为各使用视角为90度的透视投影所对应的投影矩阵,虚拟辅助相机additional的投影矩阵为使用视角恰好覆盖矩形投影面Rect的透视投影所对应的投影矩阵。

3.如权利要求1所述的一种立体视觉三维可视化系统中自动调节图像视差的方法,其特征在于:所述步骤2)中,根据d、w、h、D、p%、d'、n、f、a、b、Ci、vi和upi,设置虚拟主相机和虚拟辅助相机方法如下:①设置两虚拟主相机

a)初始化主相机框架中各参数:令DRect=D,矩形投影面Rect的高hRect=h,矩形投影面Rect的宽wRect=w,两虚拟主相机间的水平间距dmainCams=d,左虚拟主相机的近裁减面距离nmainCams1=n,左虚拟主相机的远裁减面距离fmainCams1=f,右虚拟主相机的近裁减面距离nmainCams2=n,右虚拟主相机的远裁减面距离fmainCams2=f;

b)以vi和upi叉乘确定向量ti;以Ci为起点,沿vi上距离DRect处设置矩形投影面Rect,矩形投影面Rect的高为hRect,宽为wRect;

c)将主相机框架的锚点Pivot与Ci重合,两虚拟主相机之间水平距离为dmainCams,左虚拟主相机的近裁减面距离nmainCams1、远裁减面距离fmainCams1,右虚拟主相机的近裁减面距离nmainCams2、远裁减面距离fmainCams2;

②设置各虚拟辅助相机

对虚拟辅助相机设置如下:

a)确定各虚拟辅助相机的朝向

虚拟辅助相机fron、additional指向vi;虚拟辅助相机back指向vi的反方向;虚拟辅助相机left指向ti的反方向;虚拟辅助相机right指向ti;虚拟辅助相机up指向upi;虚拟辅助相机down指向upi的反方向;

b)设定各虚拟辅助相机的近裁剪面距离、远裁剪面距离虚拟辅助相机front的nfront=n,ffront=fmainCams1;

虚拟辅助相机back的nback=n,fback=fmainCams1;

虚拟辅助相机left的nleft=n,fleft=fmainCams1;

虚拟辅助相机right的nright=n,fright=fmainCams1;

虚拟辅助相机up的nup=n,fup=fmainCams1;

虚拟辅助相机down的ndown=n,fdown=fmainCams1;

虚拟辅助相机additional的nadd=nmainCams1,fadd=fmainCams1;

c)针对六个虚拟辅助相机front、back、left、right、up、down一一对应创建一个尺寸为a*a的存储深度距离值的浮点纹理;针对虚拟辅助相机additional创建一个尺寸为b*b的存储深度距离值的浮点纹理。

4.如权利要求2所述的一种立体视觉三维可视化系统中自动调节图像视差的方法,其特征在于:所述步骤2)中,根据d、w、h、D、p%、d'、n、f、a、b、Ci、vi和upi,设置虚拟主相机和虚拟辅助相机方法如下:①设置两虚拟主相机

a)初始化相关参数:令DRect=D,矩形投影面Rect的高hRect=h,矩形投影面Rect的宽wRect=w,两虚拟主相机间的水平间距dmainCams=d,左虚拟主相机的近裁减面距离nmainCams1=n,左虚拟主相机的远裁减面距离fmainCams1=f,右虚拟主相机的近裁减面距离nmainCams2=n,右虚拟主相机的远裁减面距离fmainCams2=f;

b)以vi和upi叉乘确定向量ti;以Ci为起点,沿vi上距离DRect处设置矩形投影面Rect,矩形投影面Rect的高为hRect,宽为wRect;

c)将主相机框架的锚点Pivot与Ci重合,两虚拟主相机之间水平距离为dmainCams,左虚拟主相机的近裁减面距离nmainCams1、远裁减面距离fmainCams1,右虚拟主相机的近裁减面距离nmainCams2、远裁减面距离fmainCams2;

②设置各虚拟辅助相机

对虚拟辅助相机设置如下:

a)确定各虚拟辅助相机的朝向

虚拟辅助相机fron、additional指向vi;虚拟辅助相机back指向vi的反方向;虚拟辅助相机left指向ti的反方向;虚拟辅助相机right指向ti;虚拟辅助相机up指向upi;虚拟辅助相机down指向upi的反方向;

b)设定各虚拟辅助相机的近裁剪面距离、远裁剪面距离虚拟辅助相机front的nfront=n,ffront=fmainCams1;

虚拟辅助相机back的nback=n,fback=fmainCams1;

虚拟辅助相机left的nleft=n,fleft=fmainCams1;

虚拟辅助相机right的nright=n,fright=fmainCams1;

虚拟辅助相机up的nup=n,fup=fmainCams1;

虚拟辅助相机down的ndown=n,fdown=fmainCams1;

虚拟辅助相机additional的nadd=nmainCams1,fadd=fmainCams1;

c)针对六个虚拟辅助相机front、back、left、right、up、down一一对应创建一个尺寸为a*a的存储深度距离值的浮点纹理;针对虚拟辅助相机additional创建一个尺寸为b*b的存储深度距离值的浮点纹理。

5.如权利要求1或2或3或4所述的一种立体视觉三维可视化系统中自动调节图像视差的方法,其特征在于:所述步骤6)包括以下步骤:①在虚拟辅助相机additional的浮点纹理中,筛选出深度距离值小于远裁剪面距离值fadd的纹理部分,并对这部分使用区域增长法,以(max AddDist-min AddDist)/Res为分割的阈值进行区域分割处理,处理后得到若干纹理区域以及各纹理区域对应的种子点,采用各纹理区域的种子点对对应的纹理区域建立索引;其中,Res为显示设备在横向或纵向分辨率中较大的一个;

②对作为各纹理区域索引的各个种子点,按照其深度距离值从大到小进行排序,按照这个排序结果,统计各个种子点所索引的纹理区域的像素数并进行累计,截止到累计的像素数超过(100-p)%上一步筛选出的纹理部分时,停止累计,对已累计的纹理像素,求其深度距离值的平均值,得到远景平均深度距离值avgFarDist;

③根据公式DepthRange=avgFarDist-min AddDist计算当前两虚拟主相机可见深度距离值的跨度范围;

④根据公式 计算当

前两虚拟主相机之间水平间距的参考值dref;

⑤根据公式dnew=dold+β*(dref-dold)计算当前两虚拟主相机水平间距dnew;其中,β为控制两虚拟主相机水平间距调节过程的约束系数,且0<β<1;dold为上一次视差调节时采用的两虚拟主相机水平间距,且其初始值为d;

⑥以锚点Pivot为中点,使dmainCams=dnew以调整两虚拟主相机的水平间距。

6.如权利要求1或2或3或4所述的一种立体视觉三维可视化系统中自动调节图像视差的方法,其特征在于:所述步骤3)中采用每帧都进行视差调节指令。

7.如权利要求1所述的一种立体视觉三维可视化系统中自动调节图像视差的方法,其特征在于:所述步骤5)的④中,2.5≤k≤3;所述步骤5)的⑤中0.3≤α≤0.4。

8.如权利要求5所述的一种立体视觉三维可视化系统中自动调节图像视差的方法,其特征在于:所述步骤6)的⑤中,0.3≤β≤0.4。

说明书 :

一种立体视觉三维可视化系统中自动调节图像视差的方法

技术领域

[0001] 本发明涉及一种调节图像视差的方法,特别是关于一种立体视觉三维可视化系统中自动调节图像视差的方法。

背景技术

[0002] 在立体视觉三维可视化系统中,生成立体视觉图像的方法是在三维场景中布置两个分别用于生成左、右眼图像的虚拟相机。在生成立体视觉图像时,两个虚拟相机会分别根
据各自的模-视矩阵、投影矩阵、视口矩阵、窗口矩阵对场景进行变换、裁剪等处理,最终渲染生成合适的立体视觉图像对。立体视觉三维可视化系统用户在合适的输出设备上看到立
体视觉图像对,并经过自身的视觉系统处理合成,最终形成立体视觉感知。
[0003] 在立体视觉三维可视化系统中采用的虚拟相机与一般三维可视化系统中采用的虚拟相机主要有三点不同:1)需要两个虚拟相机,同时生成左、右眼图像;2)需要使用特殊
的离轴投影矩阵作为投影矩阵以保证两个图像上的同名点在产生合适的水平视差的同时
不产生垂直视差,避免梯形畸变;3)两个虚拟相机间的距离需要根据成像的内容进行正确
的调节,调节的结果通过图像同名点的水平视差表现出来。
[0004] 目前的立体视觉三维可视化系统在进行立体视觉图像的实时渲染时,对离轴投影矩阵的设置与两个虚拟相机间距离的控制,主要是根据其中一个虚拟相机的深度缓存信息
来进行的。通常,选择一个虚拟相机作为虚拟主相机获取它的深度缓存,找到深度最小的缓
存像素求出其深度方向上的距离,即深度距离值,乘上一个比例系数(一般选择1/30)后作
为两个虚拟相机的间隔距离。在三维场景中,构建对应系统输出设备的辅助几何对象(一般
屏幕是长方形,所以几何体一般也是长方形),几何对象、两个虚拟相机在空间上的结构与
立体视觉三维可视化系统使用时的输出屏幕、使用者的两眼构成的结构是几何相似的,它
们的比例关系由虚拟相机间隔距离与人眼间隔距离的比值确定,使用虚拟相机的位置、裁
剪面的参数以及辅助几何对象的属性即可确定离轴投影矩阵。
[0005] 采用常规的虚拟相机设置存在两个主要问题:1)三维可视化系统具有动态性质,用户选择在场景中移动和转向是非常自由的,当虚拟相机在三维场景中的方位发生改变或
三维场景本身发生变化时,相关的设置需要进行调节,由于人的视觉系统承受这种调节的
能力有限,客观上要求相关参数的变化速率不能太快,否则会产生视觉上的不适感并积累
视觉疲劳,但如果变化速率较低,又会生成不合适的图像(例如,当虚拟相机很快的从面向
一个远处的区域转向一个距离很近的对象时,虚拟相机的投影面需要快速的从很远的距离
回到近处,若没有及时完成调节就会使用错误的投影产生图像)。2)常规方法还容易产生立
体视觉的会聚/调节问题,由于立体视觉三维可视化系统只考虑了将实际的观看环境等比
例的在三维场景中进行虚拟相机的构建设置,很容易就产生深度范围跨度很大的立体视觉
图像,当人眼实际观看设备时是聚焦在显示设备平面上的,而立体视觉图像中深度很大的
部分则有可能在远离设备平面很远的位置,在观看这部分内容时,人眼既要汇聚到一个很
远的点上,又要调节焦距到显示平面上,这样产生的矛盾即是会聚/调节问题。

发明内容

[0006] 针对上述问题,本发明的目的是提供一种立体视觉三维可视化系统中自动调节图像视差的方法。
[0007] 为实现上述目的,本发明采取以下技术方案:一种立体视觉三维可视化系统中自动调节图像视差的方法,其包括以下步骤:1)定义主相机框架、各虚拟相机的参数及投影矩
阵;其中,水平间隔dmainCams设置左虚拟主相机和右虚拟主相机,两左、右虚拟主相机连成的线段中点为锚点Pivot,与相距DRect处设置一矩形投影面Rect,矩形投影面Rect的中心点为
C',C'与锚点Pivot构成的线段垂直于矩形投影面Rect;矩形投影面Rect的高度为hRect,宽
为wRect;设定左、右虚拟主相机,锚点Pivot以及矩形投影面Rect之间相对方向上的位置关
系为主相机框架;在锚点Pivot处设置七个虚拟辅助相机:front、back、left、right、up、down和additional;2)根据使用环境设定如下参数:d、w、h、D、p%、d'、n、f、a、b、Ci、vi和upi,并根据这些参数设置虚拟主相机和虚拟辅助相机;其中,d为左、右虚拟主相机之间的初始
水平间距;w为显示最终生成的立体视觉三维图像的显示设备的宽度;h为显示最终生成的
立体视觉三维图像的显示设备的高度;D为显示最终生成的立体视觉三维图像的显示设备
的最佳观看距离;p%为显示的非背景内容中主体内容所占的百分比阈值;d'为显示的非背
景内容中主体内容在显示设备上可容忍的最大视差;n为左虚拟主相机和右虚拟主相机初
始的近裁剪面距离;f为左虚拟主相机和右虚拟主相机初始的远裁剪面距离;且0.10.3,n起始点垂直于vi沿向上方向延伸;其中,i=0,1,2,...,N;a*a为六个虚拟辅助相机front、
back、left、right、up、down存储深度距离值的纹理尺寸;b*b为虚拟辅助相机additional存储深度距离值的纹理尺寸,其中,a、b均为2m,m=1,2,...,N,且ab)以vi和upi叉乘确定向量ti;以Ci为起点,沿vi上距离DRect处设置矩形投影面Rect,矩形投影面Rect的高为hRect,宽为wRect;c)将主相机框架的锚点Pivot与Ci重合,两虚拟主相机之间水平距离为dmainCams,左虚拟主相机的近裁减面距离nmainCams1、远裁减面距离fmainCams1,右虚拟主相机的近裁减面距离nmainCams2、远裁减面距离fmainCams2;②设置虚拟辅助相机:a)确定各虚拟辅助相机的朝向;b)设定各虚拟辅助相机的近裁剪面距离、远裁剪面距离;c)针对六个虚
拟辅助相机front、back、left、right、up和down一一对应创建一个尺寸为a*a的存储深度距离值的浮点纹理;针对虚拟辅助相机additional创建一个尺寸为b*b的存储深度距离值的
浮点纹理;3)当Ci、vi和upi发生变化后,重复步骤2)中①的b)~c)对主相机框架的位置和方向进行调节;若立体视觉三维可视化系统发出视差调节的指令,则进入下一步;若不发出视
差调节的指令,则不进行任何操作;4)根据步骤3)中Ci、vi和upi的变化,重复步骤2)的②中a)~b);5)根据六个虚拟辅助相机获得的Ci周边环境的深度距离值,对主相机框架进行缩
放;6)根据虚拟辅助相机additional获取的深度距离值,对两虚拟主相机的水平间距进行
调整;7)通过步骤5)和步骤6)实现对主相机框架中两虚拟主相机、锚点Pivot和矩形投影面
Rect之间相对方向上的位置关系的调整,改变两虚拟主相机的空间位置与投影矩阵,生成
立体视觉图像对;8)根据Ci、vi和upi的变化,重复步骤3)~7),实现自动调节图像视差。
[0008] 所述步骤1)中,设定主相机框架、各虚拟相机的参数及投影矩阵的方法如下:①左、右虚拟主相机:左虚拟主相机的近裁剪面距离为nmainCams1,远裁剪面距离为fmainCams1;右虚拟主相机的近裁剪面距离为nmainCams2,远裁剪面距离为fmainCams2;根据C'、hRect、wRect、nmainCams1和fmainCams1确定左虚拟主相机的离轴投影矩阵,并将其作为左虚拟主相机的投影矩阵;同理根据C'、hRect、wRect、nmainCams2和fmainCams2确定右虚拟主相机的投影矩阵;②七个虚拟辅助相机:各虚拟辅助相机的朝向分布如下:①虚拟辅助相机front、additional垂直并正
对矩形投影面Rect的方向;②虚拟辅助相机back垂直并背向矩形投影面Rect的方向;③虚
拟辅助相机left指向虚拟主相机的方向;④虚拟辅助相机right指向虚拟主相机的方向;⑤
虚拟辅助相机up指向平行于矩形投影面Rect向上的方向;⑥虚拟辅助相机down指向平行于
矩形投影面Rect向下的方向;七个虚拟辅助相机的近裁剪面距离、远裁剪面距离如下表所
示:
[0009]虚拟辅助相机 front back left right up down additional
近裁剪面距离 nfront nback nleft nright nup ndown nadd
远裁剪面距离 ffront fback fleft fright fup fdown fadd
[0010] 六个虚拟辅助相机front、back、left、right、up和down的投影矩阵为各使用视角为90度的透视投影所对应的投影矩阵,虚拟辅助相机additional的投影矩阵为使用视角恰
好覆盖矩形投影面Rect的透视投影所对应的投影矩阵。
[0011] 所述步骤2)中,根据d、w、h、D、p%、d'、n、f、a、b、Ci、vi和upi,设置虚拟主相机和虚拟辅助相机方法如下:①设置两虚拟主相机:a)初始化主相机框架中各参数:令DRect=D,矩形投影面Rect的高hRect=h,矩形投影面Rect的宽wRect=w,两虚拟主相机间的水平间距dmainCams=d,左虚拟主相机的近裁减面距离nmainCams1=n,左虚拟主相机的远裁减面距离fmainCams1=f,右虚拟主相机的近裁减面距离nmainCams2=n,右虚拟主相机的远裁减面距离fmainCams2=f;b)以vi和upi叉乘确定向量ti;以Ci为起点,沿vi上距离DRect处设置矩形投影面Rect,矩形投影面Rect的高为hRect,宽为wRect;c)将主相机框架的锚点Pivot与Ci重合,两虚拟主相机之间水平距离为dmainCams,左虚拟主相机的近裁减面距离nmainCams1,左虚拟主相机的近裁减面距离nmainCams1、远裁减面距离fmainCams1,右虚拟主相机的近裁减面距离nmainCams2、远裁减面距离fmainCams2;②设置各虚拟辅助相机:对虚拟辅助相机设置如下:a)确定各虚拟辅助相机的朝向:虚拟辅助相机fron、additional指向vi;虚拟辅助相机back指向vi的反方向;
虚拟辅助相机left指向ti的反方向;虚拟辅助相机right指向ti;虚拟辅助相机up指向upi;
虚拟辅助相机down指向upi的反方向;b)设定各虚拟辅助相机的近裁剪面距离、远裁剪面距
离:虚拟辅助相机front的nfront=n,ffront=fmainCams1;虚拟辅助相机back的nback=n,fback=fmainCams1;虚拟辅助相机left的nleft=n,fleft=fmainCams1;虚拟辅助相机right的nright=n,fright=fmainCams1;虚拟辅助相机up的nup=n,fup=fmainCams1;虚拟辅助相机down的ndown=n,fdown=fmainCams1;虚拟辅助相机additional的nadd=nmainCams1,fadd=fmainCams1;c)针对六个虚拟辅助相机front、back、left、right、up、down一一对应创建一个尺寸为a*a的存储深度距离值的浮点纹理;针对虚拟辅助相机additional创建一个尺寸为b*b的存储深度距离值的
浮点纹理。
[0012] 所述步骤5)包括以下步骤:①使用七个虚拟辅助相机对Ci周边的三维场景进行渲染,各虚拟辅助相机获得对应Ci周边的深度信息,并将深度信息转化为具体的深度距离值,
将六个虚拟辅助相机front、back、left、right、up和down的各深度距离值存入步骤2)中设
定的各对应尺寸为a*a的浮点纹理中;虚拟辅助相机additional的深度距离值存入步骤2)
中设定的尺寸为b*b的浮点纹理中;②在六个虚拟辅助相机front、back、left、right、up、down的深度距离值中,取各自的最小深度距离值,并将六个虚拟辅助相机中最小的深度距
离值记为min Dist;③获取虚拟辅助相机additional的深度距离值中最小的深度距离值记
为min AddDist,获取仅次于虚拟辅助相机additional的远裁剪面距离fadd的深度距离值记
为max AddDist;④根据公式
计算当前Ci周边环境的尺度参考值;其中,k是约束系数,且1≤k≤3;⑤根据公式scalenew=scaleold+α*(scaleref-scaleold)计算当前Ci周边环境的尺度值;其中,α是计算环境尺度时的约束系数,且0<α<1;scaleold为上一次视差调节时Ci周边环境的尺度值,其初始值为D;⑥对当前主相机框架进行缩放变换,缩放中心为锚点Pivot点,缩放系数为scalenew/scaleold,将dmainCams、DRect、wRect、hRect、nmainCams1、fmainCams1、nmainCams2、fmainCams2分别乘以缩放系数scalenew/scaleold得到各自对应的新值,得到视差调节后的两虚拟主相机、锚点Pivot和矩
形投影面Rect之间相对方向上新的位置关系。
[0013] 所述步骤6)包括以下步骤:①在虚拟辅助相机additional的浮点纹理中,筛选出深度距离值小于远裁剪面距离值fadd的纹理部分,并对这部分使用区域增长法,以(max 
AddDist-min AddDist)/Res为分割的阈值进行区域分割处理,处理后得到若干纹理区域以
及各纹理区域对应的种子点,采用各纹理区域的种子点对对应的纹理区域建立索引;其中,
Res为显示设备在横向或纵向分辨率中较大的一个;②对作为各纹理区域索引的各个种子
点,按照其深度距离值从大到小进行排序,按照这个排序结果,统计各个种子点所索引的纹
理区域的像素数并进行累计,截止到累计的像素数超过(100-p)%上一步筛选出的纹理部
分时,停止累计,对已累计的纹理像素,求其深度距离值的平均值,得到远景平均深度距离
值avgFarDist;③根据公式DepthRange=avgFarDist-min AddDist计算当前两虚拟主相机
可见深度距离值的跨度范围;④根据公式
计算当前两虚拟主相机之间水平间距的参考值dref;⑤根据公式dnew=dold+β*(dref-dold)计算当前两虚拟主相机水平间距dnew;其中,β为控制两虚拟主相机水平间距调节过程的约束
系数,且0<β<1;dold为上一次视差调节时采用的两虚拟主相机水平间距,且其初始值为d;⑥以锚点Pivot为中点,使dmainCams=dnew以调整两虚拟主相机的水平间距。
[0014] 所述步骤2)中a=25,b=26;所述步骤3)中采用每帧都进行视差调节指令。
[0015] 所述步骤5)的④中,2.5≤k≤3;所述步骤5)的⑤中0.3≤α≤0.4。
[0016] 所述步骤6)的⑤中,0.3≤β≤0.4。
[0017] 本发明由于采取以上技术方案,其具有以下优点:1、本发明每一次进行视差调节时,根据当前设定的两个虚拟主相机、锚点和矩形投影面之间相对方向上的位置关系而构
成的主相机框架的位置和朝向,设置七个虚拟辅助相机,并使用这些虚拟辅助相机获取观
察位置周围环境的深度距离值,并利用这些深度距离值,结合上一次视差调节的结果,调整
主相机框架中各部件之间相对方向上位置关系,进而改变两个虚拟主相机的空间位置与投
影矩阵,从而调整虚拟主相机生成的立体视觉三维图像的视差。根据立体视觉三维可视化
系统用户的化身在三维场景中的方位变化和三维场景的变化,自动调整生成立体视觉图像
的主相机框架,以确保在立体视觉三维可视化系统用户化身的方位或三维场景的连续变化
过程中,立体三维可视化系统能够产生正确的立体视觉图像。2、本发明根据六个辅助相机
获得的观察位置周边环境的深度距离值,对主相机框架进行整体缩放,而后又根据虚拟辅
助相机additional获取的深度距离值对虚拟主相机的间距进行调整,两次调整的过程能够
将生成的立体视觉三维图像中主要内容与显示平面在深度上的差距约束在预设的范围里,
从而避免会聚/调节的问题。3、采用本发明每一次调节后生成的立体视觉三维图像都能产
生有正确深度层次感,并且图像中的主要内容的视差(超过p%的内容)都不超过d'。因此,
本发明可以广泛用于计算机立体视觉图形学领域。

附图说明

[0018] 图1是本发明的应用状态示意图

具体实施方式

[0019] 下面结合附图和实施例对本发明进行详细的描述。
[0020] 本发明立体视觉三维可视化系统中自动调节图像视差的方法,包括以下步骤:
[0021] 1)定义主相机框架、各虚拟相机的参数及投影矩阵
[0022] 如图1所示,水平设置两个虚拟主相机1、2,即一左(Left)虚拟主相机1和一右(Right)虚拟主相机2,二者之间的间距为dmainCams,两个虚拟主相机1、2连成的线段中点为锚点Pivot,与锚点Pivot相距一定距离DRect处设置一矩形投影面Rect,矩形投影面Rect的中
心点C'与锚点Pivot构成的线段垂直于矩形投影面Rect。矩形投影面Rect的高度为hRect,宽
度为wRect。设定两个虚拟主相机1、2,锚点Pivot以及矩形投影面Rect之间相对方向上的位
置关系为主相机框架。其中,左虚拟主相机1的近裁剪面距离为nmainCams1,远裁剪面距离为fmainCams1;右虚拟主相机2的近裁剪面距离为nmainCams2,远裁剪面距离为fmainCams2。根据中心点C',矩形投影面Rect的高度hRect、宽度wRect,左虚拟主相机1的nmainCams1和fmainCams1确定左虚拟主相机1的离轴投影矩阵(Off-axis Projection Matrix),并将其作为左虚拟主相机1的投
影矩阵;同理根据中心点C',矩形投影面Rect的高度hRect、wRect,右虚拟主相机2的nmainCams2和fmainCams2确定右虚拟主相机2的投影矩阵。
[0023] 在锚点Pivot处,采用常规立方体纹理(cubemap)生成技术设置六个虚拟辅助相机front、back、left、right、up、down,另外,还在锚点Pivot处设置一个虚拟辅助相机
additional。
[0024] 各虚拟辅助相机的朝向分布如下:
[0025] ①虚拟辅助相机front、additional的指向均正对矩形投影面Rect的方向,虽然两虚拟辅助相机front、additional的位置和方向重合,但因其投影矩阵不同,因此所获得的
深度距离值也不同;
[0026] ②虚拟辅助相机back指向背对矩形投影面Rect的方向;
[0027] ③虚拟辅助相机left指向左虚拟主相机1的方向;
[0028] ④虚拟辅助相机Right指向右虚拟主相机2的方向;
[0029] ⑤虚拟辅助相机up指向平行于矩形投影面Rect向上的方向;
[0030] ⑥虚拟辅助相机down指向平行于矩形投影面Rect向下的方向。
[0031] 七个虚拟辅助相机的近裁剪面距离、远裁剪面距离如下(如表1所示):
[0032] 表1 虚拟辅助相机的近裁剪面距离、远裁剪面距离
[0033]虚拟辅助相机 front back left right up down additional
近裁剪面距离 nfront nback nleft nright nup ndown nadd
远裁剪面距离 ffront fback fleft fright fup fdown fadd
[0034] 上述六个虚拟辅助相机front、back、left、right、up、down的各个投影矩阵分别为使用视角90度的透视投影所对应的投影矩阵。上述虚拟辅助相机additional的数量可以采用一个,也可以采用多个;若采用一个虚拟辅助相机additional,则其投影矩阵为使用视角
恰好覆盖矩形投影面Rect的透视投影所对应的投影矩阵;若采用多个虚拟辅助相机
additional,则所设置的多个虚拟辅助相机additional的投影矩阵为所采用的多个虚拟辅
助相机additional的使用视角合起来恰好覆盖矩形投影面Rect的透视投影所对应的投影
矩阵。
[0035] 2)根据使用环境设定如下参数:d、w、h、D、p%、d'、n、f、a、b、Ci、vi和upi;并根据这些参数设置两个虚拟主相机1、2和各个虚拟辅助相机。其中,
[0036] d为两虚拟主相机1、2之间的初始水平间距,单位为mm;
[0037] w为显示最终生成的立体视觉三维图像的显示设备的宽度,单位为mm;
[0038] h为显示最终生成的立体视觉三维图像的显示设备的高度,单位为mm;
[0039] D为显示最终生成的立体视觉三维图像的显示设备的最佳观看距离,单位为mm;
[0040] 上述d一般根据立体视觉三维可视化系统用户人群的瞳距而定,成人瞳距为55mm~65mm,未成年人瞳距为45mm~55mm;w、h、D根据实际用于显示立体视觉三维图像的显示设备而定;需要说明的是用于显示最终生成的立体视觉三维图像的显示设备映射到三维场景
中的虚拟对象即为矩形投影面Rect。
[0041] p%为显示的非背景内容中主体内容所占的百分比阈值,根据立体视觉三维图像表现的三维场景特点而定,范围为80%~95%;
[0042] d'为显示的非背景内容中主体内容在显示设备上可容忍的最大视差,根据立体视觉三维可视化系统用户期望的立体视觉三维图像观看舒适程度而定,0.1dmm;
[0043] n为两虚拟主相机1、2初始的近裁剪面距离;
[0044] f为两虚拟主相机1、2初始的远裁剪面距离;且0.11、2采用相同的参数值;
[0045] Ci为观察位置,根据立体视觉三维可视化系统用户需要任意选定;
[0046] vi为立体视觉三维可视化系统用户化身(avatar)的观察方向,vi以Ci为起始点沿任意方向延伸;
[0047] upi为立体视觉三维可视化系统用户化身的向上的方向,upi以Ci为起始点垂直于vi沿向上方向延伸;
[0048] 其中,i=0,1,2,...,N;上述Ci、vi和upi由立体视觉三维可视化系统用户通过人机交互接口指定;
[0049] a*a为六个虚拟辅助相机front、back、left、right、up、down存储深度距离值的纹理尺寸;
[0050] b*b为虚拟辅助相机additional存储深度距离值的纹理尺寸,其中,a、b均为2m,m5 6
=1,2,...,N,且a
[0051] 根据以上参数设置两虚拟主相机1、2和各虚拟辅助相机:
[0052] ①设置两虚拟主相机1、2
[0053] 对两个虚拟主相机1、2设置如下:
[0054] a)初始化主相机框架中各参数:令DRect=D,矩形投影面Rect的高hRect=h,矩形投影面Rect的宽wRect=w,两虚拟主相机1、2间的水平间距dmainCams=d,左虚拟主相机1的近裁减面距离nmainCams1=n,左虚拟主相机1的远裁减面距离fmainCams1=f,右虚拟主相机2的近裁减面距离nmainCams2=n,右虚拟主相机2的远裁减面距离fmainCams2=f;
[0055] b)以立体视觉三维可视化系统用户化身的观察方向vi和立体视觉三维可视化系统用户化身的向上的方向upi叉乘确定向量ti;以观察位置Ci为起点,沿立体视觉三维可视
化系统用户化身的观察方向vi上距离DRect处设置矩形投影面Rect,矩形投影面Rect的高为
hRect,宽为wRect;
[0056] c)将主相机框架的锚点Pivot与观察位置Ci重合,两虚拟主相机1、2之间水平距离为dmainCams,左虚拟主相机1的近裁减面距离nmainCams1、远裁减面距离fmainCams1,右虚拟主相机2的近裁减面距离nmainCams2、远裁减面距离fmainCams2;
[0057] ②设置虚拟辅助相机
[0058] 对各虚拟辅助相机设置如下:
[0059] a)确定各虚拟辅助相机的朝向
[0060] 虚拟辅助相机front和虚拟辅助相机additional指向立体视觉三维可视化系统用户化身的观察方向vi;虚拟辅助相机back指向立体视觉三维可视化系统用户化身的观察方
向vi的反方向;虚拟辅助相机left指向ti的反方向;虚拟辅助相机right指向ti;虚拟辅助相机up指向立体视觉三维可视化系统用户化身的向上的方向upi;虚拟辅助相机down指向立
体视觉三维可视化系统用户化身的向上的方向upi的反方向;
[0061] b)设定各虚拟辅助相机的近裁剪面距离、远裁剪面距离
[0062] 虚拟辅助相机front的nfront=n,ffront=fmainCams1;
[0063] 虚拟辅助相机back的nback=n,fback=fmainCams1;
[0064] 虚拟辅助相机left的nleft=n,fleft=fmainCams1;
[0065] 虚拟辅助相机right的nright=n,fright=fmainCams1;
[0066] 虚拟辅助相机up的nup=n,fup=fmainCams1;
[0067] 虚拟辅助相机down的ndown=n,fdown=fmainCams1;
[0068] 虚拟辅助相机additional的nadd=nmainCams1,fadd=fmainCams1;
[0069] c)针对六个虚拟辅助相机front、back、left、right、up和down一一对应创建一个尺寸为a*a的存储深度距离值的浮点纹理。针对虚拟辅助相机additional创建一个尺寸为
b*b的存储深度距离值的浮点纹理;
[0070] 3)当观察位置Ci、立体视觉三维可视化系统用户化身的观察方向vi和立体视觉三维可视化系统用户化身的向上的方向upi发生变化后,重复步骤2)中①的b)~c)对主相机
框架的位置和方向进行调节;若立体视觉三维可视化系统发出视差调节的指令,则进入下
一步;若不发出视差调节的指令,则不进行任何操作;
[0071] 上述视差调节指令的频率通常时间间隔越长,调节效果越差,优选每帧都进行视差调节。
[0072] 4)根据步骤3)中观察位置Ci、立体视觉三维可视化系统用户化身的观察方向vi和立体视觉三维可视化系统用户化身的向上的方向upi的变化,重复步骤2)中②的a)~b);
[0073] 5)根据七个虚拟辅助相机获得的观察位置Ci周边环境的深度距离值,对主相机框架进行缩放
[0074] ①使用七个虚拟辅助相机对观察位置Ci周边的三维场景进行渲染,各虚拟辅助相机获得对应观察位置Ci周边的深度信息,并将深度信息转化为具体的深度距离值,将六个
虚拟辅助相机front、back、left、right、up和down的各深度距离值存入步骤2)中设定的各
对应尺寸为a*a的浮点纹理中;虚拟辅助相机additional的深度距离值存入步骤2)中设定
的尺寸为b*b的浮点纹理中;
[0075] ②在六个虚拟辅助相机front、back、left、right、up和down的深度距离值中,取各自的最小深度距离值,并将六个虚拟辅助相机中最小的深度距离值记为min Dist;
[0076] ③获取虚拟辅助相机additional的深度距离值中最小的深度距离值记为min AddDist,获取仅次于虚拟辅助相机additional的远裁剪面距离fadd的深度距离值记为max 
AddDist;
[0077] ④根据公式 计算当前观察位置Ci周边环境的尺度参考值,单位根据当前观察位置Ci周边环境的三维场景本
身的长度单位确定,其中,k是约束系数,k根据实际应用情况而定,k值越大则最终生成立体视觉三维图像深度感越强。通常当1≤k≤3时保证产生正确的立体视觉三维图像,并在其产
生的正确立体视觉三维图像的前提下增强深度感;当k<1时,能够生成立体视觉图像,但生
成的立体视觉三维图像深度感过小;当k>3时,导致不正确的立体视觉三维图像产生;特别
地,当2.5≤k≤3时,生成的立体视觉三维图像深度感较强,效果较好。
[0078] ⑤根据公式scalenew=scaleold+α*(scaleref-scaleold)计算当前观察位置Ci周边环境的尺度值,单位根据当前观察位置Ci周边环境的三维场景本身的长度单位确定,其中,
α是计算环境尺度时的约束系数,α根据实际应用情况而定。α值越大则scalenew调节过程越剧烈,α值越小则scalenew调节过程越平滑;通常0<α<1,当0.3≤α≤0.4时,scalenew调整效果较好。scaleold为上一次视差调节时观察位置Ci周边环境的尺度值,单位根据当前观察位置
Ci周边环境的三维场景本身的长度单位确定,且其初始值为D;需要说明的是上一次视差调
节时观察位置Ci周边环境的尺度值scalenew,在下一次视差调节时,自动变成scaleold;
[0079] ⑥对当前主相机框架进行缩放变换,缩放中心为Pivot点,缩放系数为scalenew/scaleold,将dmainCams、DRect、wRect、hRect、nmainCams1、fmainCams1、nmainCams2、fmainCams2分别乘以缩放系数scalenew/scaleold得到各自对应的新值,以此得到视差调节后的两虚拟主相机1、2,锚点Pivot和矩形投影面Rect之间相对方向上新的位置关系;
[0080] 6)根据虚拟辅助相机additional获取的深度距离值,对dmainCams进行调整
[0081] ①在虚拟辅助相机additional的浮点纹理中,筛选出深度距离值小于远裁剪面距离值fadd的纹理部分,并对这部分使用区域增长法(Region Growing Method),以(max 
AddDist-min AddDist)/Res为分割的阈值进行区域分割处理,处理后得到若干纹理区域以
及各纹理区域对应的种子点,采用各纹理区域的种子点对对应的纹理区域建立索引;其中,
Res为显示设备在横向或纵向分辨率中较大的一个;
[0082] ②对作为各纹理区域索引的各个种子点,按照其深度距离值从大到小进行排序,按照这个排序结果,统计各个种子点所索引的纹理区域的像素数并进行累计,截止到累计
的像素数超过(100-p)%上一步筛选出的纹理部分时,停止累计,对已累计的纹理像素,求
其深度距离值的平均值,得到远景平均深度距离值avgFarDist;
[0083] ③根据公式DepthRange=avgFarDist-min AddDist计算当前两虚拟主相机1、2之间的可见深度距离值的跨度范围;
[0084] ④根据公式 计算当前两虚拟主相机1、2之间水平间距的参考值dref,单位根据当前Ci周边环境的三维场景
本身的长度单位确定;
[0085] ⑤根据公式dnew=dold+β*(dref-dold)计算当前两虚拟主相机1、2水平间距dnew,单位根据当前Ci周边环境的三维场景本身的长度单位确定,其中,β为控制两虚拟主相机1、2水平间距调节过程的约束系数,β根据实际应用情况而定,β值越大则dnew调节过程越剧烈,β值越小则dnew调节过程越平滑;通常0<β<1,当0.3≤β≤0.4时,dnew调整效果较好;dold为上一次视差调节时采用的两虚拟主相机1、2水平间距,单位根据当前观察位置Ci周边环境的三维
场景本身的长度单位确定,且其初始值为d;需要说明的是,上一次视差调节时两虚拟主相
机1、2的水平间距dnew,在下一次视差调节时,自动变成dold;
[0086] ⑥以锚点Pivot为中点,使dmainCams=dnew以调整两虚拟主相机1、2的水平间距;
[0087] 7)通过步骤5)和步骤6)实现对主相机框架中两虚拟主相机1、2,锚点Pivot和矩形投影面Rect之间相对方向上的位置关系的调整,进而改变两虚拟主相机1、2的空间位置与
投影矩阵,并按照生成立体视觉三维图像的一般方法生成立体视觉图像对,立体视觉三维
可视化系统的使用者在合适的输出设备上看到立体视觉图像对,并经过自身的视觉系统处
理合成,形成立体视觉感知。
[0088] 8)根据观察位置Ci、立体视觉三维可视化系统用户化身的观察方向vi和立体视觉三维可视化系统用户化身的向上的方向upi的变化,重复步骤3)~7),实现自动调节图像视
差。
[0089] 综上所述,可以看出本发明原理如下:每一次进行视差调节时,根据当前设定的两虚拟主相机、锚点和矩形投影面之间相对方向上的位置关系构成主相机框架的位置和观察
方向。本发明在锚点处共设置七个虚拟辅助相机,使用其中六个虚拟辅助相机获取观察位
置周围环境中各个方向的深度距离值,并结合前一次进行视差调节过程中的计算结果,对
当前的主相机框架进行缩放;再使用第七个虚拟辅助相机获取当前主相机框架的观察方向
的深度距离值,并结合前一次进行视差调节过程中的计算结果,对两虚拟主相机的水平间
距进行调整;通过这两步实现当前主相机框架中虚拟主相机、锚点和矩形投影面之间相对
方向上的位置关系的调整,进而改变两虚拟主相机的空间位置与投影矩阵,达到调节立体
视觉三维图像视差的目的。
[0090] 上述各实施例仅用于说明本发明,其中各步骤的实现方式是可以有所变化的,凡是在本发明技术方案的基础上进行的等同变换和改进,均不应排除在本发明的保护范围之
外。