-1

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

4

1 回答 1

0

一种简单而干净的可变位长度编码方法需要使用定点工具箱。例如如下

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'字符。同样,工具箱在这里可以提供帮助,例如通信系统工具箱提供了该de2bi功能。

于 2013-11-08T22:57:37.737 回答