视频图像帧内编码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 将原始图像信息块转换成代表不同频率分量的系数集,这有两个优点:其一,信号常将其能量的大部分集中于频率域的一个小范围内,这样一来,描述不重要的分量只需要很少的比特数;其二,频率域分解映射了人类视觉系统的处理过程,并允许
后继的量化过程满足其灵敏度的要求。