实验四---图像空域锐化增强.doc
《实验四---图像空域锐化增强.doc》由会员分享,可在线阅读,更多相关《实验四---图像空域锐化增强.doc(6页珍藏版)》请在冰点文库上搜索。
数字图像处理实验报告
姓名:
田春茂学号:
2009475709电子信息工程3班
实验二图像空域平滑滤波
一、实验目的
理解图象锐化的概念,掌握常用空域锐化增强技术。
进一步加深理解和掌握图像锐化的原理和具体算法。
理解图象锐化增强的处理过程和特点。
二、实验内容
1、一阶微分锐化增强
设计程序,分别实现Roberts、Sobel、Priwitt算子的锐化处理。
观察处理前后图像效果,分析实验结果和算法特点。
2、拉普拉斯锐化增强
设计程序,实现拉普拉斯图像和原始图像叠加的增强处理,即
(拉普拉斯模板中心系数为负和拉普拉斯模板中心系数为正)
观察处理前后图像效果,分析实验结果和算法特点。
三、实验原理
Roberts、Sobel、Priwitt算子都是突出图像的细节或者是增强被模糊了的细节。
因此要对图像实现锐化处理,可以用空间微分来完成,但是,这样图像的微分增强了边缘和其他的突变(如噪声)并削弱了灰度变化缓慢区域。
拉普拉斯算子具有各向同性的特点,这种滤波器的响应与滤波器作用的图像的突变方向无关。
即各向同性滤波器旋转不变,原图像旋转后进行滤波后处理给出的结果与先对图像滤波然后再进行旋转地结果相同。
四、算法设计(含程序设计流程图)
五、实验结果及分析(需要给出原始图像和处理后的图像)
实验结果分析:
(1)Roberts算子,Sobel算子和Priwitt算子用来实现消除图像模糊地增强的方法。
即“锐化”。
此处理是为了加强图像的边界和细节。
Roberts算子提出的是在2*2的邻域上计算对角导数,Sobel算子提出了一种将方向差分局部均匀相结合的方法。
常用的即为在3*3邻域上计算x和y方向的偏导数。
Priwitt算子也是在3*3邻域内计算偏微分估计值。
实际上,不同的算子对应不同的卷积核,他们产生的偏导数在图像处理中心点上用均值或是绝对值求和的形式结合起来。
但是这类算法增强噪声的缺陷也在图像中体现了。
(2)Laplacian算子是一个标量,具有各向同性的性质。
对噪声更加敏感,会使噪声成分急速增强。
因此在实际应用中通常在进行平滑操作的同时进行二阶微分,效果比较的好。
附:
程序源代码
(1)Roberts算子处理:
I=imread('D:
\Matlab\project\一阶微分空域锐化实验原图.jpg');
I=im2double(I);
figure;
imshow(I);title('原图')
[heightwidthR]=size(I);
fori=2:
height-1
forj=2:
width-1
R(i,j)=abs(I(i+1,j+1)-I(i,j))+abs(I(i+1,j)-I(i,j+1));
end
end
figure;
imshow(R,[]);
T=R;
fori=1:
height-1
forj=1:
width-1
if(R(i,j)<0.25)
R(i,j)=1;
elseR(i,j)=0;
end
end
end
figure;
imshow(R,[]);
title('Roberts算子锐化处理后图像');
[m,n]=size(T);
AR(1:
m,1:
n)=I(1:
m,1:
n)+T(1:
m,1:
n);
figure;
imshow(AR);title('叠加图');
(2)Sobel算子:
I=imread('D:
\Matlab\project\一阶微分空域锐化实验原图.jpg');
I=im2double(I);
figure;
imshow(I);title('原图')
[heightwidthR]=size(I);
%Dx=[-1-2-1
%000
%121];
%Dy=[-101
%-202
%-101];
fori=2:
height-1
forj=2:
width-1
Dx=[I(i+1,j-1)-I(i-1,j-1)]+2*[I(i+1,j)-I(i-1,j)]+[I(i+1,j+1)-I(i-1,j+1)];
Dy=[I(i-1,j+1)-I(i-1,j-1)]+2*[I(i,j+1)-I(i,j-1)]+[I(i+1,j+1)-I(i+1,j-1)];
S(i,j)=sqrt(Dx^2+Dy^2);
end
end
figure;
imshow(S);
T=S;
fori=1:
height-1
forj=1:
width-1
if(S(i,j)<0.6)
S(i,j)=1;
elseS(i,j)=0;
end
end
end
figure;
imshow(S,[]);
title('sobel算子锐化处理后图像')
[m,n]=size(T);
AS(1:
m,1:
n)=I(1:
m,1:
n)+T(1:
m,1:
n);
figure;
imshow(AS);title('叠加图');
(3)Priwitt算子锐化处理:
I=imread('D:
\Matlab\project\一阶微分空域锐化实验原图.jpg');
I=im2double(I);
figure;
imshow(I);title('原图')
[heightwidthR]=size(I);
fori=2:
height-1
forj=2:
width-1
Dx=[I(i+1,j-1)-I(i-1,j-1)]+[I(i+1,j)-I(i-1,j)]+[I(i+1,j+1)-I(i-1,j+1)];
Dy=[I(i-1,j+1)-I(i-1,j-1)]+[I(i,j+1)-I(i,j-1)]+[I(i+1,j+1)-I(i+1,j-1)];
P(i,j)=sqrt(Dx^2+Dy^2);
end
end
figure;
imshow(P,[]);
T=P;
fori=1:
height-1
forj=1:
width-1
if(P(i,j)<0.4)
P(i,j)=1;
elseP(i,j)=0;
end
end
end
figure;
imshow(P,[]);
title('Priwitt算子锐化处理后的图像');
[m,n]=size(T);
AP(1:
m,1:
n)=I(1:
m,1:
n)+T(1:
m,1:
n);
figure;
imshow(AP);title('叠加图');
(4)Laplace算子处理:
I=imread('D:
\Matlab\project\拉普拉斯锐化实验原图.jpg');
I=im2double(I);
figure;
imshow(I);title('原图')
[heightwidthR]=size(I);
fori=2:
height-1
forj=2:
width-1
L(i,j)=4*I(i,j)-I(i-1,j)-I(i+1,j)-I(i,j-1)-I(i,j+1);
end
end
figure;
imshow(L,[]);
T=L;
G(i,j)=0.3*L(i,j)+0.7*I(i,j);
figure;
imshow(G,[]);
fori=1:
height-1
forj=1:
width-1
if(L(i,j)<0.12)
L(i,j)=1;
elseL(i,j)=0;
end
end
end
figure;
imshow(L,[]);title('Laplace算子锐化处理后图像')
[m,n]=size(T);
AL(1:
m,1:
n)=I(1:
m,1:
n)+T(1:
m,1:
n);
Figure;imshow(AL);title('叠加图');