Matlab数字图像增强处理.docx

上传人:b****8 文档编号:9848711 上传时间:2023-05-21 格式:DOCX 页数:17 大小:41.90KB
下载 相关 举报
Matlab数字图像增强处理.docx_第1页
第1页 / 共17页
Matlab数字图像增强处理.docx_第2页
第2页 / 共17页
Matlab数字图像增强处理.docx_第3页
第3页 / 共17页
Matlab数字图像增强处理.docx_第4页
第4页 / 共17页
Matlab数字图像增强处理.docx_第5页
第5页 / 共17页
Matlab数字图像增强处理.docx_第6页
第6页 / 共17页
Matlab数字图像增强处理.docx_第7页
第7页 / 共17页
Matlab数字图像增强处理.docx_第8页
第8页 / 共17页
Matlab数字图像增强处理.docx_第9页
第9页 / 共17页
Matlab数字图像增强处理.docx_第10页
第10页 / 共17页
Matlab数字图像增强处理.docx_第11页
第11页 / 共17页
Matlab数字图像增强处理.docx_第12页
第12页 / 共17页
Matlab数字图像增强处理.docx_第13页
第13页 / 共17页
Matlab数字图像增强处理.docx_第14页
第14页 / 共17页
Matlab数字图像增强处理.docx_第15页
第15页 / 共17页
Matlab数字图像增强处理.docx_第16页
第16页 / 共17页
Matlab数字图像增强处理.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Matlab数字图像增强处理.docx

《Matlab数字图像增强处理.docx》由会员分享,可在线阅读,更多相关《Matlab数字图像增强处理.docx(17页珍藏版)》请在冰点文库上搜索。

Matlab数字图像增强处理.docx

Matlab数字图像增强处理

基于Matlab的数字图像增强处理

摘要

数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务。

数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。

数字图像处理技术已经在各个领域上都有了比较广泛的应用。

图像处理的信息量很大,对处理速度的要求也比较高。

Matlab强大的运算和图形展示功能,使图像处理变得更加的简单和直观。

本文介绍了Matlab语言的特点,基于Matlab的数字图像处理环境,介绍了如何利用Matlab及其图像处理工具箱进行数字图像处理,并通过一些例子来说明利用Matlab图像处理工具箱进行图像处理的方,主要论述了利用Matlab实现灰度增强、空域增强、频域增强。

第一章绪论

1.1课题研究目的及意义

数字图像处理(DigitalImageProcessing),就是利用数字计算机或者其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。

例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。

总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。

由于计算机处理能力的不断增强,数字图像处理学科在飞速发展的同时,也越来越广泛地向许多其他学科快速交叉渗透,使得图像作为信息获取以及信息的利用等方面也变得越来越重要。

目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。

MathWorks公司推出的Matlab软件是学习数理知识的好帮手。

应用Matlab友好的界面和丰富、实用、高效的指令及模块,可以使人较快地认识、理解图像处理的相关概念,逐步掌握图像信号处理的基本方法,进而能够解决相关的工程和科研中的问题。

图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。

随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大,已在国家安全、经济发展、日常生活中充当越来越重要的角色,对国计民生的作用不可低估。

1.2Matlab简介

Matlab是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。

目前,已成为工程领域中较常用的软件工具包之一。

它是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。

使用它,可以较使用传统的编程语言,如C、C++等,更快的解决技术计算问题。

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

Matlab最突出的特点就是简洁。

Matlab用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。

Matlab给用户带来的是最直观,最简洁的程序开发环境。

以下简单介绍一下Matlab的主要特点。

(1)语言简洁紧凑,使用方便灵活,库函数极其丰富。

Matlab程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。

由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。

可以说,用Matlab进行科技开发是站在专家的肩膀上。

(2)运算符丰富。

由于Matlab是用C语言编写的,Matlab提供了和C语言几乎一样多的运算符,灵活使用Matlab的运算符将使程序变得极为简短。

(3)Matlab既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。

(4)程序限制不严格,程序设计自由度大。

例如,在Matlab里,用户无需对矩阵预定义就可使用。

(5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。

(6)Matlab的图形功能强大。

在FORTRAN和C语言里,绘图都很不容易,但在Matlab里,数据的可视化非常简单。

Matlab还具有较强的编辑图形界面的能力。

(7)Matlab的缺点是,它和其他高级程序相比,程序的执行速度较慢。

由于Matlab的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。

(8)功能强大的工具箱是Matlab的另一特色。

Matlab包含两个部分:

核心部分和各种可选的工具箱。

核心部分中有数百个核心内部函数。

其工具箱又分为两类:

功能性工具箱和学科性工具箱。

功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。

功能性工具箱用于多种学科。

而学科性工具箱是专业性比较强的,如control,toolbox,signlprocessingtoolbox,commumnicationtoolbox等。

这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。

(9)源程序的开放性。

开放性也许是Matlab最受人们欢迎的特点。

除内部函数以外,所有Matlab的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。

1.2.2Matlab在图像处理中的应用

图像处理工具包是由一系列支持图像处理操作的函数组成的。

所支持的图像处理操作有:

图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等)、图像分析和统计、二值图像操作等。

下面就Matlab在图像处理中各方面的应用分别进行介绍。

(1)图像文件格式的读写和显示。

Matlab提供了图像文件读入函数imread(),用来读取如:

bmp、tif、tiffpcx、jpg、gpeg、hdf、xwd等格式图像文;图像写出函数imwrite(),还有图像显示函数image()、imshow()等等。

(2)图像处理的基本运算。

Matlab提供了图像的和、差等线性运算,以及卷积、相关、滤波等非线性算。

例如,conv2(I,J)实现了I,J两幅图像的卷积。

(3)图像变换。

Matlab提供了一维和二维离散傅立叶变换(DFT)、快速傅立叶变换(FFT)、离散余弦变换(DCT)及其反变换函数,以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。

(4)图像的分析和增强。

针对图像的统计计算Matlab提供了校正、直方图均衡、中值滤波、对比度调整、自适应滤波等对图像进行的处理。

(5)图像的数学形态学处理。

针对二值图像,Matlab提供了数学形态学运算函数;腐蚀(Erode)、膨胀(Dilate)算子,以及在此基础上的开(Open)、闭(Close)算子、厚化(Thicken)、薄化(Thin)算子等丰富的数学形态学运算。

以上所提到的Matlab在图像中的应用都是由相应的Matlab函数来实现的,使用时,只需按照函数的调用语法正确输入参数即可。

具体的用法可参考Matlab丰富的帮助文档。

图像边缘对图像识别和计算机分析十分有用,在Matlab中,函数edge()用于灰度图像边缘的提取,它支持六种不同的边缘提取方法,即Sobel方法、Prewitt方法、Robert方法,Laplacian2Gaussian方法、过零点方法和Canny方法。

第二章数字图像处理增强基本简介

2.1基本概念

图像增强是一类基本的图像处理技术,其目的是对图像进行加工,以得到对具体应用来说视觉效果更好、更有用的图像。

这里的好和有用要因具体的应用目的和要求而异,并且所需的具体增强技术也可不同。

目前常用的增强技术根据其处理所进行的空间不同,可分为基于图像域的方法和基于变化域的方法。

第一类,直接在图像所在的空间进行处理,也就是在像素组成的空间里直接对像素进行操作;第二类,在图像的变化域对图像进行间接处理。

2.2图像增强处理的方法简介

空间变换增强又包含了增强对比度和图像求反。

增强对比度实际是增强原图像的各部分的反差。

实际中往往是通过原图中某两个灰度值之间的动态范围来实现的。

对图像求反是将原来的灰度值翻转,简单的说就是使黑变白,使白变黑。

普通的黑白底片和照片就是这样的关系。

具体的变换就是将图像中每个像素的灰度值根据变换曲线进行映射。

空域滤波可分为线形滤波和非线形滤波两类。

线形滤波器的设计常基于对傅立叶变换的分析。

非线形空域滤波器则一般直接对邻域进行操作。

另外各种滤波器根据功能又主要分成平滑滤波和锐化滤波。

平滑可用低通来实现,锐化可用高通来实现.平滑滤波器:

它能减弱或消除傅立叶空间的高频分量,但不影响在低频分量。

因为高频分量对应图像中的区域边缘等灰度值具有较大较快变化的部分,滤波器将这些分量滤去可使图像平滑。

锐化滤波器:

它能减弱或消除傅立叶空间的高频分量

频域增强的基本原理是:

卷积理论是频域技术的基础。

设函数f(x,y)与线性位不变算子h(x,y)的卷积结果是g(x,y),即g(x,y)=h(x,y)*f(x,y)。

那么根据卷积定理在频域有:

G(x,y)=H(u,v)F(u,v)

其中G(x,y)、H(u,v)、F(u,v)分别是g(x,y)、h(x,y)、f(x,y)的傅立叶变换。

频域增强的两个关键步骤:

(1)将图像从空域转换到频域所需的变换及将图像从频域空间转换回空域所需的变换;

(2)在频域空间对图像进行增强加工操作。

常用的频域增强方法有低通滤波和高通滤波。

低通滤波也称低频滤波器。

图像的能量大部分集中在幅度谱的低频和中频度,而图像的边缘和噪声对应于高频部分。

因此能降低高频成分幅度的滤波器就能减弱噪声的影响。

高通滤波也称高频滤波器,它的频值在0频率处单位为1,随着频率的增长,传递函数的值逐渐增加;当频率增加到一定值之后传递函数的值通常又回到0值或者降低到某个大于1的值。

在前一种情况下,高频增强滤波器实际上是依照能够带通滤波器,只不过规定0频率处的增益为单位1。

实际应用中,为了减少图像中面积大且缓慢变化的成分的对比度,有时让0频率处的增益小于单位1更合适。

如果传递函数通过原点,则可以称为laplacian滤波器。

第三章图像增强

图像增强是一类基本的图像处理技术,其目的是对图像进行加工,以得到对具体应用来说视觉效果更好、更有用的图像。

这里的好和有用要因具体的应用目的和要求而异,并且所需的具体增强技术也可不同。

目前常用的增强技术根据其处理所进行的空间不同,可分为基于图像域的方法和基于变化域的方法。

第一类,直接在图像所在的空间进行处理,也就是在像素组成的空间里直接对像素进行操作;第二类,在图像的变化域对图像进行间接处理。

空域增强方法可表示为:

g(x,y)=EH[f(x,y)]

其中f(x,y)和g(x,y)分别为增强前后的图像,EH代表增强操作。

3.1空域变换增强

3.1.1灰度增强

通过改变原图中某两个灰度值之间的动态范围,增强原图像的各部分反差。

图3.1增强对比度

在图3.1中可以看出,通过变换可以使原图的较高的和较低的灰度值的动态范围减小了,而原图在二者之间的动态范围增加了,从而其范围的对比度增加了。

Matlab代码所示:

X1=imread('mri.tif');

figure,imshow(X1)

f0=0;g0=0;

f1=70;g1=30;

f2=180;g2=230;

f3=255;g3=255;

r1=(g1-g0)/(f1-f0);

b1=g0-r1*f0;

r2=(g2-g1)/(f2-f1);

b2=g1-r2*f1;

r3=(g3-g2)/(f3-f2);

b3=g2-r3*f2;

[m,n]=size(X1);

X2=double(X1);

fori=1:

m

forj=1:

n

f=X2(i,j);

g(i,j)=0;

if(f>=0)&(f<=f1)

g(i,j)=r1*f+b1;

elseif(f>=f1)&(f<=f2)

g(i,j)=r2*f+b2;

elseif(f>=f2)&(f<=f3)

g(i,j)=r3*f+b3;

end

end

end

figure,imshow(mat2gray(g));

图3.2处理前图片图3.3灰度处理后

3.1.2图像求反

Matlab代码所示:

X1=imread('spine.tif');

f1=200;

g1=256;

k=g1/f1;

[m,n]=size(X1);

X2=double(X1);

fori=1:

m

forj=1:

n

f=X2(i,j);

g(i,j)=0;

if(f>=0)&(f<=f1)

g(i,j)=g1-k*f;

else

g(i,j)=0;

end

end

end

figure,imshow(mat2gray(g))

图像处理如图所示

图3.4图像求反

3.2空域滤波增强

一般情况下,像素的邻域比该像素要大,也就是说这个像素的邻域中除了本身以外还包括其他像素。

在这种情况下,g(x,y)在(x,y)位置处的值不仅取决于f(x,y)在以(x,y)为中心的邻域内所有的像素的值。

如仍以s和t分别表示f(x,y)在(x,y)位置处的灰度值,并以n(s)代表f(x,y)在(x,y)邻域内像素的灰度值,则t=EA[s,n(s)]为在邻域内实现增强操作,常可利用模板与图像进行卷积。

每个模板实际上是一个二维数组,其中各个元素的取值定了模板的功能,这种模板操作也称为空域滤波。

3.2.1基本原理

空域滤波可分为线形滤波和非线形滤波两类。

线形滤波器的设计常基于对傅立叶变换的分析。

非线形空域滤波器则一般直接对邻域进行操作。

另外各种滤波器根据功能又主要分成平滑滤波和锐化滤波。

平滑可用低通来实现,锐化可用高通来实现。

平滑滤波器:

它能减弱或消除傅立叶空间的高频分量,但不影响在低频分量。

因为高频分量对应图像中的区域边缘等灰度值具有较大较快变化的部分,滤波器将这些分量滤去可使图像平滑。

锐化滤波器:

它能减弱或消除傅立叶空间的高频分量。

空域滤波器都是利用模板卷积,主要步骤如下:

(1)将模板在图中漫游,并将模板中心与图中某个像素位置重合;

(2)将模板上的系数与模板下对应的像素相乘;

(3)将所有的乘积相加;

(4)将和(模板的输出响应)赋给图中对应的模板中心位置像素。

下面分别介绍在Matlab中如何应用平滑和锐化滤波器。

3.2.2线性平滑滤波器

线性低通滤波器是最常用的线性平滑滤波器。

这种滤波器的所有系数都是正的。

对3*3的模板来说,最简单的操作是取所有系数都为1。

为保证输出图像仍在原来的灰度范围内,在计算R后要将其除以9再进行赋值。

这种方法称为邻域平均法。

Matlab实现均值过滤器的代码所示:

I=imread('spine.tif');

J=imnoise(I,'salt&pepper',0.02);

imshow(I)

figure,imshow(J)

K1=filter2(fspecial('average',3),J)/255;

figure,imshow(K1)

title('3*3的均值滤波器')

原图像,加入椒盐噪声的图像和均值滤波的图像如下:

图3.5原始图片图3.6加入椒盐噪声图3.7均值滤波后图片

3.2.3非线性平滑滤波器

中值滤波器是最常用的非线性平滑滤波器。

它是一种临域运算,类似于卷积,但计算的不是加权求和,而是把邻域中的像素按灰度级进行排序,然后选择改组的中间值作为输出的像素值。

具体步骤:

(1)将模板在图像中漫游,并将模板中心和图像某个像素的位置重合;

(2)读取模板下对应像素的灰度值;

(3)将这些灰度值从小到大排成一列;

(4)找出这些值排在中间的一个;

(5)将这个中间值赋给对应模板中心位置的像素。

Matlab实现中值滤波器代码所示:

I=imread('spine.tif');

J=imnoise(I,'salt&pepper',0.02);

K1=medfilt2(J,[3,3]);

figure,imshow(K1)

中值滤波的结果

图3.8中值滤波

3.2.4线性锐化滤波器

线性高通滤波器是最常用的线性锐化滤波器。

这种滤波器的中心系数都是正的,而周围的系数都是负的。

对3*3的模板来说,典型的系数取值是:

[-1–1–1;-18–1;-1–1-1]。

事实上这是拉普拉斯算子,所有的系数之和为0。

当这样的模板放在图像中灰度值是常数或变化很小的区域时,其输出为0或很小。

这个滤波器将原来的图像中的零频域分量去除了,也就是将输出的图像的平均值变为0,这样就会有一部分像素的灰度值小于0。

在图像处理中我们一般只考虑正的灰度值,所以还有将输出图像的灰度值范围通过尺度变回到所要求的范围。

Matlab代码所示:

I=imread('spine.tif');

m=fspecial('laplacian')

I1=filter2(m,I)

h=fspecial('unsharp',0.5);

I2=filter2(h,I)/255;

subplot(1,2,1);

imshow(I1);

title('高通滤波laplacian算子');

subplot(1,2,2);

imshow(I2);

title('高通滤波unsharp');

图3.9高通滤波laplacian算子图3.10高通滤波unsharp

3.3频域增强

3.3.1基本原理

卷积理论是频域技术的基础。

设函数f(x,y)与线性位不变算子h(x,y)的卷积结果是g(x,y),即g(x,y)=h(x,y)*f(x,y)

那么根据卷积定理在频域有:

G(x,y)=H(u,v)F(u,v)

其中G(x,y)、H(u,v)、F(u,v)分别是g(x,y)、h(x,y)、f(x,y)的傅立叶变换。

频域增强的主要步骤是:

(1)技术所需增强图的傅立叶变换;

(2)将其与一个(根据需要设计的)转移函数相乘;

(3)再将结果进行傅立叶反变换以得到增强的图。

频域增强的两个关键步骤:

(1)将图像从空域转换到频域所需的变换及将图像从频域空间转换回空域所需的变换;

(2)在频域空间对图像进行增强加工操作。

常用的频域增强方法有低通滤波和高通滤波。

以下分别介绍在Matlab中如何实现。

3.3.2低通滤波

图像的能量大部分集中在幅度谱的低频和中频度,而图像的边缘和噪声对应于高频部分。

因此能降低高频成分幅度的滤波器就能减弱噪声的影响。

Butterworth低通滤波器是一种物理上可以实现的低通滤波器,n阶,截断频率为d0的Butterworth低通滤波器的转移函数为:

H(u,v)=

用Matlab实现Butterworth低通滤波器的代码所示:

I1=imread('spine.tif');

figure,imshow(I1)

I2=imnoise(I1,'salt');

figure,imshow(I2)

f=double(I2);

g=fft2(f);

g=fftshift(g);

[N1,N2]=size(g);

n=2;

d0=50;

n1=fix(N1/2);

n2=fix(N2/2);

fori=1:

N1

forj=1:

N2

d=sqrt((i-n1)^2+(j-n2)^2);

h=1/(1+0.414*(d/d0)^(2*n));

result(i,j)=h*g(i,j);

end

end

result=ifftshift(result);

X2=ifft2(result);

X3=uint8(real(X2));

figure,imshow(X3);

图3.11加入噪声图3.12去除噪声

3.3.3高通滤波

高通滤波也称高频滤波器,它的频值在0频率处单位为1,随着频率的增长,传递函数的值逐渐增加;当频率增加到一定值之后传递函数的值通常又回到0值或者降低到某个大于1的值。

在前一种情况下,高频增强滤波器实际上是依照能够带通滤波器,只不过规定0频率处的增益为单位1。

实际应用中,为了减少图像中面积大且缓慢变化的成分的对比度,有时让0频率处的增益小于单位1更合适。

如果传递函数通过原点,则可以称为laplacian滤波器。

n阶截断频率为d0的Butterworth高通滤波器的转移函数为:

H(u,v)=

Matlab实现Butterworth高通滤波器代码所示:

I1=imread('pine.tif');

figure,imshow(I1)

f=double(I1);

g=fft2(f);

g=fftshift(g);

[N1,N2]=size(g);

n=2;

d0=5;

n1=fix(N1/2);

n2=fix(N2/2);

fori=1:

N1

forj=1:

N2

d=sqrt((i-n1)^2+(j-n2)^2);

ifd==0

h=0;

else

h=1/(1+(d0/d)^(2*n));

end

result(i,j)=h*g(i,j);

end

end

result=ifftshift(result);

X2=ifft2(result);

X3=uint8(real(X2));

figure,imshow(X3);

图3.13原始图像图3.13高通滤波

3.4二值化图像处理

二值图像中所有的像素只能从0和1这两个值中取,因此在Matlab中,二值图像用一个由0和1组成的二维矩阵表示。

这两个可取的值分别对应于关闭和打开,关闭表征该像素处于背景,而打开表征该像素处于前景。

以这种方式来操作图像可以更容易识别出图像的结构特征。

二值图像操作只返回与二值图像的形式或结构有关的信息,如果希望对其他类型的图像进行同样的操作,则首先要将其转换为二进制的图像格式,可以通过调用Matlab提供的im2bw()来实现,方法如下:

I=imread('spine.tif');

figure,imshow(I);

J=im2bw(I);

figure,imshow(J)

title('二值化处理');

图3.14原始图像图3.15直方图均衡化

第4章总结

此次安排的matlab设计内容丰富,贴近专业知识,让我体会到了信息社会学会使用软件处理工程问题的重要性,同时也是对专业知识的一次应用,了解了许多新的医学知识及图像处理的方法。

通过这周的课程设计,不但使我熟悉了matlab课程设计的基本思想和基础知识,初步掌握了matlab软件关于图像处理方面的应用,而且更为深入的体会了电子信息在现代高科技信息产业领域中的重要地位。

通过简单的软件编程,提高了独立思考能力和自学能力,增强了我的动手能力,当然在设计过程中我也遇到了很多问题,更是让我认识到谨慎态度的可贵。

如开始时到导入一张三位图片,怎么做也无法调用imhist函数,在那里苦思冥想的一上午也没解决问题,最终才在老师的帮助

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2