“剥皮”法求区域中心 (转)[@more@]

“剥皮”法求区域中心XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

本文作者 徐庆荣(武汉大学)

在已出版的有关图形图像处理的书刊中,几乎都没有专门论述求区域中心的方法,对区域中心也没有明确的定义,然而它在图像处理和分析中有着独特的作用。本文提出的剥皮法求区域中心虽与图像细化或边缘提取等算法有类似之处,但也有一些重要的差异值得注意。以上情况正是引发本文的缘由。

基本思想

假设:区域是封闭、连通的平面,无空洞,且是可塑的,若在保持区域连通条件下,由区域边缘各处同时向里均匀“挤压”,使区域逐渐变小直至剩下最后一点,则将此点当作该区域的中心。显然,按此得到的中心点一定位于区域内部,这也是我们所期望的。

剥皮法是基于上述假设并是对“挤压”过程的模拟。

剥皮法一般分有:边缘跟踪剥皮法,四向剥皮法,八向剥皮法三种。边缘跟踪剥皮法是对图像反复进行边缘跟踪(顺时针或逆时针向)并“剥”去边缘像元的过程。后二种方法基于行列扫描,依次在各方向上轮流“剥”去边缘像元。当面积复杂且较大时,各种方法的结果可能有少许差别。

各种剥皮法均采用栅格(光栅)数据处理算法,它与线状要素的图像细化(亦称中轴化)算法类似。

此外,重心法(取区域全部像元坐标的平均值作为该区域的中心)也是区域求中法之一,但当区域轮廓成凹形时,得到的中心有可能位于区域外。本文给出的剥皮法则可克服这一弊端。

剥皮法区域求中与图像细化算法的区别

1.在线状要素图像细化算法中,须保留轴线的“线端”,而区域求中算法无此必要。

2.图像细化的初步结果可能是呈树枝状的多条线段构成的“骨架”,须进一步对其处理,即通过“削枝”(又称去“毛刺”)保留“主干”(中轴线)。而在区域求中算法中,由于并不考虑保留“线端”,故不会形成“骨架”,最后剥剩的仅有一点(作为区域中心)。

区域求中亦可借助于图像细化程序

借用图像细化程序而不另编专门的区域求中程序,也是一种选择。

首先利用细化程序获得“骨架”(它反映区域的分布)。然后,采用轮流从各线端向线段中部“侵蚀”的方法, 使最后仅剩下一点作为区域的中心。整个过程实际上是:先图像骨架化,再对骨架“侵蚀”取中。

剥皮法的基本规则

1.由表及里  必须从边缘剥起(通过对图像边缘跟踪或行列扫描寻找边缘像元),每次只剥去一个像元。

2.各向交替  如果采用四向剥皮法或八向剥皮法,应从多个方向依次轮流剥,而不能按固定方向剥。

3.保持连通  自始至终都应保持区域是一个整体,不因“剥皮”而被分割。因此,即使是边缘像元,若剥去后会影响连通性,则应暂时保留。关于连通性的判别见下面叙述。

图像细化亦须遵守上述规则。

如何判别连通性

无论是剥皮法区域求中或是图像细化,均须要判别和保持图像的连通性。

设区域为二值图像(像元灰度值非0即1),在区域内的像元灰度值为1,区域外的像元灰度值为0,任一非零像元P 及其八邻域中各像元的编号(0~7)如下图。则八邻域中各像元为:P0,P1,P2,P3,P4,P5,P6,P7。 其相应的灰度值用 G0,G1,G2,G3,G4,G5,G6,G7 表示。

图 1  八邻域中各像元编号

在八邻域中,若各Gi(i=0,1,...,7)不全为0,且由各非零像元(不含像元P)形成2个或2个以上互不连通的连结块时,则剥去像元P后会影响区域的连通性,故不能剥去P像元。反之,若P为边缘像元,且连结块数等于1,则P不会影响连通性,可将P剥去。

用N代表连结块数,N的计算公式为:

N=SUM [(1-Gk)-(1-Gk)(1-Gk+1)(1-Gk+2)]

( SUM 表示取和;k=0,2,4,6;令G8=G0 )

如何实现各方向交替“剥皮”

定义:如图1,若像元P的近邻Pi,其灰度值Gi=0(i是0~7中的一个),则称P是 i-近邻为0的(边缘)像元。当然,P可能是多义的,例如,P既是 0-近邻为0的像元,又是2-近邻为0的像元。但这并不影响算法的进程。

以四向剥皮法为例,可规定每一轮“剥皮”均按下列顺序交替进行:

1.扫描整个图像,寻找各0-近邻为0的像元,在不影响连通性的情况下将其剥去;

2.扫描整个图像,寻找各2-近邻为0的像元,在不影响连通性的情况下将其剥去;

3.扫描整个图像,寻找各4-近邻为0的像元,在不影响连通性的情况下将其剥去;

4.扫描整个图像,寻找各6-近邻为0的像元,在不影响连通性的情况下将其剥去;

一轮完后,若剥剩的非零像元数不止一个,则按上述顺序继续进行,直至剩下最后一点。

扫描图像的顺序一般可自上而下逐行(自左向右)进行。

“剥皮”过程示意图

图2,是四向剥皮过程示意图。

图3,是采用与图2同一原始图像的八向剥皮过程示意图,其结果与图2完全一致。

图4,是采用与图2同一原始图像的边缘跟踪剥皮过程示意图,其结果亦与图2完全一致。

图 2  四向剥皮过程

图 3  八向剥皮过程

图 4  边缘跟踪剥皮过程

其他

1.边缘跟踪剥皮法,四向剥皮法与八向剥皮法三者的结果可能不会相同,但当区域形状并不复杂,且面积较小时,这些方法的结果比较接近或相等。

2.在设计具体算法时,可采用与上述不同的“剥皮”顺序或扫描顺序,最后得到的结果亦可能不尽相同,这种差异估计只在几个像元以内。

3.边缘跟踪剥皮法,一次只能针对一个区域求中。而四向剥皮法或八向剥皮法可同时对位于同一画面的各区域求中。

4.仔细观察上述示意图的“剥皮”过程,似乎可以认为边缘跟踪剥皮法更符合本文开头所提出的假设和基本思想。

5.边缘跟踪剥皮法不是简单的“提取边缘—删除边缘”的递归过程,而要在剥皮过程同时考虑保持区域图像的连续性。

6.本文给出的各种区域求中法曾用于计算欧亚大陆中心的研究课题。

作者发表于CSDN的相关文章:

GIS图形的地理方向--一个常被忽视的问题

按“所想即所得”要求设计图形软件

等距线的画法--一个应用甚广的重要算法

"与图形结构无关"的矢量绘图算法

为图形软件的开发添一新工具

联系:可在CSDN论坛向xqr发短信息。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-1004732/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-1004732/

“剥皮”法求区域中心 (转)相关推荐

  1. “剥皮”法求区域中心

    "剥皮"法求区域中心 本文作者 徐庆荣(武汉大学) 在已出版的有关图形图像处理的书刊中,几乎都没有专门论述求区域中心的方法,对区域中心也没有明确的定义,然而它在图像处理和分析中有着 ...

  2. matlab区域法直线度,用最小区域法求直线度误差的探讨

    庸 [1l } 程 技 术 学 院 学 报 1991年 第 l期 7OURNAL OF TANGSf iAN INSTITUTE OF TECHNOLOGY 1.1991 用最小 区域法求直线度误差 ...

  3. 矩形法求定积分通用函数

    题目:实现求sin,cos,exp的通用函数 思路:其实就是练习指向函数的指针 1 #include<stdio.h> 2 #include<math.h> 3 int mai ...

  4. 筛选法求N以内的所有素数

    素数:一个数只能被1和它本身整除的数.2是最小的素数 #include <iostream> using namespace std; #define NUM 100 char isPri ...

  5. 用欧几里得算法求最大公约数_欧几里得算法:GCD(最大公约数),用C ++和Java示例解释...

    用欧几里得算法求最大公约数 For this topic you must know about Greatest Common Divisor (GCD) and the MOD operation ...

  6. 弦截法c语言程序,高数介质定理——弦截法求根代码实践(C语言)

    在高等数学中,我们一开始接触概念时就接受了ε-δ(epsilon-delta)语言的洗礼,但即使到课程的结束,许多人依然会对各种抽象的数学符号.定理证明感到无所适从,我也不例外,尽管在写这篇博客以前已 ...

  7. python使用集合实现筛选法求素数-python素数筛选法浅析

    原理: 素数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数.在加密应用中起重要的位置,比如广为人知的RSA算法中,就是基于大整数的因式分解难题,寻找两个超大的素数然后相乘作 ...

  8. 离散数学范式c语言实验报告,离散数学实验报告-利用真值表法求主析取范式及主合取范式的实现...

    1.实 验 报 告( / 学年 第 一 学期)课程名称离散数学实验名称利用真值表法求主析取范式及主合取范式的实现实验时间年月日指导单位指导教师学生姓名班级学号学院(系)专 业 实 验 报 告实验名称利 ...

  9. 【数理逻辑】范式 ( 合取范式 | 析取范式 | 大项 | 小项 | 极大项 | 极小项 | 主合取范式 | 主析取范式 | 等值演算方法求主析/合取范式 | 真值表法求主析/合取范式 )

    文章目录 一. 相关概念 1. 简单 析取 合取 式 ( 1 ) 简单合取式 ( 2 ) 简单析取式 2. 极小项 ( 1 ) 极小项 简介 ( 2 ) 极小项 说明 ( 3 ) 两个命题变项 的 极 ...

最新文章

  1. 电气专业的你,2022届求职进展如何?
  2. linux之uniq 命令详解
  3. spring五:获取容器中对象信息
  4. php查询每天的数据进行汇总,关于php:如何在一年内每天只使用一个查询来获取数据?...
  5. elementui 按钮 表单_前后端分离,文件上传下载(springBoot+vue+elementUI)
  6. 01背包怎么不重复_带有重复物品的背包
  7. dp打开思路4:POJ1189 UVA12511 HDU2845 HBCPC K
  8. (转载)SQL高级查询技巧
  9. 解决 QQ2006 键盘加密造成的系统当机故障
  10. DB-Engines 2019 年度数据库出炉:MySQL 成为年度数据库赢家
  11. 华为p40鸿蒙系统价格有好高,华为P40Pro参数逐步被确定,鸿蒙系统或成最大亮点,价格更给力!...
  12. 迈高图手机版_迈高图最新版
  13. 基于微信公众号的图书借阅平台设计与实现
  14. 精读《磁贴布局 - 功能分析》
  15. Laravel学习笔记汇总——使用Seeder批量导入JSON数据
  16. java脚本引擎Rhino 入门
  17. BZOJ 4480 [JSOI2013] 快乐的jyy
  18. 收藏--真正爱你的男人
  19. 一名Java大佬跳槽之旅,离开京东,14面面试经验和收获
  20. 【Mac 教程系列第 14 篇】如何设置 Mac 允许从任意来源下载 App

热门文章

  1. ZZULIOJ 1102: 火车票退票费计算(函数专题),Java
  2. 【前端高频面试题】 浏览器地址栏输入网页地址后发生了什么?
  3. 第一不是唯一苏宁418打造最燃家电3c双十一
  4. mysql mediumblob读取_JSP如何读取MySql中MEDIUMBLOB字符串,并显示
  5. 什么是JavaBeans?
  6. pip常用镜像源(清华源,阿里源,豆瓣源,百度源)
  7. 面试杂谈:(高并发)redis和cache的使用场景和区别
  8. JavaScript复制内容到剪切板
  9. linux grep查找具体位置,Linux grep 查找字符所在文件(grep详解)
  10. 微软的语音太逼真了,用来听小说舒服了