命令参数(以1bit量化为例):
-i ../images/sena.img -o ../images/quantized_img/sena_1bit.quan -b 1输入sena.img图像,输出1bit量化后图像sena_1bit.quan,量化比特数设置为1bit。
2,使用标量量化解码程序uqimg_dec对sena_1bit.quan进行解码。
命令参数:
-i ../images/quantized_img/sena_1bit.quan -o ../images/reconstructed_img/sena_1bit_re.img输入sena_1bit.quan编码文件,输出sena_1bit_re.img解码图像。
3,使用imgshow_n_uni.m程序显示原图像和1bit,2bit,4bit,6bit的量化编码解码后图像文件,并求出PSNR值来评价编码解码后的图像质量。
运行结果:
量化比特数原始文件大小量化后大小压缩率PSNR1bit64.0KB8.02KB7.98:118.61752bit64.0KB16.0KB4.06:121.50634bit64.0KB32.0KB2:135.00116bit64.0KB48.0KB1.33:146.4605随着量化比特数的增大,压缩率也在逐渐减小,但PSNR逐渐增大,PSNR越大说明图像质量越接近原始图像。
一般来说:
PSNR高于40dB说明图像质量极好(即非常接近原始图像),
在30—40dB通常表示图像质量是好的(即失真可以察觉但可以接受),
在20—30dB说明图像质量差;
最后,PSNR低于20dB图像不可接受。
调试矢量量化器 1,使用LBG算法程序trvqsp_img将sena图像的2x2像素块合并为矢量,采用LBG算法将其构成的4维空间分别划分为16,32,64,128,256个区域(对应16,32,64,128,256个码矢)。
命令参数(16个区域为例):
../images/sena.img ../images/codebooks/sena22_16.cb -b 16 -w 2 -t 2输入sena.img文件,输出sena22_16.cb码本,码本大小为16,像素宽度为2,像素高度为2。
2,使用矢量量化编码程序vqimg_enc,并使用上面生成的sena22_16.cb码本对sena.img图像进行编码。
命令参数:
-i ../images/sena.img -o ../images/quantized_img/sena22_16.vquan -c ../images/codebooks/sena22_16.cb输入sena.img文件,输出sena22_16.vquan编码文件,使用的码本为sena22_16.cb。
3,使用矢量量化解码程序vqimg_dec对sena22_16.vquan编码文件进行解码。
命令参数:
-i ../images/quantized_img/sena22_16.vquan -o ../images/reconstructed_img/sena22_16_re.img输入sena22_16.vquan编码文件,输出sena22_16_re.img图像文件。
4,使用imgshow_n_vec.m程序显示原图像和16,32,64,128,256个区域的矢量量化编码解码后图像文件,并求出PSNR值来评价编码解码后的图像质量。
量化等级原始文件大小量化后大小压缩率PSNR1664.0KB8.04KB7.96:132.47873264.0KB10.0KB6.4:134.83326464.0KB12.0KB5.33:136.481412864.0KB14.0KB4.57:138.175725664.0KB16.0KB4:139.8419矢量量化编码随着量化等级的提高,压缩率虽然也在逐渐减小,但减小的幅度远小于标量量化时的情况,并且通过PSNR来看,各个量化等级下编码后的图像质量都很接近原始图像。
矢量量化利用像素间的相关性,性能比标量量化好。