好久没有写代码了,最近拿计算三角网格表面的高斯曲率练了练手,并实现了高斯曲率的可视化,复习了一点微分几何的知识。感觉有时候还是要自己把代码写出来,调试运行,结合试验结果,才能对相应的知识有更深的了解。

所谓曲面上某点的高斯曲率,即该点两个主曲率的乘积。把曲面上的顶点映射到单位球的球心,把法线的端点映射到球面上,即将曲面上的点与球面上的点建立了一种对应,叫做曲面的球面表示,也叫高斯映射。高斯曲率的几何意义,即球面上的面积/曲面局部面积的极限,可以看出,高斯曲率确实反映了曲面局部的弯曲程度。

利用高斯曲率的正负性,可以很方便地研究曲面在一点邻近的结构,高斯曲率K>0为椭圆点,K<0为双曲点,K=0为平面或抛物点。并且高斯曲率是曲面的内蕴量,只与曲面的第一基本型相关,与坐标轴的选取和参数化表示无关。

言归正传,求解三角网格表面的高斯曲率,就需要利用离散微分几何,我采用的公式为:

这个公式的几何意义是比较直观的,2*Pi-该点邻域三角形对应的角度和,再除以相应区域的面积,就刻划了该点曲面的弯曲程度。

A(v)的面积视三角形顶角的大小而定,锐角和钝角的定义不一样的。

其实推导出上述公式的方法是非常巧妙的,仔细研究一下,它利用了在高斯映射的几何意义下,离散高斯曲率对局部曲面的积分
考虑p点邻域法线映射到单位球上的面积,即近似为 2*Pi-该点邻域三角形对应的角度和
不仔细写了,大家看看下面这张图,感受一下这个公式的美妙:

具体的编码比较简单,求出GaussCurvature数组后,归一化到[0,1],设定三种颜色c1灰黄,c2绿,c3红,线性加权伪彩显示。K>0显示为绿色,K<0显示为红色,K=0显示为灰黄色,颜色越鲜艳,高斯曲率的绝对值越大。实现效果如下图

显示效果不好,搞过图像处理的人就知道了,需要做一个直方图均衡

直方图均衡后的显示效果为:

这样的效果就好多了,鼻梁处红色的为典型的双曲点(两个主曲率异号,主方向的两条法截线,一条向法线的正向弯曲,一条向法线的反向弯曲,形成马鞍面),鼻尖处绿色的为典型的抛物点(两个主曲率同号,曲面沿所有方向都朝向同一侧弯曲),脑门处较平坦的区域(有一个主曲率接近0)高斯曲率的绝对值较小,颜色也比较淡。

贴出更多的试验图片,计算高斯曲率并伪彩显示,确实可以直观地看出曲面的一些属性,应该可以指导网格去噪、平滑、简化、分割等后继的研究


三角网格上离散高斯曲率的计算公式比较简单,做了这个简单的练习,把网格表面顶点属性可视化的程序框架搭建好了。以后有机会也可以实现一下平均曲率,主曲率,主方向的计算。

转载于:https://www.cnblogs.com/haoyul/p/6910679.html

三角网格表面高斯曲率的计算与可视化相关推荐

  1. 数字几何处理作业1:编程实现三角网格上高斯曲率和平均曲率的计算编程部分

    三.编程 1.代码 用的是中国科大傅孝明老师的框架:框架下载及配置运行 (1)在哪儿添加代码 梳理框架的结构后,在MeshViewerWidget.中添加求解曲率的函数,并在MainViewerWid ...

  2. VTK修炼之道46:图形基本操作进阶_三角网格体积、表面积、测地距离、包围盒

    1.基本图形操作意义 图形处理,比如图形平滑.多分辨率分析.特征提取等都离不开一些基本的图形操作.掌握这些基本的图形操作有助于理解和深入学习图形处理和分析方法. VTK中提供了多种图形的基本操作,其中 ...

  3. python 科学计算三维可视化笔记(第三周 高级进阶)

    python 科学计算三维可视化笔记 第三周 高级进阶 python 科学计算三维可视化笔记 第三周 高级进阶 一.Mayavi 入门 1. Mayavi 库的基本元素 2. 快速绘制实例 3. Ma ...

  4. matlab鬼成像,一种基于光计算的可视化计算鬼成像系统及成像方法与流程

    本发明涉及成像探测领域,具体为一种基于光计算的可视化计算鬼成像系统及成像方法. 背景技术: 光学鬼成像技术是通过双路光信号符合探测恢复待测物体空间信息实现的.其特点是包含物体信息的信号光(signal ...

  5. Siggraph三角网格变形之拉普拉斯变换

    三角网格变形一直是CAGD相关领域的重点,刚上研究生的时候,感觉有点神奇.而且一上来导师就给我发了一篇基于格林坐标的自由变形的相关paper,让我看,外文文献,看了n多天,第一次看外文文献,啥也没看懂 ...

  6. 三角网格模型及基于RBF隐曲面方程求解的曲面重建

    资料来源:径向基函数和神经网络技术在逆向工程中的应用研究(博士论文:王宏涛) RBF神经网络模型 RBF神经网络起源于数值分析中多变量插值的RBF方法,1988年Broomhead等人首先将该算法应用 ...

  7. 三角网格细分算法 —— Loop 算法

    三角网格细分算法 -- Loop细分 主要参考文章: https://zhuanlan.zhihu.com/p/144400261 https://blog.csdn.net/McQueen_LT/a ...

  8. Delaunay 三角网格学习

    本文是为<Mastering Opencv...>第七章准备的,他要使用主动外观模型AMM和POSIT算法做一个头部3D姿态估计.图像上的特征点由人工标定,但由于头部运动,比如张嘴,会导致 ...

  9. 基于VTK的有限元计算结果可视化 尹小刚,奚金荣

    基于VTK的有限元计算结果可视化 尹小刚,奚金荣 河海大学工程力学系,南京 (210098) 摘要:有限元计算结果的可视化是分析有限元计算结果的重要手段.随着可视化的广泛应用,人们对于三维真实感图形的 ...

  10. 点云/网格模型的体积计算

    点云体积计算 有时用激光扫描设备扫描零件或者用无人机进行测量后会想知道它们的体积.比如下面的土堆: 如果扫描得到的数据是一系列三维点云,那么体积就比较难求,因为如何定义物体的边界比较困难.一种方法是提 ...

最新文章

  1. APICloud创始人兼CEO刘鑫:论API经济和企业移动战略
  2. 3.11 结论和致谢-深度学习第五课《序列模型》-Stanford吴恩达教授
  3. 懒加载 jquery代码
  4. 如何在Xbox One或PlayStation 4上为Skyrim特别版安装Mods
  5. python画蜡烛致敬烈士_「」matplotlib 股票-用python绘制蜡烛线型k线图是用代码还是绘图工具-TOP金融网...
  6. 连接 F5 大 IP 设备
  7. Redis 实用技术——事务
  8. PyQt5学习笔记05----Qt Designer信号槽
  9. yum yum doesn‘t match version of Python 终极解决方案
  10. ajax前台获取json,ajax与json 获取数据并在前台使用简单实例
  11. multimap多重关联容器
  12. U盘启动制作软件推荐:Rufus
  13. Java九大内置对象
  14. 戴尔 Inspiron 530s 通过 Clover_v2.5k_r5093 安装 macOS Catalina 10.15.3 教程
  15. QQ红包金额分配算法
  16. pumping lemma
  17. Android:自动点击屏幕
  18. 软件部件仿真测试平台的设计与实现(计算机工程与设计2017-11)
  19. 冰羚-README.md翻译
  20. 如何使用ARM协处理器CP15在32位ARRCH模式下操作64位寄存器)

热门文章

  1. centos6/7修改主机名的正确方法
  2. linux启动器编辑,linux下建立启动器
  3. 微服务发展的历史_三位一体的中台、微服务和云原生,揭示了软件架构的最新发展趋势...
  4. pandas 字符串切片后保存_Pandas时间序列基础详解(转换,索引,切片)
  5. SpringMVC错误提示(三)
  6. 商品类别推荐系统:LightGBM模型
  7. 【NIPS 2017】基于深度强化学习的想象力增强智能体
  8. Baxter实战 (二)ubuntu14.04安装Baxter Workstation
  9. A Singular Value Decomposition Approach For Recommendation Systems
  10. RunLoop相关知识