Questions tagged «antialiasing»

1
射线追踪中的抗锯齿/过滤
在光线跟踪/路径跟踪中,最简单的抗锯齿图像方法之一是对像素值进行超采样并取平均结果。IE浏览器 而不是通过像素中心拍摄每个样本,而是使样本偏移一定量。 在互联网上搜索时,我发现了两种略有不同的方法: 根据需要生成样本,并使用过滤器权衡结果 PBRT就是一个例子 生成具有等于过滤器形状分布的样本 两个例子是smallpt和Benedikt Bitterli的Tungsten Renderer 产生并称重 基本过程是: 根据需要创建样本(随机,分层,低差异序列等) 使用两个样本(x和y)偏移相机光线 用射线渲染场景 使用过滤器功能和参考像素中心的样本距离计算权重。例如Box过滤器,Tent过滤器,Gaussian过滤器等) 将权重应用于渲染中的颜色 生成过滤器形状 基本前提是使用逆变换采样来创建根据滤波器形状分布的采样。例如,以高斯形状分布的样本的直方图将是: 可以完全完成此操作,也可以将功能合并到离散的pdf / cdf中。smallpt使用帐篷过滤器的确切逆cdf。装箱方法的示例可以在这里找到 问题 每种方法的优缺点是什么?为什么要在另一个上使用一个?我可以想到几件事: 生成和加权似乎是最可靠的,它允许将任何采样方法与任何过滤器进行任意组合。但是,它要求您跟踪ImageBuffer中的权重,然后进行最终确定。 由于您不能使用负pdf,因此“以过滤器形状生成”只能支持正过滤器形状(即,不支持Mitchell,Catmull Rom或Lanczos)。但是,如上所述,由于您无需跟踪任何权重,因此实现起来更容易。 但是,最后,我想您可以将方法2视为方法1的简化,因为它本质上是使用隐式Box Filter权重。

2
Illustrator的矢量栅格化过程是什么?
我目前正在尝试了解有关矢量图形栅格化的一些知识,以及在各种应用程序类型中实现矢量栅格化的不同方式。 我测试并比较了一些程序,并注意到在光栅化过程中抗锯齿的行为方式存在很大差异。我对Illustrator中的渲染行为特别感兴趣。通过进一步阅读,您会明白为什么。 在我的测试中,我使用了非常简单的三角形组成,这些三角形以不规则的六边形组织,并具有不同的颜色。 矢量图形软件 这是Illustrator,Affinity和Inkscape中相同矢量图形的三个渲染。(在Affinity和Inkscape中生成的图像完全相同。) 如您所见,在用Affinity和Inkscape渲染的图像的每个边缘上都有一条多余的白线。抗锯齿不会用纯色填充此区域,从而导致相邻形状之间的间隙很小。 尽管Illustrator渲染中没有间隙,但是形状的边缘看起来像“亲和力”渲染一样平滑。 这是一张图像,显示每个图像放大后的相同区域。 这两个图像之间有非常细微的差异。Affinity渲染稍微更平滑,但是在查看原始大小的图像时几乎看不到差异。 浏览器 SVG渲染 在浏览器中显示导出为SVG的相同图形看起来与Affinity和Inkscape生成的栅格图像非常相似。 边缘抗锯齿的差异很小(在此处不值得展示),但是常见浏览器中的SVG光栅化行为几乎相同。 分解渲染 为了进一步测试Illustrator渲染,我尝试了分割图形的各个部分并分别导出它们,然后将它们与栅格编辑软件重新组合在一起。 从理论上讲,它会产生与单张图像相同的图像,但是使用此方法时,结果会略有不同。 如图所示,当两个部分组成时,它们之间有一个很小的间隙。尽管它更加微妙,但它与Affinity中呈现的图形非常相似。 多边形渲染 搅拌器(3D软件) Blender允许您导入SVG文件并将其作为曲线对象进行操作。这是3D视口中显示的导入图形。(默认情况下,材质将受到场景中灯光的影响。在材质属性面板中选中无阴影属性将允许使用原始颜色渲染形状。) 这是Blender内部的SVG制成的渲染。 三角形之间没有任何间隙。其他3D软件很有可能以相同的方式工作。那么Blender的行为就像Illustrator一样吗?也许是相反的方式? 真正的问题 Illustrator在幕后使用哪个矢量绘图库? Illustrator是否有可能使用某种3D渲染引擎?它是开源的吗?(可能不会?) 开罗和斯基亚(Skia)等任何知名的矢量绘图库都能实现相同的渲染行为吗?(形状之间无间隙) 有没有鲜为人知的矢量绘图库,具有相同的行为?

2
光线跟踪器的子像素渲染
在字体渲染中,通常使用subpixel渲染。这里的基本思想是将像素分解为RGB分量,然后分别计算每个像素的值。由于每个分量都小于整个像素,因此可以实现更高质量的抗锯齿。 对于光线跟踪器,显然有类似的方法可以做到这一点。您分别在每个子通道上进行重构过滤。 但是,令我感到惊讶的是,我确实找不到这样做的射线追踪器的参考。特别是如果您已经在进行光谱渲染,这似乎是一件显而易见的事情。有一篇我从未听说过的期刊的论文,似乎与之相关。但是总的来说,亚像素渲染似乎并不是一件常事。我的问题:为什么不呢?


4
射线追踪中如何实现反锯齿?
在在线阅读了几篇文章之后,我可以自信地说我对使用射线追踪时抗锯齿的工作原理一无所知。 我所了解的是,单个像素/射线被分成4个子像素和4条射线,而不是1条。 有人可以解释一下这是怎么做的(最好是用代码)吗?

2
在像素内使用多个随机样本进行抗锯齿的基本原因是什么?
在图形中,通常在一个像素的范围内获取多个样本,然后将它们组合在一起(最常见的做法是取平均值),以获得最终的样本像素颜色。这具有防锯齿图像的效果。 一方面,这对我来说很有意义,因为您实际上正在做的是在像素代表的区域上整合像素的颜色。按照这种思路,平均“随机”样本似乎是进行蒙特卡洛积分的理想设置。(“随机”可以分层,基于蓝噪声,低差异序列等) 另一方面,从数字信号处理的角度来看,这感觉是错误的(或者至少不像它那样正确)。从这个角度来看,感觉就像我们要进行大量采样,然后使用盒式滤波器(盒式模糊)进行下采样以获得最终像素值。因此,似乎理想的方法是使用Sinc滤波而不是对样本求平均。我可以看到盒式过滤器比按这些思路进行的辛克式思维便宜。 这让我有些困惑。我们正在整合像素区域并进行平均的核心思想是正确的吗?还是我们正在下采样并且应该使用sinc,但是由于快速而使用盒式滤波器? 还是完全其他? 有点相关:光线跟踪中的抗锯齿/过滤

1
快速抗锯齿线图
布雷森汉姆(Bresenham)的线算法是一种仅使用快速整数运算(加法,减法和乘以2)绘制直线的方法。但是,它会生成锯齿线。有没有类似的快速方法来绘制抗锯齿线?

2
亚像素抗锯齿规则
最近,我遇到了文本的亚像素抗锯齿问题,该问题会产生非常粗糙的颜色,让我想知道如何正确完成它: 我绘制了一些黑色瓷砖的情况,这些瓷砖覆盖了下面的三分之二像素。 颜色与我所看到的颜色匹配,但是当我查看适当的抗锯齿文本时,结果却不及明亮和分散注意力: 我认为必须在良好的光强度和正确的颜色之间取得平衡。哪些方法可用于亚像素抗锯齿,但效果良好? 更新: 我已将白色茶壶渲染为具有3倍宽度和多重采样的图像。下面,我将平均每3个像素与分配给RGB进行比较。在某些情况下(尤其是与此处的示例相比),颜色仍然显得过亮,不是我的手机可以很好地捕捉它们。 好,我的显示器需要一点灰尘

1
如何准确计算重叠分析曲线的覆盖率?
2D形状的抗锯齿归结为计算该形状所覆盖的像素分数。对于简单的非重叠形状,这并不是太困难:将形状裁剪到像素矩形上,​​然后计算结果形状的面积。但是,如果多个形状重叠同一像素,则会变得更加困难。如果忽略某个形状覆盖另一种形状的数量,仅对面积求和可能会导致计算的覆盖率过高。例如,请参见有关字体渲染的本文“限制”部分。您可能还会遇到两条曲线来自具有不同颜色的不同对象的情况(因此,这与两个形状的并集的总覆盖率无关,而是分别覆盖每个形状的覆盖率)。 如果您关心完全准确性,将如何计算?更棘手的是,如何为重叠的非多边形形状(如曲线)准确计算覆盖率?您别无选择,只能回到多重采样或随机技术吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.