# sandstone-segmentation **Repository Path**: liu-yi-ch-en/sandstone-segmentation ## Basic Information - **Project Name**: sandstone-segmentation - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-17 - **Last Updated**: 2025-11-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 砂岩图像分割项目 基于随机森林算法的砂岩CT图像自动分割系统,可实现砂岩内部结构(石英、孔隙等不同组分)的精准识别与分割。 ## 项目简介 本项目通过机器学习方法对砂岩CT扫描图像进行语义分割,能够自动识别砂岩内部的不同物质成分。使用随机森林分类器,基于像素灰度值特征进行训练和预测。 ## 分割效果展示 ![砂岩分割结果](Sandstone_2_result.png) *左:原始CT图像 | 中:人工标注 | 右:模型预测结果(准确率:95.8%)* ## 项目结构 ``` sandstone-segmentation/ │ ├── create_clf.py # 分类器训练脚本 ├── segment.py # 图像分割预测脚本 ├── clf # 训练好的随机森林模型 │ ├── Sandstone_1.tif # 训练数据:砂岩截面图1 ├── Sandstone_1_segment.tif # 训练数据:人工标注分区图1 │ ├── Sandstone_2.tif # 测试数据:砂岩截面图2 ├── Sandstone_2_segment.tif # 测试数据:人工标注分区图2(用于评估) ├── Sandstone_2_segmentation.tif # 模型预测结果 └── Sandstone_2_result.png # 可视化对比图 ``` ## 技术原理 ### 分类方法 - **算法**: 随机森林(Random Forest) - **特征**: 像素灰度值 - **类别**: 4类(石英、孔隙、基质等) ### 标注色彩映射 | 颜色 | RGB | 类别编号 | 物质类型 | |------|-----|----------|----------| | 🔴 红色 | (255, 0, 0) | 0 | 基质材料 | | 🟢 绿色 | (0, 255, 0) | 1 | 中等密度物质 | | 🔵 蓝色 | (0, 0, 255) | 2 | 孔隙(最暗) | | 🟡 黄色 | (255, 255, 0) | 3 | 石英(最亮) | ## 依赖环境 ```bash pip install numpy scikit-learn pillow matplotlib ``` **主要依赖包**: - `numpy`: 数组运算 - `scikit-learn`: 随机森林算法 - `Pillow`: 图像读写 - `matplotlib`: 结果可视化 ## 使用方法 ### 1. 训练分类器 使用砂岩截面图1及其标注数据训练模型: ```bash python create_clf.py ``` **输出**: - 模型文件: `clf` - 训练准确率: ~96-98% ### 2. 图像分割预测 对新的砂岩图像进行分割: ```bash python segment.py ``` **输出**: - 分割结果: `Sandstone_2_segmentation.tif` - 可视化图: `Sandstone_2_result.png` - 分割准确率: 95.8% ### 3. 自定义预测 修改 `segment.py` 中的文件路径: ```python test_image = 'your_sandstone_image.tif' # 待分割图像 gt_path = 'your_ground_truth.tif' # 标注图(可选,用于评估) ``` ## 核心功能模块 ### create_clf.py - 训练模块 ```python # 主要函数 load_training_data() # 加载训练数据,提取特征和标签 train_random_forest() # 训练随机森林分类器 save_classifier() # 保存模型到磁盘 ``` **训练参数**: - 决策树数量: 100 - 最大深度: 10 - 训练/测试划分: 80/20 ### segment.py - 预测模块 ```python # 主要函数 load_classifier() # 加载训练好的模型 segment_image() # 执行图像分割 calculate_accuracy() # 计算分割准确率 convert_labels_to_grayscale() # 标签转灰度图 visualize_results() # 可视化对比展示 save_segmentation() # 保存分割结果 ``` ## 性能指标 | 指标 | 数值 | |------|------| | 训练集准确率 | ~96-98% | | 测试集准确率 | 95.8% | | 模型大小 | ~2.9 MB | | 预测速度 | < 5秒(1024×1024图像) | ## 算法流程 ``` 训练阶段: 砂岩图像1 + 标注图1 → 提取特征(灰度值) → 随机森林训练 → 保存模型(clf) 预测阶段: 砂岩图像2 → 提取特征 → 加载模型 → 像素级分类 → 生成分割结果 ``` ## 技术特点 ✅ **简单高效**: 基于灰度值的单特征分类,计算快速 ✅ **无需深度学习**: 使用传统机器学习方法,易于部署 ✅ **高精度**: 在测试集上达到95.8%的分割准确率 ✅ **可解释性强**: 随机森林模型具有良好的可解释性 ## 应用场景 - 🔬 岩石孔隙度分析 - 🛢️ 油气储层评估 - 🏗️ 建筑材料质量检测 - 📊 地质科学研究 ## 个人信息 学号: 202352320122 年级: 2023 专业: 智能科学与技术 班级: 1班