在Matlab中使用imfinfo函数进行图像压缩

时间:2014-07-21 04:45:18

标签: matlab image-compression

我正在尝试计算给定图像的压缩率。我的matlab代码如下:

temp = imfinfo(' flowers.jpg'); comperssion_ratio =(temp.Width * temp.Height * temp.BitDepth)/ temp.FileSize;

imfinfo显示以下内容:

       FileSize: 11569
         Format: 'jpg'
  FormatVersion: ''
          Width: 430
         Height: 430
       BitDepth: 8
      ColorType: 'grayscale'
FormatSignature: ''
NumberOfSamples: 1
   CodingMethod: 'Huffman'
  CodingProcess: 'Sequential'
        Comment: {}

运行上面的代码给我一个大约120的压缩比,这是巨大的,似乎并不正确。我有什么不对的吗?我查看了麻省理工学院的一份文件,他们发现宽度和高度以及比特深度应除以8然后除以FileSize。为什么除以8?

1 个答案:

答案 0 :(得分:6)

除以因子8是将位转换为字节。

根据Matlab documentation for imfinfo

FileSize参数是压缩文件的大小,以字节为单位。

压缩率定义为:

  

未压缩的图像大小(以字节为单位)/压缩文件大小(以字节为单位)

imfinfo 为您提供像素宽度,高度和每像素位数(位深度)。从那里你可以用比特计算未压缩的大小,然后除以8得到字节。

对于未压缩的图像,您有430 * 430 * 8/8 = 184,900字节。

压缩图像的大小为11569字节。

因此压缩率实际上是184,900 / 11569或15.98,而不是JPEG的不合理值。