当前位置: 首页 > article >正文

3D Gaussian Splatting 代码层理解之Part2

现在让我们来谈谈高斯分布。我们已经在Part1介绍了如何根据相机的位置获取 3D 点并将其转换为 2D。在本文中,我们将继续处理高斯泼溅的高斯部分,这里用到的是代码库 GitHub 中part2。

我们在这里要做的一个小改动是,我们将使用透视投影,它利用与上一篇文章中所示的内参矩阵有所不同。但是,在将点投影到 2D 时,两者是等效的,Part1 中介绍的第一种方法更容易理解,但是我们更改了方法,以便在 python 中尽可能多地复用作者的代码。具体来说,我们的内参矩阵现在将由此处显示的 OpenGL 投影矩阵给出,乘法顺序现在将为:

                         points @ external.transpose() @ internal.

                透视投影内参矩阵,具体的参数将在下文中进行详细解释。

对于这个新的内参矩阵,r 和 l 是右侧和左侧的剪切平面,基本上是相对于照片宽度可以看到的点,t 和 b 是顶部top和底部bottom剪切平面。N 是近剪切平面(点将投影到的位置),f 是远剪切平面。有关更多信息,可以参考 The Perspective and Orthographic Projection Matrix)。这还会返回规范坐标(介于 -1 和 1 之间)中的点,然后我们将其投影到像素坐标。撇开题外话不谈,任务保持不变,以 3D 方式获取该点并投影到 2D 图像平面上。但是,在本教程的这一部分中,我们现在使用高斯分布而不是点。

def getIntinsicMatrix(
    focal_x: torch.Tensor,
    focal_y: torch.Tensor,
    height: torch.Tensor,
    width: torch.Tensor,
    znear: torch.Tensor = torch.Tensor([100.0]),
    zfar: torch.Tensor = torch.Tensor([0.001]),,
) -> torch.Tensor:
    """
    Gets the internal perspective projection matrix
    
    znear: near plane set by user
    z

http://www.kler.cn/a/398959.html

相关文章:

  • 怎样在软件设计中选择使用GOF设计模式
  • Flutter中的Material Theme完全指南:从入门到实战
  • 如何进入python交互界面
  • 如何让手机ip变成动态
  • 每日一博 - Java的Shallow Copy和Deep Copy
  • 计算机视觉 1-8章 (硕士)
  • Spring Boot 牛刀小试 org.springframework.boot:spring-boot-maven-plugin:找不到类错误
  • 手写模拟Spring Boot自动配置功能
  • Minikube 上安装 Argo Workflow
  • 【进阶编程】 分层结构和横纵向编程接口的结合
  • C/C++基础知识复习(23)
  • 【GameFramework框架】8-3、已经开发完成的虚拟仿真程序如何接入GameFramework框架
  • 3步实现贪吃蛇
  • [Docker#11] 容器编排 | .yml | up | 实验: 部署WordPress
  • Axure设计之文本编辑器制作教程
  • 字节青训-小C的外卖超时判断、小C的排列询问
  • Centos 7 安装wget
  • Vue3 provide 和 inject的使用
  • 深度学习面试题二
  • JavaWeb--MySQL
  • 聚合查询(查询)
  • 使用 Prompt API 与您的对象聊天
  • [Docker#9] 存储卷 | Volume、Bind、Tmpfs | -v/mount | MySQL 灾难恢复 | 问题
  • 基于Java Springboot学生管理系统
  • 2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell图解步骤
  • 2024 Visual Studio Code的下载与安装