1、 1 洗手 function varargout = two(varargin)洗手 % Begin initialization code - DO NOT EDIT 洗手 gui_Singleton = 1;beef洗手 gui_State = struct(gui_Name, mfilename, .洗手 gui_Singleton, gui_Singleton, .洗手 gui_OpeningFcn, two_OpeningFcn, .洗手 gui_OutputFcn, two_OutputFcn, .洗手 gui_LayoutFcn, , .洗手 gui_Callback, );be
2、ef洗手 if nargin beef洗手 end 洗手 if nargout 洗手 varargout1:nargout = gui_mainfcn(gui_State, varargin:);beef洗手 else 洗手 gui_mainfcn(gui_State, varargin:);beef洗手 end 洗手 % End initialization code - DO NOT EDIT 洗手 % - Executes just before erzhi is made visible.洗手 function two_OpeningFcn(hObject, eventdata, ha
3、ndles, varargin)洗手 % This function has no output args, see OutputFcn.洗手 -洗手 %接下来是菜单的程序 洗手 -洗手 function file_Callback(hObject, eventdata, handles)洗手 -洗手 %文件打开程序 洗手 function open_Callback(hObject, eventdata, handles)洗手 name,path=uigetfile(*.bmp,载入图像 );beef洗手 if isequal(name,0)|isequal(path,0)洗手 errord
4、lg(没有选中文件 ,出错 );beef洗手 return;beef洗手 else 洗手 x=imread(path,name);beef洗手 axes(handles.axes_src);beef洗手 imshow(x);beef洗手 handles.img=x;beef洗手 handles.noise_img=x;beef洗手 guidata(hObject,handles)洗手 end 洗手 -洗手 function save_Callback(hObject, eventdata, handles)洗手 %文件保存 洗手 2 filename,pathname = uiputfile(
5、*.bmp,图片保存为 );beef洗手 if isequal(filename,pathname,0,0)洗手 errordlg(没有保存 ,出错 );beef洗手 return;beef洗手 else 洗手 file=strcat(pathname,filename);beef洗手 (handles.axes2);beef洗手 i=getimage(gca);beef洗手 imwrite(i,file);beef洗手 end 洗手 -洗手 function exit_Callback(hObject, eventdata, handles)洗手 clc;beef洗手 close all;b
6、eef洗手 close(gcf);beef洗手 -洗手 %编辑菜单的程序 洗手 -洗手 function edit_Callback(hObject, eventdata, handles)洗手 -洗手 function huidu_Callback(hObject, eventdata, handles)洗手 %灰度处理 洗手 axes(handles.axes2);beef洗手 if isrgb(handles.img) 洗手 y=rgb2gray(handles.img);beef %RGB 洗手 imshow(y);beef洗手 else 洗手 msgbox(这已经是灰度图像 ,转换失
7、败 );beef洗手 end 洗手 -洗手 function liangdu_Callback(hObject, eventdata, handles)洗手 %亮度处理 洗手 prompt=输入参数 1,输入参数 2,输入 gamma;beef洗手 defans=0 0.7,0 1,1;beef洗手 p=inputdlg(prompt,输入参数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 p2=str2num(p2);beef洗手 p3=str2num(p3);beef洗手 gamma=p3;beef洗手 x=(handles.img);beef洗手 y=i
8、madjust(x,p1,p2,gamma);beef洗手 axes(handles.axes2);beef洗手 imshow(y);beef洗手 -洗手 3 function jietu_Callback(hObject, eventdata, handles)洗手 %截图 洗手 set(handles.axes2,HandleVisibility,ON);beef洗手 axes(handles.axes2);beef洗手 y=imcrop(handles.img);beef洗手 imshow(y);beef 洗手 handles.Timage=y;beef洗手 -洗手 function f
9、angda_Callback(hObject, eventdata, handles)洗手 -洗手 function lingjz_Callback(hObject, eventdata, handles)洗手 %邻近插值放大 洗手 axes(handles.axes2);beef洗手 prompt=输入放大倍数 :;beef洗手 defans=2;beef洗手 p=inputdlg(prompt,输入放大倍数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 y=imresize(handles.img,p1,nearest);beef %最近邻插值法放大 洗手
10、 imshow(y);beef洗手 -洗手 function shuangxianfa_Callback(hObject, eventdata, handles)洗手 %双线放大 洗手 axes(handles.axes2);beef洗手 prompt=输入放大倍数 :;beef洗手 defans=2;beef洗手 p=inputdlg(prompt,输入放大倍数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 y=imresize(handles.img,p1,bilinear);beef %最近邻插值法放大 洗手 imshow(y);beef洗手 -洗手 f
11、unction shuangsanci_Callback(hObject, eventdata, handles)洗手 %双三次放大 洗手 axes(handles.axes2);beef洗手 prompt=输入放大倍数 :;beef洗手 defans=2;beef洗手 p=inputdlg(prompt,输入放大倍数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 y=imresize(handles.img,p1,bicubic);beef 洗手 imshow(y);beef洗手 -洗手 function suoxiao_Callback(hObject,
12、eventdata, handles)洗手 %邻近插值缩小 洗手 axes(handles.axes2);beef洗手 prompt=输入放大倍数 :;beef洗手 4 defans=0.2;beef洗手 p=inputdlg(prompt,输入放大倍数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 y=imresize(handles.img,p1,nearest);beef %最近邻插值法缩小 洗手 imshow(y);beef洗手 -洗手 function shuangxian_Callback(hObject, eventdata, handles)洗
13、手 %双线性缩小 洗 手 axes(handles.axes2);beef洗手 prompt=输入放大倍数 :;beef洗手 defans=0.2;beef洗手 p=inputdlg(prompt,输入放大倍数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 y=imresize(handles.img,p1,bilinear);beef %最近邻插值法缩小 洗手 imshow(y);beef -洗手 function shuangsancisuox_Callback(hObject, eventdata, handles)洗手 %双三次缩小 洗手 axes(h
14、andles.axes2);beef洗手 prompt=输入放大倍数 :;beef洗手 defans=0.2;beef洗手 p=inputdlg(prompt,输入放大倍数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 y=imresize(handles.img,p1,bicubic);beef 洗手 imshow(y);beef 洗手 -洗手 function xuanzhuan_Callback(hObject, eventdata, handles)洗手 -洗手 function updown_Callback(hObject, eventdata,
15、handles)洗手 %上下翻转 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 if isrgb(handles.img) 洗手 for k=1:3 洗手 y(:,:,k)=flipud(x(:,:,k);beef%上下翻转函数 洗手 end 洗手 imshow(y);beef洗手 else 洗手 x=(handles.img);beef洗手 y=flipud(x);beef 洗手 imshow(y);beef洗手 end 洗手 -洗手 function leftright_Callback(hObject, eventdata, h
16、andles)洗手 %左右翻转 洗手 5 axes(handles.axes2);beef洗手 if isrgb(handles.img) 洗手 x=(handles.img);beef洗手 for k=1:3 洗手 y(:,:,k)=fliplr(x(:,:,k);beef%左右翻转函数 洗手 end 洗手 imshow(y);beef洗手 else 洗手 x=(handles.img);beef洗手 y=fliplr(x);beef洗手 imshow(y);beef洗手 end 洗手 -洗手 Function left90_Callback(hObject, eventdata, hand
17、les)洗手 %左转 90 度 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 y=imrotate(x,90);beef 洗手 imshow(y);beef洗手 -洗手 function right90_Callback(hObject, eventdata, handles)洗手 %右转 90 度 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 y=imrotate(x,-90);beef 洗手 imshow(y);beef洗手 -洗手 function other_Call
18、back(hObject, eventdata, handles)洗手 %任意角度旋转 洗手 axes(handles.axes2);beef洗手 prompt=输入参数 1:;beef洗手 defans=30;beef洗手 p=inputdlg(prompt,输入参数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 y=imrotate(handles.img,p1);beef 洗手 imshow(y);beef洗手 -洗手 function gs_Callback(hObject, eventdata, handles)洗手 %加入高斯噪声 洗手 axes(
19、handles.axes2);beef洗手 prompt=输入参数 1:,输入参数 2;beef洗手 defans=0,0.02;beef洗手 p=inputdlg(prompt,输入参数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 6 p2=str2num(p2);beef y=imnoise(handles.img,gaussian,p1,p2);beef洗手 imshow(y);beef洗手 handles.noise_img=y;beef洗手 guidata(hObject,handles);beef洗手 -洗手 function jy_Callba
20、ck(hObject, eventdata, handles)洗手 %加入椒盐噪声 洗手 prompt=输入参数 1:;beef %对话框的设置 , 吃饭 用户输入的是字符串 洗手 defans=0.02;beef %缺省值 洗手 p=inputdlg(prompt,输入参数 ,1,defans);beef 洗手 p1=str2num(p1);beef %字符串转化为数值 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 y=imnoise(x,salt beef 洗手 imshow(y);beef洗手 handles.noise_img
21、=y;beef洗手 guidata(hObject,handles);beef洗手 -洗手 function cx_Callback(hObject, eventdata, handles)洗手 %加入乘性噪声 洗手 axes(handles.axes2);beef洗手 prompt=输入参数 1:;beef洗手 defans=0.02;beef洗手 p=inputdlg(prompt,输入参数 ,1,defans);beef洗手 p1=str2num(p1);beef洗手 y=imnoise(handles.img,speckle,p1);beef洗手 imshow(y);beef洗手 ha
22、ndles.noise_img=y;beef洗手 guidata(hObject,handles);beef洗手 -洗手 function zhifangtutongji_Callback(hObject, eventdata, handles)洗手 -洗手 function red_Callback(hObject, eventdata, handles)洗手 %R 直方图 洗手 set(handles.axes2,HandleVisibility,ON);beef洗手 axes(handles.axes2);beef洗手 x=imhist(handles.img(:,:,1);beef %
23、直方图统 计 洗手 x1=x(1:10:256);beef洗手 horz=1:10:256;beef洗手 bar(horz,x1);beef洗手 set(handles.axes2,xtick,0:50:255);beef洗手 -洗手 function gray_Callback(hObject, eventdata, handles)洗手 %G 直方图 洗手 7 set(handles.axes2,HandleVisibility,ON);beef洗手 axes(handles.axes2);beef洗手 if isrgb(handles.img) 洗手 x=imhist(handles.i
24、mg(:,:,2);beef %直方图统计 洗手 x1=x(1:10:256);beef洗手 horz=1:10:256;beef洗手 bar(horz,x1);beef洗手 set(handles.axes2,xtick,0:50:255);beef洗手 else 洗手 msgbox(这是灰度图像 ,旋转失败 );beef洗手 end 洗手 -洗手 function blue_Callback(hObject, eventdata, handles)洗手 %B 直方图 洗手 set(handles.axes2,HandleVisibility,ON);beef洗手 axes(handles.
25、axes2);beef洗手 if isrgb(handles.img) 洗手 x=imhist(handles.img(:,:,3);beef %直方图统计 洗手 x1=x(1:10:256);beef洗手 horz=1:10:256;beef洗手 bar(horz,x1);beef洗手 %axis(0 255 0 150000);beef洗手 set(handles.axes2,xtick,0:50:255);beef洗手 %set(handles.axes2,ytick,0:2000:15000);beef洗手 else 洗手 msgbox(这 是灰度图像 ,旋转失败 );beef洗手 e
26、nd 洗手 -洗手 function junheng_Callback(hObject, eventdata, handles)洗手 %直方图均衡 洗手 set(handles.axes2,HandleVisibility,ON);beef洗手 axes(handles.axes2);beef洗手 if isrgb(handles.img) 洗手 a=histeq(handles.img(:,:,1);beef洗手 b=histeq(handles.img(:,:,2);beef洗手 c=histeq(handles.img(:,:,3);beef洗手 k(:,:,1)=a;beef洗手 k(
27、:,:,2)=b;beef洗手 k(:,:,3)=c;beef洗手 imshow(k);beef洗手 else 洗手 h=histeq(handles.img);beef %直方图均衡 洗手 imshow(h);beef洗手 end 洗手 8 -洗手 %频谱分析 洗手 -洗手 function pinpu_Callback(hObject, eventdata, handles)洗手 -洗手 function pinputu_Callback(hObject, eventdata, handles)洗手 %显示频谱图 洗手 axes(handles.axes2);beef洗手 x=(handl
28、es.img);beef洗手 if isrgb(x)洗手 m=fft2(x(:,:,1);beef洗手 y=fftshift(m);beef洗手 imshow(log(abs(y),);beef洗手 else 洗手 m=fft2(x);beef洗手 y=fftshift(m);beef洗手 imshow(log(abs(y),);beef洗手 end 洗手 -洗手 function frequency_Callback(hObject, eventdata, handles)洗手 %低通滤波器 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef
29、洗手 if isrgb(x)洗手 msgbox(这是彩色图像 ,不能通过低通滤波器 ,失败 );beef洗手 else 洗手 y1=imnoise(x,salt beef % 叠加椒盐噪声 洗手 f=double(y1);beef % 数据类型转换 , 吃饭 MATLAB 不支持图像的无符号整型的计算 洗手 g=fft2(f);beef % 傅立叶变换 洗手 g=fftshift(g);beef % 转换数据矩阵 洗手 M,N=size(g);beef洗手 nn=2;beef % 二阶巴特沃斯 (Butterworth)低通滤波器 洗手 d0=10;beef %截止频率为 10 洗手 m=fi
30、x(M/2);beef n=fix(N/2);beef洗手 for i=1:M 洗手 for j=1:N 洗手 d=sqrt(i-m)2+(j-n)2);beef洗手 h=1/(1+0.414*(d/d0)(2*nn);beef % 计算低通滤波器传递函数 洗手 result(i,j)=h*g(i,j);beef洗手 end 洗手 end 洗手 result=ifftshift(result);beef洗手 y2=ifft2(result);beef洗手 y3=uint8(real(y2);beef洗手 9 imshow(y3);beef % 显示滤波处理后的图像 洗手 end 洗手 -洗手
31、function gaotong_Callback(hObject, eventdata, handles)洗手 %高通滤波器 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 if isrgb(x)洗手 msgbox(这是彩色图像 ,不能通过高通滤波器 ,失败 );beef洗手 else 洗手 y1=imnoise(x,gaussian);beef %加高斯噪声 洗手 f=double(y1);beef % 数据类型转换 洗手 k=fft2(f);beef % 傅立叶变换 洗手 g=fftshift(k);beef % 转换数据矩阵 洗
32、手 M,N=size(g);beef洗手 nn=2;beef洗手 d0=3;beef %截止频率为 3 洗手 m=fix(M/2);beef n=fix(N/2);beef洗手 for i=1:M 洗手 for j=1:N 洗手 d=sqrt(i-m)2+(j-n)2);beef % 计算高通滤波器传递函数 洗手 if d=d0 洗手 h=0;beef洗手 else h=1;beef洗手 end 洗手 result(i,j)=h*g(i,j);beef洗手 end 洗手 end 洗手 result=ifftshift(result);beef洗手 y2=ifft2(result);beef洗手
33、 y3=uint8(real(y2);beef洗手 imshow(y3);beef 洗手 end 洗手 -洗手 %接下来这段程序是灰度图像处理程序 洗手 -洗手 function huiduchuli_Callback(hObject, eventdata, handles)洗手 -洗手 function erzhituxiang_Callback(hObject, eventdata, handles)洗手 %二值图像 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 if isrgb(x)洗手 msgbox(这是彩色图像 ,不能转换为
34、二值图像 ,转换失败 );beef洗手 10 else 洗手 j=im2bw(x);beef洗手 imshow(j);beef洗手 end 洗手 -洗手 function tuxiangfushi_Callback(hObject, eventdata, handles)洗手 %图像腐蚀 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 if isrgb(x)洗手 msgbox(这是彩色图像 ,不能进行图像腐蚀 ,失败 );beef洗手 else 洗手 j=im2bw(x);beef洗手 se=eye(5);beef洗手 bw=bwmor
35、ph(j,erode);beef洗手 imshow(bw);beef洗手 end 洗手 -洗手 function suoyintuxiang_Callback(hObject, eventdata, handles)洗手 %创建索引图像 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 if isrgb(x)洗手 msgbox(这是彩色图像 ,不能创建索引图像 ,创建失败 );beef洗手 else 洗手 y=grayslice(x,16);beef洗手 axes(handles.axes2);beef洗手 imshow(y,jet(16
36、);beef洗手 end 洗手 -洗手 %这段是颜色模型的转换 洗手 -洗手 function ysmx_Callback(hObject, eventdata, handles)洗手 -洗手 function hsv_Callback(hObject, eventdata, handles)洗手 %RGB 图像转 HSV 洗手 axes(handles.axes2);beef洗手 x=(handles.img);beef洗手 if isrgb(x)洗手 HSV=rgb2hsv(x);beef洗手 imshow(HSV);beef洗手 else 洗手 msgbox(这是灰度图像 ,不能转换 ,转换失败 );beef洗手 end 洗手