均匀标量量化
示例程序调试与运行
均匀标量量化编码器uqimg_enc
以量化索引比特数确定量化等级数,输入值范围[0,255],此时运行参数为:
-i [输入img图像文件路径] -o [输出量化索引文件路径] -b [量化比特数]
例如:
-i ../images/sena.img -o ../images/quantized_img/sena_6bit.quan -b 6
其余情况见程序中usage()函数。
均匀标量量化解码器uqimg_dec
运行参数为:
-i [输入量化索引文件路径] -o [输出img图像文件路径]
例如:
-i ../images/quantized_img/sena_4bit.quan -o ../images/reconstructed_img/sena_4bit_re.img
运行结果
以sena图像为例,不同量化等级下输出结果为:
不同量化等级量化比特数与PSNR性能结果如下:
Bits | Original size | Quantized size | Compress Ratio | PSNR |
---|---|---|---|---|
1 | 64kB | 8.00kB | 12.5% | 18.62 |
2 | 64kB | 16.0kB | 25.0% | 21.51 |
4 | 64kB | 32.0kB | 50.0% | 35.00 |
6 | 64kB | 48.0kB | 75.0% | 46.46 |
矢量量化
示例程序调试与运行
LBG算法程序trvqsp_img
运行参数为:
[输入img图像文件路径] [输出码书文件路径] -b [码书中码矢数量] -w [合并为矢量的block宽度] -t [合并为矢量的block高度]
例如,对于sena图像,将2x2像素块合并为矢量,采用LBG算法将其构成的4维空间划分为64个区域(对应64个码矢)
../images/sena.img ../images/codebooks/sena22_64.cb -b 64 -w 2 -t 2
其余参数见程序Usage()函数。
编码器vqimg_enc
使用得到的码书进行编码,参数为:
-i [输入img图像文件路径] -o [输出量化索引文件路径] -c [码书文件路径]
例如:
-i ../images/sena.img -o ../images/quantized_img/sena22_16.vquan -c ../images/codebooks/sena22_16.cb
解码器vqimg_dec
参数为:
-i [输入量化索引文件路径] -o [输出重建图像文件路径]
例如:
-i ../images/quantized_img/sena22_16.vquan -o ../images/reconstructed_img/sena22_16_re.img
运行结果
以sena图像为例,2x2分块下不同码矢划分级数输出结果为:
不同量化等级量化比特数与PSNR性能结果如下:
levels | Original size | Quantized size | Compress Ratio | PSNR |
---|---|---|---|---|
16 | 64kB | 8.00kB + 76B | 12.6% | 32.48 |
32 | 64kB | 10.0kB + 140B | 15.8% | 34.83 |
64 | 64kB | 12.0kB + 268B | 19.1% | 36.48 |
128 | 64kB | 14.0kB + 524B | 22.7% | 38.18 |
256 | 64kB | 16.0kB + 1036B | 26.6% | 39.84 |
可见对于图像文件,矢量量化可在一定程度上利用像素间的相关性,性能大幅领先于均匀标量量化。