matlab实现数字图像处理Photoshop小程序
更新时间:2023-12-31 10:25:01 阅读量: 教育文库 文档下载
- matlab推荐度:
- 相关推荐
实 验 报 告
课程名称 数字图像处理 分院 班 组
姓名 学号 日期 年 月 日
1
程序所实现的功能: 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整, 显示和对比变换前后的图像。 3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该 选择区域。 4))图像直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 5)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。 6) 底片效果 7)边缘信息 8)图像反转 程序实现的亮点 设计简洁的菜单栏以及常用工具的快捷图标也可以使用对应功能的快捷键,包括新建,打开(CTRL+O),保存(CTRL+S); 菜单栏里更是增加了操作撤销与图像还原的操作,可是实现返回操作。 总体设计
2
图1 软件的总体设计界面布局如上图所示,主要分为 2 个部分:显示区域与操作区域。 显示区域:显示载入原图,以及通过处理后的图像。 操作区域:通过功能键实现对图像的各种处理,为了实现界面的简洁,大部分的功能放到了 菜单栏里。 在截图中可见,左部为一系列功能按键如“对比度调节”、“亮度调节”、“裁剪”等等 ;界 面正中部分为图片显示部分,界面中下方为系列功能切换选择组。 菜单栏的设计展示 图2 具体设计 现介绍各个功能模块的功能与实现。 4.1 菜单栏的设计。 通过 Menu Editor 创建如下菜单,通过以下菜单来控制显示或隐藏功能按键 3
图3 以“文件”菜单中“打开”为例说明实现用户界面功能键“打开”的显示与隐藏。 实现该功能通过添加callback就可以了: 通过Toolbar Editor可以添加快捷图标,如下图: 图4
4
图像的读取和保存。 (1)利用“文件”菜单中的“打开”、“ 保存”或者使用菜单栏下的快捷图标分别实现图片的读取与保存。 图5 如果没有选中文件还会提示 图6 (2)图像保存。 利用“uiputfile”、“imwrite”函数实现图像文件的保存。 5
图7 同样按下去下取消键会提示: 图8 (3)程序的退出。 你可以在菜单栏使用退出键,或者在主界面右下角有关闭按钮就可以退出程序。 对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。 按下亮度调节按钮会弹出输入框,输入调节倍数,如下图: 图9
6
(注意:这里的倍数是相反的调节,你会发现输入0.1后亮度会变亮) 调节后的图像如下: 图11 对比度的调节跟亮度一样,调节后的图像如下: 图12
7
4.4 用鼠标选取图像感兴趣区域,显示和保存该选择区域。 按下裁剪按钮把鼠标移动到处理后的图像窗口,光标会变成十字形状,拖动光标会出现方框,如下: 图13 双击方框里的图像就完成了裁剪。 4.5 图像转化为灰度图像。 由于在matlab中较多的图像处理函数支持对灰度图像进行处理,故对图像进行灰 度转化十分必要。可利用rgb2gray(X)函数对其他图像进行灰度图像的转化。 转化实例如下: 8
图14 4.8 加入各种噪声,并通过几种滤波算法实现去噪。 (1)加入噪声。通过imnoise(I,type,parameters)来加入各种噪声。 加入椒盐噪声 图15 加入噪声后: 图16 高斯噪声: 9
乘性噪声: 图17 这几种噪声我加入的参数都是0.02,效果逐渐加深。 滤波: 选择线性滤波的结果如下,可以看出滤去了大部分噪声,(注意:这几个滤波不可以叠加使用,否则出现白屏) 10
图17 翻转: 左右翻转 图18 上下翻转: 11
图19 工具——〉底片效果: 图20 边缘信息: 12
图21 5、结果分析 软件测试基本成功,课题所要求的功能均能较好实现。但一些功能只支持灰 度图像的处理。 其中值得一提的是在滤波处理中的低通滤波与高通滤波的效果。由于一般图 像中含有较多的低频信息成分高频成分较少,通过低通滤波后,噪声以及高频成 分被滤除,图像虽有少量失真,略显模糊,但尚可辨识。但若是通过高通滤波后, 大量的有效低频信息被滤除,图像严重失真,不可辨识。 源码: function duibidu_SelectionChangeFcn(hObject, eventdata, handles) % hObject handle to the selected object in duibidu % eventdata structure with the following fields (see UIBUTTONGROUP) % EventName: string 'SelectionChanged' (read only) % OldValue: handle of the previously selected object or empty if none was selected % NewValue: handle of the currently selected object % handles structure with handles and user data (see GUIDATA) global T global str str=get(hObject,'string'); axes(handles.axes2); switch str case'增强' T=getimage; prompt={'输入参数:'}; defans={'1'};
13
p=inputdlg(prompt,'input',1,defans); p1=str2double(p{1}); f=immultiply(handles.img,p1); imshow(f); handles.img=f; guidata(hObject,handles); case'减弱' T=getimage; prompt={'输入参数:'}; defans={'1'}; p=inputdlg(prompt,'input',1,defans); p1=str2double(p{1}); f=imdivide(handles.img,p1); imshow(f); handles.img=f; guidata(hObject,handles); end % --- Executes on button press in liangdu. function liangdu_Callback(hObject, eventdata, handles) % hObject handle to liangdu (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global T axes(handles.axes2); T=getimage; prompt={'调整倍数'}; defans={'1'}; p=inputdlg(prompt,'input',1,defans); p1=str2double(p{1}); y=imadjust(handles.img,[ ], [ ],p1); %亮度调节 imshow(y); handles.img=y; guidata(hObject,handles); % -------------------------------------------------------------------- function wenjian_Callback(hObject, eventdata, handles) % hObject handle to wenjian (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
14
% -------------------------------------------------------------------- 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({'*.jpg';'*.bmp';'*.tif';'*.*'},'载入图像'); if isequal(filename,0)|isequal(pathname,0) errordlg('没有选中文件','出错'); return; else file=[pathname,filename]; global S %设置一个全局变量S,保存初始图像路径,以便之后的还原操作???? S=file; x=imread(file); set(handles.axes1,'HandleVisibility','ON'); axes(handles.axes1); imshow(x); set(handles.axes1,'HandleVisibility','OFF'); axes(handles.axes2); imshow(x); handles.img=x; guidata(hObject,handles); end % -------------------------------------------------------------------- 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) [sfilename ,sfilepath]=uiputfile({'*.jpg';'*.bmp';'*.tif';'*.*'},'保存图像文件','untitled.jpg'); if ~isequal([sfilename,sfilepath],[0,0]) sfilefullname=[sfilepath ,sfilename]; imwrite(handles.img,sfilefullname); else msgbox('你按了取消键','保存失败'); end % -------------------------------------------------------------------- function exit_Callback(hObject, eventdata, handles)
15
% -------------------------------------------------------------------- function gaotong_Callback(hObject, eventdata, handles) % hObject handle to gaotong (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); x=(handles.img); f=double(x); % 数据类型转换 k=fft2(f); % 傅里叶变换 g=fftshift(k); % 转换数据矩阵 [M,N]=size(g); nn=2; d0=25; %截止频率25 m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2); % 计算高通滤波器传递函数 if d<=d0 h=0; else h=1; end result(i,j)=h*g(i,j); end end result=ifftshift(result); y2=ifft2(result); y3=uint8(real(y2)); imshow(y3); % 显示滤波处理后的图像 % -------------------------------------------------------------------- function chexiao_Callback(hObject, eventdata, handles) % hObject handle to chexiao (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); %撤销 global T imshow(T); handles.img=T; guidata(hObject,handles); % --------------------------------------------------------------------
21
function huanyuan_Callback(hObject, eventdata, handles) % hObject handle to huanyuan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global S %还原 axes(handles.axes2); y=imread(S); f=imshow(y); handles.img=y; guidata(hObject,handles); % --- Executes when selected object is changed in uipanel6. function uipanel6_SelectionChangeFcn(hObject, eventdata, handles) % hObject handle to the selected object in uipanel6 % eventdata structure with the following fields (see UIBUTTONGROUP) % EventName: string 'SelectionChanged' (read only) % OldValue: handle of the previously selected object or empty if none was selected % NewValue: handle of the currently selected object % handles structure with handles and user data (see GUIDATA) str=get(hObject,'string'); axes(handles.axes2); global T switch str case '左右翻转' T=handles.img; f=fliplr(handles.img); imshow(f); handles.img=f; guidata(hObject,handles); case '上下翻转' T=handles.img; f=flipud(handles.img); imshow(f); handles.img=f; guidata(hObject,handles); end % -------------------------------------------------------------------- function xuanzhuan_Callback(hObject, eventdata, handles) % hObject handle to xuanzhuan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
22
global T axes(handles.axes2); T=getimage; prompt={'旋转角度:'}; defans={'0'}; p=inputdlg(prompt,'input',1,defans); p1=str2num(p{1}); f=imrotate(handles.img,p1,'bilinear','crop'); imshow(f); handles.img=f; guidata(hObject,handles); % -------------------------------------------------------------------- function dipian_Callback(hObject, eventdata, handles) % hObject handle to dipian (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global T axes (handles.axes2); T=getimage; f=imcomplement(handles.img); %图像取反? imshow(f); handles.img=f; guidata(hObject,handles); % -------------------------------------------------------------------- function bianyuan_Callback(hObject, eventdata, handles) % hObject handle to bianyuan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global T axes(handles.axes2); T=getimage; f=edge(handles.img,'canny'); imshow(f); handles.img=f; guidata(hObject,handles);
23
24
正在阅读:
matlab实现数字图像处理Photoshop小程序12-31
基于FPGA的多路彩灯控制器的设计04-18
分析主题酒店的主题选择及主题设计08-08
检漏仪基础知识 - 图文10-29
应用型大学英语视听说教程10-13
离别作文400字02-04
黑木耳的正确泡发方法02-10
2009年度主要工作计划实施分解表04-13
探讨小学语文阅读教学的有效性途径10-18
浅谈德育教育在中学信息技术教学中渗透12-23
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 图像处理
- Photoshop
- 实现
- 数字
- 程序
- matlab