文档库 最新最全的文档下载
当前位置:文档库 › MATLAB课程设计报告图像处理

MATLAB课程设计报告图像处理

MATLAB课程设计报告图像处理
MATLAB课程设计报告图像处理

一.课程设计相关知识综述......................................................................

1.1 研究目的及意义 (3)

1.2 数字图像处理研究的内容...........................................................

1.3 MATLAB 软件的介绍..................................................................

1.3.1 MATLAB 语言的特点.........................................................

1.3.2 MATLAB 图像文件格式....................................................

1.3.3 MATLAB 图像处理工具箱简介........................................

1.3.4 MATLAB 中的图像类型....................................................

1.3.5 MATLAB 的主要应用........................................................

1.4 函数介绍........................................................................................ 二.课程设计内容和要求...........................................................................

2.1 主要研究内容................................................................................

2.2 具体要求.......................................................................................

2.3 预期达到的目标........................................................................... 三.设计过程...............................................................................................

3.1 设计方案及步骤............................................................................

3.2 程序清单及注释...........................................................................

3.3 实验结果........................................................................................ 四.团队情况................................................................................................ 五.总结....................................................................................................... 六.参考文献...............................................................................................

一.课程设计相关知识综述.

1.1研究目的及意义

图像处理(image processing),用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。图像处理一般指数字图像处理。数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组,该数组的元素称为像素,其值称为灰度值。图像处理技术的一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。常见的系统有康耐视系统、图智能系统等,目前是正在逐渐兴起的技术。

21世纪是一个充满信息的时代,图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。数字图像处理,即用计算机对图像进行处理,其发展历史并不长。数字图像处理技术源于20世纪20年代,当时通过海底电缆从英国伦敦到美国纽约传输了一幅照片,采用了数字压缩技术。首先数字图像处理技术可以帮助人们更客观、准确地认识世界,人的视觉系统可以帮助人类从外界获取3/4以上的信息,而图像、图形又是所有视觉信息的载体,尽管人眼的鉴别力很高,可以识别上千种颜色,但很多情况下,图像对于人眼来说是模糊的甚至是不可见的,通过图象增强技术,可以使模糊甚至不可见的图像变得清晰明亮。

1.2 数字图像处理研究的内容

数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。

一.主要目的

(1)提高图像的视感质量,如进行图像的亮度、彩色变换,增强、抑制某些成分,对图像进行几何变换等,以改善图像的质量。

(2)提取图像中所包含的某些特征或特殊信息,这些被提取的特征或信息往往为计算机分析图像提供便利。提取特征或信息的过程是模式识别或计算机视觉的预处理。提取的特征可以包括很多方面,如频域特征、灰度或颜色特征、边界特征、区域特征、纹理特征、形状特征、拓扑特征和关系结构等。

(3)图像数据的变换、编码和压缩,以便于图像的存储和传输。

不管是何种目的的图像处理,都需要由计算机和图像专用设备组成的图像处理系统对图像数据进行输入、加工和输出。

二.常用方法

1)图像变换:由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大。因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)。新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用。

2 )图像编码压缩:图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术。

3 )图像增强和复原:图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分。如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响。图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立"降质模型",再采用某种滤波方法,恢复或重建原来的图像。

4 )图像分割:图像分割是数字图像处理中的关键技术之一。图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础。虽然已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。因此,对图像分割的研究还在不断深入之中,是图像处理中研究的热点之一。

5 )图像描述:图像描述是图像识别和理解的必要前提。作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法。对于特殊的纹理图像可采用二维纹理特征描

述。随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法。

6 )图像分类(识别):图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。

1.3 MATLAB 软件的介绍

MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。

尽管MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。另外还有一个配套软件包Simulink,提供了一个可视化开发环境,常用于系统模拟、动态/嵌入式系统开发等方面。

MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,MATLAB 成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA 的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。

1.3.1 MATLAB 语言的特点

1.高效的矩阵运算机制

MATLAB软件是基于矩阵计算开发的,在其他编程语言中需要使用多个for 语句才能完成的操作,在MATLAB中直接使用矩阵即可完成计算,因而MATLAB 在数据计算分析,特别是对海量数据的处理方面表现出相比其他的编程语言更大的优势。

2.多样化的操作途径

MATLAB语言为用户提供了多种操作方式选择。用户可以编写代码实现各种功能,代码可重复利用,同时,不擅长编程的用户也可以通过MATLAB图形界面操作,完成MATLAB的相应功能。

3.功能强大的工具箱

对于算法的开发,MATLAB提供了大量现成的函数,用户可以直接调用。MATLAB软件对目前主流的算法都提供了现成的函数,并封装成一个个适用于不同领域的算法工具箱。常用的工具箱包括数学类、经济类、信号处理类工具箱,同时随着MATLAB软件版本的更新,不断有功能更强大的工具箱添加到MATLAB中。MATLAB语言的这一特点,将大大节省算法开发的时间,用户无须详细了解算法的细节,只要掌握MATLAB中算法相应函数的调用即可。

4.良好的扩展能力

利用MATLAB语言编写的程序具有良好的扩展能力,可以方便地与各种编程语言链接。用户可以方便地在MATLAB中调用其他语言已编写好的程序,同时在其他语言中也可以方便地调用MATLAB的程序。MATLAB语言具有良好的接口编程技术。

5.完善的帮助系统

完善的帮助系统是MATLAB的又一突出特点,MATLAB向用户提供了多种帮助途径,在1.4节中将详细介绍MATLAB强大的帮助系统。通过MATLAB 的帮助系统,用户可以获取MATLAB常用函数的使用方法及应用实例,而且这种帮助可以是实时的、在线的。同时,为了便于用户更好地使用MATLAB软件,在MATLAB中的主要算法都是可以直接看到源代码的。

1.3.2 MATLAB 图像文件格式

(1) JPEG(Joint Photogyaphic Expeyts Group):一种称为联合图像专家组的图像压缩格式。

(2) BMP(Windows Bitmap):有1位、4位、8位、24位非压缩图像,8位RLE(Run length Encoded)的图像。文件内容包括文件头(一个BITMAP FILEHEADER数据结构)、位图信息数据块(位图信息头BITMAP INFOHEADER和一个颜色表)和图像数据。

(3) PCX(Windows Paintbrush):可处理1位、4位、8位、16位、24位等图像数据。文件内容包括文件头、图像数据和扩展色图数据。

(4) TIFF(Tagged Iamge File Format):处理1位、4位、8位、24位非压缩图像,1位、4位、8位、24位packbit压缩图像,1位CCITT压缩图像等。文件内容包括文件头、参数指针表与参数域、参数数据表和图像数据四部分。

(5) PNG(Portable Network Graphics):包括1位、2位、4位、8位和16位灰度图像,8位和16位索引图像,24位和48位真彩色图像。

(6) GIF(Graphics Interchange Format):任何1位到8位的可交换的图像。

(7) HDF(Hierarchial Data Format):有8位、24位光栅图像数据集。

(8) ICO(Windows Icon resource):有1位、4位、8位非压缩图像。

(9) CUR(Windows Cursor resource):有1位、4位、8位非压缩图像。

(10) XWD(X Windows Dump):包括1位、8位Zpixmaps,

XYBitmaps,XYPixmmmaps。

(11) RAS(Sun Raster image):有1位bitmap、8位索引、24位真彩色和带有透明度的32位真彩色。

(12) PBM(Portable Bitmap)。

(13) PGM(Portable Graymap)。

(14) PPM(Portable Pixmap)。

1.3.3 MATLAB 图像处理工具箱简介

图像处理工具箱提供了一套全方位的参照标准算法和图形工具,用于进行图形处理、分析、可视化和算法开发。可进行图像增强、图像去模糊、特征检测、

降噪、图像分割、空间转换和图像配准。该工具箱的许多功能支持多线程,可发挥多核多处理器计算机的性能。

图像处理工具箱支持多种多样的图像类型,包括高动态范围,千兆像素分辨率、ICC兼容色彩和断层扫描图像。图形工具可用于探索图像、检查像素区域、调节对比度、创建轮廓或柱状图以及操作感兴趣区域(ROI)。工具箱算法可用于还原退化的图像、检查和测量特征、分析形状和纹理并调节图像的色彩平衡。

1.3.4 MATLAB 中的图像类型

1、索引图像

索引图像包括一个数据矩阵X,一个颜色映像矩阵Map。其中Map是一个包含三列、若干行的数据阵列,其中每个元素的值均为[0, 1]之间的双精度浮点型数据。Map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。在MATLAB 中,索引图像是从像素值到颜色映射表值的“直接映射”。像素颜色由数据矩阵X作为索引指向矩阵Map进行索引,例如,值1指向矩阵Map中的第一行,值2指向第二行,以此类推。

颜色映射表通常和索引图像存在一起,当用户在调用函数imread时,MATLAB自动将颜色映射表与图像同时加载,在MATLAB中可以选择所需要的颜色映射表,而不必局限于使用默认的颜色映射表。我们可以使用属性CDataMapping来选取其他的颜色映射表,包括用户自定义的颜色映射表。

如果图像数据矩阵是双精度的数据类型,则值1指向矩阵Map中的第一行,值2指向第二行,但如果图像矩阵是8位无符号的整数类型或16位无符号的整数类型,则由于存在一个偏移量,因而使值0指向矩阵Map中的第一行,以此类推。

2、灰度图像

在MATLAB中,一幅灰度图像是一个数据矩阵I,I中的数据均代表了在一定范围内的图像灰度值。MATLAB把灰度图像存储为一个数据矩阵,该矩阵中的元素分别代表了图像中的像素。矩阵中的元素可以是双精度的浮点类型、8位或16位无符号的整数类型。大多数情况下,灰度图像很少和颜色映射表一起保存,

但是在显示灰度图像时,MATLAB仍然在后台使用系统预定义的默认灰度颜色映射表。

3、RGB图像

RGB图像即真菜图像,在MATLAB中存储为n*m*3的数据矩阵。数组中的元素定义了图像中的每一个像素的红、绿、蓝颜色值。需指出的是,RGB图像不是用windows的颜色映射表,像素的颜色由保存在像素位置上的红、绿、蓝的灰度值的组合来确定。图形文件格式把RGB图像存储为24位的图像,红、绿、蓝分别占8位,这样可以有1000多万种颜色。

4、二值图像

与灰度图像相同,二值图像只需要一个数据矩阵,每个像素只取两个灰度值。

1.3.5 MATLAB 的主要应用

MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。

MATLAB 产品族可以用来进行以下各种工作:

①数值分析②数值和符号计算③工程与科学绘图④控制系统的设计与仿真

⑤数字图像处理技术⑥数字信号处理技术⑦通讯系统设计与仿真

⑧财务与金融工程⑨管理与调度优化计算(运筹学)

1.4 函数介绍

Imshow 显示图像

Im2bw 转换图像为二进制图像

Imread 从图像文件中读取(载入)图像

Edge 图像边缘检测

Graythresh 使用最大类间方差法找到图片的一个合适的阈值。

Rgb2gray 转换RGB图像或颜色映像表为灰色图像

Double 转换数据为双精度型

Asind 反正弦函数

Regionprops 用来度量图像区域属性的函数,常用来统计被标记的区域的面积积分,显示区域总数。

二.课程设计内容和要求

2.1 主要研究内容

从所拍摄的图像中检测多边形目标区域的几何中心、周长、面积和主轴方向。

三.设计过程.

3.1 设计方案及步骤

(1)U盘图像,先进行灰度化、中值滤波等基本操作,平滑背景噪声。(2)二值化,并进行形态学开闭运行,去除背景的杂点噪声。

(3)定位左上角、右上角、左下角,进而利用直线拟合知识,得到直线方程。(4)根据U盘矩形特点,绘制平行线,通过计算交点定位出右下角。

(5)得到四周边界后,可以生成二值化蒙版图像,进而计算周长、质心、面积等基本参数。

3.2 程序清单及注释.

function varargout = MainForm(varargin)

% MAINFORM MATLAB code for MainForm.fig

% MAINFORM, by itself, creates a new MAINFORM or raises the existing % singleton*.

%

% H = MAINFORM returns the handle to a new MAINFORM or the handle to % the existing singleton*.

%

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

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

%

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

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

% applied to the GUI before MainForm_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

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

% Last Modified by GUIDE v2.5 08-Jul-2016 10:09:38

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

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

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @MainForm_OpeningFcn, ...

'gui_OutputFcn', @MainForm_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 MainForm is made visible.

function MainForm_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)

% varargin command line arguments to MainForm (see VARARGIN)

% Choose default command line output for MainForm

handles.output = hObject;

InitAxes(handles);

handles.Img = 0;

handles.I = 0;

handles.I2 = 0;

handles.bw = 0;

handles.bw2 = 0;

handles.wd = 5;

handles.mask = 0;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes MainForm wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line. function varargout = MainForm_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 pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) filename = fullfile(pwd, '5.JPG');%图像的路径

Img = imread(filename);%读入图像

axes(handles.axes1); imshow(Img, []);

title('原图像');

handles.Img = Img;

guidata(hObject, handles);

---------------------------图像灰度化-----------------------------------------------

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

if isequal(handles.Img, 0)

return;

end

% 灰度化

Img = handles.Img;

if ndims(Img) == 3

I = rgb2gray(Img);

else

I = Img;

end

axes(handles.axes2); imshow(I, []);

title('灰度图像');

handles.I = I;

guidata(hObject, handles);

-----------------滤波去噪-----------------------

% --- Executes on button press in pushbutton3.

function pushbutton3_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

if isequal(handles.I, 0)

return;

end

% 中值滤波

I2 = medfilt2(handles.I);

I2 = mat2gray(I2);

axes(handles.axes3); imshow(I2, []);

title('滤波图像');

handles.I2 = I2;

guidata(hObject, handles);

------------------ 二值化---------------------

% --- Executes on button press in pushbutton4.

function pushbutton4_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton4 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

if isequal(handles.I2, 0)

return;

end

I2 = handles.I2;

bw = im2bw(I2, graythresh(I2));%图像的二值化

bw = ~bw;%取反

axes(handles.axes4); imshow(bw, []);

title('二值化图像');

handles.bw = bw;

guidata(hObject, handles);

---------------形态学滤波-------------------------

% --- Executes on button press in pushbutton5.

function pushbutton5_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton5 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

if isequal(handles.bw, 0)

return;

end

% 形态学滤波

bw = handles.bw;

bw = imfill(bw, 'holes');

bw = imopen(bw, strel('square', handles.wd));

axes(handles.axes4); imshow(bw, []);

title('形态学滤波图像');

handles.bw2 = bw;

guidata(hObject, handles);

---------------边界拟合--------------------------

% --- Executes on button press in pushbutton6.

function pushbutton6_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton6 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

if isequal(handles.bw2, 0)

return;

end

bw = handles.bw2;

wd = handles.wd;

% 定位大致区域

[r, c] = find(bw);

% 定位有效角点

[~, ind_min_r] = min(r);

[~, ind_min_c] = min(c);

[~, ind_max_c] = max(c);

% 角点信息

pt_up = [c(ind_min_r)+wd r(ind_min_r)-wd];

pt_left = [c(ind_min_c)-wd r(ind_min_c)+wd];

pt_right = [c(ind_max_c)+wd r(ind_max_c)];

% 拟合上边界

k1 = (pt_right(2)-pt_up(2))/(pt_right(1)-pt_up(1));

x1 = linspace(min([pt_up(1) pt_right(1)]), max([pt_up(1) pt_right(1)]), 500);

y1 = k1*(x1-pt_up(1)) + pt_up(2);

% 拟合左边界

k2 = (pt_left(2)-pt_up(2))/(pt_left(1)-pt_up(1));

x2 = linspace(min([pt_up(1) pt_left(1)]), max([pt_up(1) pt_left(1)]), 500);

y2 = k2*(x2-pt_up(1)) + pt_up(2);

% 计算右下角点

b1 = pt_left(2) - k1*pt_left(1);

b2 = pt_right(2) - k2*pt_right(1);

[xt, yt] = linecross(k1, b1, k2, b2);

xt = xt + 2*wd;

yt = yt - wd;

% 拟合下边界

k3 = (yt-pt_left(2))/(xt-pt_left(1));

x3 = linspace(min([xt pt_left(1)]), max([xt pt_left(1)]), 500);

y3 = k3*(x3-pt_left(1)) + pt_left(2);

% 拟合右边界

k4 = (yt-pt_right(2))/(xt-pt_right(1));

x4 = linspace(min([xt pt_right(1)]), max([xt pt_right(1)]), 500);

y4 = k4*(x4-pt_right(1)) + pt_right(2);

% 显示

axes(handles.axes3); imshow(handles.I2, []);

title('边界拟合');

hold on;

plot(pt_up(1), pt_up(2), 'r+');

plot(pt_left(1), pt_left(2), 'g+');

plot(pt_right(1), pt_right(2), 'b+');

plot(x1, y1, 'y:');

plot(x2, y2, 'm:');

plot(x3, y3, 'y-.');

plot(x4, y4, 'm-.');

plot(xt, yt, 'c+');

hold off;

% 制作蒙版

mask = zeros(size(bw));

for i = 1 : length(x1)

mask(round(y1(i)), round(x1(i))) = 1;

end

for i = 1 : length(x2)

mask(round(y2(i)), round(x2(i))) = 1;

end

for i = 1 : length(x3)

mask(round(y3(i)), round(x3(i))) = 1;

end

for i = 1 : length(x4)

mask(round(y4(i)), round(x4(i))) = 1;

end

% 形态学填充

mask = imfill(mask, 'holes');

mask = logical(mask);

% 边缘点

ms = bwperim(mask);

[r, c] = find(ms);

axes(handles.axes4); imshow(handles.Img, []);

hold on;

% 标记区域边缘

for i = 1 : length(r)

plot(c(i), r(i), 'r.');

end

hold off;

title('目标区域');

handles.mask = mask;

guidata(hObject, handles);

-----------------参数测量--------------------------

% --- Executes on button press in pushbutton7.

function pushbutton7_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton7 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

if isequal(handles.mask, 0)

return;

end

bw = handles.mask;

% 区别标记

[L, ~] = bwlabel(bw);

% 区域属性

stats = regionprops(L, 'all');

% 几何中心、周长、面积和主轴方向

Centroid = stats.Centroid;

Perimeter = stats.Perimeter;

Area = stats.Area;

Orientation = stats.Orientation;

res = sprintf('几何中心 = (%.1f, %.1f),周长 = %.1f,面积 = %.1f,主轴方向 = %.1f 度', ...

Centroid(1), Centroid(2), Perimeter, Area, Orientation);

set(handles.edit1, 'String', res);

% 标记参数

axes(handles.axes2); imshow(handles.Img, []);

title('参数标记');

hold on;

plot(Centroid(1), Centroid(2), 'ro', 'MarkerFaceColor', 'r');

xs = linspace(1, size(handles.Img, 2), 500);

ys = tan(abs(Orientation/180*pi))*(xs - Centroid(1)) + Centroid(2);

plot(xs, ys, 'y:', 'LineWidth', 2);

--------------退出系统----------------------------------

% --- Executes on button press in pushbutton8.

function pushbutton8_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton8 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% 退出系统按钮

choice = questdlg('确定退出?', ...

'退出', ...

'是','否','是');

% 选择

switch choice

case'是'

close;

case'否'

return;

end

function edit1_Callback(hObject, eventdata, handles)

% hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text

% str2double(get(hObject,'String')) returns contents of edit1 as a double

% --- Executes during object creation, after setting all properties. function edit1_CreateFcn(hObject, eventdata, handles)

% hObject handle to edit1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'),

get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function InitAxes(handles)

% 清理

clc;

% 设置默认坐标系

axes(handles.axes1); cla reset;

set(handles.axes1, 'XTick', [], 'YTick', [], ...

'XTickLabel', '', 'YTickLabel', '', 'Color', [0.7020 0.7804 1.0000], 'Box', 'On');

axes(handles.axes2); cla reset;

set(handles.axes2, 'XTick', [], 'YTick', [], ...

'XTickLabel', '', 'YTickLabel', '', 'Color', [0.7020 0.7804 1.0000], 'Box', 'On');

axes(handles.axes3); cla reset;

set(handles.axes3, 'XTick', [], 'YTick', [], ...

'XTickLabel', '', 'YTickLabel', '', 'Color', [0.7020 0.7804 1.0000], 'Box', 'On');

axes(handles.axes4); cla reset;

set(handles.axes4, 'XTick', [], 'YTick', [], ...

'XTickLabel', '', 'YTickLabel', '', 'Color', [0.7020 0.7804 1.0000], 'Box', 'On');

% 设置默认文本框

set(handles.edit1, 'String', '');

% 计算直线交点

function [x, y] = linecross(k1, b1, k2, b2)

x=[];

y=[];

if k1==k2 && b1==b2

elseif k1==k2 && b1~=b2

else

x=(b2-b1)/(k1-k2);

y=k1*x+b1;

end

% --- Executes during object creation, after setting all properties. function pushbutton1_CreateFcn(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called 3.3 实验结果

四.团队情况

五.总结

灰度化原理:将彩色图像转化成为灰度图像的过程成为图像的灰度化处理。彩色图像中的每个像素的颜色有R、G、B三个分量决定,而每个分量有255中值可取,这样一个像素点可以有1600多万(255*255*255)的颜色的变化范围。而灰度图像是R、G、B三个分量相同的一种特殊的彩色图像,其一个像素点的变化范围为255

种,所以在数字图像处理种一般先将各种格式的图像转变成灰度图像以使后续的图像的计算量变得少一些。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。

在本次课程设计过程中,我查询了很多图像处理的书籍和网上资料,通过重点研究图像灰度处理,我进一步熟悉了MATLAB仿真平台使用方法,并且加深了对彩色图像处理的相关知识的了解。原本认为只要写灰度化的命令语句就结束了,但是无法连接上下部分,通过改进,添加了一些衔接语句,更好的完成了图像灰度的显示。

通过这次的课程设计,我深深的感受到了自身的不足。进行课程设计不但需要多方面的知识,同时还要考验一个人的独立动脑能力和动手能力,这在课本上学不到的。另外,这还要求我们具有一定的自学能力,在面对多次错误时要能冷静,并且还要有坚定的意志力。在这次课程设计中,我得到的不仅仅是知识的补充,更多的是问题分析能力的提高,虽然只有短短两周时间,却给了我比平常更多的磨练,也让我在巩固书本知识的同时学到了更多的东西。在这次的课程设计中,我看到了理论与实际相结合的重要性,同样,我还感受到了将理论实现于现实的重大喜悦,当代码最终成功运行并出现正确的仿真结果时,那种巨大的成就感是无法用言语来形容的。相信在以后的学习中,我将更加认真努力,争取从知识以及动手能力方面都能更上一层楼!

六.参考文献

[1]杨杰《数字图像处理及MATLAB实现》北京:电子工业出版社,2010.

[2]曹茂永《数字图像处理》北京:北京大学出版社,2007.

[3]何明一,卫保国《数字图像处理》北京:科学出版社,2008

[4]普特拉《数字图像处理(原书第4版)》北京:机械工业出

版社,2009.

[5]杨帆《数字图像处理与分析(第2版)》北京:北京航空航天大学出版社,2010.

[6]姚敏《数字图像处理》北京:机械工业出版社,2006

[7]刘成龙《MATLAB图像处理》北京:清华大学出版社,2015

matlab图像处理实验报告

图像处理实验报告 姓名:陈琼暖 班级:07计科一班 学号:20070810104

目录: 实验一:灰度图像处理 (3) 实验二:灰度图像增强 (5) 实验三:二值图像处理 (8) 实验四:图像变换 (13) 大实验:车牌检测 (15)

实验一:灰度图像处理题目:直方图与灰度均衡 基本要求: (1) BMP灰度图像读取、显示、保存; (2)编程实现得出灰度图像的直方图; (3)实现灰度均衡算法. 实验过程: 1、BMP灰度图像读取、显示、保存; ?图像的读写与显示操作:用imread( )读取图像。 ?图像显示于屏幕:imshow( ) 。 ?

2、编程实现得出灰度图像的直方图; 3、实现灰度均衡算法; ?直方图均衡化可用histeq( )函数实现。 ?imhist(I) 显示直方图。直方图中bin的数目有图像的类型决定。如果I是个灰度图像,imhist将 使用默认值256个bins。如果I是一个二值图像,imhist使用两bins。 实验总结: Matlab 语言是一种简洁,可读性较强的高效率编程软件,通过运用图像处理工具箱中的有关函数,就可以对原图像进行简单的处理。 通过比较灰度原图和经均衡化后的图形可见图像变得清晰,均衡化后的直方图形状比原直方图的形状更理想。

实验二:灰度图像增强 题目:图像平滑与锐化 基本要求: (1)使用邻域平均法实现平滑运算; (2)使用中值滤波实现平滑运算; (3)使用拉普拉斯算子实现锐化运算. 实验过程: 1、 使用邻域平均法实现平滑运算; 步骤:对图像添加噪声,对带噪声的图像数据进行平滑处理; ? 对图像添加噪声 J = imnoise(I,type,parameters)

MATLAB课程设计报告

华东交通大学MATLAB程序设计报告书 课题名称:基于MATLAB的粒子群优化算法的实现 姓名: 学号:20160280800014 专业:控制科学与工程 2016年 11月 20日

基于MATLAB的粒子群优化算法的实现 一、课程选题目的 本次课程设计的课题为《基于MATLAB的粒子群优化算法的实现》,主要为学会运用MATLAB对实际算法编程,加深对粒子群优化算法的理解,并为今后熟练使用MA TLAB进行系统的分析仿真和设计奠定基础。数值计算分析可以帮助更深入地理解理论知识,并为将来使用MA TLAB进行各领域数值分析分析和实际应用打下基础。 此次课程主要是为了进一步熟悉对MATLAB软件的使用,以及学会利用MA TLAB对数值运算这种实际问题进行处理,将理论应用于实际,加深对它的理解。 二、粒子群优化算法原理 优化是科学研究、工程技术和经济管理等领域的重要研究工具。它所研究的问题是讨论在众多的方案中寻找最优方案。例如,工程设计中怎样选择设计参数,使设计方案既满足设计要求又能降低成本;资源分配中,怎样分配有限资源,使分配方案既能满足各方面的基本要求,又能获得好的经济效益。在人类活动的各个领域中,诸如此类,不胜枚举。优化这一技术,正是为这些问题的解决,提供理论基础和求解方法,它是一门应用广泛、实用性很强的科学。近十余年来,粒子群优化算法作为群体智能算法的一个重要分支得到了广泛深入的研究,在路径规划等许多领域都有应用。 2.1 粒子群优化算法的起源 粒子群优化(PSO)算法是由Kennedy和Eberhart于1995年用计算机模拟鸟群觅食这一简单的社会行为时,受到启发,简化之后而提出的。 设想这样一个场景:一群鸟随机的分布在一个区域中,在这个区域里只有一块食物。所有的鸟都不知道食物在哪里。但是他们知道当前的位置离食物还有多远。那么找到食物的最优策略是什么呢。最简单有效的方法就是追寻自己视野中目前离食物最近的鸟。如果把食物当作最优点,而把鸟离食物的距离当作函数的适应度,那么鸟寻觅食物的过程就可以当作一个函数寻优的过程。鱼群和鸟群的社会行为一直引起科学家的兴趣。他们以特殊的方式移动、同步,不会相互碰撞,整体行为看上去非常优美。生物学家CargiReynolds提出了一个非常有影响的鸟群聚集模型。在他的模拟模型boids中,每一个个体遵循:避免与邻域个体相冲撞、匹配邻域个体的速度、试图飞向感知到的鸟群中心这三条规则形成简单的非集中控制算法驱动鸟群的聚集,在一系列模拟实验中突现出了非常接近现实鸟群聚集行为的现象。该结果显示了在空中回旋的鸟组成轮廓清晰的群体,以及遇到障碍物时鸟群的分裂和再度汇合过程。由此受到启发,经过简化提出了粒子群优化算法。 2.2粒子群优化算法的原理 在粒子群优化算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为“粒子”。所有的粒子都有一个由被优化的函数决定的适应值,每个粒子还有一个速度决定他们飞翔的方向和距离。然后粒子们就追随当前的最优粒子在解空间中搜索。优化开始时先初始化为一群随机粒子(随机解)。然后通过迭代找到最优解。在每一次迭代中,粒子通过跟踪两个极值来更新自己。第一个极值就是整个种群目前找到的最优解。这个极值是全局极值。另外也可以不用整个种群而只是用其中一部分作为粒子的邻居,那么在所有邻居中的极值就是局部极值。第二个极值是粒子本身所找到的最优解,称为个体极值。这是因为粒子仅仅通过跟踪全局极值或者局部极值来更新位置,不可能总是获得较好的解。这样在优化过程中,粒子在追随全局极值或局部极值的同时追随个体极值则圆满的解决了这个问题。这就是粒子群优化

数字图像处理 课程设计报告

数字图像处理 课程设计报告 姓名: 学号: 班级: 设计题目:图像处理 教师:赵哲老师 提交日期: 12月29日

一、设计内容: 主题:《图像处理》 详细说明:对图像进行处理(简单滤镜,模糊,锐化,高斯模糊等),对图像进行处理(上下对称,左右对称,单双色显示,亮暗程度调整等),对图像进行特效处理(反色,实色混合,色彩平衡,浮雕效果,素描效果,雾化效果等), 二、涉及知识内容: 1、二值化 2、各种滤波 3、算法等 三、设计流程图 四、实例分析及截图效果: 运行效果截图: 第一步:读取原图,并显示 close all;clear;clc; % 清楚工作窗口clc 清空变量clear 关闭打开的窗口close all I=imread(''); % 插入图片赋给I imshow(I);% 输出图I I1=rgb2gray(I);%图片变灰度图 figure%新建窗口 subplot(321);% 3行2列第一幅图 imhist(I1);%输出图片

title('原图直方图');%图片名称 一,图像处理模糊 H=fspecial('motion',40); %% 滤波算子模糊程度40 motion运动 q=imfilter(I,H,'replicate');%imfilter实现线性空间滤波函数,I图经过H滤波处理,replicate反复复制q1=rgb2gray(q); imhist(q1); title('模糊图直方图'); 二,图像处理锐化 H=fspecial('unsharp');%锐化滤波算子,unsharp不清晰的 qq=imfilter(I,H,'replicate'); qq1=rgb2gray(qq); imhist(qq1); title('锐化图直方图'); 三,图像处理浮雕(来源网络) %浮雕图 l=imread(''); f0=rgb2gray(l);%变灰度图 f1=imnoise(f0,'speckle',; %高斯噪声加入密度为的高斯乘性噪声 imnoise噪声污染图像函数 speckle斑点 f1=im2double(f1);%把图像数据类型转换为双精度浮点类型 h3=1/9.*[1 1 1;1 1 1;1 1 1]; %采用h3对图像f2进行卷积滤波 f4=conv2(f1,h3,'same'); %进行sobel滤波 h2=fspecial('sobel'); g3=filter2(h2,f1,'same');%卷积和多项式相乘 same相同的 k=mat2gray(g3);% 实现图像矩阵的归一化操作 四,图像处理素描(来源网络) f=imread(''); [VG,A,PPG] = colorgrad(f); ppg = im2uint8(PPG); ppgf = 255 - ppg; [M,N] = size(ppgf);T=200; ppgf1 = zeros(M,N); for ii = 1:M for jj = 1:N if ppgf(ii,jj)

基于MATLAB图像处理报告.docx

基于M A T L A B图像处理报告一、设计题目 图片叠加。 二、设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。 三、设计方案 3.1、设计思路 利用matlab强大的图像处理功能,通过编写程序,实现对两幅图片的像素进行线性运算,利用灰度变换的算法使图片达到预期的效果。 3.2、软件介绍 MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB 也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户直接进行下载就可以用。

通信原理课程设计报告(基于Matlab)

2DPSK调制与解调系统的仿真 设计原理 (1) 2DPSK信号原理 1.1 2DPSK信号原理 2DPSK方式即是利用前后相邻码元的相对相位值去表示数字信息的一种方式。现假设用Φ表示本码元初相与前一码元初相之差,并规定:Φ=0表示0码,Φ=π表示1码。则数字信息序列与2DPSK信号的码元相位关系可举例表示如2PSK信号是用载波的不同相位直接去表示相应的数字信号而得出的,在接收端只能采用相干解调,它的时域波形图如图2.1所示。 图1.1 2DPSK信号 在这种绝对移相方式中,发送端是采用某一个相位作为基准,所以在系统接收端也必须采用相同的基准相位。如果基准相位发生变化,则在接收端回复的信号将与发送的数字信息完全相反。所以在实际过程中一般不采用绝对移相方式,而采用相对移相方式。定义为本码元初相与前一码元初相之差,假设: →数字信息“0”; →数字信息“1”。 则数字信息序列与2DPSK信号的码元相位关系可举例表示如下: 数字信息: 1 0 1 1 0 1 1 1 0 1 DPSK信号相位:0

或 : 1.2 2DPSK 信号的调制原理 一般来说,2DPSK 信号有两种调试方法,即模拟调制法和键控法。2DPSK 信号的的模拟调制法框图如图1.2.1所示,其中码变换的过程为将输入的单极性不归零码转换为双极性不归零码。 图1.2.1 模拟调制法 2DPSK 信号的的键控调制法框图如图1.2.2所示,其中码变换的过程为将输入的基带信号差分,即变为它的相对码。选相开关作用为当输入为数字信息“0” 时接相位0,当输入数字信息为“1”时接pi 。 图1.2.2 键控法调制原理图 1.3 2DPSK 信号的解调原理 2DPSK 信号最常用的解调方法有两种,一种是极性比较和码变换法,另一种是差分相干解调法。 码变换 相乘 载波 s(t) e o (t)

2013数字图像处理课程设计报告

数字图像处理 课程设计报告 课设题目:彩色图像增强软件学院:信息科学与工程学院专业:电子与信息工程 班级: 1002501 姓名:曾小路 学号: 100250131 指导教师:赵占峰 哈尔滨工业大学(威海) 2013 年12月27日

目录 目录 .......................................................................................................................... I 一. 课程设计任务 (1) 二. 课程设计原理及设计方案 (2) 2.1 彩色图像基础 (2) 2.2 彩色模型 (2) 三. 课程设计的步骤和结果 (6) 3.1 采集图像 (6) 3.2 图像增强 (7) 3.3 界面设计 (9) 四. 课程设计总结 (12) 五. 设计体会 (13) 六. 参考文献 (14)

哈尔滨工业大学(威海)课程设计报告 一. 课程设计任务 1.1设计内容及要求: (1)、独立设计方案,根据所学知识,对由于曝光过度、光圈过小或图像亮度不均匀等情况下的彩色图像进行增强,提高图像的清晰度(通俗地讲,就是图像看起来干净、对比度高、颜色鲜艳)。 (2)、参考photoshop 软件,设计软件界面,对处理前后的图像以及直方图等进行对比显示; (3)、将实验结果与处理前的图像进行比较、分析。总结设计过程所遇到的问题。 1.2参考方案 1、实现图像处理的基本操作 学习使用matlab 图像处理工具箱,利用imread()语句读入图像,例如image=imread(flower.jpg),利用彩色图像模型转换公式,将RGB 类型图像转换为HSI 类型图像,显示各分量图像(如imshow(image)),以及计算和显示各分量图像直方图。 2、彩色图像增强实现 对HSI彩色模型图像的I分量进行对比度拉伸或直方图均衡化等处理,提高亮度图像的对比度。对S分量图像进行适当调整,使图像色彩鲜艳或柔和。 H 分量保持不变。将处理后的图像转换成RGB 类型图像,并进行显示。分析处理图像过程和结果存在的问题。 3、参照“photoshop”软件,设计图像处理软件界面 可设计菜单式界面,在功能较少的情况下,也可以设计按键式界面,视 功能多少而定;参考matlab 软件中GUI 设计,学习软件界面的设计 - 1 -

数字图像处理课程设计

数字图像处理课程设计报告 目录 一.实验目的 (3) 二.实验内容............ ................... . (3) 1.打开图像 (3) (1)、图像信息获取 (3) (2). RgbtoHsi(&rgb, &Hsi) (4) (3).OnMouseMove(UINT nFlags, CPoint point) (4) 2.标记Mark点 (5)

(1)标记可能的点 (5) (2)把可能标记的点变为标记点 (5) (3) EdgeIformation边缘标记 (6) (4)EdgeFilter边缘滤波 (6) 3.二值化 (7) 4.填洞 (8) 5收缩 (10) 6获取中心点 (11) 三.学习心得 1.错误总结 (16) 2.心得体 会 (17) 一.实验目的: 对血液细胞切片图片进行各种处理,最终得出细胞的数目、半径等信息 基于vc的红细胞识别统计系统设计 它主要以病人的血液样本为原始数据。经过一系列的图像处理和分析,识别出血液中的红细胞,并能给出红细胞的个数。而得到红细胞的个数以后,通过血液量的检测,就可以得出血液中红细胞的密度。该系统可以很方便的利用在临床上,大大提高速度和效率。

二、实验内容 基于VC++6.0软件下的细胞识别,通过细胞的标记、二值化、提取边缘、填洞、收缩、找中心点、计数等过程完成实验目的 1 . 打开图像 (1)图像信息获取 该步骤实现的功能是打开bmp格式的图像文件,要对图像进行操作,系统必须能调用图像。 打开bmp图像的具体步骤为 1.新建项目:--MFC AppWizard、工程名 2.拷贝cdib.h,cdib.cpp到工程文件夹,再向工程里添加 3.~Doc.h添加变量:m_pDib 4.~doc.cpp:变量(m_pDib):new、delete 5.~doc.cpp: Serialize() 6.~View.cpp: OnDraw() m_pDib->Draw() 2.RgbtoHsi(&rgb, &Hsi)

MATLAB课程设计-图像处理完整版

MATLAB课程设计 设计题目:应用图像处理 班级: 学号: 姓名: 指导老师: 设计时间:2013年4月8号-4月14号

摘要 21世纪是一个充满信息的时代,图像作为人类感知世界的视觉基础,是人类获取信息、表达信息和传递信息的重要手段。图像处理,是用计算机对图像进行分析,以达到所需结果的技术。又称影像处理。基本容图像处理一般指数字图像处理。数字图像是指用数字摄像机、扫描仪等设备经过采样和数字化得到的一个大的二维数组,该数组的元素称为像素,其值为一整数,称为灰度值。图像处理技术的主要容包括图像压缩,增强和复原,匹配、描述和识别3个部分。常见的处理有图像数字化、图像编码、图像增强、图像复原、图像分割和图像分析等。图像处理一般指数字图像处理。所谓数字图像处理[7]就是利用计算机对图像信息进行加工以满足人的视觉心理或者应用需求的行为。实质上是一段能够被计算机还原显示和输出为一幅图像的数字码。 关键词:DCT变换;图像压缩;真色彩增强;平滑;锐化;直方图均衡; 灰度变换;滤波;M文件的使用 目录 摘要………………………………………………………………I 1 概述……………………………………………………………II 2 课程设计任务及要求...............................III 2.1.1设计任务 2.1.2设计要求 3 系统设计原理 (Ⅳ)

3.1 DCT图像压缩原理 3.2 真彩色增强 3.2.1平滑 3.2.2锐化 3.3 灰度变换(直方图均衡化) 3.4 图像滤波 3.4.1中值滤波器 3.4.2维纳滤波器 4 程序代码及实验结果与分析 (Ⅵ) 4.1 DCT图像压缩 4.1.1程序代码 4.1.2实验结果 4.1.3结果分析 4.2 真彩色增强 4.2.1平滑程序代码 4.2.2实验结果 4.2.3结果分析 4.2.4锐化程序代码 4.2.5实验结果 4.2.6结果分析 4.3 灰度变换(直方图均衡化) 4.3.1程序代码

MATLAB课设报告

课程设计任务书 学生姓名:董航专业班级:电信1006班 指导教师:阙大顺,李景松工作单位:信息工程学院 课程设计名称:Matlab应用课程设计 课程设计题目:Matlab运算与应用设计5 初始条件: 1.Matlab6.5以上版本软件; 2.课程设计辅导资料:“Matlab语言基础及使用入门”、“Matlab及在电子信息课程中的应 用”、线性代数及相关书籍等; 3.先修课程:高等数学、线性代数、电路、Matlab应用实践及信号处理类相关课程等。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) 1.课程设计内容:根据指导老师给定的7套题目,按规定选择其中1套完成; 2.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析, 针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结。具体设计要求包括: ①初步了解Matlab、熟悉Matlab界面、进行简单操作; ②MATLAB的数值计算:创建矩阵矩阵运算、多项式运算、线性方程组、数值统计; ③基本绘图函数:plot, plot3, mesh, surf等,要求掌握以上绘图函数的用法、简单图形 标注、简单颜色设定等; ④使用文本编辑器编辑m文件,函数调用; ⑤能进行简单的信号处理Matlab编程; ⑥按要求参加课程设计实验演示和答辩等。 3.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括: ①目录; ②与设计题目相关的理论分析、归纳和总结; ③与设计内容相关的原理分析、建模、推导、可行性分析; ④程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结; ⑤课程设计的心得体会(至少500字); ⑥参考文献(不少于5篇); ⑦其它必要内容等。 时间安排:1.5周(分散进行) 参考文献: [1](美)穆尔,高会生,刘童娜,李聪聪.MA TLAB实用教程(第二版) . 电子工业出版社,2010. [2]王正林,刘明.精通MATLAB(升级版) .电子工业出版社,2011. [3]陈杰. MA TLAB宝典(第3版) . 电子工业出版社,2011. [4]刘保柱,苏彦华,张宏林. MATLAB 7.0从入门到精通(修订版) . 人民邮电出版社,2010. 指导教师签名:年月日 系主任(或责任教师)签名:年月日

数字图像处理课程设计报告

课程设计报告书课程名称:数字图像处理 题目:数字图像处理的傅里叶变换 学生姓名: 专业:计算机科学与技术 班别:计科本101班 学号: 指导老师: 日期: 2013 年 06 月 20 日

数字图像处理的傅里叶变换 1.课程设计目的和意义 (1)了解图像变换的意义和手段 (2)熟悉傅里叶变换的基本性质 (3)热练掌握FFT的方法反应用 (4)通过本实验掌握利用MATLAB编程实现数字图像的傅里叶变换 通过本次课程设计,掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。扩展理论知识,培养综合设计能力。 2.课程设计内容 (1)熟悉并掌握傅立叶变换 (2)了解傅立叶变换在图像处理中的应用 (3)通过实验了解二维频谱的分布特点 (4)用MATLAB实现傅立叶变换仿真 3.课程设计背景与基本原理 傅里叶变换是可分离和正交变换中的一个特例,对图像的傅里叶变换将图像从图像空间变换到频率空间,从而可利用傅里叶频谱特性进行图像处理。从20世纪60年代傅里叶变换的快速算法提出来以后,傅里叶变换在信号处理和图像处理中都得到了广泛的使用。 3.1课程设计背景 数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。 3.2 傅里叶变换 (1)应用傅里叶变换进行数字图像处理 数字图像处理(digital image processing)是用计算机对图像信息进行处理的一门技术,使利用计算机对图像进行各种处理的技术和方法。 20世纪20年代,图像处理首次得到应用。20世纪60年代中期,随电子计算机的发展得到普遍应用。60年代末,图像处理技术不断完善,逐渐成为一个新兴的学科。利用数字图像处理主要是为了修改图形,改善图像质量,或是从图像中提起有效信息,还有利用数字图像处理可以对图像进行体积压缩,便于传输和保存。数字图像处理主要研究以下内容:傅立叶变换、小波变换等各种图像变换;对图像进行编码和压缩;采用各种方法对图像进行复原和增强;对图像进行分割、描述和识别等。随着技术的发展,数字图像处理主要应用于通讯技术、宇宙探索遥感技术和生物工程等领域。

数字图像处理课程设计(实验报告)

上海理工大学 计算机工程学院 实验报告 实验名称红细胞数目统计课程名称数字图像处理 姓名王磊学号0916020226 日期2012-11-27 地点图文信息中心成绩教师韩彦芳

一、设计内容: 主题:《红细胞数目检测》 详细说明:读入红细胞图片,通过中值滤波,开运算,闭运算,以及贴标签等方法获得细胞个数。 二、现实意义: 细胞数目检测在现实生活中的意义主要体现在医学上的作用,可通过细胞数目的检测来查看并估计病人或动物的血液中细胞数,如估测血液中红细胞、白细胞、血小板、淋巴细胞等细胞的数目,同时也可检测癌细胞的数目来查看医疗效果,根据这一系列的指标来对病人或动物进行治疗,是具有极其重要的现实作用的。 三、涉及知识内容: 1、中值滤波 2、开运算 3、闭运算 4、二值化 5、贴标签 四、实例分析及截图效果: (1)代码如下: 1、程序中定义图像变量说明 (1)Image--------------------------------------------------------------原图变量;

(2)Image_BW-------------------------------------------------------值化图象; (3)Image_BW_medfilt-------------------------中值滤波后的二值化图像; (4)Optimized_Image_BW---通过“初次二值化图像”与“中值滤波后的二值化图像”进行“或”运算优化图像效果; (5)Reverse_Image_BW--------------------------优化后二值化图象取反;(6)Filled_Image_BW----------------------已填充背景色的二进制图像;(7)Open_Image_BW--------------------------------------开运算后的图像; 2、实现代码: %-------图片前期处理------------------- %第一步:读取原图,并显示 A = imread('E:\红细胞3.png'); Image=rgb2gray(A); %RGB转化成灰度图 figure,imshow(Image); title('【原图】'); %第二步:进行二值化 Theshold = graythresh(Image); %取得图象的全局域值 Image_BW = im2bw(Image,Theshold); %二值化图象 figure,imshow(Image_BW); title('【初次二值化图像】'); %第三步二值化图像进行中值滤波 Image_BW_medfilt= medfilt2(Image_BW,[13 13]); figure,imshow(Image_BW_medfilt); title('【中值滤波后的二值化图像】'); %第四步:通过“初次二值化图像”与“中值滤波后的二值化图像”进行“或”运算优化图像效果 Optimized_Image_BW = Image_BW_medfilt|Image_BW; figure,imshow(Optimized_Image_BW); title('【进行“或”运算优化图像效果】'); %第五步:优化后二值化图象取反,保证:‘1’-〉‘白色’,‘0’-〉‘黑色’ %方便下面的操作 Reverse_Image_BW = ~Optimized_Image_BW; figure,imshow(Reverse_Image_BW); title('【优化后二值化图象取反】');

matlab图像处理小结

1.function [center, r] = solve_circle(pt1, pt2, pt3) 2.%Effect: solve the circle which across points 'pt1', 'pt2' and 'pt3' 3.%Inputs: 4.%pt1, pt2, pt3: [x, y] 5.%center: the circle center [x0; y0] 6.%r: the radius of the circle 7.%Author: Su dongcai at 2012/1/2 8. A = zeros(2, 2); B = zeros(2, 1); 9.[A(1, :), B(1)] = circle2line(pt1, pt2); 10.[A(2, :), B(2)] = circle2line(pt2, pt3); 11.center = A\B; 12.r = norm(pt1' - center); 13. 14.function [A, B] = circle2line(pt1, pt2) 15.%Effect: cast 2 circles equation into 1 linear equation: 16.%(a-x1)^2 + (b-y1)^2 = r^2 | 17.% |==> 2(x1-x2)a + 2(y1-y2)b = (x1^2 + y1^2) - (y2^2 + y2^2) 18.%(a-x2)^2 + (b-y2)^2 = r^2 | 19.%Inputs: 20.%pt1, pt2: [x1, y1], [x2, y2] 21.%Outputs: 22.%A: 2[x1-x2, y1-y2] 23.%B: (x1^2 + y1^2) - (x2^2 + y2^2) 24.%Author: Su dongcai at 2012/1/2 25.A = 2*(pt1 - pt2); 26.B = norm(pt1)^2 - norm(pt2)^2; close all;clear;clc; >> i=imread('rice.png'); %>> imshow(i); >> background=imopen(i,strel('disk',15)); >> i2=imsubtract(i,background); %>> figure,imshow(i2); >> i3=imadjust(i2,stretchlim(i2),[0 1]); %>> figure,imshow(i3); >> level=graythresh(i3); >> bw=im2bw(i3,level); %>> figure,imshow(bw); >> [labeled,numobjects]=bwlabel(bw,4); graindata=regionprops(labeled,'all');

matlab课程设计报告书

《计算机仿真及应用》课程设计报告书 学号:08057102,08057127 班级:自动化081 姓名陈婷,万嘉

目录 一、设计思想 二、设计步骤 三、调试过程 四、结果分析 五、心得体会 六、参考文献

选题一、 考虑如下图所示的电机拖动控制系统模型,该系统有双输入,给定输入)(t R 和负载输入)(t M 。 1、 编制MATLAB 程序推导出该系统的传递函数矩阵。 2、 若常系数增益为:C 1=Ka =Km =1,Kr =3,C2=0.8,Kb =1.5,时间常数T 1=5, T 2=0.5,绘制该系统的根轨迹、求出闭环零极点,分析系统的稳定性。若)(t R 和)(t M 分别为单位阶跃输入,绘制出该系统的阶跃响应图。(要求C 1,Ka ,Km ,Kr ,C2,Kb , T 1,T 2所有参数都是可调的) 一.设计思想 题目分析: 系统为双输入单输出系统,采用分开计算,再叠加。 要求参数均为可调,而matlb 中不能计算未赋值的函数,那么我们可以把参数设置为可输入变量,运行期间根据要求赋值。 设计思路: 使用append 命令连接系统框图。 选择‘参数=input('inputanumber:')’实现参数可调。 采用的方案: 将结构框图每条支路稍作简化,建立各条支路连接关系构造函数,运行得出相应的传递函数。 在得出传递函数的基础上,使用相应的指令求出系统闭环零极点、画出其根轨迹。 通过判断极点是否在左半平面来编程判断其系统是否稳定。 二.设计步骤 (1)将各模块的通路排序编号

(2)使用append命令实现各模块未连接的系统矩阵 (3)指定连接关系 (4)使用connect命令构造整个系统的模型 三.调试过程 出现问题分析及解决办法: 在调试过程出现很多平时不注意且不易寻找的问题,例如输入的逗号和分号在系统运行时不支持中文格式,这时需要将其全部换成英文格式,此类的程序错误需要细心。 在实现参数可调时初始是将其设为常量,再将其赋值进行系统运行,这样参数可调性差,后用‘参数=input('inputanumber:')’实现。 最后是在建立通路连接关系时需要细心。 四.结果分析 源代码: Syms C1 C2 Ka Kr Km Kb T1 T2 C1=input('inputanumber:') C2=input('inputanumber:') Ka=input('inputanumber:') Kr=input('inputanumber:') Km=input('inputanumber:') Kb=input('inputanumber:') T1=input('inputanumber:') T2=input('inputanumber:') G1=tf(C1,[0 1]); G2=tf(Ka*Kr,[0 1]); G3=tf(Km,[T1 1]); G4=tf(1,[T2 1]); G5=tf(1,[1 0]); G6=tf(-C2,1); G7=tf(-Kb,1); G8=tf(-1,1); Sys=append(G1,G2,G3,G4,G5,G6,G7,G8) Q=[1 0 0;2 1 6;3 2 7;4 3 8;5 4 0;6 5 0;7 4 0;8 0 0;]; INPUTS1=1; OUTPUTS=5; Ga=connect(Sys,Q,INPUTS1,OUTPUTS) INPUTS2=8; OUTPUTS=5; Gb=connect(Sys,Q,INPUTS2,OUTPUTS) rlocus(Ga)

图像处理课程设计

《图像处理技术应用实践》课程设计题目图像增强算法综合应用 学生姓名韩帅_______ 学号 院系计算机与软件学院 专业计算机科学与技术 范春年____ 噪声,不同的去噪方法效果不同,因此应该采用不同的去噪方法以达到最好的去噪效果。? (2)随机噪声应在空间域去除,而空域去噪方法中,中值滤波法效果最好。? (3)周期噪声应在频域中消去。?

(4)去除噪声后的图像仍然可以改善处理。? (5)均方误差评估去噪处理后图像的去噪效果。 2.2算法设计? (1)读入初始图片及加噪图片。? clc;?clear;? f=imread();? ? for?j?=?1?:?N? ???????d?=?sqrt((i-m)^2+(j-n)^2);? ????? h?=?1/(1+0.414*(d/d0)^(2*nn));??%?计算低通滤波器传递函数??????????? ?result(i,j)?=?h?*?G(i,j);???????? end???

end (4)计算均方误差评估去噪效果。? [m?n]=size(p);?l=f-p;? he=sum(sum(l));? avg=he/(m*n); ?k=l-avg;? result1=(sum(sum(k.^2)))/(m*n);? for i=1:M for j=1:N d=sqrt((i-m)^2+(j-n)^2); h=1/(1+0.414*(d/d0)^(2*nn)); %h=1/(1+(d/d0)^(2*nn)); %备用 G(i,j)=h*G(i,j); end end p=uint8(real(ifft2(ifftshift(G)))); subplot(341);imshow(f),title('原图'); subplot(345);imshow(log(abs(f2)),[]),title('频谱'); subplot(349);imhist(f),title('原图'); subplot(342);imshow(g),title('噪声');

数字图像处理课程设计报告

课程设计报告书 课程名称:数字图像处理 题目:数字图像处理的傅里叶变换 学生姓名: 专业:计算机科学与技术 班别:计科本101班 学号: 指导老师: 日期:2013 年06 月20 日 数字图像处理的傅里叶变换 1.课程设计目的和意义 (1)了解图像变换的意义和手段 (2)熟悉傅里叶变换的基本性质 (3)热练掌握FFT的方法反应用 (4)通过本实验掌握利用MATLAB编程实现数字图像的傅里叶变换 通过本次课程设计,掌握如何学习一门语言,如何进行资料查阅搜集,如何自己解决问题等方法,养成良好的学习习惯。扩展理论知识,培养综合设计能力。 2.课程设计内容 (1)熟悉并掌握傅立叶变换 (2)了解傅立叶变换在图像处理中的应用 (3)通过实验了解二维频谱的分布特点 (4)用MATLAB实现傅立叶变换仿真

3.课程设计背景与基本原理 傅里叶变换是可分离和正交变换中的一个特例,对图像的傅里叶变换将图像从图像空间变换到频率空间,从而可利用傅里叶频谱特性进行图像处理。从20世纪60年代傅里叶变换的快速算法提出来以后,傅里叶变换在信号处理和图像处理中都得到了广泛的使用。 3.1课程设计背景 数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。 3.2 傅里叶变换 (1)应用傅里叶变换进行数字图像处理 数字图像处理(digital image processing)是用计算机对图像信息进行处理的一门技术,使利用计算机对图像进行各种处理的技术和方法。 ? ??20世纪20年代,图像处理首次得到应用。20世纪60年代中期,随电子计算机的发展得到普遍应用。60年代末,图像处理技术不断完善,逐渐成为一个新兴的学科。利用数字图像处理主要是为了修改图形,改善图像质量,或是从图像中提起有效信息,还有利用数字图像处理可以对图像进行体积压缩,便于传输和保存。数字图像处理主要研究以下内容:傅立叶变换、小波变换等各种图像变换;对图像进行编码和压缩;采用各种方法对图像进行复原和增强;对图像进行分割、描述和识别等。随着技术的发展,数字图像处理主要应用于通讯技术、宇宙探索遥感技术和生物工程等领域。 傅里叶变换在数字图像处理中广泛用于频谱分析,傅里叶变换是线性系统分析的一个有力工具,它使我们能够定量地分析诸如数字化系统,采样点,电子放大器,卷积滤波器,噪声,显示点等地作用(效应)。傅里叶变换(FT)是数字图像处理技术的基础,其通过在时空域和频率域来回切换图像,对图像的信息特征进行提取和分析,简化了计算工作量,被喻为描述图像信息的第二种语言,广泛应用于图像变换,图像编码与压缩,图像分割,图像重建等。因此,对涉及数字图像处理的工作者,深入研究和掌握傅里叶变换及其扩展形式的特性,是很有价值得。 (2)关于傅里叶(Fourier)变换 在信号处理中,傅里叶变换可以将时域信号变到频域中进行处理,因此傅里叶变换在信号处理中有着特殊重要的地位。 傅里叶变换能将满足一定条件的某个函数表示成三角函数(正弦和/或余弦函数)或者它们的积分的线性组合。在不同的研究领域,傅里叶变换具有多种不同的变体形式,如连续傅里叶变换和离散傅里叶变换。傅里叶变换属于谐波分析。傅里叶变换的逆变换容易求出,而且形式与正变换非常类似;正弦基函数是微分运算的本征函数,从而使得线性微分方程的求解可以转化为常系数的代数方程的求解.在线性时不变的物理系统内,频率是个不变的性质,从而系统对于复杂激励的响应可以通过组合其对不同频率正弦信号

matlab音频降噪课程设计报告

matlab音频降噪课程设计报告

燕山大学 医学软件课程设计说明书 题目:基于MATLAB巴特沃斯滤波器的音频去噪的GUI设计 学院(系):电气工程学院 年级专业: 13级生物医学工程 2 班 学号: 130103040041 学生姓名:魏鑫 指导教师:许全盛 1

院(系):电气工程学院基层教学单位:生物医学工程系 学号130103040041 学生 姓名 魏鑫 专业(班 级) 13级生 物医学 工程2 班 设计 题目 基于MATLAB音频去噪的GUI设计设 计 技术参数通带截止频率fp=2700;阻带截止频率fs=3000;采样频率FS=48000; 通带衰减不大于1dB;阻带衰减不小于10dB; 设计要求1.实现用MATLAB导入音频; 2.对音频进行频谱分析; 3.设计滤波器去噪并对含噪信号进行滤 2

波并进行功率谱分析; 4.设计能实现上述功能的GUI; 工作量1.完成音频录入及频谱分析相关程序的编写与调试; 2.设计滤波器去噪; 3.用MATLAB软件做GUI界面的设计; 工作计划11.21-11.24 MATLAB软件中GUIDE 工具箱的使用 11.25-11.29 各处理算法模块的编程实现 11.30-12.1 整体程序联调 12.2 撰写课程设计说明书,答辩 参考资料 1. 陈怀琛吴大正 MATLAB及在电子信息课程中的应用[M] 北京电子工业出版社 2006. 章节2.4; 2. 陈亚勇 MATLAB信号处理详解[M] 北京:人民邮电出版社 2000. 第十 3

章; 3.张康刘雅基于Matlab的巴特沃斯 数字低通滤波器的设计[J] 计算机与现代化 2007年 12期 98-100页 指导 教师签字许全盛 基层教学单 位主任签字 彭勇 目录 一、设计目的意义 (1) 1.1绪论 (1) 1.2设计目的 (1) 1.3意义 (1) 二、设计内容 (2) 2.1 设计原理 (2) 2.2 设计内容 (2) 三、设计过程及结果分析 (3) 3.1 设计步骤 (3) 4

通信工程学院matlab课程设计报告

南京工程学院 课程设计说明书(论文)题目模拟信号的数字化 课程名称Matlab通信仿真设计 院(系、部、中心)通信工程学院 专业电子信息工程(传感网) 班级 学生姓名X X X 学号 2 0 8 1 1 0 7 3 2 设计地点信息楼C 216 指导教师潘子宇

设计起止时间:2014年1月10日至2014年 1 月14日

目录 一、内容摘要 (1) 二、课程设计目的和要求 (2) 三、课程设计任务 (2) 四、课程设计软件介绍 (3) 五、课程设计原理 (4) 六、PCM编码及仿真参数设置 (9) 七、PCM解码及仿真参数设置 (11) 八、PCM串行传输模型及仿真参数设置 (13) 九、课程设计成品图 (14) 十、SCOPE端的最终波形图 (14) 十一、主要参考文献 (15)

十二、总结与体会 (15) 一、内容摘要 MATLAB软件是矩阵实验室的简称,是美国M a t h W or k s公司出品的商业数学软件, 可用于算法开发、数据分析以及数值计算的高级技术计算语言和交互式环境, 广泛用于数字信号分析,系统识别,时序分析与建模, 神经网络、动态仿真等方面有着广泛的应用。主要包括MATLAB和Simulink两大部分。Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。 Simulink是MATLAB中的一种可视化仿真工具,是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。Simulink可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。 Simulink是用于动态系统和嵌入式系统的多领域仿真和基于模型的设计工具。对各种时变系统,包括通讯、控制、信号处理、视频处理和图像处理系统,Simulink提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。.

相关文档
相关文档 最新文档