基于Voronoi分割的Delaunay Triangulation算法的openCV实现
Delaunay三角剖分是前苏联数学家 Delaunay在 1934年提出的:对于任意给定的平面点集 ,只存在着唯一的一种三角剖分方法 ,满足所谓的“ 最大 — 最小角 ” 优化准则 ,即所有最小内角之和最大 ,这就是 Delaunay三角剖分。这种剖分方法遵循“ 最小角最大 ” 和“ 空外接圆 ” 准则
“ 最小角最大 ” 准则是在不出现奇异性的情况下,Delaunay三角剖分最小角之和均大于任何非 Delaunay剖分所形成三角形最小角之和 ,三角形的最小内角之和最大 ,从而使得划分的三角形不会出现某个内角过小的情况 ,比较有利于有限元的后续计算。“ 空外接圆 ” 准则是 Delaunay三角剖分中任意三角形的外接圆内不包括其他结点。因此 ,在各种二维三角剖分中 ,只有 Delaunay三角剖分才同时满足全局和局部最优。
“learning openCV”中提到的最简单的一种计算Delaunay算法(原文为chapter9 中的delaunay triangulation)P301,我翻译半天都感觉翻译模糊不清,不知哪位有中文版的把这部分算法给贴出来?
我主要参考就是《平面域中的 Delaunay三角算法》中的三角网生长算法,我觉得好像learning openCV中提到的计算delaunay,是用的这个算法,不过我翻译了半天也感觉模糊不清。索性我就用这个算法。也希望大家把中文版的那个算法贴出来好吗?我们一起学习
下面是我调试的代码,贴出来大家一起学习,还有那篇论文我也贴出来,是中文的,好理解的一点。
PS:自己调试了代码好久,后来在OpenCV2.0/samples/c/delaunay.c,找到源代码,白白浪费了自己好长时间,我把代码重新整理下放到下面,也希望大家调试代码有问题时,参看人家源代码,帮助很大的。大家也可以进行设置断点进行delaunay学习
论文及代码由于字数限制,大家如果感兴趣可以到