修复完美像素无法识别自身产物的网格 #169

Merged
kdletters merged 2 commits from opt/pixel_art into master 2026-08-14 20:42:58 +08:00
Owner

边缘 profile 用的是跨度 2 的中心差分,硬块边界落在列 b-1|b 之间时
profile[b-1] 与 profile[b] 逐位相等:两者跨的是同一条边,逐行被加数
相同、求和顺序相同。峰值判定两侧都用严格大于,会把这个 2 宽平台的
两端一起丢掉,于是最干净的输入反而 0 个峰、被判为未识别到网格——
完美像素处理不了自己的输出。

estimate_step_size 左邻比较放宽为 >=,右邻保持严格 >:平台只保留
一个索引,且是右端,正好是左闭右开语义下的真实块边。两侧都放宽则
会把长度 K 的常数段整段判为峰。

walk 与 snap_uniform_cuts 的 argmax 同样改为 >=,取等值段的最后一
个索引。取第一个会让每条切线落在真实边界左边 1px,每个 cell 因此
混进 1/4 的邻块。实测在 266x253 的最近邻放大像素画上,切线命中真实
块边从 2.6% 升到 98.5%,左右镜像、上下翻转、180° 旋转下一致;龙图
内容区内 134/134 全中。

Co-Authored-By: Claude Opus 5 noreply@anthropic.com

边缘 profile 用的是跨度 2 的中心差分,硬块边界落在列 b-1|b 之间时 profile[b-1] 与 profile[b] 逐位相等:两者跨的是同一条边,逐行被加数 相同、求和顺序相同。峰值判定两侧都用严格大于,会把这个 2 宽平台的 两端一起丢掉,于是最干净的输入反而 0 个峰、被判为未识别到网格—— 完美像素处理不了自己的输出。 estimate_step_size 左邻比较放宽为 >=,右邻保持严格 >:平台只保留 一个索引,且是右端,正好是左闭右开语义下的真实块边。两侧都放宽则 会把长度 K 的常数段整段判为峰。 walk 与 snap_uniform_cuts 的 argmax 同样改为 >=,取等值段的最后一 个索引。取第一个会让每条切线落在真实边界左边 1px,每个 cell 因此 混进 1/4 的邻块。实测在 266x253 的最近邻放大像素画上,切线命中真实 块边从 2.6% 升到 98.5%,左右镜像、上下翻转、180° 旋转下一致;龙图 内容区内 134/134 全中。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lhk229 added 1 commit 2026-08-14 20:03:39 +08:00
修复完美像素无法识别自身产物的网格
Project CI / Repository checks (pull_request) Successful in 1m19s
Project CI / Frontend tests (pull_request) Failing after 2m6s
Project CI / Backend tests (pull_request) Successful in 3m44s
Project CI / Native shell tests (pull_request) Successful in 14m29s
5f82cc8b72
边缘 profile 用的是跨度 2 的中心差分,硬块边界落在列 b-1|b 之间时
profile[b-1] 与 profile[b] 逐位相等:两者跨的是同一条边,逐行被加数
相同、求和顺序相同。峰值判定两侧都用严格大于,会把这个 2 宽平台的
两端一起丢掉,于是最干净的输入反而 0 个峰、被判为未识别到网格——
完美像素处理不了自己的输出。

estimate_step_size 左邻比较放宽为 >=,右邻保持严格 >:平台只保留
一个索引,且是右端,正好是左闭右开语义下的真实块边。两侧都放宽则
会把长度 K 的常数段整段判为峰。

walk 与 snap_uniform_cuts 的 argmax 同样改为 >=,取等值段的最后一
个索引。取第一个会让每条切线落在真实边界左边 1px,每个 cell 因此
混进 1/4 的邻块。实测在 266x253 的最近邻放大像素画上,切线命中真实
块边从 2.6% 升到 98.5%,左右镜像、上下翻转、180° 旋转下一致;龙图
内容区内 134/134 全中。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Author
Owner

CI挂是测试竞态问题,不属于本PR引入,顺手修掉

CI挂是测试竞态问题,不属于本PR引入,顺手修掉
lhk229 added 1 commit 2026-08-14 20:20:59 +08:00
修复最近项目打开目录测试竞态
Project CI / Repository checks (pull_request) Successful in 1m24s
Project CI / Frontend tests (pull_request) Successful in 3m13s
Project CI / Backend tests (pull_request) Successful in 4m4s
Project CI / Native shell tests (pull_request) Successful in 14m37s
f5dc6050c4
状态文案是在 await invoke 之后才 setStatus 的,而测试的 waitFor 只等到
invoke 被调用——invoke 在点击处理器里是同步发出的,第一次检查就通过并
立即返回,此时状态写入和随后的渲染都还没发生。断言能否看到文案取决于
RTL 内部恰好冲刷了几个微任务,CI 负载高时就翻车。

改用 findByText 显式等待。1543 那条是同一形态的隐患,一并改掉。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lhk229 marked the pull request as work in progress 2026-08-14 20:32:59 +08:00
lhk229 marked the pull request as ready for review 2026-08-14 20:42:05 +08:00
lhk229 requested review from kdletters 2026-08-14 20:42:12 +08:00
kdletters merged commit 4d3f87cd39 into master 2026-08-14 20:42:58 +08:00
kdletters deleted branch opt/pixel_art 2026-08-14 20:42:58 +08:00
Sign in to join this conversation.