彩色网格

彩色网格分类

彩色网格主要分两类,一类是彩色顶点网格,一类是彩色贴图网格。

  • 彩色顶点网格:网格顶点带有颜色,三角形的颜色由网格顶点颜色插值得到。网格的色彩分辨率等于顶点分辨率。如下图上所示。
  • 彩色贴图网格:网格的三角形的颜色对应于图像的一个三角片。网格的色彩分辨率等于图像的色彩分辨率。如下图下所示。
  • color texture

    彩色顶点网格的顶点分辨率和色彩分辨率一样,当网格顶点比较少的时候,色彩信息会损失很多,如下图2所示。彩色贴图网格的色彩分辨率取决于纹理贴图的分辨率,与网格顶点分辨率无关,如图3所示,同样的网格,纹理贴图方式可以存储高于网格分辨率的色彩信息。

    simplify color texture

    彩色贴图网格的制作

    彩色网格的制作,没有统一的工作流。因为采集的数据源有差异,数据质量也有差异。但是,一般都会走到这一步,如下图所示:一个网格对应一组图片,网格的三角形可以分为三类:三角形三个顶点对应于某张图片的三个像素;三角形三个顶点对应的像素不在同一张图片;三角形有顶点没有图片像素对应。

    make_texture_image

    这里最重要的信息是网格顶点和图像像素的对应,简称点像对应。有了网格,图片以及点像对应信息,就可以制作出纹理贴图,如下图所示。网格的三角形颜色信息直接存储到纹理贴图上,纹理贴图可以看作是原始图片剪碎后组合到一块得到的。

    mesh_texture_image

    点像对应的计算

    点像对应是指网格顶点和图像像素的对应。大致可以分为下面几类:

  • 图片是随意拍摄的,或者丢失了图像和网格的关系信息。这类情况需要用户手动创建点像对应信息。比如一些半自动的方法,用户手动选择一些特征点的对应,程序自动计算出其它部分的点像对应。
  • 网格和图片有相机参数对应,可以通过相机参数来计算对应关系。
  • 网格对应的点云有点像对应,可以通过投影的方式把点云的点像对应投影到网格上。
  • 下图是一个典型的扫描点云,并且有对应的图像采集。有时候扫描点云也可以对应多张图片,本质都是一样的。

    scan image

    点像对应割缝优化

    多角度拍摄模型的时候,帧与帧之间一般有重叠区域。重叠区域的网格顶点有多个图片与其对应,也就是有多个点像对应信息。重叠区域的点像对应的选择,能影响贴图效果。如图所示,上面的模型颜色代表了不同的图片索引,下面的图为贴图效果。左边的模型按照图片索引大小,一张一张往网格上贴;右边模型的贴图重叠区域经过了优化。明显能看出,右图的贴图效果优于左图。

    fuse imagecolorid


    模型的光照信息

    严格意义上讲,相机拍摄的图像,并不是物体真实的颜色,而是加上光照信息后颜色。如下图所示,左图是模型的真实颜色,右图是加上光照后的图像。由于光照因素对成像效果影响很大,所以不同角度拍摄的图像,常常会有个融合的过程。

    color shade compare

    单光源点云颜色修正

    当摄像机固定,物体自身旋转,比如在转台上,然后单光源固定于模型前面。这种方式采集的图像,有个共同的缺点,就是单帧物体的边缘颜色会比较暗。如下图所示,左图是点云真实的颜色,右图是单光源设置下采集的彩色点云,可以看到点云在边界处颜色逐渐变暗。

    color shade point compare

    这种点云在多帧融合的时候会出现严重的色差,如下图所示,图1,2是两帧有重叠的点云,图3把这两帧点云注册到一块,可以看到在点云接缝处有严重的色差。Geometry++有单光源点云颜色修正的功能,可以根据不同帧点云重叠的信息,去掉黑边色差。图4就是去掉色差后的点云色彩效果。

    tune single light

    多角度点云颜色融合

    有时候,虽然单帧图像色彩质量是好的,但是不同帧之间的光照有差异,比如多个拍照位置的情况。如下图所示,图1,2两帧彩色点云,分别看质量还可以,但是注册到一块时,如图3所示,会有明显的色差。Geometry++有多角度点云颜色融合的功能,图4就是色彩融合后的效果。

    point color merge