matlab界面编程实现灰度变换.docx
- 文档编号:2427803
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:17
- 大小:417.06KB
matlab界面编程实现灰度变换.docx
《matlab界面编程实现灰度变换.docx》由会员分享,可在线阅读,更多相关《matlab界面编程实现灰度变换.docx(17页珍藏版)》请在冰豆网上搜索。
matlab界面编程实现灰度变换
图形图像处理课程
大作业
姓名:
班级:
学号:
界面编程实现图像灰度变换
问题描述:
本课题主要解决的问题是通过MATLAB界面编程实现图像的灰度变换,包括线性灰度变换、对数灰度变换、幂律灰度变换,以此来实现图像增强,使图像更适合于进一步的分析和对它内容的提取。
实现界面编程可以更方便的对图片进行操作,例如可以打开任意一张需要处理的图片,可以使图像处理结果更直观,对比更明显,更利于进行观察,同时可以实现保存处理后的图片,这样,图像的操作更简洁、直接。
摘要
本次报告旨在完成以下几个任务:
1、MATLAB界面编程简介;
2、图像的灰度变换简介;
3、采用MATLAB Guide设计界面,设计实现下列功能的按钮:
可以读入并显示任意一张图像,可以实现图像灰度变换(线性变换、对数变换和幂律变换),可以保存处理后的图片,可以退出程序,点击相应的按钮可以实现相应的功能;
4、线性变换的算法设计与实现;
5、对数变换的算法设计与实现;
6、幂律变换的算法设计与实现。
结果如正文所示。
正文
1.MATLAB界面编程简介:
图形用户界面是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,如实现计算、绘图等。
若想制作一个可供反复使用且操作简单的专用工具,则图形用户界面是非常好的选择之一。
MATLAB中的GUIDE提供了多种设计GUI模板,并自动生成M文件框架,用户可以在该框架内写自己的函数代码,实现所需要的功能。
2.图像的灰度变换简介
图像的灰度变换处理是图像增强处理技术中一种非常基础、直接的空间域图像处理法,也是图像数字化软件和图像显示软件的一个重要组成部分。
灰度变换是指根据某种目标条件按一定变换关系逐点改变原图像中每一个像素灰度值的方法。
目的是为了改善画质,使图像的显示效果更加清晰。
有选择的突出图像中感兴趣的特征或者抑制图像中某些不需要的特征,使图像与视觉响应特征相匹配。
灰度变换是基于点操作的增强方法,它将每一个像素的灰度值按照一定的数学变换公式转换为一个新的灰度值,如增强处理中的对比度增强。
对比度增强可以采用线性拉伸和非线性拉伸。
线性拉伸可以将原始输入图像中的灰度值不加区别地扩展。
如果要求对局部扩展拉伸某一范围的灰度值,或对不同范围的灰度值进行不同的拉伸处理时,采用分段线性拉伸。
非线性拉伸常采用对数扩展和指数扩展。
对数扩展拉伸低亮度去,压缩高亮度区;指数扩展拉伸了高亮区,压缩了低亮度区。
3.采用MATLAB Guide设计界面
3.1问题分析:
采用MATLAB Guide设计界面,设计实现下列功能的按钮:
可以读入并显示任意一张图像;
可以实现图像灰度变换(线性变换、对数变换和幂律变换);
可以保存处理后的图片;
可以退出程序;
点击相应的按钮可以实现相应的功能。
3.2实验方法:
因为需要进行图形用户界面设计,所以先学习了MATLAB中GUIDE界面编程环境,熟悉界面设计的方法后,设计了需要的界面。
(1)在MATLAB命令窗口中输入“guide”,进入GUI窗口,选择CreateNewGUI,选择BlackGUI。
(2)在界面中添加两个axes,一个用于显示原图,一个用于显示处理后的图像,并设置每个axes的Tag值。
(3)添加3个button,分别为打开图片、保存图片和退出程序,并为每个button设置Tag值。
(4)添加4个Panel,分别为灰度变换、线性变换、对数变换和幂律变换,灰度变换Panel包含其他3个Panel。
(5)在线性变换Panel、对数变换Panel和幂律变换Panel中分别添加3个Pop-upMenu,设置每个Pop-upMenu的可选项,并为每个Pop-upMenu设置Tag值。
(6)在对数变换Panel和幂律变换Panel中分别添加StaticText输入参数、EditText和Button进行变换,并为每个EditText和Button设置Tag值。
3.3实验结果:
界面设计结果如图3-1:
图3-1程序主界面
4.线性变换的算法设计与实现:
4.1问题分析:
通过选择图片按钮,可以选择打开并显示任意一张需要处理的图片。
本课题中,线性变换包括两种,恒等变换和求反变换。
生成一个恒等变换函数,然后对图像使用变换函数以观察恒等函数是如何工作的;使用imcomplement函数对图像进行求补变换。
4.2实验方法:
线性变换包括恒等变换和求反变换。
选择恒等变换,生成一个恒等变换函数x,然后对loadImage使用此函数进行变换,得到结果图像resultImage,并显示在界面中。
选择求反变换,则使用imcomplement函数对loadImage进行求补变换,得到结果图像resultImage,并显示在界面中。
详细方法见源代码。
4.3实验结果:
打开任意一张图片并显示在界面中,结果如图4-1,图4-2:
图4-1选择图片
图4-2显示原始图片
对所选图片进行恒等变换,结果如图4-3:
图4-3恒等变换结果
对所选图片进行求反变换,结果如图4-4:
图4-4求反变换结果
结果分析:
恒等变换,它简单的将每个像素值映射为相同的值,所以结果图像与原始图像相同。
求反变换,利用求补函数得到每个像素值的补,所以结果图像与原始图像互补。
5.对数变换的算法设计与实现
5.1问题分析:
对数变换,是指输出图像的像素点的灰度值与对应的输出图像的像素灰度值之间为对数 关系。
对数变换函数可以用来压缩一幅图像非动态范围以将原来没有的特征变得清晰。
参数不同,得到的图像的清晰度也不同。
5.2实验方法:
对图像进行对数变换,首先要生产一个对数变换函数y,其中有一个参数c可以进行设置,可选择给定的几个值,也可以手动输入想测试的值。
然后对loadImage用此函数进行变换,得到的结果图像resultImage显示在界面中,通过测试多个值,可以得到一个相对清晰的结果图像,并进行保存。
详细方法见源代码。
5.3实验结果:
打开任意一张图片并显示在界面中,结果如图5-1:
图5-1打开需要处理的图片
当n=255/log(512)时,对图像进行对数变换,结果如图5-2:
图5-2对数变换结果
当n=255/log(256)时,对图像进行对数变换,结果如图5-3:
图5-3对数变换结果
当n=255/log(128)时,对图像进行对数变换,结果如图5-4:
图5-4对数变换结果
结果分析:
由图像处理结果可以清楚的发现,原始图像经过对数变换后变得清晰了,图像的细节显示出来了。
这是因为对数变换扩展了低灰度区,压缩了高灰度区,能使低灰度区的图像较清晰地显示出来。
当选择的参数不同时,图像的清晰程度不同,在实际应用时,可根据具体要处理的图像不同,选择不同的参数。
6.幂律变换的算法设计与实现:
6.1问题分析:
幂律变换,是指输出图像的像素点的灰度值与对应的输出图像的像素灰度值之间满足指 数关系。
幂律变换包括n次方根和n次方映射函数(本课题中使用的是n次方根函数),这些函数比对数变换函数功能更强,因为可以指定n的值,它最终改变曲线的形状以满足特殊需要。
输入的参数不同,得到的图像的清晰度也不同。
6.2实验方法:
对图像进行幂律变换,首先要生产一个n次方根函数root,其中参数n可以进行设置,可选择给定的几个值,也可以手动输入想测试的值。
然后对loadImage用此函数进行变换,得到的结果图像resultImage显示在界面中,通过测试多个值,可以得到一个相对清晰的结果图像,并进行保存。
详细方法见源代码。
6.3实验结果:
打开任意一张图片并显示在界面中,结果如图6-1:
图6-1显示原图
当n=1时,对图像进行幂律变换,结果如图6-2:
图6-2幂律变换结果
当n=2时,对图像进行幂律变换,结果如图6-3:
图6-3幂律变换结果
当n=2.5时,对图像进行幂律变换,结果如图6-4:
图6-4幂律变换结果
结果分析:
由图像处理结果可以清楚的发现,原始图像经过幂律变换后变得清晰了,图像的细节显示出来了。
这是因为幂律变换一般用于对图像的高灰度区给予较大扩展,适于过亮的图像。
当选择的参数不同时,图像的清晰程度不同,在实际应用时,可根据具体需要处理的图像不同,选择不同的参数。
实验心得
通过这次MATLAB大作业,自学了MATLAB GUI程序设计,通过查阅相关资料,学会了简单的界面编程。
通过界面编程来对图像进行灰度变换,结果对比更加直接。
除此之外,对于图像的灰度变换也有了进一步的理解,为了掌握图像变换的内部原理,在掌握操作函数之余,还要翻阅相关书籍,把图像变换的原理理解清楚。
总之,通过这次大作业,我学会了很多,在今后的学习过程中,我会争取获得更多收获。
附录
1.参考文献:
【1】章毓晋译.实用MATLAB图像和视频处理.清华大学出版社,2013
【2】杨丹,赵海滨,龙哲.MATLAB图像处理实例详解.清华大学出版社,2013
【3】郭仕剑、邱志模、陆静芳.MATLAB入门与实践.北京:
人民邮电出版社,2008
【4】张智星.MATLAB程序设计及应用.北京:
清华大学出版社,2002
【5】肖伟、刘忠.MATLAB程序设计与应用[M].北京:
清华大学出版社,2005
2.源代码:
打开图片:
functionpushbtn_open_Callback(hObject,eventdata,handles)
try
isLoad=getappdata(handles.figure1,'isLoad');
ifisLoad==0,
[fileName,filePath,filterIndex]=uigetfile(...
{'*.*','Allfiles';},...
'选择图像文件','MultiSelect','off');
ifisequal(fileName,0)||isequal(filePath,0),
return;
else
setappdata(handles.figure1,'fileName',fileName);
setappdata(handles.figure1,'filePath',filePath);
setappdata(handles.figure1,'isLoad',1);
file=fullfile(filePath,fileName);
axes(handles.axes_original);
I=imread(file);
sizeI=size(I);
iflength(sizeI)==3,
I=rgb2gray(I);
elseiflength(sizeI)==2,
I=I;
else
errordlg('程序发生错误.','提示');
end
setappdata(handles.figure1,'loadImage',I);
imshow(I);
end
else
btnName=questdlg('您已经打开一个图像文件,确定要打开新的图像','提',...
'确定','取消','取消');
switchbtnName,
case'确定',
setappdata(handles.figure1,'isLoad',0);
feval(@pushbtn_open_Callback,handles.pus
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 界面 编程 实现 灰度 变换
![提示](https://static.bdocx.com/images/bang_tan.gif)