CN110675482B - 虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法 - Google Patents

虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法 Download PDF

Info

Publication number
CN110675482B
CN110675482B CN201910948328.9A CN201910948328A CN110675482B CN 110675482 B CN110675482 B CN 110675482B CN 201910948328 A CN201910948328 A CN 201910948328A CN 110675482 B CN110675482 B CN 110675482B
Authority
CN
China
Prior art keywords
array
virtual
coordinate system
counter
step202
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.)
Active
Application number
CN201910948328.9A
Other languages
English (en)
Other versions
CN110675482A (zh
Inventor
陈纯毅
杨华民
蒋振刚
胡小娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changchun University of Science and Technology
Original Assignee
Changchun University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Changchun University of Science and Technology filed Critical Changchun University of Science and Technology
Publication of CN110675482A publication Critical patent/CN110675482A/zh
Application granted granted Critical
Publication of CN110675482B publication Critical patent/CN110675482B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开一种虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法。本方法把虚拟全景相机的成像面上的像素阵列表示成球面斐波那契像素点阵,并利用光线跟踪技术渲染全景画面。全景画面的像素点在全景视域球表面上均匀分布,可以保证全景画面所有区域的像素空间分布密度相同,进而使全景画面所有区域具有相同的清晰度。本方法能够正常地把所生成的全景画面的局部区域显示到显示设备上。

Description

虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示 方法
技术领域
本发明属于虚拟三维场景画面渲染与显示技术领域,涉及一种虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法。
背景技术
随着虚拟现实技术的不断发展,人们对全景视频的需求越来越强烈。制作全景视频的关键是生成其中的每帧全景画面。全景画面包含360×180°视场范围的场景视觉信息。Vladyslav Zakharchenko等人2016年发表在SPIE会议论文集第9970卷的论文《QualityMetric for Spherical Panoramic Video》对全景画面作了详细介绍。全景画面既可以通过用全景相机拍摄真实场景生成,也可以利用计算机图形学技术渲染虚拟三维场景生成。当前的全景相机通常采用多相机拼接方法,把朝不同方向拍摄得到的局部视角画面缝合成全景画面。在利用计算机图形学技术渲染生成虚拟三维场景全景画面时,可以借用生成环境立方图的思想,通过生成环境立方图来产生全景画面。Tomas Akenine-
Figure GDA0003999725010000013
等人撰写的由A K Peters公司出版的《Real-Time Rendering,3rd Edition》对环境立方图的生成作了介绍。全景画面本质上呈现的是三维场景投影到全景视域球上的视觉信息。从这个角度说,全景画面的像素最好在全景视域球上均匀分布,以便使全景视域球上所有区域的像素点密度相同,从而保证全景画面的所有区域具有相同的清晰度和画质。然而,使用现有的立方图思想生成的全景画面的像素在全景视域球上并非均匀分布。2010年发表在期刊Mathematical Geosciences的第42卷第1期的论文《Measurement of areas on a sphereusing Fibonacci and latitude-longitude lattices》介绍了球面斐波那契网格点阵,其可以看作是在球面上均匀分布的点阵。如图1所示,要在半径为1的球面上生成包含N个点的斐波那契网格点阵,可以按如下方式计算第n个点的坐标(xn,yn,zn):
Figure GDA0003999725010000011
式中,
Figure GDA0003999725010000012
首先在全景视域球上产生包含N个点的球面斐波那契网格点阵,把球面斐波那契网格点阵的每个点当作全景画面的一个像素,再利用计算机图形学技术获得每个像素的颜色值,就可以渲染出各个区域具有相同清晰度的全景画面。由于球面斐波那契网格点阵并非二维规则矩形点阵,因此不宜用矩阵来保存球面斐波那契像素点阵全景画面。全景画面最终需要显示给人观看,人在观看全景画面时,在特定时刻只能观看到全景画面的一部分,也就是说特定时刻在显示设备上只需显示全景画面的一个局部区域。另外,当前显示设备的像素点阵通常为二维矩形点阵。要在显示设备上观看球面斐波那契像素点阵全景画面的一个局部区域,需要设计专门的方法来根据球面斐波那契像素点阵图像计算出特定画面区域的二维矩形像素点阵图像,以便在显示设备上显示。
尽管真实的全景相机通常由多个相机拼接而成,在利用计算机图形学技术渲染虚拟三维场景以生成全景画面时,可以定义虚拟全景相机。虚拟全景相机的成像面是一个半径为 1的球面(就是全景视域球面,即图1所示的球面)。虚拟全景相机可以用成像球面的球心位置和北极方向两个参数来描述。虚拟全景相机视点位置就是该球心位置,虚拟全景相机拍摄时的向上方向就是该北极方向。如图1所示,成像球面的球心位置在局部坐标系x-y-z 的原点o处,成像球面的北极方向为z轴方向。
发明内容
本发明的目的在于,提供一种虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法,实现虚拟三维场景的全景画面的渲染,并在显示器上显示全景画面的局部区域。
本发明的技术方案是这样实现的:首先在如图1所示的虚拟全景相机的成像球面上生成包含N个点的斐波那契网格点阵A001,计算斐波那契网格点阵A001的各个网格点在如图1所示的局部坐标系x-y-z中的坐标;根据世界坐标系X-Y-Z中的虚拟全景相机视点位置和虚拟全景相机拍摄时的向上方向构建从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵,据此计算斐波那契网格点阵A001的各个网格点在世界坐标系X-Y-Z中的坐标;根据世界坐标系X-Y-Z中的虚拟全景相机视点位置和世界坐标系X-Y-Z中的斐波那契网格点阵A001的各个网格点的坐标,确定斐波那契网格点阵A001的各个网格点对应的成像球面像素点对应的光线,并利用光线跟踪技术求解像素颜色;用一维数组PANORAMA存储斐波那契网格点阵A001的各个网格点对应的成像球面像素点的颜色,即数组PANORAMA的第n个元素存储斐波那契网格点阵A001的第n个网格点对应成像球面像素点的颜色,n= 1,2,…,N;最后,把数组PANORAMA保存到磁盘文件PAIMAGE中,完成全景画面的渲染;在显示全景画面时,首先把磁盘文件PAIMAGE中的数组PANORAMA加载到计算机内存中,然后把虚拟透视投影相机A004的视点设置成局部坐标系x-y-z的原点,再用虚拟透视投影相机A004拍摄成像球面以便得到需要显示的全景画面局部区域;如图1所示,矩形ABCD就是虚拟透视投影相机A004的像素平面;根据数组PANORAMA存储的数据插值计算虚拟透视投影相机A004的像素平面上的各个像素的颜色值,从而得到矩形画面 A005,并把矩形画面A005显示到显示器上。本方法的具体实现步骤如下:
1)本方法的第一部分实现全景画面的渲染,具体实现步骤如下:
步骤Step101:在虚拟全景相机的成像球面上生成包含N个点的斐波那契网格点阵A001,计算斐波那契网格点阵A001的各个网格点在如图1所示的局部坐标系x-y-z中的坐标;斐波那契网格点阵A001的第n个网格点的坐标为(xn,yn,zn),其中zn=(2n-1)/N-1,xn=(1-zn 2)1/2cos(2πnφ),yn=(1-zn 2)1/2sin(2πnφ),
Figure GDA0003999725010000031
在计算机的内存中创建包含N个元素的一维数组PANORAMA,数组PANORAMA的每个元素保存虚拟全景相机成像球面上的一个像素的颜色值;
步骤Step102:计算从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵Mxyz2XYZ
Figure GDA0003999725010000032
其中px表示虚拟全景相机视点在世界坐标系X-Y-Z中的X坐标,py表示虚拟全景相机视点在世界坐标系X-Y-Z中的Y坐标,pz表示虚拟全景相机视点在世界坐标系X-Y-Z中的Z坐标,向量W=[wx,wy,wz]T表示虚拟全景相机拍摄时的向上方向在世界坐标系X-Y-Z中对应的单位向量,向量U=[ux,uy,uz]T,向量V=[vx,vy,vz]T;向量V按如下方式计算:令/>
Figure GDA0003999725010000033
如果/>
Figure GDA0003999725010000034
则/>
Figure GDA0003999725010000035
否则V=[0,0,1]T;向量U按如下方式计算:/>
Figure GDA0003999725010000036
步骤Step103:对于n=1,2,…,N,针对斐波那契网格点阵A001的第n个网格点,做如下操作:
步骤Step103-1:令向量
Figure GDA0003999725010000037
Figure GDA0003999725010000038
Figure GDA0003999725010000039
其中ppix,x表示向量Ppix的第一个分量,ppix,y表示向量Ppix的第二个分量,ppix,z表示向量Ppix的第三个分量,ppix,w表示向量Ppix的第四个分量;
步骤Step103-2:从世界坐标系X-Y-Z中的虚拟全景相机视点位置出发,发射一条穿过世界坐标系X-Y-Z中的点
Figure GDA00039997250100000310
的光线B001,利用光线跟踪技术跟踪光线B001 在虚拟三维场景中的传播,从而计算得到斐波那契网格点阵A001的第n个网格点对应的虚拟全景相机成像球面像素的颜色B002;把数组PANORAMA的第n个元素赋值为颜色B002;
步骤Step103-3:针对斐波那契网格点阵A001的第n个网格点的操作结束;
步骤Step104:把数组PANORAMA保存到磁盘文件PAIMAGE中。
2)本方法的第二部分实现全景画面的特定局部区域的显示,具体实现步骤如下:
步骤Step201:把磁盘文件PAIMAGE中的数组PANORAMA加载到计算机的内存中;在计算机内存中创建包含NRow行、NCol列元素的二维数组IMSH,NRow表示虚拟透视投影相机A004的像素平面上的像素行数,NCol表示虚拟透视投影相机A004的像素平面上的像素列数,数组IMSH的元素用于保存虚拟透视投影相机A004的像素平面上的像素的颜色值,数组IMSH的元素和虚拟透视投影相机A004的像素平面上的像素一一对应;
步骤Step202:对于i=1,2,…,NRow,j=1,2,…,NCol,针对虚拟透视投影相机A004的像素平面上的第i行、第j列像素,做如下操作:
步骤Step202-1:令
Figure GDA0003999725010000041
Wpp=2tan(β)、Hpp=2tan(α),如图2所示,W1表示虚拟透视投影相机A004的观察方向对应的单位向量,U1表示虚拟透视投影相机A004 拍摄时的向上方向对应的单位向量,单位向量U1与线段AD平行,α表示虚拟透视投影相机A004的垂直视场半角,β表示虚拟透视投影相机A004的水平视场半角;点A的坐标为
Figure GDA0003999725010000042
其中E表示虚拟透视投影相机A004的视点位置;虚拟透视投影相机A004的视点设置在局部坐标系x-y-z的原点,因此/>
Figure GDA0003999725010000043
虚拟透视投影相机A004的像素平面上的第i行、第j列像素的中心点Pij为:
Figure GDA0003999725010000044
步骤Step202-2:计算中心点Pij在球坐标系中对应的坐标
Figure GDA0003999725010000045
rij表示中心点Pij与坐标系原点o的距离,θij表示天顶角,/>
Figure GDA0003999725010000046
表示方位角,0≤θij≤π,/>
Figure GDA0003999725010000047
步骤Step202-3:令
Figure GDA0003999725010000048
round(x)表示对x进行四舍五入取整;在计算机的内存中创建包含NUM个元素的一维数组WT,在计算机的内存中创建包含NUM个元素的一维数组CO;令计数器Counter=0;令偏移δ=1;
步骤Step202-3-1:如果
Figure GDA0003999725010000049
或者/>
Figure GDA00039997250100000410
则转步骤Step202-3-2,否则执行如下操作:令/>
Figure GDA00039997250100000411
其中/>
Figure GDA00039997250100000412
表示对x向下取整;令
Figure GDA0003999725010000051
如果αdiff<αth,则把数组WT的第Counter+1个元素赋值为
Figure GDA0003999725010000052
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure GDA0003999725010000053
个元素保存的颜色值,并且使Counter=Counter+1;αth为角度差异阈值;
步骤Step202-3-2:如果
Figure GDA0003999725010000054
则转步骤Step202-3-3,否则执行如下操作:令
Figure GDA0003999725010000055
Figure GDA0003999725010000056
如果βdiff<αth,则把数组WT的第Counter+1个元素赋值为
Figure GDA0003999725010000057
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure GDA0003999725010000058
个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-3:如果
Figure GDA0003999725010000059
则转步骤Step202-3-4,否则执行如下操作:令
Figure GDA00039997250100000510
Figure GDA00039997250100000511
如果θdiff<αth,则把数组WT的第Counter+1个元素赋值为/>
Figure GDA00039997250100000512
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure GDA00039997250100000513
个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-4:如果Counter≥NUM,则转步骤Step202-4,否则令δ=δ+1,并进一步判断是否
Figure GDA00039997250100000514
大于N且/>
Figure GDA00039997250100000515
小于1,如果是,则转步骤Step202-4,否则转步骤Step202-3-2;
步骤Step202-4:计算数组WT从第1个到第Counter个元素的值的累加和SUM;对于J=1,2,…,Counter,把数组WT的第J个元素赋值为数组WT的第J个元素的值除以SUM 之商;
步骤Step202-5:把数组WT的第1个至第Counter个元素的值当作对数组CO的第1个至第Counter个元素的值进行加权求和时使用的权重系数,计算数组CO的从第1个至第Counter个元素的值的加权求和结果C001;数组WT的第1个元素的值为数组CO的第 1个元素的权重系数,数组WT的第2个元素的值为数组CO的第2个元素的权重系数,以此类推;把数组IMSH的第i行、第j列的元素赋值为加权求和结果C001;
步骤Step202-6:针对虚拟透视投影相机A004的像素平面上的第i行、第j列像素的操作结束;
步骤Step203:把保存在数组IMSH中的矩形画面A005显示到显示设备上。
本发明的积极效果是:全景画面的像素点在全景视域球表面上均匀分布,可以保证全景画面所有区域的像素空间分布密度相同,进而使全景画面所有区域具有相同的清晰度。另外,本方法能够正常地把所生成的全景画面的局部区域显示到显示设备上。
附图说明
图1为虚拟全景相机的成像面示意图。
图2为虚拟透视投影相机示意图。
具体实施方式
为了使本方法的特征和优点更加清楚明白,下面结合具体实施例对本方法作进一步的描述。在本实施例中,计算机配有Intel XeonTM CPU 3.20GHz、金士顿8GB DDR3 1333内存,Buffalo HD-CE 1.5TU2磁盘、英伟达Quadro K2000 GPU。虚拟三维场景为一个虚拟房间场景,在房间中放着一张桌子和一把椅子,在房间的一面墙上挂着一面镜子。
本发明的技术方案是这样实现的:首先在如图1所示的虚拟全景相机的成像球面上生成包含N个点的斐波那契网格点阵A001,计算斐波那契网格点阵A001的各个网格点在如图1所示的局部坐标系x-y-z中的坐标;根据世界坐标系X-Y-Z中的虚拟全景相机视点位置和虚拟全景相机拍摄时的向上方向构建从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵,据此计算斐波那契网格点阵A001的各个网格点在世界坐标系X-Y-Z中的坐标;根据世界坐标系X-Y-Z中的虚拟全景相机视点位置和世界坐标系X-Y-Z中的斐波那契网格点阵A001的各个网格点的坐标,确定斐波那契网格点阵A001的各个网格点对应的成像球面像素点对应的光线,并利用光线跟踪技术求解像素颜色;用一维数组PANORAMA存储斐波那契网格点阵A001的各个网格点对应的成像球面像素点的颜色,即数组PANORAMA的第n个元素存储斐波那契网格点阵A001的第n个网格点对应成像球面像素点的颜色,n= 1,2,…,N;最后,把数组PANORAMA保存到磁盘文件PAIMAGE中,完成全景画面的渲染;在显示全景画面时,首先把磁盘文件PAIMAGE中的数组PANORAMA加载到计算机内存中,然后把虚拟透视投影相机A004的视点设置成局部坐标系x-y-z的原点,再用虚拟透视投影相机A004拍摄成像球面以便得到需要显示的全景画面局部区域;如图1所示,矩形ABCD就是虚拟透视投影相机A004的像素平面;根据数组PANORAMA存储的数据插值计算虚拟透视投影相机A004的像素平面上的各个像素的颜色值,从而得到矩形画面 A005,并把矩形画面A005显示到显示器上。本方法的具体实现步骤如下:
1)本方法的第一部分实现全景画面的渲染,具体实现步骤如下:
步骤Step101:在虚拟全景相机的成像球面上生成包含N个点的斐波那契网格点阵A001,计算斐波那契网格点阵A001的各个网格点在如图1所示的局部坐标系x-y-z中的坐标;斐波那契网格点阵A001的第n个网格点的坐标为(xn,yn,zn),其中zn=(2n-1)/N-1,xn=(1-zn 2)1/2cos(2πnφ),yn=(1-zn 2)1/2sin(2πnφ),
Figure GDA0003999725010000061
在计算机的内存中创建包含N个元素的一维数组PANORAMA,数组PANORAMA的每个元素保存虚拟全景相机成像球面上的一个像素的颜色值;
步骤Step102:计算从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵Mxyz2XYZ
Figure GDA0003999725010000071
其中px表示虚拟全景相机视点在世界坐标系X-Y-Z中的X坐标,py表示虚拟全景相机视点在世界坐标系X-Y-Z中的Y坐标,pz表示虚拟全景相机视点在世界坐标系X-Y-Z中的Z坐标,向量W=[wx,wy,wz]T表示虚拟全景相机拍摄时的向上方向在世界坐标系X-Y-Z中对应的单位向量,向量U=[ux,uy,uz]T,向量V=[vx,vy,vz]T;向量V按如下方式计算:令/>
Figure GDA0003999725010000072
如果/>
Figure GDA0003999725010000073
则/>
Figure GDA0003999725010000074
否则V=[0,0,1]T;向量U按如下方式计算:/>
Figure GDA0003999725010000075
步骤Step103:对于n=1,2,…,N,针对斐波那契网格点阵A001的第n个网格点,做如下操作:
步骤Step103-1:令向量
Figure GDA0003999725010000076
Figure GDA0003999725010000077
Figure GDA0003999725010000078
其中ppix,x表示向量Ppix的第一个分量,ppix,y表示向量Ppix的第二个分量,ppix,z表示向量Ppix的第三个分量,ppix,w表示向量Ppix的第四个分量;
步骤Step103-2:从世界坐标系X-Y-Z中的虚拟全景相机视点位置出发,发射一条穿过世界坐标系X-Y-Z中的点
Figure GDA0003999725010000079
的光线B001,利用光线跟踪技术跟踪光线B001 在虚拟三维场景中的传播,从而计算得到斐波那契网格点阵A001的第n个网格点对应的虚拟全景相机成像球面像素的颜色B002;把数组PANORAMA的第n个元素赋值为颜色B002;
步骤Step103-3:针对斐波那契网格点阵A001的第n个网格点的操作结束;
步骤Step104:把数组PANORAMA保存到磁盘文件PAIMAGE中。
2)本方法的第二部分实现全景画面的特定局部区域的显示,具体实现步骤如下:
步骤Step201:把磁盘文件PAIMAGE中的数组PANORAMA加载到计算机的内存中;在计算机内存中创建包含NRow行、NCol列元素的二维数组IMSH,NRow表示虚拟透视投影相机A004的像素平面上的像素行数,NCol表示虚拟透视投影相机A004的像素平面上的像素列数,数组IMSH的元素用于保存虚拟透视投影相机A004的像素平面上的像素的颜色值,数组IMSH的元素和虚拟透视投影相机A004的像素平面上的像素一一对应;
步骤Step202:对于i=1,2,…,NRow,j=1,2,…,NCol,针对虚拟透视投影相机A004的像素平面上的第i行、第j列像素,做如下操作:
步骤Step202-1:令
Figure GDA0003999725010000081
Wpp=2tan(β)、Hpp=2tan(α),如图2所示,W1表示虚拟透视投影相机A004的观察方向对应的单位向量,U1表示虚拟透视投影相机A004 拍摄时的向上方向对应的单位向量,单位向量U1与线段AD平行,α表示虚拟透视投影相机A004的垂直视场半角,β表示虚拟透视投影相机A004的水平视场半角;点A的坐标为
Figure GDA0003999725010000082
其中E表示虚拟透视投影相机A004的视点位置;虚拟透视投影相机A004的视点设置在局部坐标系x-y-z的原点,因此/>
Figure GDA0003999725010000083
虚拟透视投影相机A004的像素平面上的第i行、第j列像素的中心点Pij为:
Figure GDA0003999725010000084
步骤Step202-2:计算中心点Pij在球坐标系中对应的坐标
Figure GDA0003999725010000085
rij表示中心点Pij与坐标系原点o的距离,θij表示天顶角,/>
Figure GDA0003999725010000086
表示方位角,0≤θij≤π,/>
Figure GDA0003999725010000087
步骤Step202-3:令
Figure GDA0003999725010000088
round(x)表示对x进行四舍五入取整;在计算机的内存中创建包含NUM个元素的一维数组WT,在计算机的内存中创建包含NUM个元素的一维数组CO;令计数器Counter=0;令偏移δ=1;
步骤Step202-3-1:如果
Figure GDA0003999725010000089
或者/>
Figure GDA00039997250100000810
则转步骤Step202-3-2,否则执行如下操作:令/>
Figure GDA00039997250100000811
其中/>
Figure GDA00039997250100000812
表示对x向下取整;令
Figure GDA00039997250100000813
如果αdiff<αth,则把数组WT的第Counter+1个元素赋值为/>
Figure GDA00039997250100000814
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure GDA00039997250100000815
个元素保存的颜色值,并且使Counter=Counter+1;αth为角度差异阈值;
步骤Step202-3-2:如果
Figure GDA0003999725010000091
则转步骤Step202-3-3,否则执行如下操作:令
Figure GDA0003999725010000092
Figure GDA0003999725010000093
如果βdiff<αth,则把数组WT的第Counter+1个元素赋值为
Figure GDA0003999725010000094
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure GDA0003999725010000095
个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-3:如果
Figure GDA0003999725010000096
则转步骤Step202-3-4,否则执行如下操作:令
Figure GDA0003999725010000097
Figure GDA0003999725010000098
如果θdiff<αth,则把数组WT的第Counter+1个元素赋值为
Figure GDA0003999725010000099
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure GDA00039997250100000910
个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-4:如果Counter≥NUM,则转步骤Step202-4,否则令δ=δ+1,并进一步判断是否
Figure GDA00039997250100000911
大于N且/>
Figure GDA00039997250100000912
小于1,如果是,则转步骤Step202-4,否则转步骤Step202-3-2;
步骤Step202-4:计算数组WT从第1个到第Counter个元素的值的累加和SUM;对于J=1,2,…,Counter,把数组WT的第J个元素赋值为数组WT的第J个元素的值除以SUM 之商;
步骤Step202-5:把数组WT的第1个至第Counter个元素的值当作对数组CO的第1个至第Counter个元素的值进行加权求和时使用的权重系数,计算数组CO的从第1个至第Counter个元素的值的加权求和结果C001;数组WT的第1个元素的值为数组CO的第 1个元素的权重系数,数组WT的第2个元素的值为数组CO的第2个元素的权重系数,以此类推;把数组IMSH的第i行、第j列的元素赋值为加权求和结果C001;
步骤Step202-6:针对虚拟透视投影相机A004的像素平面上的第i行、第j列像素的操作结束;
步骤Step203:把保存在数组IMSH中的矩形画面A005显示到显示设备上。
在显示全景画面的特定局部区域时,本方法利用虚拟透视投影相机A004拍摄虚拟全景相机的成像球面,并将拍摄到的画面显示到显示设备上;虚拟透视投影相机A004就是计算机图形学中的普通透视投影相机,在J.F.Hughes等人撰写的由Addison-Wesley出版公司于2014年出版的《Computer Graphics:Principles and Practice(3rd Edition)》的13.3节有关于透视投影相机的详细介绍。
在本实施例中,N=4096×4096,W=[0,1,0]T,px=0.1,py=1.0,pz=-1.2,NRow=768,NCol=1024,W1=[cos(π/3),sin(π/3),0]T,U1=[0,0,1]T,NUM=6,角度差异阈值αth=8×10-3rad,σ=αth/2;虚拟透视投影相机A004的垂直视场半角为0.6981rad,虚拟透视投影相机A004的水平视场半角为0.8727rad。W1和U1都是在局部坐标系x-y-z中定义的。
图1中的球的半径为1。通过改变W1和U1的值可以改变在显示设备上显示的全景画面局部区域。图2中的视点E到矩形ABCD平面的距离为1,线段AB的长度为Wpp,线段AD的长度为Hpp,W1和矩形ABCD平面垂直。步骤Step202-1计算得到的Pij是在图1 所示的局部坐标系x-y-z中定义的,步骤Step202-2计算得到的
Figure GDA0003999725010000101
是Pij对应的在球坐标系中的表示结果。数组IMSH实际上保存了矩形画面A005的各个像素的颜色值。||x|| 表示求向量x的长度。图2所示的向量U1、向量W1、点A、点B、点C、点D、视点E 都是在局部坐标系x-y-z中定义的。/>

Claims (1)

1.一种虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法,其特征在于:在渲染阶段,首先在虚拟全景相机的成像球面上生成包含N个点的斐波那契网格点阵A001,计算斐波那契网格点阵A001的各个网格点在局部坐标系x-y-z中的坐标;根据世界坐标系X-Y-Z中的虚拟全景相机视点位置和虚拟全景相机拍摄时的向上方向构建从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵,据此计算斐波那契网格点阵A001的各个网格点在世界坐标系X-Y-Z中的坐标;根据世界坐标系X-Y-Z中的虚拟全景相机视点位置和世界坐标系X-Y-Z中的斐波那契网格点阵A001的各个网格点的坐标,确定斐波那契网格点阵A001的各个网格点对应的成像球面像素点对应的光线,并利用光线跟踪技术求解像素颜色;用一维数组PANORAMA存储斐波那契网格点阵A001的各个网格点对应的成像球面像素点的颜色,即数组PANORAMA的第n个元素存储斐波那契网格点阵A001的第n个网格点对应成像球面像素点的颜色,n=1,2,…,N;最后,把数组PANORAMA保存到磁盘文件PAIMAGE中,完成全景画面的渲染;在显示阶段,首先把磁盘文件PAIMAGE中的数组PANORAMA加载到计算机内存中,然后把虚拟透视投影相机A004的视点设置成局部坐标系x-y-z的原点,再用虚拟透视投影相机A004拍摄成像球面以便得到需要显示的全景画面局部区域;根据数组PANORAMA存储的数据插值计算虚拟透视投影相机A004的像素平面上的各个像素的颜色值,从而得到矩形画面A005,并把矩形画面A005显示到显示器上;
在渲染阶段,本方法的具体实现步骤如下:
步骤Step101:在虚拟全景相机的成像球面上生成包含N个点的斐波那契网格点阵A001,计算斐波那契网格点阵A001的各个网格点在局部坐标系x-y-z中的坐标;斐波那契网格点阵A001的第n个网格点的坐标为(xn,yn,zn),其中zn=(2n-1)/N-1,xn=(1-zn 2)1/2cos(2πnφ),yn=(1-zn 2)1/2sin(2πnφ),
Figure FDA0003995801000000011
n=1,2,…,N;在计算机的内存中创建包含N个元素的一维数组PANORAMA,数组PANORAMA的每个元素保存虚拟全景相机成像球面上的一个像素的颜色值;
步骤Step102:计算从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵Mxyz2XYZ
Figure FDA0003995801000000012
其中px表示虚拟全景相机视点在世界坐标系X-Y-Z中的X坐标,py表示虚拟全景相机视点在世界坐标系X-Y-Z中的Y坐标,pz表示虚拟全景相机视点在世界坐标系X-Y-Z中的Z坐标,向量W=[wx,wy,wz]T表示虚拟全景相机拍摄时的向上方向在世界坐标系X-Y-Z中对应的单位向量,向量U=[ux,uy,uz]T,向量V=[vx,vy,vz]T;向量V按如下方式计算:令/>
Figure FDA0003995801000000013
如果/>
Figure FDA0003995801000000014
则/>
Figure FDA0003995801000000015
否则V=[0,0,1]T;向量U按如下方式计算:/>
Figure FDA0003995801000000016
步骤Step103:对于n=1,2,…,N,针对斐波那契网格点阵A001的第n个网格点,做如下操作:
步骤Step103-1:令向量
Figure FDA0003995801000000021
Figure FDA0003995801000000022
Figure FDA0003995801000000023
其中ppix,x表示向量Ppix的第一个分量,ppix,y表示向量Ppix的第二个分量,ppix,z表示向量Ppix的第三个分量,ppix,w表示向量Ppix的第四个分量;
步骤Step103-2:从世界坐标系X-Y-Z中的虚拟全景相机视点位置出发,发射一条穿过世界坐标系X-Y-Z中的点
Figure FDA0003995801000000024
的光线B001,利用光线跟踪技术跟踪光线B001在虚拟三维场景中的传播,从而计算得到斐波那契网格点阵A001的第n个网格点对应的虚拟全景相机成像球面像素的颜色B002;把数组PANORAMA的第n个元素赋值为颜色B002;
步骤Step103-3:针对斐波那契网格点阵A001的第n个网格点的操作结束;
步骤Step104:把数组PANORAMA保存到磁盘文件PAIMAGE中;
在显示阶段,本方法的具体实现步骤如下:
步骤Step201:把磁盘文件PAIMAGE中的数组PANORAMA加载到计算机的内存中;在计算机内存中创建包含NRow行、NCol列元素的二维数组IMSH,NRow表示虚拟透视投影相机A004的像素平面上的像素行数,NCol表示虚拟透视投影相机A004的像素平面上的像素列数,数组IMSH的元素用于保存虚拟透视投影相机A004的像素平面上的像素的颜色值,数组IMSH的元素和虚拟透视投影相机A004的像素平面上的像素一一对应;
步骤Step202:对于i=1,2,…,NRow,j=1,2,…,NCol,针对虚拟透视投影相机A004的像素平面上的第i行、第j列像素,做如下操作:
步骤Step202-1:令
Figure FDA0003995801000000025
Wpp=2tan(β)、Hpp=2tan(α),W1表示虚拟透视投影相机A004的观察方向对应的单位向量,U1表示虚拟透视投影相机A004拍摄时的向上方向对应的单位向量,α表示虚拟透视投影相机A004的垂直视场半角,β表示虚拟透视投影相机A004的水平视场半角;点A的坐标为/>
Figure FDA0003995801000000026
其中E表示虚拟透视投影相机A004的视点位置;虚拟透视投影相机A004的视点设置在局部坐标系x-y-z的原点,因此
Figure FDA0003995801000000027
虚拟透视投影相机A004的像素平面上的第i行、第j列像素的中心点Pij为:
Figure FDA0003995801000000031
步骤Step202-2:计算中心点Pij在球坐标系中对应的坐标
Figure FDA0003995801000000032
rij表示中心点Pij与坐标系原点o的距离,θij表示天顶角,/>
Figure FDA0003995801000000033
表示方位角,0≤θij≤π,/>
Figure FDA0003995801000000034
/>
步骤Step202-3:令
Figure FDA0003995801000000035
round(x)表示对x进行四舍五入取整;在计算机的内存中创建包含NUM个元素的一维数组WT,在计算机的内存中创建包含NUM个元素的一维数组CO;令计数器Counter=0;令偏移δ=1;
步骤Step202-3-1:如果
Figure FDA0003995801000000036
或者/>
Figure FDA0003995801000000037
则转步骤Step202-3-2,否则执行如下操作:令
Figure FDA0003995801000000038
其中/>
Figure FDA0003995801000000039
表示对x向下取整;令
Figure FDA00039958010000000310
如果αdiff<αth,则把数组WT的第Counter+1个元素赋值为
Figure FDA00039958010000000311
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure FDA00039958010000000312
个元素保存的颜色值,并且使Counter=Counter+1;αth为角度差异阈值;σ=αth/2;
步骤Step202-3-2:如果
Figure FDA00039958010000000313
则转步骤Step202-3-3,否则执行如下操作:令
Figure FDA00039958010000000314
Figure FDA00039958010000000315
如果βdiff<αth,则把数组WT的第Counter+1个元素赋值为
Figure FDA00039958010000000316
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure FDA00039958010000000317
个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-3:如果
Figure FDA00039958010000000318
则转步骤Step202-3-4,否则执行如下操作:
Figure FDA00039958010000000319
Figure FDA00039958010000000320
如果θdiff<αth,则把数组WT的第Counter+1个元素赋值为
Figure FDA00039958010000000321
把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>
Figure FDA00039958010000000322
个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-4:如果Counter≥NUM,则转步骤Step202-4,否则令δ=δ+1,并进一步判断是否
Figure FDA00039958010000000323
大于N且/>
Figure FDA00039958010000000324
小于1,如果是,则转步骤Step202-4,否则转步骤Step202-3-2;
步骤Step202-4:计算数组WT从第1个到第Counter个元素的值的累加和SUM;对于J=1,2,…,Counter,把数组WT的第J个元素赋值为数组WT的第J个元素的值除以SUM之商;
步骤Step202-5:把数组WT的第1个至第Counter个元素的值当作对数组CO的第1个至第Counter个元素的值进行加权求和时使用的权重系数,计算数组CO的从第1个至第Counter个元素的值的加权求和结果C001;数组WT的第1个元素的值为数组CO的第1个元素的权重系数,数组WT的第2个元素的值为数组CO的第2个元素的权重系数,以此类推;把数组IMSH的第i行、第j列的元素赋值为加权求和结果C001;
步骤Step202-6:针对虚拟透视投影相机A004的像素平面上的第i行、第j列像素的操作结束;
步骤Step203:把保存在数组IMSH中的矩形画面A005显示到显示设备上。
CN201910948328.9A 2019-08-28 2019-10-11 虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法 Active CN110675482B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910785190 2019-08-28
CN2019107851905 2019-08-28

Publications (2)

Publication Number Publication Date
CN110675482A CN110675482A (zh) 2020-01-10
CN110675482B true CN110675482B (zh) 2023-05-19

Family

ID=69080650

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910948328.9A Active CN110675482B (zh) 2019-08-28 2019-10-11 虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法

Country Status (1)

Country Link
CN (1) CN110675482B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111866467B (zh) * 2020-07-29 2022-12-06 浙江大华技术股份有限公司 监控视频的三维覆盖空间确定方法、装置及存储介质
CN113706680B (zh) * 2021-09-02 2023-09-19 长春理工大学 视觉显著性驱动的vr电影画面渲染像素抗失真处理方法
WO2023184139A1 (en) * 2022-03-29 2023-10-05 Huawei Technologies Co., Ltd. Methods and systems for rendering three-dimensional scenes

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107346558A (zh) * 2017-07-03 2017-11-14 长春理工大学 利用面光源可见性空间相关加速三维场景直接光照效果绘制的方法
CN108037822A (zh) * 2017-11-23 2018-05-15 国网山东省电力公司 一种基于虚拟现实的3d培训系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10659773B2 (en) * 2017-04-13 2020-05-19 Facebook, Inc. Panoramic camera systems
CN107909647B (zh) * 2017-11-22 2020-09-15 长春理工大学 基于空间复用的真实感虚拟3d场景光场投影图像绘制方法
CN109493409B (zh) * 2018-11-05 2022-08-23 长春理工大学 基于左右眼空间复用的虚拟三维场景立体画面绘制方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107346558A (zh) * 2017-07-03 2017-11-14 长春理工大学 利用面光源可见性空间相关加速三维场景直接光照效果绘制的方法
CN108037822A (zh) * 2017-11-23 2018-05-15 国网山东省电力公司 一种基于虚拟现实的3d培训系统

Also Published As

Publication number Publication date
CN110675482A (zh) 2020-01-10

Similar Documents

Publication Publication Date Title
Szeliski et al. Creating full view panoramic image mosaics and environment maps
CN107564089B (zh) 三维图像处理方法、装置、存储介质和计算机设备
CN110675482B (zh) 虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法
US6157385A (en) Method of and apparatus for performing perspective transformation of visible stimuli
US5586231A (en) Method and device for processing an image in order to construct from a source image a target image with charge of perspective
US5329310A (en) Method and apparatus for controlling distortion of a projected image
US5694533A (en) 3-Dimensional model composed against textured midground image and perspective enhancing hemispherically mapped backdrop image for visual realism
US6346967B1 (en) Method apparatus and computer program products for performing perspective corrections to a distorted image
US7747105B2 (en) Method for the rotation compensation of spherical images
US9721385B2 (en) Generation of three-dimensional imagery from a two-dimensional image using a depth map
ES2348853T3 (es) Procedimiento y sistema que permiten a un usuario mezclar en tiempo real imagenes de sintesis con imagenes de video.
US6914599B1 (en) Image processing apparatus
USRE43490E1 (en) Wide-angle dewarping method and apparatus
JP2004129003A (ja) 表示装置、画像処理装置および画像処理方法、撮像装置、並びにプログラム
JPH07306955A (ja) 三次元イリュージョンを生み出す方法およびシステム
CN111371966B (zh) 一种在虚拟演播室中合成前景人物阴影的方法、装置及存储介质
KR20180042346A (ko) 화상 생성 장치 및 화상 표시 제어 장치
WO2009093136A2 (en) Image capture and motion picture generation
CN111866523B (zh) 全景视频合成方法、装置、电子设备和计算机存储介质
US6731284B1 (en) Method of and apparatus for performing perspective transformation of visible stimuli
JPH0463092A (ja) 3次元シーン表示システム
US8233741B1 (en) Reducing building lean in stitched images
JP4710081B2 (ja) 画像作成システム及び画像作成方法
JP3387900B2 (ja) 画像処理方法及び装置
CN111784826A (zh) 一种基于全景图像生成三维结构示意图的方法和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant