Existe-t-il un avantage en termes de qualité, de taille de fichier ou autre, pour les formats JPEG multiples de 8 ou 16 pixels?

StackOverflow https://stackoverflow.com/questions/74892

Question

Le processus de codage par compression JPEG divise une image donnée en blocs de 8 x 8 pixels, qui sont utilisés avec ces blocs lors de futures compressions avec et sans pertes. [source]

Il est également mentionné que si l'image est un bloc multiple 1MCU (défini comme une unité minimale codée, "généralement de 16 pixels dans les deux sens"), des modifications sans perte d'un fichier JPEG peuvent être effectuées. [source]

Je travaille avec des images de produits et souhaiterais savoir si et combien d'avantages peuvent être tirés de l'utilisation de multiples de 16 dans la taille de mon image finale (par exemple, en utilisant une image de 480px sur 360px) par rapport à un non -multipl de 16 (comme 484x362). Dans cet exemple, je ne suis pas intéressé par d'autres modifications, éditions ou recompressions de l'image finale.

Pour essayer de me rapprocher d'une réponse spécifique pour laquelle je sais qu'il doit exister de nombreuses généralités: une image 480x360 de 64 Ko enregistrée au maximum dans Photoshop [exemple] :

  • Puis-je m'attendre à une perte de qualité d'une image au format 484x362
  • Quelle quantité de taille de fichier puis-je m'attendre (pour cet exemple, l'espace supplémentaire serait constitué de pixels blancs)
  • Existe-t-il d'autres inconvénients à une taille supérieure à celle du réseau 8px?

Je sais que c’est arbitraire d’utiliser cet exemple spécifique, mais il serait toujours utile (pour moi et éventuellement tous les autres qui réfléchissent à une taille d’image) de comprendre le niveau de compromis auquel je ferais face pour casser la grille autre que 8 pixels. .

La question clé ici est de savoir si les images divisibles de 8 pixels sont de meilleure qualité que les images non divisibles par 8 pixels.

Était-ce utile?

La solution

8 pixels est la coupure. La raison en est que les images JPEG sont simplement un tableau de 8x8 blocs DCT; Si la résolution de l'image n'est pas mod8 dans les deux sens, l'encodeur doit régler les côtés jusqu'à la résolution mod8 suivante. En pratique, cela n’est pas très coûteux en bits; ce qui est bien pire sont les cas où une image présente des lignes noires nettes (telles qu'une image en boîte aux lettres) qui ne se trouvent pas sur les limites des blocs. Ceci est particulièrement problématique dans le codage vidéo. La raison en est que la transformation de fréquence d’une ligne est une distribution gaussienne de coefficients, générant un nombre énorme de bits à coder.

Pour ceux qui sont curieux, la méthode la plus courante de remplissage des contours en compression interne (telle que les images JPEG) consiste à reproduire les lignes de pixels avant les contours. Par exemple, si vous devez superposer trois lignes et que la ligne X est le bord, la ligne X + 1 est égale à la ligne X, la ligne X + 2 est égale à la ligne X-1 et la ligne X + 3 est égale à la ligne X- 2 Ceci minimise assez efficacement le coût en coefficients de transformation des lignes supplémentaires.

Toutefois, dans le codage inter, les algorithmes de remplissage dupliquent simplement la dernière ligne car la méthode miroir ne fonctionne pas bien pour la compression inter, comme dans le cas de la compression vidéo.

Autres conseils

Parfois, vous devez utiliser des limites de 16 pixels au lieu de 8 en raison du sous-échantillonnage; chaque deuxième pixel est supprimé pendant le processus de codage, et ces blocs DCT 8x8 ont commencé en tant que 16x16 et seront décodés en 16x16. Ce ne sera pas un problème avec les paramètres de qualité les plus élevés.

Les dimensions de l'image étant des multiples de 8 ou 16, cela n'affectera pas beaucoup la taille sur le disque, mais vous pouvez réaliser des économies considérables si vous pouvez aligner le contenu visuel sur la grille de 8 x 8 pixels, par exemple s'il y a une motif répété ou texture dans l'image.

Un fichier JPG dont la taille est multipliée par 8 peut également être pivoté / inversé sans perte de qualité. Par exemple, gthumb peut le faire sous Linux.

Qu'est-ce que Tometzky , a déclaré. Si vous n'avez pas le bon multiple, les algorithmes de retournement et de rotation sans perte ne fonctionnent pas. En effet, le remplissage à droite / en bas qui peut être ignoré sans risque se retrouve maintenant à gauche / en haut, là où il ne le peut pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top