docs: add low contrast screening requirement

This commit is contained in:
2026-06-16 10:39:31 +08:00
parent d02da738c6
commit 511fcb1fc5
3 changed files with 131 additions and 10 deletions
+101 -2
View File
@@ -439,7 +439,99 @@ UI 设计稿中存在 `已微调` 状态。
- 批量导出时,已微调项使用自己的 `TransformState`。
- 未微调项使用当前模板生成的 `TransformState`。
## 16. 边界情况
## 16. 低对比组合筛选设计
### 16.1 问题定义
当衣服目标区域颜色和印花主要颜色接近时,用户即使完成合成,也可能看不清印花效果。软件应支持在导出前先筛选出这类组合,帮助用户决定是否跳过、替换印花或调整参数。
该功能是筛选和提示能力,不应自动修改素材,不应直接替用户删除队列项。
### 16.2 分析范围
衣服颜色分析不应使用整张衣服图,而应使用当前印花将要覆盖的衣服区域。
输入:
```text
garment_path
print_path
TransformState
```
推荐区域:
```text
garment_region = x, y, width, height
```
印花颜色分析应只统计有效像素:
```text
alpha > 20
```
这样可以避免透明 PNG 的透明区域干扰颜色判断。
### 16.3 第一阶段算法
第一阶段推荐使用简单稳定的组合指标:
```text
RGB 颜色距离
亮度差
```
示例判断:
```text
如果 RGB 距离 < 45 且亮度差 < 35
=> 标记为 不明显
```
可见度分级:
```text
正常
偏低
不明显
```
阈值应集中定义,避免散落在 UI 或批量任务代码中。
### 16.4 更准确的后续算法
后续可以在内存中模拟合成但不保存文件:
```text
按 TransformState 缩放、旋转印花
将印花在内存中叠加到衣服目标区域
比较合成前后的目标区域差异
如果差异很小,标记为不明显
```
这种方式比单纯比较主色更准确,因为它考虑透明度、旋转、图案面积和实际覆盖范围。
### 16.5 队列集成
低对比筛选应发生在队列生成后、批量导出前:
```text
生成合成队列
-> 对每个队列项计算可见度评分
-> 标记 正常 / 偏低 / 不明显
-> 用户筛选或跳过低对比项
-> 执行批量导出
```
要求:
- 单个组合分析失败不应中断整个队列。
- 分析失败应记录日志,并在队列项中显示可理解状态。
- 用户应能查看被标记为 `偏低` 或 `不明显` 的组合。
- 用户应能决定是否跳过这些组合。
## 17. 边界情况
必须处理:
@@ -450,6 +542,8 @@ UI 设计稿中存在 `已微调` 状态。
- 文件路径包含中文。
- 宽度或高度输入为 0、负数或非数字。
- 旋转角度超过 360 度。
- 衣服目标区域和印花有效区域颜色接近,导致低对比。
- 印花有效像素过少,无法可靠判断主色。
处理规则:
@@ -457,8 +551,10 @@ UI 设计稿中存在 `已微调` 状态。
- 完全超出画布时可以导出空印花效果,但应提示用户确认或标记风险。
- 非法尺寸输入应阻止提交并提示。
- 角度可以归一化显示。
- 低对比组合应提示或标记,但不自动删除。
- 印花有效像素过少时应标记为无法判断,并记录日志。
## 17. 测试建议
## 18. 测试建议
核心测试:
@@ -471,3 +567,6 @@ UI 设计稿中存在 `已微调` 状态。
- 预览缩放到 50% 或 200% 后,拖动仍能得到正确原图坐标。
- 参数面板输入后预览同步。
- 预览拖动后参数面板同步。
- 白色衣服配浅色印花时能标记为低对比或不明显。
- 深色衣服配深色印花时能标记为低对比或不明显。
- 透明 PNG 的透明区域不参与印花主色判断。