图像多描述编码的MDSQ算法及其Matlab实现

时间:2022-09-09 10:40:09

图像多描述编码的MDSQ算法及其Matlab实现

摘要:标量量化多描述编码(MDSQ)算法能有效提高信息的传输接收效果。结合Matlab工具在矩阵处理上的灵活性,用程序实现了MDSQ算法,并通过实验结果的分析证明该算法的可行性。

关键词:多描述编码;标量量化;Matlab;码率

中图分类号:TP391文献标识码:A文章编号:1009-3044(2007)16-31148-01

Image MDSQ Arithmetic And Its Implementation Using Matlab

JIANG Yu-zhen

(Department of Mathematics and Information Technology,Hanshan Normal University,Chaozhou 521041,China)

Abstract:Multiple description image coding Arithmetic based on scalar quantization (MDSQ) can effectively improve the data receival quality. The paper completes the MDSQ Arithmetic using Matlab due to its advantage in matrix processing,and proves its feasibility by analyzing the experiment results.

Key words:multiple description coding;scalar quantization;Matlab;rate

1 引言

高速网络环境下,传统基于包的数据传输通常会面临丢包或误码等问题,这在一定程度上影响了信息传输的效率及接收的效果。近年来多描述编码(Multiple description coding, MDC)作为一种可选的解决方案已开始受到关注。多描述编码技术将信号分解成多个独立的码流,即描述,并通过不同的信道传输,因而以分散的、低码率的数据码流形式来增强信号的稳健性。当只接收到一个描述时,可恢复出粗糙但可以接收的信息,接收描述个数越多,恢复的信息质量越高。MDC技术使信号的传输更具灵活性,可适应各种网络环境的传输并在各种环境下尽量获取最佳接收效果,该技术尤其适合图像、视频、音频等多媒体信息的传输。

2 图像MDSQ算法

目前基于图像的多描述编码方法主要有基于量化、基于变换和基于空间扩展等几类[1]。在实际应用中,评价一个MDC算法的优劣主要依据编码效率、编码难度和解码质量等几个方面。基于标量量化的图像多描述编码(MDSQ)算法就是一个成熟的、综合性能较高的多描述方法。

MDSQ方法需要设计一个复杂的量化标号函数,用于对信源进行不同精度的量化。其基本思想是:信源通过不同的大步长量化可得到多个描述,即大步长量化信号,而当多个描述相互结合时可得到精细量化信号。两个描述的MDSQ算法模型如图1所示。其原理是:先将信源用量化器Q1和Q2进行标量量化,将量化结果输入标号分配函数a( : )进行标号分配以得到两个描述。在解码端,如果只收到一个描述,可用边解码器g1或g2直接解码,若两个描述均收到,则形成索引对(i,j),通过中央解码器g0解码可得到更精确信息。MDSQ的量化模式如图2所示。

图1 两个描述的MDSQ模型

图2 MDSQ的量化模式

MDSQ的关键之处是标号分配函数a( : )的设计,即标号分配问题,标号区间的长度及标号分配方案将直接影响算法性能。文献[2]在对该问题进行研究基础上收提出了两种不同的标量分配方案――嵌套标号分配和线性标号分配,如图3(a)和3(b)所示。

(a)嵌套分配模式 (b) 线性分配模式

图3 MDSQ的两种标号分配模式

3 Matlab仿真实验及结果分析

3.1Matlab实验及程序

基于Matlab对矩阵操作的灵活性,实验尝试用Matlab编程实现MDSQ的嵌套标号方案(线性标号方案也类同)。编码端采用的方法是:先对图像信号进行22级量化,然后通过索引Q1、Q2线性表以得到两个量化结果,即两个描述。在解码端,则对接收的两个描述分别索引Table1、Table2,以及联合索引Table0以获取不同的解码图像。具体程序如下:

编码端:

I=imread('CAMERA.bmp');

[a,b]=size(I);

Q1=[1 2 1 2 2 3 3 4 3 4 4 5 5 6 5 6 6 7 7 8 7 8];

Q2=[1 1 2 2 3 2 3 3 4 4 5 4 5 5 6 6 7 6 7 7 8 8];

Temp=uint8(zeros(a,b));

I1=uint8(zeros(a,b)); I2=uint8(zeros(a,b));

k=256/22;

Temp=fix(double(I)/k)+1;

I1(1:a,1:b)=Q1(Temp(1:a,1:b));

I2(1:a,1:b)=Q2(Temp(1:a,1:b));

save I1,I1; save I2,I2;

解码端:

load I1; load I2;

[a,b]=size(I1);

Table1=[2 3.5 7.5 9.5 13.5 15.5 19.5 20.5 ];

Table2=[1.5 4.5 6.5 10.5 12.5 16.5 19.5 21.5];

Table0=[1 3 0 0 0 0 0 0; 2 4 5 0 0 0 0 0;

0 6 7 9 0 0 0 0;0 0 8 10 11 0 0 0;

0 0 0 12 13 15 0 0;0 0 0 0 14 16 17 0;

0 0 0 0 0 18 19 21;0 0 0 0 0 0 20 22];

T1=zeros(a,b); T2=zeros(a,b); T0=zeros(a,b);

T1(1:a,1:b)=Table1(I1(1:a,1:b));

T2(1:a,1:b)=Table2(I2(1:a,1:b));

for i=1:a;

for j=1:b;

T0(i,j)=Table0(I1(i,j),I2(i,j));

end;

end

k=256/22;

T1=uint8((T1-1)*k+k/2);

T2=uint8((T2-1)*k+k/2);

T0=uint8((T0-1)*k+k/2);

figure;imshow(T1);imwrite(T1,'描述1.bmp');

figure;imshow(T2);imwrite(T2,'描述2.bmp');

figure;imshow(T0);imwrite(T0,'两描述.bmp');

3.2实验结果及分析

对256*256的8位灰度图“CAMERA.bmp”进行MDSQ编/解码码后,得到三种解码图像如图4所示,这里仍采用峰值信噪比PSNR,来对三种解码图进行客观评价,三个解码图的PSNR值分别为24.56、25.13和37.39。可见,接收到单个描述可获得一定质量的解码图,而两个描述均收到时则可得到高质量图像。由于Matlab中图像的最小空间处理类型为uint8,即8bit每个像素,该程序还不能体现单个描述的压缩码率。本算法中单个描述的数据值范围是1~8,根据香农(Shannon)理论[3],其图像码率将不高于3dpp,具有了较好的编码效率。

(a)描述1解码图 (b)描述2解码图 (c)两个描述联合解码图

图4 MDSQ三种解码图效果

4 小结

基于量化的图像多描述编码是提高信息传输质量的一种有效方法,本文利用Matlab工具在处理矩阵上的灵活性,以简洁的程序实现了MDSQ算法,并通过实验结果的分析证明该方法良好的多描述性能。在实际应用中,还可以根据信息及网络的特点,灵活设定量化步长及标量分配方案以取得最佳的编码效果。

参考文献:

[1]张炜,蒋刚毅.等.图像信号的多描述编码方法[J].中国图象图形学报,2004.9(3):257-264.

[2]Vaishampayan V A.Design of multiple description scalar quantizer[J].IEEE Transactions on Information Theory,1993,39(3):821-834.

[3]林福宗.多媒体技术(第2版)[M].北京:清华大学出版社,2003.3:45-46.

注:“本文中所涉及到的图表、公式注解等形式请以PDF格式阅读原文。”

上一篇:易用为本――利用PB的树形及列表控件编程 下一篇:浅析Oracle数据库字符集问题