注 - 可能与软件相关的计算机组织更多,不确定。矩阵如何存储在内存中?
我想了解有关数据压缩的东西,说的JPEG照片。本质上,一个非常密集的矩阵被转换(通过离散余弦变换)为一个更稀疏的矩阵。据说这是存储的这个稀疏矩阵。看一看此链接:
http://en.wikipedia.org/wiki/JPEG
比较原始的8×8子块的图像例如以矩阵“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等图像编码器都声称采用的算法,使图像矩阵密度较低,以节省空间,这是怎么额外空间在我的硬盘实现?
干杯
维基百科文章的最下一节“熵编码”,是关于这一点。您可能需要查看该部分并询问您不了解的内容。 – 2012-02-19 01:54:27
好吧,它实际上将以该之字形模式存储。现在我的问题每个条目还会被使用8位,或者我们可以移动到6位? – JDS 2012-02-19 01:59:19
霍夫曼编码可以处理之字形模式,因为它取决于发生的频率,而不是它们是连续的。 – rasmus 2012-02-19 02:01:36