手术视频预处理构想
1、手术视频预处理全流程技术路线
(1)

(2)图像帧预处理

(3)音频预处理

2、镜头检测 & 切割
核心问题:手术视频有很多"无效片段"需要过滤
需要检测/过滤的情况:
├── 镜头插入/拔出(画面全黑)
├── 镜头擦拭(画面模糊过渡)
├── 手术室灯光切换(突然亮度变化)
├── 非手术片段(准备阶段、缝合后)
└── 镜头切换(多摄像头系统)
推荐技术方案:
| 方案 | 适用场景 | 优劣 |
|---|---|---|
| PySceneDetect | 通用镜头切换 | ✅ 开箱即用 ❌ 对手术黑帧不够精准 |
| 帧差法(自研) | 黑帧/模糊帧过滤 | ✅ 轻量精准,适合手术特有问题 |
| CLIP相似度 | 语义级场景变化 | ✅ 最准 ❌ 慢,适合离线 |
建议:PySceneDetect 做粗检测 → 帧差法做黑帧/模糊帧精过滤,两步走
3、帧提取 & 采样
核心问题:手术视频通常25fps,1小时 = 90,000帧,必须降采样
采样策略对比:
均匀采样(1fps): 简单,但会丢关键动作
关键帧采样: 基于内容变化,信息密度高 ← 推荐
自适应采样: 动作快时密采,静止时稀采 ← 最优但复杂
推荐技术方案:
| 工具 | 说明 |
|---|---|
| Decord | 比 OpenCV 快 5-10 倍的视频读取库,强烈推荐 |
| FFmpeg | 命令行批量提帧,最稳定 |
| 自研关键帧 | 相邻帧 SSIM/感知哈希差异阈值过滤 |
建议:Decord读帧 + 感知哈希去重,1fps均匀采样作为基础,关键帧采样作为补充
4、画质增强
手术视频特有的画质问题:
问题分类:
├── 烟雾(electrosurgical smoke) ← 最常见,严重影响模型
├── 镜面反光(specular highlight) ← 金属器械反光
├── 运动模糊(motion blur) ← 快速操作
├── 低照度(low illumination) ← 体腔内光线不足
└── 气泡/水雾(bubble/fogging) ← 内窥镜特有
推荐技术方案:
| 问题 | 推荐方案 | 说明 |
|---|---|---|
| 烟雾去除 | SMOKE论文系列 / DehazeNet | ✅ 有专门针对手术烟雾的论文 |
| 反光抑制 | 高光检测mask + inpainting | ✅ 检测高亮区域后修复 |
| 运动模糊 | 跳过模糊帧(比去模糊更实用) | ✅ Laplacian方差检测,直接跳过模糊帧 |
| 低照度 | CLAHE(自适应直方图均衡) | ✅ OpenCV一行代码,增强效果明显 |
| 整体增强 | Real-ESRGAN | ✅ 通用超分+去噪,效果最稳定 |
建议:工程上优先"检测并丢弃"问题帧,而不是"修复"问题帧,更稳定
5、格式标准化
目标:让所有来源的视频变成统一格式,后续模型无感知输入差异
需要统一的维度:
├── 分辨率 → 统一 resize(如 256×448 或 224×224)
├── 帧率 → 统一为 25fps 或 1fps(取决于任务)
├── 色彩空间 → RGB(模型标准),手术视频原始多为YUV
├── 像素归一化 → [0,1] 或 ImageNet mean/std
├── 存储格式 → .mp4(视频)或 .jpg序列(帧)
└── 元数据 → JSON记录:来源、时长、分辨率、有效帧范围