全景图模型纹理计算

一、技术流程

图1 技术流程

  • 数据准备

  通过硬件设备(激光扫描仪和全景相机)可以获取到原始的点云数据、全景图像数据、以及其他的一些位姿辅助信息。

  • 数据预处理

  获取原始点云数据一般数据量较大,直接上传云端展示,会有很多限制因素,如:网速、平台展示压力、视觉感观斑驳等,因此为更美观更流畅的展示三维数据成果,需要对点云进行一系列处理得到Mesh模型;这里主要处理包括点云数据的解析读取、数据空间抽希、噪声去除和平滑、剔除离群点、法线估计、点云三角化等;一般全景图像下部会有一定的遮挡,这部分图像必须在纹理计算时屏蔽掉,因此需要对全景图像做些处理,这里依据球面映射关系对全景图像进行2:1图像标准化处理。

  • 数据打包上传云端

为适配云端平台,需要对全景图像、以及生成的Mesh,纹理图像等进行一系列处理,主要包括全景图像的格式压缩、Mesh和纹理的切分等,最终打包后上传平台展示。

二、技术创新点

  • 点云三角化算法

基于区域扩展的思路实现了点云三角化,该算法相比传统的Delaunay3D效率更高,更适用于室内场景重建。

算法实现思路:初始化一个种子三角面。(随机选点,基于该点进行临近搜索到第二点;在基于该线段中点临近搜索到第三点);在种子三角面的基础上,进行面片的扩充,利用边的中点进行临近搜索,碰到合适的点,就会跟这条边构成一个新的三角面,同时构造出两条新边。依次类推,直到队列中不再有满足条件外边提供中点检索为止;否则,继续寻找新的种子三角面,进行第二步;直到再也无法找到合适的种子三角面,退出循环;最后输出mesh,包含生成三角面,以及原始点云。

图2 种子三角面和三角面扩充

  • 模型纹理计算

模型自适应分割生成多个chart、chart多策略打包成Atlas。

算法理论:

a)   首先是将模型分割出多个chart,算法通过Half边搜索临近三角面,判断相邻三角面的法线夹角,来确定三角面是否属于分割chart,同时设置chart的面积、尺度阈值,限制chart过大,形状不规则;依次循环下去,直到所有三角面都计算出所在chart。

b)   Chart UV投影计算

c)   chart多策略打包成Atlas

算法对生成所有chart进行分析,按照面积计算chart的分布,对于面积大于给定阈值的chart,直接作为一个Atlas;面积小于给定阈值时,将多个chart打包到一个Atlas,同时满足给定的纹理精度;剩余的较小chart会被逐个打包到一个Atlas里。

参阅论文:

1、Least Squares Conformal Maps for Automatic Texture Atlas Generation

2、Seamless Texture Atlases

 

原文地址:https://www.cnblogs.com/lovebay/p/14436631.html