本文主要是介绍Pop artifact - volume rendering,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文讲解了什么是体渲染中的Pop artifact:
splatting通过重新排序体绘制积分来提高速度,这样每个体素对积分的贡献可以与其他体素隔离查看。插值核被放置在每个体素位置。这使得人们可以把体看作是一个重叠的 插值核h 的场,作为一个整体,构成了连续的对象表示:
即一个平面上的点都是一起被投射然后生成到image plane上的,每个点和其他点之间进行相互叠加。
“合成每个采样点”(composite every sample splatting)违反了离散体绘制模型,因为在确定体采样点的可见性之前,不会首先基于周围体素的值进行重建。相反,每个体素都是在图像平面上独立合成的,而不沿着主观察轴传播其贡献。
sheetbuffer方法是为了消除这些artifact,然而,它这样做的代价是干扰某些视点转换的Pop artifact:
在“sheetbuffer”方法中,在平行于与最平行于图像平面的体积面对齐的纸张中添加splats。(事实上,每个sheet都是由一个volume slice组成的。)在一个sheet缓冲区被累积之后,它被合成成一个缓存图像,该图像从前向后遍历体。sheet-buffer splatting方法更接近于离散体绘制模型。与“合成每个采样点”方法不同,体素贡献现在以slice形式添加,就像在离散模型中一样。然而,有两个问题:(1)slice的不平行于平面,(2)体素将其全部能量分散到一个切片中,而不是多个切片中,这取决于插值核的范围。因此能见度计算仍然不准确。
当纸张缓冲区的主方向突然从一个体轴切换到另一个体轴时,主要是前一个问题导致的颜色Pop artifact。这个artifact的一个例子下图所示:
在这里,图a显示了一个以45°角观察的二进制立方体。我们注意到立方体的左边比右边亮得多。图b显示了以45.2˚的角度观察的立方体。现在右边的立方体面比左边的亮得多。除了这两个渲染都不正确(两个面都应该有相同的阴影,而且没有一个像这样明亮),在动画观看中,明亮区域从左到右的切换是很不好的。现在考虑下图,在下图中,我们在2D中说明了这种情况:
在图中,图像平面与体积轴成45°角。这是即将切换板材缓冲区方向和即将发生颜色弹出的角度。让我们考虑一个极端的例子,在这个例子中,我们用光源和眼睛在无穷远处渲染一个二进制立方体。因此,两个正面立方体面都接收相同数量的着色。请注意,只有面体素接收非零着色值,因为所有其他体素的渐变都为零。
我们假设高斯核函数的半径是2.0:
上图里,ray1的颜色是从一个sheet上累加起来的,而ray2的颜色则是从5个sheet上组合得到的,
splatting的预积分方案的一个固有缺点是,它通过累加来代替体素沿观察光线的合成。由于加法产生的颜色(和不透明度)大于合成产生的颜色(和不透明度),这导致前体素的贡献被放大。考虑上图所示的两对体素足迹fpa和fpc,它们分别通过加法或合成累积。这里,α1、α2和c1、c2分别是由足印插值的不透明度和颜色。我们看到:
所以会不一样。
参考文献:
《Mueller K , Crawfis R . Eliminating popping artifacts in sheet buffer-based splatting[C]// Visualization. IEEE Computer Society Press, 1998.》
《Ropinski T , Doring C , Rezk-Salama C . Advanced Volume Illumination with Unconstrained Light Source Positioning[J]. IEEE Computer Graphics & Applications, 2010, 30(6):29-41.》
这篇关于Pop artifact - volume rendering的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!