版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE2PAGE1%系统自动生成的创建对话框的代码functionvarargout=myproject(varargin)%MYPROJECTM-fileformyproject.fig%MYPROJECT,byitself,createsanewMYPROJECTorraisestheexisting%singleton*.%%H=MYPROJECTreturnsthehandletoanewMYPROJECTorthehandleto%theexistingsingleton*.%%MYPROJECT('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinMYPROJECT.Mwiththegiveninputarguments.%%MYPROJECT('Property','Value',...)createsanewMYPROJECTorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforemyproject_OpeningFcngetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtomyproject_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelpmyproject%LastModifiedbyGUIDEv2.507-Jun-200811:33:02%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@myproject_OpeningFcn,...'gui_OutputFcn',@myproject_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%Executesjustbeforemyprojectismadevisible.functionmyproject_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstomyproject(seeVARARGIN)%Choosedefaultcommandlineoutputformyprojecthandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesmyprojectwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=myproject_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%以下为另存为按钮的回调函数,功能为存储图像处理后的图像到用户选择的磁盘空间中。%Executesonbuttonpressinlingcunwei.functionlingcunwei_Callback(hObject,eventdata,handles)%另存为按钮的回调函数globalImagenUmbral%定义全局变量ifisempty(ImagenUmbral)==1,msgbox('Doesn''texistanimage');return,end%如果ImagenUmbral不包含图像,则弹出对话框并显示'Doesn''texistanimage'[filename,pathname]=uiputfile({'*.jpg';,'*.tif';,'*.gif';,'*.bmp';,'*.png';,...'*.hdf';,'*.pcx';,'*.xwd';,'*.ico';,'*.cur';,'*.ras';,...'*.pdm';,'*.pgm';,'*.ppm'},'Savefilename');%显示保存文件的对话框ifisequal(filename,0)|isequal(pathname,0)errordlg('Savingcanceled','ThresholdGUI');error('Savingcanceled')else%如果不存在该文件,或者不存在保存路径,则显示错误信息tryimwrite(ImagenUmbral,[pathname,filename]);%保存文件end%tryend%if%hObjecthandletolingcunwei(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%打印按钮的回调函数%Executesonbuttonpressindayinshuchu.functiondayinshuchu_Callback(hObject,eventdata,handles)%打印按钮的回调函数printdlg%显示打印对话框%hObjecthandletodayinshuchu(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%复制到剪切板的回调函数,其功能为将处理后的图像存储到剪切板,以备处理图像处理后的图像之用。%Executesonbuttonpressinfuzhidaojianqieban.functionfuzhidaojianqieban_Callback(hObject,eventdata,handles)%复制到剪切板按钮的回调函数globalImagenUmbral%处理后的图像globalJ%处理前的图像J=ImagenUmbral%将处理后的图像赋予处理前的图像%hObjecthandletofuzhidaojianqieban(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%几何变换的回调函数,它包含三个基本的几何变换,分别为水平变换,垂直变换,对角变换。均使用了将像素灰度值进行对换的方式。%Executesonbuttonpressinjihebianhuan.functionjihebianhuan_Callback(hObject,eventdata,handles)globalImagenUmbral%定义一个全局变量ImagenUmbralglobalJ%使用全局变量Jselection=questdlg('请选择几何变换','选择几何变换','水平镜像','垂直镜像','对角镜像','default')ifstrcmp(selection,'水平镜像')%如果选择“水平镜像”[M,N]=size(J)%测量图像尺寸参数I=J%将J赋给Ifori=1:M%从第一行到最后一行forj=1:N/2%对每一行的第一个像素到中间的一个像素t=I(i,j);I(i,j)=I(i,N-j+1);I(i,N-j+1)=t;%交换这一行第一个像素和最后一个像素的灰度值,交换第二个和倒数第二个灰度值,以此类推,直到中间的像素。end%endforend%endforsubplot(224);%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(I)%显示图像ImagenUmbral=I;%将图像赋予全局变量ImagenUmbralelseifstrcmp(selection,'垂直镜像')%如果选择“垂直镜像”[M,N]=size(J)%测量图像尺寸参数I=J%将J赋给Iforj=1:N%从第一列到最后一列fori=1:M/2%对每一列的第一个像素到中间的一个像素t=I(i,j);I(i,j)=I(M-i+1,j);I(M-i+1,j)=t;%交换这一列第一个像素和最后一个像素的灰度值,交换第二个和倒数第二个灰度值,以此类推,直到中间的像素。end%endforend%endforsubplot(224);%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(I)%显示图像ImagenUmbral=I;%将图像赋予全局变量ImagenUmbralelseifstrcmp(selection,'对角镜像')%如果选择“垂直镜像”I=J%将J赋给I[M,N]=size(I)%测量图像尺寸参数fori=1:M%从第一行到最后一行forj=1:N/2%对每一行的第一个像素到中间的一个像素t=I(i,j);I(i,j)=I(M-i+1,N-j+1);I(M-i+1,N-j+1)=t;%交换第i行的第一个像素和M-i+1行的最后一个像素的灰度值,以此类推,直到中间的像素。end%endforend%endforsubplot(224);%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(I)%显示图像ImagenUmbral=I;%将图像赋予全局变量ImagenUmbralend%endofelseifstrcmp(selection,'对角镜像')end%endofelseifstrcmp(selection,'垂直镜像')end%endofifstrcmp(selection,'水平镜像')%hObjecthandletojihebianhuan(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%灰度反转按钮的回调函数,灰度反转采用公式T=L-1-S,其中S为存储原始图像的灰度值的矩阵,T为存储反转后图像灰度值的矩阵。%Executesonbuttonpressinhuidufanzhuan.functionhuidufanzhuan_Callback(hObject,eventdata,handles)%灰度反转按钮的回调函数globalImagenUmbral%定义一个全局变量ImagenUmbral,将灰度反转后的图像存入ImagenUmbral中globalJ%使用全局变量JA=double(J)%将图像J的各点像素值存入矩阵A中A=255-A%用255减去A的各点像素值,再重新存入A中A=uint8(A)%将A的每个元素转换成整数subplot(224)%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(A)%显示图像AImagenUmbral=A%将A赋给全局变量ImagenUmbral%hObjecthandletohuidufanzhuan(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%直方图均衡化按钮的回调函数,直方图均衡化的处理目的是使图像变得清晰,明快。%Executesonbuttonpressinzhifangtujunhenghua.functionzhifangtujunhenghua_Callback(hObject,eventdata,handles)%直方图均衡化按钮的回调函数globalImagenUmbral%定义一个全局变量ImagenUmbral,将直方图均衡化后的图像存入ImagenUmbral中globalJ%使用全局变量Jsubplot(2,2,4);%分割绘图窗口为两行两列,将当前句柄移到第四个位置%W=histeq(J);%Matlab自带直方图均衡化函数PS=J%令PS为待处理的图像[m,n]=size(PS);%测量图像尺寸参数GP=zeros(1,256);%预创建存放灰度出现概率的向量fork=0:255%对每一个像素值GP(k+1)=length(find(PS==k))/(m*n);%计算每级灰度出现的概率,将其存入GP中相应位置end%endforS1=zeros(1,256);%分配一个256维数组fori=1:256%对每一个像素值forj=1:i%对从1到这个像素值的所有像素的S1(i)=GP(j)+S1(i);%计算Sk,Sk为一个映射,将对从1到这个像素值的所有像素的概率相加end%endforend%endforS2=round((S1*256)+0.5);%将Sk归到相近级的灰度PA=PS;%定义一个与PS一样大小的矩阵fori=0:255%对每一个像素值PA(find(PS==i))=S2(i+1);%将各个像素归一化后的灰度值赋给这个像素end%endforimshow(PA)%显示均衡化后的图像ImagenUmbral=PA;%将均衡化图像赋给ImagenUmbral%hObjecthandletozhifangtujunhenghua(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%直方图统计按钮的回调函数,此按钮可以统计处理前后的图像的直方图。%Executesonbuttonpressinzhifangtutongji.functionzhifangtutongji_Callback(hObject,eventdata,handles)%直方图统计按钮的回调函数globalImagenUmbral%定义一个全局变量ImagenUmbralglobalJ%使用全局变量Jfigure%弹出绘图窗口subplot(211)%分割绘图窗口为两行一列,将当前句柄移到第一个区域[m,n]=size(J);%测量图像尺寸参数GP=zeros(1,256);%预创建存放灰度出现概率的向量fork=0:255%对每一个像素GP(k+1)=length(find(J==k))/(m*n);%计算每级灰度出现的概率,将其存入GP中相应位置end%endforbar(0:255,GP,'b')%绘制直方图title('原图像直方图')%标题为'原图像直方图'subplot(212)%分割绘图窗口为两行一列,将当前句柄移到第二个区域K=ImagenUmbral%将全局变量ImagenUmbral赋予K[m,n]=size(K);%测量图像尺寸参数GP=zeros(1,256);%预创建存放灰度出现概率的向量fork=0:255%对每一个像素GP(k+1)=length(find(K==k))/(m*n);%计算每级灰度出现的概率,将其存入GP中相应位置end%endforbar(0:255,GP,'b')%绘制直方图title('处理后图像直方图')%标题为'处理后图像直方图'%hObjecthandletozhifangtutongji(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%图像复原按钮的回调函数,采用中值滤波和均值滤波两种方法,其中,中值滤波是将图像中一点的值用该点的一个邻域中各点值的中值代替,以达到滤波的效果。均值滤波与之不同的是将图像中一点的值用该点的一个邻域中各点值的均值代替。%Executesonbuttonpressintuxiangfuyuan.functiontuxiangfuyuan_Callback(hObject,eventdata,handles)%图像复原按钮的回调函数globalImagenUmbral%定义一个全局变量ImagenUmbralglobalJ%使用全局变量Jselection=questdlg('请选择图像复原方法','图像复原方法','中值滤波','均值滤波','default')ifstrcmp(selection,'中值滤波')%如果选择'中值滤波'A=J%将J赋给A[m,n]=size(A);%测量图像尺寸参数B=A;%将A赋给Bpixel_block=zeros(1,9);%开辟一个一行九列的数组,均赋于初值0fori=2:m-1%对A中的各个像素点(不包括边界)forj=2:n-2pixel_block=reshape(A(i-1:i+1,j-1:j+1),9,1);%采用3*3的窗口,将一个像素点及其周围的8各点,依次存入新开辟的数组pixel_block中sorted_block=sort(pixel_block);%将数组pixel_block排序block_median=sorted_block(5);%将数组的中值赋予block_medianB(i,j)=block_median;%将block_median赋予B的相应位置的像素值end;%endofforj=2:n-2end;%endoffori=2:m-1B=uint8(B);%将B中所有元素转换成0~255之间的整数subplot(224)%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(B)%显示图像BImagenUmbral=B%将B赋给全局变量ImagenUmbralelseifstrcmp(selection,'均值滤波')%如果选择'均值滤波'A=J%将J赋给A[m,n]=size(A);%m为A的行数,n为A的列数B=A;%将A赋给Bpixel_block=zeros(1,9);%开辟一个一行九列的数组,均赋于初值0fori=2:m-1%对A中的各个像素点(不包括边界)forj=2:n-1pixel_block=reshape(A(i-1:i+1,j-1:j+1),3^2,1);%采用3*3的窗口,将一个像素点及其周围的8各点,一次存入新开辟的数组pixel_block中mean_block=mean(pixel_block);%求出数组中所有元素的平均值B(i,j)=mean_block;%将mean_block赋予B的相应位置的像素值end;%endofforj=2:n-2end;%endoffori=2:m-1B=uint8(B);%将B中所有元素转换成0~255之间的整数subplot(224)%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(B)%显示图像BImagenUmbral=B%将B赋给全局变量ImagenUmbralend%endofelseifstrcmp(selection,'均值滤波')end%endofifstrcmp(selection,'中值滤波')%hObjecthandletotuxiangfuyuan(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%边缘提取的回调函数,包括三种边缘提取方法,分别为Sobel边缘算子法,Prewitte边缘算子法和Robert边缘算子法,它们都采用了求梯度的方法。%Executesonbuttonpressinbianyuantiqu.functionbianyuantiqu_Callback(hObject,eventdata,handles)%边缘提取函数的回调函数globalImagenUmbral%定义一个全局变量ImagenUmbralglobalJ%使用全局变量Jselection=questdlg('请选择边缘算子法','边缘算子法','Sobel边缘算子法','Prewitte边缘算子法','Robert边缘算子法','default')ifstrcmp(selection,'Sobel边缘算子法')%如果选择了'Sobel边缘算子法'%BW=edge(J,'sobel')%Matlab自带sobel边缘算子法I=J%将J赋予IA=J%令A=J,准备将处理后图像存入A中[M,N]=size(I);%测量图像尺寸参数I=double(I);%将I中的所有元素变为双精度型fory=2:M-1%对每一个像素(不包括边界)forx=2:N-1B(1)=I(x-1,y+1)+I(x,y+1)*2+I(x+1,y+1)-I(x-1,y-1)-I(x,y-1)*2-I(x+1,y-1);%用第一个方向算子对这个像素做卷积B(2)=I(x-1,y)+I(x-1,y+1)*2+I(x,y+1)-I(x,y-1)-I(x+1,y+1)*2-I(x+1,y);%用第二个方向算子对这个像素做卷积B(3)=I(x-1,y-1)+I(x-1,y)*2+I(x-1,y+1)-I(x+1,y+1)-I(x+1,y)*2-I(x+1,y+1);%用第三个方向算子对这个像素做卷积B(4)=I(x-1,y)+I(x-1,y-1)*2+I(x,y+1)-I(x+1,y)-I(x+1,y+1)*2-I(x,y+1);%用第四个方向算子对这个像素做卷积B(5)=I(x-1,y-1)+I(x,y-1)*2+I(x+1,y+1)-I(x-1,y+1)-I(x,y+1)*2-I(x+1,y+1);%用第五个方向算子对这个像素做卷积B(6)=I(x,y-1)+I(x+1,y+1)*2+I(x+1,y)-I(x-1,y)-I(x-1,y+1)*2-I(x,y+1);%用第六个方向算子对这个像素做卷积B(7)=I(x+1,y+1)+I(x+1,y)*2+I(x+1,y+1)-I(x-1,y-1)-I(x-1,y)*2-I(x-1,y+1);%用第七个方向算子对这个像素做卷积B(8)=I(x+1,y)+I(x+1,y+1)*2+I(x,y+1)-I(x-1,y)-I(x-1,y-1)*2-I(x,y-1);%用第八个方向算子对这个像素做卷积b=max(B)%将这八个卷积值的最大值赋予bifb>255b=255%如果b的值超过255,则重置为255end%endifA(x,y)=b;%将b作为A中相应点的输出值end%endforend%endforsubplot(224)%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(A)%显示图像AImagenUmbral=A%将A赋给全局变量ImagenUmbralelseifstrcmp(selection,'Prewitte边缘算子法')%如果选择了'Prewitte边缘算子法'%BW=edge(J,'prewitt')%Matlab自带prewitte边缘算子法I=J%将J赋予IA=J%令A=J,准备将处理后图像存入A中[M,N]=size(I);%将I的各点像素值存入M行N列的矩阵中I=double(I);%将I中的所有元素变为双精度型fory=2:M-1%对每一个像素(不包括边界)forx=2:N-1B(1)=I(x-1,y+1)+I(x,y+1)+I(x+1,y+1)-I(x-1,y-1)-I(x,y-1)-I(x+1,y-1);%用第一个方向算子对这个像素做卷积B(2)=I(x-1,y)+I(x-1,y+1)+I(x,y+1)-I(x,y-1)-I(x+1,y+1)-I(x+1,y);%用第二个方向算子对这个像素做卷积B(3)=I(x-1,y-1)+I(x-1,y)+I(x-1,y+1)-I(x+1,y+1)-I(x+1,y)-I(x+1,y+1);%用第三个方向算子对这个像素做卷积B(4)=I(x-1,y)+I(x-1,y-1)+I(x,y+1)-I(x+1,y)-I(x+1,y+1)-I(x,y+1);%用第四个方向算子对这个像素做卷积B(5)=I(x-1,y-1)+I(x,y-1)+I(x+1,y+1)-I(x-1,y+1)-I(x,y+1)-I(x+1,y+1);%用第五个方向算子对这个像素做卷积B(6)=I(x,y-1)+I(x+1,y+1)+I(x+1,y)-I(x-1,y)-I(x-1,y+1)-I(x,y+1);%用第六个方向算子对这个像素做卷积B(7)=I(x+1,y+1)+I(x+1,y)+I(x+1,y+1)-I(x-1,y-1)-I(x-1,y)-I(x-1,y+1);%用第七个方向算子对这个像素做卷积B(8)=I(x+1,y)+I(x+1,y+1)+I(x,y+1)-I(x-1,y)-I(x-1,y-1)-I(x,y-1);%用第八个方向算子对这个像素做卷积b=max(B)%将这八个卷积值的最大值赋予bifb>255b=255%如果b的值超过255,则重置为255end%endifA(x,y)=b;%将b作为A中相应点的输出值end%endforend%endforsubplot(224)%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(A)%显示图像AImagenUmbral=A%将A赋给全局变量ImagenUmbralelseifstrcmp(selection,'Robert边缘算子法')%如果选择了'Robert边缘算子法'%BW=edge(J,'roberts')%Matlab自带roberts边缘算子法I=J%将J赋给I[M,N]=size(I);%测量图像尺寸参数I=double(I)fory=1:M-1%对每一个像素forx=1:N-1d=2*(abs(I(x,y)-I(x+1,y+1))+abs(I(x+1,y)-I(x,y+1)));%用绝对值近似计算梯度值 if(d>255)d=255%如果d超过255,则将d置为255end%endifK(x,y)=d;%将该点的灰度值置为dend%endoffory=1:N-1end%endofforx=1:M-1subplot(224)%分割绘图窗口,将当前句柄移至第二行第二个位置imshow(K)%显示IImagenUmbral=K%将I赋给全局变量ImagenUmbralend%endofifstrcmp(selection,'Robert边缘算子法')end%endofelseifstrcmp(selection,'Robert边缘算子法')end%endofifstrcmp(selection,'Sobel边缘算子法')%hObjecthandletobianyuantiqu(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Executesonbuttonpressinweicaise.functionweicaise_Callback(hObject,eventdata,handles)%伪彩色按钮的回调函数globalImagenUmbral%定义一个全局变量ImagenUmbral,将灰度反转后的图像存入ImagenUmbral中globalJ%使用全局变量Jselection=questdlg('请选择伪彩色处理','选择伪彩色处理','医学伪彩色处理','遥感伪彩色处理','default')ifstrcmp(selection,'医学伪彩色处理')%如果选择了'医学伪彩色处理'I=J%将J赋给I[M,N]=size(I);%测量图像尺寸参数fori=1:M%对每一个像素forj=1:Nb=I(i,j)%令变量b等于当前灰度值ifb<64%如果当前灰度值小于64R(i,j)=0;%将这个点的R分量置为0G(i,j)=4*b;%将这个点的G分量置为4*bB(i,j)=255;%将这个点的B分量置为255elseifb<128%如果当前灰度值小于128,大于64R(i,j)=0;%将这个点的R分量置为0G(i,j)=255;%将这个点的G分量置为255B(i,j)=(127-b)*4;%将这个点的B分量置为(127-b)*4elseifb<192%如果当前灰度值小于192,大于128R(i,j)=(b-128)*4;%将这个点的R分量置为b-128)*4G(i,j)=255;%将这个点的G分量置为255B(i,j)=0;%将这个点的B分量置为0else%如果当前灰度值大于192R(i,j)=255;%将这个点的R分量置为255G(i,j)=(255-b)*4;%将这个点的G分量置为(255-b)*4B(i,j)=0;%将这个点的B分量置为0end%endofifb<192end%endofifb<128end%endofifb<64G2C(i,j,1)=R(i,j);%将新的R分量存入图像中G2C中G2C(i,j,2)=G(i,j);%将新的R分量存入图像中G2C中G2C(i,j,3)=B(i,j);%将新的R分量存入图像中G2C中end%endofforj=1:Nend%endoffori=1:Msubplot(224)%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(G2C);%显示图像G2CImagenUmbral=G2C;%将G2C赋给全局变量ImagenUmbralelseifstrcmp(selection,'遥感伪彩色处理')%如果选择'遥感伪彩色处理'I=J%将J赋给I[M,N]=size(I);%测量图像尺寸参数fori=1:N%对每一个像素forj=1:Mb=I(i,j);%令变量b等于当前灰度值ifb<85%如果当前灰度值小于85R(i,j)=0;%将这个点的R分量置为0G(i,j)=(5-b/42.5)*b;%将这个点的G分量置为(5-b/42.5)*bB(i,j)=(5-(84-b)/42.5)*(84-b);%将这个点的B分量置为(5-(84-b)/42.5)*(84-b)elseifb<170%如果当前灰度值小于170R(i,j)=(5-(b-85)/42.5)*(b-85);%将这个点的R分量置为(5-(b-85)/42.5)*(b-85)G(i,j)=(5-(169-b)/42.5)*(169-b);%将这个点的G分量置为(5-(169-b)/42.5)*(169-b)B(i,j)=0;%将这个点的B分量置为0else%如果当前灰度值大于170R(i,j)=(5-(255-b)/42.5)*(255-b);%将这个点的R分量置为(5-(255-b)/42.5)*(255-b)G(i,j)=0;%将这个点的G分量置为0B(i,j)=(5-(b-170)/42.5)*(b-170);%将这个点的B分量置为(5-(b-170)/42.5)*(b-170)end%endofifb<170end%endofifb<85G2C(i,j,1)=R(i,j);%将新的R分量存入图像中G2CG2C(i,j,2)=G(i,j);%将新的R分量存入图像中G2C中G2C(i,j,3)=B(i,j);%将新的R分量存入图像中G2C中end%endoffori=1:Nend%endofforj=1:Msubplot(224)%分割绘图窗口为两行两列,将句柄移到第四个位置imshow(G2C);%显示图像G2CImagenUmbral=G2C;%将G2C赋给全局变量ImagenUmbralend%endofifstrcmp(selection,'遥感伪彩色处理')end%endofifstrcmp(selection,'医学伪彩色处理')%hObjecthandletoweicaise(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%二值化的回调函数。二值化的处理目的是将图像各点变为黑色或者白色,可以通过阈值处理的方法实现。%Executesonbuttonpressinerzhihua.functionerzhihua_Callback(hObject,eventdata,handles)%二值化按钮的回调函数globalImagenUmbral%定义一个全局变量ImagenUmbral,将二值化处理后的图像存入ImagenUmbral中globalJ%使用全局变量Jprompt={'请输入阈值:'};%对话框提示name='输入阈值';%输入框提示numlines=1;%设置以个输入框defaultanswer={'128'};%设置这个输入框的一个缺省值为0.5answer=inputdlg(prompt,name,numlines,defaultanswer);%弹出对话框,输入阈值new=str2num(answer{1});%将输入的值赋给变量newI=J%将J赋给I[M,N]=size(I);%测量图像尺寸参数fori=1:M%对每一个像素forj=1:NifI(i,j)<new%如果这个像素值小于给定的阈值I(i,j)=0;%将这个像素值置为0elseI(i,j)=255;%否则将这个像素值置为255end%if语句结束end%内层for语句结束end%外层for语句结束subplot(224);%分割绘图窗口为两行两列,在第四个位置绘图imshow(I)%显示二值化后的图像ImagenUmbral=I%将I赋给全局变量ImagenUmbral%hObjecthandletoerzhihua(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%图像变换的回调函数,包括Fourier变换和离散余弦变换。%Executesonbuttonpressintuxiangbianhuan.functiontuxiangbianhuan_Callback(hObject,eventdata,handles)%图像变换按钮的回调函数globalImagenUmbral%定义一个全局变量ImagenUmbral,将二值化处理后的图像存入ImagenUmbral中globalJ%使用全局变量Jselection=questdlg('请选择图像变换方法','图像变换方法','Fourier变换','离散余弦变换','default')ifstrcmp(selection,'Fourier变换')B=fftshift(fft2(J));subplot(224)imshow(log(abs(B)),[])ImagenUmbral=Belseifstrcmp(selection,'离散余弦变换')A=dct2(J);subplot(224)ImagenUmbral=Aimshow(log(abs(A)),[]),colormap(jet(64)),colorbarend%hObjecthandletotuxiangbianhuan(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%打开文件按钮的回调函数,功能为点击打开按钮之后,将图像显示在窗口的右上角。%Executesonbuttonpressindakaiwenjian.functiondakaiwenjian_Callback(hObject,eventdata,handles)%打开文件按钮的回调函数globalArchivo%定义全局变量,用来存储原始图像[NameArchivo,PathArchivo]=uigetfile({'*.bmp';,'*.tif';,'*.gif';,'*.jpg';,'*.png';,...'*.hdf';,'*.pcx';,'*.xwd';,'*.ico';,'*.cur';,'*.ras';,...'*.pdm';,'*.pgm';,'*.ppm'});%打开图像文件Archivo=[PathArchivo,NameArchivo];%把从文件载入的图像赋给ArchivoCargarImagen(handles)%调用CargarImagen函数,显示图像%==========================================================================functionCargarImagen(handles)%显示图片%==========================================================================globalArchivo%使用全局变量ArchivoglobalJ%定义全局变量Jsubplot(222);%把绘图窗口分成两行两列,将句柄移到第二个位置img=imread(Archivo);%读取文件Archivo,设置其句柄为imgimshow(img);%在第二个位置显示图片title('原始图像')%设置图像标题为:原始图像J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宜春学院《立法学》2025-2026学年期末试卷
- 江西工程学院《畜牧微生物学》2025-2026学年期末试卷
- 东华理工大学《思想政治教育课程与教学论》2025-2026学年期末试卷
- 萍乡学院《金融法》2025-2026学年期末试卷
- 华东交通大学《市场调研与预测》2025-2026学年期末试卷
- 安庆医药高等专科学校《传热学》2025-2026学年期末试卷
- 泉州纺织服装职业学院《计量经济学》2025-2026学年期末试卷
- 矿山提升设备操作工安全强化知识考核试卷含答案
- 皖北卫生职业学院《健康教育与健康促进》2025-2026学年期末试卷
- 安徽中澳科技职业学院《中国文化概况英语》2025-2026学年期末试卷
- 睡眠监测室工作制度
- 2026年山东济南历下区九年级中考语文一模考试试题(含解析)
- 2026四川成都双流区面向社会招聘政府雇员14人备考题库及答案详解(有一套)
- 2026年高中面试创新能力面试题库
- 2026北京市皇城粮油有限责任公司昌平区国资委系统内招聘6人笔试参考题库及答案解析
- 眼科护理操作规范
- GB/T 40815.2-2021电气和电子设备机械结构符合英制系列和公制系列机柜的热管理第2部分:强迫风冷的确定方法
- GB/T 27664.1-2011无损检测超声检测设备的性能与检验第1部分:仪器
- GA/T 669.7-2008城市监控报警联网系统技术标准第7部分:管理平台技术要求
- (完整word版)wincc中使用VBS脚本读写SQLServer数据库文件
- 《高一物理动能定理》ppt课件
评论
0/150
提交评论