8.5应用实例-细化.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.5应用实例-细化.ppt

* 第八章 数学形态学及其应用 8.5 应用实例——细化 利用前面所介绍的形态学知识,下面给出一种实用的对二值区域进行形态学细化的一种算法。如前所述,一个图像的“骨架”, 是指图像中央的骨骼部分,是描述图像几何及拓扑性质的重要特征之一。求一幅图像骨架的过程就是对图像进行“细化”的过程。在文字识别、地质构造识别、工业零件形状识别或图像理解中, 先对被处理的图像进行细化有助于突出形状特点和减少冗余信息量。 根据8.4.2节中骨架和细化的定义以及式(8-30)、 式(8-32)和式(8-35)等可以看到,在细化一幅图像X时应满足两个条件: 第一, 在细化的过程中, X应该有规律地缩小; 第二,在X逐步缩小的过程中, 应当使X的连通性质保持不变。下面介绍一个具体的细化算法。 设已知目标点标记为1,背景点标记为0。边界点是指本身标记为1而其8连通邻域中至少有一个标记为0的点。算法对一幅图像的所有边界点即一个3×3区域都进行如下检验和操作: (1) 考虑以边界点为中心的8邻域,设p1为中心点,对其邻域的8个点逆时针绕中心点分别标记为p2,p3,…,p9,其中p2位于p1的上方。如果p1=1(即黑点)时,下面4个条件同时满足,则删除p1(p1=0):  ① 2≤N(p1)≤6,其中N(p1)是p1的非零邻点的个数; ② S(p1) = 1,其中S(p1)是以p2,p3,p4,…,p9为序时这些点的值从0到1变化的次数;  ③ p2p4p6=0或者S(p1)≠1;  ④ p4p6p8 =0或者S(p1)≠1。 (2) 同第(1)步,仅将③中的条件改为p2p4p8=0,④中的条件改为p2p6p8=0。同样当对所有边界点都检验完毕后,将所有满足条件的点删除。 以上两步操作构成一次迭代。算法反复迭代,直至没有点再满足标记删除的条件,这时剩下的点就组成区域的骨架。图8-26给出了这一算法的应用示例。其中,图8-26(b)、(c)、(d)是p1不可删除的三种情况。在图8-26(b)中删除p1会分割区域,图8-26(c)中删除p1会分割缩短边缘,图8-26(d)中满足条件2≤N(p1)≤6但p1不可删除。 图8-26 细化算法示意图 (a)标记p1和邻点;(b) p1不可删除情况一;(c) p1不可删除情况二; (d) p1不可删除情况三; (e) 细化前图像;(f) 细化后的结果 下面是上述细化算法的VC++函数框架和主要算法。 //****************************************** //函数名称: BOOL ThiningDIB()  //基本功能: 本函数对CDibObject对象中的图像进行细化运算 //参数说明: CDibObject *pDibObject 默认为NULL //返回值: BOOL 成功返回TRUE, 失败返回FALSE //****************************************** BOOL CMorphPro: : ThiningDIB(CDibObject *pDibObject)  { //使用传入的CDibObject对象 //无CDibObject对象时, 返回FALSE //定义变量 unsigned char *pBuffer, *pBits;  RGBQUAD *pPalette; int nWidthBytes, nNumColors;  int lWidth, lHeight;  //获得图像指针 //获得颜色数 //获得调色板指针 //获得位图数据指针 // 指向源图像的指针 // 指向缓存图像的指针 // 指向缓存DIB图像的指针 //循环变量 long i;  long j;  int n;  int m; //四个条件 BOOL bCondition1;  BOOL bCondition2;  BOOL bCondition3;  BOOL bCondition4;  //计数器 unsigned char nCount;  //像素值 unsigned char pixel;  //5×5相邻区域像素值 unsigned char neighbour[5][5];  // 暂时分配内存, 以保存新图像 hNewDIBBits = L

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档