Artefatos no Upscaling por IA 2025 — Identificação, Diagnóstico e Reprocesso na Prática
Publicado: 22 de set. de 2025 · Tempo de leitura: 4 min · Pela equipe editorial da Unified Image Tools
“Deveria estar mais limpo, mas parece artificial.” Esse estranhamento costuma ser explicado por padrões de artefato repetíveis. Este guia transforma sintomas em diagnóstico e correções replicáveis.
TL;DR
-
Catálogo “sintoma→causa→remédio” reduz tentativas
-
Ordem prática: denoise/recuperação → nitidez moderada → varredura de encode
-
Métricas ajudam, olhos decidem: SSIM/LPIPS/Butteraugli como apoio
-
Banding → deband+dither; pele encerada → proteção de textura/bordas; halos → raio/força menores
-
Entrega sem quebrar LCP/INP: não‑críticos ficam lazy/baixa prioridade
-
Links internos: Entrega de imagens focada em INP 2025 — Proteger a performance percebida com coordenação de decode/priority/scripts, AVIF vs WebP vs JPEG XL em 2025 — Comparação prática e mensurada, Imagens responsivas na era do DPR & uso de image-set 2025
Taxonomia de artefatos e causas
- Halos/anéis (ringing)
- Causa: nitidez excessiva, overshoot de deconvolução, filtros agressivos
- Remédio: reduzir raio/força, low‑pass leve, limitar a bordas
- Aspecto plástico/“pele encerada”
- Causa: denoise excessivo, modelo super‑suavizante
- Remédio: reintroduzir micro‑ruído, proteger textura/bordas, elevar q
- Fringing/sangramento em texto (sub‑pixel)
- Causa: falha sub‑pixel, escala não‑inteira, kernel inadequado
- Remédio: escala inteira, kernel NN/qualidade, vetorizar UI (SVG/Lottie)
- Checkerboard/moiré
- Causa: periodicidade do upsampler, interferência de textura
- Remédio: pre‑blur leve, testar upsamplers, prefiltrar antes de reduzir
- Banding (degradês em degraus)
- Causa: quantização 8‑bit, compressão forte, áreas lisas extensas
- Remédio: debanding+dither, pipeline 10‑bit, AVIF com maior profundidade
- Fringing de cor/bleed de croma
- Causa: subsampling YUV (4:2:0), desalinhamento de espaço de cor
- Remédio: 4:4:4 em bordas críticas, manter sRGB/P3 consistente, evitar conversões inúteis
- Flicker temporal (vídeo)
- Causa: inconsistência entre frames, denoise temporal forte
- Remédio: ajustar filtros temporais, alinhar intervalo de keyframe
Quadro de diagnóstico (o que observar)
- Comece pelos olhos: zoom + comparador (AB)
- Imagem de diferença para localizar mudanças
- Histograma/frequência para excesso/falta de alta frequência
- SSIM/LPIPS/Butteraugli como apoio — não decisão
Fluxo de reprocesso (canônico)
- Normalizar entradas (orientação/ICC/espaço/profundidade)
- Denoise/deconvolução quando necessário
- Nitidez moderada com proteção de bordas (raio/força/limiar)
- Debanding + dither para degradês
- Varredura de encode (AVIF/WebP: q/velocidade/4:2:0 vs 4:4:4)
- Decidir com olhos + métricas + bytes
Trechos de implementação (Sharp/FFmpeg)
import sharp from 'sharp'
export async function enhance(input: string, base: string) {
const s = sharp(input, { failOn: 'none' })
.withMetadata({ orientation: 1 })
.gamma()
.median(1)
await s.webp({ quality: 78 }).toFile(`${base}.webp`)
await s.avif({ quality: 56, chromaSubsampling: '4:4:4' }).toFile(`${base}.avif`)
}
ffmpeg -i input.mp4 -vf "gradfun=radius=16:strength=0.8" -c:v libaom-av1 -crf 28 -b:v 0 -pix_fmt yuv420p10le out-av1.mp4
Dicas operacionais
- Para bitrates baixos, semeie micro‑ruído para evitar o “plástico”
- UI/texto: prefira vetorização (SVG/Lottie)
- HDR/amplo gamut: valide outliers antes do sRGB final; preserve 10‑bit se possível
- Entrega: siga Entrega de imagens focada em INP 2025 — Proteger a performance percebida com coordenação de decode/priority/scripts — só o LCP com alta prioridade
Avaliação de qualidade
- SSIM/PSNR avaliam fidelidade de pixel; podem não captar estranhezas perceptivas
- LPIPS/Butteraugli tendem a alinhar melhor à percepção — ainda assim, apoio
- Mostre ganhos/perdas com AB/diff; evite depender de um único número
- Faça sweep (q/tamanho/subsampling) antes de publicar
Checklist
- [ ] Normalizar entradas (orientação/ICC/espaço/10‑bit)
- [ ] Denoise/recuperação → nitidez com proteção de bordas
- [ ] Debanding + dither quando necessário
- [ ] AVIF/WebP: varrer q e 4:2:0/4:4:4
- [ ] Entrega que preserve LCP/INP (só LCP alta prioridade)
FAQ
-
P: Como reduzir “pele encerada”? R: Suavize o denoise, proteja textura/bordas, aumente q; reduza força em rostos.
-
P: Quanta nitidez? R: Comece pequeno (raio/força/limiar). Evite “crocante”; restrinja a bordas.
-
P: Qual métrica usar? R: SSIM + LPIPS como trilhos; recorra a Butteraugli se necessário. Olhos decidem.
Resumo
Nomeie o artefato, siga o playbook: diagnosticar → reprocesso mínimo → entrega segura. Natural e leve, ao mesmo tempo.