首页/新闻资讯/正文详情

10 行代码给噪声 3D 网格做清洗:PyTorch3D 网格预处理笔记

发布时间:2026/11/6 1:15:15 来源:云帆数科 栏目:资讯中心
10 行代码给噪声 3D 网格做清洗:PyTorch3D 网格预处理笔记
10 行代码给噪声 3D 网格做清洗PyTorch3D 网格预处理笔记【免费下载链接】pytorch3dPyTorch3D is FAIRs library of reusable components for deep learning with 3D data项目地址: https://gitcode.com/gh_mirrors/py/pytorch3dPyTorch3D 没有内置边折叠式简化但它给出了网格预处理需要的组件Taubin 平滑、稀疏拉普拉斯算子、边提取和 chamfer 距离度量。读完这篇你能给扫描或重建得到的噪声网格搭一套平滑 误差校验的流程。它到底在干什么Taubin 平滑与批量网格表示输入是一个带噪声的Meshes比如扫描结果或重建管线的粗网格。处理的核心在 mesh_filtering.py 里的一行每个顶点按verts (1 - λ) * verts λ * L * verts向邻居的加权平均移动L 是由顶点和边构成的稀疏拉普拉斯矩阵每轮迭代分两步λ 为正时把表面往内收噪声被抹掉体积也缩水μ 为负时反向推回一部分补偿体积损失。输出是一个面片不变、顶点位置更新的新Meshes。先说清边界PyTorch3D 不做边折叠 / QEM 减面面数减半的需求请交给 Open3D 或 PyMeshLab这里解决的是几何清洗和误差度量。不同大小的网格用 packed 表示批量处理平滑算子读的就是这种存储。关键步骤从加载 obj 到误差度量加载网格load_objs_as_meshes把单个 obj 也包成 batch 形式内部存储见 meshes.py。一键平滑taubin_smoothing(meshes, lambd, mu, num_iter)返回新网格原网格不动。手动调参取verts_packed()和edges_packed()用norm_laplacian自己拼迭代控制更细。量化误差sample_points_from_meshes采表面点chamfer_distance对比处理前后。from pytorch3d.io import load_objs_as_meshes from pytorch3d.ops import taubin_smoothing meshes load_objs_as_meshes([model.obj], load_texturesFalse) smoothed taubin_smoothing(meshes, lambd0.53, mu-0.53, num_iter10) print(meshes.verts_packed().shape, smoothed.verts_packed().shape)网格重建类管线里平滑这类预处理就落在粗网格与最终网格之间。误差度量单独放一段代码point_reductionmax时返回的就是 Hausdorff 距离from pytorch3d.ops import sample_points_from_meshes from pytorch3d.loss import chamfer_distance p0 sample_points_from_meshes(meshes, num_samples4096) p1 sample_points_from_meshes(smoothed, num_samples4096) hausdorff chamfer_distance(p0, p1, point_reductionmax) print(hausdorff.item())参数怎么选lambd、mu、num_iter参数组合适用场景注意事项λ0.53, μ-0.53默认通用扫描噪声原论文标准值先当基线μ 取 -0.5 附近缩水明显时体积损失更小去噪力度也变弱λ0.1~0.2 大 num_iter保细节、只去高频噪声每次迭代都重建稀疏矩阵成本线性增长λ 接近 1 以上激进去噪缩水加快必须配合 chamfer 校验我的默认选择是 λ0.53、μ-0.53、num_iter10 起步再按 Hausdorff 距离曲线调 num_iter因为这组值在 Taubin 原论文里验证过体积保持适合当第一根标尺。踩坑记录网格平滑常见问题排查现象平滑后网格变成纯几何纹理没了。原因taubin_smoothing结尾用Meshes(verts..., faces...)重建没接 textures 参数。解法需要纹理就在平滑后自己重新挂上UV 没变仍然可用。现象大网格上迭代越多越慢没有并行加速感。原因循环内每轮都调用norm_laplacian重建稀疏矩阵拓扑没变也得重来。解法num_iter 先给 5~10每轮用chamfer_distance验证收益收益变平就停。现象多轮迭代后物体肉眼可见地缩小。原因λ 步天然收缩表面μ 步只补偿一部分。解法μ 保持 -0.53要更少缩水就把 μ 往 -0.5 靠并用get_bounding_boxes()前后对比。现象chamfer_distance几乎不动局部噪声却还在。原因默认point_reductionmean被大面积平坦表面主导局部偏差被稀释。解法换point_reductionmax它对最坏的那一处敏感。处理前后各渲染一张图人工过目缩水和细节丢失比数字更直观。下一步把预处理接进重建管线平滑只是第一步之后可以接细分 subdivide_meshes.py 增面或直接用 renderer 出图验收。延伸阅读算子总览docs/modules/ops.rst网格拟合教程含纹理与渲染fit_textured_mesh.ipynb误差度量全参数chamfer.py【免费下载链接】pytorch3dPyTorch3D is FAIRs library of reusable components for deep learning with 3D data项目地址: https://gitcode.com/gh_mirrors/py/pytorch3d创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

iloader安装实操:3个平台,从插上iPhone到装好第一个App
iloader安装实操:3个平台,从插上iPhone到装好第一个App

iloader安装实操:3个平台,从插上iPhone到装好第一个App 【免费下载链接】iloader User friendly sideloader 项目地址: https://gitcode.com/GitHub_Trending/iloa/iloader iloader 是一款免费开源的 iOS 侧载工具:不走 App Store,用你自己的 Apple ID 当"开发者账… · 2026/11/6 1:15:15

Jellyfin Desktop 完整指南:从安装到连上媒体库,10 分钟一步到位
Jellyfin Desktop 完整指南:从安装到连上媒体库,10 分钟一步到位

Jellyfin Desktop 完整指南:从安装到连上媒体库,10 分钟一步到位 【免费下载链接】jellyfin-desktop Jellyfin Desktop Client 项目地址: https://gitcode.com/GitHub_Trending/je/jellyfin-desktop 网页端播放器拖个进度条总要等两秒&#xff0c… · 2026/11/6 1:15:15

iloader iOS 侧载指南:点一次按钮装好 SideStore 的完整教程
iloader iOS 侧载指南:点一次按钮装好 SideStore 的完整教程

iloader iOS 侧载指南:点一次按钮装好 SideStore 的完整教程 【免费下载链接】iloader User friendly sideloader 项目地址: https://gitcode.com/GitHub_Trending/iloa/iloader iloader 是一款开源免费的 iOS 侧载(安装 App Store 之外的应用&am… · 2026/11/6 1:15:15

1553B总线常见三种组网方式
1553B总线常见三种组网方式

1553B总线(MIL-STD-1553B)是一种集中式串行总线协议,广泛应用于航空、航天、舰船及军事装备等领域。1553B总线通过统一的数字通信标准,取代了传统设备间复杂的模拟信号传输和点对点连线,大幅减少了电缆数量和系统重量。… · 2026/11/6 1:17:15

Spyglass:跨时钟域同步(同步单元)
Spyglass:跨时钟域同步(同步单元)

相关阅读 Spyglasshttps://blog.csdn.net/weixin_45791458/category_12828934.html?spm1001.2014.3001.5482 简介 同步单元方案主要用于控制信号跨时钟域同步,该方案使用约束或参数将目标时钟域中的单元指定为同步单元,如图1所示。 图1 同步单元方案 图… · 2026/11/6 1:17:15

03:对齐输出
03:对齐输出

/*** 题目名称&#xff1a;对齐输出 <p>* 题目来源&#xff1a;http://noi.openjudge.cn/ch0101/03/ <p>* 程序功能&#xff1a;右对齐输出三个整数&#xff0c;每个整数占8个字符宽度&#xff0c;彼此用一个空格隔开** author 潘磊&#xff0c;just_panleijust.ed… · 2026/11/6 1:17:15

Verilog基础:隐式线网声明
Verilog基础:隐式线网声明

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 一般情况下&#xff0c;设计者会对线网(Net)进行显式声明&#xff0c;如图1所示。 图1 线网声明 但这不是绝对的&#xff0c;在没有显式声明的情况下&#xff0c;… · 2026/11/6 1:17:15

07:输出浮点数
07:输出浮点数

/*** 题目名称&#xff1a;输出浮点数 <p>* 题目来源&#xff1a;http://noi.openjudge.cn/ch0101/07/ <p>* 程序功能&#xff1a;按题目要求以不同的格式化输出一个双精度浮点数** author 潘磊&#xff0c;just_panleijust.edu.cn* version 1.0*/// 本题Java无法A… · 2026/11/6 1:17:15

【中断】向量中断、中断服务程序、中断向量、中断向量表、中断向量地址,之间的关系
【中断】向量中断、中断服务程序、中断向量、中断向量表、中断向量地址,之间的关系

向量中断&#xff1a; 一种识别中断源的方式和技术。 中断服务程序&#xff1a; 不同的中断信号&#xff0c;需要用不同的 中断处理程序&#xff08;中断服务程序&#xff09; 来处理。中断服务程序一般是OS模块。 中断向量&#xff1a; 由向量地址形成部件&#xff0c;是… · 2026/11/6 1:16:15

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

三菱PLC数据采集到数据库的时序设计:Python+MC协议实战
三菱PLC数据采集到数据库的时序设计:Python+MC协议实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

ASIC主模式RTL设计:状态机与三态驱动的流片级实现
ASIC主模式RTL设计:状态机与三态驱动的流片级实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

STM32嵌入式C++开发:GDB调试与Renode仿真实战指南
STM32嵌入式C++开发:GDB调试与Renode仿真实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/6 1:02:11

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:27:59

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:03

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/5 10:28:07

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码