数字图像处理编成入门笔记——第6章腐蚀,膨胀,细化算法
来源:互联网 发布:c语言 goto坏处 编辑:程序博客网 时间:2024/05/29 02:33
这部份内容属于数学形态学,作者说是他认为最有趣的一个章节。限于篇幅,只介绍二值图象的形态学运算。在程序中,为了处理的方便,还是采用256级灰度图,不过只用到了调色板中的0和255两项。
先来定义一些基本符号和关系。
1. 元素:记作a∈X
2. B包含于X:记作B X
3. B击中X:B和X有交集,记作B↑X
4. B不击中X:记作B∩X=Ф
5. 补集:即B Xc
6. 结构元素:也被称作刷子,可以看作是特殊的颜色图案。
7. 对称集:将B中所有元素的坐标取反,即令(x,y)变成(-x,-y),记作Bv。
8. 平移:设有一幅图象B,有一个点a(x0,y0),将B平移a后的结果是,把B中所有元素的横坐标加x0,纵坐标加y0,即令(x,y)变成(x+x0,y+y0),记作Ba
6.1 腐蚀
1.定义:把结构元素B平移a后得到Ba,若Ba包含于X,我们记下这个a点,所有满足上述条件的a点组成的集合称做X被B腐蚀(Erosion)的结果。用公式表示为:E(X)={a| Ba X}=X B。
2.性质:
1) 其中,E(X)一定包含于X,而且比X小。
2) B是对称的,即B的对称集Bv=B,所以X被B腐蚀的结果和X被 Bv腐蚀的结果是一样的。如果B不是对称的,X被B腐蚀的结果和X被 Bv腐蚀的结果不同。
3.腐蚀的方法:
拿B的中心点和X上的黑点(因为被腐蚀的只有黑点)一个一个地对比,如果B上的所有点都在X的范围内,则该点保留,否则将该点去掉。
6.2 膨胀
1.定义:膨胀可以看做是腐蚀的对偶运算。把结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的结果。用公式表示为:D(X)={a | Ba↑X}=X B。
2.性质:
1)X一定包含于D(X),而且比D(X)小。
2)如果B不是对称的,X被B膨胀的结果和X被 Bv膨胀的结果不同。
3.膨胀的方法:
拿B的中心点和X上的白点(只对白点进行扩张)及X周围的点一个一个地对,如果B上有一个点落在X的范围内,则该点就为黑。
腐蚀运算和膨胀运算互为对偶的,用公式表示为(X B)c=(Xc B),即X 被B腐蚀后的补集等于X的补集被B膨胀。
6.3 开
1.定义:先腐蚀后膨胀称为开,即OPEN(X)=D(E(X))。
2.作用:一般来说,开运算能够去除孤立的小点,毛刺和小桥(即连通两块区域的小点),而总的位置和形状不变。
6.4 闭
1.定义:先膨胀后腐蚀称为闭,即CLOSE(X)=E(D(X))。
2.作用:一般来说,闭运算能够填平小湖(即小孔),弥合小裂缝,而总的位置和形状不变。
注意:如果B是非对称的,进行开运算或闭运算时要用B的对称集Bv膨胀,否则,开运算或闭运算的结果和原图相比要发生平移。开运算和闭运算是对偶运算。
6.5 细化
1.定义:从原来的图中去掉一些点,但仍要保持原来的形状。实际上,是保持原图的骨架。所谓骨架,可以理解为图象的中轴。
2.去除点选择的方法:扫描图中所有黑点的相邻8个点。黑点记为0,白点记为1。从左到右,从上到下,拼成8位二进制数值。然后查对应表(已经定义好了的),来决定是否删除这个点。
3.算法实现方法:设置一个BOOL变量表示这次扫描中有没有删除点。如果有,则继续新一轮扫描;反之终止。每次扫描包括一次水平扫描和一次垂直扫描。在每一行水平扫描的过程中,先判断每一点的左右邻居,如果都是黑点,则该点不做处理。另外,如果某个黑点被删除了,那么跳过它的右邻居,处理下一个点。
这一章的算法实现比较简单,只是在概念理解方面花了一些时间。马上就要开学了,还有三章内容要看,唉~ 为自己加油打气~~~~
- 数字图像处理编成入门笔记——第6章腐蚀,膨胀,细化算法
- 数字图像处理编成入门笔记——第7章 边沿检测与提取,轮廓跟踪
- 数字图像处理编成入门笔记——第8章 图象的检测及模板匹配
- 腐蚀膨胀细化算法
- 腐蚀、膨胀、细化算法
- 膨胀、腐蚀、细化算法
- 腐蚀,膨胀,细化算法
- 腐蚀,膨胀,细化算法
- 数字图像处理编成入门笔记——第9章 图象的压缩编码,JPEG压缩编码标准
- 数字图像处理编成入门笔记——第10章 图象处理编程工具及简单的多媒体编程
- 图像处理 腐蚀 膨胀 细化
- 腐蚀,膨胀,细化算法详解
- 数字图像处理编成入门笔记——第三章图象的平滑(去噪声)、锐化
- 数字图像处理编成入门笔记——第四章图象的半影调和抖动技术
- 数字图像处理编成入门笔记——第五章直方图修正和彩色变换
- 图像处理中的膨胀、腐蚀、细化
- 【数字图像处理学习笔记之四】图像腐蚀、膨胀
- 数字图像处理编成入门笔记——第一章Windows位图和调色板
- read error : transport endpoint is not connetct
- 一些数据结构的基本准备
- 不宜创建索引的情形
- error: argument of type 'void* (My_Thread::)(void*)' does not match 'void *(*)(void*)'
- Cache
- 数字图像处理编成入门笔记——第6章腐蚀,膨胀,细化算法
- c++线程调用函数必须为static
- 深入讲解函数中分配内存问题
- 《网站做的好与坏要用户说了算》之计划变更原则
- 回调函数
- 强制换行
- 是谁妖魔化了QA
- 学习jsf过程中遇到页面将el表达式当做字符串的解决办法。
- C#访问BitMap几种方法效率比较