Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 块截断编码_Matlab_Image Processing_Block - Fatal编程技术网

Matlab 块截断编码

Matlab 块截断编码,matlab,image-processing,block,Matlab,Image Processing,Block,我试图在matlab中实现图像的块截断编码(BTC)。为了做到这一点,你必须计算每个4x4像素块的平均值和标准偏差。但是,我需要将平均值存储为可变位数,因为平均值将存储在的位数被传递到计算平均值的函数中。我不知道该怎么做,有人能帮忙吗?一种简单而干净的可变位长度编码方法需要使用。例如如下 function o = encode1(val, numBits) o = fi(val, 0, numBits, 0) 如果您非常依赖纯Matlab,那么如果您只想对编码进行基准测试,您可以将它们删除并“

我试图在matlab中实现图像的块截断编码(BTC)。为了做到这一点,你必须计算每个4x4像素块的平均值和标准偏差。但是,我需要将平均值存储为可变位数,因为平均值将存储在的位数被传递到计算平均值的函数中。我不知道该怎么做,有人能帮忙吗?

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

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或其他质量指标,还是实际写入文件?用什么编码?等等,还有什么你想知道的吗?否则考虑[回答]谢谢!