Matlab 块截断编码
我试图在matlab中实现图像的块截断编码(BTC)。为了做到这一点,你必须计算每个4x4像素块的平均值和标准偏差。但是,我需要将平均值存储为可变位数,因为平均值将存储在的位数被传递到计算平均值的函数中。我不知道该怎么做,有人能帮忙吗?一种简单而干净的可变位长度编码方法需要使用。例如如下Matlab 块截断编码,matlab,image-processing,block,Matlab,Image Processing,Block,我试图在matlab中实现图像的块截断编码(BTC)。为了做到这一点,你必须计算每个4x4像素块的平均值和标准偏差。但是,我需要将平均值存储为可变位数,因为平均值将存储在的位数被传递到计算平均值的函数中。我不知道该怎么做,有人能帮忙吗?一种简单而干净的可变位长度编码方法需要使用。例如如下 function o = encode1(val, numBits) o = fi(val, 0, numBits, 0) 如果您非常依赖纯Matlab,那么如果您只想对编码进行基准测试,您可以将它们删除并“
function o = encode1(val, numBits)
o = fi(val, 0, numBits, 0)
如果您非常依赖纯Matlab,那么如果您只想对编码进行基准测试,您可以将它们删除并“模拟”精度损失
function o = encode2(val, numBits)
o = bitand(uint8(val), 256 - 2^(8-numBits));
另一方面,如果您计划实际编码到一个文件中,而不仅仅是模拟编码,那么您需要建立一个非字节对齐的位流。这样做可能有点累。为了便于实现而牺牲效率,您可以使用一组
'0'
和'1'
字符。同样,工具箱在这里也有帮助,例如,提供了功能。您的问题似乎实际上与BTC无关,而只是将输出写入位流。也许您可以重新编写它来删除BTC部分,更改标题,并将重点放在如何准确地存储输出上。例如,比特数是否因块而异,还是仅因图像而异?您只是想测量结果的PSNR或其他质量指标,还是实际写入文件?用什么编码?等等,还有什么你想知道的吗?否则考虑[回答]谢谢!