下弥 合光照多样性,通过使用遮挡判断的方法使得映射平顺美观,在取出了错误判断和映射的 基础上降低了计算的复杂度,使得最终的处理步骤不会拖慢其上一步快速重建的步骤。这 也使得本方法真正适配于快速三维重建系统,适用于无序点云场景的快速上色,特别是对 于点云稠密度较低的点云可以还原其RGB信息,做到不因点云的密度而损失分辨率。本方 法针对快速重建的稀疏点云采取特别步骤,对其三维的纹理映射有着优于其他方法的精度 和美观程度,属于国内外首创。
【附图说明】
[0024] 图1是本法明方法的流程图;
[0025] 图2相机对三维空间中某一点成像是的映射关系和原理;
[0026] 图3是遮挡判断部分的算法流程图。
【具体实施方式】
[0027] 参见图1,本发明对三维场景进行颜色映射的方法,三维无序点云和不同视角的 RGB纹理,步骤如下:
[0028] S1,将系统输入的无序点云进行快速三角化,得到基于面片的三维模型:这部分使 用贪婪投影三角化算法。贪婪投影三角化算法原理是处理一系列可以使网格"生长扩大"的 点(边缘点),延伸这些点直到所有符合几何正确性和拓扑正确性的点都被连上。该算法的 优点是可以处理来自一个或者多个扫描仪扫描得到并且有多个连接处的散乱点云。但该算 法也有一定的局限性,它更适用于采样点云来自于表面连续光滑的曲面并且点云密度变化 比较均匀的情况。
[0029] 该算法的三角化过程是局部进行的,首先沿着一点的法线将该点投影到局部二维 坐标平面内并连接其他悬空点,然后在进行下一点。所以这里设置如下参数:
[0030] 1)控制搜索邻域大小。定义可搜索的邻域个数,规定被样本点搜索其邻近点的最 远距离,特征值一般是50-100和2. 5-3 (或者1. 5每栅格)。
[0031] 2)设置三角化后得到的每个三角形的最大可能边长。
[0032] 3)设定三角化后每个三角形的最大角和最小角。两者至少要符合一个。典型值分 别是10和120度(弧度)。
[0033] 4)处理边缘或者角很尖锐以及一个表面的两边非常靠近的情况。如果某点法线 方向的偏离超过指定角度(注:大多数表面法线估计方法可以估计出连续变化的表面法线 方向,即使在尖锐的边缘条件下),该点就不连接到样本点上。该角度是通过计算法向线段 (忽略法线方向)之间的角度。另外应该保证法线朝向,如果法线方向一致性标识没有设 定,就不能保证估计出的法线都可以始终朝向一致。
[0034] S2,读入场景的RGB纹理信息和拍摄纹理信息时相机的位参并进行预处理,将对 应位置的RGB信息和对应相机的位参信息按对应位置读入相应数组。使用图像平滑,直方 图均衡化等方法将多幅RGB纹理信息进行彩色矫正;
[0035] 场景的RGB纹理信息在快速重建场景时已经拍摄并存下,保存为.png格式的图 片,分辨率为640*480。
[0036] 算法读入RGB纹理信息和相机位参后存为有对应关系的数组,同时对纹理信息进 行图像平滑和直方图均衡化的处理。直方图均衡化是图像处理领域中利用图像直方图对对 比度进行调整的方法。这种方法通常用来增加许多图像的局部对比度,尤其是当图像的有 用数据的对比度相当接近的时候。通过这种方法,亮度可以更好地在直方图上分布。这样就 可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的 亮度来实现这种功能。本算法通过直方图均衡化来弥合不同视角纹理之间光照的差异性, 有一定的效果。
[0037] 如果不做任何处理就将两幅纹理映射到同一个三维模型上,交界处将出现明显的 颜色差异。这种明确的颜色差异显然是不便于观察,而且是不美观的。
[0038] 针对这种情况,本发明使用直方图均衡化来弥合颜色差异,在进行直方图均衡化 后,两个视点的光照程度明显地相似。光照差异带来的模型颜色差异已经有效的弥合。所 以,通过直方图均衡化的方法可以很好地对三维模型可能出现的颜色差异进行修正。
[0039] 这里需要强调的是,本方法没有采用先映射后做blending的方法,因为映射一定 意味着有部分二维图像中的面片没有映射到三维场景中去,也意味着二维原始图像中光照 和颜色信息进一步丢失。在丢失信息后做blending -定意味着一定程度的算法不收敛和 假细节,假颜色。所以本方法选择在映射前对二维纹理图像组的所有图像进行统一的直方 图矫正。以统一的标准校对光照量,从信息的角度来说是有依据并且令人信服的;
[0040] S3:取输入面片,判断面片在某视角下是否可见并标记,将输入面片索引依次使 用内外参数映射至当前视角,判断是否在相机视角内,如果在视角内,那么标记为视场内可 见。
[0041] 相机的投影关系见图2。Oc点为摄像机光心,Xc轴和Yc轴与图像的X轴与Y轴 平行,Zc轴为摄像机光轴,它与图像平面垂直。光轴与图像平面的交点,极为图像坐标系的 原点,由点Oc与Xc、Yc、Zc轴组成的直角坐标系称为摄像机坐标系,OOc为摄像机焦距:
[0042] 由于摄像机可以安放在环境中任意位置,所以在环境中选择一个基准坐标系来描 述摄像机位置,并用它描述环境中任何物体的位置,该坐标系为世界坐标系。它有Xw、Yw和 Zw轴组成,摄像机坐标系与世界坐标系之间的关系可以用旋转矩阵与平移向量t来描述。 如下:
[0043]
[0044] 对本算法,首先,算法读入待投影三维模型的全部面片信息。面片采用三角面片 形式,即每个面片有三个顶点,每个顶点是一个三维的空间向量,依次代表其投影到空间 X,Y,Z轴的位置,设为Xw,Yw,Zw。
[0045] 将面片信息读入后首先判断哪些面片在相机视场内。取视场1的内外参数,将三 维坐标用以下关系投影至对应的二维视场下。
[0046]
[0047] 其中Xw,Yw,Zw为面片顶点的三维坐标。R,T代表相机的旋转和平移矩阵,为相机 的外参。Fx, fy, uO, v0为相机的内参,构成内参数矩阵。外参矩阵和内参数矩阵由相机的位 参矩阵读入得到。
[0048] 经过矩阵相乘即可得到(u,V),即图像的像素坐标。若(u,V)在相机市场内,即其 属于([1,640],[1,480]),那么认为空间中点(Xw,Yw,Zw)投影在该视点的纹理上,即该点 在相机市场内。
[0049] 对于面片数据结构,设定标志位visible,如果面片的三个顶点在该视角都可见 (即三个顶点投影后都落在二维图像有意义的范围内),那么设定visible为I (true)。
[0050] 在遍历所有面片后,将对标志位为"真"的部分进行重新检视;
[0051] S4:检视前面所有视角,判断当前视角内面片是否被前面视角遮挡,并改变标记, 依次取S3输出视角内可见的面片,判断前面所有视角已染色好的面片与需要投影的面片 的遮挡关系,如被遮挡,去掉标记,否则保留标记。
[0052] 算法经过S3步骤后,得到的是落在视角内的所有面片,但是这些面片并不是一定 值得去投影,由于相机投影的过程是一种放射变换。很可能互相遮挡的两个面片经过投影 后全部都落在相机市场内。如果此时进行投影,很可能使得互相遮挡的两个面片全部上色。 这显然是不对的,因为被遮挡的面片理应看不见。如果不考虑遮挡关系而直接上色,被遮