J(i,j)=k2*(I(i,j)-fa);
else
J(i,j)=0;
end
end
end
figure;
imshow(J);
3.4直方图均衡化处理详细设计
img=imread('123.bmp');
p=rgb2gray(img);
h=imhist(p);
h1=h(1:
2:
256);
h2=1:
2:
256;
stem(h2,h1,'r--');
figure,imhist(p);
四、调试过程中出现的问题及相应解决办法
1.本软件大多数功能实现是针对二值图像,如果输入图像为RGB图像如:
腐蚀,膨胀将无法处理显示,请先进行RGB图像转二值图像操作后再进行其他处理,图像在进行二值转换时要注意阙值的大小,以便使得图片的效果最佳。
2.其次是图片的路径问题,首先得找到图片所在的位置,否则会显示错误。
3.调试过程中要注意Tag的属性设置和String的属性,正确赋值,防止错误运。
五、程序运行截图及其说明
1.打开文件
图5.1
2.打开图片后如图5.2
图5.2
3.点击图像处理下的对比度扩展
图5.3
4.点击图像处理下的灰级窗处理
图5.4
5.点击图像处理下的直方均衡化
图5.5
6.点击文件目录下的保存进行保存
图5.6
六、简单操作手册
如果装有matlab软件直接双击导入相应函数之后,点击“回车”键程序,实现相应的功能。
运行程序出现界面:
图6.1开始界面
点击文件,再点击打开,选择原图:
点击图像处理,选择灰级窗/对比度线性展宽/直方均衡化
图6.3
图6.4
图6.5
点击文件,选择保存,保存图像
图6.7
设计总结
通过本次课程设计,使我对《计算机图像处理》这门课程有了更深入的理解。
《计算机图像处理》是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。
一个人的力量是有限的,要想把课程设计做的更好,就要学会参考一定的资料,吸取别人的经验,让自己和别人的思想有机的结合起来,得出属于你自己的灵感。
程序的编写需要有耐心,有些事情看起来很复杂,但问题需要一点一点去解决,分析问题,把问题一个一个划分,划分成小块以后就逐个去解决。
再总体解决大的问题。
这样做起来不仅有条理也使问题得到了轻松的解决。
在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。
生活就是这样,汗水预示着结果也见证着收获。
劳动是人类生存生活永恒不变的话题。
虽然这只是一次的极简单的课程制作,可是平心而论,也耗费了我不少的心血,这就让我不得不佩服开发技术的前辈,才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血啊!
对我而言,知识上的收获重要,精神上的丰收更加可喜。
让我知道了学无止境的道理。
我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。
挫折是一份财富,经历是一份拥有。
这次课程设计必将成为我人生旅途上一个非常美好的回忆!
通过这次的课程设计我对于专业课的学习有了更加深刻的认识,以为现在学的知识用不上就加以怠慢,等到想用的时候却发现自己的学习原来是那么的不扎实。
以后努力学好每门专业课,让自己拥有更多的知识,才能解决更多的问题!
参考资料
[1]张力,VisualC++高级编程,人民邮电出版社,2002
[2]何斌,马天予,王运坚,红莲等编著,VisualC++数字图像处理,人民邮电出版社,2002
[3]白乔,左飞,把脉VisualC++,电子工业出版社,2009
[4]章毓晋.图像处理和分析基础[M].北京:
高等教育出版社.2002.
[5]钟志光,鲁君,刘伟荣.VC++.NET数字图像处理实例与解析[M].清华大学出版社,2003.
[6]汪翔袁辉,VisualC++实践与提高,中国铁道出版社,2001
致谢
首先感谢我的指导老师徐志刚老师,她在我的综合训练过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。
感谢我的计算机图像处理老师徐志刚老师和在以往的基础课学习中为我打下良好的基础,这是我这次综合训练能够顺利完成的前提。
还有我的同学,在设计过程与完成后对程序的测试,没有他们,也许就难以发现一些潜在的错误,在此一并表示感谢。
附录
functionvarargout=untitled(varargin)
%UNTITLEDM-fileforuntitled.fig
%UNTITLED,byitself,createsanewUNTITLEDorraisestheexisting
%singleton*.
%
%H=UNTITLEDreturnsthehandletoanewUNTITLEDorthehandleto
%theexistingsingleton*.
%
%UNTITLED('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinUNTITLED.Mwiththegiveninputarguments.
%
%UNTITLED('Property','Value',...)createsanewUNTITLEDorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeuntitled_OpeningFunctiongetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtountitled_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpuntitled
%LastModifiedbyGUIDEv2.509-Jan-201311:
18:
34
%Begininitializationcode-DONOTEDIT
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
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforeuntitledismadevisible.
functionuntitled_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstountitled(seeVARARGIN)
%Choosedefaultcommandlineoutputforuntitled
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakesuntitledwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure_pj);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=untitled_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=handles.output;
%--------------------------------------------------------------------
functionm_file_open_Callback(hObject,eventdata,handles)
%hObjecthandletom_file_open(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
[filename,pathname]=uigetfile(...
{'*.bmp;*.jpg;*.png;*.jpeg','ImageFiles(*.bmp,*.jpg,*.png,*.jpeg)';...
'*.*','AllFiles(*.*)'},...
'Pickanimage');
ifisequal(filename,0)||isequal(pathname,0),
return;
end
axes(handles.axes_src);
fpath=[pathnamefilename];
img_src=imread(fpath);
imshow(img_src);
setappdata(handles.figure_pj,'img_src',img_src);
%--------------------------------------------------------------------
functionm_file_save_Callback(hObject,eventdata,handles)
%hObjecthandletom_file_save(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
[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_pj,'img_src');%取得打开图片的数据
imwrite(img_src,fpath);%保存图片
%--------------------------------------------------------------------
functionm_file_exit_Callback(hObject,eventdata,handles)
%hObjecthandletom_file_exit(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
close(handles.figure_pj);
%--------------------------------------------------------------------
functionm_file_Callback(hObject,eventdata,handles)
%hObjecthandletom_file(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%--------------------------------------------------------------------
functionm_image_Callback(hObject,eventdata,handles)
%hObjecthandletom_image(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%--------------------------------------------------------------------
functionm_image_hj_Callback(hObject,eventdata,handles)
%hObjecthandletom_image_hj(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
img_src=getappdata(handles.figure_pj,'img_src');
fa=45;
fb=160;
img_src=rgb2gray(img_src);
[m,n]=size(img_src);
J=double(img_src);
k2=255/(fb-fa);
fori=1:
m
fo