Removeu cuidadosamente o fundo da imagem, exportou um PNG transparente, colocou-o sobre um fundo escuro e há um halo branco evidente à volta das bordas do sujeito.

Não é culpa sua e a ferramenta não está partida. É um detalhe técnico chamado canal alfa. Entenda-o e conseguirá resolver por si qualquer problema de “a borda do PNG transparente parece estranha”.

Este artigo explica em 3 minutos:

  • O que o canal alfa guarda realmente nos PNGs transparentes
  • Porque é que aparecem halos brancos / pretos / de cor
  • O que é Edge Feather e como funciona
  • Causa principal e solução para cada um dos 4 artefactos comuns

Primeiro, entenda uma coisa: o que é o canal alfa

PNG suporta transparência através do canal alfa. Um pixel RGB tem 3 canais (vermelho, verde, azul). Adicione um canal alfa (transparência) e tem 4 bytes por pixel:

  • R=255, G=255, B=255, A=255 → branco puro, totalmente opaco
  • R=255, G=255, B=255, A=0 → branco puro, totalmente transparente (este é o fundo)
  • R=255, G=255, B=255, A=128 → branco puro, 50% transparente (semitransparente; vai misturar-se com qualquer fundo sobre o qual esteja)
  • R=240, G=240, B=240, A=255 → cinzento claro, totalmente opaco

Conclusão chave: o canal alfa não é apenas 0 ou 255; pode ser qualquer valor entre 0 e 255. É isto que significam os “píxeis semitransparentes”.

De onde vem o seu halo

Quando o JPEG (e a maioria das saídas de câmaras) guarda uma imagem, aplica anti-aliasing às bordas do sujeito: os píxeis mais externos do sujeito são na verdade “semitransparentes”, parte sujeito e parte fundo. Para um círculo vermelho sobre fundo branco:

  • Píxeis centrais do círculo: R=255, G=0, B=0, A=255 (vermelho totalmente opaco)
  • Píxeis mais externos do círculo: R=200-250, G=0-50, B=0-50, A=80-200 (vermelho semitransparente com um toque da cor de fundo)
  • Píxeis fora do círculo: R=255, G=255, B=255, A=255 (fundo branco)

O anti-aliasing faz o círculo parecer suave sobre branco.

Mas quando só marca como totalmente transparentes os píxeis com alpha=0 (e deixa em paz esses píxeis com A=80 semitransparentes), o que acontece?

  • Píxeis centrais do círculo: o alfa mantém-se em 255 → totalmente preservados
  • Píxeis “vermelho semitransparente” mais externos do círculo: R=200-250 (estes estão perto do branco porque são vermelho + branco misturados), o alfa mantém-se em 80-200 → mantêm-se, mas como o seu RGB está perto do branco, ao colocá-los sobre um fundo escuro parecem um halo branco
  • Píxeis fora do círculo: o alfa passa de 255 a 0 → transparentes

Esse é o seu halo branco. São essencialmente os “píxeis de borda semitransparentes” deixados para trás pelo anti-aliasing, cujo RGB acontece estar perto da cor de fundo, por isso tornam-se visíveis quando remove o fundo.

4 artefactos, 4 causas principais

Artefacto 1: halo branco (fundo claro)

Causa principal: sujeito sobre fundo claro; os píxeis de borda com anti-aliasing têm um RGB próximo da cor de fundo (branco / cinzento claro).

Cenário típico: fotos de produto com fundo branco, retratos com fundo branco, logótipos com fundo branco.

Solução: ou tornar totalmente transparentes esses píxeis semitransparentes ou fazer com que o seu RGB siga a cor sólida do sujeito. A implementação mais simples é Edge Feather: transicionar linearmente o alfa de 255 para 0 na fronteira sujeito/fundo, enquanto puxa o RGB para a cor sólida do sujeito.

A Feather padrão do Piick = 1 px já resolve a maioria dos halos brancos. Se ainda os vir:

  • Suba a Feather para 2-3 px (feathering mais agressivo)
  • Reexporte a partir de uma fonte de maior qualidade (a compressão JPG amplifica a distorção do anti-aliasing)
  • Opção nuclear com ImageMagick: convert input.png -fuzz 5% -transparent white output.png

Artefacto 2: halo preto (fundo escuro)

Causa principal: igual ao halo branco, mas os píxeis de borda com anti-aliasing têm um RGB próximo de um fundo escuro (preto / cinzento escuro / azul escuro).

Cenário típico: fotos de produto tecnológico com fundo preto, retratos com fundo escuro, fotos de sujeito em modo escuro.

Solução: igual ao halo branco; basta mudar -transparent white para -transparent black no comando do ImageMagick.

Artefacto 3: franja de cor (borda do sujeito tingida com a cor de fundo)

Causa principal: o algoritmo marca como totalmente transparentes os píxeis “suficientemente próximos do fundo”, mas os píxeis de borda com anti-aliasing ainda carregam cor de fundo no seu RGB, então ao colocá-los sobre qualquer fundo novo vê-se a cor de fundo original.

Cenário típico: gravações com chroma com keying imperfeito (iluminação desigual, spill verde nas bordas do cabelo); ao remover o verde, o cabelo fica tingido de verde.

Solução: mais difícil do que os halos brancos. É preciso manusear alfa e RGB de forma coordenada. O Feather do Piick a 1-2 px resolve os casos leves; os graves precisam de uma solução de IA na nuvem (a segmentação semântica do remove.bg está treinada especificamente com bordas de cabelo).

Artefacto 4: bordas irregulares (jagged)

Causa principal: PNG é um mapa de bits; as bordas são pixel a pixel. O algoritmo binariza diretamente (0 ou 255) sem meios termos.

Cenário típico: logótipos desenhados em vetorial após remover o fundo, textos tipográficos após remover o fundo.

Solução: ao contrário dos halos brancos: não use Feather. As bordas do logótipo têm de se manter nítidas; Feather=0. Se a irregularidade persistir, a imagem fonte tem resolução demasiado baixa. Dimensione a fonte 2-4× primeiro (com um escalador de IA) e depois remova o fundo.

O que é Edge Feather e como funciona

Com as causas principais claras, o Edge Feather torna-se intuitivo.

Edge Feather é uma distância de suavização (em píxeis) na borda.

  • Feather=0: sem suavização. Cada pixel é 100% sujeito ou 100% fundo. Use para logótipos, marcas, elementos de UI.
  • Feather=1 (padrão): numa transição de 1 pixel, o alfa vai linearmente de 0 para 255 (com o RGB da borda ajustado em conformidade). Suavização quase impercetível, mas os artefactos de anti-aliasing reduzem-se claramente.
  • Feather=2-3: transição de 2-3 píxeis, “banda semitransparente” visível nas bordas do sujeito. Use para fontes com anti-aliasing forte (fotos antigas, fontes de baixa qualidade).
  • Feather=4+: demasiado suave; o sujeito parece “borrado”. Não ultrapasse 4.

Por dentro:

Para os píxeis de borda (onde a máscara passa de 0 para 255), a função featherMask do Piick:

  1. Deteta os píxeis de borda
  2. Para fora da borda (direção fundo) 1-3 píxeis, o alfa sobe linearmente de 0 para 128
  3. Para dentro da borda (direção sujeito) 1-3 píxeis, o alfa desce linearmente de 255 para 128
  4. Cria uma banda de transição suave no meio

É uma implementação unidimensional simples que funciona suficientemente bem. A “Pena” do Photoshop usa convolução de desfoque gaussiano, que tem maior qualidade mas também um custo muito maior: para o processamento por píxeis em lotes, a rampa linear simples do Piick oferece a melhor relação qualidade/desempenho.

Recomendações operativas

Comece com os valores padrão do Piick (Tolerância=30, Feather=1) e depois olhe para o resultado para decidir os ajustes:

O que vêAjuste FeatherAjuste Tolerância
Halo branco/preto (fundo claro)Suba para 2-3-
Bordas do sujeito “suaves”Baixe para 0-
O sujeito está a ser comido-Baixe para 15-20
O fundo não se remove-Suba para 40-50
Madeixas de cabelo em falta-Tente 50-60 + Feather=1
Bordas tingidas com a cor de fundoSuba para 2-3 + mude para a nuvem-

O ponto ideal do Feather é 1-2 px. Abaixo de 1, nenhum efeito visível. Acima de 3, o sujeito parece suave.

FAQ

Subir o Feather ao máximo dá as bordas mais limpas?

Não. Feather=4 faz o sujeito parecer borrado e os halos brancos pioram (a banda transparente alarga-se).

As minhas bordas já são perfeitas, preciso de Feather?

Não. Feather=0 com saída PNG está bem. Mas o Feather padrão de 1 mal afeta a nitidez, por isso pode deixá-lo por padrão.

O JPG tem um canal alfa?

Não. JPG não suporta transparência. Todos os píxeis semitransparentes são compostos sobre o fundo durante a codificação (assumindo branco). É por isso que remover fundos a imagens baseadas em JPG deixa sempre halos brancos: a informação de anti-aliasing já se perdeu.

Solução: remova primeiro o fundo da fonte JPG (saída PNG) e depois converta para JPG com uma cor de fundo específica usando o conversor de formatos.

As imagens vetoriais (SVG, AI, PDF) precisam de Feather?

Não. Os gráficos vetoriais são curvas definidas matematicamente sem “bordas de pixel”. Ao exportar para PNG, o motor de renderização aplica anti-aliasing apropriado, normalmente mais limpo do que a remoção de fundo em mapas de bits.

Há alguma ferramenta que escolha Feather automaticamente?

Algumas ferramentas avançadas (o “Selecionar e mascarar” do Photoshop) ajustam o feather automaticamente consoante o conteúdo da imagem. O Piick V1 usa controlos manuais, mas deixa margem para a V2 ajustar automaticamente consoante as características da imagem.

Resumo de uma linha

Halos brancos / pretos / de cor = píxeis semitransparentes com anti-aliasing mal manuseados. Edge Feather é a alavanca chave para resolver isto. 1 px por padrão cobre 90% dos casos. Para fontes de baixa qualidade ou cenas complexas, suba para 2-3 px; se mesmo assim não funcionar, mude para uma solução na nuvem.

Abra piick.cc/tools/background-remover e arraste o cursor Edge Feather de 0 para 4: entenderá imediatamente o que faz.