Comment estimer la taille de l'image JPEG qui sera mis à l'échelle vers le bas
Par exemple, j'ai un 1024*768 image JPEG. Je veux une estimation de la taille de l'image qui sera réduite à 800*600 ou 640*480. Est-il un algorithme pour calculer la taille sans générer l'image à l'échelle?
J'ai pris un coup d'oeil dans la boîte de dialogue de redimensionnement dans Photoshop. De la taille qu'ils montrent est fondamentalement (largeur en pixels * hauteur de pixels * bits/pixel) qui montre un écart énorme entre la taille réelle du fichier.
J'ai mobile image du navigateur d'application qui permettent à l'utilisateur d'envoyer des images par email avec des options à l'échelle de l'image. Nous fournissons des cases à cocher pour l'utilisateur de choisir en bas de l'échelle de résolution avec l'estimation de la taille. Pour la grande image (> 10 MO), nous avons 3 en bas de l'échelle de la taille à choisir. Si nous générer une image de cache pour chaque option, elle peut nuire à la mémoire. Nous essayons de trouver la meilleure solution permettant d'éviter la consommation de mémoire.
J'ai mobile image du navigateur d'application qui permettent à l'utilisateur d'envoyer des images par email avec des options à l'échelle de l'image. Nous fournissons des cases à cocher pour l'utilisateur de choisir en bas de l'échelle de résolution avec l'estimation de la taille. Pour la grande image (> 10 MO), nous avons 3 en bas de l'échelle de la taille à choisir. Si nous générer une image de cache pour chaque option, elle peut nuire à la mémoire. Nous essayons de trouver la meilleure solution permettant d'éviter la consommation de mémoire.
OriginalL'auteur Vincent | 2010-12-22
Vous devez vous connecter pour publier un commentaire.
J'ai réussi à estimé à l'échelle de taille basée sur la DQT - le facteur de qualité.
J'ai effectué quelques expériences et de savoir si nous utilisons le même facteur de qualité comme dans l'original (JPEG image, l'image à l'échelle va de taille à peu près égale à (facteur d'échelle * le facteur d'échelle) proportion de la taille originale de l'image. Le facteur de qualité peut être une estimation sur la base de la DQT défini dans la chaque image JPEG. L'algorithme doit être défini pour estimer le facteur de qualité basé sur la norme de quantification tableau présenté dans l'Annexe K en JPEG spec.
Bien que d'autres facteurs comme la couleur, l'échantillonnage, les différents algorithmes de compression et l'image elle-même contribuera à l'erreur, l'estimation est très précis.
P. S., Par l'examen de JPEGSnoop et le code source, cela m'aide beaucoup 🙂
Cheers!
OriginalL'auteur Vincent
Comme tout le monde l'a dit, le meilleur algorithme pour déterminer quel type de compression JPEG que vous obtenez est l'algorithme de compression JPEG.
Cependant, vous pouvez aussi calculer le Entropie de Shannon de votre image, afin d'essayer de comprendre combien l'information est effectivement présent. Cela peut vous donner quelques indices sur les limites théoriques de la compression, mais n'est probablement pas la meilleure solution pour votre problème.
Ce concept va vous aider à mesurer les différences de l'information entre une image toute blanche et d'une foule, qui est liée à la compressibilité.
-Brian J. Stinar-
OriginalL'auteur Brian Stinar
Pourquoi estimer ce que vous pouvez mesurer?
En essence, il est impossible de fournir toute estimation significative en raison du fait que les différents types d'images (en termes de contenu) de compresser de manière très différente à l'aide de l'algorithme de compression JPEG. (1024x768 blanc pur de l'image sera beaucoup plus petite qu'une photographie d'une scène de foule par exemple.)
En tant que tel, si vous êtes après un chiffre exact, il serait logique de simplement mener à bien les ré-taille.
Alternativement, vous pouvez simplement fournir une gamme tels que "40KO à 90KB", fondée sur une "moyenne" de l'ensemble d'images.
Stinar Euh... non? (La pensée, qui était sur le point de savoir si un programme peut s'exécuter indéfiniment sans s'écraser ou de summat?)
Est-il un meilleur algorithme pour le calcul de la "moyenne" ensemble?
Le parfait de l'algorithme dans ce cas est la compression JPEG code. 🙂 Vous pouvez tenter d'examiner l'image (variation de couleur, les changements de contraste, etc.) et de faire plus informés deviner en fonction de cela, mais cela pourrait tout à fait peut-être moins efficace que de simplement l'exercice de la re-taille, d'autant plus que vous aurez besoin pour ouvrir l'image d'origine et donc d'utiliser beaucoup de mémoire, etc. de toute façon.
Comment l'iPhone mail contrôleur de prédire la taille de l'image au moment de l'offre différentes à échelle réduite des options (Petit, Moyen, Grand, Original) ?
OriginalL'auteur John Parker
Je pense que ce que vous voulez, c'est quelque chose de bizarre et difficile à faire. Basé sur la compression JPG niveau de certaines images sont plus lourds que d'autres en termes de poids (taille).
OriginalL'auteur crsuarezf
Mon intuition pour les images JPEG: étant Donnés deux images à la même résolution, le comprimé à la même qualité d'image - l'image de plus petites mémoire de compresser plus (en général) quand sa résolution est réduite.
Pourquoi? À partir de l'expérience: beaucoup de temps lorsque vous travaillez avec un ensemble d'images, j'ai vu que si une vignette occupe beaucoup plus de mémoire que la plupart des autres, la réduction de sa résolution n'a presque pas de changement dans la taille (de mémoire). D'autre part, de réduire la résolution de celui de la moyenne de la taille des vignettes réduit la taille de façon significative. (tous les paramètres tels que l'origine et la résolution finale et la qualité de JPEG être la même dans les deux cas).
Grosso modo - l'accroissement de l'entropie, moins sera l'impact sur la taille de l'image en changeant la résolution (à la même qualité JPEG).
Si vous pouvez le vérifier avec des expériences, peut-être que vous pouvez l'utiliser comme une méthode rapide pour estimer la taille. Si mon langage est source de confusion, je peux l'expliquer avec une certaine notation mathématique/pseudo formule.
Il pourrait être trop tard une réponse à être utile pour vous, mais: je ne pense pas qu'il y est toutes les métadonnées sur les fréquences. Aussi, maintenant que je me rends à trouver un pseudo-formule de tourner à plus de confusion que de la plaine explication :).
OriginalL'auteur
De 800*600 fichier image doit être à peu près (800*600)/(1024*768) fois plus grand que le 1024*768 fichier image, il a été réduit. Mais ce n'est qu'une estimation grossière, car la compressibilité de l'original et les versions mises à l'échelle de l'image peut être différente.
OriginalL'auteur Oswald
Avant d'essayer de répondre à votre question, j'aimerais rejoindre les rangs des gens qui pensent qu'il est plus simple de mesurer plutôt que de les estimer. Mais c'est toujours une question intéressante, voici donc ma réponse:
Regarder le bloc de coefficients DCT de l'entrée de l'image JPEG. Peut-être vous pouvez trouver une sorte de relation entre le nombre de la fréquence plus élevée des composants et de la taille du fichier après le rétrécissement de l'image.
Mon intuition: toutes les autres choses (par exemple, la quantification des tables) étant égales par ailleurs, plus la fréquence plus élevée des composants que vous avez dans votre image d'origine, plus la différence de taille entre l'original et rétréci image.
Je pense que par la réduction de l'image, vous permettra de réduire une partie de la fréquence plus élevée des composants lors de l'interpolation, l'augmentation de la possibilité qu'ils seront quantifiées à zéro lors de la perte de quantification de l'étape.
Si vous allez dans cette voie, vous avez de la chance: j'ai été jouer avec le format JPEG, bloc de coefficients DCT et mettre un peu de code jusqu' de les extraire.
Je pense que cela dépend du nombre de composants haute fréquence, mais pas sur la fréquence réelle d'un composant individuel. Il a été un moment depuis que j'ai étudié ce genre de choses, mais le terme je pense que vous voulez lire sur est appelée "fréquence de Nyquist–Shannon théorème de l'échantillonnage". Je pense que c'est en primaire, un problème d'échantillonnage, si vous avez besoin de beaucoup de composants haute fréquence, vous aurez plus d'informations. Consultez wikipedia "de Nyquist–Shannon théorème de l'échantillonnage" et laissez-moi savoir si je suis totalement faux.
Il existe deux types de fréquences pour penser ici. La première est la fréquence des termes dans la séquence, dans un codage entropique sens (Vincent). La deuxième est DCT domaine de fréquence (DC = plaine image, fréquence plus élevée = plus de détails). Les deux sont pertinentes en JPEG, mais ma réponse était destinée à l'examen de la DCT domaine des fréquences de chaque bloc codé. Comme Brian Stinar souligne à juste titre, de nombreux composants haute fréquence dans une image de données d'image. Plus vous en avez, plus vous avez à perdre. La tâche est d'estimer combien vous perdre pendant le redimensionnement.
OriginalL'auteur mpenkov