基于MATLAB-GUI图形界面的数字图像处理

基于MATLAB GUI的数字图像处理系统实现方案,包含常见图像处理功能。代码分为两部分:GUI界面设计和回调函数实现。

matlab 复制代码
%% 第一部分:创建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;
    end
    img = imread(fullfile(pathname,filename));
    handles.originalImg = img;
    imshow(img, 'Parent', handles.originalAxes);
    guidata(handles.figure, handles);
end

function grayCallback(~,~,handles)
    if ~isfield(handles,'originalImg')
        errordlg('请先打开图像');
        return;
    end
    grayImg = rgb2gray(handles.originalImg);
    imshow(grayImg, 'Parent', handles.processedAxes);
    handles.processedImg = grayImg;
    guidata(handles.figure, handles);
end

function 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);
end

function edgeCallback(~,~,handles)
    if ~isfield(handles,'processedImg')
        errordlg('请先处理图像');
        return;
    end
    level = graythresh(handles.processedImg);
    BW = imbinarize(handles.processedImg,level);
    edges = edge(BW, 'Canny');
    imshow(edges, 'Parent', handles.processedAxes);
    handles.edgeImg = edges;
    guidata(handles.figure, handles);
end

function saveCallback(~,~,handles)
    if ~isfield(handles,'processedImg')
        errordlg('没有可保存的图像');
        return;
    end
    [filename, pathname] = uiputfile({'*.jpg;*.png;*.bmp'},'保存图像');
    if isequal(filename,0)
        return;
    end
    imwrite(handles.processedImg, fullfile(pathname,filename));
end

主要功能说明:

  1. 图像读取:支持JPG/PNG/BMP格式
  2. 灰度转换:使用rgb2gray函数
  3. 直方图均衡化:增强对比度
  4. 边缘检测:结合Otsu阈值法和Canny算子
  5. 图像保存:支持多种格式导出

扩展建议:

基于MATLAB-GUI图形界面的数字图像处理软件

基于MATLAB-GUI图形界面的数字图像处理软件 本系统设计基于GUI图形界面,用matlab语言编写代码,实现功能包括图象的读取、存储、显示、直方图均衡化、阈值化、小波分解、小波重构、加噪、去噪、平滑、锐化、边缘检测、图像分割等

  1. 添加更多处理功能:

    matlab 复制代码
    % 中值滤波示例
    function medianCallback(~,~,handles)
        if isempty(handles.processedImg)
            return;
        end
        prompt = {'输入滤波核大小:'};
        dlgtitle = '参数设置';
        dims = [1 50];
        definput = {'3'};
        answer = inputdlg(prompt,dlgtitle,dims,definput);
        if isempty(answer)
            return;
        end
        ksize = str2double(answer{1});
        filtered = medfilt2(handles.processedImg, [ksize ksize]);
        imshow(filtered, 'Parent', handles.processedAxes);
    end
  2. 添加形态学操作:

    matlab 复制代码
    % 形态学处理示例
    function morphCallback(~,~,handles)
        se = strel('disk',3);
        dilated = imdilate(handles.processedImg, se);
        eroded = imerode(handles.processedImg, se);
        imshow(dilated, 'Parent', handles.processedAxes);
    end

使用说明:

  1. 运行image_processing_gui启动程序
  2. 点击"打开图像"选择处理图像
  3. 选择不同处理方式(注意处理顺序)
  4. 处理结果实时显示在右侧窗口
  5. 可通过"保存图像"存储处理结果

该系统实现了基本的数字图像处理功能,可根据需要扩展更多算法(如形态学操作、特征提取等)。所有处理均基于MATLAB Image Processing Toolbox实现,建议安装相关工具箱以获得完整功能。

相关推荐
reddingtons6 分钟前
Adobe高阶技巧与设计师创意思维的进阶指南
人工智能·adobe·illustrator·设计师·photoshop·创意设计·aftereffects
机器之心13 分钟前
刚刚,Grok4跑分曝光:「人类最后考试」拿下45%,是Gemini 2.5两倍,但网友不信
人工智能
蹦蹦跳跳真可爱58928 分钟前
Python----大模型(使用api接口调用大模型)
人工智能·python·microsoft·语言模型
小爷毛毛_卓寿杰30 分钟前
突破政务文档理解瓶颈:基于多模态大模型的智能解析系统详解
人工智能·llm
Mr.Winter`30 分钟前
障碍感知 | 基于3D激光雷达的三维膨胀栅格地图构建(附ROS C++仿真)
人工智能·机器人·自动驾驶·ros·具身智能·环境感知
好开心啊没烦恼40 分钟前
Python 数据分析:numpy,抽提,整数数组索引与基本索引扩展(元组传参)。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy·pandas
磊叔的技术博客1 小时前
LLM 系列(六):模型推理篇
人工智能·面试·llm
爱分享的飘哥1 小时前
【V6.0 - 听觉篇】当AI学会“听”:用声音特征捕捉视频的“情绪爽点”
人工智能·音视频
fzyz1231 小时前
Windows系统下WSL从C盘迁移方案
人工智能·windows·深度学习·wsl
BIYing_Aurora1 小时前
【IPMV】图像处理与机器视觉:Lec13 Robust Estimation with RANSAC
图像处理·人工智能·算法·计算机视觉