您现在正在浏览:首页 > 职教文章 > 职教论文 > 应用MATLAB数字图像处理

应用MATLAB数字图像处理

日期: 2009-9-28 3:55:32 浏览: 5 来源: 学海网收集整理 作者: 佚名

摘要:介绍了如何利用MATLAB及其图像处理工具箱进行数字图像处理,并通过一些例子来说明利用MATLAB图像处理工具箱进行图像处理的方法。
   关键词: MATLAB, 图形处理, 直方图均衡化,边缘检测
   1引言
   MATLAB是由美国MathWork 公司推出的用于数值计算和图形处理的软件。MATLAB中除主包外,还包含许多功能各异的工具箱,用于解决各个领域的特定问题。它的工具箱主要有通信、控制系统、滤波器设计、图像处理、非线性控制设计、系统识别、经网络、最优化、模糊逻辑、信号处理、鲁棒控制、统计等。借助于这些工具箱,用户可以非常方便地进行分析、计算及设计工作。不仅如此,MATLAB
   还具有语法简单、易学易用的特点;它丰富的函数使开发者无需重复编程,只要简单地调用和使用,往往在C语言里需要几十甚至上百行的语句在MATLAB里只用一两个函数就可代替。为此,MATLAB己经成为目前使用最为广泛的工程应用软件。
   2 MATLAB图像处理工具箱简介
   MATLAB的图像处理工具箱功能十分强大,支持的图像文件格式丰富,如*.BMP、*.JPEG、*.GIF、*.TIFF、*.PCX、*.HDF、*.XWD、*.PNG等。MATLAB6.5提供了15类图像处理函数,涵盖了包括近期研究成果在内的几乎所有的图像处理方法。这些函数按其功能可分为:图像显示;图像文件I/O;几何操作;像素和统计处理;图像分析图像增强;线性滤波;线性二元滤波设计;图像变换;邻域和块处理;二进制图像操作;区域处理;颜色映像处理;颜色空间变换;图像类型和类型转换。利用这些图像处理工具箱,并结合其强大的数据处理能力,我们可不必关心图像文件的格式、读写、显示等细节,而把精力集中在算法研究上,大大提高了工作效率。而且,在测试这些算法时既可方便地得到统计数据,同时又可得到直观图示。
   3应用实例
   3.1用直方图均衡实现图像增强
   图像增强的目的是突出图像中有用的信息,削弱或消除不需要的信息。直方图均衡化是图像增强的一种常用方法,它能使图像的灰度分布均匀,对比度增大,细节更清晰。它的基本思想是把原始图像的直方图变换成均匀分布的形式,这样
   就增加了像素灰度值的动态范围,从而达到了增强图像整体对比度的效果。
   下面是用MATLAB实现的源程序及注解,输出结果如图1:
   %直方图均衡化
   I=imread(’girl.tif’);%读入图像文件
   J=histeq(I,64);%对图像进行直方图均衡化,指定均衡化后的灰度级数为64
   subplot(2,2,1),imshow(I),title(’原始图像’);%显示原始图像
   subplot(2,2,2),imhist(I,64),title(’原始直方图’);%显示原始直方图
   subplot(2,2,3),imshow(J),title(’直方图均衡化后的图像’);%显示直方图均衡化后的图像
   subplot(2,2,4),imhist(J,64),title(’直方图均衡化后的直方图’);%显示直方图均衡化后的直方图
   通过比较可看出均衡化后的图像变得清晰,其直方图形状也比原直方图的形状更理想。
   3.2边缘检测
   边缘是图像的最基本的特征,边缘中包含着有价值的目标边界信息,这些信息可以用作图像分析、目标识别。在细胞边缘检测计算过程中,为了有效地抑制噪声的影响,同时能够客观、正确地选取边缘检测的门限值,可以先通过迭代算法求得最佳阈值,把图像进行分割为背景和目标两部分;再运用数学形态学的腐蚀算法,挖去细胞内部像素点;最后剩余部分图像就是细胞的边缘,从而实现了细胞的边缘检测。这样通过对各像素点自身灰度值的分析和计算,判断该点是否为边缘点,避免了在边缘检测的数学计算过程中,使噪声干扰的影响进一步扩大,损坏细胞边缘图像。通过阈值分割处理,既增强了图像的目标与背景的对比,增强了边缘,又能准确提取细胞区域。边缘检测的代码如下所示,输出结果见图2::
   blood=imread(’blood1.bmp’);%读入图像文件
   [x,y]=size(blood);%求出图像大小
   b=double(blood);
   N=sqrt(100)*randn(x,y);%生成方差为10的白噪声
   I=b+N;%产生噪声干扰图像
   for i=1:x%实际图像的灰度为0~255
   for j=1:y
   if(I(i,j)﹥255)
   I(i,j)=255;
   end
   if(I(i,j)﹤0)
   I(i,j)=0;
   end
   end
   end
   z0=max(max(I));%求出图像中最大的灰度
   z1=min(min(I));%求出图像中最小的灰度
   T=(z0+z1)/2;
   TT=0;
   S0=0;n0=0;
   S1=0;n1=0;
   allow=0.5;%新旧阈值的允许接近程度
   d=abs(T-TT);
   count=0;%记录几次循环
   while(d﹥=allow)%迭代最佳阈值分割算法
   count=count+1;
   for i=1:x
   for j=1:y
   if(I(i,j)﹥=T)
   S0=S0+I(i,j);
   n0=n0+1;
   end
   if(I(i,j)﹤T)
   S1=S1+I(i,j);
   n1=n1+1;
   end
   end
   end
   T0=S0/n0;
   T1=S1/n1;
   TT=(T0+T1)/2;
   d=abs(T-TT);
   T=TT;
   end
   Seg=zeros(x,y);
   for i=1:x
   for j=1:y
   if(I(i,j)﹥=T)
   Seg(i,j)=1;%产生阈值分割后的图像
   end
   end
   end
   SI=1-Seg;%阈值分割后的图像求反,便于用腐蚀算法求边缘
   se1=strel(’square’,3);%定义腐蚀算法的结构
   SI1=imerode(SI,se1);%腐蚀算法
   BW=SI-SI1;%用新算法进行边缘检测
   I=uint8(I);
   BW1=edge(I,’sobel’,0.09);%用Soble算子进行边缘检测
   BW2=edge(I,’log’,0.015);%用Gauss-Laplace算子进行边缘检测
   figure(1);imshow(I);title(’原始图像’)
   figure(2);imshow(BW1);title(’Soble算子’)
   figure(3);imshow(BW2);title(’Gauss-Laplace算子’)
   figure(4);imshow(BW);title(’新算子’)%显示新算法的边缘图像
   由图2可知,跟传统的Soble算子和Gauss-Laplace算子相
   比,该方法不受噪声影响,能够可靠地提取边缘,从而对细胞边
   缘进行精确检测。
   4结束语
   本文作者创新点:把MATLAB运用到图像处理中,实现模
   拟仿真,大大提高了工作效率。

返回顶部