diff --git a/docs/02-prd.md b/docs/02-prd.md index 65bc46a..c9e4638 100644 --- a/docs/02-prd.md +++ b/docs/02-prd.md @@ -205,7 +205,23 @@ - 批量结束后显示成功数量和失败数量。 - 失败原因写入日志。 -### 6.10 日志 +### 6.10 低对比组合筛选 + +用户在实际使用中可能遇到衣服颜色和印花颜色接近的问题,导致合成后印花效果不明显。软件应支持在不导出合成图的情况下,先筛选出这类低可见度组合。 + +要求: + +- 支持对衣服和印花组合进行可见度分析。 +- 分析应基于当前模板或当前 `TransformState` 对应的印花覆盖区域。 +- 衣服颜色分析应优先使用印花将要覆盖的衣服区域,而不是整张衣服图。 +- 印花颜色分析应优先使用透明 PNG 中 alpha 有效的像素区域。 +- 系统应将组合标记为 `正常`、`偏低` 或 `不明显`。 +- 用户可以筛选出 `偏低` 和 `不明显` 的组合。 +- 用户可以选择跳过低对比组合,不参与批量导出。 +- 低对比筛选不得修改原始衣服图片和原始印花图片。 +- 低对比筛选不得直接替用户删除队列项,应由用户确认跳过或保留。 + +### 6.11 日志 软件应记录运行日志。 @@ -302,6 +318,7 @@ AutoPrint/ - 可以按单衣服 × 多印花模式批量导出。 - 可以按一一匹配模式批量导出。 - 可以按全组合模式批量导出。 +- 可以筛选出衣服颜色和印花颜色过于接近、合成后效果不明显的组合。 - 批量导出时显示进度,失败项写入日志。 - 打包后的程序可在无 Python 环境的 Windows 电脑上运行。 diff --git a/docs/07-ui-design.md b/docs/07-ui-design.md index 6d1095d..6278b22 100644 --- a/docs/07-ui-design.md +++ b/docs/07-ui-design.md @@ -312,14 +312,9 @@ Shift 锁比例 - `多衣服 × 单印花` - `单衣服 × 多印花` +- `一一匹配` - `全组合(矩阵)` -PRD 还要求支持: - -- 多衣服和多印花一一匹配。 - -实现时需要在 UI 中补充 `一一匹配` 模式,或在后续 UI 版本中调整。 - 队列统计示例: ```text @@ -342,6 +337,7 @@ PRD 还要求支持: - 印花。 - 来源文件夹。 - 参数。 +- 可见度。 - 状态。 - 进度 / 输出文件。 @@ -357,9 +353,18 @@ PRD 还要求支持: - `导出中` - `失败` +可见度状态: + +- `正常` +- `偏低` +- `不明显` + 要求: - 当前选中的队列行需要高亮。 +- 队列应支持按可见度筛选,便于只查看 `偏低` 或 `不明显` 组合。 +- `不明显` 组合应有明确文字标记,不能只依赖颜色。 +- 用户可以选择跳过低对比组合,不参与批量导出。 - 导出中显示进度条。 - 失败行显示具体原因。 - 输出文件列显示最终文件名或错误说明。 @@ -505,7 +510,7 @@ Microsoft YaHei 当前 `ui-v1` 设计稿已经覆盖主要工作流,但有以下待确认点: -- 批量模式缺少 `一一匹配` 明确入口,需要补充。 - 顶部 `AI 穿搭` 和 `导出上架` 页签不属于第一阶段范围,应确认是隐藏、置灰还是保留为未来入口。 - 队列中单项微调和模板重跑规则需要在后续需求或交互文档中进一步明确。 - 批量导出期间是否允许继续调整队列项,需要后续定义。 +- 低对比组合筛选的入口位置需要在后续 UI 版本中明确,例如放在队列头部或筛选菜单中。 diff --git a/docs/08-image-editor-design.md b/docs/08-image-editor-design.md index 6d2921e..32f8e3d 100644 --- a/docs/08-image-editor-design.md +++ b/docs/08-image-editor-design.md @@ -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 的透明区域不参与印花主色判断。