340 likes | 516 Views
第五章 计算机地图制图栅格数据处理算法. 2007-10. 目录:. 5.1 区域填充算法 5.2 距离变换图和骨架图生成算法 5.3 褶积滤波算法. 5.1 区域填充算法. 区域填充算法是指给出一个区域的边界,要求在边界范围内对所有像素单元赋予指定的颜色代码。 目前,区域填充算法中最常用的是 多边形填色 ,常用的多边形填色算法有两种: 递归种子填充算法 扫描线种子填充算法。. 1. 递归种子填充算法. 递归种子填充算法,又称 边界填色算法 。
E N D
第五章 计算机地图制图栅格数据处理算法 2007-10
目录: 5.1 区域填充算法 5.2 距离变换图和骨架图生成算法 5.3 褶积滤波算法
5.1 区域填充算法 • 区域填充算法是指给出一个区域的边界,要求在边界范围内对所有像素单元赋予指定的颜色代码。 • 目前,区域填充算法中最常用的是多边形填色,常用的多边形填色算法有两种: • 递归种子填充算法 • 扫描线种子填充算法。
1. 递归种子填充算法 递归种子填充算法,又称边界填色算法。 算法的原理是:让单个像元作为填充胚,在给定的区域范围内,通过某种方法进行蔓延,最终填充满整个多边形区域。为了实现填充胚的蔓延,可采用四邻法或八邻法进行填充。
2. 扫描线种子填充算法 1)扫描线种子填充算法 扫描线种子填充算法的对象是一个个扫描线段。扫描线段是指区域内同值相邻像素在水平方向的组合,它的两端以具有边界值的像素为边界,即一段扫描线段的中间只有同一种像素。 扫描线种子填充算法适用于边界定义的区域。区域可以是凸的,也可以是凹的,还可以包含一个或多个孔。
实现方法: 第一步,建立一个存放每条扫描线各填充区段右端点的堆栈,最初把种子像素压入堆栈。 第二步,沿扫描线对出栈像素的左、右像素进行填充直至遇到边界像素为止,即每出栈一个像素就对区域内包含该像素的整个连续区段进行填充。 第三步,检查与当前扫描线相邻的上下两条扫描线的有关像素是否全为边界像素或已填充的像素。若存在非边界、未填充的像素则把未填充的每一连续区段最左像素作为新种子像素入栈。 第四步,重复一至三步,直到所有的区域都填充完成。
2)扫描线种子填充算法的改进 为了避免在后续填充时重复检查内部像素点的问题,倪玉山等(2000)在种子填充算法和扫描线种子填充算法的基础上,提出了一种扫描线种子填充算法的改进算法,该算法一定程度上提高了区域填充的效率。 改进算法的基本思想是:每找到一个新的内部区段时,不仅将新区段的y值(yn)和左右列值xnl,xnr压入堆栈,而且同时把当前区段的y值和左右列值xl,xr也压入堆栈,以保存和传递有关的信息。
3. 基于曲线积分的区域填充算法 基于曲线积分的区域填充算法是邓国强,孙景鳌等(2001)提出的一种以格林公式求区域面积为基本原理进行区域填充的特殊算法。 该算法具有运算速度快、对图形的适应性强、填充结果重复性好等优点;它从根本上克服了多边形填充法对区域形状有一定限制,种子填充法要求知道区域内一点(填充胚)以及对区域内像素点进行重复判断等弊端;而且该算法适应于任何一种可以准确描绘出边界曲线的区域填充处理。
1)基本思想为: 第一步 给出图像处理技术中有关区域及区域边界像素点的精确定义,确立构造区域边界像素点序列的基本方法; 第二步 把二维平面集合中求区域面积的格林公式推广到了离散平面中,给出了如何在二维离散平面中求区域面积的基本算法及其理论依据; 第三步 利用求区域面积的数学原理介绍了区域填充算法的具体实现过程。
2)算法的实现: • 对一个区域进行轮廓跟踪,求出区域的边界像素点序列L; • 利用面积计算公式识别出区域像素集的内点。
4.区域填充算法在地图制图中的应用 区域填充算法在地图制图及其它领域中有着广泛的应用,如图案的填充、距离和多边形面积的量算、栅格图形的局部删除及动画片和图形艺术处理等方面。
§5.2 距离变换图和骨架图生成算法 1.距离变换图算法 距离变换图算法是一种针对栅格图像的特殊变换,是把二值图像变换为灰度图像,其中每个像素的灰度值等于它到栅格地图上相邻物体的最近距离。
1)基本思想: 是把离散分布在空间中的目标根据一定的距离定义方式生成距离图, 其中每一点的距离值是到所有空间目标距离中最小的一个。 对于距离的量度是通过四方向距离(又称“城市块距离”或“出租车距离”)的运算来实现的,即只允许沿四个主方向而不允许沿对角方向进行跨栅格的最小路段的计数。因此,每个路段为一个像元边长。
(1) 基于“欧几里德距离”公式的距离变换图算法 栅格空间中 的“欧几里德距离”距离变换公式: 其中,点P1 ( i,j)和P2 (m,n) 的坐标值i, j ,m, n都是整数。
只要图中a、b、c 的取值满足1< b/a < 2, 1<c/b < 2, 那么它就是欧几里德距离的一个在栅格空间中的整数近似值。
2)基于栅格图像间的运算 获取距离变换图的算法 基于栅格图像间的运算获取距离变换图算法的基本方法是:反复对原图进行“减细”和将减细结果与中间结果作算术“叠加”两种基本运算。其终止条件是:“若对原图再减细,则将成为全零矩阵” 。
2.骨架图算法 骨架图就是从距离变换图中提取出具有相对最大灰度值的哪些像元所组成的图像。 骨架图算法是一种简洁、直观的目标表示方法,它综合利用了目标的外部轮廓和内部区域信息,在描述目标形状方面具有传统表示方法不可比拟的优势,且骨架图“山脊线”的连接关系保留了空间拓扑结构的完整,从而极大地扩展了骨架图算法的应用领域。
骨架图算法实现的途径主要有两条,其一是基于灰度图像的骨架图算法,其二是直接从灰度图像提取目标骨架的算法。骨架图算法实现的途径主要有两条,其一是基于灰度图像的骨架图算法,其二是直接从灰度图像提取目标骨架的算法。 其中,基于灰度图像的骨架图算法主要有3类: (1) 从距离变换中提取骨架,即通过计算灰度图像的距离变换,从距离变换图中检测并连接骨架点得到目标的骨架,其缺点是难以设计恰当的邻域条件,需要较多的后处理。
(2) 采用边界模型提取骨架,即采用离散边界模型在逼近真实形状的同时提取骨架,可得到在噪声环境下稳健的骨架。但是,运用该方法时因构造离散边界模型比较困难,提取出的骨架有时可能是不连通的。
(3) 基于区域标记的方法。其典型代表是Liu等人(2000)提出的基于Arcelli的“非脊点下降”算子的骨架提取算法。该算法通过并行地对图像中的所有非脊点进行下降,将图像分别标记为骨架点和背景点,可以获得单像素宽的、与原始图像同伦的骨架。但该算法有时不能提取一些规则目标的完整骨架,而且算法对边界噪声比较敏感(陈晓飞等,2003)。
3. 距离变换图和骨架图的应用 距离变换图常用于地图制图、地理空间的各种量度(如面积、密度、坡度、坡向等)及空间分析(如缓冲区分析、Voronoi分析、DEM分析等)等方面。
§5.3 褶积滤波算法 滤波是对以周期振动为特征的一种现象在一定频率范围内予以减弱或抑制的过程。此处的振动是指随着在图像上抽样点位置的逐渐变化而呈现变化的不同图像亮度(灰度值)。 因此,可以把在通讯技术中所使用的滤波公式简单地转用于数字图像处理。此时可以将栅格像元的位置坐标(即行、列号)代替时间坐标,用灰度值幅度代替电压幅度或声学音强幅度。在制图的栅格数据处理中,一般采用褶积滤波算法来实现图形图像增强处理的目的。
谢谢听讲! 欢迎探讨!