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

Dav*_*man 3 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: {}
Run Code Online (Sandbox Code Playgroud)

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

pai*_*nco 6

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

根据imfinfoMatlab文档

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

压缩比定义为:

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

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

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

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

所以压缩率实际上是184,900/11569或15.98,而不是JPEG的不合理值.