块截断编码MATLAB

时间:2013-11-08 22:17:31

标签: matlab image-processing block

我正在尝试在matlab中的图像上实现块截断编码(BTC)。为了做BTW,你必须计算每个4x4像素块的平均值和标准差。但是,我需要将均值存储为可变位数,因为将存储平均值的位数传递给计算均值的函数。我不知道如何做这部分,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

对可变比特长度编码采用简单而干净的方法需要使用fixed-point toolbox。例如。如下

function o = encode1(val, numBits)
o = fi(val, 0, numBits, 0)

如果你只想要纯粹的Matlab,你可以and离开它们并“模拟”精度损失,如果你只想对你的编码进行基准测试。

function o = encode2(val, numBits)
o = bitand(uint8(val), 256 - 2^(8-numBits));

另一方面,如果您计划实际编码为文件而不仅仅是模拟编码,则需要建立一个非字节对齐的位流。这可能有点累人。为了便于实施而牺牲效率,您可以使用dec2bin来处理一串'0''1'个字符。同样,工具箱在这里可以提供帮助,例如communication systems toolbox提供了de2bi功能。