数字图像处理实验答案Word版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验名称:图像的锐化处理

一、实验目的

学习用锐化处理技术来加强图像的目标边界和图像细节。对图像进行梯度算子、Roberts算子、Sobel算子边缘检测处理和Laplace算子边缘增强处理,使图像的某些特征(如边缘、轮廓等)得以进一步的增强和突出。

二、实验内容

(1)编写梯度算子和Roberts算子滤波函数。

(2)编写Sobel算子滤波函数。

(3)编写Laplace算子边缘增强滤波函数。

(4)观察频域中用高低通滤波技术对图像进行的平滑和锐化处理。

三、实验方法及编程

用Matlab进行编程,主要是对照着实验书上面的算法流程图进行代码的编写,主要编写代码如下所示:

function newbuf=RobFilter(oldbuf,M,N);

% *************************************************************************

% 函数名称:

% RobFilter()

% 说明:

% 'Robert梯度'滤波算法。

% *************************************************************************

for i=1:M-1

for j=1:N-1

newbuf(i,j)=abs(oldbuf(i,j)-oldbuf(i+1,j+1))+abs(oldbuf(i+1,j)-oldbuf(i,j+1));

end

end

%-------------------------------------------------------------------------

function newbuf=SobFilter(oldbuf,M,N);

% *************************************************************************

% 函数名称:

% SobFilter()

% 说明:

% 'Sobel'滤波算法。

% *************************************************************************

for i=2:M-1

for j=2:N-1

sx=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);

end

end

%-------------------------------------------------------------------------

function newbuf=LapFilter(oldbuf,M,N);

% *************************************************************************

% 函数名称:

% LapFilter()

% 说明:

% 'Laplace'滤波算法。

% ************************************************************************

for i=2:M-1

for j=2:N-1

newbuf(i,j)=5*oldbuf(i,j)-oldbuf(i-1,j)-oldbuf(i+1,j)-oldbuf(i,j-1)-oldbuf(i,j+1);

end

end

四、实验结果及分析(原图像和处理后的图像比较及分析)

如上图所示即为实验结果。如上图所示Robert算子能够检测出原图像的边缘,并且显示出来;Sobel在Robert算子的基础上增强了边缘,所以图像上结果会显示比原图像边缘要更加粗一些;Laplace算子与其他边缘增强方法不同,即其边缘的增强程度和边缘的方向无关,所以图像的细节明显比原来更加突出。

实验名称:图像方块编码

三、实验目的

通过编程实验,掌握方块编码的基本方法及压缩性能。

四、实验内容

编程实现子块为nxn的方块编码基本算法,分别取n=2,4,8方块尺寸进行编解码实验,计算编码后的均方误差和压缩比。

实验图像可为任意图像。

五、实验方法及编程

用Matlab进行编程,主要是对照着实验书上面的算法流程图进行代码的编写,下面是主要的实验代码:

function newbuf=BtcCode(oldbuf,M,N,n)

% *************************************************************************

% 函数名称:

% BtcCode() 方块编码函数

% 参数:

% oldbuf 原图像数组

% M N 原图像尺寸

% n 方块尺寸

% 说明:

% 调用方块编码算法函数,输出编码后的图像

% *************************************************************************

newbuf=oldbuf;

rowblocks=M/n;

colblocks=N/n;

for i=1:rowblocks-1

row=i*n;

for j=1:colblocks-1

col=j*n;

for i=1:n

for j=1:n

inbuf(i,j)=oldbuf(i+row,j+col);

end

end

outbuf=BtcBlock(inbuf,n);

for i=1:n

for j=1:n

newbuf(i+row,j+col)=outbuf(i,j);

end

end

end

end

%-------------------------------------------------------------------------function outbuf=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;

相关文档
最新文档