CN114332364A - 一种基于地基云图的三维云场景建模与可视化方法 - Google Patents
一种基于地基云图的三维云场景建模与可视化方法 Download PDFInfo
- Publication number
- CN114332364A CN114332364A CN202111589721.7A CN202111589721A CN114332364A CN 114332364 A CN114332364 A CN 114332364A CN 202111589721 A CN202111589721 A CN 202111589721A CN 114332364 A CN114332364 A CN 114332364A
- Authority
- CN
- China
- Prior art keywords
- cloud
- coordinate system
- voxel
- image
- dimensional
- 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.)
- Pending
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明提供一种基于地基云图的三维云场景建模与可视化方法,由CPU从二维的地基云图中提取积云图像区域,计算云基高度和云团厚度作为三维积云建模的参数。根据上述两种参数确定构成积云模型的所有体素中心点的位置信息,作为顶点阵列传入GPU,在GPU的几何着色器阶段根据顶点阵列绘制所有积云体素,最后进入GPU的片段着色器阶段,根据每个体素与云团中心点的距离确定云的密度值,根据密度值计算体素的颜色从而实现三维云场景建模和可视化一体化。本发明以体素作为最小几何单位,基于GPU构建三维积云模型并在三维场景中实现可视化,提高了三维积云建模的效率,同时满足在三维地理场景中流畅漫游的需求。
Description
技术领域
本发明涉及三维建模和三维地理信息可视化技术领域,特别是涉及一种针对地基云图数据构建三维积云模型和基于三维地理场景实现积云可视化的方法。
背景技术
太阳能光伏发电是一种将太阳光能转化为电能的清洁能源生产活动,而云团是造成太阳辐射大幅波动的最主要因素(王诚良,朱凌志,党东升,赵亮,丁煌.云团移动对光伏电站出力特性及系统调频的影响[J].可再生能源,2017,35(11):1626-1631)。尤其是在晴空环境下,云团的出现导致到达地表的太阳辐射瞬时减少,从而造成了光伏输出功率的波动,影响电网系统的稳定运行。因此,在三维地理信息平台中根据地基云图数据构建三维云模型能够在三维地理空间中反映真实云场景,对瞬时和连续光伏发电量的计算具有重要意义。
太阳辐射强度是直接影响光伏发电量的最主要因素,在晴天环境下出现的云团使得到达地面的太阳辐射具有间歇性和不稳定性,从而导致光伏电站输出功率不可控。尤其是积云具有高度低面积小的特点,对观测仪器的要求较高,使用传统的卫星传感器观测手段在时间和空间分辨率上均无法达到要求(Kleiss J,Riley E,Long C,et al.Cloud AreaDistributions of Shallow Cumuli:A New Method for Ground-Based Images[J].Atmosphere,2018,9:258)。近年来,具有高时空分辨率特点的地基遥感测云仪器的出现,实现了对光伏电站上空云的实时监测和采集,例如全天空成像仪采用一种160°视角的鱼眼镜头,以30s的时间分辨率自下而上拍摄地基云图,从而对小场景内的云团实况进行捕获(朱婷婷.基于地基云图的太阳直接辐照度超短期预测研究[D].东南大学,2019)。已有的基于地基云图的研究主要集中于采用图像处理技术来判断天空云的分布并预测短期内云的运动趋势(Marquez R,Coimbra C F M.Intra-hour DNI forecasting based on cloudtracking image analysis[J].Solar Energy,2013,91:327-336),但这些研究以二维图像为研究对象,通过图像中云团的分布分析其对太阳的遮蔽情况,缺少考虑云的厚度、密度对太阳辐射造成的不同程度的吸收作用,从而导致到达地面的太阳辐射强度的差异性。因此,在三维场景中构建三维云模型,可以进一步提高分析的准确性。
对于三维云建模和可视化表达,有关文献提出的常用方法以模拟云的外观为主,例如基于元胞自动机的云建模方法(徐江斌,赵健,杨超,吴玲达.真实感云的快速建模[J].小型微型计算机系统,2010,31(08):1590-1594.),基于噪声纹理的体积云渲染方法(唐勇,刘智轩,郭慧玲,赵静,张晓碧.多噪声体积云实时模拟研究[J].小型微型计算机系统,2019,40(11):2461-2465.),上述算法虽然通过渲染云显著提高了三维场景的逼真程度,但是只能在三维空间中实现随机位置和大小的云状,缺乏基于真实的云图数据和三维地理场景,无法实现用户指定的云,也不能复现真实云景。基于遥感图像可以实现地理空间中的三维云可视化(Zhang Z,Liang X,Yuan C,et al.Modeling Cumulus Cloud Scenes fromHigh-resolution Satellite Images[J].Computer Graphics Forum,2017,36(7):229-238.),但遥感影像的时空分辨率较低,无法满足光伏发电应用场景中对云的准实时监测的实际需求。
发明内容
为克服现有技术的不足,本发明旨在提出一种用于地基云图的基于GPU的三维云场景建模与可视化方法。对地基云图应用本发明方法,可以较准确的根据地基云图中的云状区域计算三维积云建模参数,结合地基云图成像的地理位置范围,在三维地理场景中实现快速的以体素为最小几何单元的三维积云建模,从而能够直观的研究云团对太阳辐射的影响。
本发明的技术方案包括以下过程,
首先,获取地基云图的拍摄时间,记为time;获取地基云图成像设备的地理位置,记为O;将地基云图校正为400×400像素的正方形图像;定义图像坐标系和云团坐标系;初始化顶点数组pointArray。
先基于CPU进行以下的云基高度和云团厚度的计算处理,
步骤a1,根据地基云图的拍摄时间time匹配相同时间点下的Landsat8影像,根据Landsat8影像的经纬度信息确定校正后的地基云图所覆盖的实际经纬度范围,该范围是以O为中心点的正方形区域,区域边界由最大经度maxLon,最小经度minLon,最大纬度maxLat,最小纬度minLat决定,进而建立图像坐标系;然后以(minLon,minLat)为原点建立云团坐标系,并建立图像坐标系下的像素坐标与地理坐标系下的经纬度坐标之间的函数关系。
步骤a2,使用图像检测处理OpenCV的自适应二值化方法从地基云图中分离云团和天空部分,提取云团部分。再使用图像检测处理OpenCV的轮廓检测算法,识别云团的外轮廓,根据外轮廓数量确定云团的数量,记为N;
步骤a3,对从地基云图中提取的N个云团,由CPU逐云团计算云基高度CBH和每个云像素代表的云团厚度信息T。
步骤a5,由CPU根据体素边长Lvoxel、云团厚度信息T、云基高度CBH计算每个体素中心点在云团坐标系下的空间位置,并存放在顶点数组pointArray中,完成后顶点数组pointArray传入GPU。
顶点数组pointArray从CPU传输到GPU中进行积云体素的绘制,GPU的绘制处理包括以下步骤,
步骤b1,使用OpenGL创建一个FBO和一个二维纹理densityTexture2D,二维纹理绑定到FBO上。将顶点数组传入GPU可编程渲染管线的顶点着色器中,通过矩阵转换从云团坐标系转换到标准纹理坐标系,纹理坐标系下的顶点数组记为NPCPointArray;
步骤b2,将NPCPointArray传入GPU的几何着色器中,在几何着色器中定义顶点索引数组,记为vIndexArray;定义以体素中心点为原点的体素顶点数组,记为pointArray。采用顶点索引绘制的方法绘制正方体体素。
步骤b3,二维纹理densityTexture2D传入GPU的片段着色器中,计算云团坐标系下每个顶点与云团中心点的距离,根据距离计算每个体素的密度值,将结果存储在densityTexture2D中。
步骤b4,在GPU的片段着色器中,根据密度值ρ设置每个体素颜色的透明度,透明度alpha=ρ,每个体素颜色color.rgba=(0.8,0.8,0.8,ρ),完成后从GPU中输出,实现基于体素的三维积云建模和可视化渲染。
而且,步骤a1中,对于图像坐标系和云团坐标系的定义如下:
图像坐标系为以地基云图的左上角为原点,水平向右为x轴正方向,垂直向下为y轴正方向的二维坐标系;图像范围由(0,0)、(0,v)、(u,v)、(u,0)确定,u、v分别为地基云图在x轴、y轴上的最大图像范围,本发明中u、v均为400像素。
云团坐标系定义为以(minX,minY)为原点,平行地面水平向右为x轴正方向,地面上垂直于x轴方向为y轴,垂直向上为z轴正方向的三维坐标系。这里的maxX、maxY分别为地基云图范围的最大经度maxLon、最大纬度maxLat通过坐标转换得到的WGS84世界坐标。
而且,步骤a1中,图像坐标系下的像素坐标与地理坐标系下的经纬度坐标之间的函数关系定义如下:
设地基云图中任意像素点(x,y)在地理坐标系下表示的经纬度位置为(lat,lon),
其中,maxLon,minLon,maxLat,minLat分别为地基云图区域范围的最大经度、最小经度、最大纬度、最小纬度。u、v分别为地基云图在图像坐标系下的最大长度、最大宽度,本发明里u、v均为400像素。
而且,步骤a3中,云基高度CBH的计算方法如下:
①获取云团中心点在地基云图中的坐标,记为C(x,y);通过函数关系式将图像坐标转换为经纬度坐标,记为worldC(lat,lon);获取地基云图中心点的坐标,记为O′(x0,y0);通过函数关系式将图像坐标转换为经纬度坐标,记为worldO′(lat0,lon0)。根据Haversine公式计算worldC和worldO’之间的距离,记为d0。
③根据高度角alt和d0计算该云团的地基高度CBH:CBH=d0×tan(alt)
而且,步骤a3中,单个云团对象中每个像素点代表的厚度值计算方法如下:
①对图像中的云团构建包围盒,得到图像坐标系下的包围盒宽度,记为w,通过坐标转换转换为WGS84坐标系下的长度,记为wworld。
②使用图像检测处理OpenCV的RGB图像转HSL图像的算法将RGB格式的地基云图转为HSL格式的图像,提取L通道的值,记为l。
而且,步骤a5中,体素中心点在云团坐标系下的位置计算方法如下:
读取当前云团对象的云像素值,设第i个像素的图像坐标为Pi(ui,vi)i∈[1,M],M代表该云团的总像素数量。将Pi从图像坐标转换到云团坐标系下,记为worldPi(xi,yi),根据该云团的云基高度CBH和体素边长Lvoxel,计算第i个像素所代表的实际体素个数numi和每个体素中心点在云团坐标系下的高程hk:
hk=CBH+k×Lvoxel(0≤k≤numi)
地基云图中第i个像素所代表的第k个采样点在云团坐标系中的的坐标记为Pworld(xi,yi,hk)。
而且,步骤b2中,顶点索引数组和顶点坐标的定义如下,
顶点索引数组定义为vIndexArray={0,1,2,3,2,3,4,5,4,5,6,7,6,0,4,2,1,7,3,5,0,6,1,7};以顶点数组pointArray中的坐标为中心的正方体体素共8个顶点坐标,本发明采用OpenGL的顶点索引绘制方法绘制体素,顶点数组定义为vec3Array=(-L,L,-L,L,L,-L,-L,L,L,L,L,L,-L,-L,L,L,-L,L,-L,-L,-L,L,-L,-L)。其中
而且,步骤b3中,体素密度值的计算和存储方法如下,
在云团坐标系下,获取云团中心点的坐标,记为centerP(xP,yP,zP),逐体素获取体素中心点的坐标,计算该体素中心点到centerP的直线距离,记为d,根据距离d和云团的最大厚度wworld计算该体素的云密度,记为ρ:然后,根据该体素中心的纹理坐标(u,v)对应的存储到二维纹理densityTexture2D的纹理空间中,记为(u,v,ρ)。
本发明基于地基云图提取的云基高度和云团厚度为建模参数,以体素作为积云的最小几何单元,基于GPU实现了三维积云的快速建模和积云密度参数存储。该方法不仅有效的解决了由云团不规则复杂外形而造成的建模复杂、建模时间长的问题,实现了指定区域内三维云场景的准实时建模,而且在体素中存储了云的密度信息,为进一步研究云团对太阳辐射强度的削弱作用提供了模型基础。此外,基于GPU可视化三维积云模型,能够在三维地理场景中实现流畅的漫游等人机交互,从而满足构建稳定流畅的三维地理系统的需要。
附图说明
图1为本发明实施例的图像坐标系示意图。
图2为本发明实施例的云团坐标系示意图。
图3为本发明实施例的体素坐标系示意图。
图4为本发明实施例的流程图。
图5为本发明实施例的可视化效果图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实时方式作进一步的详细描述。
相关术语:
GPU 图形处理器
CPU 中央处理器
OpenCV 开源的跨平台计算机视觉和机器学习软件库
OpenGL 开放图形库,是行业领域中最为广泛接纳的2D/3D图形API
WGS84 世界大地测量系统1984,是一种坐标系统
FBO 帧缓冲区对象
实施例采用本发明的方法,采用OpenGL和GLSL着色语言,基于OpenCV和osgEarth三维渲染引擎实现了基于地基云图的三维积云建模和基于三维地理场景的可视化。
本发明实施例提供的一种基于地基云图的三维积云建模与可视化方法包括以下过程,
首先,获取地基云图的拍摄时间,记为time;获取地基云图成像设备的地理位置,记为O;将地基云图校正为400×400像素的正方形图像;定义图像坐标系和云团坐标系;初始化顶点数组pointArray。
设当前时刻为t,获取该时刻下的地基云图,根据地基云图的地基成像设备参数获得该设备的地理位置,记为O;由OpenCV的球面透视投影图像校正方法将地基云图校正为400×400像素的图像;定义图像坐标系和云团坐标系;初始化用于存储云团坐标系下的体素中心点的顶点数组pointArray。
先基于CPU进行以下三维积云建模的云基高度和云团厚度参数的计算处理,
步骤a1,根据地基云图的拍摄时间time匹配相同时间点下的Landsat8影像,根据Landsat8影像的经纬度信息确定校正后的地基云图所覆盖的实际经纬度范围,该范围是以O为中心点的正方形区域,区域边界由最大经度maxLon,最小经度minLon,最大纬度maxLat,最小纬度minLat决定;以(minLon,minLat)为原点建立云团坐标系,建立图像坐标系下的像素坐标与地理坐标系下的经纬度坐标之间的函数关系。
步骤a2,从地基云图中分离云团和天空部分,提取云团部分,再使用轮廓检测算法识别云团的外轮廓,根据外轮廓数量确定云团的数量,记为N;
步骤a3,对从地基云图中提取的N个云团,由CPU逐云团计算云基高度和每个云像素代表的云团厚度信息;
步骤a4,计算正方体体素的边长,记为Lvoxel,边长由地基云图在WGS84坐标下的区域边长和图像坐标系下的区域边长共同决定;
步骤a5,根据体素边长、云团厚度、云基高度计算每个体素中心点在云团坐标系下的空间位置,并存放在顶点数组pointArray中;
然后将顶点数组pointArray从CPU传输到GPU中进行积云体素的绘制;
步骤b1,创建一个帧缓冲区对象FBO和一个二维纹理densityTexture2D,二维纹理绑定到FBO上,将顶点数组pointArray传入GPU可编程渲染管线的顶点着色器中,通过矩阵转换从云团坐标系转换到标准纹理坐标系,纹理坐标系下的顶点数组记为NPCPointArray;
步骤b2,将NPCPointArray传入GPU的几何着色器中,在几何着色器中定义顶点索引数组,记为vIndexArray;定义以体素中心点为原点的体素顶点数组,记为pointArray。采用顶点索引绘制的方法绘制正方体体素;
步骤b3,二维纹理densityTexture2D传入GPU的片段着色器中,计算云团坐标系下每个顶点与云团中心点的距离,根据距离计算每个体素的密度值,将结果存储在densityTexture2D中;
步骤b4,在GPU的片段着色器中,根据密度值ρ设置每个体素颜色的透明度,透明度alpha=ρ,每个体素颜色color.rgba=(0.8,0.8,0.8,ρ),完成后从GPU中输出,实现基于体素的三维积云建模和可视化渲染。
具体实施时,可以采用计算机软件方式实现自动流程运行,提供以上一种基于地基云图的三维积云建模方法。
为便于参考实施起见,提供实施例具体流程设计如下,参见图4:
步骤1,设当前时刻为t,由OpenCV读取该时刻下的地基云图。根据地基云图的地基成像设备参数获得该设备的经纬度信息,记为O;由OpenCV的球面透视投影图像校正方法将地基云图校正为400×400像素的图像。初始化OpenGL绘制环境,定义图像坐标系和云团坐标系;初始化顶点数组pointArray。根据地基云图的拍摄时间time匹配相同时间点下的Landsat8影像,根据Landsat8影像的经纬度信息确定校正后的地基云图所覆盖的实际经纬度范围,定义云团坐标系和图像坐标系;
初始化步骤可由CPU执行。
本发明定义图像坐标系(如图1所示)和云团坐标系(如图2所示):
图像坐标系为以地基云图的左上角为原点,水平向右为x轴正方向,垂直向下为y轴正方向的二维坐标系;
云团坐标系定义为以(minX,minY)为原点,平行地面水平向右为x轴正方向,地面上垂直于x轴方向为y轴,垂直向上为z轴正方向的三维坐标系。这里的maxX、maxY分别为地基云图范围的最大经度maxLon、最大纬度maxLat通过坐标转换得到的WGS84世界坐标。
实施例中,读取t时刻的地基云图,由OpenCV的球面透视投影图像方法校正地基云图。对校正后的图像构建图像坐标系,图像范围由(0,0)、(0,v)、(u,v)、(u,0)确定,u、v分别为地基云图在x轴、y轴上的最大图像范围,本实施例中u、v均为400像素。
地基成像设备的位置为O(lon,lat),地基云图的实际范围是以O为中心点的正方形区域,区域边界由最大经度maxLon,最小经度minLon,最大纬度maxLat,最小纬度minLat决定;以(minLon,minLat)为原点建立云团坐标系,
具体实施中,可以根据实际情况确定地基云图的位置信息。
步骤2,基于t时刻下经过校正的地基云图计算每个云团的云基高度、云团厚度参数。
本发明提出:
首先建立图像坐标系下的像素坐标与地理坐标系下的经纬度坐标之间的函数关系,设地基云图中任意像素点(x,y)在地理坐标系下表示的经纬度位置为(lat,lon),
其中,maxLon,minLon,maxLat,minLat分别为地基云图区域范围的最大经度、最小经度、最大纬度、最小纬度。u、v分别为地基云图在图像坐标系下的最大长度、最大宽度,本发明里u、v均为400像素。
对于云基高度CBH,分别获取云团中心点和地基云图中心点在图像坐标系下的坐标,通过函数关系式分别转换为对应经纬度坐标,根据Haversine公式计算两点之间的距离。再计算云团的方位角,进而计算云团的高度角,最终根据高度角和距离计算云团的地基高度。
对于单个云团对象中每个像素点代表的云团厚度,首先对云团构建包围盒,得到图像坐标系下的包围盒宽度,记为w,通过坐标转换转换为WGS84坐标系下的长度,记为wworld。进而使用图像检测处理OpenCV的RGB图像转HSL图像的算法将RGB格式的地基云图转为HSL格式的图像,提取L通道的值,记为l。计算每个像素代表的云团厚度,云团厚度记为T,
实施例中具体实现如下:
①地基云图中心点的坐标,记为O′(x0,y0),通过函数关系式将图像坐标转换为经纬度坐标,记为worldO′(lat0,lon0)。基于地基云图提取所有积云区域,数量记为N;令i=0。
②第i个云团中心点在图像坐标系下的坐标为Ci(xi,yi);通过坐标转换得到经纬度坐标worldCi(lati,loni)。根据Haversine公式计算worldCi和worldO′之间的距离,记为di。根据公式计算该云团的方位角根据公式计算该云团的高度角其中Di为O′和Ci在云团坐标系下的距离。最后根据高度角alti和di计算该云团的地基高度CBHi=di×tan(alti)。
③对第i个云团构建包围盒,令包围盒在图像坐标系的x轴上最大值为xmax,在x轴上最小值为xmin,计算包围盒宽度w=xmax-xmin,通过坐标转换得到w在世界坐标系下的长度wworld。由OpenCV的RGB图像转HSL图像的算法将RGB格式的地基云图转为HSL格式的图像,
④由OpenCV读取第i个云团的所有像素坐标和像素值,设在地基云图中第i个云团包含M个像素点,令j=1,当j≤M时,提取该像素在HSL格式图像的L通道的值,记为lj,根据计算该像素代表的云团厚度,记为Tj。
⑤令j=j+1;若j≤M,重复④;若j>M,该云团的所有像素所代表的云团厚度值计算完毕。
⑥令i=i+1;若i≤N,重复②-⑤;若i>N,N个云团的云基高度和云团厚度均计算完毕。
具体实施时,可以根据实际情况确定云团的数量、云团高度和云团厚度信息。
步骤3,由CPU计算正方体体素的边长,边长由地基云图在WGS84坐标下的区域边长和图像坐标系下的区域边长共同决定,记为Lvoxel:根据体素边长Lvoxel、云团厚度信息T、云基高度CBH计算每个体素中心点在云团坐标系下的坐标,将所有顶点坐标存入顶点数组中。
本发明提出,体素中心点在云团坐标系下的位置计算方法如下:
读取当前云团对象的云像素值,设第i个像素的图像坐标为Pi(ui,vi)i∈[1,M],M代表该云团的总像素数量。将Pi从图像坐标转换到云团坐标系下,记为worldPi(xi,yi),根据该云团的云基高度CBH和体素边长Lvoxel,计算第i个像素所代表的实际体素个数numi和每个体素中心点在云团坐标系下的高程hk:
hk=CBH+k×Lvoxel(0≤k≤numi)
地基云图中第i个像素所代表的第k个采样点在云团坐标系中的的坐标记为Pworld(xi,yi,hk)。
实施例中具体实现如下:
对于地基云图中的N个积云区域,令i=1,当i≤N时,对第i个云团进行如下计算,
①设在地基云图中第i个云团包含M个像素点,令j=1。
令k=0;
③计算第k个体素在云团坐标系下的z轴上的坐标,记为hk:hk=CBHj+k×Lvoxel。即第j个像素所代表的第k个采样点在云团坐标系中的的坐标记为Pworld(xj,yj,hk),存储到顶点数组pointArray中。
④k=k+1,若k≤numj,重复③,否则进入⑤。
j=j+1,若j≤M,重复②-④,否则第i个云团的所有体素中心点坐标计算完毕。
对N个云团全部完成上述操作后,所有体素的中心点位置信息的顶点数组pointArray结束存储。
具体实施时,可以根据云团厚度的实际情况确定体素中心点在云团坐标系下的位置以及顶点数组。
步骤4,顶点数组由CPU传入GPU的顶点着色器,通过矩阵转换将顶点数组转换为成纹理坐标系下的纹理坐标。纹理坐标传入GPU的几何着色器,在几何着色器中使用顶点索引绘制体素。
本发明提出,使用OpenGL创建一个FBO和一个二维纹理densityTexture2D,二维纹理绑定到FBO上。将顶点数组传入GPU可编程渲染管线的顶点着色器中,通过矩阵转换从云团坐标系转换到标准纹理坐标系,纹理坐标系下的顶点数组记为NPCPointArray。将NPCPointArray传入GPU的几何着色器中,在几何着色器中定义顶点索引数组,记为vIndexArray;定义以体素中心点为原点的体素顶点数组,记为vec3Array,采用顶点索引绘制的方法绘制正方体体素。
对于顶点索引数组,定义为vIndexArray={0,1,2,3,2,3,4,5,4,5,6,7,6,0,4,2,1,7,3,5,0,6,1,7};
对于顶点数组,如图3所示,以顶点数组pointArray中的坐标为中心构建体素坐标系,确定正方体体素的8个顶点坐标位置,顶点数组定义为vec3Array=(-L,L,-L,L,L,-L,-L,L,L,L,L,L,-L,-L,L,L,-L,L,-L,-L,-L,L,-L,-L)。其中
实施例中具体实现如下:
①将顶点数组pointArray传入GPU的顶点着色器中,由OpenGL获取着色器内置的矩阵变量gl_ModelViewProjectionMatrix,顶点数组乘以该矩阵转换到纹理坐标系下的标准纹理坐标阵列,记为gl_Position。
②将gl_Position传入GPU的几何着色器,定义顶点索引数组vIndexArray={0,1,2,3,2,3,4,5,4,5,6,7,6,0,4,2,1,7,3,5,0,6,1,7};定义顶点数组vec3Array=(-L,L,-L,L,L,-L,-L,L,L,L,L,L,-L,-L,L,L,-L,L,-L,-L,-L,L,-L,-L),其中计算gl_ModelViewProjectionMatrix的逆矩阵,记为inverseMat,gl_Position乘以inverseMat得到云团坐标系下的坐标,记为vec3Array。根据顶点索引数组vIndexArray依次索引顶点数组vec3Array中的对应顶点,直到索引结束,完成体素绘制。
具体实施时,可以根据实际情况绘制云的体素。
步骤5,在片段着色器中计算每个体素的密度值,存储在二维纹理中。根据密度值设置体素颜色透明度。
本发明提出,在GPU的片段着色器中,根据云团的纹理坐标阵列gl_Position计算云团坐标系下的云团中心点的坐标,记为centerP(xP,yP,zP);再计算每个体素中心点在云团坐标系下的坐标到centerP的直线距离,记为d,根据距离d和云团的最大厚度wworld计算该体素的云密度,记为ρ:然后,根据该体素中心的纹理坐标(u,v)对应的存储到二维纹理densityTexture2D中,记为(u,v,ρ)。根据ρ设置每个体素的颜色透明度,透明度alpha=ρ,每个体素颜色color.rgba=(0.8,0.8,0.8,ρ),完成后从GPU中输出,实现基于体素的三维积云建模和可视化渲染。
实施例中具体实施如下:
在GPU的片段着色器中,根据云团的纹理坐标阵列gl_Position计算云团坐标系下的云团中心点的坐标,记为centerP(xP,yP,zP)。设体素个数为N,令i=1,
第i个体素的中心点在云团坐标系下的坐标为Pi(xi,yi,zi),根据两点间直线公式计算Pi与centerP的直线距离di。再根据距离di和云团的最大厚度wworld计算该体素的云密度ρi: 根据该体素中心的纹理坐标(ui,vi),将云密度存储在二维纹理densityTexture2D的(ui,vi)处,值为ρi。根据ρi设置该体素纹理的颜色,color.rgb=(0.8,0.8,0.8,ρi)。
令i=i+1;若i≤N,重复上述操作,若i>N,结束云密度和云的色彩计算。从GPU中输出,实现基于体素的三维云场景可视化。当可视化模拟结束时,释放FBO。在三维地理场景中的可视化效果如图5所示。
通过以上具体实施可以看出,基于地基云图提取的云基高度和云团厚度为建模参数,以体素作为积云的最小几何单元,在GPU中实现了三维积云的快速建模和积云密度参数存储。实现了指定区域的准实时三维云场景建模,在三维场景漫游浏览中也表现出良好的系统流畅度。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (10)
1.一种基于地基云图的三维云场景建模与可视化方法,其特征在于,包括以下过程:
首先,获取地基云图的拍摄时间,记为time;获取地基云图成像设备的地理位置,记为O;将地基云图校正为正方形图像,定义图像坐标系和云团坐标系,初始化用于存储云团坐标系下的体素中心点的顶点数组pointArray;
先基于CPU进行以下三维积云建模的云基高度和云团厚度参数的计算处理;
步骤a1,根据地基云图的拍摄时间time匹配相同时间点下的Landsat8影像,根据Landsat8影像的经纬度信息确定校正后的地基云图所覆盖的实际经纬度范围,该范围是以O为中心点的正方形区域,区域边界由最大经度maxLon,最小经度minLon,最大纬度maxLat,最小纬度minLat决定,进而建立图像坐标系;然后以(minLon,minLat)为原点建立云团坐标系,并建立图像坐标系下的像素坐标与地理坐标系下的经纬度坐标之间的函数关系;
步骤a2,从地基云图中分离云团和天空部分,提取云团部分,再使用轮廓检测算法识别云团的外轮廓,根据外轮廓数量确定云团的数量,记为N;
步骤a3,对从地基云图中提取的N个云团,由CPU逐云团计算云基高度和每个云像素代表的云团厚度信息;
步骤a4,计算正方体体素的边长,记为Lvoxel,边长由地基云图在WGS84坐标下的区域边长和图像坐标系下的区域边长共同决定;
步骤a5,根据体素边长、云团厚度、云基高度计算每个体素中心点在云团坐标系下的空间位置,并存放在顶点数组pointArray中;
然后将顶点数组pointArray从CPU传输到GPU中进行积云体素的绘制;
步骤b1,创建一个帧缓冲区对象FBO和一个二维纹理densityTexture2D,二维纹理绑定到FBO上,将顶点数组pointArray传入GPU可编程渲染管线的顶点着色器中,通过矩阵转换从云团坐标系转换到标准纹理坐标系,纹理坐标系下的顶点数组记为NPCPointArray;
步骤b2,将NPCPointArray传入GPU的几何着色器中,在几何着色器中定义顶点索引数组,记为vIndexArray;定义以体素中心点为原点的体素顶点数组,记为pointArray。采用顶点索引绘制的方法绘制正方体体素;
步骤b3,二维纹理densityTexture2D传入GPU的片段着色器中,计算云团坐标系下每个顶点与云团中心点的距离,根据距离计算每个体素的密度值,将结果存储在densityTexture2D中;
步骤b4,在GPU的片段着色器中,根据密度值ρ设置每个体素颜色的透明度,并设置每个体素颜色值,完成后从GPU中输出,实现基于体素的三维积云建模和可视化渲染。
2.如权利要求1所述一种基于地基云图的三维云场景建模与可视化方法,其特征在于:步骤a1中,对于图像坐标系和云团坐标系的定义如下:
图像坐标系为以地基云图的左上角为原点,水平向右为x轴正方向,垂直向下为y轴正方向的二维坐标系;图像范围由(0,0)、(0,v)、(u,v)、(u,0)确定,u、v分别为地基云图在x轴、y轴上的最大图像范围;
云团坐标系定义为以(minX,minY)为原点,平行地面水平向右为x轴正方向,地面上垂直于x轴方向为y轴,垂直向上为z轴正方向的三维坐标系;这里的maxX、maxY分别为地基云图范围的最大经度maxLon、最大纬度maxLat通过坐标转换得到的WGS84世界坐标。
4.如权利要求1所述一种基于地基云图的三维云场景建模与可视化方法,其特征在于:
步骤a3中,对于云基高度CBH的计算方法如下:
①获取云团中心点在地基云图中的坐标,记为C(x,y);通过函数关系式将图像坐标转换为经纬度坐标,记为worldC(lat,lon);获取地基云图中心点的坐标,记为O′(x0,y0);通过函数关系式将图像坐标转换为经纬度坐标,记为worldO′(lat0,lon0),根据Haversine公式计算worldC和worldO’之间的距离,记为d0;
③根据高度角alt和d0计算该云团的地基高度CBH:CBH=d0×tan(alt)。
6.如权利要求1所述一种基于地基云图的三维云场景建模与可视化方法,其特征在于:
步骤a5中,体素中心点在云团坐标系下的位置计算方法如下:
读取当前云团对象的云像素值,设第i个像素的图像坐标为Pi(ui,vi)i∈[1,M],M代表该云团的总像素数量;将Pi从图像坐标转换到云团坐标系下,记为worldPi(xi,yi),根据该云团的云基高度CBH和体素边长Lvoxel,计算第i个像素所代表的实际体素个数numi和每个体素中心点在云团坐标系下的高程hk:
hk=CBH+k×Lvoxel(0≤k≤numi)
地基云图中第i个像素所代表的第k个采样点在云团坐标系中的的坐标记为Pworld(xi,yi,hk)。
9.如权利要求1所述一种基于地基云图的三维云场景建模与可视化方法,其特征在于:
步骤b4中,每个体素的颜色透明度alpha=ρ,每个体素颜色color.rgba=(0.8,0.8,0.8,ρ)。
10.如权利要求1所述一种基于地基云图的三维云场景建模与可视化方法,其特征在于:
步骤a2中,使用图像检测处理OpenCV的自适应二值化方法从地基云图中分离云团和天空部分,提取云团部分;再使用图像检测处理OpenCV的轮廓检测算法,识别云团的外轮廓。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111589721.7A CN114332364A (zh) | 2021-12-23 | 2021-12-23 | 一种基于地基云图的三维云场景建模与可视化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111589721.7A CN114332364A (zh) | 2021-12-23 | 2021-12-23 | 一种基于地基云图的三维云场景建模与可视化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114332364A true CN114332364A (zh) | 2022-04-12 |
Family
ID=81054341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111589721.7A Pending CN114332364A (zh) | 2021-12-23 | 2021-12-23 | 一种基于地基云图的三维云场景建模与可视化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114332364A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116385622A (zh) * | 2023-05-26 | 2023-07-04 | 腾讯科技(深圳)有限公司 | 云图处理方法、装置、计算机及可读存储介质 |
-
2021
- 2021-12-23 CN CN202111589721.7A patent/CN114332364A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116385622A (zh) * | 2023-05-26 | 2023-07-04 | 腾讯科技(深圳)有限公司 | 云图处理方法、装置、计算机及可读存储介质 |
CN116385622B (zh) * | 2023-05-26 | 2023-09-12 | 腾讯科技(深圳)有限公司 | 云图处理方法、装置、计算机及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113052109A (zh) | 一种3d目标检测系统及其3d目标检测方法 | |
CN107767454A (zh) | 一种实景三维移动快速建模方法、装置及系统 | |
CN104867181A (zh) | 气象元素在三维地球模型的快速显示和绘制方法 | |
CN113192179A (zh) | 一种基于双目立体视觉的三维重建方法 | |
CN115359195B (zh) | 一种正射影像生成方法、装置、存储介质和电子设备 | |
CN113379901A (zh) | 利用大众自拍全景数据建立房屋实景三维的方法及系统 | |
CN114998545A (zh) | 一种基于深度学习的三维建模阴影识别系统 | |
CN113160410A (zh) | 一种实景三维精细化建模方法及系统 | |
CN112669459A (zh) | 基于特征库智能决策的卫星影像最优镶嵌线生成方法 | |
CN109461197B (zh) | 一种基于球面uv和重投影的云实时绘制优化方法 | |
CN116402942A (zh) | 一种融合多尺度图像特征的大规模建筑物三维重建方法 | |
CN116223511A (zh) | 基于无人机自动巡检的分布式屋顶光伏组件缺陷诊断方法及装置 | |
CN116778063A (zh) | 一种基于特征纹理网格和哈希编码的快速虚拟视点合成方法及装置 | |
CN114332364A (zh) | 一种基于地基云图的三维云场景建模与可视化方法 | |
CN111598803A (zh) | 一种基于变分辨率体素格网与稀疏卷积的点云滤波方法 | |
CN117115359B (zh) | 一种基于深度图融合的多视图电网三维空间数据重建方法 | |
CN113723389A (zh) | 一种支柱式绝缘子定位方法及装置 | |
CN116934977A (zh) | 一种基于三维占用预测和神经渲染的视觉三维感知方法及系统 | |
CN116797733A (zh) | 实时三维物体动态重建方法 | |
CN116704112A (zh) | 一种用于对象重建的3d扫描系统 | |
CN113192204B (zh) | 单幅倾斜遥感图像中建筑物的三维重建方法 | |
CN113362458B (zh) | 模拟多视角成像的三维模型解译方法、终端及存储介质 | |
Zhang et al. | A Rooftop-Contour Guided 3D Reconstruction Texture Mapping Method for Building using Satellite Images | |
WO2022193104A1 (zh) | 一种光场预测模型的生成方法及相关装置 | |
CN108682042B (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 |