Files
FishServer/FishMeasure/docs/fish_segmentation_pipeline.md
2026-04-08 19:32:23 +08:00

153 lines
4.6 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 鱼类分割功能增强计划
## 概述
本文档描述在现有鱼类测量管道中添加鱼类分割功能的计划。该功能将实现鱼尾、鱼中段和鱼头的自动分割,以支持更智能的模板匹配和朝向检测。
## 功能目标
### 1. 鱼类部位分割
- **鱼头Fish Head**:识别鱼的前端部分
- **鱼中段Fish Middle**:识别鱼的主体部分
- **鱼尾Fish Tail**:识别鱼的后端部分
### 2. 自动朝向检测
- 基于分割结果自动确定鱼的朝向(头尾方向)
- 识别鱼是头朝前还是尾朝前
- 为后续的模板对齐提供方向信息
### 3. 点云完整性检测
- 检测鱼尾部分是否包含完整的点云数据
- 判断鱼尾点云是否存在缺失或遮挡
### 4. 智能模板选择
- **如果鱼尾有点云**:使用包含尾部的完整模板进行对齐
- **如果鱼尾没有点云**:使用不包含尾部的模板进行对齐
- 根据分割结果自动选择合适的模板
## 实现方案
### 阶段 1分割模型开发
#### 1.1 数据准备
- 收集并标注鱼类点云数据,标记头、中段、尾三个部位
- 创建分割数据集,包含不同角度、不同姿态的鱼类点云
- 数据格式:点云 + 部位标签head/middle/tail
#### 1.2 模型训练
- 使用 PointNet++ 或 Point Transformer 进行点云分割
- 参考现有 `pointcloud_classifier` 模块的架构
- 训练三分类分割模型(头/中段/尾)
#### 1.3 模型集成
- 将分割模型集成到主处理管道中
- 在点云提取后立即进行分割
- 保存分割结果用于后续处理
### 阶段 2朝向检测
#### 2.1 基于分割的朝向判断
- 分析鱼头和鱼尾的空间位置关系
- 计算鱼的主轴方向PCA
- 确定头尾方向向量
#### 2.2 方向标准化
- 统一鱼的朝向例如统一为头朝正X方向
- 与现有的 `head_tail_alignment` 模块集成
- 确保后续模板匹配的一致性
### 阶段 3点云完整性检测
#### 3.1 鱼尾点云分析
- 统计鱼尾部分的点云数量
- 检测鱼尾点云的连续性
- 判断是否存在明显的缺失区域
#### 3.2 完整性评估
- 定义完整性阈值(例如:点云数量、覆盖率等)
- 输出布尔标志:`has_tail_pointcloud`
### 阶段 4模板选择逻辑
#### 4.1 模板管理
- 维护两套模板:
- **完整模板**:包含尾部的完整鱼类模板
- **无尾模板**:不包含尾部的鱼类模板
#### 4.2 自动选择
```python
if has_tail_pointcloud:
template = load_template("fish_with_tail.obj")
else:
template = load_template("fish_without_tail.obj")
```
#### 4.3 模板对齐
- 根据选择的模板进行点云对齐
- 利用朝向信息优化对齐过程
- 确保对齐质量
## 技术实现细节
### 数据流
```
原始点云
[分割模块] → 头/中段/尾标签
[朝向检测] → 方向向量 + 标准化点云
[完整性检测] → has_tail_pointcloud 标志
[模板选择] → 选择合适的模板
[模板对齐] → 对齐后的点云
[体积计算] → 重量估算
```
### 模块集成点
1. **在 `fish_video_weight_evaluation.py` 中**
- 在点云提取后添加分割步骤
- 在模板匹配前添加模板选择逻辑
2. **在 `template_matching/fish_align_cli.py` 中**
- 添加模板选择参数
- 根据分割结果选择模板
- 优化对齐算法以利用分割信息
3. **新增模块**
- `segmentation/fish_segmentation.py`:分割模型推理
- `segmentation/orientation_detection.py`:朝向检测
- `segmentation/tail_completeness.py`:尾部完整性检测
## 预期效果
1. **提高对齐精度**:通过选择合适的模板,提高点云对齐的准确性
2. **自动化处理**:减少人工干预,自动处理不同完整度的鱼类点云
3. **鲁棒性增强**:能够处理尾部缺失或遮挡的情况
4. **朝向一致性**:确保所有处理的鱼类朝向统一,便于后续分析
## 实施优先级
1. **高优先级**:分割模型开发和训练
2. **中优先级**:朝向检测和点云完整性检测
3. **低优先级**:模板选择逻辑优化和性能调优
## 相关文件
- `fish_video_weight_evaluation.py`:主处理管道
- `template_matching/fish_align_cli.py`:模板对齐模块
- `utils/head_tail_alignment.py`:现有的头尾对齐工具
- `pointcloud_classifier/`:可参考的点云分类架构
## 后续扩展
- 支持多部位精细分割(例如:鱼鳍、鱼眼等)
- 基于分割结果进行更精确的体积计算
- 利用分割信息进行鱼类姿态估计
- 支持不同鱼类品种的分割模型