MATLAB GUI设计 图像处理基本操作(一)

最近在做图像处理的有关课设,想起以前学过的以冈萨雷斯版为教材的数字图像处理的内容和基于MATLAB GUI编程的代码,在此浅浅记录一下。

一、GUI打开与基本操作

>>guide

在命令行窗口输入guide,新建gui,弹出fig窗用以设计gui。画好界面后进行菜单编辑器的编辑,命名菜单栏后点击查看打开回调函数,进入编程。以下是我设计gui的部分菜单:

MATLAB GUI设计 图像处理基本操作(一)_第1张图片

二、图像打开、保存、另存、撤销操作

axes1、axes2图像信息存储在OpeningFcn函数中,以便操作后期图像的保存与撤销操作:

% Choose default command line output for zuoye
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);
setappdata(handles.axes1,'img1',0);
setappdata(handles.axes2,'img2',0);

图像打开open:

global s; %全局变量设置,axes1图像信息存储
global cell;%用于保存操作步骤
global pos;%用于保存操作步骤
cell={};
pos=0;
axes(handles.axes1);
[filename,pathname]=uigetfile({'*.bmp;*.jpg;*.png;*.jpeg;*.tif'},'pick an image','C:\');
str=[pathname filename];
s=str;
if isequal(filename,0)||isequal(pathname,0)
    warndlg('please select a picture first!','warning'); %若没选择图像,弹出警告
    return;
else
    img_src=imread(str);
    imshow(img_src);
end
setappdata(handles.axes1,'img1',img_src);

保存save:(变换后的图像覆盖原图,老师要求不能采用截图形式保存,因此上文设变量保存更新axes1、axes2的图像信息)

global s;
axes(handles.axes1);
img=getappdata(handles.axes2,'img2');
imshow(img);
imwrite(img,s);
setappdata(handles.axes1,'img1',img);

另存save as :(变换后的图像新建路径保存) 

[filename,pathname]=uiputfile({'*.jpg','JPEG(*.jpg)';'*.bmp','Bitmap(*.bmp)';'*.gif','GIF(*.gif)';'*.*','ALL Files(*.*)'},'save picture','untitled');
if filename==0
    return;
else
    fpath=fullfile(pathname,filename);
end
img_src=getappdata(handles.axes2,'img2');
imwrite(img_src,fpath);

撤销操作:

global cell;
global pos;
imshow(cell{pos-1});

 三、图像形式

图像主要有三种形式:rgb彩图、灰度图、二值图,均以像素点矩阵表示。

彩图每个像素包含R,G,B三个分量值,取某一分量时:image(m,n,x),m,n为矩阵坐标,x为某一rgb通道。

灰度图的像素只表示明暗,不表示颜色,根据其不同灰度级来存储。

二值图每个像素值为0或1,只有黑白两种颜色。

三种图片之间可用函数转换,彩图颜色模式有rgb、lab、hsv等。转换函数有:

rgb2gray           %将rgb图像转换成灰度图

rgb2lab          %将rgb图象转换成lab图象

rgb2hsv          %将rgb图象转换成hsv图象

hsv2rgb                  %将hsv图象转换成rgb图象

rgb2ycbcr                %将rgb图象转换成ycbcr图象

ycbcr2rgb                %将ycbcr图象转换成rgb图象

im2double               %将灰度图转换成二值图

 

你可能感兴趣的:(matlab,图像处理)