摘    要:本实验主要实现形态学图像处理。主要验证图像集合的交并补运算、膨胀和腐蚀处理并利用图像集合的运算,实现形态学边界抽取算法并进行特征边界抽取。同时将膨胀和腐蚀扩展至灰度图像,编写函数实现灰度图像形态学梯度公式和Tophat变换公式,最后对形态学梯度变换和Tophat变换后的输出图像进行比较。

1 形态学

形态学(motphology)一词通常代表生物学的一个分支。它是研究动物和植物的形态和结构的学科。我们在这里使用同一词语表示数学形态学的内容,将数学形态学(mathenmfical  morphology)作为工具从图像中提取对于表达和描绘区域形状有用处的图像分量,比如边界、骨架以及凸壳,等等。我们对用于预处理或后处理的形态学技术同样感兴趣,比如形态学过滤、细化和修剪等等。

数学形态学的语言是集合论。同样,形态学为大量的图像处理问题提供了一种一致的有力方法。数学形态学中的集合表示图像中的不同对象。例如,在二值图像中,所有黑色像素的集合是图像完整的形态学描述。在二值图像中,正被讨论的集合是二维整数空间 (P)的元素,在这个二维整数空间中,集合的每个元素都是一个多元组(二维向量),这些多元组的坐标是一个黑色(或白色,取决于事先的约定)像素在图像中的坐标(x,y)。灰度级数字图像可以表示为Z空间(Z3)上分量的集合。在这种情况下,集合中每个元素的两个分量是像素的坐标,第3个分量对应于像素的离散灰度级值。更高维度空间中的集合可以包含图像的其他属性,比如颜色和随时间变化的分量。

2 图像的逻辑运算

很多应用是以形态学概念为基础的,并涉及二值图像。逻辑运算尽管本质上很简单,但对于实现以形态学为基础的图像处理算法是一种有力的补充手段。本实验中,我们关注的是涉及二值图像和灰度图像的逻辑运算。

在图像处理中用到的主要逻辑运算是:与、或和非(即交并补)。图1中总结了这些运算的性质。这些运算在功能上是完善的。它们可以互相组合形成其他逻辑运算。

图1 主要的逻辑运算

在两幅或多幅图像的对应像素间逐像素进行逻辑运算(除了“非”运算,此运算只对单一图像的像素进行)。因为只有在两个变量都是1时,两个二进制变量的“与”运算才为1,所以只有两幅输人图像的对应像素均为1时,“与”运算的结果才是1。图2显示了涉及图像逻辑运算的不同例子。这里,黑色表示1,而白色表示0(这里使用两种约定的说法,有时会颠倒黑色和白色二值的意义,取决于在给定情况下哪种表达更清楚。使用图1中的定义构造其他的逻辑运算很容易。例如,异或运算是当两个像素的值不同时结果为1,否则为0。这种运算与“或”运算不同。“或”运算在两个像索有一个为1或两个均为1时结果为1。

图2 图像逻辑运算

3 二值图像膨胀与压缩

二值图像膨胀:设A和B是(Z2)中的集合,A被B膨胀定义为:

这个公式是以得到B的相对于它自身原点的映像并且由z对映像进行位移为基础的。A被占膨胀是所有位移z的集合,这样,B和 A至少有一个元素是重叠的。与在其他形态学运算中一样,集合B通常叫做膨胀的结构函数。

二值图像压缩:对Z中的集合AB,使用B对A进行腐蚀定义为:

这个公式说明,使用BA进行腐蚀是所有B中包含于A中的点z的集合用z平移。

4 形态学边界特征提取

集合A的边界表示为 ,它可以通过先由BA腐蚀,而后用A减去腐蚀得到。即:

这里B是一个适当的结构元素。图3说明了边界提取的机理。这幅图像显示了一个简单的二值对象、一个结构元素B和使用式 的结果。尽管图3中显示的结构元素是最常用的结构元素之一,但它绝对不是惟一的。例如,使用由1组成的5×5大小的结构元素将得到2到3个像素宽的边界。

图3 边界提取机理

5 灰度图像扩展——膨胀和腐蚀

用结构元素B对灰度图像进行膨胀表示为:,定义为:

这里分别是f和b的定义域。f和b是函数而不是二值形态学情况中的集合。 必须在f的定义域内以及x和y 必须在b的定义域内的条件与膨胀的二值定义中的条件是相似的(这里两个集合的交集至少应有一个元素)。该公式的形式与二维卷积是相似的,并且用最大值运算代替卷积求和,用加法运算代替卷积乘积。

用结构元素B对灰度图像进行腐蚀表示为: ,定义为:

这里分别是f和b的定义域。平移参数必须在f的定义域内,而且x和y必须在b的定义域内,这与腐蚀的二值定义中的条件相似。同样,公式在形式上与二维相关是相似的,并且用最小值运算代替了相关运算,用减法运算代替了相关的乘积。

6 灰度图像形态学的应用

膨胀和腐蚀经常用于计算图像的形态学梯度,其公式为:

形态学梯度的作用是使输入图像中灰度级的跃变更为急剧。

另外一个应用是对图像进行形态学tophat变换,定义为:

如以前一样,f是输入图像,b是结构元素函数。该应用对于增强灰度图像的阴影细节很有用处。

7 实验结果讨论

本实验使用B=ones(3,3)矩阵作为结构元素,使用图像Fig9.20(left).jpg进行二值图像的膨胀、腐蚀和边缘特征提取处理,使用图像Fig9.39(a).jpg实现灰度图像的膨胀、腐蚀并进行形态学梯度公式运算和Tophat变换。

编写函数dilate_erode(ima,B)实现二值图像的膨胀与腐蚀,其中ima为输入图像,A为结构元素。图4给出了二值图像的膨胀、腐蚀和边缘特征提取等处理结果,可以看到,腐蚀图中消除了一些原图的细节,而膨胀图则相反。由于腐蚀图中主要消除了原图的边缘细节,因此根据边缘特征提取的原理,我们将原图像与腐蚀图像相减,即可得到院图像的边缘部分细节。

编写函数gray_dilate_erode(ima,B,operate)实现灰度图像的膨胀与腐蚀,其中ima为输入图像,B为结构元素,operate为可选操作膨胀’dilate’和腐蚀’erode’。图5给出了灰度图像的膨胀、腐蚀并与MATLAB自带函数进行对比,结果并无差异。使用公式:

  

分别实现形态学梯度公式和tophat变换,结果如图6所示。可以看到经过形态学梯度公式处理后的图像中灰度级的跃变更为急剧,边界轮廓明显,但输出图像有明显的噪声;而tophat变换后的输出图像的阴影细节得到增强,其他区域无明显变化。

8 实验结果图片

形态学及其他集合运算(Morphological and Other Set Operations)的更多相关文章

  1. 【Java EE 学习 28 上】【oracle学习第二天】【子查询】【集合运算】【几种数据库对象】

    一.子查询 1.为什么要使用子查询:问题不能一步求解或者一个查询不能通过一步查询得到. 2.分类:单行子查询和多行子查询. 3.子查询的本质:一个查询中包含了另外一个或者多个查询. 4.使用子查询的规 ...

  2. 详解SQL集合运算

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列[T-SQL基础]主要是针对T-SQL基础的总结. [T-SQL基础]01.单表查询-几道sql查询题 ...

  3. SQL集合运算参考及案例(一):列值分组累计求和

    概述 目前企业应用系统使用的大多数据库都是关系型数据库,关系数据库依赖的理论就是针对集合运算的关系代数.关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式.不过我们在工作中发现,很多人 ...

  4. Oracle学习之集合运算

    一.集合运算操作符  UNION:(并集)返回两个集合去掉重复值的所有的记录  UNION ALL:(并集)返回两个集合去掉重复值的所有的记录 INTERSECT:(交集)返回两个集合的所有记录,重复 ...

  5. Oracle学习(七):集合运算

    1.知识点:能够对比以下的录屏进行阅读 SQL> -- 查询10和20号部门的员工的3种方法 SQL> --1. select * from emp where deptno in (10 ...

  6. STL中的set集合容器进行集合运算:并、交、差实例

    集合容器的集合运算:并.交.差: #include "stdafx.h" #include <iostream> #include <set> #inclu ...

  7. sql的集合运算

    表的加减法 union:使用union 对表进行假发(并集)运算, union等集合运算符通常都会去除重复记录. select shohin_id, shohin_mei from shohin un ...

  8. [Swust OJ 632]--集合运算(set容器)

    题目链接:http://acm.swust.edu.cn/problem/632/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  9. SQL集合运算 差集 并集 交

    SQL-3标准中提供了三种对检索结果进行集合运算的命令:并集UNION:交集INTERSECT:差集EXCEPT(在Oracle中叫做 MINUS).在有些数据库中对此的支持不够充分,如MySql中只 ...

随机推荐

  1. python基础知识-04-字符串列表元组

    python其他知识目录 内存,cpu,硬盘,解释器 实时翻译 编译器 :一次性翻译python2,3 除法,2不能得小数,3能得小数 1.字符串操作 1.1字符串操作startswith start ...

  2. [shell] sed学习

    Q:匹配内容有1没有a的行 echo -e "1a\n2b\n1b\n2a" | sed -n '/1/{/a/d;p}' echo -e "1a\n2b\n1b\n2a ...

  3. hadoop的safemode 安全模式

    hadoop启动检查副本块数,就会进入safemode safemode的相关情况 虽然不能进行修改文件的操作,但是可以浏览目录结构.查看文件内容的. 在命令行下是可以控制安全模式的进入.退出和查看的 ...

  4. [Algorithm] A* Search Algorithm Basic

    A* is a best-first search, meaning that it solves problems by searching amoung all possible paths to ...

  5. “Hello World!”团队第九次会议

    今天是我们团队“Hello World!”团队召开的第九次会议.博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 一.会议时间 20 ...

  6. View 渲染

    在Spring MVC 中,controllers不负责具体的页面渲染,仅仅是调用业务逻辑并返回model数据给view层,至于view层具体怎么展现,由专门的view层具体负责,这就是MVC模式,业 ...

  7. VMware12 pro装unlocker207补丁后依然没有apple mac选项,问题解决

    把VMware所有的服务先停止,任务管理器里面的也停止.然后再安装unlocker207补丁就行了.亲测.

  8. 此时本机的BootLoader程序坏了,也就是说grub第一阶段坏掉了,该如何修复

    方法一:直接安装grub (1)先把MBR拷贝一份 dd if=/dev/sda of=/tmp/mbr count=1 bs=512   (2)然后再破坏 dd if=/dev/zero of=/d ...

  9. 1st 构建之法读后感

    构建之法读后感 由于时间和书的篇幅所限,所以我没能真正通读全书,只通过网上的介绍和书内前言及目录,大概了解了构建之法是一本怎样的一本书. 这本书是由具有长达20年一线软件开发经验的邹欣老师所撰写,他以 ...

  10. Java多线程编程(学习笔记)

    一.说明 周末抽空重新学习了下多线程,为了方便以后查阅,写下学习笔记. 有效利用多线程的关键是理解程序是并发执行而不是串行执行的.例如:程序中有两个子系统需要并发执行,这时候需要利用多线程编程. 通过 ...