Pergunta

Eu preciso colocar um alfa misturado fronteira gradiente em torno de uma imagem. Meu problema é na mistura dos cantos, de forma que são lisas onde os gradientes horizontais e verticais se encontram. Eu acredito que há um algoritmo padrão que resolve este problema. Acho que até encontrou-o na escola há muitos anos. Mas eu tenho sido mal sucedido em encontrar qualquer referência a um em várias pesquisas na web.

(Eu tenho implementado um padrão de preenchimento radial no canto, mas a transição ainda não é bom o suficiente.)

Minhas perguntas :

  1. Se houver um algoritmo padrão para este problema, que é o nome do -lo, e ainda melhor, como é implementado?

  2. Renunciando qualquer algoritmo padrão, qual é a melhor maneira de determinar o pixel desejado valor para produzir um gradiente suave nas esquinas? (Adicione um suave de transição a partir da vertical gradiente com a horizontal gradiente.)

Editar : Então imagine eu tenho uma imagem que eu irá inserir no topo de uma imagem maior. A imagem maior é sólido negro e a imagem é menor sólido branco. Antes que eu inseri-lo, eu quero misturar a imagem menor para o maior um, definindo o valor alfa na imagem menor para criar uma "fronteira" transparente em torno dele para que ele "desaparece" na imagem maior. Feito corretamente, eu deveria ter um degradê suave do preto ao branco, e eu faço em todos os lugares, exceto os cantos e a borda interna.

Na borda da fronteira gradiente perto do centro da imagem, o valor seria 255 (não transparente). À medida que a fronteira se aproxima da borda exterior, o valor alfa tende a 0. Nos cantos da imagem onde os vert & horiz fronteiras se encontram, você acabar com o que equivale a uma linha diagonal. Quero eliminar essa linha e ter uma transição suave.

O que eu preciso é um algoritmo que determina o valor alfa (0 - 255). Para cada pixel que se sobrepõe no canto de uma imagem como o encontro horizontal e bordas verticais

Foi útil?

Solução

Provavelmente, você está multiplicando os dois gradientes onde eles se sobrepõem, certo?

Não sei sobre um algoritmo padrão. Mas se você usar um gradiente em forma signoid em vez de um linear, que deve eliminar a borda visível, onde os dois se sobrepõem.

Uma função sigmóide simples é smoothstep (t) = t t (3 - 2 * t), onde 0 <= t <= 1

Outras dicas

Se você não precisa dele para ser redimensionável, então você pode apenas usar um mapa alfa simples.

No entanto, uma vez eu utilizado um fade Gaussian simples, com a média no local onde eu queria que fosse os últimos pixels totalmente opacos para ser. Se isso faz sentido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top