Rastreamento de imagem - Image tracing

Na computação gráfica , o rastreamento de imagem , conversão raster-para-vetor ou vetorização é a conversão de raster em gráficos vetoriais .

Fundo

Esta imagem ilustra a diferença entre imagens bitmap e vetoriais. A imagem bitmap é composta por um conjunto fixo de pixels, enquanto a imagem vetorial é composta por um conjunto fixo de formas. Na imagem, o dimensionamento do bitmap revela os pixels, enquanto o dimensionamento da imagem vetorial preserva as formas.

Uma imagem não tem estrutura: é apenas uma coleção de marcas no papel, grãos no filme ou pixels em um bitmap . Embora essa imagem seja útil, ela tem alguns limites. Se a imagem for ampliada o suficiente, seus artefatos serão exibidos. Os pontos de meio-tom, grãos de filme e pixels tornam-se aparentes. As imagens de bordas nítidas tornam-se confusas ou irregulares. Veja, por exemplo, pixelização . Idealmente, uma imagem vetorial não apresenta o mesmo problema. Bordas e áreas preenchidas são representadas como curvas matemáticas ou gradientes, e podem ser ampliadas arbitrariamente (embora, claro, a imagem final também deva ser rasterizada para ser renderizada, e sua qualidade depende da qualidade do algoritmo de rasterização para as entradas fornecidas) .

A tarefa na vetorização é converter uma imagem bidimensional em uma representação vetorial bidimensional da imagem. Não é examinar a imagem e tentar reconhecer ou extrair um modelo tridimensional que possa ser representado; ou seja, não é um sistema de visão . Para a maioria das aplicações, a vetorização também não envolve o reconhecimento óptico de caracteres ; os caracteres são tratados como linhas, curvas ou objetos preenchidos sem atribuir qualquer significado a eles. Na vetorização, a forma do personagem é preservada, então os enfeites artísticos permanecem.

A vetorização é a operação inversa que corresponde à rasterização , assim como a integração é a diferenciação . E, assim como com essas outras duas operações, embora a rasterização seja bastante direta e algorítmica, a vetorização envolve a reconstrução da informação perdida e, portanto, requer métodos heurísticos .

Imagens sintéticas como mapas, desenhos animados, logotipos, clipart e desenhos técnicos são adequados para vetorização. Essas imagens poderiam ter sido originalmente feitas como imagens vetoriais porque são baseadas em formas geométricas ou desenhadas com curvas simples.

Fotografias em tons contínuos (como retratos ao vivo) não são boas candidatas para vetorização.

A entrada para a vetorização é uma imagem, mas uma imagem pode vir em várias formas, como uma fotografia, um desenho no papel ou um dos vários formatos de arquivo raster . Os programas que fazem conversão de raster para vetor podem aceitar formatos de bitmap como TIFF , BMP e PNG .

A saída é um formato de arquivo vetorial . Os formatos de vetor comuns são SVG , DXF , EPS , EMF e AI .

A vetorização pode ser usada para atualizar imagens ou recuperar trabalhos. Os computadores pessoais geralmente vêm com um programa de pintura simples que produz um arquivo de saída de bitmap. Esses programas permitem que os usuários façam ilustrações simples adicionando texto, desenhando contornos e preenchendo os contornos com uma cor específica. Apenas os resultados dessas operações (os pixels) são salvos no bitmap resultante; as operações de extração e enchimento são descartadas. A vetorização pode ser usada para recapturar algumas das informações que foram perdidas.

A vetorização também é usada para recuperar informações que estavam originalmente em formato vetorial, mas foram perdidas ou indisponíveis. Uma empresa pode ter encomendado um logotipo a uma empresa de artes gráficas. Embora a empresa gráfica use um formato vetorial, a empresa cliente pode não ter recebido uma cópia desse formato. A empresa pode então adquirir um formato vetorial digitalizando e vetorizando uma cópia em papel do logotipo.

Processar

Arquivo PNG original (37 kB)
Mão convertido para SVG (9 kB)

A vetorização começa com uma imagem.

Manual

A imagem pode ser vetorizada manualmente. Uma pessoa pode olhar a imagem, fazer algumas medições e, em seguida, escrever o arquivo de saída manualmente. Foi o caso da vetorização de uma ilustração técnica sobre neutrinos. A ilustração tem algumas formas geométricas e muito texto; foi relativamente fácil converter as formas e o formato vetorial SVG permite que o texto (mesmo subscritos e sobrescritos) seja inserido facilmente.

A imagem original não tinha curvas (exceto para o texto), então a conversão é direta. As curvas tornam a conversão mais complicada. A vetorização manual de formas complicadas pode ser facilitada pela função de rastreamento incorporada em alguns programas de edição de gráficos vetoriais .

Se a imagem ainda não estiver em um formato legível por máquina, ela deverá ser digitalizada para um formato de arquivo utilizável.

Quando houver um bitmap legível por máquina, a imagem pode ser importada para um programa de edição de gráficos (como Adobe Illustrator , CorelDRAW ou Inkscape ). Em seguida, uma pessoa pode rastrear manualmente os elementos da imagem usando os recursos de edição do programa. As curvas na imagem original podem ser aproximadas com linhas, arcos e curvas de Bézier. Um programa de ilustração permite que os nós spline sejam ajustados para um ajuste perfeito. A vetorização manual é possível, mas pode ser entediante.

Embora os programas de desenho gráfico já existam há muito tempo, os artistas podem achar que os recursos de desenho à mão livre são estranhos, mesmo quando uma mesa digitalizadora é usada. Em vez de usar um programa, Pepper recomenda fazer um esboço inicial no papel. Em vez de digitalizar o esboço e traçá-lo à mão livre no computador, Pepper afirma: "Aqueles que têm experiência com uma mesa digitalizadora e caneta podem fazer as seguintes alterações diretamente no CorelDRAW usando a digitalização do esboço como uma base e desenhando sobre ele. usar caneta e tinta, e uma mesa de luz "; a maior parte da imagem final foi traçada à mão com tinta. Mais tarde, a imagem do desenho de linha foi digitalizada a 600 dpi, limpa em um programa de pintura e, em seguida, traçada automaticamente com um programa. Uma vez que a imagem em preto e branco estava no programa gráfico, alguns outros elementos foram adicionados e a figura foi colorida.

Da mesma forma, Ploch recriou um design de uma fotografia digital. O JPEG foi importado e algumas "formas básicas" foram traçadas à mão e coloridas no programa de desenho gráfico; formas mais complexas eram tratadas de maneira diferente. Ploch usou um editor de bitmap para remover o fundo e cortar os componentes de imagem mais complexos. Ele então imprimiu a imagem e traçou-a à mão em papel vegetal para obter um desenho em preto e branco limpo. Esse desenho foi digitalizado e, em seguida, vetorizado com um programa.

Automático

Existem programas que automatizam o processo de vetorização. Programas de exemplo são Adobe Streamline (descontinuado), Corel's PowerTRACE e Potrace . Alguns desses programas possuem uma interface de linha de comando, enquanto outros são interativos que permitem ao usuário ajustar as configurações de conversão e visualizar o resultado. Adobe Streamline não é apenas um programa interativo, mas também permite que um usuário edite manualmente o bitmap de entrada e as curvas de saída. O PowerTRACE da Corel é acessado por meio do CorelDRAW; CorelDRAW pode ser usado para modificar o bitmap de entrada e editar as curvas de saída. O Adobe Illustrator tem um recurso para traçar curvas individuais.

Os programas automatizados podem ter resultados mistos. Um programa (PowerTRACE) foi usado para converter um mapa PNG para SVG. O programa fez um bom trabalho nos limites do mapa (a tarefa mais tediosa no rastreamento) e as configurações eliminaram todo o texto (pequenos objetos). O texto foi reinserido manualmente.

Mapa em formato PNG (13 kB)
Mapeie após a conversão automática e retocar para adicionar novamente os rótulos e ajustar as cores. (18 kB)

Outras conversões podem não funcionar tão bem. Os resultados dependem de varreduras de alta qualidade, configurações razoáveis ​​e bons algoritmos.

As imagens digitalizadas geralmente apresentam muito ruído. A imagem bitmap pode precisar de muito trabalho para ser limpa. Apague marcas perdidas e preencha linhas e áreas.

Conselho da Corel: coloque a imagem em uma mesa de luz, cubra com pergaminho ( papel vegetal ) e, em seguida, pinte manualmente os contornos desejados. Em seguida, escaneie o velino e use o programa de conversão automática de varredura em vetor nessa varredura.

Opções

Embora essas linhas possam parecer sólidas, estão longe de ser perfeitas. As linhas foram desenhadas em pergaminho com caneta-tinteiro, caneta gel de 0,7 mm e lápis HB 0,5 mm. As imagens foram escaneadas a 600 pixels por polegada com RGB de 24 bits. As larguras das linhas acabam tendo de 10 a 14 pixels de largura. As cores da tinta não são uniformes e possuem reflexos especulares que colocam pixels claros dentro das linhas. As linhas de lápis também apresentam defeitos internos devido à aspereza (dente) do papel. A varredura também possui alguns artefatos de mascaramento não-afiados .

Existem muitos estilos e possibilidades de imagem diferentes, e nenhum método de vetorização funciona bem em todas as imagens. Consequentemente, os programas de vetorização têm muitas opções que influenciam o resultado.

Um problema é quais são as formas predominantes. Se a imagem for de um formulário de preenchimento, provavelmente terá apenas linhas verticais e horizontais de largura constante. A vetorização do programa deve levar isso em consideração. Por outro lado, um desenho CAD pode ter linhas em qualquer ângulo, pode haver linhas curvas e pode haver várias espessuras de linha (grossas para objetos e finas para linhas de dimensão). Em vez de (ou além de) curvas, a imagem pode conter contornos preenchidos com a mesma cor. O Adobe Streamline permite que os usuários selecionem uma combinação de reconhecimento de linha (linhas horizontais e verticais), reconhecimento de linha de centro ou reconhecimento de contorno. O Streamline também permite que formas de contorno pequenas sejam projetadas; a noção é que essas formas pequenas são ruído. O usuário pode definir o nível de ruído entre 0 e 1000; um contorno com menos pixels do que essa configuração é descartado.

Outro problema é o número de cores da imagem. Mesmo imagens que foram criadas como desenhos em preto sobre branco podem acabar com muitos tons de cinza. Algumas rotinas de desenho de linha empregam suavização de serrilhado; um pixel completamente coberto pela linha ficará preto, mas um pixel que está apenas parcialmente coberto será cinza. Se a imagem original estiver no papel e for digitalizada, o resultado será semelhante: os pixels da borda ficarão cinza. Às vezes, as imagens são compactadas (por exemplo, imagens JPEG) e a compactação apresenta níveis de cinza.

Muitos dos programas de vetorização agruparão pixels da mesma cor em linhas, curvas ou formas contornadas. Se cada cor possível for agrupada em seu próprio objeto, pode haver um número enorme de objetos. Em vez disso, o usuário é solicitado a selecionar um número finito de cores (geralmente menos de 256), a imagem é reduzida a usar essa quantidade de cores (esta etapa é a quantização de cores ) e, em seguida, a vetorização é feita na imagem reduzida. Para imagens em tons contínuos, como fotografias, o resultado da quantização de cores é a posterização . Preenchimentos de gradiente também serão posterizados.

A redução do número de cores em uma imagem geralmente é auxiliada por um histograma. As cores mais comuns podem ser selecionadas como representantes e outras cores são mapeadas para seu representante mais próximo. Quando o número de cores é definido como dois, o usuário pode ser solicitado a fazer a configuração de limite e contraste. Uma configuração de contraste procura mudanças significativas na cor do pixel, em vez de uma cor específica; conseqüentemente, ele pode ignorar as variações graduais de cor em um preenchimento de gradiente . Uma vez que o contorno foi extraído, o usuário pode reintroduzir manualmente o preenchimento gradiente.

O programa de vetorização desejará agrupar uma região da mesma cor em um único objeto. Ele pode fazer isso claramente, fazendo com que o limite da região siga exatamente os limites do pixel, mas o resultado será um limite de linhas ortogonais geralmente curtas. A conversão resultante também terá os mesmos problemas de pixelização que um bitmap tem quando é ampliado. Em vez disso, o programa de vetorização precisa aproximar o limite da região com linhas e curvas que seguem de perto os limites do pixel, mas não são exatamente os limites do pixel. Um parâmetro de tolerância informa ao programa o quão próximo ele deve seguir os limites dos pixels.

O resultado final de muitos programas de vetorização são curvas que consistem em curvas de Bézier cúbicas . Um limite de região é aproximado com vários segmentos de curva. Para manter uma curva suave, as juntas de duas curvas são restringidas para que as tangentes correspondam. Um problema é determinar onde uma curva se curva tão acentuadamente que não deveria ser suave. As partes suaves de uma curva são então aproximadas com um procedimento de ajuste de curva de Bézier. Podem ser usadas divisões sucessivas. Esse procedimento de ajuste tenta ajustar a curva com uma única curva cúbica; se o ajuste for aceitável, o procedimento será interrompido. Caso contrário, ele seleciona algum ponto vantajoso ao longo da curva e divide a curva em duas partes. Em seguida, ele se encaixa nas peças, mantendo a tangente da junta. Se o ajuste ainda for inaceitável, ele divide a curva em mais partes.

Alguns vetorizadores são programas independentes, mas muitos têm interfaces interativas que permitem ao usuário ajustar os parâmetros do programa e ver rapidamente o resultado. O PowerTRACE, por exemplo, pode exibir a imagem original e visualizar a imagem convertida para que o usuário possa compará-los; o programa também relata informações como o número de curvas.

Exemplo

À direita está uma ilustração que mostra o funcionamento da rádula em moluscos. A parte superior é principalmente um diagrama de contorno preenchido com a largura de uma caneta, mas tem um preenchimento gradiente de malha ao longo da parte inferior da casca e ao longo da parte inferior da comida. Ele também tem alguns pincéis artísticos na parte superior esquerda da concha. A parte inferior da ilustração possui quatro espessuras de linha e alguns caracteres pequenos; o preenchimento de cor é simples, exceto por um gradiente nas linhas irregulares.

A imagem de 531 × 879 pixels foi rastreada; 50 cores foram usadas. A maioria (senão todas) as linhas foram perdidas; eles foram transformados em regiões pretas e suas larguras de linha efetivas variam. O contorno preto ao redor da comida azul na parte superior desapareceu. Os preenchimentos de gradiente e manchas escovadas foram perdidos para a quantização / posterização de cores; algumas manchas de escova desapareceram. Algumas letras sobreviveram à vetorização com distorção, mas a maioria das letras foi descartada. Perder as cartas não é um grande problema; a edição pós-conversão deseja excluir a anotação e substituí-la por texto em vez de curvas. Linhas finas cruzando em um ângulo raso formaram regiões preenchidas e os contornos de intersecção da região preenchida ficaram confusos; veja o canto inferior direito. O rastreamento também possui algumas características estranhas. Muitos contornos pretos se tocam, então eles se tornam um objeto grande e complicado, em vez de apenas contornos para regiões específicas. Em vez de apenas fundo, uma região retangular branca separa os dois retângulos contornados. Os objetos rotulados como op , rp e rr não são formas simples em camadas; o resultado desejado teria rr sobreposto por rp que é sobreposto por op .

Domínios de uso

A vetorização é eficaz em dados de entrada não gradientes de uma única cor, como assinaturas.

Imagens de tom contínuo

A vetorização geralmente é inadequada para imagens em tons contínuos, como retratos. O resultado geralmente é ruim. Por exemplo, muitos algoritmos de rastreamento de imagem diferentes foram aplicados a uma imagem JPEG de 25 kB. As imagens vetoriais resultantes são pelo menos dez vezes maiores e podem ter efeitos de posterização pronunciados quando um pequeno número de cores é usado.

Veja também

Referências

  • Adobe (1992), Adobe Streamline User Guide (versão 3 para Windows ed.), Mountain View, CA: Adobe Systems
  • Adobe (agosto de 1998), Adobe Illustrator User Guide (versão 8.0 ed.), Mountain View, CA: Adobe Systems, 90012366
  • Corel (2005), Guia do usuário , CorelDRAW X3 Graphics Suite, Ottawa, ON: Corel Corporation, pp. 213–220
  • Pepper, KN (2005), "Cartooning with CorelDRAW", em Corel (ed.), CorelDRAW Handbook: Insights from the Experts , CorelDRAW X3 Graphics Suite, Corel Corporation, pp. 64–77
  • Ploch, Michael (2005), "Recriando designs vintage em camisetas", em Corel (ed.), CorelDRAW Handbook: Insights from the Experts , CorelDRAW X3 Graphics Suite, Corel Corporation, pp. 12–23
  • Schneider, Philip J. (1990), "An Algorithm for Automatically Fitting Digitized Curves", em Glassner, Andrew S. (ed.), Graphics Gems , Boston, MA: Academic Press, pp. 612-626, ISBN   0-12-059756-X

Leitura adicional

links externos