2010-06-21 5 views
6

Quels algorithmes utiliser pour réduire la taille de l'image?Quels algorithmes utiliser pour réduire la taille de l'image?

Qu'est-ce qui est le plus rapide?

Quel algorithme est effectué pour le redimensionnement de l'image (réduction de la taille du gros 600x600 au très petit 6x6 par exemple) par des géants tels que flash et silver player, et html5?

+1

Cela fait beaucoup de questions pour une question. –

+4

Peu importe le choix que vous faites, la réduction des images doit être faite avec soin et compassion. Rappelez-vous: les images ont aussi des familles. –

Répondre

7

La méthode bilinéaire est la plus utilisée et peut être exécutée aussi rapidement que l'algorithme de down-sampling le plus proche voisin, qui est le plus rapide mais le moins précis. Le problème avec une implémentation naïve de l'échantillonnage bilinéaire est que si vous l'utilisez pour réduire une image de plus de la moitié, vous pouvez rencontrer des artefacts d'aliasing similaires à ce que vous rencontreriez avec le plus proche voisin. La solution à cela est d'utiliser une approche basée sur la pyramide. Fondamentalement, si vous voulez réduire 600x600 à 30x30, vous devez d'abord réduire à 300x300, puis 150x150, puis 75x75, puis 38x38, et seulement ensuite utiliser bilinear pour réduire à 30x30. En cas de réduction d'une image de moitié, l'algorithme d'échantillonnage bilinéaire devient beaucoup plus simple. Fondamentalement, pour chaque rangée alternée et d'une colonne de pixels:

y[i/2][j/2] = (x[i][j] + x[i+1][j] + x[i][j+1] + x[i+1][j+1])/4; 
+1

Voulez-vous dire que bilinear devrait être utilisé uniquement sur la dernière étape? – jayarjo

1

Normalement, je voudrais coller à un filtre bilinéaire pour la réduction. Pour redimensionner des images à minuscules tailles, cependant, vous pouvez être hors de la chance. La plupart des icônes sont éditées au pixel à la main pour qu'elles soient à leur meilleur.

Here est une bonne ressource qui explique assez bien les concepts.

1

Il y a un excellent article au The Code Project montrant les effets de divers filtres d'image.

Pour rétrécir une image, je suggère l'algorithme bicubique; ceci a un effet naturel d'aiguisage, de sorte que les détails de l'image sont conservés à des tailles plus petites.

+0

Je reçois une erreur 404 sur cette page. Je suggère bicubique pour la mise à l'échelle, mais je m'en tiens à mon bilinéaire pour la réduction. Dans l'ensemble, cela ne va pas faire une différence majeure. –

+0

@Ben, lien fixe. Je ne suis pas d'accord; bilinéaire a un effet lissant qui élimine les déchirures lors de l'agrandissement, mais a tendance à laver les détails lors de la réduction des effectifs. Quoi qu'il en soit, jetez un oeil à l'article. –

3

Il y a un cas particulier: la réduction des effectifs JPG de plus d'un facteur de 8. Un facteur direct de 8 remise à l'échelle peut être effectuée sur les données de JPG premières, sans le décompresser . Les JPG sont stockés sous la forme de blocs compressés de 8x8 pixels, avec la valeur de pixel moyenne en premier. Par conséquent, il faut généralement plus de temps pour lire le fichier à partir du disque ou du réseau qu'il n'en faut pour le réduire.

Questions connexes