Files
labelimage/auxiliary_area_threshold_plan.md
2026-04-20 09:36:34 +08:00

2.4 KiB

辅助标注尺寸阈值过滤实施记录

背景

F1 -> 点选/框选 -> 请求 getAuxiliaryAnnotation -> 生成辅助轮廓 -> F1 确认生成对象 的流程里,接口可能返回大量很小的区域或小镂空,影响最终对象质量与后续编辑效率。

目标

  • 在工具栏提供尺寸阈值输入框。
  • 提供按钮与快捷键,对小于阈值的区域/镂空进行过滤。
  • 该能力既能用于 F1 生成后的辅助预览,也能用于已确认生成并被选中的 polygon 对象。
  • 不影响正常标注流程。

链路分析

  1. LabelNossr.tsx
    • F1 进入 support 模式。
    • 再次 F1 时调用 PaperContainer.saveSupportAnnotationData() 完成确认。
  2. usePaperStore.ts
    • supportTool 收集点/框提示,调用 PaperContainer.renderSupportAnnotation()
  3. PaperContainer.tsx
    • renderSupportAnnotation() 请求 getAuxiliaryAnnotation()
    • 接口返回 contours/hollows 后,在画布上生成 support 预览。
    • saveSupportAnnotationData()support 预览转成正式标注对象。

本次实现

已完成

  • components/label/useTopToolsStore.ts 增加 auxiliarySizeThreshold 状态。
  • 新增 components/label/utils/geometry/areaFilter.ts,用于按尺寸过滤 multipolygon 外轮廓与洞。
  • components/label/components/TopTools.tsx 增加:
    • 尺寸阈值输入框
    • 过滤 按钮
  • components/label/LabelNossr.tsx 增加 F2 快捷键,触发尺寸过滤。
  • components/label/components/PaperContainer.tsx 增加:
    • 辅助预览 geometry 重绘能力
    • support 预览执行尺寸过滤
    • 对已选中 polygon 对象执行尺寸过滤
    • 若过滤后对象为空,则直接删除对象
  • 快捷键说明中补充 F2 文案。

当前行为

  • 若当前存在 support 预览,F2 / 过滤 优先作用于辅助预览。
  • 若当前没有 support 预览,则对当前选中的一个或多个 polygon 对象执行批量过滤。
  • 输入值含义为“尺寸阈值”,实际面积阈值为“尺寸阈值²”。
  • 小外轮廓会被删除;小镂空会被填平。
  • 阈值需大于 0 才会生效。

验证

  • 已执行:pnpm exec tsc --noEmit
  • 结果:通过

后续可选项

  • 支持一次过滤多个已选中 polygon 对象。
  • 在工具栏中增加更明确的阈值单位说明。
  • 如果需要,可再补一轮手动回归用例清单。