zoukankan      html  css  js  c++  java
  • CG-光栅图形学区域填充算法-学习笔记

    一、区域填充

    1. 与多边形扫描转换算法对比

    1)基本思想不同

    a. 多边形扫描转换是指将多边形的顶点表示转化为点阵表示;

    b. 区域填充只改变区域的填充颜色,不改变区域表示方法;

    2)基本条件不同

    a. 在区域填充算法中,要求给定区域内一点作为种子点,然后从这一点根据连通性将新的颜色扩散到整个区域;

    b. 扫描转换多边形是从多边形的边界(顶点)信息出发,利用多种形式的连贯性进行填充的;

    2. 基本概念

    1)区域——指已经表示成点阵形式的填充图形,是像素的几何;

    2)区域填充——指将区域内的一点(常称种子点)赋予给定颜色,然后将这种颜色扩展到整个区域内的过程。

    3)区域可采用内点表示和边界表示两种表示形式

    内点表示:枚举出区域内部的所有像素,内部的所有像素着同一个颜色,边界像素着与内部像素不同的颜色;

    边界表示:枚举出边界上的所有像素,边界上的所有像素着同一个颜色,内部像素着与边界像素不同的颜色;

    4)4连通区域和8连通区域

    3. 简单四连通种子填充算法(区域填充递归算法)

    1)原理:假设在多边形区域内部有一像素已知,由此出发找到区域内的所有像素,用一定的颜色或灰度来填充;假设区域采用边界定义,即区域边界上所有像素均具有某个特定值,区域内部所有像素均不取这一特定值,而边界外的像素则可具有与边界相同的值;

    2)使用栈结构来实现简单的种子填充算法:

                 种子像素入栈,当栈非空时重复执行如下三步操作:

          a)栈顶像素出栈;

          b)将出栈像素置成要填充色;

          c)按左、上、右、下顺序检查与栈像素相邻的四个像素,若其中某个像素不在边界且未置成填充色,则把该像素入栈;

    3)示例图

    【说明】八连通种子填充算法只在第三步不同,依次按八个方向检查入栈像素。

    4. 种子填充算法的不足之处

    1)有些像素入栈多次,降低算法效率;栈结构占空间;

    2)递归执行,算法简单,但效率不高;

  • 相关阅读:
    jQuery选择器之层级选择器
    信息滚动制作
    scrollTop、offsetTop、clientTop
    模电GG
    matlab求解线性方程组
    NWERC2016I
    WEB开发资料集散
    NWERC2016H
    相量变换的性质
    GCJ2017R1C B. Parenting Partnering
  • 原文地址:https://www.cnblogs.com/mzyan/p/9707450.html
Copyright © 2011-2022 走看看