关于Delaunay triangulation那些事

来源:互联网 发布:hp1005扫描软件下载 编辑:程序博客网 时间:2024/05/20 16:12

        之前在看一些跨年龄人脸识别论文的时候就遇到了这个家伙,当时查了查资料,知道了它是Delaunay三角剖分,是计算几何的一个经典问题,好多大牛用这个算法来对人脸进行对齐,标准脸的学习以及各种高大上。当时看了论文中的一些参考资料,居然有一篇资料是一本书。本着热爱学习的精神,我居然把它download下来了,厚厚的一本书。。。然后就没有然后了。。。

        这几天又遇到了这个家伙,所以本着钻牛角的精神决定把它吃掉!!!

-------------此处是分割线----------------

1.  首先什么是triangulation呢?

说一些我不懂的,三角剖分是代数拓扑学最基本的研究方法。

再说一些我能明白的,那就是例子!

以曲面为例,我们把曲面剖开成一块块的碎片,曲面这个东西,人脸不就是典型的曲面吗?所以可以理解为什么它会被应用到人脸上。。。,那么我们不能随便对它进行剖分吧。需要满足一些条件:

(1)每一块碎片都是曲边三角形(曲边三角形就是以等边三角形的三个顶点为圆心,边长为半径画出的图形,曲面的宽度是等长的)

(2)曲面上任何两个这样的曲边三角形,不能同时相交两条或两条以上的边,只能不相交或者是相切于一条公共边

(3)曲面中所有的都是三角面,且所有三角面的合集是所有点集合的凸包


拓扑学的一个已知事实告诉我们:任何曲面都存在三角剖分


那我们假设曲面上有一个三角剖分,把所有三角形的定点个数记为p,边数记为l,三角形的个数记为n,则e = p-l+n是曲面的拓扑不变量。也就是说不管是什么剖分,e总是得到相同的数值,e被称为欧拉示性数


2. 其次什么是Delanunay triangulation呢?

假设边的集合E中的一条边e(两个端点为a,b),e如果满足下列条件,则称之为Delaunay边:

存在一个圆经过a,b两点,圆内不包含点集中的任何点,这一特性称为空圆特性

那么到底什么是Delanunay三角剖分呢?

如果一个曲面的点集的一个三角剖分只包含Delaunay边,那么这样的三角剖分就称为Delaunay三角剖分


我们来看个图,直观的感受一下什么是Delaunay三角剖分

 

这是三个点的三角剖分

那我们再来看看四个点的三角剖分?


如果我们以ab两点连线来分割,这样的话,就满足Delaunay三角剖分;那如果是以cd边?那就不是我们要的Delaunay三角剖分了

关于Delaunay三角剖分的另一个更为直观的定义便是:

三角剖分中的每个三角形的外接圆的内部都不包含点集中的任何点


当我们知道了Delaunay三角剖分到底是个什么鬼之后呢,那么重要的是如何来构建 一个曲面的Delaunay三角剖分???

Delaunay三角剖分的算法有这几种----翻边算法、逐点插入算法、分割合并算法以及Bowyer-Watson算法等

之前一看到有这么多计算方法 头大 当时觉得自己脑容量没那么多 就忽略掉它了 嗯 

但是我们还是选择一个学习一下吧 毕竟学海无涯嘛


其实当我看到这个三角剖分时 由于天资不够 只能想到类似于逐点插入的想法了

在triangulation中写出了该方法的伪代码:




未完待续。。。



原创粉丝点击