Open3D mesh模型平滑处理 (9)

一、模型平滑示意图

生成球体并添加高斯噪声的模型
在这里插入图片描述
平滑后,参数简单设置一下
在这里插入图片描述

二、平滑函数介绍

在Open3D中,filter_smooth_taubin方法的三个参数代表如下:

number_of_iterations:表示平滑处理的迭代次数。增加此值将导致对模型应用更多次的平滑操作,从而使得模型更加平滑。

lambda_filter:表示Taubin平滑算法中的一个参数,负责控制对网格的平均移动。增加此值通常会导致更强烈的平滑效果。

mu:同样是Taubin平滑算法中的一个参数,负责控制对网格的细节保持。增加此值通常会抑制细节部分的变化,从而实现对整体结构的平滑。

调整这些参数会对平滑处理产生不同的效果:

增加number_of_iterations将增强平滑效果,并可能消除一些小尺度的几何特征。
调整lambda_filter可以改变平滑的强度,增大值会导致更强的平滑效果。
调整mu可以影响保留原始几何细节的程度,增大值会导致更多的几何细节被保留。

三、具体实现

1.代码

代码如下(示例):

import open3d as o3d
import numpy as np

# 生成一个球体假数据
mesh_sphere = o3d.geometry.TriangleMesh.create_sphere(radius=1.0)
mesh_sphere.compute_vertex_normals()

# 添加高斯噪声
noise = 0.2
vertices = np.asarray(mesh_sphere.vertices)
vertices += np.random.normal(0, noise, vertices.shape)

noisy_mesh = o3d.geometry.TriangleMesh()
noisy_mesh.vertices = o3d.utility.Vector3dVector(vertices)
noisy_mesh.triangles = mesh_sphere.triangles

# 平滑处理
smoothed_mesh = noisy_mesh.filter_smooth_taubin(number_of_iterations=10, lambda_filter=0.5, mu=-0.5)
# 可视化
o3d.visualization.draw_geometries([smoothed_mesh])

相关推荐

  1. Ollama+Open WebUI部署大模型在linux平台

    2024-01-08 23:36:03       36 阅读
  2. open3d:ransac分割多个平面(源码)

    2024-01-08 23:36:03       23 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-08 23:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-08 23:36:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-08 23:36:03       82 阅读
  4. Python语言-面向对象

    2024-01-08 23:36:03       91 阅读

热门阅读

  1. 用Python实现组件化大屏

    2024-01-08 23:36:03       62 阅读
  2. C语言中的关键字与标识符详解

    2024-01-08 23:36:03       58 阅读
  3. 列表如何查找索引与字符串

    2024-01-08 23:36:03       42 阅读
  4. Qt 中如何将图片转化为yuv420p

    2024-01-08 23:36:03       58 阅读
  5. 精准掌控 Git 忽略规则:定制化 .gitignore 指南

    2024-01-08 23:36:03       66 阅读