一种倾斜摄影实景三维模型实时匀光匀色流程研究

2023-11-02 11:47詹勇马红
城市勘测 2023年5期
关键词:瓦块实景纹理

詹勇,马红

(1.重庆市勘测院,重庆 401121; 2.智能城市空间(CIM+)创新中心,重庆 401121;3.重庆市地理国情监测工程技术研究中心,重庆 401121)

0 引 言

在新型基础测绘、实景三维中国建设、城市信息模型CIM(CIM,City Information Modeling)等智慧城市建设的重大项目中,利用倾斜摄影开展实景三维建模已成为一种获取三维模型的重要方法[1,2],因其具有建模速度快,自动化程度高、真实性强的特点,在城市规划、工程建设、自然资源调查监测管理等领域中得到了广泛的应用[3,4]。在实际生产和应用中,由于实景三维模型的纹理来自倾斜航空摄影,受航摄批次、天气、照片曝光程度等因素的影响,可能导致倾斜影像色彩不一致、纹理偏暗或曝光过度等问题,使得实景三维模型色彩色调不佳(如图1所示)。此时,需要对实景三维模型进行匀光匀色,获得色调、明暗度一致的三维模型。

图1 需要匀光匀色的实景三维模型

无论实景三维模型采用何种流程进行匀光匀色,最终都需要对模型的纹理进行匀光匀色处理,很多学者研究了常用的普通影像匀光匀色算法,包括Mask匀光法、Wallis匀光法等[5]。在航空影像、遥感影像以及无人机影像的匀光匀色方法方面,王邦松[6]等研究了航空影像色彩一致处理方法,吴海平[7]等研究了多源多尺度遥感色彩平衡方法及工程化应用,俞小波[8]等研究了无人机影像匀光处理方法等。王云川[9]等采用直方图均衡化和灰度拉伸方法,分别以原始影像和经色调匀化处理后的影像为数据源,构建实景三维模型并进行模型质量对比分析;凌毅力[10]对倾斜影像采集与预处理方案进行了优化研究,提出了相机标定、直方图均衡化等影像预处理方案。

这些研究重点是图像的匀光匀色方法及其改进,可应用到实景三维模型纹理调整中。本文不提出具体的匀光匀色方法,而是主要侧重一种基于GPU的实景三维模型实时匀光匀色流程探讨。如图2所示,是倾斜摄影实景三维建模的主要流程,包括原始倾斜影像获取、空三计算、自动化批量建模、获得模型成果,其中耗时最长的是自动化批量建模。一般情况下实景三维模型匀光匀色工作,可以选择两个阶段进行。一是在获取倾斜影像后、开展空三计算之前进行,二是在模型完成建模以后,通过读取模型的纹理进行。显然,在没有开始建模时,在第一阶段更合适,但如果模型是不同时间生产的或者不同来源的模型,则选择第二个阶段更合适,这是由于前者在重新匀光匀色后,还需要重新建模,耗时长。

图2 倾斜摄影实景三维建模流程

而此时在第二阶段开展匀光匀色工作,通常需要逐个读取模型的纹理,选用匀光匀色方法进行处理,处理完成后再把纹理写入模型中,并保存到磁盘上,这种方式依然有较大的局限性,具体包括:一是单个实景模型工程数据量可能有GB,乃至TB级,纹理包含几千上万张。如果采用类似传统PS图片的批量修改的模式,计算、读取,特别是保存的工作量巨大,至少需要几个小时乃至数天时间。二是这种方法每次处理只能获得一个调整结果,如果用户对结果不满意,则还需要重新进行匀光匀色工作,直至用户满意为主,灵活性不足。三是实景三维模型多级LOD结构复杂,需要从每个实景三维模型LOD中解析出纹理图片,并处理完后再写入,增加了复杂度和工作量。

本文针对这种情况,面向实景三维模型匀光匀色流程,提出了一种基于GPU编程的实景三维模型实时匀光匀色流程,该处理流程并不对纹理进行实际处理(将处理后的纹理保存在磁盘上),而是利用GPU实现不同匀光匀色方法,在展示端实时显示匀光匀色结果。该方法工作量小,实时性高,灵活性强,下面具体介绍。

1 实景三维模型匀光匀色特点

如前文所述,在实景三维模型进行匀光匀色时,通常会遇到以下几个问题:

(1)磁盘读写工作量大。由于实景三维模型纹理量大,导致处理过程产生大量磁盘读写工作,工作量大,耗时长。

(2)实景三维模型结构复杂。实景三维模型为多细节层次模型,每个细节层级模型都包含纹理,详见2.2节,需要解析出纹理后,才能进行匀光匀色处理。

(3)匀光匀色成果反馈不及时。通常需要在模型重新生成后,在三维可视化平台中进行查看才能最终确认匀光匀色成果是否满足要求,若不能满足,则需要重新匀光匀色,然后在三维可视化平台中查看建模成果,这种不能所见即所得的方式会进一步增加工作量。

2 实景三维模型匀光匀色

2.1 技术路线

匀光匀色流程如图3所示。在实景三维模型建成完成以后,获得需要匀色的实景三维瓦块,遍历不同层级的LOD得到纹理。通过GPU编程建立不同的匀色方法库,用户根据需要选择匀光匀色方法,然后给定实现参数实现匀光匀色结果可视化展示。如果对结果不满意,可以选择调整参数,也可以选择其他匀光匀色方法进行调整,直到满足用户要求为止,最后保存结果参数。

图3 匀光匀色技术流程

该流程具有以下特点:一是实时性强,交互性好。本流程是基于三维渲染可编程管线实现匀光匀色算法,用户可以利用可视化平台随时动态调整模型参数,即可实时获得实景三维模型匀光匀色可视化结果。二是工作量小,灵活性高。由于结果通过可视化方式在展示端呈现,处理结果通常只保存具体参数即可,在显示时利用三维平台执行匀光匀色算法得到匀色结果,用户还可以保存多个结果参数,实现不同匀色结果的快速保存,提高了灵活性。

2.2 模型纹理

实景三维模型通常采用OSG(OSG,OpenSceneGraph)格式[11],一个实景三维模型工程包含多个瓦块,如图4左所示。每个瓦块包含多个细节层级LOD(Levels of Detail)模型,如图4中所示。不同LOD包含的纹理,由于经过了纹理重排,不是简单的分辨率不同,而是几乎完全不同的纹理,如图4右所示L16和L18层级分别对应的纹理,因此所有的纹理都需要匀光匀色。

图4 实景模型文件结构

在三维平台中读取每个实景三维瓦块的不同LOD模型,形成可视化三维场景。三维场景绘制的核心是构建场景树和渲染状态树,场景树描述了三维场景中模型的组织结构和几何形状,而渲染状态树则决定了场景最终展现的样式,例如透明度、颜色、纹理样式等。渲染状态集是渲染状态树中描述每个Drawable的绘制渲染的集合,利用OSG开源定义的三维模型的存储格式及相应的功能函数,可以获得每个绘制单元Drawable,然后得到几何类型Geometry。

利用Geometry获得纹理的方法如下:

Geometry

—StateSet

——Material

——Texture2D

———file "Tile_+001_+001_0.jpg"

首先,得到每个Geometry的渲染状态集StateSet[11,12],然后在StateSet中通过获得几何体的材质Material。材质分成包含纹理和不包含纹理两种方式,包含纹理的情况通常采用Texture2D来获得[13,14],Texture2D存储了模型几何面与纹理的绑定信息,由此可以获得具体的纹理名称和纹理数据位置,进而解析出纹理。

2.3 基于可编程的匀光匀色实现

利用可编程管线可用于图形处理、三维绘制以及高效计算等方面。可编程管线的核心为GPU是针对图形运算而生的处理器,如今的主流游戏PC机都会有一个高性能的GPU。本文采用GPU可编程管线技术,通过对匀色结果的显示改变,实现匀光匀色可视化调整,而并不实际修改图片,因此节约了磁盘IO,随着参数的调整,可以迅速得到可视化结果。一个Opengl着色器(下简称着色器)由一个顶点着色器与片段着色器构成,它们负责的工作大部分是不同的,仅有少部分交集。

在本文实景三维模型实时匀光匀色流程中,利用GPU编程可实现不同的匀光匀色方法。具体做法是在片元着色器中基于GPU编写不同的算法,例如亮度、对比度调整等算法;编写完成后,将调整参数作为一致性变量Uniform提供给外部应用程序,作为用户可调整的参数,从而实现模型纹理色彩的快速调整。例如一种简单的亮度与对比度调整方法,利用一致性变量Uniform传入亮度与对比度调整参数b,c。

unifrom flaot b

unifrom flaot c

color.rgb=color.rgb*c+b

该算法仅依赖像素值计算即可实现,通过传入的调整参数,即可得到最终显示的像素color的rgb分量值。

其次,对于有些匀光匀色算法,例如色阶调整,图像曲线等,需要获取整个场景的直方图信息或者图像平均灰度植等。此时首先获取原始实景三维模型在当前视口下的截图,统计得到直方图信息(也可以获取多个视口的截图,得到取平均统计值),然后作为统计参数传入到片元着色器中基于GPU编写算法。

2.4 三维工程匀光匀色

倾斜模型是按瓦块(Tile)为单元进行建模的,因此在对三维场景进行匀光匀色时,首先要明确匀光匀色的最小单元是一个实景三维瓦块,可以利用三维引擎选中一个或多个需要同时调整的瓦块,然后选择不同的匀光匀色算法(例如亮度对比度、色阶、曲线等),利用外部程序,通过调整一致性变量值(即参数值),实现匀光匀色方法的GPU计算,然后在可视化平台中实时查看调整结果。通过不同实景瓦块的调整,实现整个工程乃至多个工程的调整。通过不断调整参数,直到效果满意为止,保存参数值。如图5所示,实现了亮度、对比度、RGB分量调整,实时展示原始偏暗模型的不同调整结果。

图5 实时匀光匀色处理器

2.5 结果保存

对于同一个三维可视化平台,可在场景加载和渲染时,使用匀光匀色器,调用保存的参数值,直接展示实景三维模型匀光匀色结果。此时还可以根据用户不同的需求,进行实时快速调整,从而提高实景模型处理效率。

其次,利用图片处理技术,实现与GPU编程相同的匀光匀色算法。遍历实景三维模型瓦块,导出每个瓦块不同层级的纹理图片,使用匀光匀色算法对纹理图像进行处理,最后得到匀光匀色后的实景三维模型成果,该成果可以被不同的三维平台使用,数据处理的效率也比重新建模要更加便捷。

3 与常规匀光匀色方法的对比分析

在进行实景三维模型匀光匀色处理时,可以通过解析出每个瓦块的图像文件,然后利用图像处理工具对图像进行处理,最后再写入文件中,实行模型成果的匀光匀色。

比如利用Photoshop[15]软件进行处理,首先利用其处理基准图片,记录处理动作,最后采用批处理工具,对所有的图片进行批量处理,得到匀光匀色结果。经过测试,该方法优点在于可以充分利用Photoshop各种强大的图像处理算法,但由于一个实景三维模型工程包含了海量图片文件(本项目测试数据原始影像分辨率 5 cm,1 km2模型文件包含约5万张图片),易造成处理效率不高、批处里出错等情况,而且没有顾及不同航摄批次的影像差异,同样的批处理动作很难达到处理效果的一致性。而本文基于GPU编程的实景三维模型实时匀光匀色方法,并是一种所见即所得的实时匀光匀色方法,在解析模型结构的基础上,利用GPU编程实现匀光匀色方法,不需要对图片进行实际处理,只需要保存调整参数即可。该匀光匀色流程能满足海量多源实景三维模型的实时匀光匀色,且针对不同的应用需求,可灵活调节处理参数,处理效率高,容错性高。

4 结 语

可视化效果是三维场景的基本要求,本文面向实景三维模型后期匀光匀色需求,研究了实景三维模型匀光匀色方法,提出一种利用GPU编程实现的模型实时匀光匀色技术,通过三维可视化平台,实现实景模型的色彩快速调整。该方法主要优势是:一是减少了模型匀光匀色处理的复杂度,减少了模型重建的工作量;二是调整结果所见即所得,能够快速得到用户满意的模型效果;三是该方法的相关结果可用于传统图片处理,遍历处理并保存实景三维模型纹理,实现模型成果的延伸应用。

由于实景三维模型的纹理与一般纹理图像不同,是重排后的破碎纹理,丢失了原始照片的结构信息,因此一些顾及周边像素特点的遥感影像匀光匀色方法不能很好地适用,是可以进一步优化和改进的方向。

猜你喜欢
瓦块实景纹理
金湖县创新“实景式”培训 提升精准执法水平
数字博物馆 线上实景游
基于BM3D的复杂纹理区域图像去噪
使用纹理叠加添加艺术画特效
TEXTURE ON TEXTURE质地上的纹理
论山水实景剧与山水实景演出的区别
消除凹凸纹理有妙招!
基于几何条件的可倾瓦轴承油膜边界条件判定方法
测量计算法测定轴瓦间隙
汽轮机可倾瓦颤振引发低频振荡问题研究