图像锐化程序设计.docx
- 文档编号:16265619
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:19
- 大小:716.44KB
图像锐化程序设计.docx
《图像锐化程序设计.docx》由会员分享,可在线阅读,更多相关《图像锐化程序设计.docx(19页珍藏版)》请在冰点文库上搜索。
图像锐化程序设计
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年秋季学期
图像处理综合训练
题目:
图像锐化程序设计
专业班级:
姓名:
学号:
指导教师:
成绩:
目录
摘要1
一、前言2
二、算法分析与描述3
三、详细设计过程6
四、调试过程中出现的问题及相应解决办法8
五、程序运行截图及其说明9
六、简单操作手册13
设计总结16
参考资料16
致谢19
附录21
摘要
这次综合训练要实现图象的锐化处理,图像锐化的目的是突出图象中的细节或者增强被模糊了的细节。
其主要被用于景物边界的检测与提取。
本次训练中用数字微分锐化的方法通过实现微分算子来将图象锐化。
用到的一阶微分算子有:
Robirts微分算子、Sobel微分算子、Priwitt微分算子等。
二阶微分算子用到了Laplacian微分算子。
通过实现不同的微分算子,得到对图象轮廓在不同程度上的提取。
关键词:
数字图象处理;图像锐化;微分算子
一、前言
图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。
随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。
数字图像处理(DigitalImageProcessing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
数字图像处理主要研究以下内容:
图像几何变换;如傅立叶变换、沃尔什变换、离散余弦变换等;图象锐化处理;图像编码压缩;图像增强和复原;图像分割;图像描述;图像分类(识别)。
其中图象锐化处理的目的是使模糊的图像变得更加清晰起来。
图像的模糊实质就是图像受到平均或积分运算造成的,因此可以对图像进行逆运算如微分运算来使图像清晰化。
微分运算是通过实现微分算子来对图像进行锐化。
微分算子有一阶微分算子和二阶微分算子。
二、算法分析与描述
2.1Sobel微分算子函数
Sobel算子就是对当前行或列对应的值加权后,再进行平均和差分,也称为加权平均差分。
水平和垂直梯度模板分别为:
Sobel算子和Prewitt算子一样,都在检测边缘点的同时具有抑制噪声的能力,检测出的边缘宽度至少为二像素。
由于它们都是先平均后差分,平均时会丢失一些细节信息,使边缘有一定的模糊。
但由于Sobel算子的加权作用,其使边缘的模糊程度要稍低于程度要稍低于Prewitt算子。
2.2Roberts交叉微分算子函数
Roberts梯度就是采用对角方向相邻两像素之差,故也称为四点差分法。
对应的水平和垂直方向的模板为:
标注的是当前像素的位置(i,j)为当前像素的位置,其计算公式如下:
特点:
用4点进行差分,以求得梯度,方法简单。
其缺点是对噪声较敏感,常用于不含噪声的图像边缘点检测。
梯度算子类边缘检测方法的效果类似于高通滤波,有增强高频分量,抑制低频分量的作用。
这类算子对噪声较敏感,而我们希望检测算法同时具有噪声抑制作用。
所以,下面给出的平滑梯度算子法具有噪声抑制作用。
2.3Priwitt微分算子函数
因为平均能减少或消除噪声,Prewitt梯度算子法就是先求平均,再求差分来求梯度。
水平和垂直梯度模板分别为:
利用检测模板可求得水平和垂直方向的梯度,再通过梯度合成和边缘点判定,就可得到平均差分法的检测结果。
2.4拉普拉斯微分算子函数
对数字图像f(m,n),用差分代替二阶偏导,则Laplacian算子为:
写成检测模板为:
Laplacian检测模板的特点是各向同性,对孤立点及线端的检测效果好,但边缘方向信息丢失,对噪声敏感,整体检测效果不如梯度算子。
三、详细设计过程
.
3.1.仔细阅读Matlab帮助文件中有关以上函数的使用说明,能充分理解其使用方法并能运用它们完成实验内容。
3.2.将lena.jpg图像文件读入Matlab,使用imfilter函数分别采用Sobel,Laplacian算子对其作锐化运算,显示运算前后的图像。
算子输入方法:
(1)用fspecial函数产生垂直方向sobel算子,产生Laplacian算子时alpha参数选择0
(2)直接输入,其中Sobel算子形式为
(水平Sobel)(垂直Sobel)
Laplacian算子形式为
。
对于Sobel算子,采用生成图像;对于Laplacian算子,直接采用计算结果作为锐化后图像。
3.3.将lena.jpg图像文件读入Matlab,按照以下步骤对其进行处理:
1)用带对角线的Laplacian对其处理,以增强边缘。
对角线Laplacian算子为。
2)将1)结果叠加到原始图像上。
可以看出噪声增强了(Laplacian算子对噪声敏感),应想法降低。
3)获取Sobel图像并用imfilter对其进行5×5邻域平均,以减少噪声。
4)获取2)和3)相乘图像,噪声得以减少。
5)将4)结果叠加到原始图像上。
6)最后用imadjust函数对5)结果做幂指数为0.2的灰度变换。
3.4设计流程图
四、调试过程中出现的问题及相应解决办
语法错误:
由于疏忽、输入不正确等原因而造成的代码违背程序语言规则的错误。
运行错误:
由于对所求解问题的理解差异,导致程序流程出错或对程序本身的特性认识有误而造成的程序执行结果错误的情况。
异常:
程序执行过程中由于不满足条件而造成的程序执行错误。
语法错误是最常犯的错误,例如,变量或函数名拼写错误、缺少引号或括号等。
并且当MATLAB运行发现这些错误时会立即标识出这些错误,并说明错误的类型以及在M文件中的位置,
在出现错误后认真检查代码,找出代码的错误并改正。
根据标识出错的代码进行改正。
最终使代码正确运行。
五、程序运行截图及其说明
图5.1为操作时用到的原图
图5.1Lena原图-24位色
图5.2到5.5是将原图5.1锐化后的结果
图5.2Roberts微分算子处理图像
图5.3Sobel微分算子处理图像
图5.4Priwitt微分算子处理图像
图5.5Laplacian微分算子处理图
六、简单操作手册
本系统主要是用微分算子来实现图像的锐化,在该程序实现的过程中,主要的实现步骤有:
1、选取张目标图像文件,在计算机图象驱动程序中显示;
2、实现用一阶微分算子对图像的锐化(包括Roberts微分算子,Sobel微分算子Priwitt微分算子);
3、实现用二阶微分算子对图像的锐化(用Laplacian微分算子);
4、将处理后的图象与原图进行比较,图象锐化后的图象与原图象存在的差别较大。
具体操作过程如下:
进入操作界面
图6.1进入操作界面
打开要操作的图像
图6.2打开要操作的图像
从菜单中找到图像锐化进行操作
图6.3操作菜单
如用Roberts微分算子进行锐化后的图像:
图6.4Roberts微分算子进行锐化后的图像
用Sobel微分算子进行锐化后的图像
图6.5Sobel微分算子进行锐化后的图像
若要用其他算子进行图像锐化,可用同样的方法。
设计总结
锐化(sharpening)和平滑恰恰相反,它是通过增强高频分量来减少图象中的模糊,因此又称为高通滤波(highpassfilter)。
锐化处理在增强图象边缘的同时增加了图象的噪声。
在图象边界轮廓的部分要采用高通滤波。
因为边界轮廓灰度值相差很大,呈现出高频特性。
而图像内部则是灰度变化平缓,对应的应该是低频部分。
由实验结果可以分析看出,如果一片暗区出现了一个亮点,那么锐化处理的结果是这个亮点变得更亮,增加了图象的噪声。
参考资料
[1]朱虹.计算机图象处理基础[M].科学出版社,2005
[2]RC.Gonzalez,RE.Woods著,阮秋琦,阮宇智等译.计算机图象处理(第2版).北京:
电子工业出版社,2003
[3]K.R.Castleman.计算机图象处理.北京:
电子工业出版社,2002
[4]章毓晋.图像处理与分析-图像工程(上册),清华大学,2001
[5]何斌等编著.VisualC++计算机图象处理.人民邮电出版社,2002
[6]张宏林编著.VisualC++计算机图象模式识别技术及工程实践.人民邮电出版社,2003.
致谢
这次课程综合训练做完后要感谢的人太多了。
首先感谢我的指导老师朱红蕾老师,她在我的课程设计过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。
感谢我的计算机图象处理老师徐志刚和面向对象C++老师刘嘉在以往的基础课学习中为我打下良好的基础,这是我这次课程设计能够顺利完成的前提。
感谢我的同学们,他们与我一起探讨问题,帮助我完成了课程设计。
附录
functionvarargout=untitled(varargin)
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@untitled_OpeningFcn,...
'gui_OutputFcn',@untitled_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
guidata(hObject,handles);
functionvarargout=untitled_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
functionm_file_Callback(hObject,eventdata,handles)
functionSobel_Callback(hObject,eventdata,handles)
T=150;%设定阈值
img_src=getappdata(handles.figure_untitled,'img_src');
A=img_src;
axes(handles.axes);
%A=imread('C:
\Users\Administrator\Desktop\新建文件夹\lena.jpg');
%imshow(A);title('原图');
A=double(A);
S=size(A);
%figure
(1)
axes(handles.axes);
imshow(A)
colormap(gray(256))
%title(wuzao,fontsize,18,fontweight,bold,fontname,Arial
I=imread('lena.jpg');
[H,W]=size(I);
M=double(I);
J=M;
fori=2:
H-1
forj=2:
W-1
J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+2*M(i,j+1)-2*M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i-1,j-1)-M(i+1,j-1)+2*M(i-1,j)-2*M(i+1,j)+M(i-1,j+1)-M(i+1,j+1));
end;
end;
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(uint8(J));title('Sobel处理后');
functionRobert_Callback(hObject,eventdata,handles)
img_src=getappdata(handles.figure_untitled,'img_src');
A=img_src;
axes(handles.axes);
%imshow(A);
%title('原图');
%A=getappdata(handles.figure1_untitled,'A');
x_mask=[10;0-1];
y_mask=rot90(x_mask);
I=im2double(A);
dx=imfilter(I,x_mask);
dy=imfilter(I,y_mask);
grad=sqrt(dx.*dx+dy.*dy);
grad=mat2gray(grad);
axes(handles.axes);
BW=im2bw(grad,level);
%figure,
imshow(BW);
title('Roberts')
I=imread('lena.jpg');
[H,W]=size(I);
M=double(I);
J=M;
fori=1:
H-1
forj=1:
W-1
J(i,j)=abs(M(i,j)-M(i+1,j+1))+abs(M(i+1,j)-M(i,j+1));
end;
end;
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(uint8(J));title('Roberts处理后');
functionPriwitt_Callback(hObject,eventdata,handles)
img_src=getappdata(handles.figure_untitled,'img_src');
A=img_src;
axes(handles.axes);
%imshow(A);title('原图');
y_mask=[-1-1-1;000;111];
x_mask=y_mask';
I=im2double(A);
dx=imfilter(I,x_mask);
dy=imfilter(I,y_mask);
grad=sqrt(dx.*dx+dy.*dy);
grad=mat2gray(grad);
level=graythresh(grad);
axes(handles.axes);
BW=im2bw(grad,level);
%figure,
imshow(BW);
title('Prewitt')
I=imread('lena.jpg');
[H,W]=size(I);
M=double(I);
J=M;
fori=2:
H-1
forj=2:
W-1
J(i,j)=abs(M(i-1,j+1)-M(i-1,j-1)+M(i,j+1)-M(i,j-1)+M(i+1,j+1)-M(i+1,j-1))+abs(M(i+1,j-1)-M(i-1,j-1)+M(i+1,j)-M(i-1,j)+M(i+1,j+1)-M(i-1,j+1));
end;
end;
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(uint8(J));title('Prewitt处理后');
functionLaplas_Callback(hObject,eventdata,handles)
img_src=getappdata(handles.figure_untitled,'img_src');
A=img_src;
axes(handles.axes);
%A=imread('C:
\Users\Administrator\Desktop\新建文件夹\lena.jpg');
%imshow(A);title('原图');
mask=[0,-1,0;-1,4,-1;0,-1,0];
I=im2double(A);
dx=imfilter(I,mask);
grad=mat2gray(dx);
axes(handles.axes);
BW=im2bw(grad,0.58);
%figure,
imshow(BW);
title('Laplacian')
I=imread('lena.jpg');
[H,W]=size(I);
M=double(I);
J=M;
fori=2:
H-1
forj=2:
W-1
J(i,j)=4*M(i,j)-[M(i+1,j)+M(i-1,j)+M(i,j+1)+M(i,j-1)];
end;
end;
subplot(1,2,1);imshow(I);title('原图');
subplot(1,2,2);imshow(uint8(J));title('锐化处理后的图');
functionm_file_open_Callback(hObject,eventdata,handles)
[filename,pathname]=uigetfile(...
{'*.bmp;*.jpg;*.png;*.jpeg','ImageFiles(*.bmp,*.jpg,*.png,*.jpeg)';...
'*.*','AllFiles(*.*)'},...
'Pickanimage');
axes(handles.axes1);
fpath=[pathnamefilename];
img_src=imread(fpath);
imshow(img_src);
title('原图');
setappdata(handles.figure_untitled,'img_src',img_src);
functionm_file_save_Callback(hObject,eventdata,handles)
[filename,pathname]=uiputfile({'*.bmp','BMPfiles';'*.jpg;','JPGfiles'},'PickanImage');
ifisequal(filename,0)||isequal(pathname,0)
return;%如果点了“取消”
else
fpath=fullfile(pathname,filename);
end
img_src=getappdata(handles.figure_untitled,'img_src');
imwrite(img_src,fpath);
functionm_file_exit_Callback(hObject,eventdata,handles)
close(handles.figure_untitled);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 锐化 程序设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)