我正在尝试计算给定图像的压缩率。我的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?
答案 0 :(得分:6)
除以因子8是将位转换为字节。
根据Matlab documentation for imfinfo
FileSize参数是压缩文件的大小,以字节为单位。
压缩率定义为:
未压缩的图像大小(以字节为单位)/压缩文件大小(以字节为单位)
imfinfo 为您提供像素宽度,高度和每像素位数(位深度)。从那里你可以用比特计算未压缩的大小,然后除以8得到字节。
对于未压缩的图像,您有430 * 430 * 8/8 = 184,900字节。
压缩图像的大小为11569字节。
因此压缩率实际上是184,900 / 11569或15.98,而不是JPEG的不合理值。