CN110675482B - 虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法 - Google Patents
虚拟三维场景的球面斐波那契像素点阵全景画面渲染与显示方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- 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
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture 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-等人撰写的由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):
首先在全景视域球上产生包含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φ),在计算机的内存中创建包含N个元素的一维数组PANORAMA,数组PANORAMA的每个元素保存虚拟全景相机成像球面上的一个像素的颜色值;
步骤Step102:计算从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵Mxyz2XYZ:
其中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按如下方式计算:令/>如果/>则/>否则V=[0,0,1]T;向量U按如下方式计算:/>
步骤Step103:对于n=1,2,…,N,针对斐波那契网格点阵A001的第n个网格点,做如下操作:
步骤Step103-1:令向量令 其中ppix,x表示向量Ppix的第一个分量,ppix,y表示向量Ppix的第二个分量,ppix,z表示向量Ppix的第三个分量,ppix,w表示向量Ppix的第四个分量;
步骤Step103-2:从世界坐标系X-Y-Z中的虚拟全景相机视点位置出发,发射一条穿过世界坐标系X-Y-Z中的点的光线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:令Wpp=2tan(β)、Hpp=2tan(α),如图2所示,W1表示虚拟透视投影相机A004的观察方向对应的单位向量,U1表示虚拟透视投影相机A004 拍摄时的向上方向对应的单位向量,单位向量U1与线段AD平行,α表示虚拟透视投影相机A004的垂直视场半角,β表示虚拟透视投影相机A004的水平视场半角;点A的坐标为其中E表示虚拟透视投影相机A004的视点位置;虚拟透视投影相机A004的视点设置在局部坐标系x-y-z的原点,因此/>虚拟透视投影相机A004的像素平面上的第i行、第j列像素的中心点Pij为:
步骤Step202-3:令round(x)表示对x进行四舍五入取整;在计算机的内存中创建包含NUM个元素的一维数组WT,在计算机的内存中创建包含NUM个元素的一维数组CO;令计数器Counter=0;令偏移δ=1;
步骤Step202-3-1:如果或者/>则转步骤Step202-3-2,否则执行如下操作:令/>其中/>表示对x向下取整;令如果αdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;αth为角度差异阈值;
步骤Step202-3-2:如果则转步骤Step202-3-3,否则执行如下操作:令 如果βdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-3:如果则转步骤Step202-3-4,否则执行如下操作:令 如果θdiff<αth,则把数组WT的第Counter+1个元素赋值为/>把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-4:如果Counter≥NUM,则转步骤Step202-4,否则令δ=δ+1,并进一步判断是否大于N且/>小于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φ),在计算机的内存中创建包含N个元素的一维数组PANORAMA,数组PANORAMA的每个元素保存虚拟全景相机成像球面上的一个像素的颜色值;
步骤Step102:计算从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵Mxyz2XYZ:
其中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按如下方式计算:令/>如果/>则/>否则V=[0,0,1]T;向量U按如下方式计算:/>
步骤Step103:对于n=1,2,…,N,针对斐波那契网格点阵A001的第n个网格点,做如下操作:
步骤Step103-1:令向量令 其中ppix,x表示向量Ppix的第一个分量,ppix,y表示向量Ppix的第二个分量,ppix,z表示向量Ppix的第三个分量,ppix,w表示向量Ppix的第四个分量;
步骤Step103-2:从世界坐标系X-Y-Z中的虚拟全景相机视点位置出发,发射一条穿过世界坐标系X-Y-Z中的点的光线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:令Wpp=2tan(β)、Hpp=2tan(α),如图2所示,W1表示虚拟透视投影相机A004的观察方向对应的单位向量,U1表示虚拟透视投影相机A004 拍摄时的向上方向对应的单位向量,单位向量U1与线段AD平行,α表示虚拟透视投影相机A004的垂直视场半角,β表示虚拟透视投影相机A004的水平视场半角;点A的坐标为其中E表示虚拟透视投影相机A004的视点位置;虚拟透视投影相机A004的视点设置在局部坐标系x-y-z的原点,因此/>虚拟透视投影相机A004的像素平面上的第i行、第j列像素的中心点Pij为:
步骤Step202-3:令round(x)表示对x进行四舍五入取整;在计算机的内存中创建包含NUM个元素的一维数组WT,在计算机的内存中创建包含NUM个元素的一维数组CO;令计数器Counter=0;令偏移δ=1;
步骤Step202-3-1:如果或者/>则转步骤Step202-3-2,否则执行如下操作:令/>其中/>表示对x向下取整;令如果αdiff<αth,则把数组WT的第Counter+1个元素赋值为/>把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;αth为角度差异阈值;
步骤Step202-3-2:如果则转步骤Step202-3-3,否则执行如下操作:令 如果βdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-3:如果则转步骤Step202-3-4,否则执行如下操作:令 如果θdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-4:如果Counter≥NUM,则转步骤Step202-4,否则令δ=δ+1,并进一步判断是否大于N且/>小于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中定义的。
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φ),n=1,2,…,N;在计算机的内存中创建包含N个元素的一维数组PANORAMA,数组PANORAMA的每个元素保存虚拟全景相机成像球面上的一个像素的颜色值;
步骤Step102:计算从局部坐标系x-y-z到世界坐标系X-Y-Z的变换矩阵Mxyz2XYZ:
其中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按如下方式计算:令/>如果/>则/>否则V=[0,0,1]T;向量U按如下方式计算:/>
步骤Step103:对于n=1,2,…,N,针对斐波那契网格点阵A001的第n个网格点,做如下操作:
步骤Step103-1:令向量令 其中ppix,x表示向量Ppix的第一个分量,ppix,y表示向量Ppix的第二个分量,ppix,z表示向量Ppix的第三个分量,ppix,w表示向量Ppix的第四个分量;
步骤Step103-2:从世界坐标系X-Y-Z中的虚拟全景相机视点位置出发,发射一条穿过世界坐标系X-Y-Z中的点的光线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:令Wpp=2tan(β)、Hpp=2tan(α),W1表示虚拟透视投影相机A004的观察方向对应的单位向量,U1表示虚拟透视投影相机A004拍摄时的向上方向对应的单位向量,α表示虚拟透视投影相机A004的垂直视场半角,β表示虚拟透视投影相机A004的水平视场半角;点A的坐标为/>其中E表示虚拟透视投影相机A004的视点位置;虚拟透视投影相机A004的视点设置在局部坐标系x-y-z的原点,因此虚拟透视投影相机A004的像素平面上的第i行、第j列像素的中心点Pij为:
步骤Step202-3:令round(x)表示对x进行四舍五入取整;在计算机的内存中创建包含NUM个元素的一维数组WT,在计算机的内存中创建包含NUM个元素的一维数组CO;令计数器Counter=0;令偏移δ=1;
步骤Step202-3-1:如果或者/>则转步骤Step202-3-2,否则执行如下操作:令其中/>表示对x向下取整;令如果αdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;αth为角度差异阈值;σ=αth/2;
步骤Step202-3-2:如果则转步骤Step202-3-3,否则执行如下操作:令 如果βdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;
令 如果θdiff<αth,则把数组WT的第Counter+1个元素赋值为把数组CO的第Counter+1个元素赋值为数组PANORAMA的第/>个元素保存的颜色值,并且使Counter=Counter+1;
步骤Step202-3-4:如果Counter≥NUM,则转步骤Step202-4,否则令δ=δ+1,并进一步判断是否大于N且/>小于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显示到显示设备上。
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)
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)
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)
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 | 长春理工大学 | 基于左右眼空间复用的虚拟三维场景立体画面绘制方法 |
-
2019
- 2019-10-11 CN CN201910948328.9A patent/CN110675482B/zh active Active
Patent Citations (2)
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 |