260 likes | 365 Views
第四章 输出图元的属性. 颜色属性. RGB 颜色编码 RGB 0~1 颜色表 灰度 颜色的运算 颜色调和 OpenGL 颜色显示模型 RGB 定义 RGB 的值 RGBA 增加一个透明参数 0-1 ,背景色和前景色的绘制 Index 使用颜色查找表中的颜色. 颜色查找表( color lookup table). C M Y. 1- R =1- G 1- B. 扫描线多边形填充算法. 基本思想 求扫描线与多边形的交点的 x 坐标;
E N D
颜色属性 • RGB 颜色编码 RGB 0~1 • 颜色表 • 灰度 • 颜色的运算 颜色调和 • OpenGL 颜色显示模型 RGB 定义RGB的值 RGBA 增加一个透明参数 0-1,背景色和前景色的绘制 Index 使用颜色查找表中的颜色
C M Y 1- R =1- G 1- B
扫描线多边形填充算法 • 基本思想 • 求扫描线与多边形的交点的x坐标; • 对x坐标排序,成对的提取交点,在二交点之间填充 • 奇点处理 • 局部最高点、局部最低点
奇点处理 • 较低或较高一条边缩短一条扫描线 Y+1 y Y-1
扫描线多边形填充算法 • 扫描线与多边形的交点的三种情况 • 相邻扫描线与同一边交点的坐标相关性 Y+1 y x X+1/m
活化边表的实现方法 • 边表 Edge Table • 水平边不存储; • 按最小y值排序; • 解决奇点问题; • 同一y按x坐标 由小到大排序; • 存储筒 ymin ymax xc 1/m pointer 最低点x的坐标 • 活化边表 Active Edge Table
活化边表填充算法步骤 • 建立边表 • 处理 • 从最低扫描线开始,建立活化边表; • 将当前处理的边加入该表; • 求扫描线与边的交点,成对的提取交点,对两交点之间的部分填充; • 修改活化边表Xk+1=xk+1/m • 删除活化边表中到达尾部的边;重复②~⑤直到活化边表为空。
(1,10) (7,7) (3,3) 11 10 (5,1) (1,1) 9 8 7 6 5 4 10 3 -2/7 7 3 1 ∧ 3 2 10 1 0 7 5 1/3 ∧ 1 0
算法步骤 活化边表 y=1 Y=2 Y=3 Y=7 Y=8 Y=10 7 5 1/3 ∧ 10 1 0 10 1 0 10 3 -2/7 7 3 1 7 6 1/3 ∧ 7 7 1/3 10 1 0 10 2 -2/7 7 7 1 ∧ 10 1 0 10 2 -2/7 ∧ 10 1 0 10 1 -2/7 ∧
边界填充算法(种子填充算法)Boundary-fillSeed-fill边界填充算法(种子填充算法)Boundary-fillSeed-fill • 区域和内点(种子) • 边界为某一颜色 • 前景色(填充色) • 背景色 • 4-连通/8-连通 • 填充方法 • 种子填充算法 • 扫描线种子填充算法
种子填充算法 • 已知:种子像素( x,y ),填充色,背景色,边界色 • 种子像素进栈 • 退栈,(x,y)着色; • (x,y)上、下、左、右像素,不是边界,未填充,进栈; • 重复2~3直到栈空
泛滥填充算法flood-fill(扫描线种子填充算法)泛滥填充算法flood-fill(扫描线种子填充算法) • 种子像素进棧 • 填充棧中像素所在扫描线上的内部像素 • 上下扫描线上的左边界进棧; • 退棧,直到棧中无像素,重复①~③
图案填充 2 1 2 1 2 1 2 1 2 4 0 0 4 • 设置一个Pattern(m,n) 0~m-1;0~n-1 [ ] [] • 设置一个初始位置参考点(xp, yp) • 任意点(x,y) Pattern _color(i,j) i=x-xp mod m j=y-yp mod n
软填充soft-fill • 填充色与背景颜色相结合的一种填充方法soft-fill或 tint-fill • 线性软填充 F为前景色 B为背景色 线性组合 P=tF+(1-t)B t 为透明系数 0~1 • 前景色与背景色的操作 与 或 异或
反走样Untialiasing • 走样aliasing 由于不充分取样而造成的信息失真 • 反走样:校正不充分取样的过程 取样频率低造成走样 • Nyquist采样定理 采样频率应为出现在对象中的最高频率的两倍。 fs=2fmax • 简单的方法:增加采样频率 提高分辨率 • 具有多级灰度的显示器 :改变边缘像素的亮度光顺边界 • 过取样: • 像素划分为子像素 • 计算区域覆盖
直线段的过取样 • 单线法 将像素分割为子像素, 统计沿线的子像素个数, (左下角在多边形内) 像素的亮度正比于子像素的个数。 例:如图像素分为3×3,亮度等级3 (10,20)亮度 3 • 区域法 将单线设置为线宽与 像素等宽,求覆盖子像素数 (左下角有效) 灰度等级9,(11,20)亮度等级5 与背景色的平均 Pixelcolor=(5*red+4*blue)/9
像素的加权掩模 • 希望直线的中心位置在确定整体亮度中有较大的贡献,即中心像素有较大的权。 • 方法: 建立子像素的加权掩模 如图:总权为16 适用区域法 1 2 1 2 4 2 1 2 1
过滤技术 • 构造过滤函数用一个连续的加权曲面 覆盖像素 例:
像素移相 • 可以对子像素编址的系统 将电子束移至更接近于几何指定的位置 可光顺沿线路径及边界的阶梯。
线亮度差的校正 • 斜线像素之间的距离大 • 水平与竖直线的亮度较小 • 45º斜线的亮度最大
反走样区域边界 • 使区域边界像素颜色较暗,从而消除台阶 • 边界像素按其在多边形区域内的 面积大小决定像素的亮度等级 图:三个子像素在多边形边界内 • 面积覆盖计算 计算梯形面积 中线=mxk+b-yk+0.5 高度为1 Yk+0.5 yk Yk-0.5 xk+0.5 xk xk-0.5