能力拓展训练课设图像颜色RGB调整的MATLAB实现.docx
- 文档编号:23135347
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:19
- 大小:694.78KB
能力拓展训练课设图像颜色RGB调整的MATLAB实现.docx
《能力拓展训练课设图像颜色RGB调整的MATLAB实现.docx》由会员分享,可在线阅读,更多相关《能力拓展训练课设图像颜色RGB调整的MATLAB实现.docx(19页珍藏版)》请在冰豆网上搜索。
能力拓展训练课设图像颜色RGB调整的MATLAB实现
摘要
当今的信息化社会,图像是人类赖以获取信息的最重要的来源之一。
随着计算机技术的迅猛发展,图像技术与计算机技术不断融合,产生了一系列图像处理软件,如VC、MALAB,这些软件的广泛应用为图像技术的发展提供了强大的支持。
MATALB已成为公认的最优秀的应用软件之一,具有编程简单、数据可视化功能强、可操作性强等优点,配有功能强大、专业函数丰富的图像处理工具箱,是进行图像处理方面工作必备的软件工具。
MATLAB提供了强大的图形功能,利用程序与绘图的结合,可以将结果计算以图形展示。
RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
本次课程设计使用RGB颜色模型对24bits彩色图像的颜色进行R,G,B三分量值调节,并显示原始的R,G,B三分量的灰度图像。
关键词:
MATLABRGB调整灰度图像
图像颜色RGB调整的MATLAB实现
1设计任务及要求
对24bits彩色图像的颜色,使用RGB颜色模型,来对其进处理。
设计图形界面(GUI)程序,使用三个滑动条实现R,G,B各分量上下可调。
调整范围在0到1之间,即:
滑动条被拖动时,产生一个0到1之间的系数,乘以该分量的原始值,得到调整后的分量值。
显示原始图像,和调整后的图像。
同时显示原始的R,G,B三分量的灰度图像。
2原理分析
2.1RGB模式简介
RGB是色光的彩色模式。
R代表红色,G代表绿色,B代表蓝色,三种色彩叠加形成了其他的色彩。
因为三种颜色都有256个亮度水平级,所以三种色彩叠加就能形成1670万种颜色了,也就是“真彩色”,通过它们足以再现绚丽的世界。
在RGB模式中,由红、绿、蓝相叠加可以形成其他颜色,因此该模式也叫加色模式(CMYK是一种减色模式)。
所有的显示器、投影设备以及电视等许多设备都是依赖于这种加色模式实现的。
就编辑图像而言,RGB色彩模式也是最佳的色彩模式,因为它可提供全屏幕的24bit的色彩范围,即“真彩色”显示。
但是,如果将RGB模式用于打印就不是最佳的了,因为RGB模式所提供的有些色彩已经超出了打印色彩范围之外,因此在打印一幅真彩的图像时,就必然会损失一部分亮度,并且比较鲜明的色彩肯定会失真的。
这主要是因为打印所用的是CMYK模式,而CMYK模式所定义的色彩要比RGB模式定义的色彩少得多,因此打印时,系统将自动进行RGB模式与CMYK模式的转换,这样就难以避免损失一部分颜色,出现打印后的失真现象。
2.2灰度图像
一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。
红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。
用不同的灰度色阶来表示“红,绿,蓝”在图像中的比重。
通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。
在计算机领域中,灰度数字图像是每个像素只有一个采样颜色的图像。
这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。
灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。
但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。
在一些关于数字图像的文章中单色图像等同于灰度图像,在另外一些文章中又等同于黑白图像。
3总体设计
图3-1总体设计界面
软件的总体设计界面布局如图3-1所示,主要分为2个部分:
显示区域与操作区域。
显示区域:
显示载入原图、通过RGB调整后的图像以及RGB三分量的灰度图像。
操作区域:
通过功能键实现对图像的各种处理。
在截图中可见,五个功能按键分别对应对图片的处理,界面正中部分为图片显示部分,界面中下方为原图RGB值调节的滚动条。
4编程及仿真
4.1RGB颜色调整
选择一幅24bits彩色图像,使用三个滑动条实现R,G,B各分量上下可调,显示原图和调整后的图像。
程序设计流程图如图4-1所示:
否
是
图4-1RGB颜色调整流程图
4.1.1图像读取与显示
图像读取分两种情况:
(1)若图像为MALAB自带图像,利用matlab中“imread”、“imshow”实现图像文件的读取与显示:
i=imread('football.jpg');%读取图像
axes(handles.axes1);
imshow(i);%显示图像
(2)若图像不是MATALB自带图像,可用以下方式实现图像文件的读取与显示:
[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像');
ifisequal(filename,0)|isequal(pathname,0)
errordlg('没有选中文件','出错');
return;
else
file=[pathname,filename];
globalS%设置一个全局变量S,保存初始图像路径,以便之后的还原操作
S=file;
x=imread(file);
axes(handles.axes1);
imshow(x);
end
为了方便操作,本次课设采用第一种方式读取和显示图像。
4.1.2RGB颜色调整
RGB颜色调整采用三个滑动条分别控制三分量的数值,滑动条被拖动时,产生一个0到1之间的系数,乘以该分量的原始值,得到调整后的分量值。
i=imread('football.jpg');
R=get(handles.slider1,'value');%获得滑动条数值
G=get(handles.slider2,'value');
B=get(handles.slider3,'value');
c(:
:
1)=i(:
:
1)*R;%获得调整后的分量值
c(:
:
2)=i(:
:
2)*G;
c(:
:
3)=i(:
:
3)*B;
axes(handles.axes2);
imshow(c);
用get函数得到滑动条的数值,再乘以分量原始值,得到调整后数值,这样我们就可以通过改变滑动条的数值来调节原图像的RGB各个分量的数值,得到想要的效果。
如图4-2:
图4-2RGB颜色调整
4.2原始R、G、B三分量灰度图
选择一幅24bits彩色图像,显示原始的R、G、B三分量的灰度图像。
分别提取原始图像的R、G、B三分量,用imshow显示各个分量灰度图像。
流程图如图4-3:
否
是
图4-3三分量灰度显示流程图
具体程序如下(以红色分量为例):
i=imread('football.jpg');
axes(handles.axes3);
imshow(i(:
:
1));%显示红色分量的灰度图
R、G、B三分量的灰度图像如图4-4:
图4-4R、G、B三分量的灰度图
5结果分析
对于一幅24bits彩色图像,利用MATLAB中(:
,:
,1),(:
,:
,2),(:
,:
,3)可分别提取原图像的红、绿、蓝三分量值,再与滑动条数值相乘,实现了对原图像RGB的调整。
当滑动条都置0时,即R、G、B分量均为0时,显示一幅黑色图像,当滑动条都置1时,显示原图像,分别调节三分量的值可以得到需要的RGB图像。
在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值,灰度范围为0-255。
采用分量法对彩色图像进行灰度化,将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,实际应用中可根据需要选取一种灰度图像。
6小结及体会
通过此次能力拓展训练课程设计,使我对matlab的使用有了进一步的了解和熟悉。
MATLAB软件功能强大,本设计是运用MATLAB进行图像处理,这只是它的一个简单的应用,MATLAB还在多方面有应用,如数学和计算算术发展模型;模拟仿真和原型;数据分析,开发和可视化;科学和工程图形等方面。
只有自己在以后的学习中慢慢学习,自己探索,更好的掌握这款软件。
当我第一次拿到此次的课设题目时,感到有些无所适从。
虽然,原来经常用到MATLAB,但由于对matlab的学习更多的只是停留在理论上的学习,同时也是第一次用MATLAB进行图像处理,所以用起来不是很熟练。
虽然对课题感到很懵懂,但在查阅相关资料后,我开始找到了解决问题的路径。
我的题目是“图像颜色RGB调整的MATLAB实现”。
本课题的重点是句柄的使用、GUI的使用以及matlab中相关图像处理函数使用。
为此,在实践正式开始前,我利用课余时间,学习了matlab教材,专门借阅了利用matlab进行图像处理的相关教程,通过索引网络上的相关资料,为课设做了较为充分的准备。
在参考了相关材料及源程序,我对自己要做的课设内容有了进一步的了解,并对matlab的使用有了更深的体会。
当然,在课设的进行过程中,我还是遇到了不少问题。
例如,起初由于我对句柄使用以及一些函数使用的不恰当,使得在对图像文件的保存上就遇到了问题,不过最后还是在经过认真思考后解决了。
随着课设的进行,我对matlab的的熟悉度逐步加深。
总体来说,此次的课程设计,还是较为满意的。
它不但鞭策着我去巩固matlab的基础理论知识,还提高了我对matlab的实际操作运用,使得理论与实践相结合,为进一步学习matlab打下坚实的基础;同时,在实践的工程中,也让我体会到一种努力付出并得到回报的满足感觉。
参考文献
[1]张强,王正林.精通MATLAB图像处理.电子工业出版社.2009
[2]陈杨,陈荣娟.MATLAB6.X图形编程与图像处理.西安电子科技大学出版社.2002
[3]何东健.数字图像处理.西安电子科技大学出版社,2003
[4]冈萨雷斯等,数字图像处理(Matlab版).电子工业出版社,2005
[5]冈萨雷斯等著,阮秋琦等译.数字图像处理(第二版).电子工业出版社,2007
[6]杨杰.数字图像处理及MATLAB实现.北京:
电子工业出版社.2010.2
附录1仿真图
附录2源程序
functionvarargout=untitled(varargin)
%UNTITLEDMATLABcodeforuntitled.fig
%UNTITLED,byitself,createsanewUNTITLEDorraisestheexisting
%singleton*.
%
%H=UNTITLEDreturnsthehandletoanewUNTITLEDorthehandleto
%theexistingsingleton*.
%
%UNTITLED('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinUNTITLED.Mwiththegiveninputarguments.
%
%UNTITLED('Property','Value',...)createsanewUNTITLEDorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforeuntitled_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtountitled_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelpuntitled
%LastModifiedbyGUIDEv2.527-Aug-201210:
39:
50
%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.figure1);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=untitled_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=handles.output;
%---Executesonbuttonpressinpushbutton1.
functionpushbutton1_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
i=imread('football.jpg');%读取图像
axes(handles.axes1);
imshow(i);%显示图像
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
i=imread('football.jpg');
R=get(handles.slider1,'value');%获取滑动条数值
G=get(handles.slider2,'value');
B=get(handles.slider3,'value');
c(:
:
1)=i(:
:
1)*R;%得到调整后红色分量值
c(:
:
2)=i(:
:
2)*G;%得到调整后绿色分量值
c(:
:
3)=i(:
:
3)*B;%得到调整后蓝色分量值
axes(handles.axes2);
imshow(c);
%---Executesonbuttonpressinpushbutton3.
functionpushbutton3_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton3(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
i=imread('football.jpg');
axes(handles.axes3);
imshow(i(:
:
1));%显示红色分量灰度图
%---Executesonbuttonpressinpushbutton6.
functionpushbutton6_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton6(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
i=imread('football.jpg');
axes(handles.axes4);
imshow(i(:
:
2));%显示绿色分量灰度图
%---Executesonbuttonpressinpushbutton7.
functionpushbutton7_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton7(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
i=imread('football.jpg');
axes(handles.axes5);
imshow(i(:
:
3));%显示蓝色分量灰度图
%---Executesonslidermovement.
functionslider1_Callback(hObject,eventdata,handles)
%hObjecthandletoslider1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Hints:
get(hObject,'Value')returnspositionofslider
%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofslider
%---Executesduringobjectcreation,aftersettingallproperties.
functionslider1_CreateFcn(hObject,eventdata,handles)
%hObjecthandletoslider1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled
%Hint:
slidercontrolsusuallyhavealightgraybackground.
Ifisequal(get(hObject,'BackgroundColor'),get(0,'defa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 能力 拓展 训练 图像 颜色 RGB 调整 MATLAB 实现