Pergunta

Estou procurando uma maneira de recriar programaticamente o seguinte efeito:

Dê uma imagem de entrada:
Entrada http://www.shiny.co.il/shooshx/concharv/q_input.png

Eu quero aplicar iterativamente o efeito "AVC".
O primeiro passo se parece com o seguinte:
Etapa 1 http://www.shiny.co.il/shooshx/concharv/q_step1.png

O segundo passo como este:
TEXTO ALT HTTP://www.shiny.co.il/shooshx/concharv/q_step2.png

E assim por diante.

Suponho que isso envolva algum tipo de detecção de borda e, em seguida, rastreie a borda de alguma forma.
Existe um algoritmo conhecido para fazer isso de maneira eficiente e robusta?

Foi útil?

Solução

Basicamente, um algoritmo personalizado seria, de acordo com este tópico:

Pegue o bairro 3x3 em torno de um pixel, limite o canal alfa e veja se algum dos 8 pixels ao redor do pixel tem um valor alfa diferente dele. Nesse caso, pinte um círculo de um dado raio com centro no pixel. Para fazer dentro/fora, module pelo canal alfa limite (nege para fazer o outro lado). Você terá que limiar um bairro maior se o raio do círculo for maior que um pixel (o que provavelmente é).


Isso é implementado usando operações morfológicas em escala de cinza. Essa também é a mesma técnica usada para expandir/contratos. Basicamente, para acariciar o centro de uma seleção (ou um canal alfa), o que se faria é primeiro fazer duas cópias separadas da seleção. A primeira seleção seria expandida pelo raio do derrame, enquanto o segundo seria contratado. A opacidade do AVC seria então obtida subtraindo a segunda seleção desde o primeiro.

Para fazer os traços internos e externos, você contrataria/expandiria o dobro do raio e subtraia as peças que se cruzam com a seleção original.

Deve -se notar que o algoritmo morfológico mais geral requer operações de O (M*n), onde M é o número de pixels da imagem e N é o número de elementos no "elemento estruturação". No entanto, para certos casos especiais, isso pode ser otimizado para operações de O (M) (por exemplo, se o elemento estruturação for um retângulo ou um diamante).

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