关于作业的问题,我需要通过离散余弦变换中的阈值处理来实现图像压缩。我已将所需的灰度图像转换为DCT系数矩阵,并通过将系数设置为最大绝对系数的某个比例低于0来设置阈值。
现在我还需要计算压缩后的总位数。假设所有具有值0的系数需要0位来表示,即没有RLE或其他任何开销,根据我的理解,总位数应(非零系数的数量)x (变量的大小),在这种情况下是双倍的(在Matlab中)。
问题是,如果我将阈值设置为最大值的1%。值,我在阈值矩阵中得到36,714个非零值。由于Matlab中的双精度数为64位,所需的位数为64 * 36714 = 2349696位。将其与原始的512x512灰度图像进行比较,该图像需要512 * 512 * 8位= 2097152位。因此我的"压缩"图像实际上比原来的大!
鉴于我只能使用阈值处理,并且没有任何数量的量化,这是否真的是阈值为1%所需的位数?或者有没有办法在Matlab中存储双打而不必使用64位?