眼底图像血管分割与 LabelMe 兼容矢量标注工具。
核心目标只有一个:以最低学习成本,提供可直接用于训练的高质量血管分割标注流程。项目操作逻辑兼容 pair,界面交互借鉴 labelme。
- 眼底血管分割是像素级任务,标注效率和一致性直接决定训练数据质量。
- 通用标注工具对该场景不够顺手,迁移学习成本高。
- 本项目聚焦“本地、轻量、稳定、可落盘复现”的标注闭环。
- 打开目录并递归加载图像(
png/jpg/jpeg/tif/tiff/bmp/webp)。 - 每张图支持多标签 mask 管理(创建、导入、重命名、删除、显示/锁定)。
- 画布支持画笔/橡皮、缩放平移、叠加透明度、连续笔画,以及控制点、多边形、圆和轴对齐椭圆。
- 支持每张图独立的统一撤销/重做历史,mask 和矢量操作按发生顺序交替撤回。
- 标注同时保存为单标签
.tar(mask.npy + meta.json)与同 stem 的 LabelMe JSON。 - LabelMe JSON 保留外部未支持 shape 与扩展字段;尺寸不一致和同 stem 图片冲突会阻止覆盖保存。
- 支持从图片导入 mask(二值化 + 尺寸对齐)及黑底 stroke PNG 导出。
实现索引见:docs/WIKI.md
pip install -r requirements.txt或 Conda:
conda create -y -n vesselme python=3.11
conda run -n vesselme python -m pip install -r requirements.txtpython main.py或
python -m vesselme.mainB: 画笔E: 橡皮V: 选择和编辑图形P: 控制点G: 多边形(Enter/双击完成,Esc 取消)C: 圆 / 椭圆(按住 Shift 创建圆)Ctrl + 鼠标滚轮: 调整画笔大小鼠标右键: 临时橡皮中键拖动或Space + 左键: 平移滚轮: 缩放Ctrl+Z / Ctrl+Y: 撤销 / 重做A: 显示 / 隐藏标注层[/]: 缩小 / 增大画笔1~9: 切换标签S或Ctrl+S: 保存当前图像的全部脏数据← / →: 切换上一张 / 下一张图片
每张图保留原有 mask 包,并增加同 stem 的 LabelMe JSON:
fundus.png
fundus_[vessel].tar
fundus_[lesion].tar
fundus.json
每个“图像-标签”保存为一个 .tar:
mask.npy:uint8单通道二值图(背景0,前景255)meta.json: 标签名、显示色、时间戳、版本等元数据
命名规则:
- 图片:
<image_stem>.<ext> - 标签:
<image_stem>_[<label_name>].tar - 矢量:
<image_stem>.json
JSON 固定写入 LabelMe 根字段 version/flags/shapes/imagePath/imageData/imageHeight/imageWidth。支持 point、polygon、circle;椭圆保存为 64 个边界点的 polygon,并用 vesselme_shape_type 和 vesselme_geometry 恢复中心与半轴。每个 VesselMe 对象额外携带稳定 UUID、显示状态、锁定状态和颜色。
rectangle、line、linestrip、mask 等未支持对象不会显示或编辑,保存时会按原内容和原始相对顺序合并回 JSON。JSON 尺寸与图片不一致、或同目录出现相同 stem 的多种图片扩展名时,程序会阻止 JSON 覆盖保存;imagePath 不一致只提示,不阻止加载。
删除 mask 标签或最后一个受支持 shape 只改变内存状态。下一次保存才删除相应 .tar 或 JSON;在保存前可用撤销恢复。
vesselme/
ui/ # 主窗口、画布、交互
core/ # 历史栈等核心逻辑
data/ # 模型与 tar 读写
services/ # 项目/标签服务
docs/
README.md
WIKI.md
NEXT.md
spec.md # 产品与技术规范
- 需求与规范:
spec.md - 开发约束与运行说明:
docs/README.md - 已实现功能索引:
docs/WIKI.md - 当前任务面板:
docs/NEXT.md
GPL-3.0. See LICENSE.
- 安装 Python 3.10+(安装时勾选
Add python.exe to PATH)。 - 打开
cmd或 PowerShell,进入项目根目录(和main.py同级)。 - 执行:
python -m pip install -r requirements.txt
python main.py- 确保已安装 Python 3.10+。
- 打开终端,进入项目根目录(和
main.py同级)。 - 执行:
python3 -m pip install -r requirements.txt
python3 main.pypython/python3不存在:先安装 Python,再重开终端。- 依赖安装报权限错误:使用
python3 -m pip install --user -r requirements.txt- 程序启动失败:先确认你当前目录下有
main.py。
