【问题标题】:Image Compression using imfinfo function in Matlab在 Matlab 中使用 imfinfo 函数进行图像压缩
【发布时间】:2014-09-11 12:47:22
【问题描述】:

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

temp = imfinfo('flowers.jpg'); 压缩比 = (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?

【问题讨论】:

    标签: matlab image-compression


    【解决方案1】:

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

    根据Matlab documentation for imfinfo

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

    压缩比定义为:

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

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

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

    压缩后的图片大小为11569字节。

    所以压缩比其实是184,900/11569或者15.98,对于JPEG来说并不是一个不合理的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2018-09-27
      • 1970-01-01
      • 1970-01-01
      • 2014-01-07
      • 1970-01-01
      相关资源
      最近更新 更多