DPCM 编码MATLAB 实现 %本文是数字图像处理的一个源程序 %实现的功能是DPCM 编码 %DPCM 编码,简称差值编码,是对模拟信号幅度抽样的差值进行量化编码的调制方式 %本程序实现一阶/二阶/三阶/四阶 DPCM 数字信号预测 %一阶/二阶/三阶/四阶预测的区别不仅在于信号的清晰度,而更重要在于 %阶数越高,图像越光滑. clc clear close all; %从 D 盘导入图片,以学校风光图片为例实现DPCM I03=imread('d:\shuxuejianmo.bmp'); %把 RGB 图像转化为灰度图像 I02=rgb2gray(I03); I=double(I02); fid1=fopen('mydata1.dat','w'); fid2=fopen('mydata2.dat','w'); fid3=fopen('mydata3.dat','w'); fid4=fopen('mydata4.dat','w'); [m,n]=size(I); %对预测信号将边缘锁定,防止程序运行时抓不到数据 J1=ones(m,n); J1(1:m,1)=I(1:m,1); J1(1,1:n)=I(1,1:n); J1(1:m,n)=I(1:m,n); J1(m,1:n)=I(m,1:n); J2=ones(m,n); J2(1:m,1)=I(1:m,1); J2(1,1:n)=I(1,1:n); J2(1:m,n)=I(1:m,n); J2(m,1:n)=I(m,1:n); J3=ones(m,n); J3(1:m,1)=I(1:m,1); J3(1,1:n)=I(1,1:n); J3(1:m,n)=I(1:m,n); J3(m,1:n)=I(m,1:n); J4=ones(m,n); J4(1:m,1)=I(1:m,1); J4(1,1:n)=I(1,1:n); J4(1:m,n)=I(1:m,n); J4(m,1:n)=I(m,1:n); %一阶 DPCM 编码 for k=2:m-1 for l=2:n-1 J1(k,l)=I(k,l)-I(k,l-1); end end J1=round(J1); cont1=fw rite(fid1,J1,'int8'); cc1=fclose(fid1); %二阶 DPCM 编码 for k=2:m-1 for l=2:n-1 J2(k,l)=I(k,l)-(I(k,l-1)/2+I(k-1,l)/2); end end J2=round(J2); cont2=fw rite(fid2,J2,'int8'); cc2=fclose(fid2); %三阶 DPCM 编码 for k=2:m-1 for l=2:n-1 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)); end end J3=round(J3); cont3=fw rite(fid3,J3,'int8'); cc3=fclose(fid3); %四阶 DPCM 编码 for k=2:m-1 for l=2:n-1 J4(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); end end J4=round(J4); cont4=fw rite(fid4,J4,'int8'); cc4=fclose(fid4); %===================================================================== %以上是DPCM 编码的编码过程,为了使程序具有连贯性,将编码和解码放在同一个 M 文件目录下 %===================================================================== %以下是DP...