【转】matlab图像处理学习笔记-数学形态与二值图像操

转载 2010年05月06日 00:04:00

数学形态学主要处理的是二值图像,因为二值图像的处理操作比较简单。
9.1 数学形态学图像处理
基本思想:利用一个称作结构元素(structuring element)的探针收集图像信息。当探针在图像中不断移动时,
便可考察图像各个部分见的相互关系,从而了解图像各个部分的结构特征。作为探针的结构元素,可直接携带只是(形态、大小以及灰度和色度信息)
来探测所研究图像的结构特点。
基本运算:数字形态学的基本运算是腐蚀和膨胀。
平移:就是将图像A平移到以b为原点的坐标系中。
反射:图像A相对于坐标原点的对称结果。
开运算:即A先被B腐蚀,再被B膨胀;
闭运算:即A先被B膨胀,再被B腐蚀;
根据开、闭运算的特点,通常可以利用开运算删除图像中的小分支,利用不运算填补图像中的空穴;
形态学的直奔运算满足以下特点:
1、膨胀和复试运算具有平移不变性,即对图像A进行复试和膨胀的结果运算只取决于A与B得结构,而与A得为之无关。
2、开运算可以使图像缩小,闭运算可以使图像增大。

9.3数学图形学的运算的基本函数
1、二值图像的膨胀运算 dilate(BW,SE,alg,n),SE为一个数据结构,具体为什么,也不是特别清楚,alg=‘spatial’在空域上实现
alg=‘frequency’,在频域上实现,无论空域上实现还是频域上实现,运算结果都一样,但是对于大图像来说,运算的速度会快一些
n代表对图像进行膨胀的次数。
I=imread('rice.tif');
imshow(I);
a=ones(5);
b=dilate(I,a);
figure,imshow(b);

2、erode(bw,SE,alg,n)
此函数同dilate()函数的功能基本是一样的。
3、对图像进行指定的操作 bwmorph(bw,operation,n)
bw是二值图像,operation是指定的操作,为字符串,n代表进行操作的次数
operation的可选值及其含义为:
bothat,闭包运算,即先腐蚀,再膨胀,然后减去源图像
bridge,作连接运算即将两个1中间相隔的一个0变为1;
clean,去除孤立的亮点,如
     0 0 0
     0 1 0
     0 0 0
     变为
     0 0 0
     0 0 0
     0 0 0
diag,采用对角线填充来去除8邻接的背景
dilate用结构元素ones(3)作膨胀运算
erode,用结构元素ones(3)作腐蚀运算
fill,填充孤立的黑点,
hbreak,断开H形连接,如
     1 1 1
     0 1 0
     1 1 1
     变为
     1 1 1
     0 0 0
     1 1 1
majority,若像素的8邻域中有大于或等于5的元素为1,否则为0
remove,如掉内点,即如果像素4的邻域都为1,则像素为0
shrink,n=Inf,作收缩运算。没有孔的物体收缩为一个点,有孔的物体收缩为一个环,
收缩运算保持欧拉数不变
skel,n=Inf,提取物体的骨架。即去除物体外边缘的点,但保持物体不发生断裂,同一昂保持欧拉数不变
spur,去除物体小的分支
tophat,用原图像减去开运算后的图像

9.2 基于对象的操作
对象是指值为1且连接在一起的像素
4邻域和8邻域

9.22边界识别
bwperim函数用于提取二值图像中对象的边界像素。边界元素必须满足:值为1,邻域中至少有一个为0
此函数用于将图像的边界轮廓显示出来。
bwperim(I,n)
例如:
I=imread('circbw.tif');
imshow(I);
a=bwperim(I,8);
figure,imshow(a);

9.23种子填充
是指首先指定一个背景点作为起始点不断把与之相邻的背景点的0变为1,知道达到对象的边界。种子填充对于去除图像中不规则的形状很有效。比如反光现象
种子填充的函数为bwfill(bw,c,r,n),c、r为填充起始坐标,xi,yi为坐标终点,holes为空洞
bwfill(bw,n)/bwfill(x,y,bw,xi,yi,n)/bwfill(bw,'holes',n)
起始点是指bw(c,r)点所在的位置

9.24连通区域标记
bwlabel函数可对二值图像的连接部分进行标记,它主要用于对二值图像中各个分离部分进行标记
L=bwlabel(I,n)L为返回的标记后的数组
[L,num]=bwlabel(I,n) num返回标记的区域的数量

9.25选择对象
对象是指值为1,且连接起来的像素的集合,而bwselect函数就是用来选择这种对象的
语法如下:
   a=bwselect(I,c,r,n)、bwselect(bw,n)/ bwselect(x,y,bw,xi,yi) bwselect
   其中c和r代表起始点的x、y坐标,当出现xi、yi的时候,x、y为非默认的坐标系,当没有出现I的时候,为鼠标选定的坐标,并按回车确定
   9.3特征提取
   图像面积函数bwarea(I),用来返回图像前景像素为1的个数。
   欧拉数函数bweuler(I,n),用来求图像的欧拉数,欧拉数是图像的一种拓扑度量,欧拉数等于图像中对象的总数减去空洞的数量。
   面积函数和欧拉数函数返回的都是单个的数值

9.4查找表
查找表是一个列向量,他把一个像素邻域点的所有可能组合保存起来,使得大量的运算问题转化为查表问题,一些二值图像操作如果采用查找表,可以大大提高运算的速度

1、makelut(fun,n) 它返回函数fun定义的查找表,n为邻域尺寸,如:
f=inline('sum(x(:))>=2');
lut=makelut(f,2)

2、applylut   函数用于基于查找表的二值图像处理,也就是在makelut的基础之上进行操作
A=applylut(bw,lut)

9.5 基于特征的逻辑运算
在二值图像处理中,利用图像的逻辑运算可以实现基于特征的与运算和从图像中提取感兴趣的物体的功能
9.51、基于特征的与运算
该运算主要用于以一幅图像为模板,求取与另一部风图像的重合部分的对象,但是两张图像的大小得相同
如下
a=imread('rice.tif');
b=imread('circles.tif');
local_and=a & b;
[r,c]=find(local_and);
feature_and=bwselect(b,c,r);
imshow(feature_and)

9.52利用逻辑运算提取物体
bacteria=imread('bacteria');
bact_bw=(bacteria>=100);
imshow(bact_bw);
filtered=filter2(fspecial('laplacian'),bacteria)
bact_granules=(filtered>-4) & bact_bw;
imshow(filtered)
figure,imshow(bact_granules)
granules=erode(bact_bw)&(bact_granules)=0;
imshow(granules);
[r,c]=find(granules);
result=bwselect(bact_bw,r,c);
imshow(bacteria);
figure,imshow(result);

本章属于简单型章节,操作没有什么难的,主要是理解的问题!

相关文章推荐

matlab-----文件操作

文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。MATLAB提供了一系列低层输入输出函数,专门用于文件操作。 1、文件的打开与关闭 1)打开文件 在读写文件之前,必须...
  • yf210yf
  • yf210yf
  • 2012年06月06日 14:57
  • 1143

matlab连通域处理函数们

1、 matlab函数bwareaopen──删除小面积对象 格式:BW2 = bwareaopen(BW,P,conn) 作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域。 算法:...

【Matlab学习笔记】【数学形态学】数字图像处理(MATLAB版)冈萨雷斯第九章学习笔记

数字图像处理(MATLAB版)冈萨雷斯第九章学习笔记,涉及重点理论概念和基础代码。...

Matlab图像处理学习笔记(一):二值化、开操作、连通区域提取、重心、ROI

本博客主要记录我学习运用matlab进行一些基本的图像处理的一些笔记,如果有不当的地方,欢迎批评指正,一起学习,一起进步。 本篇是第一篇,只涉及到一些基本的操作,涉及到的知识点如下: 1、二值化 ...

MATLAB学习笔记 形态学图像处理(二)

腐蚀imerode(image, s) 对图像进行腐蚀操作f = imread('img8.tif'); se = strel('disk', 10); g = imerode(f, se); sub...

Matlab图像处理学习笔记(四):多边形检测

本文用matlab实现了基本多边形的检测、提取。     本文涉及到的知识点如下:      1、Canny边缘检测。 bw = edge(gray,'canny',[0 , 50/256]); ...

Matlab图像处理学习笔记(三):基于匹配的目标识别

如果要在一幅图像中寻找已知物体,最常用且最简单的方法之一就是匹配。 在目标识别的方法中,匹配属于基于决策理论方法的识别。匹配方法可以是最小距离分类器,相关匹配。本文code是基于最小距离分类器,基于...

Matlab图像处理学习笔记(八):用广义霍夫变换筛选sift特征点

经过几天的学习研究,终于完成了广义霍夫变换(Generalised Hough transform)对特征点的筛选。此法不仅仅针对sift特征点,surf,Harris等特征点均可适用。 这几天我发...

Matlab图像处理学习笔记(九):获取叠加物体的数量并进行分割

本笔记说明如何对叠加物体的数量进行计数,并对其进行分割。 本文算法思路参考了Nash的思路,图像也是采用Nash的图像,为叠加硬币,链接:http://opencv-code.com/tutoria...

Matlab图像处理学习笔记(六):基于sift特征点的人民币识别

本文记录如何利用sift特征点进行人民币的识别。本文给出的matlab源码识别了1元与100元人民币的面额,相同思路,可以对各种币值的人民币进行面额、正反面的识别。但由于本程序采用串行,模板数的增多会...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【转】matlab图像处理学习笔记-数学形态与二值图像操
举报原因:
原因补充:

(最多只允许输入30个字)