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