视频图像帧内编码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

视频图像帧内编码

--国立华侨大学

一实验目的

1.了解多媒体通信中图像压缩技术

2.熟悉视频帧内压缩编码过程

3.掌握二维DCT变换算法

二实验原理

视频帧内编码有多种模式,最基本的是基于8×8块的DCT顺序编码,将一帧图像分为8×8的块,然后按照从左至右、自上而下的顺序,对块进行DCT、量化和熵编码。其编、解码框图如下:

基于DCT的编码器

图1 基于DCT的顺序编码框图

DCT解码器

图2 基于DCT的顺序解压缩框图

视频帧内压缩编码算法的主要步骤:

1)正向离散余弦变换(DCT)。

2)量化(quantization)。

3)Z字形扫描(zigzag scan)。

4)使用差分脉冲编码调制(differential pulse code modulation,

DPCM)对直流系数(DC)进行编码。

5)使用行程长度编码(run-length encoding,RLE)对交流系数(AC)

进行编码。

6)熵编码(entropy coding)。

三实验过程

实验利用MATLAB仿真软件来实现

程序:I=imread('D:\p_large_iUNl_627c0001a3192d12.bmp')

figure(1),imshow(I);

title('原图像')

I=rgb2gray(I); %将真彩色RGB图像转换成灰度图像

figure(11),imshow(I);

title('灰度图像')

I=im2double(I);% double(I)是将I变成double类型的。im2double(I)是将图象变成double类型的再归一化,比如对于8比特图象,就是将原来像素值除以255。

fun_1=@dct2;

A_1=blkproc(I,[8 8],fun_1);

figure(2),imshow(A_1);

title('离散余弦变换后的图像')

T=[0.3536 0.3536 0.3536 0.3536 0.3536 0.3536 0.3536 0.3536

0.4904 0.4157 0.2778 0.0975 -0.0975 -0.2778 -0.4157 -0.4904

0.4619 0.1913 -0.1913 -0.4619 -0.4619 -0.1913 0.1913 0.4619

0.4157 -0.0975 -0.4904 -0.2778 0.2778 0.4904 0.0975 -0.4157

0.3536 -0.3536 -0.3536 0.3536 0.3536 -0.3536 -0.3536 0.3536

0.2778 -0.4904 0.0975 0.4157 -0.4157 -0.0975 0.4904 -0.2778

0.1913 -0.4619 0.4619 -0.1913 -0.1913 0.4619 -0.4619 0.1913

0.0975 -0.2778 0.4157 -0.4904 0.4904 -0.4157 0.2778 -0.0975]

A_2=blkproc(A_1,[8 8],'x./P1',T);

figure(3),imshow(A_2);

title('量化后的图像')

A_3=blkproc(A_2,[8 8],'x.*P1',T);

figure(4),imshow(A_3);

title('逆量化后的图像')

fun_2=@idct2;

I_2=blkproc(A_3,[8 8],fun_2);

figure(5),imshow(I_2);

title('对逆量化的进行逆离散余弦变换');

E=I-I_2;

figure(6),imshow(E),colormap(hot);

title('误差图像')

B=blkproc(I,[8,8],'P1*x*P2',T,T')

%计算二维DCT,矩阵T及其转置是DCT函数P1*X*P2的参数

mask=[1 1 1 1 0 0 0 0

1 1 1 0 0 0 0 0

1 1 0 0 0 0 0 0

1 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 ]

%二值掩模,用来压缩DCT系数,只留下DCT系数中左上角的10个B2=blkproc(B,[8 8],'P1.*x',mask) %只保留DCT变换的10个系数

I2=blkproc(B2,[8 8],'P1*x*P2',T',T) %重构图像

figure

imshow(I2);

title('压缩图像');

inf1=imfinfo('D:\untitled.bmp') %显示图像信息

inf=imfinfo('D:\p_large_iUNl_627c0001a3192d12.bmp') %显示图像信息面的高度

其仿真结果如下:

1.输入图像

2. DCT变换后的频域图像

3、8×8的DCT变换后图像

4.压缩后的图像

5、误差图像

四、实验小结

DCT 将原始图像信息块转换成代表不同频率分量的系数集,这有两个优点:其一,信号常将其能量的大部分集中于频率域的一个小范围内,这样一来,描述不重要的分量只需要很少的比特数;其二,频率域分解映射了人类视觉系统的处理过程,并允许

后继的量化过程满足其灵敏度的要求。

相关文档
最新文档