2008-10-31 2 views
2

Je cherche un moyen de recréer programme l'effet suivant:Comment produire un effet de coup de Photoshop?

Donner une image d'entrée:
input http://www.shiny.co.il/shooshx/ConeCarv/q_input.png

Je veux appliquer répétitivement l'effet « coup ».
La première étape ressemble à ceci:
step 1 http://www.shiny.co.il/shooshx/ConeCarv/q_step1.png

La deuxième étape comme ceci:
alt text http://www.shiny.co.il/shooshx/ConeCarv/q_step2.png

Et ainsi de suite. Je suppose que cela impliquera une sorte de détection des contours, puis un tracé du bord en quelque sorte.
Existe-t-il un algorithme connu pour le faire de manière efficace et robuste?

Répondre

5

Fondamentalement, un algorithme personnalisé serait, selon this thread:

Prendre le voisinage 3x3 autour d'un pixel, le seuil du canal alpha, puis voir si l'un des 8 pixels autour du pixel a une autre valeur alpha de celui-ci. Si oui, peignez un cercle d'un rayon donné avec le centre au pixel. Pour faire l'intérieur/l'extérieur, moduler par le canal alpha seuillé (annuler pour faire l'autre côté). Vous devrez délimiter un voisinage plus grand si le rayon du cercle est plus grand qu'un pixel (ce qui est probablement le cas).


Ceci est mis en oeuvre en utilisant des opérations morphologiques d'échelle de gris. C'est également la même technique utilisée pour élargir/contracter des sélections. Fondamentalement, pour frapper le centre d'une sélection (ou d'un canal alpha), ce que l'on ferait est de faire d'abord deux copies séparées de la sélection. La première sélection serait agrandie par le rayon du trait, tandis que la seconde serait contractée. L'opacité du trait serait alors obtenue en soustrayant la seconde sélection du premier.

Pour effectuer des tracés à l'intérieur et à l'extérieur, vous devez contracter/développer deux fois le rayon et soustraire les parties qui recoupent la sélection d'origine.

Il est à noter que l'algorithme morphologique le plus général nécessite des opérations O (m * n), où m est le nombre de pixels de l'image et n est le nombre d'éléments dans «l'élément structurant». Cependant, pour certains cas particuliers, ceci peut être optimisé pour des opérations O (m) (par exemple si l'élément structurant est un rectangle ou un diamant).

Questions connexes