接下来学习的是关于图像处理方面的知识。
实例一: 对图像进行灰度处理、直方图均衡化处理、二值处理以及用Canny算子对图像进行边缘检测。
第一步:GUIDE画界面。
第二步:编辑代码。
function varargout = tuxiangchuli(varargin)
% TUXIANGCHULI MATLAB code for tuxiangchuli.fig
% TUXIANGCHULI, by itself, creates a new TUXIANGCHULI or raises the existing
% singleton*.
%
% H = TUXIANGCHULI returns the handle to a new TUXIANGCHULI or the handle to
% the existing singleton*.
%
% TUXIANGCHULI('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in TUXIANGCHULI.M with the given input arguments.
%
% TUXIANGCHULI('Property','Value',...) creates a new TUXIANGCHULI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before tuxiangchuli_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to tuxiangchuli_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one
% instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help tuxiangchuli
% Last Modified by GUIDE v2.5 31-Jul-2019 19:53:55
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @tuxiangchuli_OpeningFcn, ...
'gui_OutputFcn', @tuxiangchuli_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before tuxiangchuli is made visible.
function tuxiangchuli_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to tuxiangchuli (see VARARGIN)
% Choose default command line output for tuxiangchuli
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes tuxiangchuli wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = tuxiangchuli_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% --- Executes on button press in open.
function open_Callback(hObject, eventdata, handles)
% hObject handle to open (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[filename,pathname]=uigetfile({'*.bmp;*.jpg;*.png;*.jpeg;*.tif;*.gif;*.Image files'},'载入图像');%选择路径打开图像
if isequal(filename,0)||isequal(pathname,0) %若filename为0或pathname为0,即未选中文件
errordlg('未选中文件','警告'); %建立一个名为警告的错误对话框,内容为“未选中文件”
return;
end
str=[pathname,filename]; %将文件名和目录名组合成一个完整的路径
x=imread(str); %读入图像
axes(handles.axes1); %定义图形区域axes1
imshow(x); %显示图像
handles.img=x; %把图像发给handles.img
guidata(hObject,handles); %把handles句柄更新
% --- Executes on button press in save.
function save_Callback(hObject, eventdata, handles)
% hObject handle to save (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
[FileName,PathName] = uiputfile({'*.jpg','JPEG(*.jpg)';'*.bmp','Bitmap(*.bmp)';'*.gif','GIF(*.gif)';'*.*', 'All Files (*.*)'},'Save Picture','Untitled');
if FileName==0
return;
else
h=getframe(handles.axes2);
imwrite(h.cdata,[PathName,FileName]);
end
% --- Executes on button press in exit.
function exit_Callback(hObject, eventdata, handles)
% hObject handle to exit (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
clc %清除指令窗
close all %关闭所有句柄可见的窗口
close(gcf) %关闭当前窗口
clear %清除内存变量和函数
% --- Executes on button press in Rgb2gray.
function Rgb2gray_Callback(hObject, eventdata, handles)
% hObject handle to Rgb2gray (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.axes2); %定义图形区域axes2
x=rgb2gray(handles.img); %利用rgb2gray函数对源图像进行灰度处理
imshow(x); %显示图像
xlabel('灰度图像'); %x轴名为“灰度图像”
guidata(hObject,handles);%把handles句柄更新
% --- Executes on button press in zhifangtu.
function zhifangtu_Callback(hObject, eventdata, handles)
% hObject handle to zhifangtu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
x=rgb2gray(handles.img); %对图像进行灰度处理
h=histeq(x); %对图像进行直方图均衡化处理
axes(handles.axes2); %定义图形区域axes2
imshow(h); %显示图像
xlabel('直方图均衡化后的图像');
guidata(hObject,handles); %把handles句柄更新
% --- Executes on button press in erzhi.
function erzhi_Callback(hObject, eventdata, handles)
% hObject handle to erzhi (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.axes2); %定义图形区域axes2
BW=im2bw(handles.img); %将图像转化为二值图像
imshow(BW); %显示二值图像
xlabel('二值图像');
guidata(hObject,handles); %把handles句柄更新
% --- Executes on button press in canny.
function canny_Callback(hObject, eventdata, handles)
% hObject handle to canny (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
I=im2bw(handles.img);
BW1=edge(I,'canny'); %用canny算子进行边缘检测
path1='E:\MATLAB\R2018a\bin\';
name='用canny算子进行边缘检测的图片.jpg';
imwrite(BW1,[path1 name]);
str1=[path1 name];
im1=imread(str1);
axes(handles.axes2);
imshow(im1); %显示边缘检测图像
xlabel('边缘检测图像');
guidata(hObject,handles); %把handles句柄更新
第三步:运行。
第四步:在完成GUI界面创建后,对所创建界面的效果进行试验。点击“打开图片”按钮在文件夹中选择一张需要处理的图像,分别点击“边缘检测”、“灰度处理”、“直方图均衡化处理”、“二值处理”按钮可以在右边画布中得到相应处理后的图像,点击“保存图片”按钮可以保存右边画布中得到的图像,点击“退出”按钮可以退出界面。
- 边缘检测
- 灰度处理
- 直方图均衡化处理
- 二值处理