Como qualquer fotógrafo amador pode dizer, pós-processamento extremo é sempre bom. Uma dessas técnicas é chamada de " falsificação em miniatura ".
O objetivo é fazer com que uma imagem pareça uma fotografia de uma versão em miniatura de brinquedo em si. Isso funciona melhor para fotografias tiradas de um ângulo moderado / alto em relação ao solo, com uma baixa variação na altura do assunto, mas pode ser aplicado com eficácia variável a outras imagens.
O desafio: tire uma fotografia e aplique um algoritmo de falsificação em miniatura. Há muitas maneiras de fazer isso, mas, para os propósitos deste desafio, tudo se resume a:
Desfoque seletivo
Alguma parte da imagem deve ficar embaçada para simular uma profundidade de campo rasa. Isso geralmente é feito ao longo de algum gradiente, linear ou moldado. Escolha o algoritmo de desfoque / gradiente desejado, mas entre 15% a 85% da imagem deve ter desfoque "perceptível".
Impulso de saturação
Aumente a cor para fazer as coisas parecerem pintadas à mão. A saída deve ter um nível de saturação médio de> + 5% quando comparada à entrada. (usando saturação HSV )
Reforço de contraste
Aumente o contraste para simular condições de iluminação mais severas (como a luz interna / de estúdio, em vez de o sol). A saída deve ter um contraste de> + 5% quando comparada à entrada. (usando o algoritmo RMS )
Essas três alterações devem ser implementadas e nenhuma outra melhoria / alteração é permitida. Sem cortes, nitidez, ajustes de balanço de branco, nada.
A entrada é uma imagem e pode ser lida a partir de um arquivo ou memória. Você pode usar bibliotecas externas para ler e gravar a imagem, mas não pode usá-las para processar a imagem. As funções fornecidas também não são permitidas para esse fim (você não pode simplesmente chamar,
Image.blur()
por exemplo)Não há outra entrada. As forças, níveis, etc. do processamento devem ser determinados pelo programa, não por um ser humano.
A saída pode ser exibida ou salva como um arquivo em um formato de imagem padronizado (PNG, BMP, etc).
Tente generalizar. Não deve funcionar apenas em uma imagem, mas é compreensível que não funcione em todas as imagens. Algumas cenas simplesmente não respondem bem a essa técnica, por melhor que seja o algoritmo. Aplique o bom senso aqui, ao responder e votar nas respostas.
O comportamento é indefinido para entradas inválidas e para as imagens impossíveis de satisfazer as especificações. Por exemplo, uma imagem em escala de cinza não pode ser saturada (não há matiz de base), uma imagem em branco puro não pode ter maior contraste etc.
Inclua pelo menos duas imagens de saída na sua resposta:
É necessário gerar uma das imagens nesta pasta da caixa de depósito . Há seis para escolher, mas tentei torná-los todos viáveis em diferentes graus. Você pode ver exemplos de saídas para cada um na
example-outputs
subpasta. Observe que estas são imagens JPG de 10MP completas diretamente da câmera, para que você tenha muitos pixels para trabalhar.O outro pode ser qualquer imagem de sua escolha. Obviamente, tente escolher imagens que possam ser usadas livremente. Além disso, inclua a imagem original ou um link para comparação.
Por exemplo, nesta imagem:
Você pode produzir algo como:
Para referência, o exemplo acima foi processado no GIMP com um desfoque gaussiano de gradiente angular em forma de caixa, saturação +80, contraste +20. (Não sei quais unidades o GIMP usa para elas)
Para obter mais inspiração ou para ter uma idéia melhor do que você está tentando alcançar, consulte este site ou este . Você também pode procurar miniature faking
e tilt shift photography
obter exemplos.
Este é um concurso de popularidade. Eleitores, vote nas entradas que você achar melhor, mantendo-se fiel ao objetivo.
Esclarecimento:
Esclarecendo quais funções são proibidas, não era minha intenção banir funções matemáticas . Minha intenção era proibir as funções de manipulação de imagens . Sim, existem algumas sobreposições, mas coisas como FFT, convoluções, matemática matricial etc. são úteis em muitas outras áreas. Você não deve usar uma função que simplesmente captura uma imagem e desfoca. Se você encontrar uma maneira matemática adequada de criar um desfoque, esse jogo justo.
GeometricTransformation
,DistanceTransform
,ImageAdd
,ColorNegate
,ImageMultiply
,Rasterize
, eImageAdjust
.) Mesmo com a ajuda de tais funções de processamento de imagem de alto nível, o código ocupa 22 k. O código para a interface do usuário ainda é muito pequeno.