Pop artifact - volume rendering

2024-04-07 20:18
文章标签 volume rendering artifact pop

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/883568

相关文章

MongoDB学习—(5)修改器$inc,$unset,$push,$pushAll,$allToSet,$pop,$pull,$pullAll

通过db.help()可以查询到关于数据库的操作,一查询发现有很多方法 其中有一个方法为db.getCollection(cname),即通过这一个函数,传入数据库中的一个集合的名称来获取到该集合的一个对象,我们可以编写函数   function insertTenRecord(obj){ var i=0; while(i++<10){ obj.insert({id:i+1,a

HumanNeRF:Free-viewpoint Rendering of Moving People from Monocular Video 翻译

HumanNeRF:单目视频中运动人物的自由视点绘制 引言。我们介绍了一种自由视点渲染方法- HumanNeRF -它适用于一个给定的单眼视频ofa人类执行复杂的身体运动,例如,从YouTube的视频。我们的方法可以在任何帧暂停视频,并从任意新的摄像机视点或甚至针对该特定帧和身体姿势的完整360度摄像机路径渲染主体。这项任务特别具有挑战性,因为它需要合成身体的照片级真实感细节,如从输入视频中可能

浙大数据结构:02-线性结构4 Pop Sequence

这道题我们采用数组来模拟堆栈和队列。 简单说一下大致思路,我们用栈来存1234.....,队列来存输入的一组数据,栈与队列进行匹配,相同就pop 机翻 1、条件准备 stk是栈,que是队列。 tt指向的是栈中下标,front指向队头,rear指向队尾。 初始化栈顶为0,队头为0,队尾为-1 #include<iostream>using namespace std;#defi

[转载]python:remove方法的使用,remove、pop、del三者的区别

remove方法 描述 删除列表中的给定的对象 语法 list.remove() 参数 obj 参数(可选择性插入)obj的作用是要从列表中删除的对象的索引 使用如:list.remove(obj = list[0]) 返回值 remove方法删除后不会返回值 实例 list = [1, 2, 3, 4, 5]List1 = list.remove(1)print (li

Error:Artifact com.*******:war exploded: java.nio.file.InvalidPathException: Illeg

由于一次电脑蓝屏,Idea启动tomcat报错: Error:Artifact ':war exploded’: java.nio.file.InvalidPathException: Illegal char < > at index 71: K:\COMPANY_CODE_IDEA\FLOW_CODE*\target\activ : Illegal char < > at index 71:

数组实现栈,实现push,pop,size方法 -- 面试算法

思考: 有几个关键的地方, 第一,数组的话,如果我们一直push,需要扩容. 第二,因为产生了扩容所以当前数组的大小,不代表存放的数据多少,所以我们需要一个count 表示当前的容量。 第三,扩容之后,要把之前的数据copy 到新的数组里面,并且要把数据放到新的数组里面。 实现: package com.xinyu.test;public class Test27 {/*** 数组实现

k8s - Volume 简介和HostPath的使用

K8S 的持久化 K8S 实现持久化存储的方法有很多种 例如 卷 (Volume), 持久卷(PV), 临时卷(EV) 等, 还有很多不常用的选项上图没有列出来 其中Volume 本身也分很多种 包括 Secret, configMap(之前的文章covered了), hostPath, emptyDir等 本文主要focus on hostPath HostPath 的简介 官

【iOS】状态栏颜色和pop手势

说明 UINavigationController 管理状态栏颜色,需要转发给单个控制器 class NavController: UINavigationController {override func viewDidLoad() {super.viewDidLoad()}override var preferredStatusBarStyle: UIStatusBarStyle {let

微积分复习笔记 Calculus Volume 1 - 1.2 Basic Classes of Functions

1.2 Basic Classes of Functions - Calculus Volume 1 | OpenStax

StarRocks 巧用 Storage Volume,强大又便捷

前言 StarRocks 存算分离支持使用各种外部独立存储系统来存储业务数据。在早期 3.0 版本中,用户需要在 fe.conf 中配置存储相关信息(如 endpoint 等),这种静态配置模式也给用户使用带来了很多的不便性。 为此,StarRocks 存算分离从 3.1.0 版本后推出了 Storage Volume 能力,支持用户动态地为集群创建存储资源。需要说明的是,Storage Vo