# Sandstone **Repository Path**: xv514/sandstone ## Basic Information - **Project Name**: Sandstone - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-24 - **Last Updated**: 2025-11-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Sandstone 图像分区(Segmentation)项目 ![生成的区域分割图](%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE%202025-11-24%20180756.png) ## 项目简介 本仓库实现了基于像素级分类的砂岩截面图分区流程: - 使用 `Sandstone_1.tif` 与标注分区 `Sandstone_1_segment.tif` 进行训练,构建像素分类器(示例为随机森林)。 - 将训练得到的分类器保存为 `sandstone_clf.pkl`,并用它对 `Sandstone_2.tif` 进行分区预测。 - 将预测结果与标准分区 `Sandstone_2_segment.tif` 比较并输出准确率,同时保存预测分区图 `Sandstone_2_pred_segment.tif`。 本项目包含特征工程(原始灰度 + 均值、高斯、Sobel、Canny)用于增加每个像素的判别能力。 ## 文件说明 - `create_clf.py`:训练脚本。读取 `Sandstone_1.tif` 与 `Sandstone_1_segment.tif`,生成特征、训练分类器并将模型 `sandstone_clf.pkl` 保存到磁盘。 - `segment.py`:分割脚本。加载 `sandstone_clf.pkl`,对 `Sandstone_2.tif` 进行预测,计算准确率并保存预测分割图 `Sandstone_2_pred_segment.tif`,同时显示三张图(原图、真实分区、预测分区)。 - `Sandstone_1.tif`, `Sandstone_1_segment.tif`, `Sandstone_2.tif`, `Sandstone_2_segment.tif`:数据文件(灰度图和对应分区标签)。 - `sandstone_clf.pkl`:训练后保存的分类器模型(由 `create_clf.py` 生成)。 ## 依赖 建议使用 Python 3.8+,安装依赖: ```bash pip install numpy opencv-python scikit-learn matplotlib ``` (如果在没有显示器的服务器运行,matplotlib 可设置后端或注释显示代码) ## 使用说明 1. 在含有数据的目录下运行训练脚本: ```bash python create_clf.py ``` 预期命令行输出示例(以随机森林为例): ``` 图像形状: (1024, 996) 完成从砂岩截面图1及其对应分区中获取X和y 完成train_test_split 完成随机森林模型clf的训练 准确率: 0.9643431425097722 已保存随机森林模型clf到硬盘 ``` 运行后会生成文件:`sandstone_clf.pkl` 2. 使用训练好的模型对第二张图像分割并查看结果: ```bash python segment.py ``` 预期输出示例: ``` 分割准确率: 0.967 ``` 同时程序会显示三幅灰度图(原始图、真实分区、预测分区)并保存 `Sandstone_2_pred_segment.tif`。 ## 特征工程说明 训练时每个像素被视为一条样本,构成特征向量: - 原始灰度值 - 均值滤波(3x3) - 高斯滤波(3x3) - Sobel 滤波(检测边缘) - Canny 边缘检测二值图 这些特征帮助分类器区分不同区域的纹理与边界信息,从而对像素进行更准确的分类。 ## 输出文件 - `sandstone_clf.pkl`:序列化的分类器模型。 - `Sandstone_2_pred_segment.tif`:模型对 `Sandstone_2.tif` 的预测分割(灰度图)。 ## 改进建议 - 增加更多局部特征(例如局部方差、LBP、更多尺度的高斯/均值滤波) - 使用更强的分类器或深度学习方法(如 U-Net)以提升分割质量 - 对标签进行平衡或使用像素权重来应对类别不平衡 - 使用交叉验证与网格搜索对模型超参数进行优化 ## 个人信息 - 学号:202352320224 - 年级:2023 - 专业:智能科学与技术 - 班级:二班