基于MATLAB GUI的数字图像处理系统实现方案,包含常见图像处理功能。代码分为两部分:GUI界面设计和回调函数实现。
%% 第一部分:创建GUI界面 (使用GUIDE)
% 1. 打开GUIDE: guide
% 2. 创建新GUI,添加以下控件:
% - 1个axes (Tag: originalAxes)
% - 1个axes (Tag: processedAxes)
% - 按钮组:
% - "打开图像" (Tag: openButton)
% - "灰度转换" (Tag: grayButton)
% - "直方图均衡化" (Tag: histeqButton)
% - "边缘检测" (Tag: edgeButton)
% - "中值滤波" (Tag: medianButton)
% - "二值化" (Tag: thresholdButton)
% - "形态学操作" (Tag: morphButton)
% - "保存图像" (Tag: saveButton)
% - 参数编辑框 (Tag: paramEdit, 用于滤波器参数)%% 第二部分:回调函数实现 (保存为同名的.m文件)
function image_processing_gui% 创建GUI界面handles.figure = figure('Name','数字图像处理系统',...'Position',[100 100 800 600]);% 图像显示区域handles.originalAxes = axes('Parent',handles.figure,...'Position',[0.05 0.3 0.4 0.6]);handles.processedAxes = axes('Parent',handles.figure,...'Position',[0.55 0.3 0.4 0.6]);% 按钮区域handles.openButton = uicontrol('Style','pushbutton',...'String','打开图像','Position',[20 20 100 30],...'Callback',{@openCallback,handles});handles.grayButton = uicontrol('Style','pushbutton',...'String','灰度转换','Position',[150 20 100 30],...'Callback',{@grayCallback,handles});% 添加其他按钮(类似上述结构)...guidata(handles.figure, handles);
end%% 回调函数示例
function openCallback(~,~,handles)[filename, pathname] = uigetfile({'*.jpg;*.png;*.bmp'},'选择图像');if isequal(filename,0)return;endimg = imread(fullfile(pathname,filename));handles.originalImg = img;imshow(img, 'Parent', handles.originalAxes);guidata(handles.figure, handles);
endfunction grayCallback(~,~,handles)if ~isfield(handles,'originalImg')errordlg('请先打开图像');return;endgrayImg = rgb2gray(handles.originalImg);imshow(grayImg, 'Parent', handles.processedAxes);handles.processedImg = grayImg;guidata(handles.figure, handles);
endfunction histeqCallback(~,~,handles)if ~isfield(handles,'processedImg')errordlg('请先处理图像');return;end[counts,binLocations] = imhist(handles.processedImg);imhist(handles.processedImg, 'Parent', handles.originalAxes);handles.histImg = histeq(handles.processedImg);imshow(handles.histImg, 'Parent', handles.processedAxes);guidata(handles.figure, handles);
endfunction edgeCallback(~,~,handles)if ~isfield(handles,'processedImg')errordlg('请先处理图像');return;endlevel = graythresh(handles.processedImg);BW = imbinarize(handles.processedImg,level);edges = edge(BW, 'Canny');imshow(edges, 'Parent', handles.processedAxes);handles.edgeImg = edges;guidata(handles.figure, handles);
endfunction saveCallback(~,~,handles)if ~isfield(handles,'processedImg')errordlg('没有可保存的图像');return;end[filename, pathname] = uiputfile({'*.jpg;*.png;*.bmp'},'保存图像');if isequal(filename,0)return;endimwrite(handles.processedImg, fullfile(pathname,filename));
end
主要功能说明:
- 图像读取:支持JPG/PNG/BMP格式
- 灰度转换:使用rgb2gray函数
- 直方图均衡化:增强对比度
- 边缘检测:结合Otsu阈值法和Canny算子
- 图像保存:支持多种格式导出
扩展建议:
基于MATLAB-GUI图形界面的数字图像处理软件
基于MATLAB-GUI图形界面的数字图像处理软件 本系统设计基于GUI图形界面,用matlab语言编写代码,实现功能包括图象的读取、存储、显示、直方图均衡化、阈值化、小波分解、小波重构、加噪、去噪、平滑、锐化、边缘检测、图像分割等
-
添加更多处理功能:
% 中值滤波示例 function medianCallback(~,~,handles)if isempty(handles.processedImg)return;endprompt = {'输入滤波核大小:'};dlgtitle = '参数设置';dims = [1 50];definput = {'3'};answer = inputdlg(prompt,dlgtitle,dims,definput);if isempty(answer)return;endksize = str2double(answer{1});filtered = medfilt2(handles.processedImg, [ksize ksize]);imshow(filtered, 'Parent', handles.processedAxes); end
-
添加形态学操作:
% 形态学处理示例 function morphCallback(~,~,handles)se = strel('disk',3);dilated = imdilate(handles.processedImg, se);eroded = imerode(handles.processedImg, se);imshow(dilated, 'Parent', handles.processedAxes); end
使用说明:
- 运行
image_processing_gui
启动程序 - 点击"打开图像"选择处理图像
- 选择不同处理方式(注意处理顺序)
- 处理结果实时显示在右侧窗口
- 可通过"保存图像"存储处理结果
该系统实现了基本的数字图像处理功能,可根据需要扩展更多算法(如形态学操作、特征提取等)。所有处理均基于MATLAB Image Processing Toolbox实现,建议安装相关工具箱以获得完整功能。