区域填充与反走样

区域填充

一、

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>加权区域采样方法

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

 

 

 

 

 

转载于:https://www.cnblogs.com/keguniang/p/9675651.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值