问题
_fit_first_frame 放大用 LANCZOS,把 sprite 的硬边糊成渐变,而这张图是 i2v 的输入。
同一函数、同一张双色硬边图,测成品里那条边的过渡带宽度:64×64 源(11.2× 放大)NEAREST 4px、LANCZOS 20px;128×128 源 4px 对 10px;256×256 源 4px 对 5px。倍率越大越严重,而小 sprite 正是 #509 点名的场景。
交付侧 _fit_to 的 docstring 已经写明这条规则(「序列帧是像素画,必须 NEAREST,插值会把硬边糊成灰边」),首帧这一侧与它不一致。
这条是 #511 引入的:当时按重抠图 IoU 配对实测选了 LANCZOS(+0.0043),但 IoU 量的是剪影恢复、不量清晰度,指标选错了。
范围
- 放大用 NEAREST,缩小仍用 LANCZOS
- 不改 JPEG 质量(那是色数爆炸的主因,但属另一件事)
- 不改出口像素化开关
验收
小 sprite 放大后硬边过渡带 ≤8px;换回 LANCZOS 时用例失败。
问题
_fit_first_frame放大用 LANCZOS,把 sprite 的硬边糊成渐变,而这张图是 i2v 的输入。同一函数、同一张双色硬边图,测成品里那条边的过渡带宽度:64×64 源(11.2× 放大)NEAREST 4px、LANCZOS 20px;128×128 源 4px 对 10px;256×256 源 4px 对 5px。倍率越大越严重,而小 sprite 正是 #509 点名的场景。
交付侧
_fit_to的 docstring 已经写明这条规则(「序列帧是像素画,必须 NEAREST,插值会把硬边糊成灰边」),首帧这一侧与它不一致。这条是 #511 引入的:当时按重抠图 IoU 配对实测选了 LANCZOS(+0.0043),但 IoU 量的是剪影恢复、不量清晰度,指标选错了。
范围
验收
小 sprite 放大后硬边过渡带 ≤8px;换回 LANCZOS 时用例失败。