深度学习-推荐系统-CV-NLPOpenCv机器学习与计算机视觉

网格简化近似方法学习笔记

2019-09-27  本文已影响0人  开飞机的乔巴

本博客内容来源于网络以及其他书籍,结合自己学习的心得进行重编辑,因为看了很多文章不便一一标注引用,如图片文字等侵权,请告知删除。

传统2D计算机视觉学习笔记目录------->传送门
传统3D计算机视觉学习笔记目录------->传送门

前言

前些天,发现简书暂停一个月的文章发布,这一周多也就没写什么,正好公司需要优化一下当前正在使用的网格简化,加之之前确实了解了一些网格简化的方法,但是一直没有整理。要是突然被问用什么方法,有什么优缺点还真说不上来,所以在此成文记录一下我所了解的网格简化以及网格近似的方法,并与大家分享。(终于可以发存货了)

网格简化近似

首先我们来说明一下什么是网格简化?

所谓网格简化,就是将大量的三角形网格简化为少量的三角形或者将大量的多边形简化为少量的多边形来近似表达模型的空间形状。如下图: 大量网格原图 简化后少量网格图

上图用了几十万个三角型来表达一个沙发,而下图只用了几百个三角形,这个简化是有点夸张,但也基本上表达出了一个沙发,当然细节不如大量的三角面。

那么为什么要进行网格简化呢?

进行网格简化的原因大概有几个方面:

  1. 节省存储空间
    每个三角面在空间储存的大小是一样的,减少三角面的数目,就减少了模型保存的文件大小,如果进行网络传输则大大缩短网络传输时间。
  2. 简化后续处理步骤
    如果后续要对模型进行一些计算,例如贴纹理,在最终效果基本上不变的情况下,计算时间会大量的缩短。
  3. 节省渲染时间
    当我们想要显示模型的时候,需要对模型的每个三角面进行空间渲染,需要大量的计算,三角面的数目减少,在不影响显示效果的情况下,会大大的减少渲染计算的负担。对于一个500MB的模型,一般4G内存的显卡就已经能感觉到卡顿了。所以如果玩高逼真的主机游戏还是需要非常厉害的显卡的。
  4. 去除不需要不关心的细节部分
    比如对于一面墙,墙上有一些小凹凸,但是对用使用者来说并不关系,更希望能够删除掉这些部分,来优化视觉效果,网格简化通常能够达到这些效果。

在了解到什么是网格简化以及为什么要进行网格简化后,那么什么时候一个好的网格简化算法呢?

一个好的网格简化算法,需要在这几个方面进行度量:

这几个度量方式相互牵制,总体来说,就是在最短的时间内简化到网格数最少,并且模型相似度可以接受。每种方法都有自己的优劣,下面我们来看看常见的网格简化算法有什么。

常见网格简化近似方法

常见的网格简化近似方法,大概分为以下四类:

以上各种方法各有自己的优缺点,比如VSA从全局进行优化,得到的模型较好,但是时间较长,不能用于在线系统。

上面几种具体的算法基本上都需要一篇文章才能讲明白,接下来,来解释一下增量式删除的三种基本删除方法

基本删除方法详解

删除网格中的一个顶点,然后对它相邻三角形形成的空洞,进行三角刨分

将网格里面的一条边压缩为一个顶点,退化了该边相邻的两个三角形

如图,将网格内的一个面片收缩为一个顶点,退化了该面片以及临边的三个面片

总结

本文简单的介绍了有关网格简化的概念,以及列举了网格简化近似的一些方法。网格简化作为计算机图形学中一个重要的部分,免不了大量的数学计算,并且因为涉及到图的拓扑结构,代码也较为复杂。

接下来,会独立来详细的描述每一种网格简化的方法,希望自己能把这些解释清楚。


重要的事情说三遍:

如果您看到我的文章对您有所帮助,那就点个赞呗 ( * ^ __ ^ * )

如果您看到我的文章对您有所帮助,那就点个赞呗( * ^ __ ^ * )

如果您看到我的文章对您有所帮助,那就点个赞呗( * ^ __ ^ * )

传统2D计算机视觉学习笔记目录------->传送门
传统3D计算机视觉学习笔记目录------->传送门

任何人或团体、机构全部转载或者部分转载、摘录,请保留本博客链接或标注来源。博客地址:开飞机的乔巴

作者简介:开飞机的乔巴(WeChat:zhangzheng-thu),现主要从事机器人抓取视觉系统以及三维重建等3D视觉相关方面,另外对slam以及深度学习技术也颇感兴趣,欢迎加我微信或留言交流相关工作。

上一篇下一篇

猜你喜欢

热点阅读