VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
“剥皮”法求区域中心

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

 

“剥皮”法求区域中心

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

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

基本思想

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

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

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

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

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

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

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

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

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

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

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

剥皮法的基本规则

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

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

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

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

如何判别连通性

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

设区域为二值图像(像元灰度值非01),在区域内的像元灰度值为1,区域外的像元灰度值为0,任一非零像元P 及其八邻域中各像元的编号(0~7)如下图。则八邻域中各像元为:P0P1P2P3P4P5P6P7 其相应的灰度值用 G0G1G2G3G4G5G6G7 表示。

1  八邻域中各像元编号

 

在八邻域中,若各Gii=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=0i0~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发短信息。

 




相关文章

相关软件