53 lines
2.4 KiB
Markdown
53 lines
2.4 KiB
Markdown
# 辅助标注尺寸阈值过滤实施记录
|
|
|
|
## 背景
|
|
在 `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 对象。
|
|
- 在工具栏中增加更明确的阈值单位说明。
|
|
- 如果需要,可再补一轮手动回归用例清单。
|