有关于反走样的理解(学习笔记仅供参考)
一、定义
1、走样:当图形进行光栅化时,用离散的像素表示连续直线和区域边界引起的失真现象
2、反走样:用于消除或减少走样的技术(一般只能做到减少)
二、走样形式
1、阶梯锯齿状边界
2、图像细节失真
3、因为分辨率低而导致部分细小点线的遗失或动态图片的闪烁
三、反走样技术
设备层面-------使用较高分辨率显示设备
高分辨率的光栅图形显示器的图形显示质量更高,锯齿化程度下降
其他解决方案--------
1、超采样方法
(1)将图形以高于物理光栅设备分辨率完成光栅化------伪光栅化
伪光栅化的分辨率提高到实际分辨率的2 倍,即实际分辨率下的一个像素对应伪光栅化
的2x2 子像素块。
(2)将每个子像素合并,得到要显示的像素灰度值。
2、简单区域采样
(1)背景:在一般的扫描变换算法中,将一条直线看作一个宽度为零的理想图形,而像素点在赋值时是被当作一个整体来看待的,要么被赋为图形颜色,要么颜色不变,从而引起明显的阶梯状边界。为了减轻这种阶梯状边界情形,简单区域取样方法被提出来。
(2)操作思路:
a.将直线看作一个具有一定宽度的矩形,在屏幕上覆盖了一部分像素点
b.假定屏幕上的像素点是一系列相互连接的小方格的二维矩阵,形成一个二维网格,像素的中心点位于网格的定义点上
c.假定一条直线对一个像素点颜色值的贡献正比于该直线所覆盖的该像素点面积的比例。如果一个像素点小方格完全被直线所覆盖,则在黑白显示器上该像素点应赋值为黑色,如果部分地被该直线所覆盖,则应赋值为灰色
d.结果可使图形的边界在黑白两色之间有一个平缓的过渡,减轻明显的阶梯状现象,从而使图形看起来更美观
ps:缺点:
e、因为大量的面积问题计算,计算量提升显著
f、像素亮度与相交区域面积成正比,与相交区域距离像素中心点距离无关
3、加权区域采样
与简单的区域采样对比:当直线形成的矩形与某像素点小方格相交时,对该像素点的贡献不仅与该矩形所覆盖的面积大小有关,而且与所覆盖的面积距像素中心点的远近有关------离中心点越近,贡献越大;离中心点越远,贡献越小
该采样方法还可以使图形离像素点较近但并不相交时,就开始对该像素点的颜色值有影响,从而避免当图形移动时在屏幕上引起闪烁。
(从采样理论的角度来看,简单区域采样相当于一个像素具有一个立方体形的滤波函数,在该像素的小方格范围内,滤波函数的值相等,该滤波函数决定了表示直线的矩形对像素点贡献的权值,因此只有当直线与像素小方格相交时,该滤波函数才起作用,而对该像素值的贡献则取决于所覆盖的小方格面积乘以滤波函数的值。由于滤波函数的值在小方格范围内是常数,因此,对该像素的贡献只与覆盖面积的大小有关,而与覆盖面积的位置无关。)
由于圆锥形滤波函数的支撑范围大于一个小方格,因此当直线与支撑范围相交但尚未与小方格相交时,就会对该像素点的值有贡献。而且,直线对像素点的贡献取决于所覆盖的小方格面积乘以滤波函数的值,因滤波函数在小方格范围内不是常数,因而与覆盖面积所在的位置有关。
eg:离散计算方法
将像素分割成n个等面积的子像素,计算每个子像素对原像素的贡献,并保存在一张二维的加权表中;
求出所有中心落于直线段内的子象素;
计算所有这些子象素对原象素亮度贡献之和的值;
该值乘以象素的最大灰度值作为该象素的显示灰度值。(该离散计算法参考Hydrion-Qlz处理反走样技术)
目前所接触的反走样解决方法均为减轻而非消除,学会用合理的方法优化图形,减轻观感不适十分重要。
有关于反走样的理解(学习笔记仅供参考)相关推荐
- opengl光照效果的三棱锥+键盘上下左右控制旋转(学习笔记-仅供参考)
#include <windows.h> #include <gl/gl.h> #include <gl/glut.h> #include<stdio.h&g ...
- opengl 观察变换与投影变化 水壶 (学习笔记-仅供参考)
#include <GL/glut.h> #include <stdlib.h>void display(void) {glClearColor(0.0, 0.0, 0.0, ...
- MySQL个人学习笔记-仅供参考
简介 数据库的作用:数据存储 数据库本质上就是个文件系统,而且存储的数据可以实现持久化存储 DBS:->数据库系统:由数据库.数据库管理员.数据库管理系统构成 DBMS:->数据库管理系统 ...
- RewriteCond指令格式(个人学习笔记仅供参考)
RewriteBase指令显式地设置了目录级重写的基准URL. RewriteCond指令格式 [说明]定义重写发生的条件 [语法]RewriteCond TestString CondPattern ...
- 教你如何使用android studio 4.0发布release 版本 学习记录 仅供参考
教你如何使用android studio 4.0发布release 版本 学习记录 仅供参考 这是老师给我们布置的任务,我在这里做一个简单的总结,话不多说,直接上图上步骤吧 首先,在菜单栏中,点击 B ...
- 自己整理的面试笔记(仅供参考 , 有错误请大家多多指教 , 谢谢)
javaScript,jQuery,vue的区别: 1.javaScript是运行在浏览器端的脚步语言,JavaScript主要解决的是前端与用户交互的问题,包括使用交互与数据交互,JavaScrip ...
- SSRF 攻击PHP-FPM(FastCGI 攻击):学习总结仅供参考
利用条件: Libcurl版本:高于7.45.0 PHP-FPM:监听端口,版本高于5.3.3 知道目标机器上任意一个php文件绝对路径 一.FastCGI fastcgi其实是一个通信协议,和HTT ...
- hive学习(仅供参考)
hive搭建 Hive 什么是hive Hive的优势和特点 hive搭建 解压.改名 修改环境变量 添加hive-site.xml 将maven架包拷贝到hive 替换一下gua包 使环境变量生效 ...
- 单链表操作2-单链表A拆分成奇数和偶数值单链表B和C(个人学习笔记,仅供参考)
单链表A拆分成奇数和偶数值单链表B和C 题目要求 单链表结点定义 函数接口定义 测试程序样例 输入样例 输出样例 答案 题目要求 在一个带头结点的单链表A中,头指针为a,设计算法SplitList ( ...
- 单链表操作10-带头结点的单链表逆置(个人学习笔记,仅供参考)
带头结点的单链表逆置 题目要求 单链表结点定义 函数接口定义 测试程序样例 输入样例 输出样例 答案 题目要求 设计算法Reverse( ),将带头结点的单链表A逆置,要求利用原有链表的链点,最后输出 ...
最新文章
- 我在上海的AI新地标,看懂了明略的游戏规则
- JAVA_OA管理系统(二):SpringMVC笔记基础篇01注入方法
- Swift之数组去重(去除重复元素)
- Linux命令: grep命令
- JavaFX官方教程(十二)之树动画示例
- 2021数字化转型下银行发展供应链金融研究报告(上篇)
- 《2017中国大数据及AI人才发展报告》均薪38万,招聘猛增6倍
- 蚂蚁金服自研数据库打败Oracle拿下世界第一;三星手机全面退出中国;微软发布Windows 10X双屏系统 | 极客头条...
- java虚拟机学习笔记(五)---运行时的数据区域
- Packet Tracer 思科模拟器入门教程 之一 初识Packet Tracer
- 网络安全等级保护三级产品清单整理
- 关键词作用和选择技巧
- channel is not opened
- 如何在数据验证单元格区域禁用粘贴
- 谁动了我的奶酪(读后感)
- Linux查看mac地址方法(转)
- 前端开发之SEO(搜索引擎优化)
- html采集插件如何用,Chrome浏览器中安装数据采集插件网络爬虫
- 带孩子们做环球旅行的读后感_郭晶晶带孩子做家务:做家务的孩子,究竟赢在哪里了?...
- 【阅读源码系列】ConcurrentHashMap源码分析(JDK1.7和1.8)
热门文章
- docker-compose配置固定网段Pool overlaps with other one on this address space
- amap高德地图应用(el-amap-marker坐标点;el-amap-info-window信息窗体;el-amap-polyline折线、折线颜色,宽度、实虚线等)
- 消除transition闪屏
- HttpServletResponse
- matplotlib折线图(标记点、标记点大小、标记点边颜色、标记点边宽)
- 独立IP、特产浏览量(PV)、访问次数(VV)、独立访客(UV)
- python+selenium自动化软件测试(第1章)
- android 圆角 水波纹_Android实现水波纹点击效果
- uniapp-连接服务器超时,点击重试
- 设置PyCharm背景图片