Skip to content

Bubble rasterization rendering module. Used to render a 2D image at any angle from a 3D bubble point cloud.

Notifications You must be signed in to change notification settings

AI4CT/Bubble_Rendering_Tool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

气泡投影渲染工具

这个工具用于处理气泡的三维STL模型,生成多角度的二维投影图像,并计算相关的形态参数。

功能介绍

该工具可以:

  1. 读取气泡STL文件并进行预处理
  2. 从多角度对气泡进行二维投影渲染
  3. 计算气泡的3D形态参数(体积、表面积、球形度、凸度等)
  4. 计算每个投影图像的2D形态参数
  5. 将所有参数导出到CSV文件中,方便后续分析

使用方法

1. 文件夹结构

确保您有以下文件夹结构:

bubble_rendering/
├── mesh/            # 存放STL文件的文件夹
│   └── 00002.stl    # 示例STL文件
├── projection/      # 输出投影图像和参数的文件夹(会自动创建)
└── rendering.py     # 主程序

2. 运行程序

python rendering.py

执行后,程序将:

  • 读取mesh文件夹中的所有STL文件
  • 为每个STL文件在projection文件夹下创建对应的子文件夹
  • 生成多角度的投影图像并保存到对应子文件夹
  • 计算所有形态参数并保存到projection/parameters.csv文件

3. 配置选项

您可以在代码中修改以下配置:

  • 投影模型:

    # projection_model = 'fibonacci'  # 使用斐波那契分布的投影点
    projection_model = 'sphere'      # 使用球面均匀分布的投影点
  • 投影点数量:

    points = generate_points_on_sphere(N = 33)  # 生成33个投影角度

输出内容

1. 投影图像

每个STL文件都会生成多个不同角度的投影图像,图像命名格式为:

Sphere_[x坐标]_[y坐标]_[z坐标]_scale=[缩放比例].png

2. 参数文件

parameters.csv文件包含以下参数:

3D参数:

  • a, b, c: 拟合椭球的三个半轴长度
  • Volume_3D: 气泡体积
  • Surface_area_3D: 气泡表面积
  • EI_3D: 扁平度指数
  • FI_3D: 伸长度指数
  • AR_3D: 长宽比
  • Sphericity_3D: 球形度
  • Convexity_3D: 凸度
  • Angularity_3D: 棱角度

2D参数(每个投影图像):

  • Principal_Dimension_2D: 主轴长度
  • Secondary_Dimension_2D: 次轴长度
  • Area_2D: 投影面积
  • Aspect_Ratio_2D: 长宽比
  • Circularity_2D: 圆形度
  • Solidity_2D: 实心度
  • Convexity_2D: 凸度
  • radius_angularity_index_2D: 半径棱角度指数

渲染原理

程序使用以下步骤渲染气泡投影:

  1. STL文件读取与预处理

    • 读取气泡的STL模型文件
    • 对点云数据进行归一化处理
    • 根据需要进行上采样,确保点云密度足够(默认约20000个点)
    • 应用Taubin平滑算法减少噪声
    • 填充模型中可能存在的小孔
  2. 投影点生成

    • 支持两种投影模型:
      • fibonacci:基于斐波那契螺旋分布在球面上的均匀点
      • sphere:基于PyVista球体模型生成的均匀分布点
    • 默认生成33个观察角度的投影点
  3. 多角度渲染

    • 对每个投影点,通过旋转模型实现不同角度的观察
    • 使用向量叉乘和点乘计算旋转轴和角度
    • 根据模型大小自动调整缩放比例
  4. 光照模型与投影

    • 考虑表面法线与视线方向的夹角计算光照强度
    • 使用高次幂函数(angles^8)增强边缘对比度
    • 应用基于距离的权重插值实现平滑渲染
  5. 图像处理

    • 应用高斯滤波(sigma=1.0)平滑图像
    • 应用中值滤波(size=5)去除噪点
    • 调整对比度增强图像质量
  6. 形态参数计算

    • 基于三维模型计算3D参数(体积、表面积、球形度等)
    • 基于投影轮廓计算2D参数(面积、周长、圆形度等)
    • 拟合椭球体/椭圆获取主轴和次轴信息
    • 计算各种形态指标如棱角度、凸度、圆形度等
  7. 结果导出

    • 生成多角度的投影图像(PNG格式)
    • 输出包含所有形态参数的CSV文件

安装与依赖

在运行程序前,确保已安装所有必要的依赖库:

pip install -r requirements.txt

主要依赖包括:

  • numpy:用于数值计算
  • pyvista:用于3D网格处理
  • matplotlib:用于图像生成
  • opencv-python (cv2):用于图像处理
  • scipy:用于科学计算
  • tqdm:用于显示进度条

故障排除

如果程序运行出错,可能原因包括:

  1. STL文件格式不正确或数据异常
  2. 缺少依赖库(请安装:numpy, cv2, pyvista, matplotlib, scipy, tqdm)
  3. 内存不足(处理大型STL文件时)

未来改进

计划在未来版本中添加:

  1. 渲染管线的GPU加速
  2. 更多的投影模型选项
  3. 批处理功能的优化
  4. 更直观的参数可视化

联系方式

如有任何问题或建议,请联系开发者。


注:此工具主要用于气泡流研究,适用于分析气泡形态特征和流体动力学行为。

结果分析

输出参数说明

parameters.csv文件中的参数详细解释:

3D参数

  • 椭球拟合参数
    • a, b, c:拟合椭球的三个半轴长度(由大到小排序)
  • 体积与表面积
    • Volume_3D:气泡体积
    • Surface_area_3D:气泡表面积
  • 形状指数
    • EI_3D:扁平度指数 (Elongation Index) = b/a
    • FI_3D:伸长度指数 (Flatness Index) = c/b
    • AR_3D:纵横比 (Aspect Ratio) = (EI_3D + FI_3D)/2
    • Sphericity_3D:球形度,完美球体为1.0
    • Convexity_3D:凸度,表示与凸包的体积比
    • Angularity_3D:棱角度,表示表面的不规则程度

2D参数

  • 尺寸参数
    • Principal_Dimension_2D:投影的主轴长度
    • Secondary_Dimension_2D:投影的次轴长度
    • Area_2D:投影面积
  • 形状参数
    • Aspect_Ratio_2D:投影的长宽比
    • Circularity_2D:圆形度,完美圆形为1.0
    • Solidity_2D:实心度,表示投影面积与椭圆面积的接近程度
    • Convexity_2D:凸度,表示投影面积与凸包面积的比值
    • radius_angularity_index_2D:半径棱角度指数,表示轮廓相对于拟合椭圆的不规则程度

参数自定义

您可以在rendering.py文件中自定义以下参数:

# 投影方式
projection_model = 'sphere'  # 或 'fibonacci'

# 投影点数量
points = generate_points_on_sphere(N = 33)  # 生成33个投影角度

# 光照参数修改 (第347行附近)
M = angles ** 8  # 可以修改幂次来调整边缘锐利度

# 图像处理参数 (第395行附近)
mapped_points = gaussian_filter(mapped_points, sigma=1)  # 高斯滤波参数
mapped_points_normalized = median_filter(mapped_points_normalized, size=5)  # 中值滤波参数

Git上传指南

完成代码修改后,您可以使用以下命令将项目上传到Git仓库:

# 初始化Git仓库(如果尚未初始化)
git init

# 添加所有文件到暂存区
git add .

# 提交更改
git commit -m "初始版本:气泡渲染工具"

# 添加远程仓库(替换为您的仓库URL)
git remote add origin <仓库URL>

# 推送到远程仓库
git push -u origin master

如需更新代码:

# 添加修改的文件
git add .

# 提交更改
git commit -m "更新:添加新功能/修复问题"

# 推送更改
git push

后续开发计划

  1. GPU加速渲染管线,提高大规模数据处理效率
  2. 增加更多投影模式和视觉效果选项
  3. 添加实时预览和交互式参数调整界面
  4. 优化批处理能力,支持更大规模的数据集处理
  5. 添加与机器学习模型的集成接口,用于自动化形态分析

About

Bubble rasterization rendering module. Used to render a 2D image at any angle from a 3D bubble point cloud.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages