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