MATLAB在图像处理和分析中的应用_邓巍

MATLAB在图像处理和分析中的应用_邓巍
MATLAB在图像处理和分析中的应用_邓巍

MATLAB在图像处理和分析中的应用

邓 巍,丁为民,张 浩

(南京农业大学 工学院,南京 210031)

摘 要:MATLAB中的数字图像是以矩阵形式表示的,这意味着MATLAB强大的矩阵运算能力用于图像处理非常有利,矩阵运算的语法对MATLAB中的数字图像同样适用。为此,介绍了如何利用MATLAB图像工具箱来实现经典的图像处理,并以血管三维重建为例,说明如何用MATLAB实现经典的数字图像处理,最后验证了该语言是简洁的、可读性较强的高效率编程软件。

关键词:计算机软件;数字图像处理;应用;MATLAB;血管三维重建

中图分类号:TP312 文献标识码:A 文章编号:1003—188X(2006)06—0194—05

0 引言

图像处理着重强调在图像之间进行的变换。虽然人们常用的图像处理泛指各种图像技术,但比较狭义的图像处理主要指对图像进行各种加工,以改善图像的视觉效果,并为自动识别打基础;或对图像进行压缩编码,以减少对其所需存储空间、传输时间和传输道路的要求。图像分析主要是对图像中感兴趣的目标检测和测量,以获得它们的客观信息,从而建立对图像的描述。如果说图像处理是一个从图像到图像的过程,则图像分析是一个从图像到数据的过程。这里的数据可以是对目标特征测量的结果,或是基于测量的符号表示。它们描述了图像中目标的特点和性质。对图像的处理和分析一般可用算法的形式描述,而大多数的算法可用软件实现。只有在为了提高速度或克服通用计算机限制的情况下,才采用特别的硬件[1]。

MATLAB语言自从20世纪80年代中期推出以来,不断吸收各学科领域权威人士所编写的实用程序,经过多年的逐步发展与不断完善,现已成为国际公认的、最优秀的科学计算与数学应用软件之一,是近几年来在国内外广泛流行的一种可视化科学计算软件。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个方便的、界面友好的、用户环境,而且还具有可扩展性特征[2]。

MATLAB不仅具有面向对象的计算机语言特征,而且初具面向任务的计算机语言的思想。本文从实际应用的角度介绍如何利用MATLAB进行图像的处理和分析。

1 MATLAB概述

MathWorks公司针对不同领域的应用,推出了信号处理、控制系统、神经网络、图像处理、小波分析、鲁棒控制、非线性系统控制设计、系统辨识、优化设计、统计分析、财政金融、样条及通信等30多个具有专门功能的工具箱,这些工具箱是由该领域内学术水平较高的专家编写的,用户可直接运用,无需再编写专业基础程序。同时,工具箱内的函数源程序也是开放性的,多为M文件,用户可以查看这些文件的代码并进行更改。MATLAB支持用户对其函数进行二次开发,用户的应用程序也可以作为新的函数添加到相应的工具箱中。

MATLAB的指令表达与数学、工程中常用的习惯形式十分相似,从而使许多用C或Fortran实现起来十分复杂且费时的问题用MATLAB就可以轻松地解决。

1.1 MATLAB的特点

一种语言之所以如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其它语言的特点。正如同Fortran和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称为第4代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。 1.1.1 功能强大

MATLAB具有功能强劲的工具箱,其包含两个部分:核心部分和各种可选的工具箱。核心部分中,有数百个核心内部函数。其工具箱又可分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文

收稿日期:2005-06-24

作者简介:邓 巍(1969-),女,乌鲁木齐人,副教授,博士研究生,(E-mail)njaudwei@https://www.360docs.net/doc/7117959801.html,。

字处理功能以及与硬件实时交互功能。功能性工具箱能用于多种学科,而学科性工具箱是专业性比较强的,例如control toolbox, image processing toolbox, signal processing toolbox等。这些工具箱都是由该领域内的学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,就能够直接进行高、精、尖的研究。

1.1.2 界面友好,编程效率高

MATLAB突出的特点就是简洁。它用更直观的、符合人类思维习惯的代码代替了C和Fortran语言的冗长代码,给用户带来的是最直观、最简洁的程序开发环境。MATLAB语言简洁紧凑,使用方便灵活,库函数极其丰富,程序书写形式自由,利用其丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都是由本领域的专家编写的,因此用户不必担心函数的可靠性。可以说,用MATLAB进行科学开发是站在专家的肩膀上来完成的。

1.1.3 开放性强

MATLAB有很好的可扩充性,可以把它当成一种更高级的语言去使用。各种工具箱中的函数可以互相调用,也可以由用户更改。MATLAB支持用户对其函数进行二次开发,用户的应用程序可以作为新的函数添加到相应的工具箱中。

1.2 MATLAB的主要功能

MATLAB之所以成为世界顶级的科学计算与数学应用软件,是因为它随着版本的升级与不断完善而具有越来越强大的功能。

1.2.1 数值计算功能

MATLAB出色的数值计算功能是使之优于其他数学应用软件的决定性因素之一。

1.2.2 符号计算功能

MATLAB符号运算的独特之处:无需事先对变量赋值,而所得的结果以标准的符号形式表达,符号计算的整个过程以字符进行。

1.2.3 数据分析功能

MATLAB可以将计算数据以二维、三维乃至四维的图形表现。这不仅使数据间的关系清晰、明了,而且对于揭示其内在本质有着非常重要的作用。 1.2.4 动态仿真功能

MATLAB提供了一个模拟动态系统的交互程序SIMULINK,用户通过简单的鼠标操作,就可建立起直观的系统模型,并进行仿真。

1.2.5 图形文字统一处理功能

MATLAB Notebook成功地将Microsoft Work与MATLAB集成为一个整体,为文字处理、科学计算、工程设计营造了一个完美、统一的工作环境。它既拥有Word强大的文字处理功能,又能通过Word访问MATLAB的数据计算和可视化结果[3]。

2 利用MATLAB进行图像处理

数字图像处理是使用数字计算机对图像进行加工和处理的过程。最早的使用是20世纪60年代美国喷气推出实验室(Jet Propulsion Laboratory)使用数字计算机对大批月球照片进行处理,得到了清晰的图像。此后,数字图像处理技术在各个领域都得到了广泛的应用[4]。

数字图像研究的领域非常广泛,从学科上可以分为图像的数字化、图像变换、图像增强、图像恢复、图像分割、图像分析和理解、图像的压缩等。

MATLAB6.x提供了20类图像处理函数,涵盖了图像处理包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。这些函数按功能可分为图像显示、图像文件I/O、图像算术运算、几何变换、图像登记、像素值与统计、图像分析、图像增强、线性滤波、线性二元滤波设计、图像去模糊、图像变换、邻域与块处理、灰度与二值图像的形态学运算、结构元素创建与处理、基于边缘的处理、色彩映射表操作、色彩空间变换及图像类型与类型转换[5]。 2.1 常用图像操作

2.1.1 图像类型转换

MATLAB图像处理工具箱支持4种图像类型,分别为真彩色图像(RGB)、索引色图像、灰度图像(I)和二值图像(BW)。由于有的函数对图像类型有限制,因此这4种类型可以用工具箱的类型转换函数相互转换。MATLAB可操作的图像文件包括BMP,HDF,JPEG,PCX,TIFF和XWD等格式。例如,要对一幅索引色图像滤波,首先应该将它转换成真彩色图像或者灰度图像,这时MATLAB将会对图像的灰度进行滤波,即通常意义上的滤波。如果不将索引色图像进行转换,MATLAB则对图像调色板的序号进行滤波,这是没有意义的。

2.1.2 图像文件的读写与显示操作

MATLAB为用户提供了专门的函数,以从图像格式的文件中读写图像数据。imread()函数用于读入各种图像文件,imwrite()函数用于输出图像,imfinfo()函数用于读取图像文件的有关信息。

把图像显示于屏幕有imread()、image()等函数。用subplot()函数能将一个图像窗口分成几个部分,但同一个图像窗口内只能有一个调色板。 subimage函数可在一个图像窗口内使用多个调色

板,使得各种图像能在同一个图像窗口中显示,用zoom()函数可实现对图像的缩放。

2.1.3 其它常用图像操作

图像的插值缩放可用imresize()函数实现。在对数字图像进行旋转时,各像素的坐标将会发生变化,使得旋转之后不能正好落在整数坐标处,需要进行插值,imrotate()函数可实现插值旋转。用imcrop()函数可剪切图像中的一个矩形子图。

2.2 图像变换功能

在图像处理技术中,图像的(正交)变换技术有着广泛的应用,是图像处理的重要工具。通过变换图像,改变图像的表示域及表示数据,可以给后续工作带来极大的方便。常运用于图像压缩、滤波、编码和后续的特征抽取或信息分析过程。例如,傅立叶变换(Fourier Transform)可使处理分析在频域中进行,使运算简单;而离散余弦变换(Discrete Cosine Transform)可使能量集中在少数数据上,从而实现数据压缩,便于图像传输和存储。

2.2.1 傅立叶变换

在图像处理的广泛应用领域中,傅立叶变换起着非常重要的作用,具体表现在包括图像分析、图像增强及图像压缩等方面。利用计算机进行傅立叶变换的通常形式为离散傅立叶变换,采用这种形式的傅立叶变换有以下两个原因:一是离散傅立叶变换的输入和输出都是离散值,适用于计算机的运算操作;二是采用离散傅立叶变化变换,可以应用快速傅立叶变换来实现,提高运算速度。在MATLAB 工具箱中,提供了fft2()和ifft2()函数用于计算二维快速傅立叶变换及其逆变换,fftn()和ifftn()函数用于计算n维傅立叶变换和逆变换。

2.2.2 离散余弦变换

在图像处理工具箱中,dct2()和idct2()函数实现二维离散余弦变换及逆变换。大多数情况下,DCT(Discrete Cosine Transform)用于压缩图像,JPEG图像格式就采用了DCT算法。在JPEG图像压缩算法中,图像被分成8×8或者16×16的图像块,然后对每个图像块进行DCT变换。DCT变换被量化、编码及传输。在接收端,量化的DCT系数被解码,并用来计算每个图像块的逆DCT变换,最后把各图像块拼接起来构成一幅图像。对一幅典型的图像而言,许多DCT变换的系数近似为0,把它们去掉并不会明显影响重构图像的质量。

2.2.3 radon变换

图像处理工具箱的radon()函数用来计算指定方向上图像矩阵的投影,二元函数f(y

x,)的投影是在某一方向上的线积分。例如,f(y

x,)在垂直方向上的线积分是f(y

x,)在x方向上的投影,在水平方向上的积分是在y方向上的投影。用iradon()函数可实现逆radon变换,并经常用于投影成像中,这个变换能把radon变换反变换回来,因此可以从投影数据重建原始图像。而在大多数应用中,没有所谓的用原始图像来计算投影。例如,X射线吸收重建,投影是通过测量X射线辐射在不同角度通过物理切片时的衰减得到的。原始图像可以认为是通过切面的截面。这里,图像的密度代表切片的密度。投影通过特殊的硬件设备获得,而切片内部图像通过iradon重建。这可以用来对活的生物体或者不透明物体实现无损成像。

2.2.4 离散小波变换

离散小波变换是对连续小波变换的尺度和位移按照2的幂次进行离散化得到的,又称二进制小波变换。实际上,人们是在一定尺度上认识信号的。人的感官和物理仪器都有一定的分辨率,对低于一定尺度的信号的细节是无法认识的,因此对低于一定尺度信号的研究也是没有意义的。为此,应该将信号分解为对应不同尺度的近似分量和细节分量。小波分解的意义就在于能够在不同尺度上对信号进行分析,而且对不同尺度的选择可以根据不同的目的来确定。信号的近似分量一般为信号的低频分量,其细节分量一般为信号的高频分量。因此,对信号的小波分解可以等效于信号通过了一个滤波器组,其中一个滤波器为低通滤波器,另一个为高通滤波器。MATLAB工具箱中的dwt()和idwt()函数可实现一维离散小波变换及其反变换,wavedec()和waverec()用于一维信号的多层小波分解和多层重构等。

2.3 图像增强功能

图像增强是数字图像处理过程中常用的一种方法,目的是采用一系列技术去改善图像的视觉效果或将图像转换成一种更适合于人眼观察和机器自动分析的形式。常用的图像增强方法有以下几种。 2.3.1 灰度直方图均衡化

均匀量化的自然图像的灰度直方图通常在低灰度区间上频率较大,使得图像中较暗区域中的细节看不清楚。采用直方图修整可使原图像灰度集中的区域拉开或使灰度分布均匀,从而增大反差,使图像的细节清晰,达到增强目的。直方图均衡化可用histeq()函数实现。

2.3.2 灰度变换法

照片或电子方法得到的图像,常表现出低对比度(即整个图像偏亮或偏暗),为此需要对图像中的每一像素的灰度级进行灰度变换,扩大图像灰度范围,以达到改善图像质量的目的。这一灰度调整过

程可用imadjust()函数实现。

2.3.3 平滑与锐化滤波

平滑技术用于平滑图像中的噪声,基本采用在空间域上的求平均值或中值,或在频域上采取低通滤波。在灰度连续变化的图像中,通常认为与相邻像素灰度相差很大的突变点为噪声。灰度突变代表了一种高频分量,低通滤波则可以削弱图像的高频成分,平滑了图像信号,但也可能使图像目标区域的边界变得模糊。而锐化技术采用的是频域上的高通滤波方法,通过增强高频成分减少图像中的模糊,特别是模糊的边缘部分得到了增强,但同时也放大了图像的噪声。在MATLAB中,各种滤波方法都是在空间域中通过不同的卷积模板(即滤波算子)实现,可用fspecial()函数创建预定义的滤波算子,然后用filter()或conv2()函数在实现卷积运算的基础上进行滤波。

2.4 边缘检测和图像分割功能

边缘检测是一种重要的区域处理方法。边缘是所要提取目标和背景的分界线,提取出边缘才能将目标和背景区分开来。边缘检测是利用物体和背景在某种图像特性上的差异来实现的,这些差异包括灰度、顔色或者纹理特征。实际上,就是检测图像特性发生变化的位置。边缘检测包括两个基本内容:一是抽取出反映灰度变化的边缘点;二是剔除某些边界点或填补边界间断点,并将这些边缘连接成完整的线。如果一个像素落在边界上,那么它的邻域将成为一个灰度级变化地带。对这种变化最有用的两个特征是灰度的变化率和方向。边缘检测算子可以检查每个像素的邻域,并对灰度变化率进行量化,也包括对方向的确定,其中大多数是基于方向导数掩模求卷积的方法。MATLAB工具箱提供的edge()函数可针对sobel算子、prewitt算子、Roberts 算子、LoG算子和canny算子实现检测边缘的功能。基于灰度的图像分割方法也可以用简单的MATLAB 代码实现。

除以上介绍的一些基本的图像处理功能外,还有许多基于数学形态学与二值图像的操作函数,如二值图像的膨胀运算dilate()函数、腐蚀运算erode()函数、种子填充功能bwfill()函数等。

3 应用MATLAB进行图像处理实例

为了证明MATLAB语言是一种简洁、可读性较强的高效率编程软件,本文通过运用图像处理工具箱中的有关函数,根据血管平行切片图像,对血管进行三维重建。

断面可用于了解生物组织、器官等的形态。例如,将样本染色后切成厚约1μm的切片,在显微镜下观察该横断面的组织形态结构。如果用切片机连续不断地将样本切成数十、成百的平行切片,可依次逐片观察。根据拍照并采样得到的平行切片数字图像,运用计算机可重建组织、器官等准确的三维形态。

假设某些血管可视为一类特殊的管道,该管道的表面是由球心沿着某一曲线(称为中轴线)的球滚动包络而成。例如,圆柱就是一种管道,其中轴线为直线,由半径固定的球滚动包络形成。

在实验中,有血管的相继100张平行切片图像记录了管道与切片的交。图像文件名依次为0.bmp,1.bmp,…,99.bmp,格式均为BMP,宽、高均为512像素(pixel)。假设管道中轴线与每张切片有且只有一个交点,球半径固定,切片间距以及图像像素尺寸均为1。例如,图

1是0.bmp图片。

图1 0.bmp切片图像

在此例中,血管三维重建的思路:一是对每张图像提取切片的边缘;二是找到边界的内切圆和中心点;三是选取内切圆,其半径即为假想的在管道内滚动的球的半径,即血管半径;四是利用样条插值的方法,把100个中心点连接成平滑的曲线,即为管道的中轴线;五是用所得到的血管半径和管道中轴线,就可实现血管的三维重建。

以上过程可用以下MATLAB代码来实现。

3.1 提取边界

边界提取结果如图2所示,代码实现过程如下:p=imread(‘0.bmp’); %读入图像

j=0; %以下程序是提取切片的边界

for i=1:512

q=find(p(i,:)==1);

if ~isempty(q)

j=j+1;

[q1,q2]=size(q);

e0(j,:)=[i,q(1),q(2)];

end

end

e=[e0(:,[1,2]);e0(:,[1,3])];

plot(e(:,2),e(:,1)) %画出所提取的边界

图2 提取血管切片的边界

3.2 搜索某一点与边界的最小距离

其代码实现过程如下: esize=size(e); for i=90:110 for j=250:270 dd0=60; for k=1:esize

dd=sqrt(sum((e(k,:)-[i,j]).^2));

if dd

ddd(i-89,j-249)=dd0; end end

3.3 求所有点最小距离中的最大值 最小距离中的最大值即为半径。 r0=max(max(ddd)); [i,j]=find(ddd==r0); x0=i+89;y0=j+249; t=0:0.1:2*pi; x=x0+r0*cos(t); y=y0+r0*sin(t); hold on

plot(y,x,’m’) %画出内接圆 plot(y0,x0,’m*’) %画出血管中轴点 axis equal

text(y0,x0+1,’血管中轴’)

当100个切片的图像都经过以上过程处理之

后,即可利用样条插值的方法,根据已求出的每张图片的血管中轴点(如图3所示),得到一条平滑的曲线,这就是要恢复的血管的中轴线。结合每张切片的内接圆(如图3所示),就可以实现这段血管的三维重建。

图3 血管切片的内接圆和中轴点

4 结束语

图像信息是人类认识客观世界的重要知识来源。数字图像处理是使用数字计算机对图像进行加工和处理的过程。数字图像处理技术在各个领域都得到了广泛的应用。MATLAB 图像处理工具箱提供了丰富的图像处理函数。

但应该认识到,图像处理内容广泛,图像处理工具箱不可能提供所有的函数。特别是计算机视觉理论的发展,对图像分析提出了更高的要求。为此,需要在充分理解数字图像处理原理的基础上编制函数来完成图像处理的任务。 参考文献:

[1] 黄剑玲.利用MATLAB 进行数字图像的分析和处理

[J].计算机与现代化,2000,70(6):104-107. [2] 李了了,邓善熙. MATLAB 在图像处理技术方面的应

用[J].微计算机信息,2003,19(2):65-66. [3] 许志影,李晋平.MATLAB 及其在图像处理中的应用

[J].计算机与现代化,2003,92(4):64-65. [4] 孙兆林.MATLAB6.x 图像处理[M].北京:清华大学出

版社,2002.

[5] 何希平,张琼华.基于MATLAB 的图像处理与分析

[J].重庆工商大学学报(自然科学版),2003,20 (2):22-26.

Application of MATLAB in Figure Image Processing and Analysis

DENG Wei, DING Wei-min, ZHANG Hao

(College of Engineering, Nanjing Agricultural University, Nanjing 210031, China )

Abstract: The paper introduces how to realize the classic image processing using MATLAB’s image processing toolbox. In order to demonstrate how to realize the classic figure image processing, the paper makes the three-dimensional reconstruction of blood vessel as example. And it verifies that MATLAB language is concise, highly-readable and is high-efficiency programming software.

Key words: computer software; figure image processing; application; MA TLAB; three-dimensional reconstruction of blood vessel

120 110 100 90 80 70

230240250 260 270 280 290 120 110 100 90 80 70

230 240 250 260 270 280 130 60 220 290 300

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数字图像处理 1 概述 BW=dither(I)灰度转成二值图; X=dither(RGB,map)RGB转成灰度图,用户需要提供一个Colormap; [X,map]=gray2ind(I,n)灰度到索引; [X,map]=gray2ind(BW,n)二值图到索引,map可由gray(n)产生。灰度图n默认64,二值图默认2; X=graylice(I,n)灰度图到索引图,门限1/n,2/n,…,(n-1)/n,X=graylice(I,v)给定门限向量v; BW=im2bw(I,level)灰度图I到二值图; BW=im2bw(X,map,level)索引图X到二值图;level是阈值门限,超过像素为1,其余置0,level在[0,1]之间。 BW=im2bw(RGB,level)RGB到二值图; I=ind2gray(X,map)索引图到灰度图; RGB=ind2rgb(X,map)索引图到RGB; I=rgb2gray(RGB)RGB到灰度图。 2 图像运算 2.1 图像的读写 MATLAB支持的图像格式有bmp,gif,ico,jpg,png,cur,pcx,xwd和tif。 读取(imread): [1] A=imread(filename,fmt) [2] [X,map]=imread(filename,fmt) [3] […]=imread(filename) [4] […]=imread(URL,…) 说明:filename是图像文件名,如果不在搜索路径下应是图像的全路径,fmt是图像文件扩展名字符串。前者可读入二值图、灰度图、彩图(主要是RGB);第二个读入索引图,map 为索引图对应的Colormap,即其相关联的颜色映射表,若不是索引图则map为空。URL表示引自Internet URL中的图像。 写入(imwrite): [1] R=imwrite(A,filename,fmt); [2] R=imwrite(X,map,filename,fmt); [3] R=imwrite(…,filename); [4] R=imwrite(…,Param1,V al1,Param2,Val2) 说明:针对第四个,该语句用于指定HDF,JPEG,PBM,PGM,PNG,PPM,TIFF等类型输出文件的不同参数。例如HDF的Quality,Compression,WriteMode;JPEG的BitDepth,Comment:Empty or not,Mode:lossy or lossless,Quality等。 2.2 图像的显示 方法1:使用Image Viewer(图像浏览器),即运用imview函数。 同时显示多帧图像的所有帧,可用到montage函数。

基于Matlab基本图像处理程序

图像读入 ●从图形文件中读入图像 imread Syntax: A = imread(filename, fmt) filename:指定的灰度或彩色图像文件的完整路径和文件名。 fmt:指定图形文件的格式所对应的标准扩展名。如果imread没有找到filename所制定的文件,会尝试查找一个名为filename.fmt的文件。 A:包含图像矩阵的矩阵。对于灰度图像,它是一个M行N列的矩阵。如果文件包含 RGB真彩图像,则是m*n*3的矩阵。 ●对于索引图像,格式[X, map] = imread(filename, fmt) X:图像数据矩阵。 MAP:颜色索引表 图像的显示 ●imshow函数:显示工作区或图像文件中的图像 ●Syntax: imshow(I) %I是要现实的灰度图像矩阵 imshow(I,[low high],param1, val1, param2, val2,...) %I是要现实的灰度图像矩阵,指定要显示的灰度范围,后面的参数指定显示图像的特定参数 imshow(RGB) imshow(BW) imshow(X,map) %map颜色索引表 imshow(filename) himage = imshow(...) ●操作:读取并显示图像 I=imread('C:\Users\fanjinfei\Desktop\baby.bmp');%读取图像数据 imshow(I);%显示原图像 图像增强 一.图像的全局描述 直方图(Histogram):是一种对数据分布情况的图形表示,是一种二维统计图表,它的两个坐标分别是统计样本和该样本对应的某个属性的度量。 图像直方图(Image Histogram):是表示数字图像中亮度分布的直方图,用来描述图象灰度值,标绘了图像中每个亮度值的像素数。 灰度直方图:是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图 像中某种灰度出现的频率。描述了一幅图像的灰度级统计信息。是一个二维图,横坐标为图像中各个像素点的灰度级别,纵坐标表示具有各个灰度级别的像素在图像中出现的次数或概率。 归一化直方图:直接反应不同灰度级出现的比率。纵坐标表示具有各个灰度级别的像

基于MATLAB的图像处理的基本运算

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位: 题目: 基于MATLAB的图像处理的基本运算 初始条件: 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)能够对图像亮度和对比度变化调整,并比较结果 (2)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的和旋转操作,并保存,比较几 种插值的效果 (3)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 (4)对图像加入各种噪声,比较效果。 时间安排: 指导教师签名:年月日 系主任(或责任教师)签名:年月日 目录 摘要.......................................................................................................................... 错误!未定义书签。 1 MATLAB简介 ........................................................................................................ 错误!未定义书签。2图像选择及变换................................................................................................... 错误!未定义书签。 2.1 原始图像选择读取....................................................................................... 错误!未定义书签。 2.1.1 原理图的读入与基本变换 .................................................................... 错误!未定义书签。

matlab图像处理的几个实例

Matlab图像处理的几个实例(初学者用) 1.图像的基本信息及其加减乘除 clear,clc; P=imread('yjx.jpg'); whos P Q=imread('dt.jpg'); P=im2double(P); Q=im2double(Q); gg1=im2bw(P,0.3); gg2=im2bw(P,0.5); gg3=im2bw(P,0.8); K=imadd(gg1,gg2); L=imsubtract(gg2,gg3); cf=immultiply(P,Q); sf=imdivide(Q,P); subplot(421),imshow(P),title('郁金香原图'); subplot(422),imshow(gg1),title('0.3'); subplot(423),imshow(gg2),title('0.5'); subplot(424),imshow(gg3),title('0.8'); subplot(425),imshow(K),title('0.3+0.5'); subplot(426),imshow(L),title('0.5-0.3'); subplot(427),imshow(cf),title('P*Q'); subplot(428),imshow(sf),title('P/Q'); 2.图像缩放 clear,clc; I=imread('dt.jpg'); A=imresize(I,0.1,'nearest'); B=imresize(I,0.4,'bilinear'); C=imresize(I,0.7,'bicubic'); D=imresize(I,[100,200]); F=imresize(I,[400,100]); figure subplot(321),imshow(I),title('原图'); subplot(322),imshow(A),title('最邻近插值'); subplot(323),imshow(B),title('双线性插值'); subplot(324),imshow(C),title('二次立方插值'); subplot(325),imshow(D),title('水平缩放与垂直缩放比例为2:1'); subplot(326),imshow(F),title('水平缩放与垂直缩放比例为1:4');

基于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课程设计-图像处理完整版

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程序【完整版】

第一部分数字图像处理

实验一图像的点运算 实验1.1 直方图 一.实验目的 1.熟悉matlab图像处理工具箱及直方图函数的使用; 2.理解和掌握直方图原理和方法; 二.实验设备 1.PC机一台; 2.软件matlab。 三.程序设计 在matlab环境中,程序首先读取图像,然后调用直方图函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(1,2,2),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的直方图函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察图像matlab环境下的直方图分布。 (a)原始图像 (b)原始图像直方图 六.实验报告要求 1、给出实验原理过程及实现代码; 2、输入一幅灰度图像,给出其灰度直方图结果,并进行灰度直方图分布原理分析。

实验1.2 灰度均衡 一.实验目的 1.熟悉matlab图像处理工具箱中灰度均衡函数的使用; 2.理解和掌握灰度均衡原理和实现方法; 二.实验设备 1.PC机一台; 2.软件matlab; 三.程序设计 在matlab环境中,程序首先读取图像,然后调用灰度均衡函数,设置相关参数,再输出处理后的图像。 I=imread('cameraman.tif');%读取图像 subplot(2,2,1),imshow(I) %输出图像 title('原始图像') %在原始图像中加标题 subplot(2,2,3),imhist(I) %输出原图直方图 title('原始图像直方图') %在原图直方图上加标题 a=histeq(I,256); %直方图均衡化,灰度级为256 subplot(2,2,2),imshow(a) %输出均衡化后图像 title('均衡化后图像') %在均衡化后图像中加标题 subplot(2,2,4),imhist(a) %输出均衡化后直方图 title('均衡化后图像直方图') %在均衡化后直方图上加标题 四.实验步骤 1. 启动matlab 双击桌面matlab图标启动matlab环境; 2. 在matlab命令窗口中输入相应程序。书写程序时,首先读取图像,一般调用matlab自带的图像, 如:cameraman图像;再调用相应的灰度均衡函数,设置参数;最后输出处理后的图像; 3.浏览源程序并理解含义; 4.运行,观察显示结果; 5.结束运行,退出; 五.实验结果 观察matlab环境下图像灰度均衡结果及直方图分布。 (a)原始图像 (b)均衡化后图像

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图像处理相关函数

一、通用函数: colorbar显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \ [...]=getimage imshow 显示图像 语法:imshow(I,n) \ imshow(I,[low high]) \ imshow(BW) \ imshow(X,map) \ imshow(RGB)\ imshow(...,display_option) \ imshow(x,y,A,...) \ imshow filename \ h=imshow(...) montage 在矩形框中同时显示多幅图像 语法:montage(I) \ montage(BW) \ montage(X,map) \ montage(RGB) \ h=montage(...) immovie 创建多帧索引图的电影动画 语法:mov=immovie(X,map) \ mov=immovie(RGB) subimage 在一副图中显示多个图像 语法:subimage(X,map) \ subimage(I) \ subimage(BW) \ subimage(RGB) \ subimage(x,y,...) \ subimage(...) truesize 调整图像显示尺寸 语法:truesize(fig,[mrows mcols]) \ truesize(fig) warp 将图像显示到纹理映射表面 语法:warp(X,map) \ warp(I ,n) \ warp(z,...) warp(x,y,z,...) \ h=warp(...) zoom 缩放图像 语法:zoom on \ zoom off \ zoom out \ zoom reset \ zoom \ zoom xon \ zoom yon\ zoom(factor) \ zoom(fig,option) 二、图像文件I/O函数命令 imfinfo 返回图形图像文件信息 语法:info=imfinfo(filename,fmt) \ info=imfinfo(filename) imread 从图像文件中读取(载入)图像 语法:A=imread(filename,fmt) \ [X,map]=imread(filename,fmt) \

图像处理matlab程序实例

程序实例 1旋转: x=imread('d:\MATLAB7\work\flower.jpg'); y=imrotate(x,200,'bilinear','crop'); subplot(1,2,1); imshow(x); subplot(1,2,2); imshow(y) 2.图像的rgb clear [x,map]=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh1.jpg');y=x(90:95,90:95);imshow(y)R=x(90:95,90:95,1);G=x(90:95,90:95,2);B=x(90:95,90:95,3);R,G,B 3.加法运算clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shh3.jpg');J=imnoise(I,'gaussian',0,0.02);%向图片加入高斯噪声subplot(1,2,1),imshow(I);%显示图片subplot(1,2,2),imshow(J);K=zeros(242,308);%产生全零的矩阵,大小与图片的大小一样for i=1:100%循环100加入噪声J=imnoise(I,'gaussian',0,0.02);J1=im2double(J);K=K+J1;end K=K/100; figure,imshow(K);save

4.减法 clear I=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); J=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao1.jpg'); K=imsubtract(I,J);%实现两幅图相减 K1=255-K;%将图片求反显示 figure;imshow(I); title('有噪声的图'); figure;imshow(J); title('原图'); figure;imshow(K1); title('提取的噪声'); save 5.图像的乘法 H=imread('D:\Program Files\MATLAB\R2012a\bin\shaohaihe\shao.jpg'); I=immultiply(H,1.2);将此图片乘以1.2 J=immultiply(H,2); subplot(1,3,1),imshow(H); title('原图'); subplot(1,3,2),imshow(I); title('·放大1.2'); subplot(1,3,3),imshow(J); title('放大2倍'); 6除法运算 moon=imread('moon.tif'); I=double(moon); J=I*0.43+90; K=I*0.1+90; L=I*0.01+90; moon2=uint8(J); moon3=uint8(K); moon4=uint8(L); J=imdivide(moon,moon2); K=imdivide(moon,moon3); L=imdivide(moon,moon4); subplot(2,2,1),imshow(moon); subplot(2,2,2),imshow(J,[]); subplot(2,2,3),imshow(K,[]); subplot(2,2,4),imshow(L,[]);

基于MATLAB的运动模糊图像处理

基于MATLAB的运动模糊图像处理 提醒: 我参考了文献里的书目和网上的一些代码而完成的,所以误差会比较大,目前对于从网上下载的模糊图片的处理效果很不好,这是我第一次上传自己完成的实验的文档,希望能帮到一些人吧。 研究目的 在交通系统、刑事取证中图像的关键信息至关重要,但是在交通、公安、银行、医学、工业监视、军事侦察和日常生活中常常由于摄像设备的光学系统的失真、调焦不准或相对运动等造成图像的模糊,使得信息的提取变得困难。但是相对于散焦模糊,运动模糊图像的复原在日常生活中更为普遍,比如高速运动的违规车辆的车牌辨识,快速运动的人群中识别出嫌疑人、公安刑事影像资料中提取证明或进行技术鉴定等等,这些日常生活中的重要应用都需要通过运动模糊图像复原技术来尽可能地去除失真,恢复图像的原来面目。因此对于运动模糊图像的复原技术研究更具有重要的现实意义。 图像复原原理 本文探讨了在无噪声的情况下任意方向的匀速直线运动模糊图像的复原问题,并在此基础上讨论了复原过程中对点扩散函数(PSF)的参数估计从而依据自动鉴别出的模糊方向和长度构造出最为近似的点扩散函数,构造相应的复原模型,实现运动模糊图像的复原;在模糊图像自动复原的基础上,根据恢复效果图的纹理特征和自动鉴别出的模糊长度和角度,人工调整模糊方向和长度参数,使得复原效果达到最佳。 实验过程 模糊方向的估计: 对图1(a)所示的原始图像‘车牌’图像做方向θ=30?,长度L=20像素的匀速直线运动模糊,得到退化图像如图1(b)

1(a) 1(b) j=imread('车牌1.jpg'); figure(1),imshow(j); title('原图像'); len=20; theta=30; psf=fspecial('motion',len,theta); j1=imfilter(j,psf,'circular','conv'); figure,imshow(j1); title('PSF 模糊图像'); 图1(c)和1(d)分别为原图像和模糊图像的二次傅里叶变化

最常用的matlab图像处理的源代码

最常用的一些图像处理Matlab源代 码 #1:数字图像矩阵数据的显示及其傅立叶变换 #2:二维离散余弦变换的图像压缩 #3:采用灰度变换的方法增强图像的对比度 #4:直方图均匀化 #5:模拟图像受高斯白噪声和椒盐噪声的影响 #6:采用二维中值滤波函数medfilt2对受椒盐噪声干扰的图像滤波 #7:采用MATLAB中的函数filter2对受噪声干扰的图像进行均值滤波 #8:图像的自适应魏纳滤波 #9:运用5种不同的梯度增强法进行图像锐化 #10:图像的高通滤波和掩模处理 #11:利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理 #12:利用巴特沃斯(Butterworth)高通滤波器对受噪声干扰的图像进行平滑处理 1.数字图像矩阵数据的显示及其傅立叶变换 f=zeros(30,30); f(5:24,13:17)=1; imshow(f, 'notruesize'); F=fft2(f,256,256); % 快速傅立叶变换算法只能处矩阵维数为2的幂次,f矩阵不 % 是,通过对f矩阵进行零填充来调整 F2=fftshift(F); % 一般在计算图形函数的傅立叶变换时,坐标原点在 % 函数图形的中心位置处,而计算机在对图像执行傅立叶变换 % 时是以图像的左上角为坐标原点。所以使用函数fftshift进 %行修正,使变换后的直流分量位于图形的中心; figure,imshow(log(abs(F2)),[-1 5],'notruesize');

2 二维离散余弦变换的图像压缩I=imread('cameraman.tif'); % MATLAB自带的图像imshow(I); clear;close all I=imread('cameraman.tif'); imshow(I); I=im2double(I); T=dctmtx(8); B=blkproc(I,[8 8], 'P1*x*P2',T,T'); Mask=[1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]; B2=blkproc(B,[8 8],'P1.*x',Mask); % 此处为点乘(.*) I2=blkproc(B2,[8 8], 'P1*x*P2',T',T); figure,imshow(I2); % 重建后的图像 3.采用灰度变换的方法增强图像的对比度I=imread('rice.tif'); imshow(I); figure,imhist(I); J=imadjust(I,[0.15 0.9], [0 1]); figure,imshow(J); figure,imhist(J);

基于MATLAB图像处理报告

基于MATLAB图像处理报告 一、设计题目 图片叠加。 二、设计要求 将一幅礼花图片和一幅夜景图片做叠加运算,使达到烟花夜景的美图效果。 三、设计方案 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实现

rice=imread(‘rice.png’); % 读入图像 I=double(rice); % 数据类型转换 J=I*0.43+60; % 像素点算术运算 rice2=uint8(J) % 数据类型转换subplot(1,2,1),imshow(rice); % 原图绘制subplot(1,2,2),imshow(rice2); % 计算后图像绘制

X = uint8([ 255 10 75; 44 225 100]); Y = uint8([ 50 20 50; 50 50 50 ]); Z = imdivide(X,Y)

I = imread('rice.png'); % 读入图像background = imopen(I,strel('disk',15)); % 图像开运算Ip = imdivide(I,background); % 图像除法运算imshow(Ip,[]) % 显示运算后的图像

I = imread('rice.png'); % 读入图像 J = imdivide(I,2); % 图像除以一个常数subplot(1,2,1), imshow(I) % 显示原始图像subplot(1,2,2), imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像J = imlincomb(2,I); % 灰度值放大imshow(J) % 显示运算后的图像

I = imread('cameraman.tif'); % 读入图像 J = uint8(filter2(fspecial('gaussian'), I)); % 图像滤波 K = imlincomb(1,I,-1,J,128); % K(r,c) = I(r,c) - J(r,c) + 128 % 图像相减后加上一个常数figure, imshow(K) % 显示运算后的图像

基于matlab数字图像处理与识别系统含程序

目录 第一章绪论 (2) 1.1 研究背景 (2) 1.2 人脸图像识别的应用前景 (3) 1.3 本文研究的问题 (4) 1.4 识别系统构成 (4) 1.5 论文的内容及组织 (5) 第二章图像处理的Matlab实现 (6) 2.1 Matlab简介 (6) 2.2 数字图像处理及过程 (6) 2.2.1图像处理的基本操作 (6) 2.2.2图像类型的转换 (7) 2.2.3图像增强 (7) 2.2.4边缘检测 (8) 2.3图像处理功能的Matlab实现实例 (8) 2.4 本章小结 (11) 第三章人脸图像识别计算机系统 (11) 3.1 引言 (11) 3.2系统基本机构 (12) 3.3 人脸检测定位算法 (13) 3.4 人脸图像的预处理 (18) 3.4.1 仿真系统中实现的人脸图像预处理方法 (19) 第四章基于直方图的人脸识别实现 (21) 4.1识别理论 (21) 4.2 人脸识别的matlab实现 (21) 4.3 本章小结 (22) 第五章总结 (22) 致谢 (23) 参考文献 (24) 附录 (25)

第一章绪论 本章提出了本文的研究背景及应用前景。首先阐述了人脸图像识别意义;然后介绍了人脸图像识别研究中存在的问题;接着介绍了自动人脸识别系统的一般框架构成;最后简要地介绍了本文的主要工作和章节结构。 1.1 研究背景 自70年代以来.随着人工智能技术的兴起.以及人类视觉研究的进展.人们逐渐对人脸图像的机器识别投入很大的热情,并形成了一个人脸图像识别研究领域,.这一领域除了它的重大理论价值外,也极具实用价值。 在进行人工智能的研究中,人们一直想做的事情就是让机器具有像人类一样的思考能力,以及识别事物、处理事物的能力,因此从解剖学、心理学、行为感知学等各个角度来探求人类的思维机制、以及感知事物、处理事物的机制,并努力将这些机制用于实践,如各种智能机器人的研制。人脸图像的机器识别研究就是在这种背景下兴起的,因为人们发现许多对于人类而言可以轻易做到的事情,而让机器来实现却很难,如人脸图像的识别,语音识别,自然语言理解等。如果能够开发出具有像人类一样的机器识别机制,就能够逐步地了解人类是如何存储信息,并进行处理的,从而最终了解人类的思维机制。 同时,进行人脸图像识别研究也具有很大的使用价依。如同人的指纹一样,人脸也具有唯一性,也可用来鉴别一个人的身份。现在己有实用的计算机自动指纹识别系统面世,并在安检等部门得到应用,但还没有通用成熟的人脸自动识别系统出现。人脸图像的自动识别系统较之指纹识别系统、DNA鉴定等更具方便性,因为它取样方便,可以不接触目标就进行识别,从而开发研究的实际意义更大。并且与指纹图像不同的是,人脸图像受很多因素的干扰:人脸表情的多样性;以及外在的成像过程中的光照,图像尺寸,旋转,姿势变化等。使得同一个人,

数字图像处理 MATLAB代码

MATLAB实用源代码 图像读取及灰度变换 I=imread('cameraman.tif');%读取图像 subplot(1,2,1),imshow(I)%输出图像 title('原始图像')%在原始图像中加标题 subplot(1,2,2),imhist(I)%输出原图直方图 title('原始图像直方图')%在原图直方图上加标题 图像旋转 I=imread('cameraman.tif'); figure,imshow(I); theta=30; K=imrotate(I,theta);%Try varying the angle,theta. figure,imshow(K) 边缘检测 I=imread('cameraman.tif'); J1=edge(I,'sobel'); J2=edge(I,'prewitt'); J3=edge(I,'log'); subplot(1,4,1),imshow(I); subplot(1,4,2),imshow(J1); subplot(1,4,3),imshow(J2); subplot(1,4,4),imshow(J3); 1.图像反转 MATLAB程序实现如下: I=imread('xian.bmp'); J=double(I); J=-J+(256-1);%图像反转线性变换 H=uint8(J); subplot(1,2,1),imshow(I); subplot(1,2,2),imshow(H); 2.灰度线性变换 MATLAB程序实现如下: I=imread('xian.bmp'); subplot(2,2,1),imshow(I); title('原始图像'); axis([50,250,50,200]); axis on;%显示坐标系 I1=rgb2gray(I); subplot(2,2,2),imshow(I1); title('灰度图像'); axis([50,250,50,200]);

matlab图像处理综合实验实验报告

《数字图像处理》 实验报告 学院: 专业: 班级: 姓名: 学号:

实验一 实验名称:图像增强 实验目的:1.熟悉图像在Matlab下的读入,输出及显示; 2.熟悉直方图均衡化; 3.熟悉图像的线性指数等; 4.熟悉图像的算术运算及几何变换. 实验仪器:计算机,Matlab软件 实验原理: 图像增强是为了使受到噪声等污染图像在视觉感知或某种准则下尽量的恢复到原始图像的水平之外,还需要有目的性地加强图像中的某些信息而抑制另一些信息,以便更好地利用图像。图像增强分频域处理和空间域处理,这里主要用空间域的方法进行增强。空间域的增强主要有:灰度变换和图像的空间滤波。 图像的直方图实际上就是图像的各像素点强度概率密度分布图,是一幅图像所有像素集合的最基本统计规律,均衡化是指在每个灰度级上都有相同的像素点过程。 实验内容如下: I=imread('E:\cs.jpg');%读取图像 subplot(2,2,1),imshow(I),title('源图像') J=rgb2gray(I)%灰度处理 subplot(2,2,2),imshow(J) %输出图像 title('灰度图像') %在原始图像中加标题 subplot(2,2,3),imhist(J) %输出原图直方图 title('原始图像直方图') 0100200

I=imread('E:\cs.jpg');%读取图像 subplot(1,2,1),imshow(I); theta = 30; K = imrotate(I,theta); subplot(1,2,2),imshow(K) 对数运算: I=imread('E:\dog.jpg'); subplot(2,2,1),imshow(I),title('源图像') J=rgb2gray(I)%灰度处理 subplot(2,2,2),imshow(J),title('灰度变换后图像') J1=log(1+double(J)); subplot(2,2,3),imshow(J1,[]),title('对数变换后') 指数运算: I=imread('E:\dog.jpg'); f=double(I); g=(2^2*(f-1))-1 f=uint8(f); g=uint8(g);

相关文档
最新文档