数字视频报告-图像的DPCM预测编码研究Word文档格式.doc
《数字视频报告-图像的DPCM预测编码研究Word文档格式.doc》由会员分享,可在线阅读,更多相关《数字视频报告-图像的DPCM预测编码研究Word文档格式.doc(14页珍藏版)》请在冰豆网上搜索。
日期:
一、设计任务、目的和要求:
1.1设计任务:
DPCM预测编码
1.2设计目的:
1了解图像压缩的意义和手段;
2熟悉DPCM预测编码的基本性质;
3熟练掌握DPCM预测编码的方法与应用;
4掌握利用MATLAB编程实现数字图像的DPCM预测编码。
1.3设计要求:
查阅无损和有损DPCM预测编码资料,分别实现图像的一阶,二阶,三阶,四阶DPCM编码和解码恢复图像;
实现无损和有损处理结果对比,处理结果要求最终图像显示,且计算压缩比。
二、总体方案设计
2.1DPCM原理:
DPCM编码,简称差值编码,是对模拟信号幅度抽样的差值进行量化编码的调制方式(抽样差值的含义请参见“增量调制”)。
这种方式是用已经过去的抽样值来预测当前的抽样值,对它们的差值进行编码。
差值编码可以提高编码频率,这种技术已应用于模拟信号的数字通信之中。
对于有些信号(例如图像信号)由于信号的瞬时斜率比较大,很容易引起过载,因此,不能用简单增量调制进行编码,除此之外,这类信号也没有像话音信号那种音节特性,因而也不能采用像音节压扩那样的方法,只能采用瞬时压扩的方法。
但瞬时压扩实现起来比较困难,因此,对于这类瞬时斜率比较大的信号,通常采用一种综合了增量调制和脉冲编码调制两者特点的调制方法进行编码,这种编码方式被简称为脉码增量调制,或称差值脉码调制,用DPCM表示。
2.2运行环境
本次课程小设计使用的软件平台为MATLAB2014a。
2.3编码算法原理及流程图
DPCM有损编、解码原理图
系统包括,发送、接收和信道传输三个部分。
发送端由编码器、量化器、预测器和加/减法器组成;
接收端包括解码器和预测器等;
信道传送以虚线表示。
由图可见DPCM系统具有结构简单,容易用硬件实现(接收端的预测器和发送端的预测器完全相同)的优点。
图中输入信号f(i,j)是坐标为像素点的实际灰度值,是由已出现先前相邻像素点的灰度值对该像素点的预测灰度值。
是预测误差。
假如发送端不带量化器,直接对预测误差进行编码、传送,接收端可以无误差地恢复。
这是可逆的无失真的DPCM编码,是信息保持编码;
但是,如果包含量化器,这时编码器对编码,量化器导致了不可逆的信息损失,这时接收端,经解码恢复出的灰度信号,不是真正的,以表示这时的输出。
可见引入量化器会引起一定程度的信息损失,使图像质量受损。
但是,为了压缩比特数,利用人眼的视觉特性,对图像信息丢失不易觉察的特点,带有量化器有失真的DPCM编码系统还是普遍被采用。
其中无损编码与有损编码的区别在于是否被量化。
预测误差不被量化,直接被编码传送的是无损量化,预测误差被量化,再经编码传送的是有损编码。
三、设计与实现
Matlab程序如下:
%一阶/二阶/三阶/四阶预测的区别不仅在于信号的清晰度,而更重要在于
%阶数越高,图像越光滑.
clc
clear
closeall;
%从D盘导入图片,以学校风光图片为例实现DPCM
I03=imread('
cumt.jpg'
);
%把RGB图像转化为灰度图像
I02=rgb2gray(I03);
I=double(I02);
fid1=fopen('
mydata1.dat'
'
w'
fid2=fopen('
mydata2.dat'
fid3=fopen('
mydata3.dat'
fid4=fopen('
mydata4.dat'
[m,n]=size(I);
%对预测信号将边缘锁定,防止程序运行时抓不到数据
J1=ones(m,n);
J1(1:
m,1)=I(1:
m,1);
J1(1,1:
n)=I(1,1:
n);
m,n)=I(1:
m,n);
J1(m,1:
n)=I(m,1:
J2=ones(m,n);
J2(1:
J2(1,1:
J2(m,1:
J3=ones(m,n);
J3(1:
J3(1,1:
J3(m,1:
J4=ones(m,n);
J4(1:
J4(1,1:
J4(m,1:
%一阶DPCM编码
fork=2:
m-1
forl=2:
n-1
J1(k,l)=I(k,l)-I(k,l-1);
end
end
J1=round(J1);
cont1=fwrite(fid1,J1,'
int8'
cc1=fclose(fid1);
%二阶DPCM编码
J2(k,l)=I(k,l)-(I(k,l-1)/2+I(k-1,l)/2);
J2=round(J2);
cont2=fwrite(fid2,J2,'
cc2=fclose(fid2);
%三阶DPCM编码
J3(k,l)=I(k,l)-(I(k,l-1)*(4/7)+I(k-1,l)*(2/7)+I(k-1,l-1)*(1/7));
J3=round(J3);
cont3=fwrite(fid3,J3,'
cc3=fclose(fid3);
%四阶DPCM编码
n-1J4(k,l)=I(k,l)-(I(k,l-1)/2+I(k-1,l)/4+I(k-1,l-1)/8+I(k-1,l+1)/8);
J4=round(J4);
cont4=fwrite(fid4,J4,'
cc4=fclose(fid4);
figure
(1)
subplot(2,2,1);
imshow(J1);
%一阶绝对残差图像
axisoff
boxoff
title('
一阶绝对残差图像'
subplot(2,2,2);
imshow(J2);
%二阶绝对残差图像
二阶绝对残差图像'
subplot(2,2,3);
imshow(J3);
%三阶绝对残差图像
三阶绝对残差图像'
subplot(2,2,4);
imshow(J4);
%四阶绝对残差图像
四阶绝对残差图像'
%====================================================================
%以上是DPCM编码的编码过程,为了使程序具有连贯性,将编码和解码放在同一个M文件目录下
%以下是DPCM解码
r'
I11=fread(fid1,cont1,'
I12=fread(fid2,cont2,'
I13=fread(fid3,cont3,'
I14=fread(fid4,cont4,'
tt=1;
forl=1:
n
fork=1:
m
I1(k,l)=I11(tt);
tt=tt+1;
I2(k,l)=I12(tt);
end
I3(k,l)=I13(tt);
I4(k,l)=I14(tt);
I1=double(I1);
I2=double(I2);
I3=double(I3);
I4=double(I4);
m,1)=I1(1:
n)=I1(1,1:
m,n)=I1(1:
n)=I1(m,1:
m,1)=I2(1:
n)=I2(1,1:
m,n)=I2(1:
n)=I2(m,1:
m,1)=I3(1:
n)=I3(1,1:
m,n)=I3(1:
n)=I3(m,1:
m,1)=I4(1:
n)=I4(1,1:
m,n)=I4(1:
n)=I4(m,1:
%一阶解码
J1(k,l)=I1(k,l)+J1(k,l-1);
J1=uint8(J1);
%二阶解码
J2(k,l)=I2(k,l)+(J2(k,l-1)/2+J2(k-1,l)/2);
J2=uint8(J2);
%三阶解码
J3(k,l)=I3(k,l)+(J3(k,l-1)*(4/7)+J3(k-1,l)*(2/7)+J3(k-1,l-1)*(1/7));
J3=ui