Mosaico de Imagens

Para inicializarmos o processo de criação do mosaico, devemos primeiro ter em mãos uma base de dados de imagens, que servirão como peças para o mosaico.

Trecho de codigo —

Em seguida criamos uma matriz booleana de mesmo tamanho da imagem original. Utilizando essa matriz, gerenciamos os pixels que já foram preenchidos.

Vale lembrar que optamos por permitir sobreposição de imagens, visto que que os resultados obtidos foram melhores e o desempenho do algoritmo foi superior.

Após os passos acima, usaremos o conceito de programação dinâmica para calcularmos as areas da imagem original em tempo constante.

A soma de um pixel é dada por:

  • Valor do pixel
  • Valor dos pixels vizinhos
  • Subtração da intersecção entre os pixels vizinhosu
Qquadrados verdes: AREAS VIZINHAS — Quadrado azul: INTERSECÇÃO

Com as estruturas inicializadas, podemos agora percorrer os pixels da imagem original e encontrar imagens adequadas no banco de imagens.

Realizamos essa comparação utilizando as bibliotecas sRGBColor e Labcolor e utilizamos sempre a imagem com menor diferença RGB.

Apos a escolha da melhor imagem, marcamos todos os pixels da imagem que serão sobrepostos como já visitados.

Fazemos isso sucessivamente até o fim da imagem.

EXEMPLOS:

Imagem original
Imagens a 1/10 do tamanho original
Imagens a 1/100 do tamanho original

Link para exemplos, código e banco de imagens.