




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、膨胀(dilation)可以看做是腐蚀的对偶运算,其定义是:把结构元素B平移a后得到Ba,若Ba击中X,我们记下这个a点。所有满足上述条件的a点组成的集合称做X被B膨胀的结果。用公式表示为:D(X)=a | BaX=X B,如图1所示。图1中X是被处理的对象,B是结构元素,不难知道,对于任意一个在阴影部分的点a,Ba击中X,所以X被B膨胀的结果就是那个阴影部分。阴影部分包括X的所有范围,就象X膨胀了一圈似的,这就是为什么叫膨胀的原因。同样,如果B不是对称的,X被B膨胀的结果和X被 Bv膨胀的结果不同。让我们来看看实际上是怎样进行膨胀运算的。在图2中,左边是被处理的图象X(二值图象,我们针对的是
2、黑点),中间是结构元素B。膨胀的方法是,拿B的中心点和X上的点及X周围的点一个一个地对,如果B上有一个点落在X的范围内,则该点就为黑;右边是膨胀后的结果。可以看出,它包括X的所有范围,就象X膨胀了一圈似的。图1 膨胀的示意图图2 膨胀运算 只需腐蚀的代码稍加修改便可实现膨胀,下面是膨胀运算的C+代码:/* * my_dilate.cpp * 对二值图像进行膨胀 * Created on: 2011-10-8 * Author: LiChanghai*/ 假定背景为黑色-0,目标为白色-255/ 结构元素-m×n的矩形,m,n为奇数/ 结构元素的中心作为原点#include <s
3、tring.h>#define M 3#define N 3#define M1 (M-1)/2#define N1 (N-1)/2bool my_dilate(unsigned char *pImage, int width, int height, int biBitCount) /定义相关变量 int i, j, i2, j2; bool mark=0; /定义结构元素 unsigned char elementMN; memset(element,255,sizeof(element); /定义变量,计算图像每行像素所占的字节数(必须是4的倍数) int lineByte=(wi
4、dth * biBitCount/8+3)/4*4; /申请新的位图数据存储空间, 并拷贝原图像 unsigned char *pImage2; pImage2=new unsigned charlineByte*height; memcpy(pImage2, pImage, lineByte*height); /现在对pImage2进行判断,对pImage进行处理 /为防止访问越界,最外面的一圈像素不作处理 for(i=M1; i1; i+)for(j=N1; j1; j+) if(*(pImage2+i*lineByte+j)=0) /只对背景像素处理 mark=0;for(i2=-M1;
5、 i21; i2+)for(j2=-N1; j21; j2+)if(*(pImage2+(i+i2)*lineByte+(j+j2) = elementi2+M1j2+N1) mark=1; /如果结构元素有一个点在目标区域内,则标记/如果该背景像素被标记,则将该像素膨胀为目标像素 if(mark=1) *(pImage+i*lineByte+j)=255; return 1;腐蚀运算和膨胀运算互为对偶的,用公式表示为(X B)c=(Xc B),即X 被B腐蚀后的补集等于X的补集被B膨胀。这句话可以形象的理解为:河岸的补集为河面,河岸的腐蚀等价于河面的膨胀。在有些情况下,这个对偶关系是非常有用
6、的。例如:某个图象处理系统用硬件实现了腐蚀运算,那么不必再另搞一套膨胀的硬件,直接利用该对偶就可以实现了,比如可以先将图像反色,然后做腐蚀,之后再反色,就相当于对原图像膨胀了。把结构元素B平移a后得到Ba,若Ba包含于X,我们记下这个a点,所有满足上述条件的a点组成的集合称做X被B腐蚀(Erosion)的结果。 用公式表示为:E(X)=a| Ba X=X B,如图1所示。 图1 腐蚀的示意图图1中X是被处理的对象,B是结构元素。不难知道,对于任意一个在阴影部分的点a,Ba 包含于X,所以X被B腐蚀的结果就是那个阴影部分。阴影部分在X的范围之内,且比X小,就象X被剥掉了一层似的,这就是为什么叫腐
7、蚀的原因。值得注意的是,上面的B是对称的,即B的对称集Bv=B,所以X被B腐蚀的结果和X被 Bv腐蚀的结果是一样的。如果B不是对称的,让我们看看图2,就会发现X被B腐蚀的结果和X被 Bv腐蚀的结果不同。图2 结构元素非对称时,腐蚀的结果不同 图1和图2都是示意图,让我们来看看实际上是怎样进行腐蚀运算的。 在图3中,左边是被处理的图象X(二值图象,我们针对的是黑点),中间是结构元素B,那个标有origin的点是中心点,即当前处理元素的位置,我们在介绍模板操作时也有过类似的概念。腐蚀的方法是,拿B的中心点和X上的点一个一个地对比,如果B上的所有点都在X的范围内,则该点保留,否则将该点去掉;右边是腐
8、蚀后的结果。可以看出,它仍在原来X的范围内,且比X包含的点要少,就象X被腐蚀掉了一层。 图3 腐蚀运算下面是腐蚀运算的C+代码/* * my_erode.cpp * 对二值图像进行腐蚀 * Created on: 2011-10-8 * Author: LiChanghai*/假定背景为黑色-0,目标为白色-255/结构元素-m×n的矩形,m,n为奇数/ 结构元素的中心作为原点#include <string.h>#define M 3#define N 3#define M1 (M-1)/2#define N1 (N-1)/2bool my_erode(unsigned
9、 char *pImage, int width, int height, int biBitCount) /定义相关变量 int i, j, i2, j2; bool mark=0; /定义结构元素 unsigned char elementMN; memset(element,255,sizeof(element); /定义变量,计算图像每行像素所占的字节数(必须是4的倍数) int lineByte=(width * biBitCount/8+3)/4*4; /申请新的位图数据存储空间, 并拷贝原图像 unsigned char *pImage2; pImage2=new unsigned charlineByte*height; memcpy(pImage2, pImage, lineByte*height); /现在对pImage2进行判断,对pImage进行处理 /为防止访问越界,最外面的一圈像素不作处理 for(i=M1; i1; i+)for(j=N1; j1; j+) if(*(pImage2+i*lineByte+j)=255) /只对目标像素处理 mark=0;for(i2=-M1; i21; i2+)for(j2=-N1; j21; j2+)if(*(pImage2+(i+i2)*li
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 场景深度记录与分析聘用合同
- 餐饮业员工培训与晋升管理合同
- 生态园区彩钢房建设与环境保护合同
- 月份教学 课件
- 非金属矿在塑料改性中的应用与市场分析考核试卷
- 慢性病自我监测技巧教育考核试卷
- 食品安全检测与农村食品安全科普教育推广考核试卷
- 危险品分类储存方法考核试卷
- 二维设计基础面试题及答案
- 孩子猜谜测试题及答案
- 2024年上海高中学业水平合格性考试历史试卷真题(含答案)
- 小学一年级数学下册应用题100道
- 安徽省马鞍山市2023-2024学年高一下学期期末教学质量监测化学试卷(含解析)
- 反诈骗(企业员工)讲座培训课件
- T/CBMCA 019-2021医用洁净室装饰材料技术标准
- 2025-2030中国微晶纤维素市场深度评估与需求潜力分析研究报告
- 2025年社会调查方法与实践考试试题及答案
- 房东合法免责协议书
- JJG(交通) 072-2024 燃烧法沥青含量测试仪
- 外墙蜘蛛人合同协议
- S700k提速道岔日常养护作业铁道信号综合实训48课件
评论
0/150
提交评论