注意 - 可能更与计算机组织相关,而非软件,不确定。
我正在尝试理解与数据压缩有关的内容,比如 JPEG 照片。基本上,一个非常密集的矩阵通过离散余弦变换被转换成一个更加稀疏的矩阵。据说是存储这个稀疏矩阵。请看这个链接:
原始矩阵显然需要8x8(条目数)x 8位/条目,因为值可以随机从0到255变化。所以我认为我们需要64字节的内存来存储它。另一方面,矩阵B,最好的情况是值范围从-26到+5,因此最多一个条目(如-26)需要6位(5位用于形成26,1位用于符号)。那么你就可以存储8x8x6位= 48字节。
我看到的另一个可能性是矩阵按从左上角开始的“之”字形顺序存储。然后我们可以指定起始和结束地址,沿着对角线不断存储直到只剩下零。假设这是一个32位机器;那么2个地址(起始+结束)将构成8个字节;对于其他非零条目,每个6位,我们必须沿着几乎所有顶部对角线前进,以存储28个元素的总和。总体而言,这种方案需要29个字节。
总结一下我的问题:如果JPEG和其他图像编码器声称通过使用算法使图像矩阵更少密集来节省空间,那么这额外的空间如何在我的硬盘上实现?
干杯
我正在尝试理解与数据压缩有关的内容,比如 JPEG 照片。基本上,一个非常密集的矩阵通过离散余弦变换被转换成一个更加稀疏的矩阵。据说是存储这个稀疏矩阵。请看这个链接:
http://en.wikipedia.org/wiki/JPEG
将原始的8x8子块图像示例与矩阵“B”进行比较,该矩阵经过转换具有整体较低的幅度值和更多的零值。矩阵B如何存储,以使其在原始矩阵上节省更多的内存?原始矩阵显然需要8x8(条目数)x 8位/条目,因为值可以随机从0到255变化。所以我认为我们需要64字节的内存来存储它。另一方面,矩阵B,最好的情况是值范围从-26到+5,因此最多一个条目(如-26)需要6位(5位用于形成26,1位用于符号)。那么你就可以存储8x8x6位= 48字节。
我看到的另一个可能性是矩阵按从左上角开始的“之”字形顺序存储。然后我们可以指定起始和结束地址,沿着对角线不断存储直到只剩下零。假设这是一个32位机器;那么2个地址(起始+结束)将构成8个字节;对于其他非零条目,每个6位,我们必须沿着几乎所有顶部对角线前进,以存储28个元素的总和。总体而言,这种方案需要29个字节。
总结一下我的问题:如果JPEG和其他图像编码器声称通过使用算法使图像矩阵更少密集来节省空间,那么这额外的空间如何在我的硬盘上实现?
干杯