2010-10-28 16 views
4

Dites donc que j'ai une image que je veux "pixelliser". Je veux cette image nette représentée par une grille de, disons, 100 x 100 carrés. Donc, si la photo originale est de 500 px x 500 px, chaque carré est de 5 px x 5 px. Donc, chaque carré aurait une couleur correspondant au groupe de pixels de 5 px X 5 px dans lequel il s'intercale ...Aide à la théorie derrière un algorithme pixelate?

Comment puis-je savoir quelle est cette couleur, qui est la meilleure représentative de ce qu'elle recouvre? ? Est-ce que je prends juste les nombres R G et B pour chacun des 25 pixels et les moyennes? Ou y a-t-il une autre manière obscure que je devrais connaître? Qu'est-ce qui est classiquement utilisé dans les fonctions de "pixellisation", disons comme dans Photoshop?

Répondre

10

Si vous voulez savoir sur la « théorie » de pixellisation, lire sur rééchantillonnage (et sous-échantillonnage en particulier). Les algorithmes de pixellisation consistent simplement à sous-échantillonner une image (en utilisant une méthode de sous-échantillonnage), puis à la sur-échantillonner en utilisant nearest-neighbour interpolation. Notez que dans le code, ces deux étapes peuvent être fusionnées en une seule.

Pour le sous-échantillonnage en général, à sous-échantillonner un facteur de n l'image est d'abord filtré par un filtre passe-bas approprié, puis un échantillon sur chaque n est prise. Un filtre "idéal" à utiliser est le sinc filter, mais en raison de problèmes d'implémentation, le Lanczos filter est souvent utilisé comme une alternative proche.

Cependant, pour presque tous les buts lors de la pixellisation, l'utilisation d'un simple box blur devrait fonctionner correctement, et est très simple à implémenter. C'est juste une moyenne de pixels proches.

Si vous n'avez pas besoin de changer la taille de sortie de l'image, cela signifie que vous diviser l'image en blocs (les grands pixels résultants) qui sont k × k pixels, puis remplacer tous les pixels dans chaque bloc avec la valeur moyenne des pixels dans ce bloc.

1

Lorsque les grilles source et cible sont divisées et alignées de façon aussi uniforme, la plupart des algorithmes donnent des résultats similaires. si les grilles sont fixes, optez pour des moyennes simples.

Dans d'autres cas, en particulier lors d'un redimensionnement de faible pourcentage, la différence de qualité est évidente. l'amélioration la plus simple par rapport à la moyenne simple pondère chaque valeur de pixel en considérant la quantité contenue dans la zone du pixel cible.

pour plus d'algorithmes, consultez multivariate interpolation