实验名称:图像的锐化处理一、实验目的学习用锐化处理技术来加强图像的目标边界和图像细节。对图像进行梯度算子、Roberts算子、Sobel算子边缘检测处理和Laplace算子边缘增强处理,使图像的某些特征(如边缘、轮廓等)得以进一步的增强和突出。二、实验内容(1)编写梯度算子和Roberts算子滤波函数。(2)编写Sobel算子滤波函数。(3)编写Laplace算子边缘增强滤波函数。(4)观察频域中用高低通滤波技术对图像进行的平滑和锐化处理。三、实验方法及编程用Matlab进行编程,主要是对照着实验书上面的算法流程图进行代码的编写,主要编写代码如下所示:functionnewbuf=RobFilter(oldbuf,M,N);%*************************************************************************%函数名称:%RobFilter()%说明:%'Robert梯度'滤波算法。%*************************************************************************fori=1:M-1forj=1:N-1newbuf(i,j)=abs(oldbuf(i,j)-oldbuf(i+1,j+1))+abs(oldbuf(i+1,j)-oldbuf(i,j+1));endend%-------------------------------------------------------------------------functionnewbuf=SobFilter(oldbuf,M,N);%*************************************************************************%函数名称:%SobFilter()%说明:%'Sobel'滤波算法。%*************************************************************************fori=2:M-1forj=2:N-1sx=oldbuf(i+1,j-1)+2*oldbuf(i+1,j)+oldbuf(i+1,j+1)-oldbuf(i-1,j-1)-2*oldbuf(i-1,j)-oldbuf(i-1,j+1);sy=oldbuf(i-1,j+1)+2*oldbuf(i,j+1)+oldbuf(i+1,j+1)-oldbuf(i-1,j-1)-2*oldbuf(i,j-1)-oldbuf(i+1,j-1);newbuf(i,j)=abs(sx)+abs(sy);endend%-------------------------------------------------------------------------functionnewbuf=LapFilter(oldbuf,M,N);%*************************************************************************%函数名称:%LapFilter()%说明:%'Laplace'滤波算法。%************************************************************************fori=2:M-1forj=2:N-1newbuf(i,j)=5*oldbuf(i,j)-oldbuf(i-1,j)-oldbuf(i+1,j)-oldbuf(i,j-1)-oldbuf(i,j+1);endend四、实验结果及分析(原图像和处理后的图像比较及分析)如上图所示即为实验结果。如上图所示Robert算子能够检测出原图像的边缘,并且显示出来;Sobel在Robert算子的基础上增强了边缘,所以图像上结果会显示比原图像边缘要更加粗一些;Laplace算子与其他边缘增强方法不同,即其边缘的增强程度和边缘的方向无关,所以图像的细节明显比原来更加突出。实验名称:图像方块编码三、实验目的通过编程实验,掌握方块编码的基本方法及压缩性能。四、实验内容编程实现子块为nxn的方块编码基本算法,分别取n=2,4,8方块尺寸进行编解码实验,计算编码后的均方误差和压缩比。实验图像可为任意图像。五、实验方法及编程用Matlab进行编程,主要是对照着实验书上面的算法流程图进行代码的编写,下面是主要的实验代码:functionnewbuf=BtcCode(oldbuf,M,N,n)%*************************************************************************%函数名称:%BtcCode()方块编码函数%参数:%oldbuf原图像数组%MN原图像尺寸%n方块尺寸%说明:%调用方块编码算法函数,输出编码后的图像%*************************************************************************newbuf=oldbuf;rowblocks=M/n;colblocks=N/n;fori=1:rowblocks-1row=i*n;forj=1:colblocks-1col=j*n;fori=1:nforj=1:ninbuf(i,j)=oldbuf(i+row,j+col);endendoutbuf=BtcBlock(inbuf,n);fori=1:nforj=1:nnewbuf(i+row,j+col)=outbuf(i,j);endendendend%-------------------------------------------------------------------------functionoutbuf=BtcBlock(inbuf,n)%*************************************************************************%函数名称:%btcblock()方块编码算法函数%参数:%inbuf方块数组%n方块尺寸%outbuf存放处理后的方块图像%说明:%把原图像分成n*n子块,对每个方块的图像数据分别计算xt,a0,a1值,再用分辨率分%量(a0,a1)替代方块原来的数据最后放入方块图像数组中并返回该数组。%*************************************************************************temp=0;temp0=0;temp1=0;q=0;m=n*n;inbuf=double(inbuf);fori=1:nforj=1:ntemp=temp+inbuf(i,j);endendxt=temp/m;fori=1:nforj=1:nif(inbuf(i,j)=xt)q=q+1;temp1=temp1+inbuf(i,j);elsetemp0=temp0+inbuf(i,j);endendendifq~=ma0=round(temp0/(m-q));endifq~=0a1=round(temp1/q);endfori=1:nforj=1:nif(inbuf(i,j)xt)outbuf(i,j)=a0;elseoutbuf(i,j)=a1;endendEnd六、实验结果及分析(原图像和处理后的图像比较及分析)如上图所示,即为实验结果。实验将图像分为m=n*n的子图像块,然后进行方块编码;由实验结果可知,窗口愈大时,方块效应越明显,方块编码图像变得越模糊;窗口愈小时,编码图像接近于原图像。实验名称:图像线性预测编码七、实验目的通过编程设计,掌握帧内DPCM的编解码方法(预测,量化)及其压缩性能。八、实验内容(1)编制一维前值预测DPCM编解码程序,预测系数取(1,0,0,0)。(2)编制二维前值预测DPCM编解码程序,预测系数取(1/2,1/4,0,1/4)。(3)重建图像jif,'与原图像jif,误差图像,用绝对误差表示如下:|),(),(|',jifjifndji式中的n为放大因子,以便观察误差的分布情况。本实验采用15个量化分层的主观量化器,其量化电平分别取(0,+5,+10,+17,+28,+39,+52,+67)。分别计算重建后图像的PSNR。实验的图像为cla0或cla1。三、实验方法及编程用Matlab进行编程,主要是对照着实验书上面的算法流程图进行代码的编写,主要的代码如下所示:functionnewbuf=Dpcm_code(oldbuf,M,N,dim);%*************************************************************************%函数名称:%Dpcm_Code()“线性预测编解码器”算法函数%参数:%oldbuf原图像数组%M,N原图像尺度%dim选择预测编码维数%newbuf存放处理后的图像二维数组%说明:%根据线性预测编解码算法调用各个子模块,对原图像进行1D/2D线性预测编码和解码,%解码后的恢复图像放在newbuf数组中。%*************************************************************************globalnewbuf;%定义全局变量fori=1:Mforj=1:Npre_val=Predict_Value(i,j,N,dim);err=oldbuf(i,j)-pre_val;quan_err=Quant_Value(err);res_val=Restor_Value(quan_err,pre_val);newbuf(i,j)=Clip_Value(res_val);endend%-------------------------------------------------------------------------functionnewbuf=Error_Code(M,N,dim);%*************************************************************************%函数名称:%Error_Code()“传输误码解码器”算法函数%参数:%M,N原图像尺度%dim选择预测编码维数%newbuf存放处理后的图像二维数组%说明:%模拟信道传输过程中产生的误码,观察传输误码经解码后对恢复图像的影响,解码%后的恢复图像放在newbuf数组中。%*************************************************************************globalnewbuf;wrong=zeros(M,N);wrong(100,100)=120;fori=1:Mforj=1:Npre_val=Predict_Value(i,j,N,dim);err=wrong(i,j);quan_err=Quant_Value(err);res_val=Restor_Value(quan_err,pre_val);newbuf(i,j)=Clip_Value(res_val);endend%-------------------------------------------------------------------------functionPvalue=Predict_Value(row,col,N,dim)%*************************************************************************%{Thisfunctionisusedtogivepredictedvalueaslinear