Inkscape tutorial: Vetorizar Arte de Píxeis
Tutorial | Vetorizar Arte de Píxeis
Antes de termos acesso a programas de edição de gráficos vetoriais...
Mesmo antes de usarmos telas de computador com resolução de 640x480...
Era comum jogar jogos de video game com píxeis criados especialmente para telas de baixa resolução.
Este tipo de arte nascida nesta época nós chamamos de "Arte em Píxeis".
Inkscape is powered by libdepixelize with the ability to automatically vectorize these "special" Pixel Art images. You can try other types of input images too, but be warned: The result won't be equally good and it is a better idea to use the other tab in Inkscape's Trace Bitmap dialog.
Vamos começar com uma imagem de amostra para mostrar os recursos desse mecanismo rastreador. Abaixo, há um exemplo de uma imagem rasterizada (tirada de uma entrada Liberated Pixel Cup) à esquerda e sua saída vetorizada à direita.
o motor libdepixelize usa o algoritmo Kopf-Lischinski para vetorizar imagens. Este algoritmo usa ideias de várias técnicas da ciência da computação e conceitos matemáticos para produzir um bom resultado em imagens de Arte de Píxeis. Algo a notar é o canal alfa (transparência) que é completamente ignorado pelo algoritmo. O libdepixelize não tem neste momento extensões que suportem totalmente este tipo de imagens, mas todas as imagens de Arte de Píxeis com suporte de canal alfa estão a produzir resultados similares às imagens de referência reconhecidos por Kopf-Lischinski.
A imagem acima tem um canal alfa e o resultado está bom. Mesmo assim, se encontrar uma imagem de Arte de Píxeis com um mau resultado e acredita que o problema é o canal alfa, então contacte o responsável pelo libdepixelize (isto é, submeta um bug na página do projeto) e nós ficaremos contentes por integrar novas funcionalidades e correções. Nós não poderemos melhorar o programa se não soubermos que tipos de imagens dão maus resultados.
A imagem abaixo é uma captura de tela do diálogo de Arte em Píxeis na localização em inglês. Você pode abrir este diálogo usando o menu de arte Caminho⇒Vetorizar Bitmap⇒Arte em Píxeis ou clicar direito em um objeto de imagem e, em seguida, Vetorizar Bitmap.
Este painel tem duas seções: Heurísticas e saída. As Heurísticas destinam-se a utilizações avançadas, mas estas já têm uma configuração padrão para casos gerais que produz bons resultados. Mas não nos preocupemos com esta parte agora. Ficará para mais tarde. Começaremos pela explicação da secção Saída.
O algoritmo Kopf-Lischinski funciona (de um ponto de vista de alto-nível) como um compilador, convertendo os dados ao longo de vários tipos de representação. Em cada passo, o algoritmo tem a oportunidade de explorar operações que esta representação fornece. Algumas destas representações intermédias têm uma representação visual correta (como a saída Voronoi do gráfico da célula reformulada) e algumas não têm (como o gráfico de similaridade). Durante o desenvolvimento do libdepixelize, os utilizadores pediram muitas vezes para adicionar a possibilidade de exportar estes passos intermédios para o libdepixelize e o autor original aceitou este pedido.
A saída padrão deve fornecer o resultado mais suave e provavelmente é o que você deseja. Você já viu a saída padrão nos primeiros exemplos deste tutorial. Se você quiser tentar você mesmo, basta abrir a caixa de diálogo Vetorizar Bitmap, selecione a guiaArte em Píxeis e clique em OK depois de escolher alguma imagem no Inkscape.
Pode-se ver a saída Voronoi abaixo que consiste numa "imagem de píxeis com a forma alterada", onde as células (que anteriormente eram píxeis) foram alteradas quanto à forma para ligar píxeis que fazem parte do mesmo recurso. Nenhuma curva é criada e a imagem continua a ser composta por linhas retas. A diferença pode ser observada quando se amplia a imagem. Os píxeis anteriores não podiam partilhar uma borda com um vizinho na diagonal, mesmo que tenham sido colocados para fazer parte do mesmo recurso. Mas agora (graças à similaridade das cores e às heurísticas que podem ser ajustadas para obter melhores resultados), é possível fazer com que duas células diagonais partilhem uma borda (anteriormente apenas vértices únicos eram partilhados por duas células diagonais).
A saída padrão B-splines fornecerá resultados suaves, porque a saída anterior do Voronoi será convertida em curvas quadráticas de Bézier. No entanto, a conversão não será 1: 1 porque existem mais heurísticas trabalhando para decidir quais curvas serão mescladas em uma quando o algoritmo atingir uma junção T entre as cores visíveis. Uma dica sobre as heurísticas deste estágio: você não pode ajustá-las.
A etapa final do libdepixelize (atualmente não exportável pela interface do Inkscape por ser experimental e incompleto) é "otimizar curvas" para remover o efeito de escada das curvas B-spline. Esta etapa também usa uma técnica de deteção de bordas para prevenir que algumas características sejam suavizadas e uma técnica de triangulação para corrigir a posição dos nós após a otimização. É possível desativar cada uma destas características quando a saída deixar de estar no "estado experimental" no libdepixelize (esperamos que seja brevemente).
A secção das heurísticas na interface permite afinar as heurísticas usadas pelo libdepixelize para decidir o que fazer quando encontra um bloco de píxel 2x2 onde as duas diagonais têm cores similares. "Que ligação devo manter?" é o que o libdepixelize pergunta. Este tenta aplicar todas as heurísticas às diagonais em conflito e mantém a ligação ao vencedor. Se ocorrer um empate, ambas as ligações são eliminadas.
Para analisar o efeito de cada heurística e experimentar vários valores, a melhor saída é a Voronoi. Pode-se ver melhor os efeitos das heurísticas na saída Voronoi e quando estiver bom, pode-se mudar o tipo de saída para o pretendido.
A imagem abaixo tem uma imagem e a saída B-Spline com apenas uma das heurísticas ativadas para cada tentativa. Preste atenção aos círculos púrpuras que destacam as diferenças entre a performance de cada heurística.
Para a primeira tentativa (imagem no topo), apenas foi ativada a heurística curvas. Esta heurística tenta manter ligadas as curvas longas. Pode-se notar que este resultado é semelhante à última imagem, onde é aplicada a heurística de píxeis dispersos. Difere na sua "força" que é mais justa e apenas atribui um valor alto ao voto quando é realmente importante manter estas ligações. O conceito/definição de "justo" aqui é baseado na "intuição humana" na base de dados de píxeis analisados. Outra diferença é que esta heurística não consegue decidir o que fazer quando as ligações agrupam grandes blocos em vez de curvas longas (tal como num tabuleiro de xadrez).
Para a segunda tentativa (a imagem do meio) apenas foi ativada a heurística Ilhas. A única coisa que esta heurística faz é tentar manter a ligação que de outra forma poderia resultar em vários píxeis isolados (ilhas) com um peso de voto constante. Este tipo de situação não é comum como a situação que acontece com as outras heurísticas, mas esta heurística é excelente e ajuda a obter melhores resultados.
Para a terceira tentativa (a imagem do fundo), apenas se ativou a heurística Píxeis Dispersos. Esta heurística tenta manter as curvas ligadas à cor do fundo. Para descobrir qual é a cor do fundo a heurística analisa uma janela com os píxeis à volta das curvas em conflito. Nesta heurística pode-se afinar a "força", assim como a janela de píxeis que analisa. Notar que quando se aumenta a janela de píxeis analisados, a "força" máxima para o seu voto aumentará também e poderá ser melhor ajustar o multiplicador para o seu voto. O autor original do libdepixelize acha que esta heurística é demasiada "gananciosa" e prefere usar o valor "0.25" no multiplicador.
Mesmo que o resultado da heurística curvas e píxeis dispersos dêem resultados similares, você pode querer manter ambos habilitados, porque a heurística curvas pode fornecer uma segurança extra para que as curvas importantes dos píxeis de contorno não sejam descartadas e há casos que apenas podem ser respondidos pela heurística píxeis dispersos.
Dica: Você pode desativar todas as heurísticas, definindo seus valores de multiplicador / peso como zero. Você pode fazer qualquer ato heurístico contra seus princípios usando valores negativos para seus valores multiplicadores / peso. Por que você desejaria substituir o comportamento criado para oferecer melhor qualidade pelo comportamento oposto? Porque você pode ... porque você pode querer um resultado "artístico" ... tanto faz ... você pode.
E é isto! Para este lançamento inicial do libdepixelize, estas são todas as opções disponíveis. Mas se a pesquisa do autor original do libdepixelize e o seu mentor criativo for bem sucedida, poderemos ter no futuro outras opções e outros tipos de imagens adequadas nas quais o libdepixelize pode dar bons resultados. Deseje a eles boa sorte.
Todas as imagens usadas aqui são provenientes de Liberated Pixel Cup para evitar problemas de direitos autorais. Os links são:
Translators: Victor Westmann — 2019
Header / footer design: Esteban Capella — 2019