数字图像处理(大作业)

您所在的位置:网站首页 垂直镜像matlab程序 数字图像处理(大作业)

数字图像处理(大作业)

2023-06-15 14:21| 来源: 网络整理| 查看: 265

首先感谢提供给我参考的文章如下

(4条消息) 期末大作业之Matlab美图秀秀【GUI界面】_matlab gui界面美化_走运 ��的博客-CSDN博客

(4条消息) MATLAB图像处理简单程序(1)—实现几何、算数简单变换,滤镜处理以及图片变换效果展示_图像处理程序_火球2号的博客-CSDN博客

(4条消息) 基于MATLAB的数字图像处理系统设计_sunny_chenxi的博客-CSDN博客

(4条消息) 用matlab编程实现数字图像理想低通滤波、高斯低通滤波和巴特沃斯低通滤波去噪算法_matlab高斯低通滤波_紫色银杏树的博客-CSDN博客

还有b站的教程提供的基础思路

MATLAB中GUI图像处理附源码_哔哩哔哩_bilibili

本软件在以上参考基础上完成

目前效果只能适用于简单的图像

设计要求:

简易P图 

设计并实现一款简单的P图软件,能够具备一些常用的P图功能。

要求完成以下工作:

1.1、图形界面

 设计一个简单的图形界面,主要包含三个部分:上传图片部分,P图部分,保存结果部分。

1.2、上传图片/保存结果

通过控件控制,上传本地文件并在图形界面中显示;通过控件控制,将P好的图下载保存在本地。 

1.3、P图功能

具备一些常用的P图功能,比如:彩色图像转黑白图像,明暗亮度变化,反色处理,磨皮,生成素描等。

源码:

%新建gui界面 function varargout = blackandwhite(varargin) % BLACKANDWHITE MATLAB code for blackandwhite.fig % BLACKANDWHITE, by itself, creates a new BLACKANDWHITE or raises the existing % singleton*. % % H = BLACKANDWHITE returns the handle to a new BLACKANDWHITE or the handle to % the existing singleton*. % % BLACKANDWHITE('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in BLACKANDWHITE.M with the given input arguments. % % BLACKANDWHITE('Property','Value',...) creates a new BLACKANDWHITE or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before blackandwhite_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to blackandwhite_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 blackandwhite % Last Modified by GUIDE v2.5 01-Jun-2023 16:41:51 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @blackandwhite_OpeningFcn, ... 'gui_OutputFcn', @blackandwhite_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 blackandwhite is made visible.初始化函数 function blackandwhite_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) % 是一个以GUI中所有控件的Tag属性为字段的结构体,每个字段的取值就是对应控件的句柄. %类似于C语言中指针,它是某个对象的唯一标识符,通过句柄就可以找到你需要的对象 % varargin command line arguments to blackandwhite (see VARARGIN) % Choose default command line output for blackandwhite handles.output = hObject; set(handles.save,'Enable','off'); set(handles.exit,'Enable','off'); set(handles.reset,'Enable','off'); set(handles.slider1,'Enable','off'); set(handles.m1,'Enable','off'); set(handles.m2,'Enable','off'); set(handles.m3,'Enable','off'); set(handles.m4,'Enable','off'); set(handles.mopi,'Enable','off'); set(handles.sumiao,'Enable','off'); % Update handles structure guidata(hObject, handles); % UIWAIT makes blackandwhite wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = blackandwhite_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 load. function load_Callback(hObject, eventdata, handles) % hObject handle to load (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [file path]=uigetfile({'*.jpg';'*.bmp';'*.jpeg';'*.png'}, '打开文件');%uigetfile图像用户界面模块 image=[path file]; handles.file=image; if (file==0) warndlg('请选择一张图片...') ; end [fpath, fname, fext]=fileparts(file); validex=({'.bmp','.jpg','.jpeg','.png'}); found=0; for (x=1:length(validex)) if (strcmpi(fext,validex{x})) found=1; set(handles.save,'Enable','on'); set(handles.exit,'Enable','on'); set(handles.reset,'Enable','on'); set(handles.slider1,'Enable','on'); set(handles.m4,'Enable','on'); set(handles.m1,'Enable','on'); set(handles.m2,'Enable','on'); set(handles.m3,'Enable','on'); set(handles.mopi,'Enable','on'); set(handles.sumiao,'Enable','on'); handles.img=imread(image); handles.i=imread(image); h = waitbar(0,'等待...'); steps = 100; for step = 1:steps waitbar(step / steps) end close(h) axes(handles.g1); cla; imshow(handles.img); axes(handles.g2); cla; imshow(handles.img); guidata(hObject,handles); break; end end if (found==0) errordlg('文件扩展名不正确,请从可用扩展名[.jpg、.jpeg、.bmp、.png]中选择文件','Image Format Error'); 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) close all; %保存 % --- 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) [file path]= uiputfile('*.jpg','Save Image as'); save=[path file]; imwrite(handles.img,save,'jpg'); %清除 % --- Executes on button press in reset. function reset_Callback(hObject, eventdata, handles) % hObject handle to reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) handles.img=handles.i; axes(handles.g2); cla; imshow(handles.img); guidata(hObject,handles); %磨皮 % --- Executes on button press in mopi. function mopi_Callback(hObject, eventdata, handles) % hObject handle to mopi (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) A=handles.i;%A:读取图像 r=2; %r:半径 T=10; %T:阈值 w=zeros(2*r+1,2*r+1); %模板矩阵的尺寸 %图像初始化处理 img=rgb2gray(A); %源图片转灰度图 img=double(img); %转为矩阵 R=double(A(:,:,1)); G=double(A(:,:,2)); B=double(A(:,:,3)); %解决边界值问题 [m,n]=size(R); imgn=zeros(m+2*r,n+2*r); %创建一个长宽各增加[2r]的扩容矩阵 imgn(r+1:r+m,r+1:r+n)=R; imgn(1:r,r+1:r+n)=R(1:r,1:n); %上边界填充 imgn(1:m+r,n+r+1:n+2*r)=imgn(1:m+r,n+1:n+r); %右边界填充 imgn(m+r+1:m+2*r,r+1:n+2*r)=imgn(m+1:m+r,r+1:n+2*r); %下边界填充 imgn(1:m+2*r,1:r)=imgn(1:m+2*r,r+1:2*r); %左边界填充 [m1,n1]=size(G); imgn1=zeros(m1+2*r,n1+2*r); %创建一个长宽各增加[2r]的扩容矩阵 imgn1(r+1:r+m1,r+1:r+n1)=G; imgn1(1:r,r+1:r+n1)=G(1:r,1:n1); %上边界填充 imgn1(1:m1+r,n1+r+1:n1+2*r)=imgn1(1:m1+r,n1+1:n1+r); %右边界填充 imgn1(m1+r+1:m1+2*r,r+1:n1+2*r)=imgn1(m1+1:m1+r,r+1:n1+2*r); %下边界填充 imgn1(1:m1+2*r,1:r)=imgn1(1:m1+2*r,r+1:2*r); %左边界填充 [m2,n2]=size(B); imgn2=zeros(m2+2*r,n2+2*r); %创建一个长宽各增加[2r]的扩容矩阵 imgn2(r+1:r+m2,r+1:r+n2)=B; imgn2(1:r,r+1:r+n2)=B(1:r,1:n2); %上边界填充 imgn2(1:m2+r,n2+r+1:n2+2*r)=imgn2(1:m2+r,n2+1:n+r); %右边界填充 imgn2(m2+r+1:m2+2*r,r+1:n2+2*r)=imgn2(m2+1:m2+r,r+1:n2+2*r); %下边界填充 imgn2(1:m2+2*r,1:r)=imgn2(1:m2+2*r,r+1:2*r); %左边界填充 %开始计算每个像素,共计算m*n次 for i=r+1:r+m for j=r+1:r+n %遍历imgn 中部的源img部分 %计算式子的分母 w=1-abs(imgn(i-r:i+r,j-r:j+r)-imgn(i,j))/(2.5*T); %w是一个以img中的元素为核心,size=[2r+1][2r+1]的矩阵,这样的模板会计算m*n次 %灰度值溢出检查 for p=1:2*r+1 for q=1:2*r+1 if w(p,q)


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3