2015-09-01 1 views
0

Comment détecter les bords lisses dus à la propriété anti-alias d'une image. J'ai un nombre n d'images PNG avec des bords lisses, je veux supprimer et le remplacer par l'arrière-plan.
J'essaie de les supprimer avec un script.Suppression de l'effet anti-alias des images

+0

Pouvez-vous donner un exemple de l'image et peut-être l'image que vous voulez que cela finisse? De plus, voulez-vous que cela soit fait en code (par exemple php ou C#) ou juste une fois (par exemple dans photoshop ou gimp)? – realbart

+0

Pouvez-vous expliquer un peu mieux? –

+0

@realbart: je veux résoudre ce problème avec C#. et j'ai besoin d'un algorithme qui va détecter les bords lisses de l'image et les remplacer par l'arrière-plan. –

Répondre

1

Ceci est un problème non trivial. Il est étroitement lié à la natte.
Fondamentalement, pour chaque pixel de limite d'anticrénelage, vous devez régler le matting equation: I = a F + (1-a) B où la valeur de pixel I est une combinaison convexe (un et (1- a)) de la couleur de premier plan F et la couleur de fond B. De l'image vous ne connaissez que I et vous devez calculer un.

Regardez dans les algorithmes de matage.
Il existe des centaines d'articles sur le sujet. Voici, mais un petit échantillon de premiers résultats de la recherche:

+0

pouvez-vous me fournir un lien pertinent pour l'algorithme de matage –

+0

Merci pour le partage. Mais j'ai un seul fond et il m'est facile de détecter les pixels de premier plan mais je n'ai besoin que des pixels de premier plan dus à l'anti-alias –

+0

Si vous n'avez que 2 couleurs pour FG et BG, alors vous connaissez * I *, * F * et * B * et peut facilement résoudre pour alpha ('alpha = (I-B)/(F-B)'). –