基于matlab的数字图像处理

  • 格式:doc
  • 大小:1.18 MB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于MATLAB数字图像处理

题目

MATLAB中集成了功能强大的图像处理工具箱,可以通过不同的算法对图像进行不同的处理,更加精确的对图像进行变换和更改,进一步提高了人们对图像处理的能力和认识。通过用户自定义界面将简洁的界面与MATLAB程序结合起来,方便操作与应用。

1 功能介绍

本程序是一个简单的图像处理程序,使用MATLAB软件编写完成。主要具有灰度转换、亮度处理、显示频谱、左右翻转、上下翻转、向左旋转90度、向右旋转90度、任意角度旋转、保存等功能,并通过图形化交互界面(GUI)进行程序使用的交互。交互界面如图1.

图1 程序的交互界面

2 功能实现

程序由两个部分组成:MATLAB代码(.m文件)和GUI图形(.fig)。

程序使用的流程:图像输入—> 灰度转换(可选)—> 亮度处理(可选)—>显示频谱图(可选)—>左右翻转(可选)—>上下翻转(可选)—>向左旋转90度(可选)—>向右旋转90度(可选)—>任意角度旋转(可选)—>保存(可选)。

备注:软件版本:MATLAB R2010b

2.1 获得图像文件

图形获取的过程,下面是图像获取界面和获取后的效果图。

界面图

效果图

具体代码参见:function pushbutton1_Callback(hObject, eventdata, handles) 2.2 灰度转换过程

主要包括对原图片灰度转换及显示。

通过灰度转换按钮,将源程序链接到图片。具体程序如下:

function pushbutton2_Callback(hObject, eventdata, handles) axes(handles.axes2);

if isrgb(handles.img)

y=rgb2gray(handles.img); %RGB••••••••••

imshow(y);

else

msgbox('这已经是灰度图像','转换失败');

end

2.3 亮度处理过程

在已获得图片的基础上,再进亮度处理的选择。亮度提供输入选项如下:

处理后结果:

2.4 显示频谱图

在已获得图像文件进行频谱变换,结果如下:

具体代码参见:function pushbutton9_Callback(hObject, eventdata, handles) 2.5 左右翻转

左右翻转图形:

2.6 上下翻转

上下翻转图形:

具体代码参见:function pushbutton5_Callback(hObject, eventdata, handles) 2.7 向左旋转90度

向左旋转90度图形:

具体代码参见:function pushbutton6_Callback(hObject, eventdata, handles) 2.7 向右旋转90度

向右旋转90度图形:

具体代码参见:function pushbutton7_Callback(hObject, eventdata, handles) 2.7 任意角度旋转

向左旋转30度图形:

具体代码参见:function pushbutton8_Callback(hObject, eventdata, handles)

2.7 保存

保存修改过的图片,可以选择任一路径保存。文件名自命:

具体代码参见:function pushbutton14_Callback(hObject, eventdata, handles)

3 程序总结

本程序实现简单的图像处理功能及便捷的图形化交互界面。具有以下特点与缺陷:

1、

程序简单明明了,易于查找各部分模块,进行编写更修改。

2、各部分程序均源于源于课本知识,比较容易理解与应用,程序涵盖各个变换模块。

3、可以对同一个目标图片进行变换,变换后均可以保存,方便存档,更具有人性化设计。

未尽功能:

(1)、程序可进一步优化,可以实现更多不同功能,没有利用其它函数进行编译,导致程序功能不够强大。

(2)、亮度不可以用户调节,只可固定调节到某一个亮度。

(3)、图片处理不能包含更多格式的文件,这有待进一步提高。

(4)、程序运行需要打开.m文件和.fig文件,不够简单易操作。

4 课程总结

简单的图像处理程序已于上面一一列举,在制作过程遇到过许多问题,比如图形的频谱变换,经过查找书上资料,通过fft变换即可以得到。通过本次课程设计,使自己对MATLAB GUI设计流程有了比

较深刻的体会,同时也了解了一般软件设计的过程。在设计过程中碰到了很多的问题,通过这些问题,使自己分析问题,解决问题的能力得到了较大的提高。

在理工科的专业应用背景下,用matlab 进行相关计算与仿真编程的优势非常突出。特定的问题处理算法,我们通常都以M文件的文本形式给定最终的解决方案,自己设计的程序是在MATLAB环境下,用MATLAB语言编写的,这对于有安装MATLAB软件的计算机上运行并不存在什么问题,关键是一般的计算机很少有去安装MATLAB软件的,那么要在这些机子上运行该程序要怎么办呢,难道要先安装MATLAB软件,这显然太麻烦了,对于一个通用的,比较成熟的解决方案,我们当然期望它能应用到更多的场合,而.exe (可执行)文件可运行于所有的通用WINDOWS操作系统,为此,将M文件转换成.exe 文件倒是个不错的想法。

附录(部分程序)

function varargout = process(varargin)

% PROCESS MATLAB code for process.fig

% PROCESS, by itself, creates a new PROCESS or raises the existing

% singleton*.

%

% H = PROCESS returns the handle to a new PROCESS or the handle to

% the existing singleton*.

%

% PROCESS('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in PROCESS.M with the given input arguments.

%

% PROCESS('Property','Value',...) creates a new PROCESS or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before process_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to process_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 process

% Last Modified by GUIDE v2.5 08-Dec-2014 23:30:51

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @process_OpeningFcn, ...

'gui_OutputFcn', @process_OutputFcn, ...