人人范文网 范文大全

matlabGUI图像处理

发布时间:2020-03-02 12:05:31 来源:范文大全 收藏本文 下载本文 手机版

图像处理

一、实习任务

利用MATLAB里面的一些特定函数和GUI可视化图形界面设计一个属于自己的photoshop,使其完成简易的放大、缩小、截图以及直方图统计等功能。

二、实习内容

1、布局设计

2、程序设计 %文件打开

[name,path]=uigetfile({\'*.*\';\'*.bmp\';\'*.tif\';\'*.png\';\'*.gif\';\'*.jpg\'},\'载入图像\'); if isequal(name,0)|isequal(path,0) errordlg(\'没有选中文件\',\'出错\'); return; else x=imread([path,name]); axes(handles.axes1); imshow(x); handles.img=x; handles.noise_img=x; guidata(hObject,handles) end

%文件保存

[filename,pathname] = uiputfile({\'*.*\';\'*.bmp\';\'*.tif\';\'*.png\';\'*.gif\';\'*.jpg\'},\'图片保存为\'); if isequal([filename,pathname],[0,0]) errordlg(\'没有保存\',\'出错\'); return; else file=strcat(pathname,filename); (handles.axes2); i=getimage(gca); imwrite(i,file); end

%文件退出 clc; close all; close(gcf);

%灰度处理

axes(handles.axes2); if isrgb(handles.img) y=rgb2gray(handles.img); %RGB•••••••••• imshow(y); else msgbox(\'这已经是灰度图像\',\'转换失败\'); end %截图

set(handles.axes2,\'HandleVisibility\',\'ON\'); axes(handles.axes2); y=imcrop(handles.img); imshow(y); handles.Timage=y;

%双线性缩小

axes(handles.axes2); prompt={\'输入放大倍数:\'}; defans={\'0.2\'}; p=inputdlg(prompt,\'输入放大倍数\',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,\'bilinear\'); %法缩小 imshow(y);

%双线放大

axes(handles.axes2); prompt={\'输入放大倍数:\'}; defans={\'2\'}; p=inputdlg(prompt,\'输入放大倍数\',1,defans); p1=str2num(p{1}); y=imresize(handles.img,p1,\'bilinear\'); %值法放大 imshow(y);

%上下翻转

最近邻插值最近邻插axes(handles.axes2); x=(handles.img); if isrgb(handles.img) for k=1:3 y(:,:,k)=flipud(x(:,:,k));%上下翻转函数 end imshow(y); else x=(handles.img); y=flipud(x); imshow(y); end

%左右翻转

axes(handles.axes2); if isrgb(handles.img) x=(handles.img); for k=1:3 y(:,:,k)=fliplr(x(:,:,k));%左右翻转函数 end imshow(y); else x=(handles.img); y=fliplr(x); imshow(y); end

%左转90度

axes(handles.axes2); x=(handles.img); y=imrotate(x,90); imshow(y);

%右转90度

axes(handles.axes2); x=(handles.img); y=imrotate(x,-90); imshow(y);

%任意角度旋转 axes(handles.axes2); prompt={\'输入参数1:\'}; defans={\'30\'}; p=inputdlg(prompt,\'输入参数\',1,defans); p1=str2num(p{1}); y=imrotate(handles.img,p1); imshow(y);

%亮度处理

prompt={\'输入参数1\',\'输入参数2\',\'输入gamma\'}; defans={\'[0 0.7]\',\'[0 1]\',\'1\'}; p=inputdlg(prompt,\'输入参数\',1,defans); p1=str2num(p{1}); p2=str2num(p{2}); p3=str2num(p{3}); gamma=p3; x=(handles.img); y=imadjust(x,p1,p2,gamma); axes(handles.axes2); imshow(y); %G直方图

set(handles.axes2,\'HandleVisibility\',\'ON\'); axes(handles.axes2); if isrgb(handles.img) x=imhist(handles.img(:,:,2)); %直方图统计 x1=x(1:10:256); horz=1:10:256; bar(horz,x1); set(handles.axes2,\'xtick\',0:50:255); else msgbox(\'这是灰度图像\',\'旋转失败\'); end %R直方图

set(handles.axes2,\'HandleVisibility\',\'ON\'); axes(handles.axes2); x=imhist(handles.img(:,:,1)); %统计

x1=x(1:10:256); horz=1:10:256; bar(horz,x1); set(handles.axes2,\'xtick\',0:50:255); %B直方图

set(handles.axes2,\'HandleVisibility\',\'ON\'); axes(handles.axes2); if isrgb(handles.img)

直方图x=imhist(handles.img(:,:,3)); %直方图统计

x1=x(1:10:256); horz=1:10:256; bar(horz,x1); %axis([0 255 0 150000]); set(handles.axes2,\'xtick\',0:50:255); %set(handles.axes2,\'ytick\',0:2000:15000); else msgbox(\'这是灰度图像\',\'旋转失败\'); end

%直方图均衡

set(handles.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(:,:,3)=c; imshow(k); else h=histeq(handles.img); %直方图均衡 imshow(h); end

3、效果图

三、遇到的问题及解决方法

1、遇到的问题

最开始在Command里面用imread打开图片是可行的,但到了GUI里面之后,会出现一些错误,主要就是提示说:找不到对应的地方。还有就是在编写完程序之后,放大感觉没有任何变化。

2、解决方法

在查询资料后发现,在GUI里面打开图片是需要编写图片的地址以及格式的,要先判断你要操作的图片是否存在,如果不存在,应该提示你不存在的错误;在不能放大这个问题上,后来发现是axes2不够大,也就是画布不够大,再放大了画布后,放大就明显多了,缩小的时候也是这样。

四、主要收获和心得体会

在俩周的自动化软件实训里面,最大的感触就是MATLAB很强大,不但可以用自己自带的函数,还可以和C语言Java等语言连接共用,在处理图像上有自己独特的优势,在编辑菜单之后再进行相应的编程,做出来的界面和网页一样好看,这俩周特别快,不过收获很多,在很大程度上锻炼了我们的设计能力。

图像处理 实验报告

图像处理教学大纲

图像处理说课稿

图像处理教学大纲

图像处理技术

图像处理与平面设计

图像处理实验教学小结

图像素材处理(推荐)

Photoshop图像处理教案

遥感图像处理实验报告

matlabGUI图像处理
《matlabGUI图像处理.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档