实验4MPEG编码1实验目的本试验通过MATLAB编程实现MPEG标准的avi文件的编解码,了解MPEG标准的视频文件的前后帧图片差分编码及解码方法。2实验步骤(1)首先设置8x8的离散余弦变换矩阵T、亮度维矩阵lighttable、色度为矩阵colortable以及64维向量sequence和sequence2;(2)获取avi文件信息,并读入该avi文件,设置图片分块的数量、每秒帧数、压缩、解压文件大小,以及参考帧等信息;(3)对avi文件进行前后帧图片差分编码及解码,包括DCT变换->量化->z字形编码->DC差分编码等以及DC差分编码->z字形解码->反量化->DCT逆变换等;(4)保存编码、解码文件分别为mpegrar.mat和out.mat,并计算使用时间,将解码文件保存成out.avi文件,可以在MATLAB中观看保存的解码文件out.mat。3MATLAB程序代码程序保存为mpeg_coding.m文件。functionmpeg_coding(filename)%MPEG压缩编码T=dctmtx(8);%Discretecosinetransformmatrixlighttable=...[1611101624405161;1212141926586055;1413162440576956;1417222951878062;182237566810910377;243555648110411392;49647887103121120101;7292959811210010399];%亮度维colortable=...[1718244799999999;1821266699999999;2426569999999999;4766999999999999;9999999999999999;9999999999999999;9999999999999999;9999999999999999];%色度维sequence=[192310172518114512192633413427201367...1421283542495750433629221581623303744515859...5245383124323946536061544740485562635664];sequence2=[134101121223625912202335376813192434...3849714182533394850151726324047515816273141...4652575928304245535660632943445455616264];tic;%Startastopwatchtimerinfor=aviinfo(filename)%InformationaboutAVIfilefs=infor.FramesPerSecond;%每秒帧数fprintf('正在读取视频...\n');finput=aviread(filename);%读入文件fprintf('读取视频完成...\n');frame=length(finput);[row,col,dim]=size(finput(1).cdata);r=ceil(row/8);%8*8块的数量c=ceil(col/8);mpegrar=int8(zeros(r*c,64,dim,frame));%压缩文件大小定义output=uint8(zeros(row,col,dim,frame));%解压文件大小定义imref=zeros(row,col,dim);%参考帧%前后帧图片差分编码fprintf('开始处理视频...\n');for(f=1:frame)pic=uint8((double(finput(f).cdata)-imref+255)./2);%pic为前后帧图片差pic=rgb2ycbcr(pic);%填补图片->行列转化为8的倍数temp=mod(size(pic,1),8);...