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)递归执行,算法简单,但效率不高;

  • 相关阅读:
    PostgreSQL中的partition-wise join
    Partition-wise join
    外观模式 门面模式 Facade 结构型 设计模式(十三)
    桥接模式 桥梁模式 bridge 结构型 设计模式(十二)
    组合模式 合成模式 COMPOSITE 结构型 设计模式(十一)
    创建型设计模式对比总结 设计模式(八)
    原型模式 prototype 创建型 设计模式(七)
    单例模式 创建型 设计模式(六)
    建造者模式 生成器模式 创建型 设计模式(五)
    抽象工厂模式 创建型 设计模式(四)
  • 原文地址:https://www.cnblogs.com/mzyan/p/9707450.html
Copyright © 2011-2022 走看看