基于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實現,建議安裝相關工具箱以獲得完整功能。