例如,我有一个1024 * 768的JPEG图像。我想估计图像的大小,缩小到800 * 600或640 * 480。有没有算法来计算尺寸而不生成缩放图像?
我看了一下Photoshop中的调整大小对话框。它们显示的大小基本上是(宽度像素*高度像素*位/像素),它显示了实际文件大小之间的巨大差距。
我有移动图像浏览器应用程序,允许用户通过电子邮件发送图像,其中包含缩小图像的选项。我们提供复选框供用户选择具有估计大小的缩小分辨率。对于大图像(> 10MB),我们有3个缩小比例尺可供选择。如果我们为每个选项生成缓存图像,可能会损害内存。我们正在努力寻找避免内存消耗的最佳解决方案。
答案 0 :(得分:7)
我已根据DQT(品质因数)成功估算了缩放尺寸。
我进行了一些实验并发现我们是否使用与原始JPEG图像相同的品质因数,缩放图像的尺寸大致等于原始图像尺寸的(比例因子*比例因子)比例。可以基于每个JPEG图像中定义的DQT来估计品质因数。已定义算法以基于JPEG规范附录K中所示的标准量化表来估计品质因数。
虽然其他因素如颜色子采样,不同的压缩算法和图像本身都会导致误差,但估算非常准确。
P.S。通过检查JPEGSnoop及其源代码,它对我有很大帮助: - )
干杯!
答案 1 :(得分:3)
与其他人一样,确定JPEG压缩算法的最佳算法是JPEG压缩算法。
但是,您还可以计算图像的Shannon entropy,以便尝试了解实际存在的信息量。这可能会为您提供有关压缩的理论限制的一些线索,但可能不是解决您问题的最佳解决方案。
这个概念将帮助您衡量全白图像与人群图像之间的信息差异,这与其可压缩性有关。
-Brian J. Stinar -
答案 2 :(得分:2)
为什么要估算一下你能衡量的东西?
实质上,由于不同类型的图像(就其内容而言)将使用JPEG算法进行非常不同的压缩,因此无法提供任何有意义的估计。 (例如,1024x768纯白色图像将远远小于人群场景的照片。)
因此,如果你追求一个准确的数字,那么简单地进行重新调整是有意义的。
或者,您可以根据“平均”图像集提供“40KB到90KB”等范围。
答案 3 :(得分:1)
我认为你想要的是奇怪而难以做到的事情。基于JPG压缩级别,一些图像比较重(大小)的图像更重。
答案 4 :(得分:1)
我对JPEG图像的预感:给定两个相同分辨率的图像,以相同的质量比进行压缩 - 占用较小内存的图像在分辨率降低时会压缩得更多(通常)。
为什么呢?根据经验:多次使用一组图像时,我已经看到如果缩略图占用的内存比大多数其他内存大得多,降低其分辨率的大小(内存)几乎没有变化。另一方面,降低平均尺寸缩略图之一的分辨率会显着减小尺寸。 (所有参数如原始/最终分辨率和JPEG质量在两种情况下都相同)。
粗略地说 - 熵越高,通过改变分辨率(以相同的JPEG质量)对图像大小的影响就越小。
如果您可以通过实验验证这一点,也许您可以将其用作估算大小的快速方法。如果我的语言令人困惑,我可以用一些数学符号/伪造的公式来解释。
答案 5 :(得分:0)
800 * 600图像文件的大小(800 * 600)/(1024 * 768)倍应该是缩小的1024 * 768图像文件的大小。但这实际上是一个粗略的估计,因为图像的原始版本和缩放版本的可压缩性可能不同。
答案 6 :(得分:0)
在我试图回答你的问题之前,我想加入那些认为衡量而不是估算更简单的人群。但这仍然是一个有趣的问题,所以这是我的答案:
查看输入JPEG图像的块DCT系数。也许你可以在缩小图像后找到更高频率组件数量和文件大小之间的某种关系。
我的预感:所有其他事物(例如量化表)相等,原始图像中的频率成分越高,原始图像和缩小图像之间的文件大小差异就越大。
我认为通过缩小图像,你会在插值过程中减少一些较高频率的分量,增加在有损量化步骤中它们被量化为零的可能性。
如果沿着这条路走下去,那你很幸运:我一直在玩JPEG块DCT系数和put some code up来提取它们。