加载后图像大小增加

时间:2016-05-24 20:08:44

标签: c++ image-processing

我有一个RGB JPEG图像,重约11 MB,分辨率为7680 x 4320.我使用uchar4数组将其存储在RAM中。 sizeof(uchar4)是4个字节,这是合乎逻辑的。我不难计算出我使用的数组大小为4 x 7680 x 4320 = 132710400字节= [约] 126 MB。那么当图像存储在硬盘驱动器上并且在装入RAM后重达126 MB时,图像的重量仅为11 MB。

1 个答案:

答案 0 :(得分:4)

所以实际上你的问题是为什么当它存储在磁盘上时图像尺寸更小,因为内存中的大小实际上是你所期望的,对吧?

不幸的是,您没有告诉我们使用哪种文件格式来存储图像,但基本上所有常见的图像格式都不会按原样存储像素值。他们首先应用压缩算法。某些格式(如PNG或GIF)使用无损压缩,其他格式(如JPEG)使用有损压缩,这意味着无论何时存储图像,图像质量都会稍差。但是,这些格式允许更好的压缩。

所有压缩算法都取决于图像像素(统计上)彼此不相关的事实。附近的像素通常是相关的。该相关性用于减少数据量。由于不同的图像通常具有不同的相关性,因此即使像素数相同,图像文件的大小也会有所不同。