图像锐化算法设计说明书.docx
《图像锐化算法设计说明书.docx》由会员分享,可在线阅读,更多相关《图像锐化算法设计说明书.docx(41页珍藏版)》请在冰豆网上搜索。
图像锐化算法设计说明书
摘要
随着计算机的普及,图像处理的应用领域必然涉及到人类生活和工作的方方面面。
在图像增强过程中,通常利用各类图像平滑算法消除噪声,图像的常见噪声主要有加性噪声、乘性噪声和量化噪声等。
一般来说,图像的能量主要集中在其低频部分,噪声所在的频段主要在高频段,同时图像边缘信息也主要集中在其高频部分。
这将导致原始图像在平滑处理之后,图像边缘和图像轮廓模糊的情况出现。
为了减少这类不利效果的影响,就需要利用图像锐化技术,使图像的边缘变得清晰。
图像锐化处理的目的是为了使图像的边缘、轮廓线以及图像的细节变得清晰,经过平滑的图像变得模糊的根本原因是因为图像受到了平均或积分运算,因此可以对其进行逆运算(如微分运算)就可以使图像变得清晰。
本次训练中用数字微分锐化的方法通过实现微分算子来将图象锐化,通过实现不同的微分算子,得到对图象轮廓在不同程度上的提取。
关键词:
图像处理;锐化;微分算子
引言
数字图像处理中图像锐化的目的有两个:
一是增强图像的边缘,使模糊的图像变得清晰起来;这种模糊不是由于错误操作,就是特殊图像获取方法的固有影响。
二是提取目标物体的边界,对图像进行分割,便于目标区域的识别等。
通过图像的锐化,使得图像的质量有所改变,产生更适合人观察和识别的图像。
数字图像的锐化可分为线性锐化滤波和非线性锐化滤波。
如果输出像素是输入像素领域像素的线性组合则称为线性滤波,否则称为非线性滤波。
本次设计将用几个方法对图像进行锐化处理,从而比较几个方法的强弱。
1需求分析
本次课程设计的主要内容如下:
1、一阶微分锐化:
构建一阶锐化加法函数,并实现锐化;
2、二阶微分锐化:
实现拉普拉斯锐化;
3、一二阶混合锐化:
一阶乘法和二阶加法混合的锐化算法实现;
4、统计锐化:
沃利斯统计差分法等基于局部统计信息的锐化算法实现。
通过这几个方法对图像进行锐化处理,从而看出这几个锐化方法的优缺点以及方法的强弱。
1.1任务与分析
(一)一阶微分锐化
建立一个一阶微分Sobel算子,利用该算子对原始图像进行一阶梯度提取,然后将提取后得到的图像与原始图像进行相加,从而实现对图像的锐化处理。
(二)二阶微分锐化
使用拉普拉斯算子来对图像的锐化处理,其原理是:
离散拉普拉斯所用的滤波器掩膜,用H1(如下)与原图进行卷积,得到中心像素点与邻域像素点的差值。
(三)一二阶混合锐化
混合空间增强是一种结合一阶和二阶微分的图像锐化处理的技术方法,混合空间增强法是综合了二者的长处的一种锐化方法。
(四)统计锐化
统计锐化方法,主要利用标准差以及
这两个公式实现对图像的锐化。
1.2测试数据
图2.1原图2
图2.2图片2
2概要设计
2.1 一阶锐化的实现
一阶锐化的实现,利用Sobel算子进行运算,其中Sobel锐化算子计算公式如下:
其模板:
其原理图为:
Sobel梯度提取
与原图A相加
图2.3一阶流程图
2.2 二阶锐化的实现
二阶微分锐化其算法为:
将其写成模板系数形式形式即为拉普拉斯算子:
其原理图为:
用H1与原图进行卷积
与原图A相加
图2.4二阶流程图
2.3 一二阶混合锐化的实现
一二阶混合锐化是通过利用Sobel算子和拉普拉斯算子经过一系列的变化实现锐化。
一二阶混合锐化也是就混合空间增强法,它是综合了二者的长处的一种锐化方法。
其原理图为:
原图A
图B
原图A
Sobel梯度提取
拉普拉斯锐化
领域平滑
与原图A相加
图2.5一二阶混合流程图
2.4 统计锐化的实现
统计锐化是通过对一二阶锐化方法的改进所得到的图像。
主要利用
(1)及
(2)
这两个公式实现对图像的锐化。
其原理图为:
原图A
原图A
利用公式
(1)进行梯度提取
利用
(2)进行锐化
进行高斯平滑
与原图A相加
最后结果
图像F
图2.6统计锐化流程图
3 详细设计
3.1 一阶锐化的设计
对于一阶锐化方法,有许多可以利用的算子,在实际的操作中,我们使用Sobel算子来描述二维的一阶差分。
Sobel算子是一阶导数的边缘检测算子,在算法实现过程中,通过3×3模板作为核与图像中的每个像素点做卷积和运算,然后选取合适的阈值以提取边缘。
采用3×3邻域可以避免在像素之间内插点上计算梯度。
Sobel算子也是一种梯度幅值,即:
其中的偏导数
和
可用卷积模板来实现。
通过Sobel算子对图像进行一阶提取后然后与原图像相加,从而实现一阶微分运算。
代码如下:
f=imread('2.jpg');
figure
(1);
imshow(f);
title('原图');
imwrite(f,'F:
\MATLAB\bin\实验效果图\一阶锐化原图.jpg');
f1=im2double(f);%把图像数据类型转换为double类型
[m,n]=size(f);
h2=[1,0,-1;2,0,-2;1,0,-1];
h3=[-1,-2,-1;0,0,0;1,2,1];
Sx=imfilter(f1,h2);
Sy=imfilter(f1,h3);
g1=size(m,n);
fori=1:
m
forj=1:
n
g1(i,j)=sqrt((Sx(i,j))^2+(Sy(i,j))^2);
end
end
k=0.3;
%k=0.1;
%k=0.6;
%k=1;
s=f1+k.*g1;
figure
(2);
imshow(s);
title('Sobel算子相加后的结果');
imwrite(s,'F:
\MATLAB\bin\实验效果图\k=0.3时,一阶锐化图.jpg');
%imwrite(s,'F:
\MATLAB\bin\实验效果图\k=0.1时,一阶锐化图.jpg');
%imwrite(s,'F:
\MATLAB\bin\实验效果图\k=0.6时,一阶锐化图.jpg');
%imwrite(s,'F:
\MATLAB\bin\实验效果图\k=1时,一阶锐化图.jpg');
3.2 二阶锐化的设计
图像锐化处理的作用是使灰度反差增强,从而使模糊图像变得更加清晰。
由于拉普拉斯是一种微分算子,它的应用可增强图像中灰度突变的区域,减弱灰度的缓慢变化区域。
因此,锐化处理可选择拉普拉斯算子对原图像进行处理,产生描述灰度突变的图像,再将拉普拉斯图像与原始图像叠加而产生锐化图像。
拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性。
如果邻域系统是4邻域,拉普拉斯算子的模板为:
0
-1
0
-1
4
-1
0
-1
0
如果邻域系统是8邻域,拉普拉斯算子的模板为:
-1
-1
-1
-1
8
-1
-1
-1
-1
代码如下:
J=imread('图片2.jpg');
[m,n]=size(J);
I=double(J);
M=I;
fori=2:
m-1
forj=2:
n-1
M(i,j)=4*I(i,j)-[I(i+1,j)+I(i-1,j)+I(i,j+1)+I(i,j-1)];
end;
end;
%fori=3:
m-2
%forj=3:
n-2
%M(i,j)=8*I(i,j)-[I(i-1,j-1)+I(i-1,j+1)+I(i+1,j)+I(i+1,j-1)+I(i+1,j+1)+I(i-1,j)+I(i,j+1)+I(i,j-1)];
%end;
%end;
s=uint8(M)+J;
figure
(1);
imshow(J);
title('原图');
imwrite(J,'F:
\MATLAB\bin\实验效果图\二阶锐化原图.jpg');
figure
(2);
imshow(s);
title('锐化处理后的图');
imwrite(s,'F:
\MATLAB\bin\实验效果图\二阶(中心为4)锐化效果图.jpg');
%imwrite(s,'F:
\MATLAB\bin\实验效果图\二阶(中心为8)锐化效果图.jpg');
3.3 一二阶混合锐化的设计
一二阶混合锐化是对问题一和问题二的结合,主要通过以下几个步骤实现:
(1)利用Sobel算子对原始图像进行一阶梯度提取,得到图B;
(2)对图B做领域均值平滑,得到图C;
(3)利用拉普拉斯算子(邻域系统是4)对原始图像进行锐化,得到图D;
(4)图C和图D进行相乘,得到图E;
(5)图E与原始图像相加,得到图F;
(6)最后对图F进行亮度和灰度的调整,得到最终图像。
代码如下:
f=imread('图片2.jpg');
[m,n]=size(f);
subplot(121);
imshow(f);
title('原始图像');
imwrite(f,'F:
\MATLAB\bin\实验效果图\一二阶混合锐化原图.jpg');
f1=im2double(f);%把图像数据类型转换为double类型
h2=[1,0,-1;2,0,-2;1,0,-1];
h3=[-1,-2,-1;0,0,0;1,2,1];
Sx=imfilter(f1,h2);
Sy=imfilter(f1,h3);
g1=size(m,n);
fori=1:
m
forj=1:
n
g1(i,j)=sqrt((Sx(i,j))^2+(Sy(i,j))^2);
end
end
subplot(122);
imshow(g1);
title('用Sobel算子处理后的梯度图像');
imwrite(g1,'F:
\MATLAB\bin\实验效果图\一二阶混合Sobel处理后的梯度图像.jpg');
g2=zeros(m,n);
forx=2:
m-1
fory=2:
n-1
fora=-1:
1
forb=-1:
1
g2(x,y)=(g2(x,y)+g1(x+a,y+b))/9;
end
end
end
end
%g2=zeros(m,n);
%forx=3:
m-2
%fory=3:
n-2
%fora=-2:
2
%forb=-2:
2
%g2(x,y)=(g2(x,y)+g1(x+a,y+b))/25;
%end
%end
%end
%end
forc=1:
m
ford=1:
n
g2(c,1)=g1(c,1);
g2(1,d)=g1(1,d);
end
end
figure
(2);
subplot(121);
imshow(g2);
title('领域均值平滑后的Sobel图像');
imwrite(g2,'F:
\MATLAB\bin\实验效果图\一二阶混合领域均值平滑(3)后的图像.jpg');
%imwrite(g2,'F:
\MATLAB\bin\实验效果图\一二阶混合领域均值平滑(5)后的图像.jpg');
h3=[0,-1,0;-1,4,-1;0,-1,0];
g3=imfilter(f1,h3);
subplot(122);
imshow(g3);
title('拉普拉斯变换后的图像');
imwrite(g3,'F:
\MATLAB\bin\实验效果图\一二阶混合拉普拉斯变换后的图像.jpg');
g4=g3+f1;
figure(3);
subplot(121);
imshow(g4)
title('相加后得到的锐化图像');
imwrite(g4,'F:
\MATLAB\bin\实验效果图\一二阶混合相加后得到的锐化图像.jpg');
g5=g4.*g2;
subplot(122);
imshow(g5);
title('相乘后形成的掩蔽图像');
imwrite(g5,'F:
\MATLAB\bin\实验效果图\一二阶混合相乘后形成的掩蔽图像.jpg');
g6=g5+f1;
figure(4);
subplot(121);
imshow(g6);
title('原图与掩蔽图像之和的到的图像');
imwrite(g6,'F:
\MATLAB\bin\实验效果图\一二阶混合原图与掩蔽图像之和的图像.jpg');
gamma=2;
c=1.8;
g7=c.*g6.^gamma;
subplot(122);
imshow(g7);
title('最后得到的图像');
imwrite(g7,'F:
\MATLAB\bin\实验效果图\一二阶混合最后得到的图像.jpg');3.4 统计锐化的设计
统计锐化是对问题三的改进所得,主要通过以下几个步骤实现:
(1)利用对原始图像进行一阶梯度提
取,得到图B;
(2)对图B做高斯平滑,得到图C;
(3)利用高频成分叠加法对原始图像进行锐化,得到图D;
(4)图C和图D进行相乘,得到图E;
(5)图E与原始图像相加,得到图F;
(6)最后对图F进行亮度和灰度的调整,得到最终图像。
代码如下:
f=imread('图片2.jpg');
subplot(121);
imshow(f);
title('原始图像');
imwrite(f,'F:
\MATLAB\bin\实验效果图\统计锐化原图.jpg');
f1=im2double(f);
[H,W]=size(f);
M=double(f);
J=M;
sum=0;
s=0;
fori=2:
H-1
forj=2:
W-1
form=i-1:
i+1
forn=j-1:
j+1
sum=sum+M(m,n);
end
end
avg=sum/9;
sum=0;
form=i-1:
i+1
forn=j-1:
j+1
s=s+((M(m,n)-avg).^2);
end
end
avg1=s/9;
s=0;
J(i,j)=sqrt(avg1);
if(J(i,j)<0)
J(i,j)=0;
end
if(J(i,j)>255)
J(i,j)=255;
end
end
end
g11=uint8(J);
subplot(122);
imshow(g11);
title('一阶微分提取');
g1=im2double(g11);
imwrite(g11,'F:
\MATLAB\bin\实验效果图\统计锐化一阶微分提取梯度图像.jpg');
f11=fspecial('gaussian',[33],10);%高斯模板
g22=imfilter(g11,f11,'same');%滤波
figure
(2);
subplot(121);
imshow(g22);
title('高斯平滑后的图像');
g2=im2double(g22);
imwrite(g22,'F:
\MATLAB\bin\实验效果图\统计锐化高斯平滑后的图像.jpg');
[H1,W1]=size(f);
M1=double(f);
J1=M1;
sum=0;
%k=5;
%k=1;
%k=10;
k=15;
fori=2:
H1-1
forj=2:
W1-1
form=i-1:
i+1
forn=j-1:
j+1
sum=sum+M1(m,n);
end
end
avg=sum/9;
sum=0;
J1(i,j)=k.*(J1(i,j)-avg);
if(J1(i,j)<0)
J1(i,j)=0;
end
if(J1(i,j)>255)
J1(i,j)=255;
end
end
end
g33=uint8(J1);
subplot(122);
imshow(g33);
title('高频成分叠加法后的图像');
g3=im2double(g33);
%imwrite(g33,'F:
\MATLAB\bin\实验效果图\统计锐化高频成分叠加法后的图像(k为5).jpg');
%imwrite(g33,'F:
\MATLAB\bin\实验效果图\统计锐化高频成分叠加法后的图像(k为1).jpg');
%imwrite(g33,'F:
\MATLAB\bin\实验效果图\统计锐化高频成分叠加法后的图像(k为10).jpg');
imwrite(g33,'F:
\MATLAB\bin\实验效果图\统计锐化高频成分叠加法后的图像(k为15).jpg');
g4=g3+f1;
figure(3);
subplot(121);
imshow(g4)
title('高频成分叠加法后的锐化图像');
imwrite(g4,'F:
\MATLAB\bin\实验效果图\统计锐化高频成分叠加法后的锐化图像.jpg');
g5=g4.*g2;
subplot(122);
imshow(g5);
title('相乘后形成的掩蔽图像');
imwrite(g5,'F:
\MATLAB\bin\实验效果图\统计锐化相乘后形成的掩蔽图像.jpg');
g6=g5+f1;
figure(4);
subplot(121);
imshow(g6);
title('原图与掩蔽图像之和的到的图像');
imwrite(g6,'F:
\MATLAB\bin\实验效果图\统计锐化原图与掩蔽图像之和的到的图像.jpg');
gamma=2;
c=1.8;
g7=c.*g6.^gamma;
figure(4);
subplot(122);
imshow(g7);
title('最后得到的图像');
imwrite(g7,'F:
\MATLAB\bin\实验效果图\统计锐化最后得到的图像.jpg');
4调试分析
4.1一阶锐化调试
调试试分析:
不同的算子得到的最后结果图像不同,其中Sobel算子得到的锐化图像对变化区域(边缘)的变化描述较好,当其中k取值不同时,得到的效果不一样。
其效果图如下:
图4.1原图2
当k=0.1时:
图4.2锐化后图像
当k=0.3时:
图4.3锐化后图像
当k=0.6时:
图4.4锐化后图像
当k=1时:
图4.5一阶锐化后图像
4.2二阶锐化调试
调试分析:
拉普拉斯微分算子所提取出的细节较一阶微分算子提出的细节多,表明了拉普拉斯算子在对图像细节更加敏感。
对于拉普拉斯微分算子邻域系统不同,最后所得到的锐化图像效果不同。
其效果图如下:
图4.6目标图像
图4.7二阶锐化后图像(中心为4)
图4.8二阶锐化后图像(中心为8)
4.3一二阶混合锐化调试
调试试分析:
一二阶混合锐化综合了二者的长处的一种锐化方法,所得到的最后效果比一阶、二阶的效果都要好,但是其最后结果图不太稳定。
在进行领域均值平滑时,利用3
3的模板与利用5
5的模板所得到的平滑图像效果不同。
其效果图如下:
图4.9原始图像
图4.10Sobel梯度提取图像
图4.11平滑图像(3
3)
图4.12拉普拉斯图像
图4.13锐化图像
图4.14掩蔽图像
图4.15相加得到的图像
图4.16最后得到的图像
3
3的模板与利用5
5的模板所得到的平滑图像的比较:
图4.173
3平滑图像
图4.185
5平滑图像
最后结果图不太稳定,其线条有点弯曲,效果如下:
图4.19最后局部图像
4.4统计锐化调试
调试的分析:
对于高频成分叠加法,公式
(2)中,k的取值不同,会导致其提取的图像效果不同,但是总的来说对最后效果图的影响不大。
总的来说,统计锐化方法比一二阶混合锐化方法要稳定一些。
其效果图如下所示:
图4.20原始图像
图4.21梯度提取图像
图4.22高斯平滑图像
图4.23高频成分叠加法后的提取图像
图4.24高频成分叠加法后的锐化图像
图4.25掩蔽图像
图4.26相加得到的图像
图4.27最后得到的图像
当k的值取值不同时,其提取效果图为:
k=1时:
图4.28提取图像
k=5时:
图4.29提取图像
k=10为:
图4.30提取图像
k=15为:
图4.31提取图像
最后结果图的局部效果如下:
图4.32最后局部图像
从图4.19和图4.31的比较可以看出,统计锐化方法比一二阶混合锐化方法要稳定一些。
5 用户使用说明
本系统主要是用微分算子来实现图像的锐化,在该程序实现的过程中,主要的实现步骤有:
1、选取目标图像;
2、实现用一阶微分算子对图像的锐化(用Sobel微分算子);
3、实现用二阶微分算子对图像的锐化(用拉普拉斯微分算子);
4、实现用一二阶混合对图像的锐化;
5、实现用统计锐化对图像的锐化;
6 测试结果
经过上述测试,对于本次的课程设计要求的几个方法实现图像的锐化都能够基本完成,从其中也能够看出这几个锐化方法的优缺点以及这四个方法实现锐化的强弱。
总的来说,这次的编程能够较清楚地实现几个方法对图像的锐化,符合本次课程设计的要求。
结论
课程综合训练的时间已接近尾声,在这次的综合训练中,我才正真体会到了知识用时方恨少的滋味。
不过这次的综合训练让我受益匪浅,真正的锻炼了我的动手能力。
并且使我对书本上的知识有了更深入的了解。
以前在上图像处理课时,只知道图像锐化就是用数学公式来计算的。
通过这次的训练才明白那些微分算子后面原来隐藏着好多知识,运用它们锐化后的图像发生了很大的变化。
在做这次设计过程中,也遇到了很多问题,在这种情况下同学们对我的帮忙很大,我非常感激!
还感受到同学们坐在一起讨论问题时的快乐。
这次的综合训练也使我对数字图像产生了浓厚的兴趣。
终于对我们在日常生活中用的一些拍照设备的原理有了一点了解。
总之,这次的训练很有意义。
致谢
经过课程设计的训练,我学到了许多,也成熟了许多。
这次课程综合训练能够顺利做完,要感谢大家的帮助。
首先感谢我的指导老师罗晓辉老师,他在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。
其次要感谢同学们热心的帮助,每当我有一些困难去问同学的时候,他们都会很热心的帮助我,正是因为有了同学和老师的帮助,才能使我这次的课程设计得以顺利的完成。
从他们身上我也学到了很多:
对于编程还是有很多可学习的地方,不仅要掌握好相关知识,而且做事要细心,谨慎。
最后衷心的感谢老师和同学的帮助。
参考文献
[1]朱虹.计算机图象处理基础[M].科学出版社,2005
[2]RC.Gonzalez,RE.Woods著,阮秋琦,阮宇智等译.计算机图象处理(第2版).北京:
电子工业出版社,2003
[