基于matlab的图像处理源程序_第1页
基于matlab的图像处理源程序_第2页
基于matlab的图像处理源程序_第3页
基于matlab的图像处理源程序_第4页
基于matlab的图像处理源程序_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、function varargout = two(varargin)% Begin initialization code - DO NOT EDIT gui_Singleton = 1;gui_Se = struct(gui_Name,mfilename, .gui_Singleton,gui_Singleton, .gui_Callback, if nargin & ischar(varargin1), ., ., , . );gui_Se.gui_Callback = str2func(varargin1);endif nargoutvarargout1:nargout =else(gu

2、i_Se, varargin:);(gui_Se, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before erzhi is made visible.function(hObject, eventdata, handles, varargin)% This function has no output args, see.%接下来是菜单的程序function file_Callback(hObject, eventdata, handles)%文件打开程序function open_Callb

3、ack(hObject, eventdata, handles) name,path=uigetfile(*.bmp,载入图像);if isequal(name,0)|isequal(path,0) errordlg(没有选中文件,出错); return;elsex=imread(path,name); axes(handles.axes_src); imshow(x); handles.img=x; handles.noise_img=x;guidata(hObjecndles)endfunction save_Callback(hObject, eventdata, handles)%文件

4、保存filename,pathname = uiputfile(*.bmp,保存为);if isequal(filename,pathname,0,0) errordlg(没有保存,出错); return;else file=strcat(pathname,filename); (handles.axes2); i=getimage(gca); imwrite(i,file);endfunction exit_Callback(hObject, eventdata, handles) clc;close all; close(gcf);%编辑菜单的程序function edit_Callbac

5、k(hObject, eventdata, handles)function huidu_Callback(hObject, eventdata, handles)%灰度处理 axes(handles.axes2); if isrgb(handles.img)y=rgb2gray(handles.img); %RGB imshow(y);elsemsgbox(这已经是灰度图像,转换失败);endfunction liangdu_Callback(hObject, eventdata, handles)%亮度处理prompt=输入参数 1,输入参数 2,输入gamma; defans=0 0.7

6、,0 1,1;p=inputdlg(prompt,输入参数,1,defans); p1=str2num(p1);p2=str2num(p2); p3=str2num(p3); gamma=p3; x=(handles.img); y=imadjust(x,p1,p2,gamma); axes(handles.axes2); imshow(y);function jietu_Callback(hObject, eventdata, handles)%截图sendles.axes2,HandleVisibility,ON);axes(handles.axes2); y=imcrop(handles

7、.img); imshow(y); handles.Timage=y;functionda_Callback(hObject, eventdata, handles)function lingjz_Callback(hObject, eventdata, handles)%邻近插值放大 axes(handles.axes2); prompt=输入放大倍数:;defans=2;p=inputdlg(prompt,输入放大倍数,1,defans); p1=str2num(p1);y=imresize(handles.img,p1,nearest); imshow(y);%最近邻插值法放大funct

8、ion shuangxianfa_Callback(hObject, eventdata, handles)%双线放大 axes(handles.axes2); prompt=输入放大倍数:;defans=2;p=inputdlg(prompt,输入放大倍数,1,defans); p1=str2num(p1);y=imresize(handles.img,p1,bilinear); imshow(y);%最近邻插值法放大function shuangsanci_Callback(hObject, eventdata, handles)%双三次放大 axes(handles.axes2); pr

9、ompt=输入放大倍数:;defans=2;p=inputdlg(prompt,输入放大倍数,1,defans); p1=str2num(p1); y=imresize(handles.img,p1,bicubic); imshow(y);function suoxiao_Callback(hObject, eventdata, handles)%邻近插值缩小 axes(handles.axes2); prompt=输入放大倍数:;defans=0.2;p=inputdlg(prompt,输入放大倍数,1,defans); p1=str2num(p1); y=imresize(handles.

10、img,p1,nearest);imshow(y);%最近邻插值法缩小function shuangxian_Callback(hObject, eventdata, handles)%双线性缩小 axes(handles.axes2); prompt=输入放大倍数:;defans=0.2;p=inputdlg(prompt,输入放大倍数,1,defans); p1=str2num(p1);y=imresize(handles.img,p1,bilinear);%最近邻插值法缩小imshow(y);function shuangsancisuox_Callback(hObject, event

11、data, handles)%双三次缩小 axes(handles.axes2); prompt=输入放大倍数:;defans=0.2;p=inputdlg(prompt,输入放大倍数,1,defans); p1=str2num(p1); y=imresize(handles.img,p1,bicubic); imshow(y);function xuanzhuan_Callback(hObject, eventdata, handles)function updown_Callback(hObject, eventdata, handles)%上下翻转 axes(handles.axes2)

12、; x=(handles.img);if isrgb(handles.img) for k=1:3y(:,:,k)=flipud(x(:,:,k);%上下翻转函数end imshow(y); elsex=(handles.img); y=flipud(x); imshow(y);endfunction leftright_Callback(hObject, eventdata, handles)%左右翻转axes(handles.axes2);if isrgb(handles.img) x=(handles.img);for k=1:3y(:,:,k)=fliplr(x(:,:,k);%左右翻

13、转函数 endimshow(y); elsex=(handles.img); y=fliplr(x); imshow(y);endFunction left90_Callback(hObject, eventdata, handles)%左转 90 度 axes(handles.axes2); x=(handles.img); y=imroe(x,90); imshow(y);function right90_Callback(hObject, eventdata, handles)%右转 90 度 axes(handles.axes2); x=(handles.img); y=imroe(x

14、,-90); imshow(y);function other_Callback(hObject, eventdata, handles)%任意角度旋转 axes(handles.axes2); prompt=输入参数 1:;defans=30;p=inputdlg(prompt,输入参数,1,defans); p1=str2num(p1);y=imroe(handles.img,p1); imshow(y);function gs_Callback(hObject, eventdata, handles)%加入噪声axes(handles.axes2);prompt=输入参数 1:,输入参数

15、 2;defans=0,0.02;p=inputdlg(prompt,输入参数,1,defans); p1=str2num(p1);p2=str2num(p2);y=imnoise(handles.img,gaussian,p1,p2);imshow(y); handles.noise_img=y;guidata(hObjecndles);function jy_Callback(hObject, eventdata, handles)%加入椒盐噪声prompt=输入参数 1:;%框的设置,用户输入的是字符串defans=0.02;%缺省值p=inputdlg(prompt,输入参数,1,de

16、fans);p1=str2num(p1); axes(handles.axes2); x=(handles.img);%字符串转化为数值y=imnoise(x,salt & pepper,p1); imshow(y); handles.noise_img=y;guidata(hObjecndles);function cx_Callback(hObject, eventdata, handles)%加入乘性噪声 axes(handles.axes2); prompt=输入参数 1:;defans=0.02;p=inputdlg(prompt,输入参数,1,defans); p1=str2num

17、(p1); y=imnoise(handles.img,speckle,p1); imshow(y);handles.noise_img=y; guidata(hObjecndles);function zhitutongji_Callback(hObject, eventdata, handles)function red_Callback(hObject, eventdata, handles)%R 直方图sendles.axes2,HandleVisibility,ON);axes(handles.axes2);x=imhisndles.img(:,:,1);%直方图统计x1=x(1:1

18、0:256); horz=1:10:256;bar(horz,x1);sendles.axes2,xtick,0:50:255);function gray_Callback(hObject, eventdata, handles)%G 直方图sendles.axes2,HandleVisibility,ON);axes(handles.axes2); if isrgb(handles.img)x=imhisndles.img(:,:,2);%直方图统计x1=x(1:10:256); horz=1:10:256;bar(horz,x1);sendles.axes2,xtick,0:50:255

19、); elsemsgbox(这是灰度图像,旋转失败);endfunction blue_Callback(hObject, eventdata, handles)%B 直方图sendles.axes2,HandleVisibility,ON);axes(handles.axes2); if isrgb(handles.img)x=imhisndles.img(:,:,3);%直方图统计x1=x(1:10:256); horz=1:10:256;bar(horz,x1);%axis(0 255 0 150000);sendles.axes2,xtick,0:50:255);%se elsendl

20、es.axes2,ytick,0:2000:15000);msgbox(这是灰度图像,旋转失败);endfunction junheng_Callback(hObject, eventdata, handles)%直方图均衡sendles.axes2,HandleVisibility,ON);axes(handles.axes2); if isrgb(handles.img)a=histeq(handles.img(:,:,1);b=histeq(handles.img(:,:,2);c=histeq(handles.img(:,:,3); k(:,:,1)=a;k(:,:,2)=b;k(:,

21、:,3)=c;imshow(k);else h=histeq(handles.img); imshow(h);end%直方图均衡%频谱分析function pinpu_Callback(hObject, eventdata, handles)function pinputu_Callback(hObject, eventdata, handles)%显示频谱图 axes(handles.axes2); x=(handles.img);if isrgb(x)m=fft2(x(:,:,1);y=fftshift(m); imshow(log(abs(y),);elsem=fft2(x); y=ff

22、tshift(m); imshow(log(abs(y),);endfunction frequency_Callback(hObject, eventdata, handles)%低通滤波器 axes(handles.axes2); x=(handles.img);if isrgb(x)msgbox(这是彩像,不能通过低通滤波器,失败);elsey1=imnoise(x,salt & pepper);% 叠加椒盐噪声f=double(y1);% 数据类型转换,不支持图像的无符号整型的计算g=fft2(f); g=fftshift(g); M,N=size(g);%变换转换数据矩阵nn=2;

23、d0=10;%(Butterworth)低通滤波器二阶%截止频率为 10m=fix(M/2); n=fix(N/2); for i=1:Mfor j=1:Nd=sqrt(i-m)2+(j-n)2); h=1/(1+0.414*(d/d0)(2*nn); result(i,j)=h*g(i,j);endend result=ifftshift(result); y2=ifft2(result);% 计算低通滤波器传递函数y3=u8(real(y2);imshow(y3);% 显示滤波处理后的图像endfunctiontong_Callback(hObject, eventdata, handle

24、s)%高通滤波器 axes(handles.axes2); x=(handles.img);if isrgb(x)msgbox(这是彩像,不能通过高通滤波器,失败);elsey1=imnoise(x,gaussian);%加噪声f=double(y1); k=fft2(f); g=fftshift(k); M,N=size(g); nn=2;d0=3;% 数据类型转换%变换% 转换数据矩阵%截止频率为 3m=fix(M/2); n=fix(N/2); for i=1:Mfor j=1:Nd=sqrt(i-m)2+(j-n)2); if d=d0h=0;else h=1; endresult(i

25、,j)=h*g(i,j);endend result=ifftshift(result); y2=ifft2(result);% 计算高通滤波器传递函数y3=u8(real(y2);imshow(y3); end%接下来这是灰度图像处理程序function huiduchuli_Callback(hObject, eventdata, handles)function erzhituxiang_Callback(hObject, eventdata, handles)%二值图像 axes(handles.axes2); x=(handles.img);if isrgb(x)msgbox(这是彩

26、像,不能转换为二值图像,转换失败);else j=im2bw(x); imshow(j); endfunction tuxiangfushi_Callback(hObject, eventdata, handles)%图像腐蚀 axes(handles.axes2); x=(handles.img);if isrgb(x)msgbox(这是彩像,不能进行图像腐蚀,失败);else j=im2bw(x); se=eye(5);bw=bwmorph(j,erode); imshow(bw);endfunction suoyuxiang_Callback(hObject, eventdata, ha

27、ndles)%创建索引图像 axes(handles.axes2); x=(handles.img);if isrgb(x)msgbox(这是彩 else y=grayslice(x,16); axes(handles.axes2); imshow(y,jet(16); end像,不能创建索引图像,创建失败);%这段是颜色模型的转换function ysmx_Callback(hObject, eventdata, handles)function hsv_Callback(hObject, eventdata, handles)%RGB 图像转 HSV axes(handles.axes2)

28、; x=(handles.img);if isrgb(x) HSV=rgb2hsv(x); imshow(HSV); elsemsgbox(这是灰度图像,不能转换,转换失败);endfunction ntsc_Callback(hObject, eventdata, handles)%RGB 转 NTSCaxes(handles.axes2); x=(handles.img);if isrgb(x) ntsc=rgb2ntsc(x); imshow(ntsc); elsemsgbox(这是灰度图像,不能转换,转换失败);endfunction ycbcr_Callback(hObject, e

29、ventdata, handles)%RGB 转 YCBCRaxes(handles.axes2); x=(handles.img);if isrgb(x) ycbcr=rgb2ycbcr(x); imshow(ycbcr);elsemsgbox(这是灰度图像,不能转换,转换失败);end%这是滤波程序function lvbo_S str=get(hObject,string);(hObject, eventdata, handles)sendles.axes2,HandleVisibility,ON);axes(handles.axes2); i=handles.noise_img; if

30、 isrgb(i)a=handles.noise_img(:,:,1); b=handles.noise_img(:,:,2); c=handles.noise_img(:,:,3); switch strcase 中值滤波k(:,:,1)=medfilt2(a);k(:,:,2)=medfilt2(b);k(:,:,3)=medfilt2(c); imshow(k)case 自适应滤波k(:,:,1)=wiener2(a,5,5);k(:,:,2)=wiener2(b,5,5);k(:,:,3)=wiener2(c,5,5); imshow(k);case平滑滤波k(:,:,1)=filter2(fspel(average,3),a)/255;k(:,:,2)=filter2(fspek(:,:,3)=filter2(fspeimshow(k); endelseswitch strl(average,3),b)/255;l(average,3),c)/255;case 中值滤波k=medfilt2(handles.noise_img); imshow(k)case 线性滤波h=1 1 1;1 1 1;1 1 1;H=h/9; m=double(handles.noise_img); k=conv2(m,h);imshow(k,); cas

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论