# 网格结构杆件 分割与变形识别 **Repository Path**: wangyihaotc9388/Deformation-detection ## Basic Information - **Project Name**: 网格结构杆件 分割与变形识别 - **Description**: 方法思路来自于清华大学的文献 Member-separation-and-deformation-recognition-of-spatial_2024_Engineering-St - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-30 - **Last Updated**: 2025-01-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 网格结构杆件 分割与变形识别 (部分功能复现) #### 介绍 1. 方法思路来自于清华大学的文献 Member-separation-and-deformation-recognition-of-spatial_2024_Engineering-St ; 2. 代码对文献部分功能进行复现,使用了claude3.5; 3. 我领导要求我搞这个的,结果我写了demo和我说cyclone 3DR软件已经有这个功能了!额,我把它开源了,供各位大神,修改优化,用于自己项目,提高生产效率,也算功德无量。 # 项目README ## 项目概述 本项目旨在实现点云数据的分割、合并与异常点检测。通过使用Open3D库和ICP算法,对输入的点云数据进行处理,生成分割后的构件,并对其进行合并及异常点标记。项目代码主要由以下几个部分组成: - **点云加载**:从PLY文件中读取点云数据。 - **点云分割**:基于圆柱体模板和ICP算法对点云进行分割。 - **构件合并**:将分割后的构件根据轴线平行性和连接性进行合并。 - **异常点检测**:在合并后的构件上标记异常点,并在三维图中显示。 ## 文件结构 ``` . ├── DD6_20250106.py # 主程序文件 └── README.md # 项目说明文档 ``` ## 环境配置 确保已安装以下Python库: ```bash pip install numpy open3d trimesh matplotlib concurrent.futures ``` ## 使用方法 ### 1. 参数配置 在`DD6_20250106.py`中配置以下参数: ```python component_radius = 0.150 # 模板圆柱半径(米) component_length = 5.811 # 模板圆柱长度(米) min_distance = 0.01 # 模板圆柱点云分辨率(米) max_attempts = 30 # 最大尝试次数 th = 2000 # ICP参数 max_correspondence_distance rmse_threshold = 0.007 # ICP参数 RMSE阈值 num_groups = 3 # 将点云拆分为N组 ``` ### 2. 运行程序 1. **加载点云**: - 提示用户输入PLY文件路径,加载点云数据并显示原始点云。 2. **点云分割**: - 使用圆柱体模板和ICP算法对点云进行分割,支持并行处理以提高效率。 - 分割结果保存为JSON文件。 3. **构件合并**: - 根据轴线平行性和连接性合并分割后的构件。 - 合并结果保存为JSON文件。 4. **异常点检测**: - 在合并后的构件上标记异常点,并在三维图中显示。 - 异常点信息保存为PLY和PCD文件。 ### 3. 可视化 - **分割结果**:可视化分割后的点云和轴线。 - **合并结果**:可视化合并后的点云和轴线。 - **异常点**:在三维图中标记并显示异常点及其到轴线的垂线。 ## 示例代码片段 ```python # 加载点云 target_cloud, filename = load_point_cloud() show_point_cloud([target_cloud], "原始点云数据") # 点云分割 segmented_points, template_axes = segment_point_cloud_parallel( target_cloud, component_radius, component_length, min_distance, max_attempts, th, rmse_threshold, num_groups, ) # 构件合并 merged_points, merged_axes = merge_components_until_stable( segmented_points, template_axes, epsilon_parallel, epsilon_connected ) # 异常点检测 mark_outliers(merged_points, merged_axes, max_threshold, min_threshold, sample_rate, output_path) ``` ## 注意事项 - **性能优化**:对于大型点云数据,建议使用并行处理(`segment_point_cloud_parallel`)以提高处理速度。 - **参数调整**:根据实际点云数据的特点,适当调整模板尺寸、ICP参数等,以获得更好的分割和合并效果。 ## 联系方式 如有任何问题或建议,请联系:王易豪 wangyihao@sribs.com --- 以上是项目的README文档,详细描述了项目的功能、使用方法及注意事项。希望对您有所帮助!