• 区域填充与反走样


    区域填充

    一、

    1、区域:指已经表示成点阵形式的填充图形,是像素的集合

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

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

     

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

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

    4、区域填充算法要求区域是连通的,因为只有在连通区域中,才能将种子点的颜色扩展到区域内的其它点。

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

    1、算法原理:假设在多边形区域内部有一像素已知,由此出发找到区域内的所有像素,用一定的颜色来填充。

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

    算法原理如下:

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

    1>栈顶像素出栈

    2>将出栈像素置成要填充色

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

    不足之处

    1>一些像素会长期在栈内,占空间

    2>递归执行,算法简单,但效率不高。区域内每一像素都引进一次递归,进/出栈,费时费内存

    伪代码:

    Flood_Fill_4(x, y, G0, G1)

    {

    if(GetPixel(x,y) ==G0 ) // GetPixel(x,y) 返回(x,y)的颜色

    {

    SetPixel(x, y, G1); //(x,y)的添上颜色G1

    Flood_Fill_4(x-1, y, G0, G1);

    Flood_Fill_4(x, y+1, G0, G1);

    Flood_Fill_4(x+1, y, G0, G1);

    Flood_Fill_4(x, y-1, G0, G1);

    }

    }

    三、多边形扫描转换与区域填充小结

    (1)基本思想不同

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

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

    (2)基本条件不同

    扫描转换是从多边形的顶点(边界)出发,利用多种形式的连贯性进行填充的(需要知道多边形的边界)

    在区域填充算法中,要求给定区域内一点作为种子点,然后从这一点根据连通性将新的颜色扩散到整个区域。(不仅需要知道边界,还需要知道种子点)

     

    反走样

    一、

    1、走样定义:是光栅显示的一种固有性质,(如锯齿)。

    2、产生走样的原因:像素本质上的离散性

    3、走样现象:

    1>光栅图形产生的阶梯型(锯齿型)

    2>图形中包含微小的物体时,这些物体在静态图形中容易被丢弃或忽略(小物体由于“走样”而消失)

     

    二、反走样技术

    1、用于减少或消除走样效果的技术,称为反走样

    2、采用分辨率更高的显示设备,对解决走样现象有所帮助,因为可以使锯齿相对物体会更小一些

     

    使其模糊

    3、两种反走样方法

    1>非加权区域采样方法(每个像素的权值是一样的):
    根据物体的覆盖率计算像素的颜色。覆盖率是指某个像素区域被物体覆盖的比例。(覆盖率越大,颜色越亮)

    2>加权区域采样方法

    更符合人视觉系统对图像信息的处理方式,反走样效果更好

     

     

     

     

     

  • 相关阅读:
    TCP通信 -C/S中的Socket与ServerSocket
    打印流 -可将数据写入文件/可改变输出方向
    转换流 -解决输入输出时编码格式不统一的问题
    字节/字符缓冲流
    Properties -IO相关的双列集合类
    IO流 -字符输入输出流,以及异常处理方法
    IO流
    线程间的通信
    o(* ̄︶ ̄*)o
    1
  • 原文地址:https://www.cnblogs.com/keguniang/p/9675651.html
Copyright © 2020-2023  润新知